@viglet/viglet-design-system 2026.3.9 → 2026.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +528 -44
  2. package/consumers.json +186 -0
  3. package/dist/badge-locale-CJkHDlPg.cjs +1 -0
  4. package/dist/badge-locale-DxDp8Q3S.js +397 -0
  5. package/dist/bento/bento-actions-menu.d.ts +8 -0
  6. package/dist/bento/bento-actions-menu.d.ts.map +1 -1
  7. package/dist/bento/bento-back-to-top.d.ts +9 -1
  8. package/dist/bento/bento-back-to-top.d.ts.map +1 -1
  9. package/dist/bento/bento-command-palette.d.ts +56 -9
  10. package/dist/bento/bento-command-palette.d.ts.map +1 -1
  11. package/dist/bento/bento-data-table.d.ts +81 -0
  12. package/dist/bento/bento-data-table.d.ts.map +1 -0
  13. package/dist/bento/bento-diff.d.ts +41 -0
  14. package/dist/bento/bento-diff.d.ts.map +1 -0
  15. package/dist/bento/bento-empty-state.d.ts +8 -1
  16. package/dist/bento/bento-empty-state.d.ts.map +1 -1
  17. package/dist/bento/bento-entity-shell.d.ts.map +1 -1
  18. package/dist/bento/bento-filter-bar.d.ts +60 -0
  19. package/dist/bento/bento-filter-bar.d.ts.map +1 -0
  20. package/dist/bento/bento-form-section.d.ts +14 -1
  21. package/dist/bento/bento-form-section.d.ts.map +1 -1
  22. package/dist/bento/bento-inline-edit.d.ts.map +1 -1
  23. package/dist/bento/bento-nav-rail.d.ts +13 -13
  24. package/dist/bento/bento-nav-rail.d.ts.map +1 -1
  25. package/dist/bento/bento-nav.d.ts +10 -2
  26. package/dist/bento/bento-nav.d.ts.map +1 -1
  27. package/dist/bento/bento-palette-trigger.d.ts +18 -0
  28. package/dist/bento/bento-palette-trigger.d.ts.map +1 -0
  29. package/dist/bento/bento-section-chrome.d.ts +19 -39
  30. package/dist/bento/bento-section-chrome.d.ts.map +1 -1
  31. package/dist/bento/bento-shell-shortcuts.d.ts +67 -0
  32. package/dist/bento/bento-shell-shortcuts.d.ts.map +1 -0
  33. package/dist/bento/bento-shell.d.ts +53 -0
  34. package/dist/bento/bento-shell.d.ts.map +1 -0
  35. package/dist/bento/bento-shortcuts-dialog.d.ts +9 -7
  36. package/dist/bento/bento-shortcuts-dialog.d.ts.map +1 -1
  37. package/dist/bento/bento-status-marker.d.ts +5 -2
  38. package/dist/bento/bento-status-marker.d.ts.map +1 -1
  39. package/dist/bento/bento-tile.d.ts.map +1 -1
  40. package/dist/bento/bento-user-menu.d.ts +9 -8
  41. package/dist/bento/bento-user-menu.d.ts.map +1 -1
  42. package/dist/bento/bento-version-rail.d.ts +31 -0
  43. package/dist/bento/bento-version-rail.d.ts.map +1 -0
  44. package/dist/bento/index.d.ts +15 -6
  45. package/dist/bento/index.d.ts.map +1 -1
  46. package/dist/bento.cjs +5 -1
  47. package/dist/bento.css +70 -4
  48. package/dist/bento.es.js +1778 -701
  49. package/dist/catalogue.json +5283 -0
  50. package/dist/components/app-footer.d.ts +7 -0
  51. package/dist/components/app-footer.d.ts.map +1 -1
  52. package/dist/components/app-switcher.d.ts.map +1 -1
  53. package/dist/components/backend-status.d.ts +19 -11
  54. package/dist/components/backend-status.d.ts.map +1 -1
  55. package/dist/components/badge-colorful.d.ts +13 -0
  56. package/dist/components/badge-colorful.d.ts.map +1 -1
  57. package/dist/components/badge-locale.d.ts +7 -0
  58. package/dist/components/badge-locale.d.ts.map +1 -1
  59. package/dist/components/error-boundary.d.ts +15 -13
  60. package/dist/components/error-boundary.d.ts.map +1 -1
  61. package/dist/components/language-select.d.ts +8 -0
  62. package/dist/components/language-select.d.ts.map +1 -1
  63. package/dist/components/login/login.d.ts +27 -0
  64. package/dist/components/login/login.d.ts.map +1 -1
  65. package/dist/components/mode-toggle.d.ts +9 -0
  66. package/dist/components/mode-toggle.d.ts.map +1 -1
  67. package/dist/components/nav-secondary.d.ts +7 -0
  68. package/dist/components/nav-secondary.d.ts.map +1 -1
  69. package/dist/components/router/dialog.delete.d.ts +8 -0
  70. package/dist/components/router/dialog.delete.d.ts.map +1 -1
  71. package/dist/components/router/gradient-button-link.d.ts +6 -0
  72. package/dist/components/router/gradient-button-link.d.ts.map +1 -1
  73. package/dist/components/router/index.d.ts +0 -11
  74. package/dist/components/router/index.d.ts.map +1 -1
  75. package/dist/components/router/loading-provider.d.ts +4 -0
  76. package/dist/components/router/loading-provider.d.ts.map +1 -1
  77. package/dist/components/startup-first/startup-first.d.ts +29 -0
  78. package/dist/components/startup-first/startup-first.d.ts.map +1 -1
  79. package/dist/components/ui/accordion.d.ts +17 -0
  80. package/dist/components/ui/accordion.d.ts.map +1 -1
  81. package/dist/components/ui/avatar.d.ts +14 -0
  82. package/dist/components/ui/avatar.d.ts.map +1 -1
  83. package/dist/components/ui/badge.d.ts +6 -0
  84. package/dist/components/ui/badge.d.ts.map +1 -1
  85. package/dist/components/ui/breadcrumb.d.ts +25 -0
  86. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  87. package/dist/components/ui/button.d.ts +15 -1
  88. package/dist/components/ui/button.d.ts.map +1 -1
  89. package/dist/components/ui/card.d.ts +27 -0
  90. package/dist/components/ui/card.d.ts.map +1 -1
  91. package/dist/components/ui/checkbox.d.ts +4 -0
  92. package/dist/components/ui/checkbox.d.ts.map +1 -1
  93. package/dist/components/ui/dialog.d.ts +36 -0
  94. package/dist/components/ui/dialog.d.ts.map +1 -1
  95. package/dist/components/ui/drawer.d.ts +35 -0
  96. package/dist/components/ui/drawer.d.ts.map +1 -1
  97. package/dist/components/ui/dropdown-menu.d.ts +53 -0
  98. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  99. package/dist/components/ui/floating-formulas-bg.d.ts +8 -0
  100. package/dist/components/ui/floating-formulas-bg.d.ts.map +1 -1
  101. package/dist/components/ui/form-actions.d.ts +7 -0
  102. package/dist/components/ui/form-actions.d.ts.map +1 -1
  103. package/dist/components/ui/form-item-two-columns.d.ts +7 -0
  104. package/dist/components/ui/form-item-two-columns.d.ts.map +1 -1
  105. package/dist/components/ui/form.d.ts +25 -0
  106. package/dist/components/ui/form.d.ts.map +1 -1
  107. package/dist/components/ui/glass-card.d.ts +18 -14
  108. package/dist/components/ui/glass-card.d.ts.map +1 -1
  109. package/dist/components/ui/gradient-button.d.ts +15 -1
  110. package/dist/components/ui/gradient-button.d.ts.map +1 -1
  111. package/dist/components/ui/gradient-switch.d.ts +6 -0
  112. package/dist/components/ui/gradient-switch.d.ts.map +1 -1
  113. package/dist/components/ui/hover-card.d.ts +14 -0
  114. package/dist/components/ui/hover-card.d.ts.map +1 -1
  115. package/dist/components/ui/icon-picker-dialog.d.ts.map +1 -1
  116. package/dist/components/ui/index.d.ts +6 -4
  117. package/dist/components/ui/index.d.ts.map +1 -1
  118. package/dist/components/ui/input.d.ts +6 -0
  119. package/dist/components/ui/input.d.ts.map +1 -1
  120. package/dist/components/ui/label.d.ts +4 -0
  121. package/dist/components/ui/label.d.ts.map +1 -1
  122. package/dist/components/ui/navigation-menu.d.ts +41 -0
  123. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  124. package/dist/components/ui/pagination.d.ts +25 -0
  125. package/dist/components/ui/pagination.d.ts.map +1 -1
  126. package/dist/components/ui/popover.d.ts +24 -0
  127. package/dist/components/ui/popover.d.ts.map +1 -1
  128. package/dist/components/ui/progress.d.ts +4 -0
  129. package/dist/components/ui/progress.d.ts.map +1 -1
  130. package/dist/components/ui/pulse-ring.d.ts +9 -11
  131. package/dist/components/ui/pulse-ring.d.ts.map +1 -1
  132. package/dist/components/ui/resizable.d.ts +11 -0
  133. package/dist/components/ui/resizable.d.ts.map +1 -1
  134. package/dist/components/ui/section-card.d.ts +9 -0
  135. package/dist/components/ui/section-card.d.ts.map +1 -1
  136. package/dist/components/ui/select.d.ts +36 -0
  137. package/dist/components/ui/select.d.ts.map +1 -1
  138. package/dist/components/ui/separator.d.ts +4 -0
  139. package/dist/components/ui/separator.d.ts.map +1 -1
  140. package/dist/components/ui/sheet.d.ts +29 -0
  141. package/dist/components/ui/sheet.d.ts.map +1 -1
  142. package/dist/components/ui/sidebar.d.ts +83 -0
  143. package/dist/components/ui/sidebar.d.ts.map +1 -1
  144. package/dist/components/ui/skeleton.d.ts +4 -0
  145. package/dist/components/ui/skeleton.d.ts.map +1 -1
  146. package/dist/components/ui/slider.d.ts +4 -0
  147. package/dist/components/ui/slider.d.ts.map +1 -1
  148. package/dist/components/ui/sonner.d.ts +16 -0
  149. package/dist/components/ui/sonner.d.ts.map +1 -1
  150. package/dist/components/ui/stepper.d.ts +8 -0
  151. package/dist/components/ui/stepper.d.ts.map +1 -1
  152. package/dist/components/ui/sticky-save-bar.d.ts +7 -0
  153. package/dist/components/ui/sticky-save-bar.d.ts.map +1 -1
  154. package/dist/components/ui/switch.d.ts +4 -0
  155. package/dist/components/ui/switch.d.ts.map +1 -1
  156. package/dist/components/ui/table.d.ts +31 -0
  157. package/dist/components/ui/table.d.ts.map +1 -1
  158. package/dist/components/ui/tabs.d.ts +16 -0
  159. package/dist/components/ui/tabs.d.ts.map +1 -1
  160. package/dist/components/ui/textarea.d.ts +4 -0
  161. package/dist/components/ui/textarea.d.ts.map +1 -1
  162. package/dist/components/ui/toggle-group.d.ts +7 -0
  163. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  164. package/dist/components/ui/toggle.d.ts +4 -0
  165. package/dist/components/ui/toggle.d.ts.map +1 -1
  166. package/dist/components/ui/tooltip.d.ts +18 -0
  167. package/dist/components/ui/tooltip.d.ts.map +1 -1
  168. package/dist/components/ui/user-avatar.d.ts +2 -1
  169. package/dist/components/ui/user-avatar.d.ts.map +1 -1
  170. package/dist/components/ui/viglet-assistant.d.ts +103 -0
  171. package/dist/components/ui/viglet-assistant.d.ts.map +1 -0
  172. package/dist/components/ui/viglet-avatar.d.ts +44 -0
  173. package/dist/components/ui/viglet-avatar.d.ts.map +1 -0
  174. package/dist/contexts/breadcrumb.context.d.ts +7 -0
  175. package/dist/contexts/breadcrumb.context.d.ts.map +1 -1
  176. package/dist/contexts/user.context.d.ts +8 -0
  177. package/dist/contexts/user.context.d.ts.map +1 -1
  178. package/dist/exports.json +359 -30
  179. package/dist/floating-formulas-bg.cjs +1 -1
  180. package/dist/floating-formulas-bg.es.js +56 -55
  181. package/dist/hooks/index.d.ts +1 -0
  182. package/dist/hooks/index.d.ts.map +1 -1
  183. package/dist/hooks/use-assistant-notifications.d.ts +15 -0
  184. package/dist/hooks/use-assistant-notifications.d.ts.map +1 -0
  185. package/dist/i18n/index.d.ts +168 -0
  186. package/dist/i18n/index.d.ts.map +1 -1
  187. package/dist/i18n/locales/en/assistant.json.d.ts +25 -0
  188. package/dist/i18n/locales/en/bento.json.d.ts +48 -2
  189. package/dist/i18n/locales/en/common.json.d.ts +6 -1
  190. package/dist/i18n/locales/en/language.json.d.ts +8 -0
  191. package/dist/i18n/locales/pt/assistant.json.d.ts +25 -0
  192. package/dist/i18n/locales/pt/bento.json.d.ts +48 -2
  193. package/dist/i18n/locales/pt/common.json.d.ts +6 -1
  194. package/dist/i18n/locales/pt/language.json.d.ts +8 -0
  195. package/dist/i18n.cjs +1 -1
  196. package/dist/i18n.es.js +572 -2
  197. package/dist/index.cjs +1 -1
  198. package/dist/index.d.ts +0 -1
  199. package/dist/index.d.ts.map +1 -1
  200. package/dist/index.es.js +2280 -733
  201. package/dist/lib/busy.d.ts +26 -0
  202. package/dist/lib/busy.d.ts.map +1 -0
  203. package/dist/lib/corner-slot.d.ts +15 -0
  204. package/dist/lib/corner-slot.d.ts.map +1 -0
  205. package/dist/{loading-provider-BWWhhfEn.js → loading-provider-ClDkFPuv.js} +84 -81
  206. package/dist/loading-provider-DGuCfsl9.cjs +1 -0
  207. package/dist/preset.css +7 -10
  208. package/dist/router.cjs +1 -1
  209. package/dist/router.es.js +2 -776
  210. package/dist/user.context-Cr3GAQ_r.js +762 -0
  211. package/dist/user.context-hbdvmXOn.cjs +1 -0
  212. package/dist/utils-Fk5jmzzb.js +41 -0
  213. package/dist/utils-Oagwe_oa.cjs +1 -0
  214. package/dist/viglet-design-system.css +1 -1
  215. package/dist/vite/boot-loader.d.ts +33 -2
  216. package/dist/vite/boot-loader.d.ts.map +1 -1
  217. package/dist/vite.cjs +16 -5
  218. package/dist/vite.es.js +27 -14
  219. package/docs/BENTO-AUTHORING.md +81 -11
  220. package/docs/reference/grounds.dc.html +9 -9
  221. package/package.json +16 -4
  222. package/scripts/consumer-entries.mjs +209 -0
  223. package/scripts/lib/contrast.mjs +301 -0
  224. package/scripts/mcp.mjs +300 -0
  225. package/scripts/page-lint.mjs +428 -0
  226. package/scripts/page-reference.mjs +54 -10
  227. package/dist/badge-locale-CoEEv7s5.js +0 -581
  228. package/dist/badge-locale-hQyWhAKe.cjs +0 -7
  229. package/dist/breadcrumb.context-KQut7j8U.js +0 -917
  230. package/dist/breadcrumb.context-Vwc3lAlf.cjs +0 -1
  231. package/dist/components/router/blank-slate.d.ts +0 -21
  232. package/dist/components/router/blank-slate.d.ts.map +0 -1
  233. package/dist/components/router/grid.list.d.ts +0 -39
  234. package/dist/components/router/grid.list.d.ts.map +0 -1
  235. package/dist/components/router/internal.sidebar.d.ts +0 -61
  236. package/dist/components/router/internal.sidebar.d.ts.map +0 -1
  237. package/dist/components/router/nav-main.d.ts +0 -25
  238. package/dist/components/router/nav-main.d.ts.map +0 -1
  239. package/dist/components/router/nav-user.d.ts +0 -24
  240. package/dist/components/router/nav-user.d.ts.map +0 -1
  241. package/dist/components/router/page-content.d.ts +0 -12
  242. package/dist/components/router/page-content.d.ts.map +0 -1
  243. package/dist/components/router/page-header.d.ts +0 -23
  244. package/dist/components/router/page-header.d.ts.map +0 -1
  245. package/dist/components/router/page.d.ts +0 -22
  246. package/dist/components/router/page.d.ts.map +0 -1
  247. package/dist/components/router/sticky.page.header.d.ts +0 -85
  248. package/dist/components/router/sticky.page.header.d.ts.map +0 -1
  249. package/dist/components/router/sub.page.d.ts +0 -50
  250. package/dist/components/router/sub.page.d.ts.map +0 -1
  251. package/dist/components/router/sub.page.header.d.ts +0 -37
  252. package/dist/components/router/sub.page.header.d.ts.map +0 -1
  253. package/dist/i18n-DD3rQOWi.js +0 -426
  254. package/dist/i18n-DrBq-qJJ.cjs +0 -1
  255. package/dist/lib/react-markers.d.ts +0 -17
  256. package/dist/lib/react-markers.d.ts.map +0 -1
  257. package/dist/loading-provider-CmeMqLGk.cjs +0 -1
  258. package/dist/user.context-B9vIBzY5.cjs +0 -1
  259. package/dist/user.context-D1PxP4D4.js +0 -512
