@viglet/viglet-design-system 2026.3.16 → 2026.3.18
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.
- package/README.md +55 -19
- package/dist/{badge-locale-Bx7m7tg2.js → badge-locale-BwsfyQJT.js} +7 -7
- package/dist/{badge-locale-1_BmNTro.cjs → badge-locale-D4J5OlvK.cjs} +1 -1
- package/dist/bento/bento-actions-menu.d.ts +1 -1
- package/dist/bento/bento-back-to-top.d.ts +1 -1
- package/dist/bento/bento-calendar.d.ts +1 -1
- package/dist/bento/bento-calendar.d.ts.map +1 -1
- package/dist/bento/bento-change-cell.d.ts +22 -0
- package/dist/bento/bento-change-cell.d.ts.map +1 -0
- package/dist/bento/bento-change-mark.d.ts +1 -1
- package/dist/bento/bento-command-palette.d.ts +1 -1
- package/dist/bento/bento-command-palette.d.ts.map +1 -1
- package/dist/bento/bento-count-tile.d.ts +1 -1
- package/dist/bento/bento-data-table.d.ts +12 -2
- package/dist/bento/bento-data-table.d.ts.map +1 -1
- package/dist/bento/bento-diff.d.ts +1 -1
- package/dist/bento/bento-diff.d.ts.map +1 -1
- package/dist/bento/bento-empty-state.d.ts +4 -4
- package/dist/bento/bento-empty-state.d.ts.map +1 -1
- package/dist/bento/bento-entity-shell.d.ts +1 -1
- package/dist/bento/bento-entity-tile.d.ts +7 -3
- package/dist/bento/bento-entity-tile.d.ts.map +1 -1
- package/dist/bento/bento-filter-bar.d.ts +1 -1
- package/dist/bento/bento-filter-bar.d.ts.map +1 -1
- package/dist/bento/bento-form-hero.d.ts +1 -1
- package/dist/bento/bento-form-section.d.ts +8 -7
- package/dist/bento/bento-form-section.d.ts.map +1 -1
- package/dist/bento/bento-hero-icon-picker.d.ts +1 -1
- package/dist/bento/bento-hero.d.ts +3 -3
- package/dist/bento/bento-identity-cell.d.ts +22 -0
- package/dist/bento/bento-identity-cell.d.ts.map +1 -0
- package/dist/bento/bento-inline-edit.d.ts +1 -1
- package/dist/bento/bento-inline-edit.d.ts.map +1 -1
- package/dist/bento/bento-layout.d.ts +4 -2
- package/dist/bento/bento-layout.d.ts.map +1 -1
- package/dist/bento/bento-list-page.d.ts +32 -10
- package/dist/bento/bento-list-page.d.ts.map +1 -1
- package/dist/bento/bento-nav-rail.d.ts +1 -1
- package/dist/bento/bento-palette-trigger.d.ts +1 -1
- package/dist/bento/bento-panel.d.ts +8 -7
- package/dist/bento/bento-panel.d.ts.map +1 -1
- package/dist/bento/bento-save-bar.d.ts +2 -2
- package/dist/bento/bento-scroll-save-bar.d.ts +1 -1
- package/dist/bento/bento-section-chrome.d.ts +3 -3
- package/dist/bento/bento-section.d.ts +1 -1
- package/dist/bento/bento-shell.d.ts +1 -1
- package/dist/bento/bento-shell.d.ts.map +1 -1
- package/dist/bento/bento-shortcuts-dialog.d.ts +1 -1
- package/dist/bento/bento-split-page.d.ts +1 -1
- package/dist/bento/bento-status-marker.d.ts +20 -4
- package/dist/bento/bento-status-marker.d.ts.map +1 -1
- package/dist/bento/bento-tile.d.ts +1 -1
- package/dist/bento/bento-tones.d.ts +1 -1
- package/dist/bento/bento-trail.d.ts +1 -1
- package/dist/bento/bento-user-menu.d.ts +1 -1
- package/dist/bento/bento-version-rail.d.ts +1 -1
- package/dist/bento/index.d.ts +4 -2
- package/dist/bento/index.d.ts.map +1 -1
- package/dist/bento.cjs +3 -3
- package/dist/bento.css +39 -5
- package/dist/bento.es.js +1301 -1136
- package/dist/catalogue.json +155 -32
- package/dist/components/app-switcher.d.ts +1 -1
- package/dist/components/backend-status.d.ts +2 -2
- package/dist/components/language-select.d.ts +1 -1
- package/dist/components/language-switcher.d.ts +1 -1
- package/dist/components/login/login.d.ts +11 -11
- package/dist/components/mode-toggle.d.ts +2 -2
- package/dist/components/router/loading-provider.d.ts +1 -1
- package/dist/components/startup-first/startup-first.d.ts +11 -11
- package/dist/components/theme-provider.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/floating-formulas-bg.d.ts +1 -1
- package/dist/components/ui/form-actions.d.ts +1 -1
- package/dist/components/ui/glass-card.d.ts +2 -2
- package/dist/components/ui/gradient-button.d.ts.map +1 -1
- package/dist/components/ui/icon-picker-dialog.d.ts +1 -1
- package/dist/components/ui/pulse-ring.d.ts +1 -1
- package/dist/components/ui/resizable.d.ts +3 -3
- package/dist/components/ui/section-card.d.ts +1 -1
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/sonner.d.ts +1 -1
- package/dist/components/ui/stepper.d.ts +1 -1
- package/dist/components/ui/sticky-save-bar.d.ts +2 -2
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/viglet-assistant.d.ts +1 -1
- package/dist/components/ui/viglet-avatar.d.ts +1 -1
- package/dist/components/viglet-app-switcher.d.ts +1 -1
- package/dist/contexts/breadcrumb.context.d.ts +1 -1
- package/dist/exports.json +11 -1
- package/dist/floating-formulas-bg.css +3 -1
- package/dist/i18n/index.d.ts +20 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locales/en/bento.json.d.ts +10 -0
- package/dist/i18n/locales/pt/bento.json.d.ts +10 -0
- package/dist/i18n.cjs +1 -1
- package/dist/i18n.es.js +20 -0
- package/dist/index.cjs +1 -1
- package/dist/index.es.js +972 -1045
- package/dist/lib/busy.d.ts +1 -1
- package/dist/{loading-provider-D-_5G-08.js → loading-provider-Dh7jdSol.js} +2 -2
- package/dist/loading-provider-bLW_X3A1.cjs +1 -0
- package/dist/preset.css +66 -7
- package/dist/router.cjs +1 -1
- package/dist/router.es.js +1 -1
- package/dist/user.context-BqsOcMaZ.cjs +1 -0
- package/dist/{user.context-DUs2lT6D.js → user.context-vCmnGlIb.js} +335 -262
- package/dist/viglet-design-system.css +1 -1
- package/docs/BENTO-AUTHORING.md +19 -3
- package/docs/reference/README.md +5 -7
- package/package.json +1 -1
- package/dist/loading-provider-E4tIG9BM.cjs +0 -1
- package/dist/user.context-uYif5Mp2.cjs +0 -1
package/docs/BENTO-AUTHORING.md
CHANGED
|
@@ -120,16 +120,21 @@ keeps what was typed while its preview is shown. Never lay two panes out with a
|
|
|
120
120
|
your own: who scrolls, the reading width and the phone fallback are what this shape
|
|
121
121
|
decides once.
|
|
122
122
|
|
|
123
|
-
**A
|
|
123
|
+
**A box with arbitrary content** — a stats strip, a toolbar, a listing,
|
|
124
124
|
a message — is `BentoPanel`. It is the one container in this layer with **no
|
|
125
125
|
heading**, which is the point rather than an omission: those surfaces sit under a
|
|
126
126
|
hero that already names the page, and a heading on them is noise that also puts a
|
|
127
127
|
section in the document outline the page does not have. Two class slots,
|
|
128
|
-
`className` on the
|
|
128
|
+
`className` on the card and `contentClassName` on the inner wrapper,
|
|
129
129
|
and no padding of its own — a table wants `p-0` and a toolbar wants `py-2`.
|
|
130
130
|
Never hand-roll `bento-glass rounded-2xl border`: the moment two call sites pick
|
|
131
131
|
different radii the product is inconsistent for a reason no diff shows.
|
|
132
132
|
|
|
133
|
+
`bento-glass` draws a solid card on its border. It was frosted glass, and a page
|
|
134
|
+
where every panel frosts what sits behind it reads as a collage. Frost is
|
|
135
|
+
`bento-frost`, and it belongs only on a surface content scrolls under, which in
|
|
136
|
+
this layer is the save bar.
|
|
137
|
+
|
|
133
138
|
Three rules that outrank convenience:
|
|
134
139
|
|
|
135
140
|
- **A back-link eyebrow leads with the arrow, and only a back-link does.** The
|
|
@@ -193,6 +198,16 @@ No component in the layer names a colour. A tone is
|
|
|
193
198
|
you re-key the palette by redefining variables rather than forking a component.
|
|
194
199
|
The status intents (`on`, `warn`, `error`, `danger`) work the same way.
|
|
195
200
|
|
|
201
|
+
**The chip names one thing, and colour on a list is a state.** The gradient chip
|
|
202
|
+
is drawn where one thing is named: an entity's hero (`BentoHeroIconPicker`) and a
|
|
203
|
+
hub's tiles (`BentoTile`, `BentoCountTile`). A list's hero, its New tile, a
|
|
204
|
+
record's tile, a form section and an empty state put their icon in a neutral
|
|
205
|
+
well (`bento-well`) instead, and the `tone` they still accept is ignored. A
|
|
206
|
+
product area gets no tone of its own. What a row or a list tile colours is the
|
|
207
|
+
record's state, one of five, drawn by `BentoStatusMarker state="…"` or
|
|
208
|
+
`BentoEntityTile state="…"` as a dot and a word: `published`, `draft`,
|
|
209
|
+
`scheduled`, `changed` and `archived`, keyed by `--vg-bento-state-<name>`.
|
|
210
|
+
|
|
196
211
|
Accents — a focus border, the rail's active marker, a hover ring — take your
|
|
197
212
|
`--primary`. A shared component marking "you are here" in a colour of its own is
|
|
198
213
|
the clearest way to make one product look wrong.
|
|
@@ -280,7 +295,8 @@ push, and a violation fails the build.
|
|
|
280
295
|
## 7. Responsive
|
|
281
296
|
|
|
282
297
|
- The grid is `grid-cols-2 md:grid-cols-4 lg:grid-cols-6` with `col-span-2`
|
|
283
|
-
tiles and `row-span-2` for a
|
|
298
|
+
tiles and `row-span-2` for one a reader chose to feature. No tile is featured by
|
|
299
|
+
default: being first in a list says nothing about a record. **Keep spans in multiples of two**
|
|
284
300
|
so tiles reflow cleanly at every breakpoint — this is what keeps two consoles'
|
|
285
301
|
grids aligned.
|
|
286
302
|
- The nav rail is desktop-only. `BentoShell` reserves its gutter; a shell that is
|
package/docs/reference/README.md
CHANGED
|
@@ -24,13 +24,11 @@ prose. Where the two disagree, the contract is right and an artboard is stale.
|
|
|
24
24
|
|
|
25
25
|
`canvas.json` places them and names the two pages.
|
|
26
26
|
|
|
27
|
-
**The shapes
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
area. Until the components follow, a page built today still renders the glass and
|
|
33
|
-
the chips; the rule above, that the contract wins, applies again once they do.
|
|
27
|
+
**The shapes draw the quieter surface, and the components now follow it.** Panels are
|
|
28
|
+
solid cards, not frosted glass; frost stays on the save bar, which content scrolls under.
|
|
29
|
+
The gradient chip names a thing, so it stays in an entity hero and a hub's tiles and
|
|
30
|
+
leaves rows, lists and form sections. Colour marks state (published, draft, scheduled,
|
|
31
|
+
changed, archived) as a dot and a word, not an area.
|
|
34
32
|
|
|
35
33
|
## Two rules about the content
|
|
36
34
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-Oagwe_oa.cjs"),n=require("./badge-locale-1_BmNTro.cjs");let r=require("react");r=e.t(r,1);let i=require("react/jsx-runtime"),a=require("react-i18next"),o=require("@tabler/icons-react"),s=require("react-router-dom");var c=({feature:e,name:t,onDelete:c,open:l,setOpen:u,trigger:d,blockedBy:f,title:p,description:m,confirmLabel:h})=>{let g=f&&f.length>0,_=(0,s.useNavigate)(),{t:v}=(0,a.useTranslation)(),[y,b]=(0,r.useState)(``),x=y===t;function S(e){u(e),e||b(``)}return(0,i.jsxs)(n.c,{open:l,onOpenChange:S,children:[d!==null&&(0,i.jsx)(n._,{asChild:!0,children:d??(0,i.jsx)(n.o,{variant:`ghost`,size:`icon-sm`,children:(0,i.jsx)(o.IconTrash,{className:`size-5!`})})}),(0,i.jsx)(n.u,{className:`sm:max-w-md`,children:g?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(`div`,{className:`mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-amber-500/10 ring-1 ring-amber-500/20 mb-2`,children:(0,i.jsx)(o.IconAlertTriangle,{className:`size-6 text-amber-500`})}),(0,i.jsx)(n.g,{className:`text-center`,children:v(`dialog.cannotDelete`,{feature:e})}),(0,i.jsx)(n.d,{className:`text-center`,children:v(`dialog.inUse`,{name:t})})]}),(0,i.jsxs)(`div`,{className:`space-y-3`,children:[(0,i.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:v(`dialog.dependingSites`,{feature:e})}),(0,i.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:f.map(e=>{let t=e.language?n.n(e.language):void 0;return(0,i.jsx)(n.r,{text:e.name,href:e.href,onClick:e=>{u(!1),e&&_(e)},prefix:t?(0,i.jsx)(`img`,{src:`https://flagcdn.com/w40/${t}.png`,alt:e.language,className:`w-4 h-3 object-cover rounded-sm`}):void 0},e.id)})}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:v(`dialog.removeDependencies`,{feature:e})})]}),(0,i.jsx)(n.f,{children:(0,i.jsx)(n.o,{onClick:()=>u(!1),variant:`outline`,className:`w-full`,children:v(`dialog.understood`)})})]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(`div`,{className:`mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-red-500/10 ring-1 ring-red-500/20 mb-2`,children:(0,i.jsx)(o.IconTrash,{className:`size-6 text-red-500`})}),(0,i.jsx)(n.g,{className:`text-center`,children:p??v(`dialog.deleteFeature`,{feature:e})}),(0,i.jsx)(n.d,{className:`text-center`,children:m??v(`dialog.permanentDelete`,{name:t})})]}),(0,i.jsxs)(`div`,{className:`space-y-2`,children:[(0,i.jsxs)(`label`,{className:`text-sm text-muted-foreground`,children:[v(`dialog.typeToConfirm`),` `,(0,i.jsx)(`span`,{className:`font-mono font-semibold text-foreground bg-muted px-1.5 py-0.5 rounded`,children:t}),` `,v(`dialog.toConfirm`)]}),(0,i.jsx)(n.a,{value:y,onChange:e=>b(e.target.value),placeholder:t,className:`font-mono text-sm`,autoFocus:!0})]}),(0,i.jsxs)(n.f,{className:`flex-col gap-2 sm:flex-col`,children:[(0,i.jsxs)(n.o,{onClick:c,variant:`destructive`,disabled:!x,className:`w-full`,children:[(0,i.jsx)(o.IconTrash,{className:`size-4`}),h??v(`dialog.deleteFeature`,{feature:e})]}),(0,i.jsx)(n.o,{onClick:()=>S(!1),variant:`ghost`,className:`w-full`,children:v(`common.cancel`)})]})]})})]})};function l({className:e,variant:r,size:a,to:o,onClick:c,children:l}){let u=t.t(n.s({variant:r,size:a,className:e}));return(0,i.jsx)(s.NavLink,{to:o,"data-slot":`gradient-button`,className:u,onClick:e=>{let t=typeof o==`string`?o:o.pathname;t&&globalThis.location.pathname===t&&globalThis.location.reload(),c&&c(e)},children:l})}function u({title:e,description:t,buttonText:n,urlNew:r}){return(0,i.jsx)(`div`,{className:`flex items-center justify-center px-6 py-16`,children:(0,i.jsx)(`div`,{className:`relative w-full max-w-md overflow-hidden rounded-2xl border border-border/50 bg-card/80 backdrop-blur-sm shadow-xl`,children:(0,i.jsxs)(`div`,{className:`relative flex flex-col items-center text-center px-8 py-12 space-y-6`,children:[(0,i.jsxs)(`div`,{className:`relative`,children:[(0,i.jsx)(`div`,{className:`absolute inset-0 rounded-2xl bg-gradient-to-br from-[var(--vg-accent-surface-strong)] to-[var(--vg-accent-surface-strong)] blur-xl animate-pulse`}),(0,i.jsx)(`div`,{className:`relative inline-flex h-16 w-16 items-center justify-center rounded-2xl bg-gradient-to-br vg-accent-solid shadow-lg shadow-[var(--vg-accent-line)] ring-4 ring-[var(--vg-accent-surface)]`,children:(0,i.jsx)(o.IconAlertTriangleFilled,{className:`text-white`,size:30})})]}),(0,i.jsxs)(`div`,{className:`space-y-2`,children:[(0,i.jsx)(`h2`,{className:`text-xl font-semibold tracking-tight`,children:e}),(0,i.jsx)(`p`,{className:`text-sm text-muted-foreground leading-relaxed max-w-xs mx-auto`,children:t})]}),r&&(0,i.jsx)(l,{size:`lg`,to:r,children:n})]})})})}var d=({checkIsNotUndefined:e,error:t,tryAgainUrl:r,children:o})=>{let{t:s}=(0,a.useTranslation)();return t?(0,i.jsx)(u,{title:s(`common.errorLoading`),description:t,buttonText:s(`common.tryAgain`),urlNew:r}):e===void 0&&!t?(0,i.jsxs)(`div`,{className:`space-y-6 py-8 px-6 animate-pulse`,children:[(0,i.jsx)(n.i,{className:`h-8 w-1/3 rounded-md`}),(0,i.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6`,children:[`skeleton-1`,`skeleton-2`,`skeleton-3`].map(e=>(0,i.jsxs)(`div`,{className:`space-y-3 p-4 border rounded-xl bg-slate-50/50 dark:bg-slate-900/20`,children:[(0,i.jsx)(n.i,{className:`h-5 w-2/3`}),(0,i.jsx)(n.i,{className:`h-12 w-full`}),(0,i.jsx)(n.i,{className:`h-4 w-5/6`})]},e))}),(0,i.jsx)(`div`,{className:`pt-4`,children:(0,i.jsx)(n.i,{className:`h-10 w-32 rounded-lg`})})]}):(0,i.jsx)(i.Fragment,{children:o})};Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return d}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-Oagwe_oa.cjs"),n=require("./badge-locale-1_BmNTro.cjs");let r=require("react");r=e.t(r,1);let i=require("react/jsx-runtime"),a=require("@radix-ui/react-avatar");a=e.t(a,1);let o=require("@radix-ui/react-slot"),s=require("class-variance-authority"),c=require("react-i18next"),l=require("@radix-ui/react-checkbox");l=e.t(l,1);let u=require("@radix-ui/react-dropdown-menu");u=e.t(u,1);let d=require("@tabler/icons-react"),f=require("@iconify/react"),p=require("radix-ui"),m=require("react-resizable-panels"),h=require("@radix-ui/react-tooltip");h=e.t(h,1);let g=require("next-themes"),_=require("sonner"),v=require("@radix-ui/react-tabs");v=e.t(v,1);var y={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]};y.node;var b=n.C(y),x={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};x.node;var S=n.C(x),C={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};C.node;var w=n.C(C),T={name:`circle`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]};T.node;var E=n.C(T),D={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};D.node;var O=n.C(D),k={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};k.node;var A=n.C(k),j={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};j.node;var M=n.C(j),N={name:`octagon-x`,size:24,node:[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-octagon`]};N.node;var P=n.C(N),F={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};F.node;var ee=n.C(F),I=(0,s.cva)(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});function te({className:e,variant:r,size:a,asChild:s=!1,loading:c=!1,onClick:l,children:u,...d}){let f=s?o.Slot:`button`,p=n.y(c,d[`aria-disabled`],l);return(0,i.jsx)(f,{"data-slot":`button`,className:t.t(I({variant:r,size:a,className:e}),p.inert&&(c?`cursor-progress`:`cursor-not-allowed opacity-50`)),...d,...p.props,children:s?u:(0,i.jsxs)(i.Fragment,{children:[c&&(0,i.jsx)(n.v,{}),u]})})}function ne({className:e,...n}){return(0,i.jsx)(l.Root,{"data-slot":`checkbox`,className:t.t(`peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...n,children:(0,i.jsx)(l.Indicator,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none`,children:(0,i.jsx)(b,{className:`size-3.5`})})})}function re({...e}){return(0,i.jsx)(u.Root,{"data-slot":`dropdown-menu`,...e})}function ie({...e}){return(0,i.jsx)(u.Portal,{"data-slot":`dropdown-menu-portal`,...e})}function ae({...e}){return(0,i.jsx)(u.Trigger,{"data-slot":`dropdown-menu-trigger`,...e})}function oe({className:e,sideOffset:n=4,...r}){return(0,i.jsx)(u.Portal,{children:(0,i.jsx)(u.Content,{"data-slot":`dropdown-menu-content`,sideOffset:n,className:t.t(`bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md`,e),...r})})}function se({...e}){return(0,i.jsx)(u.Group,{"data-slot":`dropdown-menu-group`,...e})}function ce({className:e,inset:n,variant:r=`default`,...a}){return(0,i.jsx)(u.Item,{"data-slot":`dropdown-menu-item`,"data-inset":n,"data-variant":r,className:t.t(`focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...a})}function le({className:e,children:n,checked:r,...a}){return(0,i.jsxs)(u.CheckboxItem,{"data-slot":`dropdown-menu-checkbox-item`,className:t.t(`focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:r,...a,children:[(0,i.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,i.jsx)(u.ItemIndicator,{children:(0,i.jsx)(b,{className:`size-4`})})}),n]})}function ue({...e}){return(0,i.jsx)(u.RadioGroup,{"data-slot":`dropdown-menu-radio-group`,...e})}function de({className:e,children:n,...r}){return(0,i.jsxs)(u.RadioItem,{"data-slot":`dropdown-menu-radio-item`,className:t.t(`focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r,children:[(0,i.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,i.jsx)(u.ItemIndicator,{children:(0,i.jsx)(E,{className:`size-2 fill-current`})})}),n]})}function fe({className:e,inset:n,...r}){return(0,i.jsx)(u.Label,{"data-slot":`dropdown-menu-label`,"data-inset":n,className:t.t(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...r})}function pe({className:e,...n}){return(0,i.jsx)(u.Separator,{"data-slot":`dropdown-menu-separator`,className:t.t(`bg-border -mx-1 my-1 h-px`,e),...n})}function L({className:e,...n}){return(0,i.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:t.t(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...n})}function R({...e}){return(0,i.jsx)(u.Sub,{"data-slot":`dropdown-menu-sub`,...e})}function z({className:e,inset:n,children:r,...a}){return(0,i.jsxs)(u.SubTrigger,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":n,className:t.t(`focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...a,children:[r,(0,i.jsx)(S,{className:`ml-auto size-4`})]})}function B({className:e,...n}){return(0,i.jsx)(u.SubContent,{"data-slot":`dropdown-menu-sub-content`,className:t.t(`bg-popover text-popover-foreground 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 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg`,e),...n})}var V=[`lucide`,`tabler`,`mdi`,`ph`,`solar`,`heroicons`],me=V.join(`,`);async function H(e,t,n){try{let r=await fetch(`https://api.iconify.design/search?query=${encodeURIComponent(e)}&limit=${t}&prefixes=${me}`,{signal:n});if(r.ok)return(await r.json()).icons??[]}catch{}return[]}function he({open:e,onOpenChange:t,value:a,onSelect:o,onClear:s,title:l,description:u,suggestKeywords:p}){let{t:m}=(0,c.useTranslation)(),[h,g]=(0,r.useState)(``),[_,v]=(0,r.useState)([]),[y,b]=(0,r.useState)(!1),x=(0,r.useRef)(null),[S,C]=(0,r.useState)(!1),[w,T]=(0,r.useState)([]),E=(0,r.useRef)(0),[D,O]=(0,r.useState)(null),k=(0,r.useCallback)(async(e,t)=>{let n=++E.current,r=()=>n===E.current&&!t.aborted;if(!e.trim()){v([]);return}b(!0);try{let n=await H(e,60,t);r()&&v(n)}catch{r()&&v([])}finally{r()&&b(!1)}},[]);(0,r.useEffect)(()=>{let e=new AbortController;return x.current&&clearTimeout(x.current),x.current=setTimeout(()=>k(h,e.signal),350),()=>{x.current&&clearTimeout(x.current),e.abort()}},[h,k]);let A=(0,r.useRef)(null);(0,r.useEffect)(()=>()=>A.current?.abort(),[]);function j(e){o(e),t(!1),g(``),v([]),T([]),O(null)}async function M(){if(!p||S)return;let e=new AbortController;A.current=e,C(!0),T([]),O(null);try{let t=(await p({title:l,description:u})).filter(e=>typeof e==`string`&&e.trim()).slice(0,5),n=[];for(let r of t){if(e.signal.aborted)return;n.push({keyword:r.trim(),icons:await H(r.trim(),30,e.signal)})}e.signal.aborted||T(n)}catch{e.signal.aborted||T([])}finally{e.signal.aborted||C(!1)}}let N=D?w.find(e=>e.keyword===D)?.icons??[]:w.flatMap(e=>e.icons.slice(0,3)),P=!!p&&!!(l?.trim()??u?.trim());return(0,i.jsx)(n.c,{open:e,onOpenChange:t,children:(0,i.jsxs)(n.u,{className:`flex max-h-[80vh] flex-col sm:max-w-lg`,children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.g,{children:m(`forms.iconPicker.chooseAnIcon`,{defaultValue:`Choose an icon`})})}),(0,i.jsxs)(`div`,{className:`flex gap-2`,children:[(0,i.jsxs)(`div`,{className:`relative flex-1`,children:[(0,i.jsx)(d.IconSearch,{className:`absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,i.jsx)(n.a,{value:h,onChange:e=>g(e.target.value),placeholder:m(`forms.iconPicker.searchIcons`,{defaultValue:`Search icons`}),className:`pl-9`,autoFocus:!0})]}),P&&(0,i.jsxs)(n.o,{type:`button`,size:`sm`,variant:`outline`,onClick:M,disabled:S,className:`shrink-0 gap-1.5`,children:[S?(0,i.jsx)(d.IconLoader2,{className:`size-4 animate-spin`}):(0,i.jsx)(d.IconSparkles,{className:`size-4`}),m(`forms.iconPicker.aiSuggest`,{defaultValue:`Suggest`})]})]}),w.length>0&&(0,i.jsxs)(`div`,{className:`rounded-lg border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] p-3`,children:[(0,i.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 text-xs font-medium vg-accent-text`,children:[(0,i.jsx)(d.IconSparkles,{className:`size-3.5`}),m(`forms.iconPicker.aiSuggestions`,{defaultValue:`Suggestions`})]}),(0,i.jsx)(`div`,{className:`mb-3 flex flex-wrap gap-1.5`,children:w.map(e=>(0,i.jsxs)(`button`,{type:`button`,onClick:()=>O(D===e.keyword?null:e.keyword),className:`cursor-pointer rounded-full px-3 py-1 text-xs font-medium transition-all ${D===e.keyword?`vg-accent-solid text-white`:`bg-[var(--vg-accent-surface)] text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface-strong)]`}`,children:[e.keyword,(0,i.jsx)(`span`,{className:`ml-1 opacity-60`,children:e.icons.length})]},e.keyword))}),(0,i.jsx)(`div`,{className:`flex max-h-60 flex-wrap gap-2 overflow-y-auto`,children:N.map(e=>(0,i.jsxs)(`button`,{type:`button`,onClick:()=>j(e),className:`flex cursor-pointer flex-col items-center gap-1 rounded-lg p-2 transition-all hover:bg-[var(--vg-accent-surface)] ${a===e?`border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface-strong)] vg-accent-text`:`border border-[var(--vg-accent-line)]`}`,title:e,children:[(0,i.jsx)(f.Icon,{icon:e,className:`size-7`}),(0,i.jsx)(`span`,{className:`max-w-[80px] truncate text-center text-[9px] leading-tight text-muted-foreground`,children:e.split(`:`)[1]??e})]},e))})]}),(0,i.jsxs)(`div`,{className:`max-h-[400px] min-h-[200px] flex-1 overflow-y-auto`,children:[y&&(0,i.jsx)(`div`,{className:`flex h-32 items-center justify-center text-sm text-muted-foreground`,children:m(`forms.iconPicker.searching`,{defaultValue:`Searching…`})}),!y&&h&&_.length===0&&(0,i.jsx)(`div`,{className:`flex h-32 items-center justify-center text-sm text-muted-foreground`,children:m(`forms.iconPicker.noIconsFound`,{query:h,defaultValue:`No icons found for “{{query}}”`})}),!y&&!h&&_.length===0&&w.length===0&&(0,i.jsxs)(`div`,{className:`flex h-32 flex-col items-center justify-center gap-2 px-4 text-center text-sm text-muted-foreground`,children:[(0,i.jsx)(`span`,{children:m(`forms.iconPicker.typeToSearch`,{count:V.length,defaultValue:`Type to search {{count}} icon collections`})}),P&&(0,i.jsx)(`span`,{className:`text-xs leading-relaxed`,children:m(`forms.iconPicker.orClickAi`,{defaultValue:`…or let the title and description suggest some`})})]}),_.length>0&&(0,i.jsx)(`div`,{className:`grid grid-cols-6 gap-1.5 p-1`,children:_.map(e=>(0,i.jsxs)(`button`,{type:`button`,onClick:()=>j(e),className:`flex cursor-pointer flex-col items-center justify-center gap-1 rounded-lg p-2 transition-all hover:bg-muted ${a===e?`border border-[var(--vg-accent-line)] bg-[var(--vg-accent-surface)] vg-accent-text`:`border border-transparent hover:border-border`}`,title:e,children:[(0,i.jsx)(f.Icon,{icon:e,className:`size-6`}),(0,i.jsx)(`span`,{className:`w-full truncate text-center text-[9px] leading-tight text-muted-foreground`,children:e.split(`:`)[1]??e})]},e))})]}),a&&(0,i.jsxs)(`div`,{className:`flex items-center justify-between border-t pt-2`,children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,i.jsx)(f.Icon,{icon:a,className:`size-5`}),(0,i.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:a})]}),(0,i.jsxs)(`div`,{className:`flex gap-2`,children:[s&&(0,i.jsxs)(n.o,{size:`sm`,type:`button`,variant:`outline`,onClick:()=>{s(),t(!1)},children:[(0,i.jsx)(d.IconTrash,{className:`size-4`}),m(`forms.common.remove`,{defaultValue:`Remove`})]}),(0,i.jsx)(n.o,{size:`sm`,type:`button`,onClick:()=>t(!1),children:m(`forms.iconPicker.done`,{defaultValue:`Done`})})]})]})]})})}function ge({...e}){return(0,i.jsx)(p.Popover.Root,{"data-slot":`popover`,...e})}function _e({...e}){return(0,i.jsx)(p.Popover.Trigger,{"data-slot":`popover-trigger`,...e})}function ve({className:e,align:n=`center`,sideOffset:r=4,...a}){return(0,i.jsx)(p.Popover.Portal,{children:(0,i.jsx)(p.Popover.Content,{"data-slot":`popover-content`,align:n,sideOffset:r,className:t.t(`z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...a})})}function ye({...e}){return(0,i.jsx)(p.Popover.Anchor,{"data-slot":`popover-anchor`,...e})}function be({className:e,...n}){return(0,i.jsx)(`div`,{"data-slot":`popover-header`,className:t.t(`flex flex-col gap-1 text-sm`,e),...n})}function xe({className:e,...n}){return(0,i.jsx)(`div`,{"data-slot":`popover-title`,className:t.t(`font-medium`,e),...n})}function Se({className:e,...n}){return(0,i.jsx)(`p`,{"data-slot":`popover-description`,className:t.t(`text-muted-foreground`,e),...n})}function Ce({className:e,...n}){return(0,i.jsx)(m.Group,{"data-slot":`resizable-panel-group`,className:t.t(`flex h-full w-full`,e),...n})}function we({overflowHidden:e,className:n,...r}){return(0,i.jsx)(m.Panel,{"data-slot":`resizable-panel`,className:t.t(e&&`[&>div]:overflow-hidden!`,n),style:e?{overflow:`hidden`}:void 0,...r})}function Te({withHandle:e,className:n,...r}){return(0,i.jsx)(m.Separator,{"data-slot":`resizable-handle`,className:t.t(`bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:-left-2 after:-right-2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden`,`[&[aria-orientation=horizontal]]:h-px [&[aria-orientation=horizontal]]:w-full [&[aria-orientation=horizontal]]:after:inset-x-0 [&[aria-orientation=horizontal]]:after:-top-2 [&[aria-orientation=horizontal]]:after:-bottom-2 [&[aria-orientation=horizontal]>div]:rotate-90`,n),...r,children:e&&(0,i.jsx)(`div`,{className:`bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border`,children:(0,i.jsx)(O,{className:`size-2.5`})})})}var U={blue:{color:`text-blue-600 dark:text-blue-400`,bg:`from-blue-500/10 to-indigo-500/10 dark:from-blue-500/20 dark:to-indigo-500/20`,ring:`ring-blue-500/10 dark:ring-blue-400/10`},violet:{color:`text-violet-600 dark:text-violet-400`,bg:`from-violet-500/10 to-purple-500/10 dark:from-violet-500/20 dark:to-purple-500/20`,ring:`ring-violet-500/10 dark:ring-violet-400/10`},emerald:{color:`text-emerald-600 dark:text-emerald-400`,bg:`from-emerald-500/10 to-teal-500/10 dark:from-emerald-500/20 dark:to-teal-500/20`,ring:`ring-emerald-500/10 dark:ring-emerald-400/10`},amber:{color:`text-amber-600 dark:text-amber-400`,bg:`from-amber-500/10 to-orange-500/10 dark:from-amber-500/20 dark:to-orange-500/20`,ring:`ring-amber-500/10 dark:ring-amber-400/10`},rose:{color:`text-rose-600 dark:text-rose-400`,bg:`from-rose-500/10 to-pink-500/10 dark:from-rose-500/20 dark:to-pink-500/20`,ring:`ring-rose-500/10 dark:ring-rose-400/10`},cyan:{color:`text-cyan-600 dark:text-cyan-400`,bg:`from-cyan-500/10 to-sky-500/10 dark:from-cyan-500/20 dark:to-sky-500/20`,ring:`ring-cyan-500/10 dark:ring-cyan-400/10`},orange:{color:`text-orange-600 dark:text-orange-400`,bg:`from-orange-500/10 to-amber-500/10 dark:from-orange-500/20 dark:to-amber-500/20`,ring:`ring-orange-500/10 dark:ring-orange-400/10`},slate:{color:`text-slate-600 dark:text-slate-400`,bg:`from-slate-500/10 to-gray-500/10 dark:from-slate-500/20 dark:to-gray-500/20`,ring:`ring-slate-500/10 dark:ring-slate-400/10`}},W=(0,r.createContext)({open:!0,toggle:()=>{},variant:`blue`});function G({variant:e=`blue`,defaultOpen:n=!0,children:a,className:o}){let[s,c]=(0,r.useState)(n);return(0,i.jsx)(W.Provider,{value:{open:s,toggle:()=>c(e=>!e),variant:e},children:(0,i.jsx)(`div`,{className:t.t(`rounded-xl border overflow-hidden`,o),children:a})})}function Ee({icon:e,title:n,description:a,className:o}){let{open:s,toggle:c,variant:l}=(0,r.useContext)(W),u=U[l];return(0,i.jsxs)(`button`,{type:`button`,onClick:c,className:t.t(`flex w-full items-center gap-3 px-5 py-4 bg-muted/40 border-b cursor-pointer hover:bg-muted/60 transition-colors`,o),children:[(0,i.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${u.bg} ring-1 ${u.ring}`,children:(0,i.jsx)(e,{className:`size-4 ${u.color}`})}),(0,i.jsxs)(`div`,{className:`min-w-0 text-left`,children:[(0,i.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:n}),a&&(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]}),(0,i.jsx)(d.IconChevronDown,{className:t.t(`ml-auto size-4 text-muted-foreground shrink-0 transition-transform duration-200`,s&&`rotate-180`)})]})}function De({icon:e,title:n,description:a,className:o}){let{variant:s}=(0,r.useContext)(W),c=U[s];return(0,i.jsxs)(`div`,{className:t.t(`flex items-center gap-3 px-5 py-4 bg-muted/40 border-b`,o),children:[(0,i.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-linear-to-br ${c.bg} ring-1 ${c.ring}`,children:(0,i.jsx)(e,{className:`size-4 ${c.color}`})}),(0,i.jsxs)(`div`,{className:`min-w-0`,children:[(0,i.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:n}),a&&(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a})]})]})}function Oe({children:e,className:n}){let{open:a}=(0,r.useContext)(W);return a?(0,i.jsx)(`div`,{className:t.t(`p-5 space-y-6`,n),children:e}):null}G.Header=Ee,G.StaticHeader=De,G.Content=Oe;var K=r.createContext(!1);function q({delayDuration:e=0,...t}){return(0,i.jsx)(K,{value:!0,children:(0,i.jsx)(h.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...t})})}function ke({...e}){let t=r.useContext(K),n=(0,i.jsx)(h.Root,{"data-slot":`tooltip`,...e});return t?n:(0,i.jsx)(q,{children:n})}function Ae({...e}){return(0,i.jsx)(h.Trigger,{"data-slot":`tooltip-trigger`,...e})}function je({className:e,sideOffset:n=0,children:r,...a}){return(0,i.jsx)(h.Portal,{children:(0,i.jsxs)(h.Content,{"data-slot":`tooltip-content`,sideOffset:n,className:t.t(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance`,e),...a,children:[r,(0,i.jsx)(h.Arrow,{className:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]})})}var Me=`(max-width: 767px)`;function J(){return window.matchMedia(Me)}function Ne(e){let t=J();return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)}function Pe(){return r.useSyncExternalStore(Ne,()=>J().matches,()=>!1)}var Fe=({...e})=>{let{theme:t=`system`}=(0,g.useTheme)(),{t:n}=(0,c.useTranslation)();return(0,i.jsx)(_.Toaster,{theme:t,className:`toaster group`,containerAriaLabel:n(`common.notifications`,{defaultValue:`Notifications`}),icons:{success:(0,i.jsx)(w,{className:`size-4`}),info:(0,i.jsx)(A,{className:`size-4`}),warning:(0,i.jsx)(ee,{className:`size-4`}),error:(0,i.jsx)(P,{className:`size-4`}),loading:(0,i.jsx)(M,{className:`size-4 animate-spin`})},style:{"--normal-bg":`var(--vg-popover)`,"--normal-text":`var(--vg-popover-foreground)`,"--normal-border":`var(--vg-border)`,"--border-radius":`var(--vg-radius)`},...e})};function Ie({className:e,...n}){return(0,i.jsx)(v.Root,{"data-slot":`tabs`,className:t.t(`flex flex-col gap-2`,e),...n})}function Le({className:e,...n}){return(0,i.jsx)(v.List,{"data-slot":`tabs-list`,className:t.t(`bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]`,e),...n})}function Re({className:e,...n}){return(0,i.jsx)(v.Trigger,{"data-slot":`tabs-trigger`,className:t.t(`data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...n})}function Y({className:e,...n}){return(0,i.jsx)(v.Content,{"data-slot":`tabs-content`,className:t.t(`flex-1 outline-none`,e),...n})}function X({givenName:e,familyName:t,name:n}){let r=(e??``).trim(),i=(t??``).trim();if(r||i){let e=r?r[0]:``,t=i.split(/\s+/).filter(Boolean),n=`${e}${t.length>0?t[t.length-1][0]:``}`.toUpperCase();if(n)return n}let a=(n??``).trim();if(a){let e=a.split(/\s+/).filter(Boolean);return e.length===1?e[0][0].toUpperCase():`${e[0][0]}${e[e.length-1][0]}`.toUpperCase()}return`U`}function ze({className:e,givenName:n,familyName:r,name:o,src:s,alt:c,children:l,...u}){let d=X({givenName:n,familyName:r,name:o}),f=c??o??[n,r].filter(Boolean).join(` `);return(0,i.jsxs)(a.Root,{"data-slot":`user-avatar`,className:t.t(`relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full size-8`,`bg-muted text-muted-foreground text-xs font-semibold`,`ring-1 ring-border`,e),...u,children:[s&&(0,i.jsx)(a.Image,{"data-slot":`user-avatar-image`,src:s,alt:f,className:`aspect-square size-full object-cover`}),(0,i.jsx)(a.Fallback,{"data-slot":`user-avatar-fallback`,className:`flex size-full items-center justify-center`,delayMs:s?600:0,children:l??d})]})}var Z=(0,r.createContext)(!1);function Be(){return(0,r.useContext)(Z)}var Q=(0,r.createContext)(`corner`);function Ve(){return(0,r.useContext)(Q)}var $=r.default.createContext(null);function He({children:e,fetchUser:t}){let[n,a]=r.default.useState({}),[o,s]=r.default.useState(`loading`),[c,l]=r.default.useState(null),u=r.default.useRef(0),d=r.default.useCallback(()=>{let e=++u.current;t().then(t=>{e===u.current&&(a(t),l(null),s(`ready`))},t=>{e===u.current&&(l(t),s(`failed`))})},[t]);r.default.useEffect(()=>{d()},[d]);let f=r.default.useMemo(()=>({user:n,refreshUser:d,status:o,error:c}),[n,d,o,c]);return(0,i.jsx)($,{value:f,children:e})}function Ue(){let e=r.default.useContext($);if(!e)throw Error(`useCurrentUser must be used within UserProvider`);return e}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return ue}});
|