@viglet/viglet-design-system 2026.2.57 → 2026.3.3

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 (274) hide show
  1. package/README.md +277 -7
  2. package/dist/assets.cjs +1 -0
  3. package/dist/assets.es.js +2 -0
  4. package/dist/badge-locale-BxI9TwkE.js +579 -0
  5. package/dist/badge-locale-sIsBdP_e.cjs +7 -0
  6. package/dist/bento/bento-actions-menu.d.ts +42 -0
  7. package/dist/bento/bento-actions-menu.d.ts.map +1 -0
  8. package/dist/bento/bento-back-to-top.d.ts +11 -0
  9. package/dist/bento/bento-back-to-top.d.ts.map +1 -0
  10. package/dist/bento/bento-command-palette.d.ts +28 -0
  11. package/dist/bento/bento-command-palette.d.ts.map +1 -0
  12. package/dist/bento/bento-count-tile.d.ts +18 -0
  13. package/dist/bento/bento-count-tile.d.ts.map +1 -0
  14. package/dist/bento/bento-empty-state.d.ts +35 -0
  15. package/dist/bento/bento-empty-state.d.ts.map +1 -0
  16. package/dist/bento/bento-entity-shell.d.ts +123 -0
  17. package/dist/bento/bento-entity-shell.d.ts.map +1 -0
  18. package/dist/bento/bento-entity-tile.d.ts +40 -0
  19. package/dist/bento/bento-entity-tile.d.ts.map +1 -0
  20. package/dist/bento/bento-form-hero.d.ts +91 -0
  21. package/dist/bento/bento-form-hero.d.ts.map +1 -0
  22. package/dist/bento/bento-form-section.d.ts +31 -0
  23. package/dist/bento/bento-form-section.d.ts.map +1 -0
  24. package/dist/bento/bento-hero-icon-picker.d.ts +35 -0
  25. package/dist/bento/bento-hero-icon-picker.d.ts.map +1 -0
  26. package/dist/bento/bento-hero.d.ts +62 -0
  27. package/dist/bento/bento-hero.d.ts.map +1 -0
  28. package/dist/bento/bento-inline-edit.d.ts +52 -0
  29. package/dist/bento/bento-inline-edit.d.ts.map +1 -0
  30. package/dist/bento/bento-layout.d.ts +52 -0
  31. package/dist/bento/bento-layout.d.ts.map +1 -0
  32. package/dist/bento/bento-list-page.d.ts +124 -0
  33. package/dist/bento/bento-list-page.d.ts.map +1 -0
  34. package/dist/bento/bento-nav-rail.d.ts +32 -0
  35. package/dist/bento/bento-nav-rail.d.ts.map +1 -0
  36. package/dist/bento/bento-nav.d.ts +69 -0
  37. package/dist/bento/bento-nav.d.ts.map +1 -0
  38. package/dist/bento/bento-save-bar.d.ts +36 -0
  39. package/dist/bento/bento-save-bar.d.ts.map +1 -0
  40. package/dist/bento/bento-scroll-fade.d.ts +20 -0
  41. package/dist/bento/bento-scroll-fade.d.ts.map +1 -0
  42. package/dist/bento/bento-scroll-save-bar.d.ts +22 -0
  43. package/dist/bento/bento-scroll-save-bar.d.ts.map +1 -0
  44. package/dist/bento/bento-section-chrome.d.ts +60 -0
  45. package/dist/bento/bento-section-chrome.d.ts.map +1 -0
  46. package/dist/bento/bento-section.d.ts +27 -0
  47. package/dist/bento/bento-section.d.ts.map +1 -0
  48. package/dist/bento/bento-shortcuts-dialog.d.ts +15 -0
  49. package/dist/bento/bento-shortcuts-dialog.d.ts.map +1 -0
  50. package/dist/bento/bento-status-marker.d.ts +26 -0
  51. package/dist/bento/bento-status-marker.d.ts.map +1 -0
  52. package/dist/bento/bento-tile.d.ts +42 -0
  53. package/dist/bento/bento-tile.d.ts.map +1 -0
  54. package/dist/bento/bento-tones.d.ts +33 -0
  55. package/dist/bento/bento-tones.d.ts.map +1 -0
  56. package/dist/bento/bento-user-menu.d.ts +31 -0
  57. package/dist/bento/bento-user-menu.d.ts.map +1 -0
  58. package/dist/bento/index.d.ts +59 -0
  59. package/dist/bento/index.d.ts.map +1 -0
  60. package/dist/bento.cjs +1 -0
  61. package/dist/bento.css +442 -0
  62. package/dist/bento.es.js +1501 -0
  63. package/dist/breadcrumb.context-CTnZ4rD0.cjs +1 -0
  64. package/dist/breadcrumb.context-h2A2IEJ_.js +928 -0
  65. package/dist/components/app-footer.d.ts +1 -1
  66. package/dist/components/app-footer.d.ts.map +1 -1
  67. package/dist/components/app-switcher.d.ts +1 -1
  68. package/dist/components/app-switcher.d.ts.map +1 -1
  69. package/dist/components/backend-status.d.ts +2 -2
  70. package/dist/components/backend-status.d.ts.map +1 -1
  71. package/dist/components/badge-locale.d.ts.map +1 -1
  72. package/dist/components/error-boundary.d.ts.map +1 -1
  73. package/dist/components/language-select.d.ts +1 -1
  74. package/dist/components/language-select.d.ts.map +1 -1
  75. package/dist/components/language-switcher.d.ts +1 -1
  76. package/dist/components/language-switcher.d.ts.map +1 -1
  77. package/dist/components/login/login.d.ts +11 -11
  78. package/dist/components/login/login.d.ts.map +1 -1
  79. package/dist/components/mode-toggle.d.ts +2 -2
  80. package/dist/components/mode-toggle.d.ts.map +1 -1
  81. package/dist/components/nav-secondary.d.ts +1 -1
  82. package/dist/components/nav-secondary.d.ts.map +1 -1
  83. package/dist/components/router/blank-slate.d.ts +10 -0
  84. package/dist/components/router/blank-slate.d.ts.map +1 -1
  85. package/dist/components/router/gradient-button-link.d.ts +1 -1
  86. package/dist/components/router/gradient-button-link.d.ts.map +1 -1
  87. package/dist/components/router/grid.list.d.ts +13 -0
  88. package/dist/components/router/grid.list.d.ts.map +1 -1
  89. package/dist/components/router/internal.sidebar.d.ts +27 -2
  90. package/dist/components/router/internal.sidebar.d.ts.map +1 -1
  91. package/dist/components/router/loading-provider.d.ts +7 -2
  92. package/dist/components/router/loading-provider.d.ts.map +1 -1
  93. package/dist/components/router/nav-main.d.ts +11 -1
  94. package/dist/components/router/nav-main.d.ts.map +1 -1
  95. package/dist/components/router/nav-user.d.ts +15 -1
  96. package/dist/components/router/nav-user.d.ts.map +1 -1
  97. package/dist/components/router/page-content.d.ts +10 -0
  98. package/dist/components/router/page-content.d.ts.map +1 -1
  99. package/dist/components/router/page-header.d.ts +13 -0
  100. package/dist/components/router/page-header.d.ts.map +1 -1
  101. package/dist/components/router/page.d.ts +13 -0
  102. package/dist/components/router/page.d.ts.map +1 -1
  103. package/dist/components/router/sticky.page.header.d.ts +14 -0
  104. package/dist/components/router/sticky.page.header.d.ts.map +1 -1
  105. package/dist/components/router/sub.page.d.ts +15 -11
  106. package/dist/components/router/sub.page.d.ts.map +1 -1
  107. package/dist/components/router/sub.page.header.d.ts +13 -0
  108. package/dist/components/router/sub.page.header.d.ts.map +1 -1
  109. package/dist/components/startup-first/startup-first.d.ts +11 -11
  110. package/dist/components/startup-first/startup-first.d.ts.map +1 -1
  111. package/dist/components/theme-provider.d.ts +1 -1
  112. package/dist/components/theme-provider.d.ts.map +1 -1
  113. package/dist/components/ui/avatar.d.ts +3 -3
  114. package/dist/components/ui/avatar.d.ts.map +1 -1
  115. package/dist/components/ui/badge.d.ts +1 -1
  116. package/dist/components/ui/badge.d.ts.map +1 -1
  117. package/dist/components/ui/breadcrumb.d.ts +7 -7
  118. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  119. package/dist/components/ui/button.d.ts +1 -1
  120. package/dist/components/ui/button.d.ts.map +1 -1
  121. package/dist/components/ui/card.d.ts +7 -7
  122. package/dist/components/ui/card.d.ts.map +1 -1
  123. package/dist/components/ui/checkbox.d.ts +1 -1
  124. package/dist/components/ui/checkbox.d.ts.map +1 -1
  125. package/dist/components/ui/dialog.d.ts +10 -10
  126. package/dist/components/ui/dialog.d.ts.map +1 -1
  127. package/dist/components/ui/drawer.d.ts +10 -10
  128. package/dist/components/ui/drawer.d.ts.map +1 -1
  129. package/dist/components/ui/dropdown-menu.d.ts +15 -15
  130. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  131. package/dist/components/ui/floating-formulas-bg.d.ts +8 -1
  132. package/dist/components/ui/floating-formulas-bg.d.ts.map +1 -1
  133. package/dist/components/ui/form-actions.d.ts +4 -4
  134. package/dist/components/ui/form-actions.d.ts.map +1 -1
  135. package/dist/components/ui/form.d.ts +8 -8
  136. package/dist/components/ui/form.d.ts.map +1 -1
  137. package/dist/components/ui/glass-card.d.ts +1 -1
  138. package/dist/components/ui/glass-card.d.ts.map +1 -1
  139. package/dist/components/ui/gradient-button.d.ts +1 -1
  140. package/dist/components/ui/gradient-button.d.ts.map +1 -1
  141. package/dist/components/ui/gradient-switch.d.ts +1 -1
  142. package/dist/components/ui/gradient-switch.d.ts.map +1 -1
  143. package/dist/components/ui/icon-picker-dialog.d.ts +35 -0
  144. package/dist/components/ui/icon-picker-dialog.d.ts.map +1 -0
  145. package/dist/components/ui/index.d.ts +1 -0
  146. package/dist/components/ui/index.d.ts.map +1 -1
  147. package/dist/components/ui/input.d.ts +1 -1
  148. package/dist/components/ui/input.d.ts.map +1 -1
  149. package/dist/components/ui/label.d.ts +1 -1
  150. package/dist/components/ui/label.d.ts.map +1 -1
  151. package/dist/components/ui/navigation-menu.d.ts +8 -8
  152. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  153. package/dist/components/ui/pagination.d.ts +5 -5
  154. package/dist/components/ui/pagination.d.ts.map +1 -1
  155. package/dist/components/ui/popover.d.ts +7 -7
  156. package/dist/components/ui/popover.d.ts.map +1 -1
  157. package/dist/components/ui/progress.d.ts +1 -1
  158. package/dist/components/ui/progress.d.ts.map +1 -1
  159. package/dist/components/ui/pulse-ring.d.ts +1 -1
  160. package/dist/components/ui/pulse-ring.d.ts.map +1 -1
  161. package/dist/components/ui/resizable.d.ts +3 -3
  162. package/dist/components/ui/resizable.d.ts.map +1 -1
  163. package/dist/components/ui/section-card.d.ts +7 -7
  164. package/dist/components/ui/section-card.d.ts.map +1 -1
  165. package/dist/components/ui/select.d.ts +10 -10
  166. package/dist/components/ui/select.d.ts.map +1 -1
  167. package/dist/components/ui/separator.d.ts +1 -1
  168. package/dist/components/ui/separator.d.ts.map +1 -1
  169. package/dist/components/ui/sheet.d.ts +8 -8
  170. package/dist/components/ui/sheet.d.ts.map +1 -1
  171. package/dist/components/ui/sidebar.d.ts +23 -23
  172. package/dist/components/ui/sidebar.d.ts.map +1 -1
  173. package/dist/components/ui/skeleton.d.ts +1 -1
  174. package/dist/components/ui/skeleton.d.ts.map +1 -1
  175. package/dist/components/ui/slider.d.ts +1 -1
  176. package/dist/components/ui/slider.d.ts.map +1 -1
  177. package/dist/components/ui/sonner.d.ts +1 -1
  178. package/dist/components/ui/sonner.d.ts.map +1 -1
  179. package/dist/components/ui/stepper.d.ts +3 -3
  180. package/dist/components/ui/stepper.d.ts.map +1 -1
  181. package/dist/components/ui/sticky-save-bar.d.ts +2 -2
  182. package/dist/components/ui/sticky-save-bar.d.ts.map +1 -1
  183. package/dist/components/ui/switch.d.ts +1 -1
  184. package/dist/components/ui/switch.d.ts.map +1 -1
  185. package/dist/components/ui/table.d.ts +8 -8
  186. package/dist/components/ui/table.d.ts.map +1 -1
  187. package/dist/components/ui/tabs.d.ts +4 -4
  188. package/dist/components/ui/tabs.d.ts.map +1 -1
  189. package/dist/components/ui/textarea.d.ts +1 -1
  190. package/dist/components/ui/textarea.d.ts.map +1 -1
  191. package/dist/components/ui/toggle-group.d.ts +2 -2
  192. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  193. package/dist/components/ui/toggle.d.ts +1 -1
  194. package/dist/components/ui/toggle.d.ts.map +1 -1
  195. package/dist/components/ui/tooltip.d.ts +4 -4
  196. package/dist/components/ui/tooltip.d.ts.map +1 -1
  197. package/dist/components/ui/user-avatar.d.ts +1 -1
  198. package/dist/components/ui/user-avatar.d.ts.map +1 -1
  199. package/dist/components/ui/user-menu.d.ts +1 -1
  200. package/dist/components/ui/user-menu.d.ts.map +1 -1
  201. package/dist/components/viglet-app-switcher.d.ts +1 -1
  202. package/dist/components/viglet-app-switcher.d.ts.map +1 -1
  203. package/dist/contexts/breadcrumb.context.d.ts +1 -1
  204. package/dist/contexts/breadcrumb.context.d.ts.map +1 -1
  205. package/dist/contexts/user.context.d.ts +25 -1
  206. package/dist/contexts/user.context.d.ts.map +1 -1
  207. package/dist/exports.json +404 -0
  208. package/dist/floating-formulas-bg.cjs +1 -0
  209. package/dist/floating-formulas-bg.css +21 -0
  210. package/dist/floating-formulas-bg.es.js +83 -56
  211. package/dist/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  212. package/dist/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
  213. package/dist/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
  214. package/dist/fonts/inter-greek-wght-normal.woff2 +0 -0
  215. package/dist/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
  216. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  217. package/dist/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
  218. package/dist/fonts/plus-jakarta-sans-cyrillic-ext-wght-normal.woff2 +0 -0
  219. package/dist/fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2 +0 -0
  220. package/dist/fonts/plus-jakarta-sans-latin-wght-normal.woff2 +0 -0
  221. package/dist/fonts/plus-jakarta-sans-vietnamese-wght-normal.woff2 +0 -0
  222. package/dist/fonts.css +126 -0
  223. package/dist/hooks/use-grid-adapter.d.ts.map +1 -1
  224. package/dist/hooks/use-mobile.d.ts +10 -0
  225. package/dist/hooks/use-mobile.d.ts.map +1 -1
  226. package/dist/hooks/use-sub-page-breadcrumb.d.ts.map +1 -1
  227. package/dist/i18n/index.d.ts +136 -0
  228. package/dist/i18n/index.d.ts.map +1 -1
  229. package/dist/i18n/locales/en/bento.json.d.ts +51 -0
  230. package/dist/i18n/locales/en/common.json.d.ts +7 -1
  231. package/dist/i18n/locales/en/forms.json.d.ts +15 -1
  232. package/dist/i18n/locales/en/nav.json.d.ts +3 -1
  233. package/dist/i18n/locales/pt/bento.json.d.ts +51 -0
  234. package/dist/i18n/locales/pt/common.json.d.ts +7 -1
  235. package/dist/i18n/locales/pt/forms.json.d.ts +15 -1
  236. package/dist/i18n/locales/pt/nav.json.d.ts +3 -1
  237. package/dist/i18n-DoNdMLEd.cjs +1 -0
  238. package/dist/{i18n-C94rDRaM.js → i18n-DuNITbWa.js} +155 -27
  239. package/dist/{i18n.cjs.js → i18n.cjs} +1 -1
  240. package/dist/i18n.es.js +1 -1
  241. package/dist/index.cjs +1 -0
  242. package/dist/index.d.ts +0 -1
  243. package/dist/index.d.ts.map +1 -1
  244. package/dist/index.es.js +512 -770
  245. package/dist/lib/axios.d.ts.map +1 -1
  246. package/dist/lib/export-xlsx.d.ts +7 -1
  247. package/dist/lib/export-xlsx.d.ts.map +1 -1
  248. package/dist/lib/react-markers.d.ts +17 -0
  249. package/dist/lib/react-markers.d.ts.map +1 -0
  250. package/dist/lib/utils.d.ts +22 -0
  251. package/dist/lib/utils.d.ts.map +1 -1
  252. package/dist/loading-provider-1mgM91iY.cjs +1 -0
  253. package/dist/loading-provider-CMnOuvdR.js +224 -0
  254. package/dist/preset.css +103 -3
  255. package/dist/products-DL_YYXkV.cjs +1 -0
  256. package/dist/products-Du9KB6Xl.js +9 -0
  257. package/dist/{chunk-CMqjfN_6.cjs → rolldown-runtime-BocRIvOZ.cjs} +1 -1
  258. package/dist/router.cjs +1 -0
  259. package/dist/router.es.js +361 -558
  260. package/dist/user.context-kPAqKN4o.js +512 -0
  261. package/dist/user.context-r50nSWER.cjs +1 -0
  262. package/dist/viglet-design-system.css +1 -1
  263. package/dist/vite/boot-loader.d.ts +14 -4
  264. package/dist/vite/boot-loader.d.ts.map +1 -1
  265. package/dist/{vite.cjs.js → vite.cjs} +8 -8
  266. package/dist/vite.es.js +29 -16
  267. package/package.json +67 -23
  268. package/scripts/check-duplicates.mjs +198 -0
  269. package/dist/breadcrumb.context-BF0x4--Z.cjs +0 -7
  270. package/dist/breadcrumb.context-CCiYXxir.js +0 -1501
  271. package/dist/floating-formulas-bg.cjs.js +0 -1
  272. package/dist/i18n-CmYeG6uh.cjs +0 -1
  273. package/dist/index.cjs.js +0 -1
  274. package/dist/router.cjs.js +0 -1