@@ -0,0 +1,26 @@
1
+ import { MouseEvent, MouseEventHandler } from 'react';
2
+ /**
3
+ * VDS143 — busy is not disabled.
4
+ *
5
+ * A button marked pending with `disabled` leaves the tab order the moment it is
6
+ * pressed, so focus falls back to the document body just as the outcome is
7
+ * announced, and a keyboard or screen-reader user loses their place on every save.
8
+ *
9
+ * So a control that is loading, or unavailable for now (a form with nothing to
10
+ * save yet), says so with `aria-busy` and `aria-disabled`, stays focusable, and
11
+ * ignores activation. Cancelling the click also cancels a form's submission,
12
+ * the implicit one an Enter in a field triggers included, so a second press
13
+ * never submits twice. Only a control that is genuinely unavailable uses the
14
+ * `disabled` attribute.
15
+ */
16
+ export declare function busyControl<T extends HTMLElement>(loading: boolean, ariaDisabled: unknown, onClick: MouseEventHandler<T> | undefined): {
17
+ inert: boolean;
18
+ props: {
19
+ "aria-busy": "true" | undefined;
20
+ "aria-disabled": "true" | undefined;
21
+ onClick: (event: MouseEvent<T>) => void;
22
+ };
23
+ };
24
+ /** The spinner a busy control shows beside its label. */
25
+ export declare function BusyGlyph(): import("react").JSX.Element;
26
+ //# sourceMappingURL=busy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"busy.d.ts","sourceRoot":"","sources":["../../src/lib/busy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE3D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/C,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS;;;;;yBAQpB,UAAU,CAAC,CAAC,CAAC;;EAUnC;AAED,yDAAyD;AACzD,wBAAgB,SAAS,gCAOxB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * VDS133 — whether a component is being laid out in the shell's corner stack.
3
+ *
4
+ * The assistant dock and the back-to-top control each pinned themselves to the
5
+ * bottom-right corner, four pixels apart and a z-index apart, so the dock covered
6
+ * the button on every long page. The corner is a region, and a region has one
7
+ * owner: `BentoShell` renders both in a stack and sets this, and each component
8
+ * then renders in flow instead of fixing itself to the viewport.
9
+ *
10
+ * Deliberately not a provider a product mounts. Only the shell sets it, and a
11
+ * component rendered anywhere else reads the default and keeps its own corner.
12
+ */
13
+ export declare const CornerSlotContext: import('react').Context<boolean>;
14
+ export declare function useInCornerSlot(): boolean;
15
+ //# sourceMappingURL=corner-slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corner-slot.d.ts","sourceRoot":"","sources":["../../src/lib/corner-slot.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,kCAAuB,CAAC;AAEtD,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
@@ -1,40 +1,41 @@
1
- import { A as e, D as t, F as n, I as r, M as i, U as a, c as o, d as s, j as c, k as l, l as u, n as d, r as f, u as p } from "./badge-locale-CoEEv7s5.js";
1
+ import { t as e } from "./utils-Fk5jmzzb.js";
2
+ import { _ as t, a as n, c as r, d as i, f as a, g as o, i as s, n as c, o as l, p as u, r as d, s as f, u as p } from "./badge-locale-DxDp8Q3S.js";
2
3
  import { useState as m } from "react";
