@viglet/viglet-design-system 2026.3.9 → 2026.3.11

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 (259) hide show
  1. package/README.md +528 -44
  2. package/consumers.json +186 -0
  3. package/dist/badge-locale-CJkHDlPg.cjs +1 -0
  4. package/dist/badge-locale-DxDp8Q3S.js +397 -0
  5. package/dist/bento/bento-actions-menu.d.ts +8 -0
  6. package/dist/bento/bento-actions-menu.d.ts.map +1 -1
  7. package/dist/bento/bento-back-to-top.d.ts +9 -1
  8. package/dist/bento/bento-back-to-top.d.ts.map +1 -1
  9. package/dist/bento/bento-command-palette.d.ts +56 -9
  10. package/dist/bento/bento-command-palette.d.ts.map +1 -1
  11. package/dist/bento/bento-data-table.d.ts +81 -0
  12. package/dist/bento/bento-data-table.d.ts.map +1 -0
  13. package/dist/bento/bento-diff.d.ts +41 -0
  14. package/dist/bento/bento-diff.d.ts.map +1 -0
  15. package/dist/bento/bento-empty-state.d.ts +8 -1
  16. package/dist/bento/bento-empty-state.d.ts.map +1 -1
  17. package/dist/bento/bento-entity-shell.d.ts.map +1 -1
  18. package/dist/bento/bento-filter-bar.d.ts +60 -0
  19. package/dist/bento/bento-filter-bar.d.ts.map +1 -0
  20. package/dist/bento/bento-form-section.d.ts +14 -1
  21. package/dist/bento/bento-form-section.d.ts.map +1 -1
  22. package/dist/bento/bento-inline-edit.d.ts.map +1 -1
  23. package/dist/bento/bento-nav-rail.d.ts +13 -13
  24. package/dist/bento/bento-nav-rail.d.ts.map +1 -1
  25. package/dist/bento/bento-nav.d.ts +10 -2
  26. package/dist/bento/bento-nav.d.ts.map +1 -1
  27. package/dist/bento/bento-palette-trigger.d.ts +18 -0
  28. package/dist/bento/bento-palette-trigger.d.ts.map +1 -0
  29. package/dist/bento/bento-section-chrome.d.ts +19 -39
  30. package/dist/bento/bento-section-chrome.d.ts.map +1 -1
  31. package/dist/bento/bento-shell-shortcuts.d.ts +67 -0
  32. package/dist/bento/bento-shell-shortcuts.d.ts.map +1 -0
  33. package/dist/bento/bento-shell.d.ts +53 -0
  34. package/dist/bento/bento-shell.d.ts.map +1 -0
  35. package/dist/bento/bento-shortcuts-dialog.d.ts +9 -7
  36. package/dist/bento/bento-shortcuts-dialog.d.ts.map +1 -1
  37. package/dist/bento/bento-status-marker.d.ts +5 -2
  38. package/dist/bento/bento-status-marker.d.ts.map +1 -1
  39. package/dist/bento/bento-tile.d.ts.map +1 -1
  40. package/dist/bento/bento-user-menu.d.ts +9 -8
  41. package/dist/bento/bento-user-menu.d.ts.map +1 -1
  42. package/dist/bento/bento-version-rail.d.ts +31 -0
  43. package/dist/bento/bento-version-rail.d.ts.map +1 -0
  44. package/dist/bento/index.d.ts +15 -6
  45. package/dist/bento/index.d.ts.map +1 -1
  46. package/dist/bento.cjs +5 -1
  47. package/dist/bento.css +70 -4
  48. package/dist/bento.es.js +1778 -701
  49. package/dist/catalogue.json +5283 -0
  50. package/dist/components/app-footer.d.ts +7 -0
  51. package/dist/components/app-footer.d.ts.map +1 -1
  52. package/dist/components/app-switcher.d.ts.map +1 -1
  53. package/dist/components/backend-status.d.ts +19 -11
  54. package/dist/components/backend-status.d.ts.map +1 -1
  55. package/dist/components/badge-colorful.d.ts +13 -0
  56. package/dist/components/badge-colorful.d.ts.map +1 -1
  57. package/dist/components/badge-locale.d.ts +7 -0
  58. package/dist/components/badge-locale.d.ts.map +1 -1
  59. package/dist/components/error-boundary.d.ts +15 -13
  60. package/dist/components/error-boundary.d.ts.map +1 -1
  61. package/dist/components/language-select.d.ts +8 -0
  62. package/dist/components/language-select.d.ts.map +1 -1
  63. package/dist/components/login/login.d.ts +27 -0
  64. package/dist/components/login/login.d.ts.map +1 -1
  65. package/dist/components/mode-toggle.d.ts +9 -0
  66. package/dist/components/mode-toggle.d.ts.map +1 -1
  67. package/dist/components/nav-secondary.d.ts +7 -0
  68. package/dist/components/nav-secondary.d.ts.map +1 -1
  69. package/dist/components/router/dialog.delete.d.ts +8 -0
  70. package/dist/components/router/dialog.delete.d.ts.map +1 -1
  71. package/dist/components/router/gradient-button-link.d.ts +6 -0
  72. package/dist/components/router/gradient-button-link.d.ts.map +1 -1
  73. package/dist/components/router/index.d.ts +0 -11
  74. package/dist/components/router/index.d.ts.map +1 -1
  75. package/dist/components/router/loading-provider.d.ts +4 -0
  76. package/dist/components/router/loading-provider.d.ts.map +1 -1
  77. package/dist/components/startup-first/startup-first.d.ts +29 -0
  78. package/dist/components/startup-first/startup-first.d.ts.map +1 -1
  79. package/dist/components/ui/accordion.d.ts +17 -0
  80. package/dist/components/ui/accordion.d.ts.map +1 -1
  81. package/dist/components/ui/avatar.d.ts +14 -0
  82. package/dist/components/ui/avatar.d.ts.map +1 -1
  83. package/dist/components/ui/badge.d.ts +6 -0
  84. package/dist/components/ui/badge.d.ts.map +1 -1
  85. package/dist/components/ui/breadcrumb.d.ts +25 -0
  86. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  87. package/dist/components/ui/button.d.ts +15 -1
  88. package/dist/components/ui/button.d.ts.map +1 -1
  89. package/dist/components/ui/card.d.ts +27 -0
  90. package/dist/components/ui/card.d.ts.map +1 -1
  91. package/dist/components/ui/checkbox.d.ts +4 -0
  92. package/dist/components/ui/checkbox.d.ts.map +1 -1
  93. package/dist/components/ui/dialog.d.ts +36 -0
  94. package/dist/components/ui/dialog.d.ts.map +1 -1
  95. package/dist/components/ui/drawer.d.ts +35 -0
  96. package/dist/components/ui/drawer.d.ts.map +1 -1
  97. package/dist/components/ui/dropdown-menu.d.ts +53 -0
  98. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  99. package/dist/components/ui/floating-formulas-bg.d.ts +8 -0
  100. package/dist/components/ui/floating-formulas-bg.d.ts.map +1 -1
  101. package/dist/components/ui/form-actions.d.ts +7 -0
  102. package/dist/components/ui/form-actions.d.ts.map +1 -1
  103. package/dist/components/ui/form-item-two-columns.d.ts +7 -0
  104. package/dist/components/ui/form-item-two-columns.d.ts.map +1 -1
  105. package/dist/components/ui/form.d.ts +25 -0
  106. package/dist/components/ui/form.d.ts.map +1 -1
  107. package/dist/components/ui/glass-card.d.ts +18 -14
  108. package/dist/components/ui/glass-card.d.ts.map +1 -1
  109. package/dist/components/ui/gradient-button.d.ts +15 -1
  110. package/dist/components/ui/gradient-button.d.ts.map +1 -1
  111. package/dist/components/ui/gradient-switch.d.ts +6 -0
  112. package/dist/components/ui/gradient-switch.d.ts.map +1 -1
  113. package/dist/components/ui/hover-card.d.ts +14 -0
  114. package/dist/components/ui/hover-card.d.ts.map +1 -1
  115. package/dist/components/ui/icon-picker-dialog.d.ts.map +1 -1
  116. package/dist/components/ui/index.d.ts +6 -4
  117. package/dist/components/ui/index.d.ts.map +1 -1
  118. package/dist/components/ui/input.d.ts +6 -0
  119. package/dist/components/ui/input.d.ts.map +1 -1
  120. package/dist/components/ui/label.d.ts +4 -0
  121. package/dist/components/ui/label.d.ts.map +1 -1
  122. package/dist/components/ui/navigation-menu.d.ts +41 -0
  123. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  124. package/dist/components/ui/pagination.d.ts +25 -0
  125. package/dist/components/ui/pagination.d.ts.map +1 -1
  126. package/dist/components/ui/popover.d.ts +24 -0
  127. package/dist/components/ui/popover.d.ts.map +1 -1
  128. package/dist/components/ui/progress.d.ts +4 -0
  129. package/dist/components/ui/progress.d.ts.map +1 -1
  130. package/dist/components/ui/pulse-ring.d.ts +9 -11
  131. package/dist/components/ui/pulse-ring.d.ts.map +1 -1
  132. package/dist/components/ui/resizable.d.ts +11 -0
  133. package/dist/components/ui/resizable.d.ts.map +1 -1
  134. package/dist/components/ui/section-card.d.ts +9 -0
  135. package/dist/components/ui/section-card.d.ts.map +1 -1
  136. package/dist/components/ui/select.d.ts +36 -0
  137. package/dist/components/ui/select.d.ts.map +1 -1
  138. package/dist/components/ui/separator.d.ts +4 -0
  139. package/dist/components/ui/separator.d.ts.map +1 -1
  140. package/dist/components/ui/sheet.d.ts +29 -0
  141. package/dist/components/ui/sheet.d.ts.map +1 -1
  142. package/dist/components/ui/sidebar.d.ts +83 -0
  143. package/dist/components/ui/sidebar.d.ts.map +1 -1
  144. package/dist/components/ui/skeleton.d.ts +4 -0
  145. package/dist/components/ui/skeleton.d.ts.map +1 -1
  146. package/dist/components/ui/slider.d.ts +4 -0
  147. package/dist/components/ui/slider.d.ts.map +1 -1
  148. package/dist/components/ui/sonner.d.ts +16 -0
  149. package/dist/components/ui/sonner.d.ts.map +1 -1
  150. package/dist/components/ui/stepper.d.ts +8 -0
  151. package/dist/components/ui/stepper.d.ts.map +1 -1
  152. package/dist/components/ui/sticky-save-bar.d.ts +7 -0
  153. package/dist/components/ui/sticky-save-bar.d.ts.map +1 -1
  154. package/dist/components/ui/switch.d.ts +4 -0
  155. package/dist/components/ui/switch.d.ts.map +1 -1
  156. package/dist/components/ui/table.d.ts +31 -0
  157. package/dist/components/ui/table.d.ts.map +1 -1
  158. package/dist/components/ui/tabs.d.ts +16 -0
  159. package/dist/components/ui/tabs.d.ts.map +1 -1
  160. package/dist/components/ui/textarea.d.ts +4 -0
  161. package/dist/components/ui/textarea.d.ts.map +1 -1
  162. package/dist/components/ui/toggle-group.d.ts +7 -0
  163. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  164. package/dist/components/ui/toggle.d.ts +4 -0
  165. package/dist/components/ui/toggle.d.ts.map +1 -1
  166. package/dist/components/ui/tooltip.d.ts +18 -0
  167. package/dist/components/ui/tooltip.d.ts.map +1 -1
  168. package/dist/components/ui/user-avatar.d.ts +2 -1
  169. package/dist/components/ui/user-avatar.d.ts.map +1 -1
  170. package/dist/components/ui/viglet-assistant.d.ts +103 -0
  171. package/dist/components/ui/viglet-assistant.d.ts.map +1 -0
  172. package/dist/components/ui/viglet-avatar.d.ts +44 -0
  173. package/dist/components/ui/viglet-avatar.d.ts.map +1 -0
  174. package/dist/contexts/breadcrumb.context.d.ts +7 -0
  175. package/dist/contexts/breadcrumb.context.d.ts.map +1 -1
  176. package/dist/contexts/user.context.d.ts +8 -0
  177. package/dist/contexts/user.context.d.ts.map +1 -1
  178. package/dist/exports.json +359 -30
  179. package/dist/floating-formulas-bg.cjs +1 -1
  180. package/dist/floating-formulas-bg.es.js +56 -55
  181. package/dist/hooks/index.d.ts +1 -0
  182. package/dist/hooks/index.d.ts.map +1 -1
  183. package/dist/hooks/use-assistant-notifications.d.ts +15 -0
  184. package/dist/hooks/use-assistant-notifications.d.ts.map +1 -0
  185. package/dist/i18n/index.d.ts +168 -0
  186. package/dist/i18n/index.d.ts.map +1 -1
  187. package/dist/i18n/locales/en/assistant.json.d.ts +25 -0
  188. package/dist/i18n/locales/en/bento.json.d.ts +48 -2
  189. package/dist/i18n/locales/en/common.json.d.ts +6 -1
  190. package/dist/i18n/locales/en/language.json.d.ts +8 -0
  191. package/dist/i18n/locales/pt/assistant.json.d.ts +25 -0
  192. package/dist/i18n/locales/pt/bento.json.d.ts +48 -2
  193. package/dist/i18n/locales/pt/common.json.d.ts +6 -1
  194. package/dist/i18n/locales/pt/language.json.d.ts +8 -0
  195. package/dist/i18n.cjs +1 -1
  196. package/dist/i18n.es.js +572 -2
  197. package/dist/index.cjs +1 -1
  198. package/dist/index.d.ts +0 -1
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.es.js +2280 -733
  201. package/dist/lib/busy.d.ts +26 -0
  202. package/dist/lib/busy.d.ts.map +1 -0
  203. package/dist/lib/corner-slot.d.ts +15 -0
  204. package/dist/lib/corner-slot.d.ts.map +1 -0
  205. package/dist/{loading-provider-BWWhhfEn.js → loading-provider-ClDkFPuv.js} +84 -81
  206. package/dist/loading-provider-DGuCfsl9.cjs +1 -0
  207. package/dist/preset.css +7 -10
  208. package/dist/router.cjs +1 -1
  209. package/dist/router.es.js +2 -776
  210. package/dist/user.context-Cr3GAQ_r.js +762 -0
  211. package/dist/user.context-hbdvmXOn.cjs +1 -0
  212. package/dist/utils-Fk5jmzzb.js +41 -0
  213. package/dist/utils-Oagwe_oa.cjs +1 -0
  214. package/dist/viglet-design-system.css +1 -1
  215. package/dist/vite/boot-loader.d.ts +33 -2
  216. package/dist/vite/boot-loader.d.ts.map +1 -1
  217. package/dist/vite.cjs +16 -5
  218. package/dist/vite.es.js +27 -14
  219. package/docs/BENTO-AUTHORING.md +81 -11
  220. package/docs/reference/grounds.dc.html +9 -9
  221. package/package.json +16 -4
  222. package/scripts/consumer-entries.mjs +209 -0
  223. package/scripts/lib/contrast.mjs +301 -0
  224. package/scripts/mcp.mjs +300 -0
  225. package/scripts/page-lint.mjs +428 -0
  226. package/scripts/page-reference.mjs +54 -10
  227. package/dist/badge-locale-CoEEv7s5.js +0 -581
  228. package/dist/badge-locale-hQyWhAKe.cjs +0 -7
  229. package/dist/breadcrumb.context-KQut7j8U.js +0 -917
  230. package/dist/breadcrumb.context-Vwc3lAlf.cjs +0 -1
  231. package/dist/components/router/blank-slate.d.ts +0 -21
  232. package/dist/components/router/blank-slate.d.ts.map +0 -1
  233. package/dist/components/router/grid.list.d.ts +0 -39
  234. package/dist/components/router/grid.list.d.ts.map +0 -1
  235. package/dist/components/router/internal.sidebar.d.ts +0 -61
  236. package/dist/components/router/internal.sidebar.d.ts.map +0 -1
  237. package/dist/components/router/nav-main.d.ts +0 -25
  238. package/dist/components/router/nav-main.d.ts.map +0 -1
  239. package/dist/components/router/nav-user.d.ts +0 -24
  240. package/dist/components/router/nav-user.d.ts.map +0 -1
  241. package/dist/components/router/page-content.d.ts +0 -12
  242. package/dist/components/router/page-content.d.ts.map +0 -1
  243. package/dist/components/router/page-header.d.ts +0 -23
  244. package/dist/components/router/page-header.d.ts.map +0 -1
  245. package/dist/components/router/page.d.ts +0 -22
  246. package/dist/components/router/page.d.ts.map +0 -1
  247. package/dist/components/router/sticky.page.header.d.ts +0 -85
  248. package/dist/components/router/sticky.page.header.d.ts.map +0 -1
  249. package/dist/components/router/sub.page.d.ts +0 -50
  250. package/dist/components/router/sub.page.d.ts.map +0 -1
  251. package/dist/components/router/sub.page.header.d.ts +0 -37
  252. package/dist/components/router/sub.page.header.d.ts.map +0 -1
  253. package/dist/i18n-DD3rQOWi.js +0 -426
  254. package/dist/i18n-DrBq-qJJ.cjs +0 -1
  255. package/dist/lib/react-markers.d.ts +0 -17
  256. package/dist/lib/react-markers.d.ts.map +0 -1
  257. package/dist/loading-provider-CmeMqLGk.cjs +0 -1
  258. package/dist/user.context-B9vIBzY5.cjs +0 -1
  259. package/dist/user.context-D1PxP4D4.js +0 -512
