@viglet/viglet-design-system 2026.3.10 → 2026.3.12

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 (235) hide show
  1. package/README.md +323 -36
  2. package/consumers.json +186 -0
  3. package/dist/badge-locale-1_BmNTro.cjs +1 -0
  4. package/dist/badge-locale-Bx7m7tg2.js +501 -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 +12 -0
  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 +10 -3
  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-palette-trigger.d.ts +18 -0
  26. package/dist/bento/bento-palette-trigger.d.ts.map +1 -0
  27. package/dist/bento/bento-section-chrome.d.ts +17 -42
  28. package/dist/bento/bento-section-chrome.d.ts.map +1 -1
  29. package/dist/bento/bento-shell-shortcuts.d.ts +67 -0
  30. package/dist/bento/bento-shell-shortcuts.d.ts.map +1 -0
  31. package/dist/bento/bento-shell.d.ts +53 -0
  32. package/dist/bento/bento-shell.d.ts.map +1 -0
  33. package/dist/bento/bento-shortcuts-dialog.d.ts +9 -7
  34. package/dist/bento/bento-shortcuts-dialog.d.ts.map +1 -1
  35. package/dist/bento/bento-status-marker.d.ts +5 -2
  36. package/dist/bento/bento-status-marker.d.ts.map +1 -1
  37. package/dist/bento/bento-user-menu.d.ts +9 -8
  38. package/dist/bento/bento-user-menu.d.ts.map +1 -1
  39. package/dist/bento/bento-version-rail.d.ts +31 -0
  40. package/dist/bento/bento-version-rail.d.ts.map +1 -0
  41. package/dist/bento/index.d.ts +14 -5
  42. package/dist/bento/index.d.ts.map +1 -1
  43. package/dist/bento.cjs +5 -1
  44. package/dist/bento.css +70 -4
  45. package/dist/bento.es.js +1642 -625
  46. package/dist/catalogue.json +5349 -0
  47. package/dist/components/app-footer.d.ts +7 -0
  48. package/dist/components/app-footer.d.ts.map +1 -1
  49. package/dist/components/backend-status.d.ts +19 -11
  50. package/dist/components/backend-status.d.ts.map +1 -1
  51. package/dist/components/badge-colorful.d.ts +4 -0
  52. package/dist/components/badge-colorful.d.ts.map +1 -1
  53. package/dist/components/badge-locale.d.ts +7 -0
  54. package/dist/components/badge-locale.d.ts.map +1 -1
  55. package/dist/components/error-boundary.d.ts +15 -13
  56. package/dist/components/error-boundary.d.ts.map +1 -1
  57. package/dist/components/language-select.d.ts +8 -0
  58. package/dist/components/language-select.d.ts.map +1 -1
  59. package/dist/components/login/login.d.ts +27 -0
  60. package/dist/components/login/login.d.ts.map +1 -1
  61. package/dist/components/mode-toggle.d.ts +9 -0
  62. package/dist/components/mode-toggle.d.ts.map +1 -1
  63. package/dist/components/nav-secondary.d.ts +7 -0
  64. package/dist/components/nav-secondary.d.ts.map +1 -1
  65. package/dist/components/router/dialog.delete.d.ts +8 -0
  66. package/dist/components/router/dialog.delete.d.ts.map +1 -1
  67. package/dist/components/router/gradient-button-link.d.ts +6 -0
  68. package/dist/components/router/gradient-button-link.d.ts.map +1 -1
  69. package/dist/components/router/index.d.ts +0 -11
  70. package/dist/components/router/index.d.ts.map +1 -1
  71. package/dist/components/router/loading-provider.d.ts +4 -0
  72. package/dist/components/router/loading-provider.d.ts.map +1 -1
  73. package/dist/components/startup-first/startup-first.d.ts +29 -0
  74. package/dist/components/startup-first/startup-first.d.ts.map +1 -1
  75. package/dist/components/ui/accordion.d.ts +17 -0
  76. package/dist/components/ui/accordion.d.ts.map +1 -1
  77. package/dist/components/ui/avatar.d.ts +14 -0
  78. package/dist/components/ui/avatar.d.ts.map +1 -1
  79. package/dist/components/ui/badge.d.ts +6 -0
  80. package/dist/components/ui/badge.d.ts.map +1 -1
  81. package/dist/components/ui/breadcrumb.d.ts +25 -0
  82. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  83. package/dist/components/ui/button.d.ts +15 -1
  84. package/dist/components/ui/button.d.ts.map +1 -1
  85. package/dist/components/ui/card.d.ts +27 -0
  86. package/dist/components/ui/card.d.ts.map +1 -1
  87. package/dist/components/ui/checkbox.d.ts +4 -0
  88. package/dist/components/ui/checkbox.d.ts.map +1 -1
  89. package/dist/components/ui/dialog.d.ts +36 -0
  90. package/dist/components/ui/dialog.d.ts.map +1 -1
  91. package/dist/components/ui/drawer.d.ts +35 -0
  92. package/dist/components/ui/drawer.d.ts.map +1 -1
  93. package/dist/components/ui/dropdown-menu.d.ts +53 -0
  94. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  95. package/dist/components/ui/floating-formulas-bg.d.ts +8 -0
  96. package/dist/components/ui/floating-formulas-bg.d.ts.map +1 -1
  97. package/dist/components/ui/form-actions.d.ts +7 -0
  98. package/dist/components/ui/form-actions.d.ts.map +1 -1
  99. package/dist/components/ui/form-item-two-columns.d.ts +7 -0
  100. package/dist/components/ui/form-item-two-columns.d.ts.map +1 -1
  101. package/dist/components/ui/form.d.ts +26 -1
  102. package/dist/components/ui/form.d.ts.map +1 -1
  103. package/dist/components/ui/glass-card.d.ts +13 -14
  104. package/dist/components/ui/glass-card.d.ts.map +1 -1
  105. package/dist/components/ui/gradient-button.d.ts +15 -1
  106. package/dist/components/ui/gradient-button.d.ts.map +1 -1
  107. package/dist/components/ui/gradient-switch.d.ts +6 -0
  108. package/dist/components/ui/gradient-switch.d.ts.map +1 -1
  109. package/dist/components/ui/hover-card.d.ts +14 -0
  110. package/dist/components/ui/hover-card.d.ts.map +1 -1
  111. package/dist/components/ui/index.d.ts +2 -1
  112. package/dist/components/ui/index.d.ts.map +1 -1
  113. package/dist/components/ui/input.d.ts +6 -0
  114. package/dist/components/ui/input.d.ts.map +1 -1
  115. package/dist/components/ui/label.d.ts +4 -0
  116. package/dist/components/ui/label.d.ts.map +1 -1
  117. package/dist/components/ui/navigation-menu.d.ts +29 -2
  118. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  119. package/dist/components/ui/pagination.d.ts +25 -0
  120. package/dist/components/ui/pagination.d.ts.map +1 -1
  121. package/dist/components/ui/popover.d.ts +24 -0
  122. package/dist/components/ui/popover.d.ts.map +1 -1
  123. package/dist/components/ui/progress.d.ts +4 -0
  124. package/dist/components/ui/progress.d.ts.map +1 -1
  125. package/dist/components/ui/pulse-ring.d.ts +9 -11
  126. package/dist/components/ui/pulse-ring.d.ts.map +1 -1
  127. package/dist/components/ui/resizable.d.ts +11 -0
  128. package/dist/components/ui/resizable.d.ts.map +1 -1
  129. package/dist/components/ui/section-card.d.ts +9 -0
  130. package/dist/components/ui/section-card.d.ts.map +1 -1
  131. package/dist/components/ui/select.d.ts +36 -0
  132. package/dist/components/ui/select.d.ts.map +1 -1
  133. package/dist/components/ui/separator.d.ts +4 -0
  134. package/dist/components/ui/separator.d.ts.map +1 -1
  135. package/dist/components/ui/sheet.d.ts +29 -0
  136. package/dist/components/ui/sheet.d.ts.map +1 -1
  137. package/dist/components/ui/sidebar.d.ts +83 -0
  138. package/dist/components/ui/sidebar.d.ts.map +1 -1
  139. package/dist/components/ui/skeleton.d.ts +4 -0
  140. package/dist/components/ui/skeleton.d.ts.map +1 -1
  141. package/dist/components/ui/slider.d.ts +4 -0
  142. package/dist/components/ui/slider.d.ts.map +1 -1
  143. package/dist/components/ui/sonner.d.ts +6 -2
  144. package/dist/components/ui/sonner.d.ts.map +1 -1
  145. package/dist/components/ui/stepper.d.ts +8 -0
  146. package/dist/components/ui/stepper.d.ts.map +1 -1
  147. package/dist/components/ui/sticky-save-bar.d.ts +7 -0
  148. package/dist/components/ui/sticky-save-bar.d.ts.map +1 -1
  149. package/dist/components/ui/switch.d.ts +4 -0
  150. package/dist/components/ui/switch.d.ts.map +1 -1
  151. package/dist/components/ui/table.d.ts +31 -0
  152. package/dist/components/ui/table.d.ts.map +1 -1
  153. package/dist/components/ui/tabs.d.ts +16 -0
  154. package/dist/components/ui/tabs.d.ts.map +1 -1
  155. package/dist/components/ui/textarea.d.ts +4 -0
  156. package/dist/components/ui/textarea.d.ts.map +1 -1
  157. package/dist/components/ui/toggle-group.d.ts +7 -0
  158. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  159. package/dist/components/ui/toggle.d.ts +4 -0
  160. package/dist/components/ui/toggle.d.ts.map +1 -1
  161. package/dist/components/ui/tooltip.d.ts +18 -0
  162. package/dist/components/ui/tooltip.d.ts.map +1 -1
  163. package/dist/components/ui/tree.d.ts +60 -0
  164. package/dist/components/ui/tree.d.ts.map +1 -0
  165. package/dist/components/ui/user-avatar.d.ts +2 -1
  166. package/dist/components/ui/user-avatar.d.ts.map +1 -1
  167. package/dist/components/ui/viglet-assistant.d.ts +71 -28
  168. package/dist/components/ui/viglet-assistant.d.ts.map +1 -1
  169. package/dist/components/ui/viglet-avatar.d.ts +14 -12
  170. package/dist/components/ui/viglet-avatar.d.ts.map +1 -1
  171. package/dist/contexts/breadcrumb.context.d.ts +7 -0
  172. package/dist/contexts/breadcrumb.context.d.ts.map +1 -1
  173. package/dist/contexts/user.context.d.ts +8 -0
  174. package/dist/contexts/user.context.d.ts.map +1 -1
  175. package/dist/exports.json +344 -28
  176. package/dist/i18n/index.d.ts +94 -0
  177. package/dist/i18n/index.d.ts.map +1 -1
  178. package/dist/i18n/locales/en/assistant.json.d.ts +4 -1
  179. package/dist/i18n/locales/en/bento.json.d.ts +45 -1
  180. package/dist/i18n/locales/pt/assistant.json.d.ts +4 -1
  181. package/dist/i18n/locales/pt/bento.json.d.ts +45 -1
  182. package/dist/i18n.cjs +1 -1
  183. package/dist/i18n.es.js +98 -4
  184. package/dist/index.cjs +1 -1
  185. package/dist/index.es.js +2094 -913
  186. package/dist/lib/busy.d.ts +26 -0
  187. package/dist/lib/busy.d.ts.map +1 -0
  188. package/dist/lib/corner-slot.d.ts +15 -0
  189. package/dist/lib/corner-slot.d.ts.map +1 -0
  190. package/dist/{loading-provider-E3fbcekM.js → loading-provider-D-_5G-08.js} +71 -69
  191. package/dist/loading-provider-E4tIG9BM.cjs +1 -0
  192. package/dist/preset.css +7 -10
  193. package/dist/router.cjs +1 -1
  194. package/dist/router.es.js +2 -776
  195. package/dist/user.context-BXQ7lgg5.js +815 -0
  196. package/dist/user.context-D01CI8gq.cjs +1 -0
  197. package/dist/viglet-design-system.css +1 -1
  198. package/docs/BENTO-AUTHORING.md +61 -9
  199. package/package.json +13 -2
  200. package/scripts/consumer-entries.mjs +209 -0
  201. package/scripts/lib/contrast.mjs +301 -0
  202. package/scripts/mcp.mjs +300 -0
  203. package/scripts/page-lint.mjs +428 -0
  204. package/scripts/page-reference.mjs +54 -10
  205. package/dist/badge-locale-Bij94NwL.cjs +0 -1
  206. package/dist/badge-locale-Du41PpLA.js +0 -533
  207. package/dist/breadcrumb.context-BssgEydx.js +0 -926
  208. package/dist/breadcrumb.context-DLsiMS59.cjs +0 -1
  209. package/dist/components/router/blank-slate.d.ts +0 -21
  210. package/dist/components/router/blank-slate.d.ts.map +0 -1
  211. package/dist/components/router/grid.list.d.ts +0 -39
  212. package/dist/components/router/grid.list.d.ts.map +0 -1
  213. package/dist/components/router/internal.sidebar.d.ts +0 -61
  214. package/dist/components/router/internal.sidebar.d.ts.map +0 -1
  215. package/dist/components/router/nav-main.d.ts +0 -25
  216. package/dist/components/router/nav-main.d.ts.map +0 -1
  217. package/dist/components/router/nav-user.d.ts +0 -24
  218. package/dist/components/router/nav-user.d.ts.map +0 -1
  219. package/dist/components/router/page-content.d.ts +0 -12
  220. package/dist/components/router/page-content.d.ts.map +0 -1
  221. package/dist/components/router/page-header.d.ts +0 -23
  222. package/dist/components/router/page-header.d.ts.map +0 -1
  223. package/dist/components/router/page.d.ts +0 -22
  224. package/dist/components/router/page.d.ts.map +0 -1
  225. package/dist/components/router/sticky.page.header.d.ts +0 -85
  226. package/dist/components/router/sticky.page.header.d.ts.map +0 -1
  227. package/dist/components/router/sub.page.d.ts +0 -50
  228. package/dist/components/router/sub.page.d.ts.map +0 -1
  229. package/dist/components/router/sub.page.header.d.ts +0 -37
  230. package/dist/components/router/sub.page.header.d.ts.map +0 -1
  231. package/dist/lib/react-markers.d.ts +0 -17
  232. package/dist/lib/react-markers.d.ts.map +0 -1
  233. package/dist/loading-provider-B6-R2ONB.cjs +0 -1
  234. package/dist/user.context-CPmUBBLa.js +0 -522
  235. package/dist/user.context-xsJgPpcO.cjs +0 -1