3
4
  import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
4
5
  import { useTranslation as v } from "react-i18next";
5
6
  import { IconAlertTriangle as y, IconAlertTriangleFilled as b, IconTrash as x } from "@tabler/icons-react";
6
7
  import { NavLink as S, useNavigate as C } from "react-router-dom";
7
8
  //#region src/components/router/dialog.delete.tsx
8
- var w = ({ feature: a, name: o, onDelete: s, open: b, setOpen: S, trigger: w, blockedBy: T, title: E, description: D, confirmLabel: O }) => {
9
- let k = T && T.length > 0, A = C(), { t: j } = v(), [M, N] = m(""), P = M === o;
9
+ var w = ({ feature: e, name: s, onDelete: f, open: b, setOpen: S, trigger: w, blockedBy: T, title: E, description: D, confirmLabel: O }) => {
10
+ let k = T && T.length > 0, A = C(), { t: j } = v(), [M, N] = m(""), P = M === s;
10
11
  function F(e) {
11
12
  S(e), e || N("");
12
13
  }
13
- return /* @__PURE__ */ _(t, {
14
+ return /* @__PURE__ */ _(r, {
14
15
  open: b,
15
16
  onOpenChange: F,
16
- children: [w !== null && /* @__PURE__ */ g(r, {
17
+ children: [w !== null && /* @__PURE__ */ g(t, {
17
18
  asChild: !0,
18
- children: w ?? /* @__PURE__ */ g(p, {
19
+ children: w ?? /* @__PURE__ */ g(l, {
19
20
  variant: "ghost",
20
21
  size: "icon-sm",
21
22
  children: /* @__PURE__ */ g(x, { className: "size-5!" })
22
23
  })
23
- }), /* @__PURE__ */ g(l, {
24
+ }), /* @__PURE__ */ g(p, {
24
25
  className: "sm:max-w-md",
25
26
  children: k ? /* @__PURE__ */ _(h, { children: [
26
- /* @__PURE__ */ _(i, { children: [
27
+ /* @__PURE__ */ _(u, { children: [
27
28
  /* @__PURE__ */ g("div", {
28
29
  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",
29
30
  children: /* @__PURE__ */ g(y, { className: "size-6 text-amber-500" })
30
31
  }),
31
- /* @__PURE__ */ g(n, {
32
+ /* @__PURE__ */ g(o, {
32
33
  className: "text-center",
33
- children: j("dialog.cannotDelete", { feature: a })
34
+ children: j("dialog.cannotDelete", { feature: e })
34
35
  }),
35
- /* @__PURE__ */ g(e, {
36
+ /* @__PURE__ */ g(i, {
36
37
  className: "text-center",
37
- children: j("dialog.inUse", { name: o })
38
+ children: j("dialog.inUse", { name: s })
38
39
  })
39
40
  ] }),
40
41
  /* @__PURE__ */ _("div", {
@@ -42,13 +43,13 @@ var w = ({ feature: a, name: o, onDelete: s, open: b, setOpen: S, trigger: w, bl
42
43
  children: [
43
44
  /* @__PURE__ */ g("p", {
44
45
  className: "text-sm text-muted-foreground",
45
- children: j("dialog.dependingSites", { feature: a })
46
+ children: j("dialog.dependingSites", { feature: e })
46
47
  }),
47
48
  /* @__PURE__ */ g("div", {
48
49
  className: "flex flex-wrap gap-2",
49
50
  children: T.map((e) => {
50
- let t = e.language ? d(e.language) : void 0;
51
- return /* @__PURE__ */ g(f, {
51
+ let t = e.language ? c(e.language) : void 0;
52
+ return /* @__PURE__ */ g(d, {
52
53
  text: e.name,
53
54
  href: e.href,
54
55
  onClick: (e) => {
@@ -64,29 +65,29 @@ var w = ({ feature: a, name: o, onDelete: s, open: b, setOpen: S, trigger: w, bl
64
65
  }),
65
66
  /* @__PURE__ */ g("p", {
66
67
  className: "text-xs text-muted-foreground",
67
- children: j("dialog.removeDependencies", { feature: a })
68
+ children: j("dialog.removeDependencies", { feature: e })
68
69
  })
69
70
  ]
70
71
  }),
71
- /* @__PURE__ */ g(c, { children: /* @__PURE__ */ g(p, {
72
+ /* @__PURE__ */ g(a, { children: /* @__PURE__ */ g(l, {
72
73
  onClick: () => S(!1),
73
74
  variant: "outline",
74
75
  className: "w-full",
75
76
  children: j("dialog.understood")
76
77
  }) })
77
78
  ] }) : /* @__PURE__ */ _(h, { children: [
78
- /* @__PURE__ */ _(i, { children: [
79
+ /* @__PURE__ */ _(u, { children: [
79
80
  /* @__PURE__ */ g("div", {
80
81
  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",
81
82
  children: /* @__PURE__ */ g(x, { className: "size-6 text-red-500" })
82
83
  }),
83
- /* @__PURE__ */ g(n, {
84
+ /* @__PURE__ */ g(o, {
84
85
  className: "text-center",
85
- children: E ?? j("dialog.deleteFeature", { feature: a })
86
+ children: E ?? j("dialog.deleteFeature", { feature: e })
86
87
  }),
87
- /* @__PURE__ */ g(e, {
88
+ /* @__PURE__ */ g(i, {
88
89
  className: "text-center",
89
- children: D ?? j("dialog.permanentDelete", { name: o })
90
+ children: D ?? j("dialog.permanentDelete", { name: s })
90
91
  })
91
92
  ] }),
92
93
  /* @__PURE__ */ _("div", {
@@ -98,28 +99,28 @@ var w = ({ feature: a, name: o, onDelete: s, open: b, setOpen: S, trigger: w, bl
98
99
  " ",
99
100
  /* @__PURE__ */ g("span", {
100
101
  className: "font-mono font-semibold text-foreground bg-muted px-1.5 py-0.5 rounded",
101
- children: o
102
+ children: s
102
103
  }),
103
104
  " ",
104
105
  j("dialog.toConfirm")
105
106
  ]
106
- }), /* @__PURE__ */ g(u, {
107
+ }), /* @__PURE__ */ g(n, {
107
108
  value: M,
108
109
  onChange: (e) => N(e.target.value),
109
- placeholder: o,
110
+ placeholder: s,
110
111
  className: "font-mono text-sm",
111
112
  autoFocus: !0
112
113
  })]
113
114
  }),
114
- /* @__PURE__ */ _(c, {
115
+ /* @__PURE__ */ _(a, {
115
116
  className: "flex-col gap-2 sm:flex-col",
116
- children: [/* @__PURE__ */ _(p, {
117
- onClick: s,
117
+ children: [/* @__PURE__ */ _(l, {
118
+ onClick: f,
118
119
  variant: "destructive",
119
120
  disabled: !P,
120
121
  className: "w-full",
121
- children: [/* @__PURE__ */ g(x, { className: "size-4" }), O ?? j("dialog.deleteFeature", { feature: a })]
122
- }), /* @__PURE__ */ g(p, {
122
+ children: [/* @__PURE__ */ g(x, { className: "size-4" }), O ?? j("dialog.deleteFeature", { feature: e })]
123
+ }), /* @__PURE__ */ g(l, {
123
124
  onClick: () => F(!1),
124
125
  variant: "ghost",
125
126
  className: "w-full",
@@ -132,64 +133,66 @@ var w = ({ feature: a, name: o, onDelete: s, open: b, setOpen: S, trigger: w, bl
132
133
  };
133
134
  //#endregion
134
135
  //#region src/components/router/gradient-button-link.tsx
135
- function T({ className: e, variant: t, size: n, to: r, onClick: i, children: o }) {
136
- let c = a(s({
137
- variant: t,
138
- size: n,
139
- className: e
136
+ function T({ className: t, variant: n, size: r, to: i, onClick: a, children: o }) {
137
+ let s = e(f({
138
+ variant: n,
139
+ size: r,
140
+ className: t
140
141
  }));
141
142
  return /* @__PURE__ */ g(S, {
142
- to: r,
143
+ to: i,
143
144
  "data-slot": "gradient-button",
144
- className: c,
145
+ className: s,
145
146
  onClick: (e) => {
146
- let t = typeof r == "string" ? r : r.pathname;
147
- t && globalThis.location.pathname === t && globalThis.location.reload(), i && i(e);
147
+ let t = typeof i == "string" ? i : i.pathname;
148
+ t && globalThis.location.pathname === t && globalThis.location.reload(), a && a(e);
148
149
  },
149
150
  children: o
150
151
  });
151
152
  }
152
153
  //#endregion
153
- //#region src/components/router/blank-slate.tsx
154
- var E = ({ icon: e, title: t, description: n, urlNew: r, buttonText: i }) => /* @__PURE__ */ g("div", {
155
- className: "flex items-center justify-center px-6 py-16",
156
- children: /* @__PURE__ */ g("div", {
157
- className: "relative w-full max-w-md overflow-hidden rounded-2xl border border-border/50 bg-card/80 backdrop-blur-sm shadow-xl",
158
- children: /* @__PURE__ */ _("div", {
159
- className: "relative flex flex-col items-center text-center px-8 py-12 space-y-6",
160
- children: [
161
- /* @__PURE__ */ _("div", {
162
- className: "relative",
163
- children: [/* @__PURE__ */ g("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" }), /* @__PURE__ */ g("div", {
164
- 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)]",
165
- children: /* @__PURE__ */ g(e, {
166
- className: "text-white",
167
- size: 30
168
- })
169
- })]
170
- }),
171
- /* @__PURE__ */ _("div", {
172
- className: "space-y-2",
173
- children: [/* @__PURE__ */ g("h2", {
174
- className: "text-xl font-semibold tracking-tight",
175
- children: t
176
- }), /* @__PURE__ */ g("p", {
177
- className: "text-sm text-muted-foreground leading-relaxed max-w-xs mx-auto",
154
+ //#region src/components/router/loading-provider.tsx
155
+ function E({ title: e, description: t, buttonText: n, urlNew: r }) {
156
+ return /* @__PURE__ */ g("div", {
157
+ className: "flex items-center justify-center px-6 py-16",
158
+ children: /* @__PURE__ */ g("div", {
159
+ className: "relative w-full max-w-md overflow-hidden rounded-2xl border border-border/50 bg-card/80 backdrop-blur-sm shadow-xl",
160
+ children: /* @__PURE__ */ _("div", {
161
+ className: "relative flex flex-col items-center text-center px-8 py-12 space-y-6",
162
+ children: [
163
+ /* @__PURE__ */ _("div", {
164
+ className: "relative",
165
+ children: [/* @__PURE__ */ g("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" }), /* @__PURE__ */ g("div", {
166
+ 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)]",
167
+ children: /* @__PURE__ */ g(b, {
168
+ className: "text-white",
169
+ size: 30
170
+ })
171
+ })]
172
+ }),
173
+ /* @__PURE__ */ _("div", {
174
+ className: "space-y-2",
175
+ children: [/* @__PURE__ */ g("h2", {
176
+ className: "text-xl font-semibold tracking-tight",
177
+ children: e
178
+ }), /* @__PURE__ */ g("p", {
179
+ className: "text-sm text-muted-foreground leading-relaxed max-w-xs mx-auto",
180
+ children: t
181
+ })]
182
+ }),
183
+ r && /* @__PURE__ */ g(T, {
184
+ size: "lg",
185
+ to: r,
178
186
  children: n
179
- })]
180
- }),
181
- r && /* @__PURE__ */ g(T, {
182
- size: "lg",
183
- to: r,
184
- children: i
185
- })
186
- ]
187
+ })
188
+ ]
189
+ })
187
190
  })
188
- })
189
- }), D = ({ checkIsNotUndefined: e, error: t, tryAgainUrl: n, children: r }) => {
191
+ });
192
+ }
193
+ var D = ({ checkIsNotUndefined: e, error: t, tryAgainUrl: n, children: r }) => {
190
194
  let { t: i } = v();
191
195
  return t ? /* @__PURE__ */ g(E, {
192
- icon: b,
193
196
  title: i("common.errorLoading"),
194
197
  description: t,
195
198
  buttonText: i("common.tryAgain"),
@@ -197,7 +200,7 @@ var E = ({ icon: e, title: t, description: n, urlNew: r, buttonText: i }) => /*
197
200
  }) : e === void 0 && !t ? /* @__PURE__ */ _("div", {
198
201
  className: "space-y-6 py-8 px-6 animate-pulse",
199
202
  children: [
200
- /* @__PURE__ */ g(o, { className: "h-8 w-1/3 rounded-md" }),
203
+ /* @__PURE__ */ g(s, { className: "h-8 w-1/3 rounded-md" }),
201
204
  /* @__PURE__ */ g("div", {
202
205
  className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
203
206
  children: [
@@ -207,18 +210,18 @@ var E = ({ icon: e, title: t, description: n, urlNew: r, buttonText: i }) => /*
207
210
  ].map((e) => /* @__PURE__ */ _("div", {
208
211
  className: "space-y-3 p-4 border rounded-xl bg-slate-50/50 dark:bg-slate-900/20",
209
212
  children: [
210
- /* @__PURE__ */ g(o, { className: "h-5 w-2/3" }),
211
- /* @__PURE__ */ g(o, { className: "h-12 w-full" }),
212
- /* @__PURE__ */ g(o, { className: "h-4 w-5/6" })
213
+ /* @__PURE__ */ g(s, { className: "h-5 w-2/3" }),
214
+ /* @__PURE__ */ g(s, { className: "h-12 w-full" }),
215
+ /* @__PURE__ */ g(s, { className: "h-4 w-5/6" })
213
216
  ]
214
217
  }, e))
215
218
  }),
216
219
  /* @__PURE__ */ g("div", {
217
220
  className: "pt-4",
218
- children: /* @__PURE__ */ g(o, { className: "h-10 w-32 rounded-lg" })
221
+ children: /* @__PURE__ */ g(s, { className: "h-10 w-32 rounded-lg" })
219
222
  })
220
223
  ]
221
224
  }) : /* @__PURE__ */ g(h, { children: r });
222
225
  };
223
226
  //#endregion
224
- export { w as i, E as n, T as r, D as t };
227
+ export { T as n, w as r, D as t };
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./utils-Oagwe_oa.cjs"),n=require("./badge-locale-CJkHDlPg.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}});
package/dist/preset.css CHANGED
@@ -200,10 +200,9 @@
200
200
  --vg-accent-line: color-mix(in oklab, var(--vg-accent-from) 35%, transparent);
201
201
 
202
202
  /* The accent as an interactive surface — the primary button, the checked
203
- switch. On light the fill sits a step darker than the stops so white text
204
- clears contrast; on dark the stops themselves are the fill and the hover
205
- darkens instead. That asymmetry is why these are stated per theme rather
206
- than mixed at the call site. */
203
+ switch. The fill sits a step darker than the stops so its white label clears
204
+ contrast, on both grounds: the dark ground once used the stops themselves,
205
+ which put that label at 3.76:1. */
207
206
  --vg-accent-fill-from: color-mix(in oklab, var(--vg-accent-from) 88%, black);
208
207
  --vg-accent-fill-to: color-mix(in oklab, var(--vg-accent-to) 88%, black);
209
208
  --vg-accent-fill-from-hover: color-mix(in oklab, var(--vg-accent-from) 76%, black);
@@ -309,13 +308,11 @@
309
308
  --vg-accent: oklch(0.32 0 0);
310
309
  --vg-accent-foreground: oklch(0.90 0 0);
311
310
  /* The brand accent's dark twin. The tint surfaces are color-mix over the same
312
- stop and read correctly on either ground, so only the foreground and the
313
- interactive fill re-point here. */
311
+ stop and read correctly on either ground, so only the foreground re-points
312
+ here. The interactive fill does not: it carries a white label, and the stop
313
+ itself left that label at 3.76:1 on this ground (VDS151), so the dark ground
314
+ keeps the light ground's darker step and its hover. */
314
315
  --vg-accent-fg: var(--vg-accent-text-dark);
315
- --vg-accent-fill-from: var(--vg-accent-from);
316
- --vg-accent-fill-to: var(--vg-accent-to);
317
- --vg-accent-fill-from-hover: color-mix(in oklab, var(--vg-accent-from) 88%, black);
318
- --vg-accent-fill-to-hover: color-mix(in oklab, var(--vg-accent-to) 88%, black);
319
316
  --vg-accent-ring: color-mix(in oklab, var(--vg-accent-text-dark) 50%, transparent);
320
317
  --vg-accent-shadow: color-mix(in oklab, var(--vg-accent-from) 20%, transparent);
321
318
  --vg-accent-shadow-hover: color-mix(in oklab, var(--vg-accent-from) 25%, transparent);
package/dist/router.cjs CHANGED
@@ -1 +1 @@
1
- "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./badge-locale-hQyWhAKe.cjs"),n=require("./breadcrumb.context-Vwc3lAlf.cjs"),r=require("./loading-provider-CmeMqLGk.cjs");let i=require("react");i=e.t(i,1);let a=require("react/jsx-runtime"),o=require("react-i18next"),s=require("@tabler/icons-react"),c=require("@iconify/react"),l=require("react-router-dom"),u=require("@tanstack/react-table");function d(e){return typeof e.type==`string`?void 0:e.type.displayName}var f=()=>null;f.displayName=`GridListNewButton`;var p=()=>null;p.displayName=`GridListAction`;var m=()=>null;m.displayName=`GridListItemAction`;var h=[`vg-accent-solid`,`from-emerald-500 to-teal-500`,`from-violet-500 to-purple-500`,`from-amber-500 to-orange-500`,`from-rose-500 to-pink-500`,`from-cyan-500 to-sky-500`,`from-fuchsia-500 to-pink-500`,`from-lime-500 to-emerald-500`];function g(e){let t=0;for(let n=0;n<e.length;n++)t=(e.codePointAt(n)??0)+((t<<5)-t);return h[Math.abs(t)%h.length]}function _(e){return e.split(/[\s\-_]+/).filter(Boolean).slice(0,2).map(e=>e[0].toUpperCase()).join(``)}var v={columnFilteringFeature:u.columnFilteringFeature,globalFilteringFeature:u.globalFilteringFeature,rowPaginationFeature:u.rowPaginationFeature,rowSortingFeature:u.rowSortingFeature,coreRowModel:(0,u.createCoreRowModel)(),filteredRowModel:(0,u.createFilteredRowModel)(),paginatedRowModel:(0,u.createPaginatedRowModel)(),sortedRowModel:(0,u.createSortedRowModel)()},y=[{accessorKey:`name`,header:`Name`},{accessorKey:`description`,header:`Description`},{accessorKey:`url`,header:`URL`}],b=Object.assign(({gridItemList:e,children:r})=>{let{t:f}=(0,o.useTranslation)(),p=(0,l.useNavigate)(),m=[],h=[];i.default.Children.forEach(r,e=>{if(i.default.isValidElement(e)){if(d(e)===`GridListNewButton`){let{to:n,label:r}=e.props;m.push({key:`new-${r}`,render:()=>(0,a.jsxs)(t.g,{onClick:()=>p(n),children:[(0,a.jsx)(s.IconPlus,{className:`size-4 mr-2`}),f(`sidebar.new`,{feature:r,defaultValue:`New {{feature}}`})]})})}else if(d(e)===`GridListAction`){let{children:t}=e.props;m.push({key:`action-${m.length}`,render:()=>(0,a.jsx)(a.Fragment,{children:t})})}else if(d(e)===`GridListItemAction`){let t=e.props;h.push({key:`item-action-${h.length}`,icon:t.icon,label:t.label,onClick:t.onClick,position:t.position??`right`})}}});let b=h.length>0,x=h.filter(e=>e.position===`left`),S=h.filter(e=>e.position===`right`),[C,w]=(0,i.useState)({pageIndex:0,pageSize:12}),[T,E]=i.default.useState([]),[D,O]=(0,i.useState)(``),k=(0,u.useTable)({features:v,data:e,columns:y,onSortingChange:E,state:{globalFilter:D,pagination:C,sorting:T},onGlobalFilterChange:O,getColumnCanGlobalFilter:e=>e.id===`name`||e.id===`description`,onPaginationChange:w}),A=k.getRowModel().rows;return(0,a.jsxs)(`div`,{className:`px-6`,children:[(0,a.jsxs)(`div`,{className:`flex items-center gap-3 mb-4`,children:[(0,a.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,a.jsx)(s.IconSearch,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,a.jsx)(t.l,{placeholder:f(`forms.common.search`),value:D??``,onChange:e=>O(e.target.value),className:`pl-9`})]}),(0,a.jsxs)(`span`,{className:`text-sm text-muted-foreground whitespace-nowrap`,children:[k.getFilteredRowModel().rows.length,` `,k.getFilteredRowModel().rows.length===1?f(`forms.common.item`):f(`forms.common.items`)]}),m.length>0&&(0,a.jsx)(`div`,{className:`ml-auto`,children:(0,a.jsxs)(t.f,{children:[(0,a.jsx)(t.E,{asChild:!0,children:(0,a.jsxs)(t.u,{variant:`outline`,size:`sm`,className:`gap-1.5`,children:[(0,a.jsx)(s.IconDotsVertical,{className:`size-4`}),(0,a.jsx)(`span`,{className:`hidden sm:inline`,children:f(`forms.common.actions`)})]})}),(0,a.jsx)(t.m,{align:`end`,children:m.map(e=>(0,a.jsx)(i.default.Fragment,{children:e.render()},e.key))})]})})]}),A.length>0?(0,a.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4`,children:A.map(e=>{let t=e.getValue(`name`),r=e.getValue(`description`),i=e.getValue(`url`),o=e.original.icon??void 0,u=g(t),d=_(t),p=(0,a.jsxs)(n.$,{className:`relative overflow-hidden p-0 h-full transition-all duration-200 hover:shadow-lg hover:shadow-[var(--vg-accent-surface)] hover:-translate-y-0.5 border-border/60 hover:border-[var(--vg-accent-line)]`,children:[(0,a.jsx)(`div`,{className:`h-1.5 bg-linear-to-r ${u} opacity-70 group-hover:opacity-100 transition-opacity`}),(0,a.jsxs)(`div`,{className:`p-4 flex items-start gap-3`,children:[b&&x.length>0&&(0,a.jsx)(`div`,{className:`flex items-center gap-1 shrink-0 mt-0.5`,children:x.map(t=>(0,a.jsx)(`button`,{type:`button`,title:t.label,onClick:()=>t.onClick(e.original),className:`inline-flex items-center justify-center rounded-md p-1.5 text-muted-foreground hover:text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface)] transition-colors cursor-pointer`,children:t.icon},t.key))}),(0,a.jsx)(`div`,{className:`shrink-0 w-10 h-10 rounded-lg bg-linear-to-br ${u} flex items-center justify-center text-white text-sm font-semibold shadow-sm`,children:o?(0,a.jsx)(c.Icon,{icon:o,className:`size-5`}):d}),(0,a.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,a.jsx)(`h3`,{className:`font-medium text-sm truncate group-hover:text-[var(--vg-accent-fg)] transition-colors`,children:t}),r?(0,a.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 line-clamp-2 leading-relaxed`,children:r}):(0,a.jsx)(`p`,{className:`text-xs text-muted-foreground/50 mt-1 italic`,children:f(`forms.common.noDescription`)})]}),b?S.length>0&&(0,a.jsx)(`div`,{className:`flex items-center gap-1 shrink-0 mt-0.5`,children:S.map(t=>(0,a.jsx)(`button`,{type:`button`,title:t.label,onClick:()=>t.onClick(e.original),className:`inline-flex items-center justify-center rounded-md p-1.5 text-muted-foreground hover:text-[var(--vg-accent-fg)] hover:bg-[var(--vg-accent-surface)] transition-colors cursor-pointer`,children:t.icon},t.key))}):(0,a.jsx)(s.IconChevronRight,{className:`h-4 w-4 text-muted-foreground/40 group-hover:text-[var(--vg-accent-fg)] transition-all group-hover:translate-x-0.5 mt-0.5 shrink-0`})]})]});return b?(0,a.jsx)(`div`,{className:`group`,children:p},e.id):(0,a.jsx)(l.NavLink,{to:i,className:`group`,children:p},e.id)})}):(0,a.jsx)(n.$,{className:`p-8`,children:(0,a.jsxs)(`div`,{className:`text-center text-muted-foreground`,children:[(0,a.jsx)(s.IconSearch,{className:`h-8 w-8 mx-auto mb-2 opacity-40`}),(0,a.jsx)(`p`,{className:`text-sm`,children:f(`forms.common.noResults`)})]})}),k.getPageCount()>1&&(0,a.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 mt-4`,children:[(0,a.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,a.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:f(`forms.common.perPage`)}),(0,a.jsxs)(n.U,{value:`${k.state.pagination.pageSize}`,onValueChange:e=>k.setPageSize(Number(e)),children:[(0,a.jsx)(n.Z,{className:`h-8 w-17.5`,children:(0,a.jsx)(n.Q,{placeholder:k.state.pagination.pageSize})}),(0,a.jsx)(n.W,{side:`top`,children:[12,24,36,48].map(e=>(0,a.jsx)(n.K,{value:`${e}`,children:e},e))})]})]}),(0,a.jsx)(`div`,{className:`flex w-25 items-center justify-center text-sm font-medium`,children:f(`forms.common.pageOf`,{index:k.state.pagination.pageIndex+1,count:k.getPageCount()})}),(0,a.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,a.jsx)(t.u,{variant:`outline`,size:`sm`,onClick:()=>k.previousPage(),disabled:!k.getCanPreviousPage(),className:`h-8 w-8 p-0`,"aria-label":f(`common.goToPreviousPage`,{defaultValue:`Go to previous page`}),children:(0,a.jsx)(`span`,{children:`<`})}),(0,a.jsx)(t.u,{variant:`outline`,size:`sm`,onClick:()=>k.nextPage(),disabled:!k.getCanNextPage(),className:`h-8 w-8 p-0`,"aria-label":f(`common.goToNextPage`,{defaultValue:`Go to next page`}),children:(0,a.jsx)(`span`,{children:`>`})})]})]})]})},{NewButton:f,Action:p,ItemAction:m}),x=e=>!e.url&&(e.children?.length??0)>0,S=(e,t,n)=>{if(e.url){let r=(t??``)+e.url;if(n===r||n.startsWith(r+`/`))return!0}return e.children?.some(e=>S(e,t,n))??!1},C=e=>(e??0).toLocaleString(),w=(e,t,r,i,o)=>e.map(e=>(0,a.jsxs)(n.S,{children:[(0,a.jsx)(n.x,{tooltip:e.title,isActive:S(e,t,r),asChild:!0,children:(0,a.jsxs)(l.NavLink,{to:(t??``)+(e.url??``),onClick:o,children:[e.icon&&(0,a.jsx)(e.icon,{className:`size-5!`}),(0,a.jsx)(`span`,{children:e.title})]})}),!i&&e.children&&e.children.length>0&&(0,a.jsx)(n.v,{className:`ml-4`,children:w(e.children,t,r,i,o)})]},e.title)),T=({icon:e,feature:i,name:c,urlBase:u,isNew:d,data:f,onDelete:p,onExport:m,open:h,setOpen:g})=>{let{t:_}=(0,o.useTranslation)(),v=(0,l.useLocation)().pathname,{state:y,isMobile:b,setOpenMobile:S}=n.j(),T=y===`collapsed`,E=b?()=>S(!1):void 0;return(0,a.jsxs)(n.c,{collapsible:`icon`,variant:`inset`,position:`absolute`,children:[(0,a.jsx)(n.h,{className:`pb-3`,children:(0,a.jsx)(n.v,{children:(0,a.jsxs)(n.S,{className:`flex items-center`,children:[(0,a.jsx)(n.x,{asChild:!0,className:`data-[slot=sidebar-menu-button]:p-1.5!`,children:(0,a.jsxs)(l.NavLink,{to:u??`#`,className:`flex items-center gap-2.5`,children:[(0,a.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg vg-accent-chip ring-1`,children:(0,a.jsx)(e,{className:`size-5! vg-accent-text`})}),!T&&(0,a.jsx)(`span`,{className:`text-sm font-semibold whitespace-nowrap truncate`,children:d?_(`sidebar.new`,{feature:i}):c})]})}),!T&&(0,a.jsxs)(`div`,{className:`flex items-center gap-1 mr-auto`,children:[!d&&m&&(0,a.jsx)(t.u,{variant:`ghost`,size:`icon-sm`,onClick:m,children:(0,a.jsx)(s.IconDownload,{className:`size-5!`})}),!d&&p&&g&&(0,a.jsx)(r.i,{feature:i,name:c,onDelete:p,open:h??!1,setOpen:g})]})]})})}),(0,a.jsxs)(n.l,{children:[f?.counts&&f.counts.length>0&&(0,a.jsxs)(n.d,{children:[(0,a.jsx)(n.m,{children:_(`sidebar.indexing`)}),(0,a.jsx)(n.p,{className:`flex flex-col gap-2 pt-4`,children:(0,a.jsx)(n.v,{children:f.counts.map(e=>(0,a.jsxs)(n.S,{children:[(0,a.jsxs)(n.x,{tooltip:e.title+`: `+C(e.count),variant:`outline`,children:[e.icon&&(0,a.jsx)(e.icon,{className:`size-5!`}),(0,a.jsx)(`span`,{children:e.title})]}),!T&&(0,a.jsx)(n.b,{children:C(e.count)})]},e.title))})})]}),(()=>{let e=f?.navMain??[],t=d?e.filter(e=>e.showOnNew??e.url===`/detail`):e,r=t.filter(e=>!x(e)),o=t.filter(x);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.d,{children:[(0,a.jsx)(n.m,{children:i}),(0,a.jsx)(n.p,{className:`flex flex-col gap-2`,children:(0,a.jsx)(n.v,{children:w(r,u,v,T,E)})})]}),o.map(e=>(0,a.jsxs)(n.d,{children:[(0,a.jsx)(n.m,{children:e.title}),(0,a.jsx)(n.p,{className:`flex flex-col gap-2`,children:(0,a.jsx)(n.v,{children:w(e.children??[],u,v,T,E)})})]},e.title))]})})()]})]})};function E({groups:e}){let t=(0,l.useLocation)().pathname,{isMobile:r,setOpenMobile:i}=n.j();return(0,a.jsx)(a.Fragment,{children:e.map(e=>(0,a.jsxs)(n.d,{children:[e.label&&(0,a.jsx)(n.m,{children:e.label}),(0,a.jsx)(n.p,{className:`flex flex-col gap-2`,children:(0,a.jsx)(n.v,{children:e.items.map(e=>(0,a.jsx)(n.S,{children:(0,a.jsx)(n.x,{tooltip:e.title,isActive:t.startsWith(e.url),asChild:!0,children:(0,a.jsxs)(l.NavLink,{to:e.url,onClick:()=>r&&i(!1),children:[e.icon&&(0,a.jsx)(e.icon,{className:`size-6!`}),(0,a.jsx)(`span`,{children:e.title})]})})},e.title))})})]},e.label??`_ungrouped`))})}function D({user:e,accountUrl:r,logoutUrl:c,onLogout:u}){let{t:d}=(0,o.useTranslation)(),{isMobile:f}=n.j(),p=()=>{u?u():c&&(globalThis.location.href=c)},m=i.default.useMemo(()=>{let t=e.firstName||``,n=e.lastName||``;if(!t&&!n)return` `;let r=`${t} ${n}`.trim().split(` `).filter(Boolean);return r.length===1?r[0].charAt(0).toUpperCase():r[0].charAt(0).toUpperCase()+(r.at(-1)?.charAt(0).toUpperCase()??``)},[e]),h=e?.avatarUrl||``;return(0,a.jsx)(n.v,{children:(0,a.jsx)(n.S,{children:(0,a.jsxs)(t.f,{children:[(0,a.jsx)(t.E,{asChild:!0,children:(0,a.jsxs)(n.x,{size:`lg`,className:`data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground`,children:[(0,a.jsxs)(n.pt,{className:`h-8 w-8 rounded-lg`,children:[h&&(0,a.jsx)(n.ht,{src:h,alt:e.username}),(0,a.jsx)(n.mt,{className:`rounded-lg`,children:m})]}),(0,a.jsxs)(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[(0,a.jsxs)(`span`,{className:`truncate font-medium`,children:[e.firstName,` `,e.lastName]}),(0,a.jsx)(`span`,{className:`text-muted-foreground truncate text-xs`,children:e.email})]}),(0,a.jsx)(s.IconDotsVertical,{className:`ml-auto size-4`})]})}),(0,a.jsxs)(t.m,{className:`w-(--radix-dropdown-menu-trigger-width) min-w-56 rounded-lg`,side:f?`bottom`:`right`,align:`end`,sideOffset:4,children:[(0,a.jsx)(t._,{className:`p-0 font-normal`,children:(0,a.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-1.5 text-left text-sm`,children:[(0,a.jsxs)(n.pt,{className:`h-8 w-8 rounded-lg`,children:[h&&(0,a.jsx)(n.ht,{src:h,alt:e.username}),(0,a.jsx)(n.mt,{className:`rounded-lg`,children:m})]}),(0,a.jsxs)(`div`,{className:`grid flex-1 text-left text-sm leading-tight`,children:[(0,a.jsxs)(`span`,{className:`truncate font-medium`,children:[e.firstName,` `,e.lastName]}),(0,a.jsx)(`span`,{className:`text-muted-foreground truncate text-xs`,children:e.email})]})]})}),(0,a.jsx)(t.x,{}),r&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h,{children:(0,a.jsx)(l.NavLink,{to:r,className:`w-full`,children:(0,a.jsxs)(t.g,{children:[(0,a.jsx)(s.IconUserCircle,{}),d(`nav.account`)]})})}),(0,a.jsx)(t.x,{})]}),(0,a.jsxs)(t.g,{onClick:p,className:`cursor-pointer`,children:[(0,a.jsx)(s.IconLogout,{}),(0,a.jsx)(`span`,{children:d(`nav.logOut`)})]})]})]})})})}var O=()=>(0,a.jsx)(`div`,{className:`flex flex-1 flex-col`,children:(0,a.jsx)(`div`,{className:`@container/main flex flex-1 flex-col gap-2`,children:(0,a.jsx)(`div`,{className:`flex flex-col gap-2 px-1 py-1 md:gap-3 md:px-2 md:py-2`,children:(0,a.jsx)(l.Outlet,{})})})}),k=({icon:e,title:t,urlBase:r,children:c})=>{let{items:u}=n.n(),d=(0,l.useNavigate)(),{t:f}=(0,o.useTranslation)(),p=u.length>0?u[u.length-1]:null,m=u.length>1?u[u.length-2]:null;return(0,a.jsx)(`header`,{className:`flex h-(--header-height) shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-(--header-height)`,children:(0,a.jsxs)(`div`,{className:`flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6`,children:[(0,a.jsx)(n.A,{className:`-ml-1 hidden md:flex`}),(0,a.jsx)(n.H,{orientation:`vertical`,className:`mx-2 data-[orientation=vertical]:h-4 hidden md:block`}),(0,a.jsxs)(`div`,{className:`hidden md:flex items-center gap-1`,children:[e&&(0,a.jsx)(`div`,{className:`flex h-8 w-8 items-center justify-center rounded-lg vg-accent-chip ring-1 mr-1`,children:(0,a.jsx)(e,{className:`size-4.5! vg-accent-text`})}),r?(0,a.jsx)(n.ot,{children:(0,a.jsx)(n.ut,{children:u.map((e,t)=>(0,a.jsxs)(i.default.Fragment,{children:[t>0&&(0,a.jsx)(n.ft,{}),(0,a.jsx)(n.ct,{children:e.href?(0,a.jsx)(n.lt,{asChild:!0,children:(0,a.jsx)(l.NavLink,{to:e.href,children:e.label})}):(0,a.jsx)(n.dt,{children:e.label})})]},e.label))})}):(0,a.jsx)(`h1`,{className:`text-base font-semibold`,children:t})]}),(0,a.jsxs)(`div`,{className:`flex md:hidden items-center gap-2 min-w-0 flex-1`,children:[m?.href&&(0,a.jsx)(`button`,{type:`button`,title:f(`common.goBack`),onClick:()=>d(m.href),className:`shrink-0 flex items-center justify-center size-8 rounded-lg hover:bg-muted transition-colors`,children:(0,a.jsx)(s.IconChevronLeft,{className:`size-4`})}),e&&(0,a.jsx)(`div`,{className:`flex shrink-0 h-7 w-7 items-center justify-center rounded-lg vg-accent-chip ring-1`,children:(0,a.jsx)(e,{className:`size-3.5! vg-accent-text`})}),(0,a.jsx)(`span`,{className:`text-sm font-semibold truncate`,children:p?.label??t})]}),(0,a.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[c&&(0,a.jsx)(`div`,{className:`hidden md:flex items-center`,children:c}),(0,a.jsx)(`div`,{className:`hidden md:block`,children:(0,a.jsx)(n.i,{})}),(0,a.jsx)(n.A,{className:`md:hidden`})]})]})})},A=({icon:e,title:t,urlBase:n})=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(k,{icon:e,title:t,urlBase:n}),(0,a.jsx)(O,{})]}),j=({icon:e,feature:t,description:r,urlBase:i})=>{let s=n.M(),c=s?.isMobile??!1,u=s?.toggleSidebar??(()=>{}),{t:d}=(0,o.useTranslation)(),f=(0,a.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-lg vg-accent-chip ring-1 ${c?`cursor-pointer active:scale-95 transition-transform`:``}`,onClick:c?u:void 0,onKeyDown:c?e=>{(e.key===`Enter`||e.key===` `)&&u()}:void 0,tabIndex:c?0:void 0,role:c?`button`:void 0,title:c?d(`common.openNavigation`,{defaultValue:`Open navigation`}):void 0,children:(0,a.jsx)(e,{className:`size-5! vg-accent-text`})}),p=(0,a.jsxs)(`div`,{className:`flex items-center gap-3`,children:[f,(0,a.jsxs)(`div`,{className:`min-w-0`,children:[(0,a.jsx)(`h1`,{className:`text-base font-semibold leading-tight text-foreground truncate`,children:t}),(0,a.jsx)(`p`,{className:`hidden md:block text-xs text-muted-foreground leading-relaxed mt-0.5 truncate`,children:r})]})]});return i&&!c?(0,a.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,a.jsx)(l.NavLink,{to:i,className:`group inline-flex max-w-full`,children:p})}):(0,a.jsx)(`div`,{className:`min-w-0 flex-1`,children:p})};j.displayName=`StickyPageHeaderTitle`;var M=()=>null;M.displayName=`StickyPageHeaderAction`;var N=({children:e,menuLabel:n})=>{let r=(0,l.useNavigate)(),{t:c}=(0,o.useTranslation)(),u=[],d=[];i.default.Children.forEach(e,e=>{i.default.isValidElement(e)&&e.type?.displayName===`StickyPageHeaderAction`?u.push(e.props):d.push(e)});let f=n??c(`common.actions`);return(0,a.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[d,u.length>0&&(0,a.jsxs)(t.f,{children:[(0,a.jsx)(t.E,{asChild:!0,children:n?(0,a.jsxs)(t.u,{variant:`outline`,size:`sm`,className:`gap-1.5`,children:[(0,a.jsx)(s.IconDotsVertical,{className:`size-4`}),(0,a.jsx)(`span`,{className:`hidden sm:inline`,children:n})]}):(0,a.jsx)(t.u,{variant:`ghost`,size:`icon-sm`,"aria-label":f,title:f,children:(0,a.jsx)(s.IconDotsVertical,{className:`size-5!`})})}),(0,a.jsx)(t.m,{align:`end`,children:u.map(e=>{let n=e.icon??s.IconPlus;return(0,a.jsxs)(t.g,{disabled:e.disabled,onClick:()=>{e.href&&r(e.href),e.onClick&&e.onClick()},children:[(0,a.jsx)(n,{className:`size-4 mr-2`}),e.label]},e.label)})})]})]})};N.displayName=`StickyPageHeaderActions`;var P=Object.assign(({children:e})=>(0,a.jsx)(`header`,{className:`sticky top-0 z-10 -mx-4 lg:-mx-6 mb-5 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80`,children:(0,a.jsxs)(`div`,{className:`flex w-full items-center gap-3 px-4 lg:px-6 py-3`,children:[(0,a.jsxs)(`div`,{className:`hidden md:flex items-center gap-1`,children:[(0,a.jsx)(n.A,{className:`-ml-1`}),(0,a.jsx)(n.H,{orientation:`vertical`,className:`mx-2 data-[orientation=vertical]:h-4`})]}),e]})}),{Title:j,Actions:N,Action:M}),F={comfortable:{outer:`px-1 md:px-6 lg:px-8 py-1 md:py-4`,inset:`md:mr-1.5 md:my-1.5`,main:`pt-2 md:pt-4`},compact:{outer:`px-0 py-0`,inset:`min-w-0 md:mx-1.5`,main:`pt-1 md:pt-2`}},I=({outletContext:e,density:t=`comfortable`,...r})=>{let i=F[t];return(0,a.jsx)(`div`,{className:`w-full ${i.outer} min-h-[calc(100svh-10.5rem)]`,children:(0,a.jsx)(`div`,{className:`flex min-h-full w-full md:rounded-xl md:border md:bg-sidebar md:shadow-sm`,children:(0,a.jsxs)(n.D,{defaultOpen:!0,className:`min-h-0!`,style:{"--sidebar-width":`calc(var(--spacing) * 72)`,"--header-height":`calc(var(--spacing) * 12)`,minHeight:0},children:[(0,a.jsx)(T,{...r}),(0,a.jsx)(n._,{className:`${i.inset} md:rounded-xl md:border bg-background md:shadow-sm`,children:(0,a.jsx)(`main`,{className:`flex flex-1 flex-col ${i.main} max-md:[&_.px-6]:px-2`,children:(0,a.jsx)(l.Outlet,{context:e})})})]})})})},L=()=>null;L.displayName=`SubPageHeaderAction`;var R=Object.assign(({icon:e,feature:c,name:u,description:f,urlBase:p,onDelete:m,open:h,setOpen:g,children:_})=>{let v=n.M(),y=v?.isMobile??!1,b=v?.toggleSidebar??(()=>{}),x=(0,l.useNavigate)(),{t:S}=(0,o.useTranslation)(),C=[];i.default.Children.forEach(_,e=>{i.default.isValidElement(e)&&d(e)===`SubPageHeaderAction`&&C.push(e.props)});let w=e&&(0,a.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-lg vg-accent-chip ring-1 ${y?`cursor-pointer active:scale-95 transition-transform`:``}`,onClick:y?b:void 0,onKeyDown:y?e=>{(e.key===`Enter`||e.key===` `)&&b()}:void 0,tabIndex:y?0:void 0,title:y?S(`common.openNavigation`,{defaultValue:`Open navigation`}):void 0,children:(0,a.jsx)(e,{className:`size-5! vg-accent-text`})}),T=(0,a.jsxs)(`div`,{className:`flex items-center gap-3`,children:[w,(0,a.jsxs)(`div`,{className:`min-w-0`,children:[(0,a.jsx)(`h1`,{className:`text-base font-semibold leading-tight text-foreground`,children:c}),(0,a.jsx)(`p`,{className:`hidden md:block text-xs text-muted-foreground leading-relaxed mt-0.5`,children:f})]})]});return(0,a.jsxs)(`header`,{className:`mb-5`,children:[(0,a.jsxs)(`div`,{className:`flex w-full items-center gap-3 px-4 lg:px-6`,children:[(0,a.jsxs)(`div`,{className:`hidden md:flex items-center gap-1`,children:[(0,a.jsx)(n.A,{className:`-ml-1`}),(0,a.jsx)(n.H,{orientation:`vertical`,className:`mx-2 data-[orientation=vertical]:h-4`})]}),(0,a.jsx)(`div`,{className:`min-w-0 flex-1`,children:p&&!y?(0,a.jsx)(l.NavLink,{to:p,className:`group inline-flex`,children:T}):T}),(0,a.jsxs)(`div`,{className:`flex items-center gap-2`,children:[C.length>0&&(0,a.jsxs)(t.f,{children:[(0,a.jsx)(t.E,{asChild:!0,children:(0,a.jsxs)(t.u,{variant:`outline`,size:`sm`,className:`gap-1.5`,children:[(0,a.jsx)(s.IconDotsVertical,{className:`size-4`}),(0,a.jsx)(`span`,{className:`hidden sm:inline`,children:S(`common.actions`,{defaultValue:`Actions`})})]})}),(0,a.jsx)(t.m,{align:`end`,children:C.map(e=>{let n=e.icon??s.IconPlus;return(0,a.jsxs)(t.g,{disabled:e.disabled,onClick:()=>{e.href&&x(e.href),e.onClick&&e.onClick()},children:[(0,a.jsx)(n,{className:`size-4 mr-2`}),e.label]},e.label)})})]}),h!==void 0&&m!==void 0&&g!==void 0&&(0,a.jsx)(r.i,{feature:c,name:u,onDelete:m,open:h,setOpen:g})]})]}),(0,a.jsx)(n.H,{className:`mt-3`})]})},{Action:L});exports.BlankSlate=r.n,exports.DialogDelete=r.i,exports.GradientButtonLink=r.r,exports.GridList=b,exports.InternalSidebar=T,exports.LoadProvider=r.t,exports.NavMain=E,exports.NavUser=D,exports.Page=A,exports.PageContent=O,exports.PageHeader=k,exports.StickyPageHeader=P,exports.SubPage=I,exports.SubPageHeader=R;
1
+ "use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./loading-provider-DGuCfsl9.cjs");exports.DialogDelete=e.r,exports.GradientButtonLink=e.n,exports.LoadProvider=e.t;