package/consumers.json ADDED
@@ -0,0 +1,186 @@
1
+ {
2
+ "why": [
3
+ "The consumers this package holds itself to, declared rather than remembered.",
4
+ "The roadmap named Shio and Turing throughout while dumont-react sat on the",
5
+ "same 2026.3 line consuming the same entries, so one-look claims were being",
6
+ "checked against two of three. This file is the one place that set lives:",
7
+ "prose that names a subset as though it were the whole is a test failure,",
8
+ "not a style note.",
9
+ "",
10
+ "VDS73 widened it again, and by more than the line predicted. It expected two",
11
+ "Next installs; three consumers were absent, because cloud-frontend is a Vite",
12
+ "SPA nobody had written down either. Being outside the products root that",
13
+ "`use:local` walks is what kept all three invisible: the loop this package",
14
+ "offers instead of a publish could not reach them, so nothing ever asked.",
15
+ "",
16
+ "`framework` is why the membership could not just grow. A Next consumer takes",
17
+ "a different set: no `./router`, because the App Router is what replaces",
18
+ "react-router-dom, and no `./vite`. A guard that assumes every consumer",
19
+ "resolves `./router` asserts something three of six cannot do.",
20
+ "",
21
+ "`chrome` says which surface, and `console` stopped covering it: a platform",
22
+ "home and a public admissions front door are neither consoles nor bento.",
23
+ "",
24
+ "VDS144 made it a measurement. `pnpm chrome:census` counts the source files that",
25
+ "take a console-era component, from the package or through a product's own",
26
+ "re-export shim, and holds the field to that count: `console` for a consumer",
27
+ "that takes one and not ./bento, `mixed` for one that takes both, and anything",
28
+ "else only at zero. The first reading moved three: Turing had been called",
29
+ "`bento` with sixteen files still on console-era headers and empty states,",
30
+ "Dumont `console` while taking ./bento too, and the Cloud Console `console` with",
31
+ "no console-era import at all. The non-goals that wait for every console to cut",
32
+ "over are waiting for no entry to say `console` or `mixed`.",
33
+ "",
34
+ "VDS147 is that reading arriving. Turing and Dumont finished their cutover, the",
35
+ "census counted zero console-era imports in all nine, and both entries moved from",
36
+ "`mixed` to `bento` — which is what allowed the eleven console-era components to",
37
+ "be removed. The field stays measured rather than retired: it is how the next",
38
+ "chrome, whatever it is, gets counted instead of remembered.",
39
+ "",
40
+ "VDS146 took `console` and `mixed` out of the vocabulary. They named a chrome a",
41
+ "consumer could still be rendering, and there is no longer one to render: the",
42
+ "components are gone and so is the provider that picked between them. So the",
43
+ "census stopped asking a consumer to agree with its own measurement and now",
44
+ "reports a counted console-era import on its own, which is the only thing left",
45
+ "that could put one there — a name coming back, in a product, where this",
46
+ "repository's own removal guard cannot see it.",
47
+ "",
48
+ "`accent` is the token set a consumer renders with, and today every one of",
49
+ "them says `cool`. That is worth recording rather than assuming: VDS23 made",
50
+ "the brand accent a token so a product could re-key without forking a header,",
51
+ "and no product has re-keyed yet. The parity digest reads this, so the day one",
52
+ "does, the digest is required to carry that set.",
53
+ "",
54
+ "VDS122 widened it a third time, to nine, and the two it added were invisible",
55
+ "for a third reason: both take the package by caret range rather than pinning",
56
+ "it, so each receives a release the moment it installs one, and neither is a",
57
+ "product — a marketing site and a docs site are not what a guard here goes",
58
+ "looking for. Both were reached by reading their imports, not by being",
59
+ "remembered. `viglet-docs` is also the first consumer on a third framework;",
60
+ "it takes no root entry at all, only `./preset` and the background.",
61
+ "",
62
+ "`entries` is what each product imports, and VDS129 is why that is measured",
63
+ "rather than copied in. A snapshot drifted exactly as it was expected to: the",
64
+ "Shio entry listed three of the six subpaths its source takes and still said",
65
+ "`console`, and five other entries had gained or lost a subpath too, while the",
66
+ "only guard asked whether a declared entry exists and never whether an",
67
+ "imported one is declared.",
68
+ "",
69
+ "`sourceRoots` says where a product's own source is, relative to its package",
70
+ "root, so the measure is declared rather than guessed. `viglet-ds-consumer-entries`",
71
+ "reads them from a consumer's checkout and fails in both directions: a subpath",
72
+ "imported and not declared, and one declared and imported nowhere. Tests and",
73
+ "stories inside those roots are skipped, since a census test that greps for a",
74
+ "subpath is counting pages, not taking the entry. This file ships in the package",
75
+ "so a consumer can run that from its own suite.",
76
+ "",
77
+ "`checkout` is where `use:local` finds a consumer, relative to this repository's",
78
+ "root, with `{line}` standing for the version line this checkout is cut from.",
79
+ "The loop used to walk the directory above this checkout, which stopped being a",
80
+ "products root once this repository moved to one worktree per version, and it",
81
+ "found nothing (VDS130). A consumer not checked out beside this one says",
82
+ "`offMachine: true` instead, so on a developer's machine a checkout that is not",
83
+ "there is a failing test rather than a sentence nobody reads."
84
+ ],
85
+ "consumers": [
86
+ {
87
+ "id": "shio",
88
+ "name": "Shio",
89
+ "package": "shio-react",
90
+ "checkout": "../../shio/{line}/shio-react",
91
+ "framework": "vite",
92
+ "chrome": "bento",
93
+ "accent": "cool",
94
+ "sourceRoots": ["src", "vite.config.ts"],
95
+ "entries": [".", "./bento", "./bento.css", "./i18n", "./router", "./styles", "./vite"]
96
+ },
97
+ {
98
+ "id": "turing",
99
+ "name": "Turing",
100
+ "package": "turing-app",
101
+ "checkout": "../../turing/{line}/frontend/apps/turing-app",
102
+ "framework": "vite",
103
+ "chrome": "bento",
104
+ "accent": "cool",
105
+ "sourceRoots": ["src", "vite.config.ts"],
106
+ "entries": [".", "./bento", "./bento.css", "./router", "./styles", "./vite"]
107
+ },
108
+ {
109
+ "id": "dumont",
110
+ "name": "Dumont",
111
+ "package": "dumont-react",
112
+ "checkout": "../../dumont/{line}/dumont-react",
113
+ "framework": "vite",
114
+ "chrome": "bento",
115
+ "accent": "cool",
116
+ "sourceRoots": ["src", "vite.config.ts"],
117
+ "entries": [".", "./bento", "./bento.css", "./router", "./styles", "./vite"]
118
+ },
119
+ {
120
+ "id": "cloud-console",
121
+ "name": "Cloud Console",
122
+ "package": "@viglet/cloud-console",
123
+ "checkout": "../../cloud/console",
124
+ "framework": "next",
125
+ "chrome": "platform-console",
126
+ "accent": "cool",
127
+ "sourceRoots": ["src", "next.config.ts"],
128
+ "entries": [".", "./assets", "./i18n", "./styles"]
129
+ },
130
+ {
131
+ "id": "cloud-frontend",
132
+ "name": "Cloud Home",
133
+ "package": "@viglet/cloud-frontend",
134
+ "checkout": "../../cloud/cloud-frontend",
135
+ "framework": "vite",
136
+ "chrome": "platform-home",
137
+ "accent": "cool",
138
+ "sourceRoots": ["src", "vite.config.ts"],
139
+ "entries": [".", "./assets", "./i18n", "./styles", "./vite"]
140
+ },
141
+ {
142
+ "id": "schools",
143
+ "name": "Schools",
144
+ "package": "schools",
145
+ "checkout": "../../../japode/schools",
146
+ "framework": "next",
147
+ "chrome": "front-door",
148
+ "accent": "cool",
149
+ "sourceRoots": ["src", "next.config.ts"],
150
+ "entries": [".", "./fonts", "./preset", "./styles"]
151
+ },
152
+ {
153
+ "id": "roadkeep-gui",
154
+ "name": "Roadkeep GUI",
155
+ "package": "@rk/ui",
156
+ "checkout": "../../../alegauss/roadkeep-gui/packages/ui",
157
+ "framework": "vite",
158
+ "chrome": "bento",
159
+ "accent": "amber",
160
+ "sourceRoots": ["src", "vite.config.ts"],
161
+ "entries": [".", "./bento", "./bento.css", "./fonts", "./i18n", "./styles"]
162
+ },
163
+ {
164
+ "id": "openviglet-website",
165
+ "name": "Openviglet Website",
166
+ "package": "openviglet-website",
167
+ "checkout": "../../site",
168
+ "framework": "vite",
169
+ "chrome": "marketing-site",
170
+ "accent": "cool",
171
+ "sourceRoots": ["src", "vite.config.ts"],
172
+ "entries": [".", "./floating-formulas-bg.css", "./preset", "./styles"]
173
+ },
174
+ {
175
+ "id": "viglet-docs",
176
+ "name": "Viglet Docs",
177
+ "package": "viglet-docs",
178
+ "checkout": "../../vigletdocs/vigletdocs.github.io",
179
+ "framework": "docusaurus",
180
+ "chrome": "docs-site",
181
+ "accent": "cool",
182
+ "sourceRoots": ["src", "docusaurus.config.ts"],
183
+ "entries": ["./floating-formulas-bg", "./floating-formulas-bg.css", "./preset"]
184
+ }
185
+ ]
186
+ }
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-Oagwe_oa.cjs");let n=require("react");n=e.t(n,1);let r=require("react/jsx-runtime"),i=require("@radix-ui/react-slot"),a=require("class-variance-authority"),o=require("react-i18next"),s=require("@radix-ui/react-dialog");s=e.t(s,1);var c=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),l=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),u=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),d=e=>{let t=u(e);return t.charAt(0).toUpperCase()+t.slice(1)},f={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},p=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},m=(0,n.createContext)({}),h=()=>(0,n.useContext)(m),g=(0,n.forwardRef)(({color:e,size:t,strokeWidth:r,absoluteStrokeWidth:i,className:a=``,children:o,iconNode:s,...l},u)=>{let{size:d=24,strokeWidth:m=2,absoluteStrokeWidth:g=!1,color:_=`currentColor`,className:v=``}=h()??{},y=i??g?Number(r??m)*24/Number(t??d):r??m;return(0,n.createElement)(`svg`,{ref:u,...f,width:t??d??f.width,height:t??d??f.height,stroke:e??_,strokeWidth:y,className:c(`lucide`,v,a),...!o&&!p(l)&&{"aria-hidden":`true`},...l},[...s.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(o)?o:[o]])}),_=(e,t)=>{let r=(0,n.forwardRef)(({className:r,...i},a)=>(0,n.createElement)(g,{ref:a,iconNode:t,className:c(`lucide-${l(d(e))}`,`lucide-${e}`,r),...i}));return r.displayName=d(e),r},v=_(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),y=_(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),b=(0,a.cva)(`inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});function x({className:e,variant:n,asChild:a=!1,...o}){return(0,r.jsx)(a?i.Slot:`span`,{"data-slot":`badge`,className:t.t(b({variant:n}),e),...o})}function S(e,t,n){let r=e||t===!0||t===`true`;return{inert:r,props:{"aria-busy":e?`true`:void 0,"aria-disabled":r?`true`:void 0,onClick:e=>{if(r){e.preventDefault(),e.stopPropagation();return}n?.(e)}}}}function C(){return(0,r.jsxs)(`svg`,{"aria-hidden":`true`,className:`size-4 animate-spin`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,children:[(0,r.jsx)(`circle`,{className:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`4`}),(0,r.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z`})]})}function w({...e}){return(0,r.jsx)(s.Root,{"data-slot":`dialog`,...e})}function T({...e}){return(0,r.jsx)(s.Trigger,{"data-slot":`dialog-trigger`,...e})}function E({...e}){return(0,r.jsx)(s.Portal,{"data-slot":`dialog-portal`,...e})}function D({...e}){return(0,r.jsx)(s.Close,{"data-slot":`dialog-close`,...e})}function O({className:e,...n}){return(0,r.jsx)(s.Overlay,{"data-slot":`dialog-overlay`,className:t.t(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50`,e),...n})}function k({className:e,children:n,showCloseButton:i=!0,...a}){let{t:c}=(0,o.useTranslation)();return(0,r.jsxs)(E,{"data-slot":`dialog-portal`,children:[(0,r.jsx)(O,{}),(0,r.jsxs)(s.Content,{"data-slot":`dialog-content`,className:t.t(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg`,e),...a,children:[n,i&&(0,r.jsxs)(s.Close,{"data-slot":`dialog-close`,className:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,children:[(0,r.jsx)(y,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:c(`dialog.close`,{defaultValue:`Close`})})]})]})]})}function A({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`dialog-header`,className:t.t(`flex flex-col gap-2 text-center sm:text-left`,e),...n})}function j({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`dialog-footer`,className:t.t(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...n})}function M({className:e,...n}){return(0,r.jsx)(s.Title,{"data-slot":`dialog-title`,className:t.t(`text-lg leading-none font-semibold`,e),...n})}function N({className:e,...n}){return(0,r.jsx)(s.Description,{"data-slot":`dialog-description`,className:t.t(`text-muted-foreground text-sm`,e),...n})}var P=(0,a.cva)(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all duration-200 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:ring-[3px]`,{variants:{variant:{default:[`bg-gradient-to-r from-[var(--vg-accent-fill-from)] to-[var(--vg-accent-fill-to)] text-white`,`shadow-md shadow-[var(--vg-accent-shadow)]`,`hover:from-[var(--vg-accent-fill-from-hover)] hover:to-[var(--vg-accent-fill-to-hover)]`,`hover:shadow-lg hover:shadow-[var(--vg-accent-shadow-hover)]`,`focus-visible:ring-[var(--vg-accent-ring)]`].join(` `),secondary:[`bg-gradient-to-r from-slate-600 to-slate-700 text-white`,`shadow-md shadow-slate-500/25`,`hover:from-slate-700 hover:to-slate-800`,`hover:shadow-lg hover:shadow-slate-500/30`,`focus-visible:ring-slate-500/50`,`dark:from-slate-500 dark:to-slate-600`,`dark:shadow-slate-500/20`,`dark:hover:from-slate-600 dark:hover:to-slate-700`,`dark:hover:shadow-slate-500/25`,`dark:focus-visible:ring-slate-400/50`].join(` `),destructive:[`bg-gradient-to-r from-red-600 to-rose-600 text-white`,`shadow-md shadow-red-500/25`,`hover:from-red-700 hover:to-rose-700`,`hover:shadow-lg hover:shadow-red-500/30`,`focus-visible:ring-red-500/50`,`dark:from-red-500 dark:to-rose-500`,`dark:shadow-red-500/20`,`dark:hover:from-red-600 dark:hover:to-rose-600`,`dark:hover:shadow-red-500/25`,`dark:focus-visible:ring-red-400/50`].join(` `),success:[`bg-gradient-to-r from-emerald-600 to-teal-600 text-white`,`shadow-md shadow-emerald-500/25`,`hover:from-emerald-700 hover:to-teal-700`,`hover:shadow-lg hover:shadow-emerald-500/30`,`focus-visible:ring-emerald-500/50`,`dark:from-emerald-500 dark:to-teal-500`,`dark:shadow-emerald-500/20`,`dark:hover:from-emerald-600 dark:hover:to-teal-600`,`dark:hover:shadow-emerald-500/25`,`dark:focus-visible:ring-emerald-400/50`].join(` `),outline:[`border-2 border-[var(--vg-accent-fg)] text-[var(--vg-accent-fg)] bg-transparent`,`hover:bg-[var(--vg-accent-fill-from)] hover:text-white`,`shadow-sm hover:shadow-md hover:shadow-[var(--vg-accent-shadow)]`,`focus-visible:ring-[var(--vg-accent-ring)]`].join(` `),ghost:[`bg-transparent text-[var(--vg-accent-fg)]`,`hover:bg-[var(--vg-accent-surface)]`,`focus-visible:ring-[var(--vg-accent-ring)]`].join(` `)},size:{default:`h-11 px-5 py-2 has-[>svg]:px-4`,sm:`h-9 rounded-md gap-1.5 px-4 has-[>svg]:px-3 text-xs`,lg:`h-12 rounded-md px-8 has-[>svg]:px-6 text-base`,icon:`size-11`,"icon-sm":`size-9`,"icon-lg":`size-12`}},defaultVariants:{variant:`default`,size:`default`}});function F({className:e,variant:n,size:a,asChild:o=!1,loading:s=!1,onClick:c,children:l,...u}){let d=S(s,u[`aria-disabled`],c),f=t.t(P({variant:n,size:a,className:e}),d.inert&&(s?`cursor-progress`:`cursor-not-allowed opacity-50`));return(0,r.jsx)(o?i.Slot:`button`,{"data-slot":`gradient-button`,className:f,...u,...d.props,children:o?l:(0,r.jsxs)(r.Fragment,{children:[s&&(0,r.jsx)(C,{}),l]})})}function I({className:e,type:n,...i}){return(0,r.jsx)(`input`,{type:n,"data-slot":`input`,className:t.t(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent pl-3 pr-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`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`,e),...i})}function L({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`skeleton`,className:t.t(`bg-accent animate-pulse rounded-md`,e),...n})}var R=({text:e,href:n,onClick:i,className:a,prefix:o})=>{if(!e)return null;let s=t.r(e);return(0,r.jsxs)(x,{variant:`outline`,title:e,onClick:()=>n&&i?.(n),className:t.t(`vg-badge-colorful text-xs font-medium px-2 py-0.5 gap-1.5 cursor-pointer transition-all hover:opacity-80`,`dynamic-badge-${e.length}`,a),style:{"--badge-bg":s.light.bg,"--badge-text":s.light.text,"--badge-border":s.light.border,"--badge-dark-bg":s.dark.bg,"--badge-dark-text":s.dark.text,"--badge-dark-border":s.dark.border},children:[o,(0,r.jsx)(`span`,{children:e})]})},z={AR:`SA`,BN:`BD`,CA:`ES`,CS:`CZ`,DA:`DK`,DE:`DE`,EL:`GR`,EN:`US`,EU:`ES`,FA:`IR`,FI:`FI`,FIL:`PH`,FR:`FR`,GA:`IE`,GL:`ES`,GU:`IN`,HE:`IL`,HI:`IN`,HU:`HU`,ID:`ID`,IT:`IT`,JA:`JP`,KN:`IN`,KO:`KR`,MR:`IN`,MSA:`MY`,NL:`NL`,NO:`NO`,PL:`PL`,PT:`BR`,RO:`RO`,RU:`RU`,ES:`ES`,SV:`SE`,TA:`IN`,TH:`TH`,TR:`TR`,UK:`UA`,UR:`PK`,VI:`VN`,ZH:`CN`},B={UK:`GB`};function V(e){if(!e)return``;let{language:n,region:r}=t.i(e);if(r)return(B[r]||r).toLowerCase();let i=z[n];return i?i.toLowerCase():(B[n]||n).toLowerCase()}var H=({locale:e,className:i})=>{let a=V(e),[o,s]=(0,n.useState)(null),c=o===a;return(0,r.jsxs)(x,{variant:`secondary`,className:t.t(`font-mono gap-2 py-1 pl-1 pr-2 w-fit`,i),children:[!c&&a?(0,r.jsx)(`img`,{src:`https://flagcdn.com/w40/${a}.png`,alt:a,onError:()=>s(a),className:`w-5 h-3.5 object-cover rounded-sm shadow-sm`}):(0,r.jsx)(v,{className:`w-3.5 h-3.5 text-muted-foreground`}),(0,r.jsx)(`span`,{className:`text-xs font-bold uppercase tracking-tight leading-none`,children:e})]})};Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return S}});
@@ -0,0 +1,397 @@
1
+ import { i as e, r as t, t as n } from "./utils-Fk5jmzzb.js";
2
+ import { createContext as r, createElement as i, forwardRef as a, useContext as o, useState as s } from "react";
3
+ import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ import { Slot as d } from "@radix-ui/react-slot";
5
+ import { cva as f } from "class-variance-authority";
6
+ import { useTranslation as p } from "react-i18next";
7
+ import * as m from "@radix-ui/react-dialog";
8
+ //#region node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs
9
+ var h = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), g = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), _ = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), v = (e) => {
10
+ let t = _(e);
11
+ return t.charAt(0).toUpperCase() + t.slice(1);
12
+ }, y = {
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ width: 24,
15
+ height: 24,
16
+ viewBox: "0 0 24 24",
17
+ fill: "none",
18
+ stroke: "currentColor",
19
+ strokeWidth: 2,
20
+ strokeLinecap: "round",
21
+ strokeLinejoin: "round"
22
+ }, b = (e) => {
23
+ for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
24
+ return !1;
25
+ }, x = r({}), S = () => o(x), C = a(({ color: e, size: t, strokeWidth: n, absoluteStrokeWidth: r, className: a = "", children: o, iconNode: s, ...c }, l) => {
26
+ let { size: u = 24, strokeWidth: d = 2, absoluteStrokeWidth: f = !1, color: p = "currentColor", className: m = "" } = S() ?? {}, g = r ?? f ? Number(n ?? d) * 24 / Number(t ?? u) : n ?? d;
27
+ return i("svg", {
28
+ ref: l,
29
+ ...y,
30
+ width: t ?? u ?? y.width,
31
+ height: t ?? u ?? y.height,
32
+ stroke: e ?? p,
33
+ strokeWidth: g,
34
+ className: h("lucide", m, a),
35
+ ...!o && !b(c) && { "aria-hidden": "true" },
36
+ ...c
37
+ }, [...s.map(([e, t]) => i(e, t)), ...Array.isArray(o) ? o : [o]]);
38
+ }), w = (e, t) => {
39
+ let n = a(({ className: n, ...r }, a) => i(C, {
40
+ ref: a,
41
+ iconNode: t,
42
+ className: h(`lucide-${g(v(e))}`, `lucide-${e}`, n),
43
+ ...r
44
+ }));
45
+ return n.displayName = v(e), n;
46
+ }, T = w("globe", [
47
+ ["circle", {
48
+ cx: "12",
49
+ cy: "12",
50
+ r: "10",
51
+ key: "1mglay"
52
+ }],
53
+ ["path", {
54
+ d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",
55
+ key: "13o1zl"
56
+ }],
57
+ ["path", {
58
+ d: "M2 12h20",
59
+ key: "9i4pu4"
60
+ }]
61
+ ]), E = w("x", [["path", {
62
+ d: "M18 6 6 18",
63
+ key: "1bl5f8"
64
+ }], ["path", {
65
+ d: "m6 6 12 12",
66
+ key: "d8bk6v"
67
+ }]]), D = f("inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden", {
68
+ variants: { variant: {
69
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
70
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
71
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
72
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
73
+ } },
74
+ defaultVariants: { variant: "default" }
75
+ });
76
+ function O({ className: e, variant: t, asChild: r = !1, ...i }) {
77
+ return /* @__PURE__ */ l(r ? d : "span", {
78
+ "data-slot": "badge",
79
+ className: n(D({ variant: t }), e),
80
+ ...i
81
+ });
82
+ }
83
+ //#endregion
84
+ //#region src/lib/busy.tsx
85
+ function k(e, t, n) {
86
+ let r = e || t === !0 || t === "true";
87
+ return {
88
+ inert: r,
89
+ props: {
90
+ "aria-busy": e ? "true" : void 0,
91
+ "aria-disabled": r ? "true" : void 0,
92
+ onClick: (e) => {
93
+ if (r) {
94
+ e.preventDefault(), e.stopPropagation();
95
+ return;
96
+ }
97
+ n?.(e);
98
+ }
99
+ }
100
+ };
101
+ }
102
+ function A() {
103
+ return /* @__PURE__ */ u("svg", {
104
+ "aria-hidden": "true",
105
+ className: "size-4 animate-spin",
106
+ xmlns: "http://www.w3.org/2000/svg",
107
+ fill: "none",
108
+ viewBox: "0 0 24 24",
109
+ children: [/* @__PURE__ */ l("circle", {
110
+ className: "opacity-25",
111
+ cx: "12",
112
+ cy: "12",
113
+ r: "10",
114
+ stroke: "currentColor",
115
+ strokeWidth: "4"
116
+ }), /* @__PURE__ */ l("path", {
117
+ className: "opacity-75",
118
+ fill: "currentColor",
119
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
120
+ })]
121
+ });
122
+ }
123
+ //#endregion
124
+ //#region src/components/ui/dialog.tsx
125
+ function j({ ...e }) {
126
+ return /* @__PURE__ */ l(m.Root, {
127
+ "data-slot": "dialog",
128
+ ...e
129
+ });
130
+ }
131
+ function M({ ...e }) {
132
+ return /* @__PURE__ */ l(m.Trigger, {
133
+ "data-slot": "dialog-trigger",
134
+ ...e
135
+ });
136
+ }
137
+ function N({ ...e }) {
138
+ return /* @__PURE__ */ l(m.Portal, {
139
+ "data-slot": "dialog-portal",
140
+ ...e
141
+ });
142
+ }
143
+ function P({ ...e }) {
144
+ return /* @__PURE__ */ l(m.Close, {
145
+ "data-slot": "dialog-close",
146
+ ...e
147
+ });
148
+ }
149
+ function F({ className: e, ...t }) {
150
+ return /* @__PURE__ */ l(m.Overlay, {
151
+ "data-slot": "dialog-overlay",
152
+ className: n("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", e),
153
+ ...t
154
+ });
155
+ }
156
+ function I({ className: e, children: t, showCloseButton: r = !0, ...i }) {
157
+ let { t: a } = p();
158
+ return /* @__PURE__ */ u(N, {
159
+ "data-slot": "dialog-portal",
160
+ children: [/* @__PURE__ */ l(F, {}), /* @__PURE__ */ u(m.Content, {
161
+ "data-slot": "dialog-content",
162
+ className: n("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", e),
163
+ ...i,
164
+ children: [t, r && /* @__PURE__ */ u(m.Close, {
165
+ "data-slot": "dialog-close",
166
+ className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
167
+ children: [/* @__PURE__ */ l(E, {}), /* @__PURE__ */ l("span", {
168
+ className: "sr-only",
169
+ children: a("dialog.close", { defaultValue: "Close" })
170
+ })]
171
+ })]
172
+ })]
173
+ });
174
+ }
175
+ function L({ className: e, ...t }) {
176
+ return /* @__PURE__ */ l("div", {
177
+ "data-slot": "dialog-header",
178
+ className: n("flex flex-col gap-2 text-center sm:text-left", e),
179
+ ...t
180
+ });
181
+ }
182
+ function R({ className: e, ...t }) {
183
+ return /* @__PURE__ */ l("div", {
184
+ "data-slot": "dialog-footer",
185
+ className: n("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
186
+ ...t
187
+ });
188
+ }
189
+ function z({ className: e, ...t }) {
190
+ return /* @__PURE__ */ l(m.Title, {
191
+ "data-slot": "dialog-title",
192
+ className: n("text-lg leading-none font-semibold", e),
193
+ ...t
194
+ });
195
+ }
196
+ function B({ className: e, ...t }) {
197
+ return /* @__PURE__ */ l(m.Description, {
198
+ "data-slot": "dialog-description",
199
+ className: n("text-muted-foreground text-sm", e),
200
+ ...t
201
+ });
202
+ }
203
+ //#endregion
204
+ //#region src/components/ui/gradient-button.tsx
205
+ var V = f("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all duration-200 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:ring-[3px]", {
206
+ variants: {
207
+ variant: {
208
+ default: [
209
+ "bg-gradient-to-r from-[var(--vg-accent-fill-from)] to-[var(--vg-accent-fill-to)] text-white",
210
+ "shadow-md shadow-[var(--vg-accent-shadow)]",
211
+ "hover:from-[var(--vg-accent-fill-from-hover)] hover:to-[var(--vg-accent-fill-to-hover)]",
212
+ "hover:shadow-lg hover:shadow-[var(--vg-accent-shadow-hover)]",
213
+ "focus-visible:ring-[var(--vg-accent-ring)]"
214
+ ].join(" "),
215
+ secondary: [
216
+ "bg-gradient-to-r from-slate-600 to-slate-700 text-white",
217
+ "shadow-md shadow-slate-500/25",
218
+ "hover:from-slate-700 hover:to-slate-800",
219
+ "hover:shadow-lg hover:shadow-slate-500/30",
220
+ "focus-visible:ring-slate-500/50",
221
+ "dark:from-slate-500 dark:to-slate-600",
222
+ "dark:shadow-slate-500/20",
223
+ "dark:hover:from-slate-600 dark:hover:to-slate-700",
224
+ "dark:hover:shadow-slate-500/25",
225
+ "dark:focus-visible:ring-slate-400/50"
226
+ ].join(" "),
227
+ destructive: [
228
+ "bg-gradient-to-r from-red-600 to-rose-600 text-white",
229
+ "shadow-md shadow-red-500/25",
230
+ "hover:from-red-700 hover:to-rose-700",
231
+ "hover:shadow-lg hover:shadow-red-500/30",
232
+ "focus-visible:ring-red-500/50",
233
+ "dark:from-red-500 dark:to-rose-500",
234
+ "dark:shadow-red-500/20",
235
+ "dark:hover:from-red-600 dark:hover:to-rose-600",
236
+ "dark:hover:shadow-red-500/25",
237
+ "dark:focus-visible:ring-red-400/50"
238
+ ].join(" "),
239
+ success: [
240
+ "bg-gradient-to-r from-emerald-600 to-teal-600 text-white",
241
+ "shadow-md shadow-emerald-500/25",
242
+ "hover:from-emerald-700 hover:to-teal-700",
243
+ "hover:shadow-lg hover:shadow-emerald-500/30",
244
+ "focus-visible:ring-emerald-500/50",
245
+ "dark:from-emerald-500 dark:to-teal-500",
246
+ "dark:shadow-emerald-500/20",
247
+ "dark:hover:from-emerald-600 dark:hover:to-teal-600",
248
+ "dark:hover:shadow-emerald-500/25",
249
+ "dark:focus-visible:ring-emerald-400/50"
250
+ ].join(" "),
251
+ outline: [
252
+ "border-2 border-[var(--vg-accent-fg)] text-[var(--vg-accent-fg)] bg-transparent",
253
+ "hover:bg-[var(--vg-accent-fill-from)] hover:text-white",
254
+ "shadow-sm hover:shadow-md hover:shadow-[var(--vg-accent-shadow)]",
255
+ "focus-visible:ring-[var(--vg-accent-ring)]"
256
+ ].join(" "),
257
+ ghost: [
258
+ "bg-transparent text-[var(--vg-accent-fg)]",
259
+ "hover:bg-[var(--vg-accent-surface)]",
260
+ "focus-visible:ring-[var(--vg-accent-ring)]"
261
+ ].join(" ")
262
+ },
263
+ size: {
264
+ default: "h-11 px-5 py-2 has-[>svg]:px-4",
265
+ sm: "h-9 rounded-md gap-1.5 px-4 has-[>svg]:px-3 text-xs",
266
+ lg: "h-12 rounded-md px-8 has-[>svg]:px-6 text-base",
267
+ icon: "size-11",
268
+ "icon-sm": "size-9",
269
+ "icon-lg": "size-12"
270
+ }
271
+ },
272
+ defaultVariants: {
273
+ variant: "default",
274
+ size: "default"
275
+ }
276
+ });
277
+ function H({ className: e, variant: t, size: r, asChild: i = !1, loading: a = !1, onClick: o, children: s, ...f }) {
278
+ let p = k(a, f["aria-disabled"], o), m = n(V({
279
+ variant: t,
280
+ size: r,
281
+ className: e
282
+ }), p.inert && (a ? "cursor-progress" : "cursor-not-allowed opacity-50"));
283
+ return /* @__PURE__ */ l(i ? d : "button", {
284
+ "data-slot": "gradient-button",
285
+ className: m,
286
+ ...f,
287
+ ...p.props,
288
+ children: i ? s : /* @__PURE__ */ u(c, { children: [a && /* @__PURE__ */ l(A, {}), s] })
289
+ });
290
+ }
291
+ //#endregion
292
+ //#region src/components/ui/input.tsx
293
+ function U({ className: e, type: t, ...r }) {
294
+ return /* @__PURE__ */ l("input", {
295
+ type: t,
296
+ "data-slot": "input",
297
+ className: n("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent pl-3 pr-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "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", e),
298
+ ...r
299
+ });
300
+ }
301
+ //#endregion
302
+ //#region src/components/ui/skeleton.tsx
303
+ function W({ className: e, ...t }) {
304
+ return /* @__PURE__ */ l("div", {
305
+ "data-slot": "skeleton",
306
+ className: n("bg-accent animate-pulse rounded-md", e),
307
+ ...t
308
+ });
309
+ }
310
+ //#endregion
311
+ //#region src/components/badge-colorful.tsx
312
+ var G = ({ text: e, href: r, onClick: i, className: a, prefix: o }) => {
313
+ if (!e) return null;
314
+ let s = t(e);
315
+ return /* @__PURE__ */ u(O, {
316
+ variant: "outline",
317
+ title: e,
318
+ onClick: () => r && i?.(r),
319
+ className: n("vg-badge-colorful text-xs font-medium px-2 py-0.5 gap-1.5 cursor-pointer transition-all hover:opacity-80", `dynamic-badge-${e.length}`, a),
320
+ style: {
321
+ "--badge-bg": s.light.bg,
322
+ "--badge-text": s.light.text,
323
+ "--badge-border": s.light.border,
324
+ "--badge-dark-bg": s.dark.bg,
325
+ "--badge-dark-text": s.dark.text,
326
+ "--badge-dark-border": s.dark.border
327
+ },
328
+ children: [o, /* @__PURE__ */ l("span", { children: e })]
329
+ });
330
+ }, K = {
331
+ AR: "SA",
332
+ BN: "BD",
333
+ CA: "ES",
334
+ CS: "CZ",
335
+ DA: "DK",
336
+ DE: "DE",
337
+ EL: "GR",
338
+ EN: "US",
339
+ EU: "ES",
340
+ FA: "IR",
341
+ FI: "FI",
342
+ FIL: "PH",
343
+ FR: "FR",
344
+ GA: "IE",
345
+ GL: "ES",
346
+ GU: "IN",
347
+ HE: "IL",
348
+ HI: "IN",
349
+ HU: "HU",
350
+ ID: "ID",
351
+ IT: "IT",
352
+ JA: "JP",
353
+ KN: "IN",
354
+ KO: "KR",
355
+ MR: "IN",
356
+ MSA: "MY",
357
+ NL: "NL",
358
+ NO: "NO",
359
+ PL: "PL",
360
+ PT: "BR",
361
+ RO: "RO",
362
+ RU: "RU",
363
+ ES: "ES",
364
+ SV: "SE",
365
+ TA: "IN",
366
+ TH: "TH",
367
+ TR: "TR",
368
+ UK: "UA",
369
+ UR: "PK",
370
+ VI: "VN",
371
+ ZH: "CN"
372
+ }, q = { UK: "GB" };
373
+ function J(t) {
374
+ if (!t) return "";
375
+ let { language: n, region: r } = e(t);
376
+ if (r) return (q[r] || r).toLowerCase();
377
+ let i = K[n];
378
+ return i ? i.toLowerCase() : (q[n] || n).toLowerCase();
379
+ }
380
+ var Y = ({ locale: e, className: t }) => {
381
+ let r = J(e), [i, a] = s(null), o = i === r;
382
+ return /* @__PURE__ */ u(O, {
383
+ variant: "secondary",
384
+ className: n("font-mono gap-2 py-1 pl-1 pr-2 w-fit", t),
385
+ children: [!o && r ? /* @__PURE__ */ l("img", {
386
+ src: `https://flagcdn.com/w40/${r}.png`,
387
+ alt: r,
388
+ onError: () => a(r),
389
+ className: "w-5 h-3.5 object-cover rounded-sm shadow-sm"
390
+ }) : /* @__PURE__ */ l(T, { className: "w-3.5 h-3.5 text-muted-foreground" }), /* @__PURE__ */ l("span", {
391
+ className: "text-xs font-bold uppercase tracking-tight leading-none",
392
+ children: e
393
+ })]
394
+ });
395
+ };
396
+ //#endregion
397
+ export { w as C, E as S, M as _, U as a, O as b, j as c, B as d, R as f, z as g, N as h, W as i, P as l, F as m, J as n, H as o, L as p, G as r, V as s, Y as t, I as u, A as v, D as x, k as y };
@@ -1,6 +1,14 @@
1
1
  import { ComponentType } from 'react';
2
2
  export type BentoActionTone = "default" | "destructive";
3
3
  export interface BentoActionsMenuItem {
4
+ /**
5
+ * The verb's stable name, rendered as `data-action-id`, e.g. `"post.delete"`.
6
+ * The package attaches no meaning to it; it guarantees only that every action
7
+ * reaching the DOM carries a name a census can match, such as a product's check
8
+ * that each console verb has an agent equivalent. Omitting it warns outside
9
+ * production for this release, and it becomes required in the next.
10
+ */
11
+ id?: string;
4
12
  /** Visible label inside the menu. */
5
13
  label: string;
6
14
  /** Icon shown to the left of the label. */
@@ -1 +1 @@
1
- {"version":3,"file":"bento-actions-menu.d.ts","sourceRoot":"","sources":["../../src/bento/bento-actions-menu.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,IAAI,EAAE,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,qBAAqB,CAAC,sCAkC1F"}
1
+ {"version":3,"file":"bento-actions-menu.d.ts","sourceRoot":"","sources":["../../src/bento/bento-actions-menu.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,IAAI,EAAE,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvC;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyBD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,qBAAqB,CAAC,sCAoC1F"}
@@ -1,3 +1,7 @@
1
+ export interface BentoBackToTopProps {
2
+ /** Render in flow instead of fixed to the viewport corner. */
3
+ inline?: boolean;
4
+ }
1
5
  /**
2
6
  * Floating "scroll to top" button — appears with an iOS spring
3
7
  * animation once the user has scrolled past the threshold, and
@@ -6,6 +10,10 @@
6
10
  * Complements the sticky header rather than replacing it: the header
7
11
  * keeps navigation/branding always reachable, this button just cuts
8
12
  * the long way back when content is heavy.
13
+ *
14
+ * On its own it pins itself to the bottom-right corner. Inside `BentoShell` it is
15
+ * in flow, in the corner stack above the assistant dock (VDS133): the two used to
16
+ * pin themselves to the same corner, and the dock covered it.
9
17
  */
10
- export declare function BentoBackToTop(): import("react").JSX.Element;
18
+ export declare function BentoBackToTop({ inline }?: Readonly<BentoBackToTopProps>): import("react").JSX.Element;
11
19
  //# sourceMappingURL=bento-back-to-top.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bento-back-to-top.d.ts","sourceRoot":"","sources":["../../src/bento/bento-back-to-top.tsx"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,gCA8B7B"}
1
+ {"version":3,"file":"bento-back-to-top.d.ts","sourceRoot":"","sources":["../../src/bento/bento-back-to-top.tsx"],"names":[],"mappings":"AAiBA,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAc,EAAE,GAAE,QAAQ,CAAC,mBAAmB,CAAM,+BAgCpF"}