@@ -0,0 +1,512 @@
1
+ import { D as e, F as t, H as n, M as r, U as i, k as a, l as o, u as s } from "./badge-locale-BxI9TwkE.js";
2
+ import c, { createContext as l, useCallback as u, useContext as d, useEffect as f, useRef as p, useState as m } from "react";
3
+ import { jsx as h, jsxs as g } from "react/jsx-runtime";
4
+ import * as _ from "@radix-ui/react-avatar";
5
+ import { Slot as v } from "@radix-ui/react-slot";
6
+ import { cva as y } from "class-variance-authority";
7
+ import { IconChevronDown as b, IconLoader2 as x, IconSearch as S, IconSparkles as C, IconTrash as w } from "@tabler/icons-react";
8
+ import { useTranslation as T } from "react-i18next";
9
+ import { Icon as E } from "@iconify/react";
10
+ import { useTheme as D } from "next-themes";
11
+ import { Toaster as O, toast as k } from "sonner";
12
+ var A = n("circle-check", [["circle", {
13
+ cx: "12",
14
+ cy: "12",
15
+ r: "10",
16
+ key: "1mglay"
17
+ }], ["path", {
18
+ d: "m9 12 2 2 4-4",
19
+ key: "dzmm74"
20
+ }]]), j = n("info", [
21
+ ["circle", {
22
+ cx: "12",
23
+ cy: "12",
24
+ r: "10",
25
+ key: "1mglay"
26
+ }],
27
+ ["path", {
28
+ d: "M12 16v-4",
29
+ key: "1dtifu"
30
+ }],
31
+ ["path", {
32
+ d: "M12 8h.01",
33
+ key: "e9boi3"
34
+ }]
35
+ ]), M = n("loader-circle", [["path", {
36
+ d: "M21 12a9 9 0 1 1-6.219-8.56",
37
+ key: "13zald"
38
+ }]]), N = n("octagon-x", [
39
+ ["path", {
40
+ d: "m15 9-6 6",
41
+ key: "1uzhvr"
42
+ }],
43
+ ["path", {
44
+ d: "M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",
45
+ key: "2d38gg"
46
+ }],
47
+ ["path", {
48
+ d: "m9 9 6 6",
49
+ key: "z0biqf"
50
+ }]
51
+ ]), P = n("triangle-alert", [
52
+ ["path", {
53
+ d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
54
+ key: "wmoenq"
55
+ }],
56
+ ["path", {
57
+ d: "M12 9v4",
58
+ key: "juzpu7"
59
+ }],
60
+ ["path", {
61
+ d: "M12 17h.01",
62
+ key: "p32p05"
63
+ }]
64
+ ]), F = y("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
65
+ variants: {
66
+ variant: {
67
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
68
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
69
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
70
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
71
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
72
+ link: "text-primary underline-offset-4 hover:underline"
73
+ },
74
+ size: {
75
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
76
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
77
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
78
+ icon: "size-9",
79
+ "icon-sm": "size-8",
80
+ "icon-lg": "size-10"
81
+ }
82
+ },
83
+ defaultVariants: {
84
+ variant: "default",
85
+ size: "default"
86
+ }
87
+ });
88
+ function I({ className: e, variant: t, size: n, asChild: r = !1, ...a }) {
89
+ return /* @__PURE__ */ h(r ? v : "button", {
90
+ "data-slot": "button",
91
+ className: i(F({
92
+ variant: t,
93
+ size: n,
94
+ className: e
95
+ })),
96
+ ...a
97
+ });
98
+ }
99
+ //#endregion
100
+ //#region src/components/ui/icon-picker-dialog.tsx
101
+ var L = [
102
+ "lucide",
103
+ "tabler",
104
+ "mdi",
105
+ "ph",
106
+ "solar",
107
+ "heroicons"
108
+ ], R = L.join(",");
109
+ async function z(e, t) {
110
+ try {
111
+ let n = await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${R}`);
112
+ if (n.ok) return (await n.json()).icons ?? [];
113
+ } catch {}
114
+ return [];
115
+ }
116
+ function B({ open: n, onOpenChange: i, value: c, onSelect: l, onClear: d, title: _, description: v, suggestKeywords: y }) {
117
+ let { t: b } = T(), [D, O] = m(""), [k, A] = m([]), [j, M] = m(!1), N = p(null), [P, F] = m(!1), [I, R] = m([]), B = p(0), [V, H] = m(null), U = u(async (e) => {
118
+ let t = ++B.current, n = () => t === B.current;
119
+ if (!e.trim()) {
120
+ A([]);
121
+ return;
122
+ }
123
+ M(!0);
124
+ try {
125
+ let t = await z(e, 60);
126
+ n() && A(t);
127
+ } catch {
128
+ n() && A([]);
129
+ } finally {
130
+ n() && M(!1);
131
+ }
132
+ }, []);
133
+ f(() => (N.current && clearTimeout(N.current), N.current = setTimeout(() => U(D), 350), () => {
134
+ N.current && clearTimeout(N.current);
135
+ }), [D, U]);
136
+ function W(e) {
137
+ l(e), i(!1), O(""), A([]), R([]), H(null);
138
+ }
139
+ async function G() {
140
+ if (!(!y || P)) {
141
+ F(!0), R([]), H(null);
142
+ try {
143
+ let e = (await y({
144
+ title: _,
145
+ description: v
146
+ })).filter((e) => typeof e == "string" && e.trim()).slice(0, 5), t = [];
147
+ for (let n of e) t.push({
148
+ keyword: n.trim(),
149
+ icons: await z(n.trim(), 30)
150
+ });
151
+ R(t);
152
+ } catch {
153
+ R([]);
154
+ } finally {
155
+ F(!1);
156
+ }
157
+ }
158
+ }
159
+ let K = V ? I.find((e) => e.keyword === V)?.icons ?? [] : I.flatMap((e) => e.icons.slice(0, 3)), q = !!y && !!(_?.trim() ?? v?.trim());
160
+ return /* @__PURE__ */ h(e, {
161
+ open: n,
162
+ onOpenChange: i,
163
+ children: /* @__PURE__ */ g(a, {
164
+ className: "flex max-h-[80vh] flex-col sm:max-w-lg",
165
+ children: [
166
+ /* @__PURE__ */ h(r, { children: /* @__PURE__ */ h(t, { children: b("forms.iconPicker.chooseAnIcon", { defaultValue: "Choose an icon" }) }) }),
167
+ /* @__PURE__ */ g("div", {
168
+ className: "flex gap-2",
169
+ children: [/* @__PURE__ */ g("div", {
170
+ className: "relative flex-1",
171
+ children: [/* @__PURE__ */ h(S, { className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ h(o, {
172
+ value: D,
173
+ onChange: (e) => O(e.target.value),
174
+ placeholder: b("forms.iconPicker.searchIcons", { defaultValue: "Search icons" }),
175
+ className: "pl-9",
176
+ autoFocus: !0
177
+ })]
178
+ }), q && /* @__PURE__ */ g(s, {
179
+ type: "button",
180
+ size: "sm",
181
+ variant: "outline",
182
+ onClick: G,
183
+ disabled: P,
184
+ className: "shrink-0 gap-1.5",
185
+ children: [P ? /* @__PURE__ */ h(x, { className: "size-4 animate-spin" }) : /* @__PURE__ */ h(C, { className: "size-4" }), b("forms.iconPicker.aiSuggest", { defaultValue: "Suggest" })]
186
+ })]
187
+ }),
188
+ I.length > 0 && /* @__PURE__ */ g("div", {
189
+ className: "rounded-lg border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] p-3",
190
+ children: [
191
+ /* @__PURE__ */ g("div", {
192
+ className: "mb-2 flex items-center gap-1.5 text-xs font-medium vg-accent-text",
193
+ children: [/* @__PURE__ */ h(C, { className: "size-3.5" }), b("forms.iconPicker.aiSuggestions", { defaultValue: "Suggestions" })]
194
+ }),
195
+ /* @__PURE__ */ h("div", {
196
+ className: "mb-3 flex flex-wrap gap-1.5",
197
+ children: I.map((e) => /* @__PURE__ */ g("button", {
198
+ type: "button",
199
+ onClick: () => H(V === e.keyword ? null : e.keyword),
200
+ className: `cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${V === e.keyword ? "vg-accent-solid text-white" : "bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]"}`,
201
+ children: [e.keyword, /* @__PURE__ */ h("span", {
202
+ className: "ml-1 opacity-60",
203
+ children: e.icons.length
204
+ })]
205
+ }, e.keyword))
206
+ }),
207
+ /* @__PURE__ */ h("div", {
208
+ className: "flex max-h-60 flex-wrap gap-2 overflow-y-auto",
209
+ children: K.map((e) => /* @__PURE__ */ g("button", {
210
+ type: "button",
211
+ onClick: () => W(e),
212
+ className: `flex cursor-pointer flex-col items-center gap-1 rounded-lg p-2 transition-all hover:bg-[var(--vg-accent-surface)] ${c === e ? "border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface-strong)] vg-accent-text" : "border border-[var(--vg-accent-line)]"}`,
213
+ title: e,
214
+ children: [/* @__PURE__ */ h(E, {
215
+ icon: e,
216
+ className: "size-7"
217
+ }), /* @__PURE__ */ h("span", {
218
+ className: "max-w-[80px] truncate text-center text-[9px] leading-tight text-muted-foreground",
219
+ children: e.split(":")[1] ?? e
220
+ })]
221
+ }, e))
222
+ })
223
+ ]
224
+ }),
225
+ /* @__PURE__ */ g("div", {
226
+ className: "max-h-[400px] min-h-[200px] flex-1 overflow-y-auto",
227
+ children: [
228
+ j && /* @__PURE__ */ h("div", {
229
+ className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
230
+ children: b("forms.iconPicker.searching", { defaultValue: "Searching…" })
231
+ }),
232
+ !j && D && k.length === 0 && /* @__PURE__ */ h("div", {
233
+ className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
234
+ children: b("forms.iconPicker.noIconsFound", {
235
+ query: D,
236
+ defaultValue: "No icons found for “{{query}}”"
237
+ })
238
+ }),
239
+ !j && !D && k.length === 0 && I.length === 0 && /* @__PURE__ */ g("div", {
240
+ className: "flex h-32 flex-col items-center justify-center gap-2 px-4 text-center text-sm text-muted-foreground",
241
+ children: [/* @__PURE__ */ h("span", { children: b("forms.iconPicker.typeToSearch", {
242
+ count: L.length,
243
+ defaultValue: "Type to search {{count}} icon collections"
244
+ }) }), q && /* @__PURE__ */ h("span", {
245
+ className: "text-xs leading-relaxed",
246
+ children: b("forms.iconPicker.orClickAi", { defaultValue: "…or let the title and description suggest some" })
247
+ })]
248
+ }),
249
+ k.length > 0 && /* @__PURE__ */ h("div", {
250
+ className: "grid grid-cols-6 gap-1.5 p-1",
251
+ children: k.map((e) => /* @__PURE__ */ g("button", {
252
+ type: "button",
253
+ onClick: () => W(e),
254
+ className: `flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg p-2 transition-all hover:bg-muted ${c === e ? "border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] vg-accent-text" : "border border-transparent hover:border-border"}`,
255
+ title: e,
256
+ children: [/* @__PURE__ */ h(E, {
257
+ icon: e,
258
+ className: "size-6"
259
+ }), /* @__PURE__ */ h("span", {
260
+ className: "w-full truncate text-center text-[9px] leading-tight text-muted-foreground",
261
+ children: e.split(":")[1] ?? e
262
+ })]
263
+ }, e))
264
+ })
265
+ ]
266
+ }),
267
+ c && /* @__PURE__ */ g("div", {
268
+ className: "flex items-center justify-between border-t pt-2",
269
+ children: [/* @__PURE__ */ g("div", {
270
+ className: "flex items-center gap-2",
271
+ children: [/* @__PURE__ */ h(E, {
272
+ icon: c,
273
+ className: "size-5"
274
+ }), /* @__PURE__ */ h("span", {
275
+ className: "font-mono text-xs text-muted-foreground",
276
+ children: c
277
+ })]
278
+ }), /* @__PURE__ */ g("div", {
279
+ className: "flex gap-2",
280
+ children: [d && /* @__PURE__ */ g(s, {
281
+ size: "sm",
282
+ type: "button",
283
+ variant: "outline",
284
+ onClick: () => {
285
+ d(), i(!1);
286
+ },
287
+ children: [/* @__PURE__ */ h(w, { className: "size-4" }), b("forms.common.remove", { defaultValue: "Remove" })]
288
+ }), /* @__PURE__ */ h(s, {
289
+ size: "sm",
290
+ type: "button",
291
+ onClick: () => i(!1),
292
+ children: b("forms.iconPicker.done", { defaultValue: "Done" })
293
+ })]
294
+ })]
295
+ })
296
+ ]
297
+ })
298
+ });
299
+ }
300
+ //#endregion
301
+ //#region src/components/ui/section-card.tsx
302
+ var V = {
303
+ blue: {
304
+ color: "text-blue-600 dark:text-blue-400",
305
+ bg: "from-blue-500/10 to-indigo-500/10 dark:from-blue-500/20 dark:to-indigo-500/20",
306
+ ring: "ring-blue-500/10 dark:ring-blue-400/10"
307
+ },
308
+ violet: {
309
+ color: "text-violet-600 dark:text-violet-400",
310
+ bg: "from-violet-500/10 to-purple-500/10 dark:from-violet-500/20 dark:to-purple-500/20",
311
+ ring: "ring-violet-500/10 dark:ring-violet-400/10"
312
+ },
313
+ emerald: {
314
+ color: "text-emerald-600 dark:text-emerald-400",
315
+ bg: "from-emerald-500/10 to-teal-500/10 dark:from-emerald-500/20 dark:to-teal-500/20",
316
+ ring: "ring-emerald-500/10 dark:ring-emerald-400/10"
317
+ },
318
+ amber: {
319
+ color: "text-amber-600 dark:text-amber-400",
320
+ bg: "from-amber-500/10 to-orange-500/10 dark:from-amber-500/20 dark:to-orange-500/20",
321
+ ring: "ring-amber-500/10 dark:ring-amber-400/10"
322
+ },
323
+ rose: {
324
+ color: "text-rose-600 dark:text-rose-400",
325
+ bg: "from-rose-500/10 to-pink-500/10 dark:from-rose-500/20 dark:to-pink-500/20",
326
+ ring: "ring-rose-500/10 dark:ring-rose-400/10"
327
+ },
328
+ cyan: {
329
+ color: "text-cyan-600 dark:text-cyan-400",
330
+ bg: "from-cyan-500/10 to-sky-500/10 dark:from-cyan-500/20 dark:to-sky-500/20",
331
+ ring: "ring-cyan-500/10 dark:ring-cyan-400/10"
332
+ },
333
+ orange: {
334
+ color: "text-orange-600 dark:text-orange-400",
335
+ bg: "from-orange-500/10 to-amber-500/10 dark:from-orange-500/20 dark:to-amber-500/20",
336
+ ring: "ring-orange-500/10 dark:ring-orange-400/10"
337
+ },
338
+ slate: {
339
+ color: "text-slate-600 dark:text-slate-400",
340
+ bg: "from-slate-500/10 to-gray-500/10 dark:from-slate-500/20 dark:to-gray-500/20",
341
+ ring: "ring-slate-500/10 dark:ring-slate-400/10"
342
+ }
343
+ }, H = l({
344
+ open: !0,
345
+ toggle: () => {},
346
+ variant: "blue"
347
+ });
348
+ function U({ variant: e = "blue", defaultOpen: t = !0, children: n, className: r }) {
349
+ let [a, o] = m(t);
350
+ return /* @__PURE__ */ h(H.Provider, {
351
+ value: {
352
+ open: a,
353
+ toggle: () => o((e) => !e),
354
+ variant: e
355
+ },
356
+ children: /* @__PURE__ */ h("div", {
357
+ className: i("rounded-xl border overflow-hidden", r),
358
+ children: n
359
+ })
360
+ });
361
+ }
362
+ function W({ icon: e, title: t, description: n, className: r }) {
363
+ let { open: a, toggle: o, variant: s } = d(H), c = V[s];
364
+ return /* @__PURE__ */ g("button", {
365
+ type: "button",
366
+ onClick: o,
367
+ className: i("flex w-full items-center gap-3 px-5 py-4 bg-muted/40 border-b cursor-pointer hover:bg-muted/60 transition-colors", r),
368
+ children: [
369
+ /* @__PURE__ */ h("div", {
370
+ className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${c.bg} ring-1 ${c.ring}`,
371
+ children: /* @__PURE__ */ h(e, { className: `size-4 ${c.color}` })
372
+ }),
373
+ /* @__PURE__ */ g("div", {
374
+ className: "min-w-0 text-left",
375
+ children: [/* @__PURE__ */ h("h3", {
376
+ className: "text-sm font-semibold text-foreground",
377
+ children: t
378
+ }), n && /* @__PURE__ */ h("p", {
379
+ className: "text-xs text-muted-foreground",
380
+ children: n
381
+ })]
382
+ }),
383
+ /* @__PURE__ */ h(b, { className: i("ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200", a && "rotate-180") })
384
+ ]
385
+ });
386
+ }
387
+ function G({ icon: e, title: t, description: n, className: r }) {
388
+ let { variant: a } = d(H), o = V[a];
389
+ return /* @__PURE__ */ g("div", {
390
+ className: i("flex items-center gap-3 px-5 py-4 bg-muted/40 border-b", r),
391
+ children: [/* @__PURE__ */ h("div", {
392
+ className: `flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${o.bg} ring-1 ${o.ring}`,
393
+ children: /* @__PURE__ */ h(e, { className: `size-4 ${o.color}` })
394
+ }), /* @__PURE__ */ g("div", {
395
+ className: "min-w-0",
396
+ children: [/* @__PURE__ */ h("h3", {
397
+ className: "text-sm font-semibold text-foreground",
398
+ children: t
399
+ }), n && /* @__PURE__ */ h("p", {
400
+ className: "text-xs text-muted-foreground",
401
+ children: n
402
+ })]
403
+ })]
404
+ });
405
+ }
406
+ function K({ children: e, className: t }) {
407
+ let { open: n } = d(H);
408
+ return n ? /* @__PURE__ */ h("div", {
409
+ className: i("p-5 space-y-6", t),
410
+ children: e
411
+ }) : null;
412
+ }
413
+ U.Header = W, U.StaticHeader = G, U.Content = K;
414
+ //#endregion
415
+ //#region src/components/ui/sonner.tsx
416
+ var q = ({ ...e }) => {
417
+ let { theme: t = "system" } = D();
418
+ return /* @__PURE__ */ h(O, {
419
+ theme: t,
420
+ className: "toaster group",
421
+ icons: {
422
+ success: /* @__PURE__ */ h(A, { className: "size-4" }),
423
+ info: /* @__PURE__ */ h(j, { className: "size-4" }),
424
+ warning: /* @__PURE__ */ h(P, { className: "size-4" }),
425
+ error: /* @__PURE__ */ h(N, { className: "size-4" }),
426
+ loading: /* @__PURE__ */ h(M, { className: "size-4 animate-spin" })
427
+ },
428
+ style: {
429
+ "--normal-bg": "var(--vg-popover)",
430
+ "--normal-text": "var(--vg-popover-foreground)",
431
+ "--normal-border": "var(--vg-border)",
432
+ "--border-radius": "var(--vg-radius)"
433
+ },
434
+ ...e
435
+ });
436
+ };
437
+ //#endregion
438
+ //#region src/components/ui/user-avatar.tsx
439
+ function J({ givenName: e, familyName: t, name: n }) {
440
+ let r = (e ?? "").trim(), i = (t ?? "").trim();
441
+ if (r || i) {
442
+ let e = r ? r[0] : "", t = i.split(/\s+/).filter(Boolean), n = `${e}${t.length > 0 ? t[t.length - 1][0] : ""}`.toUpperCase();
443
+ if (n) return n;
444
+ }
445
+ let a = (n ?? "").trim();
446
+ if (a) {
447
+ let e = a.split(/\s+/).filter(Boolean);
448
+ return e.length === 1 ? e[0][0].toUpperCase() : `${e[0][0]}${e[e.length - 1][0]}`.toUpperCase();
449
+ }
450
+ return "U";
451
+ }
452
+ function Y({ className: e, givenName: t, familyName: n, name: r, src: a, alt: o, children: s, ...c }) {
453
+ let l = J({
454
+ givenName: t,
455
+ familyName: n,
456
+ name: r
457
+ }), u = o ?? r ?? [t, n].filter(Boolean).join(" ");
458
+ return /* @__PURE__ */ g(_.Root, {
459
+ "data-slot": "user-avatar",
460
+ className: i("relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full size-8", "bg-muted text-muted-foreground text-xs font-semibold", "ring-1 ring-border", e),
461
+ ...c,
462
+ children: [a && /* @__PURE__ */ h(_.Image, {
463
+ "data-slot": "user-avatar-image",
464
+ src: a,
465
+ alt: u,
466
+ className: "aspect-square size-full object-cover"
467
+ }), /* @__PURE__ */ h(_.Fallback, {
468
+ "data-slot": "user-avatar-fallback",
469
+ className: "flex size-full items-center justify-center",
470
+ delayMs: a ? 600 : 0,
471
+ children: s ?? l
472
+ })]
473
+ });
474
+ }
475
+ //#endregion
476
+ //#region src/contexts/user.context.tsx
477
+ var X = c.createContext(null);
478
+ function Z({ children: e, fetchUser: t }) {
479
+ let [n, r] = c.useState({}), [i, a] = c.useState("loading"), [o, s] = c.useState(null), l = c.useRef(0), u = c.useCallback(() => {
480
+ let e = ++l.current;
481
+ t().then((t) => {
482
+ e === l.current && (r(t), s(null), a("ready"));
483
+ }, (t) => {
484
+ e === l.current && (s(t), a("failed"));
485
+ });
486
+ }, [t]);
487
+ c.useEffect(() => {
488
+ u();
489
+ }, [u]);
490
+ let d = c.useMemo(() => ({
491
+ user: n,
492
+ refreshUser: u,
493
+ status: i,
494
+ error: o
495
+ }), [
496
+ n,
497
+ u,
498
+ i,
499
+ o
500
+ ]);
501
+ return /* @__PURE__ */ h(X, {
502
+ value: d,
503
+ children: e
504
+ });
505
+ }
506
+ function Q() {
507
+ let e = c.useContext(X);
508
+ if (!e) throw Error("useCurrentUser must be used within UserProvider");
509
+ return e;
510
+ }
511
+ //#endregion
512
+ export { q as a, B as c, J as i, I as l, Q as n, k as o, Y as r, U as s, Z as t, F as u };
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./badge-locale-sIsBdP_e.cjs");let n=require("react");n=e.t(n,1);let r=require("react/jsx-runtime"),i=require("@radix-ui/react-avatar");i=e.t(i,1);let a=require("@radix-ui/react-slot"),o=require("class-variance-authority"),s=require("@tabler/icons-react"),c=require("react-i18next"),l=require("@iconify/react"),u=require("next-themes"),d=require("sonner");var f=t.H(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),p=t.H(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),m=t.H(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),h=t.H(`octagon-x`,[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),g=t.H(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),_=(0,o.cva)(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function v({className:e,variant:n,size:i,asChild:o=!1,...s}){return(0,r.jsx)(o?a.Slot:`button`,{"data-slot":`button`,className:t.U(_({variant:n,size:i,className:e})),...s})}var y=[`lucide`,`tabler`,`mdi`,`ph`,`solar`,`heroicons`],b=y.join(`,`);async function x(e,t){try{let n=await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${b}`);if(n.ok)return(await n.json()).icons??[]}catch{}return[]}function S({open:e,onOpenChange:i,value:a,onSelect:o,onClear:u,title:d,description:f,suggestKeywords:p}){let{t:m}=(0,c.useTranslation)(),[h,g]=(0,n.useState)(``),[_,v]=(0,n.useState)([]),[b,S]=(0,n.useState)(!1),C=(0,n.useRef)(null),[w,T]=(0,n.useState)(!1),[E,D]=(0,n.useState)([]),O=(0,n.useRef)(0),[k,A]=(0,n.useState)(null),j=(0,n.useCallback)(async e=>{let t=++O.current,n=()=>t===O.current;if(!e.trim()){v([]);return}S(!0);try{let t=await x(e,60);n()&&v(t)}catch{n()&&v([])}finally{n()&&S(!1)}},[]);(0,n.useEffect)(()=>(C.current&&clearTimeout(C.current),C.current=setTimeout(()=>j(h),350),()=>{C.current&&clearTimeout(C.current)}),[h,j]);function M(e){o(e),i(!1),g(``),v([]),D([]),A(null)}async function N(){if(!(!p||w)){T(!0),D([]),A(null);try{let e=(await p({title:d,description:f})).filter(e=>typeof e==`string`&&e.trim()).slice(0,5),t=[];for(let n of e)t.push({keyword:n.trim(),icons:await x(n.trim(),30)});D(t)}catch{D([])}finally{T(!1)}}}let P=k?E.find(e=>e.keyword===k)?.icons??[]:E.flatMap(e=>e.icons.slice(0,3)),F=!!p&&!!(d?.trim()??f?.trim());return(0,r.jsx)(t.D,{open:e,onOpenChange:i,children:(0,r.jsxs)(t.k,{className:`flex max-h-[80vh] flex-col sm:max-w-lg`,children:[(0,r.jsx)(t.M,{children:(0,r.jsx)(t.F,{children:m(`forms.iconPicker.chooseAnIcon`,{defaultValue:`Choose an icon`})})}),(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[(0,r.jsxs)(`div`,{className:`relative flex-1`,children:[(0,r.jsx)(s.IconSearch,{className:`absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,r.jsx)(t.l,{value:h,onChange:e=>g(e.target.value),placeholder:m(`forms.iconPicker.searchIcons`,{defaultValue:`Search icons`}),className:`pl-9`,autoFocus:!0})]}),F&&(0,r.jsxs)(t.u,{type:`button`,size:`sm`,variant:`outline`,onClick:N,disabled:w,className:`shrink-0 gap-1.5`,children:[w?(0,r.jsx)(s.IconLoader2,{className:`size-4 animate-spin`}):(0,r.jsx)(s.IconSparkles,{className:`size-4`}),m(`forms.iconPicker.aiSuggest`,{defaultValue:`Suggest`})]})]}),E.length>0&&(0,r.jsxs)(`div`,{className:`rounded-lg border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] p-3`,children:[(0,r.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 text-xs font-medium vg-accent-text`,children:[(0,r.jsx)(s.IconSparkles,{className:`size-3.5`}),m(`forms.iconPicker.aiSuggestions`,{defaultValue:`Suggestions`})]}),(0,r.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1.5`,children:E.map(e=>(0,r.jsxs)(`button`,{type:`button`,onClick:()=>A(k===e.keyword?null:e.keyword),className:`cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${k===e.keyword?`vg-accent-solid text-white`:`bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]`}`,children:[e.keyword,(0,r.jsx)(`span`,{className:`ml-1 opacity-60`,children:e.icons.length})]},e.keyword))}),(0,r.jsx)(`div`,{className:`flex max-h-60 flex-wrap gap-2 overflow-y-auto`,children:P.map(e=>(0,r.jsxs)(`button`,{type:`button`,onClick:()=>M(e),className:`flex cursor-pointer flex-col items-center gap-1 rounded-lg p-2 transition-all hover:bg-[var(--vg-accent-surface)] ${a===e?`border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface-strong)] vg-accent-text`:`border border-[var(--vg-accent-line)]`}`,title:e,children:[(0,r.jsx)(l.Icon,{icon:e,className:`size-7`}),(0,r.jsx)(`span`,{className:`max-w-[80px] truncate text-center text-[9px] leading-tight text-muted-foreground`,children:e.split(`:`)[1]??e})]},e))})]}),(0,r.jsxs)(`div`,{className:`max-h-[400px] min-h-[200px] flex-1 overflow-y-auto`,children:[b&&(0,r.jsx)(`div`,{className:`flex h-32 items-center justify-center text-sm text-muted-foreground`,children:m(`forms.iconPicker.searching`,{defaultValue:`Searching…`})}),!b&&h&&_.length===0&&(0,r.jsx)(`div`,{className:`flex h-32 items-center justify-center text-sm text-muted-foreground`,children:m(`forms.iconPicker.noIconsFound`,{query:h,defaultValue:`No icons found for “{{query}}”`})}),!b&&!h&&_.length===0&&E.length===0&&(0,r.jsxs)(`div`,{className:`flex h-32 flex-col items-center justify-center gap-2 px-4 text-center text-sm text-muted-foreground`,children:[(0,r.jsx)(`span`,{children:m(`forms.iconPicker.typeToSearch`,{count:y.length,defaultValue:`Type to search {{count}} icon collections`})}),F&&(0,r.jsx)(`span`,{className:`text-xs leading-relaxed`,children:m(`forms.iconPicker.orClickAi`,{defaultValue:`…or let the title and description suggest some`})})]}),_.length>0&&(0,r.jsx)(`div`,{className:`grid grid-cols-6 gap-1.5 p-1`,children:_.map(e=>(0,r.jsxs)(`button`,{type:`button`,onClick:()=>M(e),className:`flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg p-2 transition-all hover:bg-muted ${a===e?`border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] vg-accent-text`:`border border-transparent hover:border-border`}`,title:e,children:[(0,r.jsx)(l.Icon,{icon:e,className:`size-6`}),(0,r.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight text-muted-foreground`,children:e.split(`:`)[1]??e})]},e))})]}),a&&(0,r.jsxs)(`div`,{className:`flex items-center justify-between border-t pt-2`,children:[(0,r.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,r.jsx)(l.Icon,{icon:a,className:`size-5`}),(0,r.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:a})]}),(0,r.jsxs)(`div`,{className:`flex gap-2`,children:[u&&(0,r.jsxs)(t.u,{size:`sm`,type:`button`,variant:`outline`,onClick:()=>{u(),i(!1)},children:[(0,r.jsx)(s.IconTrash,{className:`size-4`}),m(`forms.common.remove`,{defaultValue:`Remove`})]}),(0,r.jsx)(t.u,{size:`sm`,type:`button`,onClick:()=>i(!1),children:m(`forms.iconPicker.done`,{defaultValue:`Done`})})]})]})]})})}var C={blue:{color:`text-blue-600 dark:text-blue-400`,bg:`from-blue-500/10 to-indigo-500/10 dark:from-blue-500/20 dark:to-indigo-500/20`,ring:`ring-blue-500/10 dark:ring-blue-400/10`},violet:{color:`text-violet-600 dark:text-violet-400`,bg:`from-violet-500/10 to-purple-500/10 dark:from-violet-500/20 dark:to-purple-500/20`,ring:`ring-violet-500/10 dark:ring-violet-400/10`},emerald:{color:`text-emerald-600 dark:text-emerald-400`,bg:`from-emerald-500/10 to-teal-500/10 dark:from-emerald-500/20 dark:to-teal-500/20`,ring:`ring-emerald-500/10 dark:ring-emerald-400/10`},amber:{color:`text-amber-600 dark:text-amber-400`,bg:`from-amber-500/10 to-orange-500/10 dark:from-amber-500/20 dark:to-orange-500/20`,ring:`ring-amber-500/10 dark:ring-amber-400/10`},rose:{color:`text-rose-600 dark:text-rose-400`,bg:`from-rose-500/10 to-pink-500/10 dark:from-rose-500/20 dark:to-pink-500/20`,ring:`ring-rose-500/10 dark:ring-rose-400/10`},cyan:{color:`text-cyan-600 dark:text-cyan-400`,bg:`from-cyan-500/10 to-sky-500/10 dark:from-cyan-500/20 dark:to-sky-500/20`,ring:`ring-cyan-500/10 dark:ring-cyan-400/10`},orange:{color:`text-orange-600 dark:text-orange-400`,bg:`from-orange-500/10 to-amber-500/10 dark:from-orange-500/20 dark:to-amber-500/20`,ring:`ring-orange-500/10 dark:ring-orange-400/10`},slate:{color:`text-slate-600 dark:text-slate-400`,bg:`from-slate-500/10 to-gray-500/10 dark:from-slate-500/20 dark:to-gray-500/20`,ring:`ring-slate-500/10 dark:ring-slate-400/10`}},w=(0,n.createContext)({open:!0,toggle:()=>{},variant:`blue`});function T({variant:e=`blue`,defaultOpen:i=!0,children:a,className:o}){let[s,c]=(0,n.useState)(i);return(0,r.jsx)(w.Provider,{value:{open:s,toggle:()=>c(e=>!e),variant:e},children:(0,r.jsx)(`div`,{className:t.U(`rounded-xl border overflow-hidden`,o),children:a})})}function E({icon:e,title:i,description:a,className:o}){let{open:c,toggle:l,variant:u}=(0,n.useContext)(w),d=C[u];return(0,r.jsxs)(`button`,{type:`button`,onClick:l,className:t.U(`flex w-full items-center gap-3 px-5 py-4 bg-muted/40 border-b cursor-pointer hover:bg-muted/60 transition-colors`,o),children:[(0,r.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${d.bg} ring-1 ${d.ring}`,children:(0,r.jsx)(e,{className:`size-4 ${d.color}`})}),(0,r.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,r.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:i}),a&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]}),(0,r.jsx)(s.IconChevronDown,{className:t.U(`ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200`,c&&`rotate-180`)})]})}function D({icon:e,title:i,description:a,className:o}){let{variant:s}=(0,n.useContext)(w),c=C[s];return(0,r.jsxs)(`div`,{className:t.U(`flex items-center gap-3 px-5 py-4 bg-muted/40 border-b`,o),children:[(0,r.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${c.bg} ring-1 ${c.ring}`,children:(0,r.jsx)(e,{className:`size-4 ${c.color}`})}),(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:i}),a&&(0,r.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]})]})}function O({children:e,className:i}){let{open:a}=(0,n.useContext)(w);return a?(0,r.jsx)(`div`,{className:t.U(`p-5 space-y-6`,i),children:e}):null}T.Header=E,T.StaticHeader=D,T.Content=O;var k=({...e})=>{let{theme:t=`system`}=(0,u.useTheme)();return(0,r.jsx)(d.Toaster,{theme:t,className:`toaster group`,icons:{success:(0,r.jsx)(f,{className:`size-4`}),info:(0,r.jsx)(p,{className:`size-4`}),warning:(0,r.jsx)(g,{className:`size-4`}),error:(0,r.jsx)(h,{className:`size-4`}),loading:(0,r.jsx)(m,{className:`size-4 animate-spin`})},style:{"--normal-bg":`var(--vg-popover)`,"--normal-text":`var(--vg-popover-foreground)`,"--normal-border":`var(--vg-border)`,"--border-radius":`var(--vg-radius)`},...e})};function A({givenName:e,familyName:t,name:n}){let r=(e??``).trim(),i=(t??``).trim();if(r||i){let e=r?r[0]:``,t=i.split(/\s+/).filter(Boolean),n=`${e}${t.length>0?t[t.length-1][0]:``}`.toUpperCase();if(n)return n}let a=(n??``).trim();if(a){let e=a.split(/\s+/).filter(Boolean);return e.length===1?e[0][0].toUpperCase():`${e[0][0]}${e[e.length-1][0]}`.toUpperCase()}return`U`}function j({className:e,givenName:n,familyName:a,name:o,src:s,alt:c,children:l,...u}){let d=A({givenName:n,familyName:a,name:o}),f=c??o??[n,a].filter(Boolean).join(` `);return(0,r.jsxs)(i.Root,{"data-slot":`user-avatar`,className:t.U(`relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full size-8`,`bg-muted text-muted-foreground text-xs font-semibold`,`ring-1 ring-border`,e),...u,children:[s&&(0,r.jsx)(i.Image,{"data-slot":`user-avatar-image`,src:s,alt:f,className:`aspect-square size-full object-cover`}),(0,r.jsx)(i.Fallback,{"data-slot":`user-avatar-fallback`,className:`flex size-full items-center justify-center`,delayMs:s?600:0,children:l??d})]})}var M=n.default.createContext(null);function N({children:e,fetchUser:t}){let[i,a]=n.default.useState({}),[o,s]=n.default.useState(`loading`),[c,l]=n.default.useState(null),u=n.default.useRef(0),d=n.default.useCallback(()=>{let e=++u.current;t().then(t=>{e===u.current&&(a(t),l(null),s(`ready`))},t=>{e===u.current&&(l(t),s(`failed`))})},[t]);n.default.useEffect(()=>{d()},[d]);let f=n.default.useMemo(()=>({user:i,refreshUser:d,status:o,error:c}),[i,d,o,c]);return(0,r.jsx)(M,{value:f,children:e})}function P(){let e=n.default.useContext(M);if(!e)throw Error(`useCurrentUser must be used within UserProvider`);return e}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}});