@@ -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?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function l(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:c(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var u=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},d=e=>{let t=u(e);return t.charAt(0).toUpperCase()+t.slice(1)},f=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),p={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function m(e){return e!=null}function h(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??p.width,a=e.size??e.height??p.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?f(...c):f(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??p[`stroke-width`])*Number(e.size??e.width??p.width)/Number(t.size??t.width??p.width):t.strokeWidth??p[`stroke-width`];return[`svg`,{...Object.entries(p).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&m(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&m(t.width)&&{[r(`width`)]:t.width},...`height`in t&&m(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function g(e,t={}){return h(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var _=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},v=(0,n.createContext)({}),y=()=>(0,n.useContext)(v),b=(0,n.forwardRef)(({color:e,size:t,width:r,height:i,strokeWidth:a,absoluteStrokeWidth:o,nonScalingStroke:s,className:c=``,children:l,iconNode:u=[],icon:d={node:u,aliases:[],size:24},...p},m)=>{let{size:h=24,strokeWidth:v=2,absoluteStrokeWidth:b=!1,nonScalingStroke:x=!1,color:S=`currentColor`,className:C=``}=y()??{},w=!!l||_(p),[T,E,D=[]]=g(d,{color:e??S,width:r??t??h,height:i??t??h,strokeWidth:a??v,absoluteStrokeWidth:o??b,nonScalingStroke:s??x,className:f(C,c),hasA11yProp:w,attributes:p});return(0,n.createElement)(T,{ref:m,...E},[...D.map(([e,t])=>(0,n.createElement)(e,t)),...Array.isArray(l)?l:[l]])});function x(e,t=[],r=[]){let i=typeof e==`string`?l(e,t,r):e,a=(0,n.forwardRef)(({className:e,...t},r)=>(0,n.createElement)(b,{ref:r,icon:i,className:e,...t}));return i.name&&(a.displayName=d(i.name)),a}var S={name:`globe`,size:24,node:[[`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`}]]};S.node;var C=x(S),w={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};w.node;var T=x(w),E=(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 D({className:e,variant:n,asChild:a=!1,...o}){return(0,r.jsx)(a?i.Slot:`span`,{"data-slot":`badge`,className:t.t(E({variant:n}),e),...o})}function O(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 k(){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 A({...e}){return(0,r.jsx)(s.Root,{"data-slot":`dialog`,...e})}function j({...e}){return(0,r.jsx)(s.Trigger,{"data-slot":`dialog-trigger`,...e})}function M({...e}){return(0,r.jsx)(s.Portal,{"data-slot":`dialog-portal`,...e})}function N({...e}){return(0,r.jsx)(s.Close,{"data-slot":`dialog-close`,...e})}function P({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 F({className:e,children:n,showCloseButton:i=!0,...a}){let{t:c}=(0,o.useTranslation)();return(0,r.jsxs)(M,{"data-slot":`dialog-portal`,children:[(0,r.jsx)(P,{}),(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)(T,{}),(0,r.jsx)(`span`,{className:`sr-only`,children:c(`dialog.close`,{defaultValue:`Close`})})]})]})]})}function I({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 L({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 R({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 z({className:e,...n}){return(0,r.jsx)(s.Description,{"data-slot":`dialog-description`,className:t.t(`text-muted-foreground text-sm`,e),...n})}var B=(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 V({className:e,variant:n,size:a,asChild:o=!1,loading:s=!1,onClick:c,children:l,...u}){let d=O(s,u[`aria-disabled`],c),f=t.t(B({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)(k,{}),l]})})}function H({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 U({className:e,...n}){return(0,r.jsx)(`div`,{"data-slot":`skeleton`,className:t.t(`bg-accent animate-pulse rounded-md`,e),...n})}var W=({text:e,href:n,onClick:i,className:a,prefix:o})=>{if(!e)return null;let s=t.r(e);return(0,r.jsxs)(D,{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})]})},G={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`},K={UK:`GB`};function q(e){if(!e)return``;let{language:n,region:r}=t.i(e);if(r)return(K[r]||r).toLowerCase();let i=G[n];return i?i.toLowerCase():(K[n]||n).toLowerCase()}var J=({locale:e,className:i})=>{let a=q(e),[o,s]=(0,n.useState)(null),c=o===a;return(0,r.jsxs)(D,{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)(C,{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 x}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return O}});
@@ -0,0 +1,501 @@
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/toKebabCase.mjs
9
+ var h = (e) => e?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
10
+ //#endregion
11
+ //#region node_modules/lucide-react/dist/esm/shared/src/utils/toLucideIconData.mjs
12
+ function g(e, t, n = []) {
13
+ if (t == null) throw Error("[lucide]: iconNode is required when icon name is used");
14
+ return {
15
+ name: h(e),
16
+ size: 24,
17
+ node: t,
18
+ ...n.length > 0 ? { aliases: n } : {}
19
+ };
20
+ }
21
+ //#endregion
22
+ //#region node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs
23
+ var _ = (e) => {
24
+ let t = "", n = !1;
25
+ for (let r of e) {
26
+ if (r === "-" || r === "_" || r <= " ") {
27
+ n = t.length > 0;
28
+ continue;
29
+ }
30
+ t.length === 0 ? t += r.toLowerCase() : t += n ? r.toUpperCase() : r, n = !1;
31
+ }
32
+ return t;
33
+ }, v = (e) => {
34
+ let t = _(e);
35
+ return t.charAt(0).toUpperCase() + t.slice(1);
36
+ }, y = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), b = {
37
+ xmlns: "http://www.w3.org/2000/svg",
38
+ width: 24,
39
+ height: 24,
40
+ viewBox: "0 0 24 24",
41
+ fill: "none",
42
+ stroke: "currentColor",
43
+ "stroke-width": 2,
44
+ "stroke-linecap": "round",
45
+ "stroke-linejoin": "round"
46
+ };
47
+ //#endregion
48
+ //#region node_modules/lucide-react/dist/esm/shared/src/build/buildLucideIconNode.mjs
49
+ function x(e) {
50
+ return e != null;
51
+ }
52
+ function S(e, t = {}) {
53
+ let n = t.attributeNames ?? {}, r = (e) => n[e] ?? e, i = e.size ?? e.width ?? b.width, a = e.size ?? e.height ?? b.height, o = e.aliases?.filter((e) => typeof e == "string" && e.trim() !== "").map((e) => `lucide-${e}`) ?? [], s = [...e.name ? [`lucide-${e.name}`] : [], ...o], c = t.className?.split(" ").filter(Boolean) ?? [], l = t.includeDefaultClasses === !1 ? y(...c) : y("lucide", ...s, ...c), u = t.absoluteStrokeWidth ? Number(t.strokeWidth ?? b["stroke-width"]) * Number(e.size ?? e.width ?? b.width) / Number(t.size ?? t.width ?? b.width) : t.strokeWidth ?? b["stroke-width"];
54
+ return [
55
+ "svg",
56
+ {
57
+ ...Object.entries(b).reduce((e, [t, n]) => (e[r(t)] = n, e), {}),
58
+ ..."color" in t && t.color && { [r("stroke")]: t.color },
59
+ ..."size" in t && x(t.size) && {
60
+ [r("width")]: t.size,
61
+ [r("height")]: t.size
62
+ },
63
+ ..."width" in t && x(t.width) && { [r("width")]: t.width },
64
+ ..."height" in t && x(t.height) && { [r("height")]: t.height },
65
+ [r("stroke-width")]: u,
66
+ ...l && { [r("class")]: l },
67
+ [r("viewBox")]: `0 0 ${i} ${a}`,
68
+ ...t.hasA11yProp === !1 ? { [r("aria-hidden")]: "true" } : {},
69
+ ..."attributes" in t && t.attributes
70
+ },
71
+ e.node.map((e) => {
72
+ let [n, i, a] = e, o = t.nonScalingStroke ? {
73
+ [r("vector-effect")]: "non-scaling-stroke",
74
+ ...i
75
+ } : i;
76
+ return a ? [
77
+ n,
78
+ o,
79
+ a
80
+ ] : [n, o];
81
+ })
82
+ ];
83
+ }
84
+ //#endregion
85
+ //#region node_modules/lucide-react/dist/esm/shared/src/build/buildLucideIconForReact.mjs
86
+ function C(e, t = {}) {
87
+ return S(e, {
88
+ ...t,
89
+ attributeNames: {
90
+ ...t.attributeNames,
91
+ class: "className",
92
+ "stroke-width": "strokeWidth",
93
+ "stroke-linecap": "strokeLinecap",
94
+ "stroke-linejoin": "strokeLinejoin",
95
+ "vector-effect": "vectorEffect"
96
+ }
97
+ });
98
+ }
99
+ //#endregion
100
+ //#region node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs
101
+ var w = (e) => {
102
+ for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
103
+ return !1;
104
+ }, T = r({}), E = () => o(T), D = a(({ color: e, size: t, width: n, height: r, strokeWidth: a, absoluteStrokeWidth: o, nonScalingStroke: s, className: c = "", children: l, iconNode: u = [], icon: d = {
105
+ node: u,
106
+ aliases: [],
107
+ size: 24
108
+ }, ...f }, p) => {
109
+ let { size: m = 24, strokeWidth: h = 2, absoluteStrokeWidth: g = !1, nonScalingStroke: _ = !1, color: v = "currentColor", className: b = "" } = E() ?? {}, x = !!l || w(f), [S, T, D = []] = C(d, {
110
+ color: e ?? v,
111
+ width: n ?? t ?? m,
112
+ height: r ?? t ?? m,
113
+ strokeWidth: a ?? h,
114
+ absoluteStrokeWidth: o ?? g,
115
+ nonScalingStroke: s ?? _,
116
+ className: y(b, c),
117
+ hasA11yProp: x,
118
+ attributes: f
119
+ });
120
+ return i(S, {
121
+ ref: p,
122
+ ...T
123
+ }, [...D.map(([e, t]) => i(e, t)), ...Array.isArray(l) ? l : [l]]);
124
+ });
125
+ //#endregion
126
+ //#region node_modules/lucide-react/dist/esm/createLucideIcon.mjs
127
+ function O(e, t = [], n = []) {
128
+ let r = typeof e == "string" ? g(e, t, n) : e, o = a(({ className: e, ...t }, n) => i(D, {
129
+ ref: n,
130
+ icon: r,
131
+ className: e,
132
+ ...t
133
+ }));
134
+ return r.name && (o.displayName = v(r.name)), o;
135
+ }
136
+ //#endregion
137
+ //#region node_modules/lucide-react/dist/esm/icons/globe.mjs
138
+ var k = {
139
+ name: "globe",
140
+ size: 24,
141
+ node: [
142
+ ["circle", {
143
+ cx: "12",
144
+ cy: "12",
145
+ r: "10",
146
+ key: "1mglay"
147
+ }],
148
+ ["path", {
149
+ d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",
150
+ key: "13o1zl"
151
+ }],
152
+ ["path", {
153
+ d: "M2 12h20",
154
+ key: "9i4pu4"
155
+ }]
156
+ ]
157
+ };
158
+ k.node;
159
+ var A = O(k), j = {
160
+ name: "x",
161
+ size: 24,
162
+ node: [["path", {
163
+ d: "M18 6 6 18",
164
+ key: "1bl5f8"
165
+ }], ["path", {
166
+ d: "m6 6 12 12",
167
+ key: "d8bk6v"
168
+ }]]
169
+ };
170
+ j.node;
171
+ var M = O(j), N = 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", {
172
+ variants: { variant: {
173
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
174
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
175
+ 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",
176
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
177
+ } },
178
+ defaultVariants: { variant: "default" }
179
+ });
180
+ function P({ className: e, variant: t, asChild: r = !1, ...i }) {
181
+ return /* @__PURE__ */ l(r ? d : "span", {
182
+ "data-slot": "badge",
183
+ className: n(N({ variant: t }), e),
184
+ ...i
185
+ });
186
+ }
187
+ //#endregion
188
+ //#region src/lib/busy.tsx
189
+ function F(e, t, n) {
190
+ let r = e || t === !0 || t === "true";
191
+ return {
192
+ inert: r,
193
+ props: {
194
+ "aria-busy": e ? "true" : void 0,
195
+ "aria-disabled": r ? "true" : void 0,
196
+ onClick: (e) => {
197
+ if (r) {
198
+ e.preventDefault(), e.stopPropagation();
199
+ return;
200
+ }
201
+ n?.(e);
202
+ }
203
+ }
204
+ };
205
+ }
206
+ function I() {
207
+ return /* @__PURE__ */ u("svg", {
208
+ "aria-hidden": "true",
209
+ className: "size-4 animate-spin",
210
+ xmlns: "http://www.w3.org/2000/svg",
211
+ fill: "none",
212
+ viewBox: "0 0 24 24",
213
+ children: [/* @__PURE__ */ l("circle", {
214
+ className: "opacity-25",
215
+ cx: "12",
216
+ cy: "12",
217
+ r: "10",
218
+ stroke: "currentColor",
219
+ strokeWidth: "4"
220
+ }), /* @__PURE__ */ l("path", {
221
+ className: "opacity-75",
222
+ fill: "currentColor",
223
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"
224
+ })]
225
+ });
226
+ }
227
+ //#endregion
228
+ //#region src/components/ui/dialog.tsx
229
+ function L({ ...e }) {
230
+ return /* @__PURE__ */ l(m.Root, {
231
+ "data-slot": "dialog",
232
+ ...e
233
+ });
234
+ }
235
+ function ee({ ...e }) {
236
+ return /* @__PURE__ */ l(m.Trigger, {
237
+ "data-slot": "dialog-trigger",
238
+ ...e
239
+ });
240
+ }
241
+ function R({ ...e }) {
242
+ return /* @__PURE__ */ l(m.Portal, {
243
+ "data-slot": "dialog-portal",
244
+ ...e
245
+ });
246
+ }
247
+ function z({ ...e }) {
248
+ return /* @__PURE__ */ l(m.Close, {
249
+ "data-slot": "dialog-close",
250
+ ...e
251
+ });
252
+ }
253
+ function B({ className: e, ...t }) {
254
+ return /* @__PURE__ */ l(m.Overlay, {
255
+ "data-slot": "dialog-overlay",
256
+ 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),
257
+ ...t
258
+ });
259
+ }
260
+ function V({ className: e, children: t, showCloseButton: r = !0, ...i }) {
261
+ let { t: a } = p();
262
+ return /* @__PURE__ */ u(R, {
263
+ "data-slot": "dialog-portal",
264
+ children: [/* @__PURE__ */ l(B, {}), /* @__PURE__ */ u(m.Content, {
265
+ "data-slot": "dialog-content",
266
+ 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),
267
+ ...i,
268
+ children: [t, r && /* @__PURE__ */ u(m.Close, {
269
+ "data-slot": "dialog-close",
270
+ 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",
271
+ children: [/* @__PURE__ */ l(M, {}), /* @__PURE__ */ l("span", {
272
+ className: "sr-only",
273
+ children: a("dialog.close", { defaultValue: "Close" })
274
+ })]
275
+ })]
276
+ })]
277
+ });
278
+ }
279
+ function H({ className: e, ...t }) {
280
+ return /* @__PURE__ */ l("div", {
281
+ "data-slot": "dialog-header",
282
+ className: n("flex flex-col gap-2 text-center sm:text-left", e),
283
+ ...t
284
+ });
285
+ }
286
+ function U({ className: e, ...t }) {
287
+ return /* @__PURE__ */ l("div", {
288
+ "data-slot": "dialog-footer",
289
+ className: n("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", e),
290
+ ...t
291
+ });
292
+ }
293
+ function W({ className: e, ...t }) {
294
+ return /* @__PURE__ */ l(m.Title, {
295
+ "data-slot": "dialog-title",
296
+ className: n("text-lg leading-none font-semibold", e),
297
+ ...t
298
+ });
299
+ }
300
+ function G({ className: e, ...t }) {
301
+ return /* @__PURE__ */ l(m.Description, {
302
+ "data-slot": "dialog-description",
303
+ className: n("text-muted-foreground text-sm", e),
304
+ ...t
305
+ });
306
+ }
307
+ //#endregion
308
+ //#region src/components/ui/gradient-button.tsx
309
+ var K = 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]", {
310
+ variants: {
311
+ variant: {
312
+ default: [
313
+ "bg-gradient-to-r from-[var(--vg-accent-fill-from)] to-[var(--vg-accent-fill-to)] text-white",
314
+ "shadow-md shadow-[var(--vg-accent-shadow)]",
315
+ "hover:from-[var(--vg-accent-fill-from-hover)] hover:to-[var(--vg-accent-fill-to-hover)]",
316
+ "hover:shadow-lg hover:shadow-[var(--vg-accent-shadow-hover)]",
317
+ "focus-visible:ring-[var(--vg-accent-ring)]"
318
+ ].join(" "),
319
+ secondary: [
320
+ "bg-gradient-to-r from-slate-600 to-slate-700 text-white",
321
+ "shadow-md shadow-slate-500/25",
322
+ "hover:from-slate-700 hover:to-slate-800",
323
+ "hover:shadow-lg hover:shadow-slate-500/30",
324
+ "focus-visible:ring-slate-500/50",
325
+ "dark:from-slate-500 dark:to-slate-600",
326
+ "dark:shadow-slate-500/20",
327
+ "dark:hover:from-slate-600 dark:hover:to-slate-700",
328
+ "dark:hover:shadow-slate-500/25",
329
+ "dark:focus-visible:ring-slate-400/50"
330
+ ].join(" "),
331
+ destructive: [
332
+ "bg-gradient-to-r from-red-600 to-rose-600 text-white",
333
+ "shadow-md shadow-red-500/25",
334
+ "hover:from-red-700 hover:to-rose-700",
335
+ "hover:shadow-lg hover:shadow-red-500/30",
336
+ "focus-visible:ring-red-500/50",
337
+ "dark:from-red-500 dark:to-rose-500",
338
+ "dark:shadow-red-500/20",
339
+ "dark:hover:from-red-600 dark:hover:to-rose-600",
340
+ "dark:hover:shadow-red-500/25",
341
+ "dark:focus-visible:ring-red-400/50"
342
+ ].join(" "),
343
+ success: [
344
+ "bg-gradient-to-r from-emerald-600 to-teal-600 text-white",
345
+ "shadow-md shadow-emerald-500/25",
346
+ "hover:from-emerald-700 hover:to-teal-700",
347
+ "hover:shadow-lg hover:shadow-emerald-500/30",
348
+ "focus-visible:ring-emerald-500/50",
349
+ "dark:from-emerald-500 dark:to-teal-500",
350
+ "dark:shadow-emerald-500/20",
351
+ "dark:hover:from-emerald-600 dark:hover:to-teal-600",
352
+ "dark:hover:shadow-emerald-500/25",
353
+ "dark:focus-visible:ring-emerald-400/50"
354
+ ].join(" "),
355
+ outline: [
356
+ "border-2 border-[var(--vg-accent-fg)] text-[var(--vg-accent-fg)] bg-transparent",
357
+ "hover:bg-[var(--vg-accent-fill-from)] hover:text-white",
358
+ "shadow-sm hover:shadow-md hover:shadow-[var(--vg-accent-shadow)]",
359
+ "focus-visible:ring-[var(--vg-accent-ring)]"
360
+ ].join(" "),
361
+ ghost: [
362
+ "bg-transparent text-[var(--vg-accent-fg)]",
363
+ "hover:bg-[var(--vg-accent-surface)]",
364
+ "focus-visible:ring-[var(--vg-accent-ring)]"
365
+ ].join(" ")
366
+ },
367
+ size: {
368
+ default: "h-11 px-5 py-2 has-[>svg]:px-4",
369
+ sm: "h-9 rounded-md gap-1.5 px-4 has-[>svg]:px-3 text-xs",
370
+ lg: "h-12 rounded-md px-8 has-[>svg]:px-6 text-base",
371
+ icon: "size-11",
372
+ "icon-sm": "size-9",
373
+ "icon-lg": "size-12"
374
+ }
375
+ },
376
+ defaultVariants: {
377
+ variant: "default",
378
+ size: "default"
379
+ }
380
+ });
381
+ function q({ className: e, variant: t, size: r, asChild: i = !1, loading: a = !1, onClick: o, children: s, ...f }) {
382
+ let p = F(a, f["aria-disabled"], o), m = n(K({
383
+ variant: t,
384
+ size: r,
385
+ className: e
386
+ }), p.inert && (a ? "cursor-progress" : "cursor-not-allowed opacity-50"));
387
+ return /* @__PURE__ */ l(i ? d : "button", {
388
+ "data-slot": "gradient-button",
389
+ className: m,
390
+ ...f,
391
+ ...p.props,
392
+ children: i ? s : /* @__PURE__ */ u(c, { children: [a && /* @__PURE__ */ l(I, {}), s] })
393
+ });
394
+ }
395
+ //#endregion
396
+ //#region src/components/ui/input.tsx
397
+ function J({ className: e, type: t, ...r }) {
398
+ return /* @__PURE__ */ l("input", {
399
+ type: t,
400
+ "data-slot": "input",
401
+ 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),
402
+ ...r
403
+ });
404
+ }
405
+ //#endregion
406
+ //#region src/components/ui/skeleton.tsx
407
+ function Y({ className: e, ...t }) {
408
+ return /* @__PURE__ */ l("div", {
409
+ "data-slot": "skeleton",
410
+ className: n("bg-accent animate-pulse rounded-md", e),
411
+ ...t
412
+ });
413
+ }
414
+ //#endregion
415
+ //#region src/components/badge-colorful.tsx
416
+ var X = ({ text: e, href: r, onClick: i, className: a, prefix: o }) => {
417
+ if (!e) return null;
418
+ let s = t(e);
419
+ return /* @__PURE__ */ u(P, {
420
+ variant: "outline",
421
+ title: e,
422
+ onClick: () => r && i?.(r),
423
+ 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),
424
+ style: {
425
+ "--badge-bg": s.light.bg,
426
+ "--badge-text": s.light.text,
427
+ "--badge-border": s.light.border,
428
+ "--badge-dark-bg": s.dark.bg,
429
+ "--badge-dark-text": s.dark.text,
430
+ "--badge-dark-border": s.dark.border
431
+ },
432
+ children: [o, /* @__PURE__ */ l("span", { children: e })]
433
+ });
434
+ }, Z = {
435
+ AR: "SA",
436
+ BN: "BD",
437
+ CA: "ES",
438
+ CS: "CZ",
439
+ DA: "DK",
440
+ DE: "DE",
441
+ EL: "GR",
442
+ EN: "US",
443
+ EU: "ES",
444
+ FA: "IR",
445
+ FI: "FI",
446
+ FIL: "PH",
447
+ FR: "FR",
448
+ GA: "IE",
449
+ GL: "ES",
450
+ GU: "IN",
451
+ HE: "IL",
452
+ HI: "IN",
453
+ HU: "HU",
454
+ ID: "ID",
455
+ IT: "IT",
456
+ JA: "JP",
457
+ KN: "IN",
458
+ KO: "KR",
459
+ MR: "IN",
460
+ MSA: "MY",
461
+ NL: "NL",
462
+ NO: "NO",
463
+ PL: "PL",
464
+ PT: "BR",
465
+ RO: "RO",
466
+ RU: "RU",
467
+ ES: "ES",
468
+ SV: "SE",
469
+ TA: "IN",
470
+ TH: "TH",
471
+ TR: "TR",
472
+ UK: "UA",
473
+ UR: "PK",
474
+ VI: "VN",
475
+ ZH: "CN"
476
+ }, Q = { UK: "GB" };
477
+ function $(t) {
478
+ if (!t) return "";
479
+ let { language: n, region: r } = e(t);
480
+ if (r) return (Q[r] || r).toLowerCase();
481
+ let i = Z[n];
482
+ return i ? i.toLowerCase() : (Q[n] || n).toLowerCase();
483
+ }
484
+ var te = ({ locale: e, className: t }) => {
485
+ let r = $(e), [i, a] = s(null), o = i === r;
486
+ return /* @__PURE__ */ u(P, {
487
+ variant: "secondary",
488
+ className: n("font-mono gap-2 py-1 pl-1 pr-2 w-fit", t),
489
+ children: [!o && r ? /* @__PURE__ */ l("img", {
490
+ src: `https://flagcdn.com/w40/${r}.png`,
491
+ alt: r,
492
+ onError: () => a(r),
493
+ className: "w-5 h-3.5 object-cover rounded-sm shadow-sm"
494
+ }) : /* @__PURE__ */ l(A, { className: "w-3.5 h-3.5 text-muted-foreground" }), /* @__PURE__ */ l("span", {
495
+ className: "text-xs font-bold uppercase tracking-tight leading-none",
496
+ children: e
497
+ })]
498
+ });
499
+ };
500
+ //#endregion
501
+ export { O as C, M as S, ee as _, J as a, P as b, L as c, G as d, U as f, W as g, R as h, Y as i, z as l, B as m, $ as n, q as o, H as p, X as r, K as s, te as t, V as u, I as v, N as x, F 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"}
@@ -59,5 +59,17 @@ export interface BentoCommandPaletteProps {
59
59
  */
60
60
  onQueryChange?: (query: string) => void;
61
61
  }
62
+ /**
63
+ * The keyboard-first launcher over every surface the nav rail lists, plus any
64
+ * results the product supplies for the query.
65
+ *
66
+ * Built on the Radix `Dialog` primitive: a filter box and a flat result list the
67
+ * arrow keys move through. A surface with a bento route navigates inside the
68
+ * shell; one without links out, marked with an external-link glyph, so the
69
+ * palette reaches everything while a product migrates.
70
+ *
71
+ * It only renders and drives selection while `open`. `useBentoShellShortcuts`
72
+ * opens it from the keyboard and `BentoPaletteTrigger` from the header.
73
+ */
62
74
  export declare function BentoCommandPalette({ open, onOpenChange, items, group, onQueryChange, }: Readonly<BentoCommandPaletteProps>): import("react").JSX.Element;
63
75
  //# sourceMappingURL=bento-command-palette.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bento-command-palette.d.ts","sourceRoot":"","sources":["../../src/bento/bento-command-palette.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGjF,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;;;;;OAQG;IACH,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAqED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,KAAK,EACL,aAAa,GACd,EAAE,QAAQ,CAAC,wBAAwB,CAAC,+BA8MpC"}
1
+ {"version":3,"file":"bento-command-palette.d.ts","sourceRoot":"","sources":["../../src/bento/bento-command-palette.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAwC,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAGjF,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhE,kDAAkD;AAClD,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;;;;;;OAQG;IACH,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AA0DD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,KAAK,EACL,aAAa,GACd,EAAE,QAAQ,CAAC,wBAAwB,CAAC,+BA8MpC"}