@questpie/admin 3.0.2 → 3.0.4

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 (249) hide show
  1. package/README.md +34 -5
  2. package/dist/client/blocks/block-renderer.d.mts +2 -2
  3. package/dist/client/blocks/block-renderer.mjs +4 -1
  4. package/dist/client/builder/types/action-types.d.mts +31 -3
  5. package/dist/client/builder/types/collection-types.d.mts +140 -0
  6. package/dist/client/builder/types/ui-config.d.mts +16 -2
  7. package/dist/client/builder/types/views.d.mts +57 -0
  8. package/dist/client/builder/types/widget-types.d.mts +5 -0
  9. package/dist/client/components/actions/action-button.mjs +137 -199
  10. package/dist/client/components/actions/action-dialog.mjs +198 -156
  11. package/dist/client/components/actions/confirmation-dialog.mjs +2 -2
  12. package/dist/client/components/actions/header-actions.mjs +52 -53
  13. package/dist/client/components/admin-link.d.mts +2 -2
  14. package/dist/client/components/auth/auth-loading.mjs +41 -18
  15. package/dist/client/components/blocks/block-fields-renderer.mjs +64 -28
  16. package/dist/client/components/blocks/block-insert-button.mjs +4 -4
  17. package/dist/client/components/blocks/block-item.mjs +2 -2
  18. package/dist/client/components/blocks/block-library-sidebar.mjs +2 -2
  19. package/dist/client/components/component-renderer.mjs +1 -1
  20. package/dist/client/components/fields/array-field.mjs +14 -14
  21. package/dist/client/components/fields/asset-preview-field.mjs +1 -1
  22. package/dist/client/components/fields/blocks-field/blocks-field.mjs +84 -104
  23. package/dist/client/components/fields/json-field.mjs +2 -2
  24. package/dist/client/components/fields/object-array-field.mjs +22 -22
  25. package/dist/client/components/fields/object-field.mjs +5 -5
  26. package/dist/client/components/fields/relation/displays/cards-display.mjs +16 -9
  27. package/dist/client/components/fields/relation/displays/chips-display.mjs +15 -12
  28. package/dist/client/components/fields/relation/displays/grid-display.mjs +15 -11
  29. package/dist/client/components/fields/relation/displays/list-display.mjs +33 -20
  30. package/dist/client/components/fields/relation/displays/table-display.mjs +62 -93
  31. package/dist/client/components/fields/relation/relation-items-display.mjs +1 -1
  32. package/dist/client/components/fields/relation-picker.mjs +7 -6
  33. package/dist/client/components/fields/relation-select.mjs +71 -47
  34. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +392 -82
  35. package/dist/client/components/fields/rich-text-editor/extensions.mjs +54 -23
  36. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +24 -50
  37. package/dist/client/components/fields/rich-text-editor/image-upload.mjs +66 -0
  38. package/dist/client/components/fields/rich-text-editor/index.d.mts +38 -0
  39. package/dist/client/components/fields/rich-text-editor/index.mjs +637 -376
  40. package/dist/client/components/fields/rich-text-editor/link-utils.mjs +26 -0
  41. package/dist/client/components/fields/rich-text-editor/presets.d.mts +10 -0
  42. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +27 -6
  43. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +464 -346
  44. package/dist/client/components/fields/rich-text-editor/types.d.mts +77 -0
  45. package/dist/client/components/fields/upload-field.mjs +45 -49
  46. package/dist/client/components/filter-builder/columns-tab.mjs +69 -62
  47. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +473 -308
  48. package/dist/client/components/filter-builder/filters-tab.mjs +109 -82
  49. package/dist/client/components/filter-builder/saved-views-tab.mjs +300 -198
  50. package/dist/client/components/history-sidebar.mjs +850 -340
  51. package/dist/client/components/layout/field-layout-renderer.mjs +6 -5
  52. package/dist/client/components/locale-switcher.mjs +8 -8
  53. package/dist/client/components/media/media-grid.mjs +12 -9
  54. package/dist/client/components/media/media-picker-dialog.mjs +242 -230
  55. package/dist/client/components/preview/live-preview-mode.mjs +1 -1
  56. package/dist/client/components/primitives/asset-preview.mjs +37 -22
  57. package/dist/client/components/primitives/date-input.mjs +212 -249
  58. package/dist/client/components/primitives/dropzone.mjs +192 -159
  59. package/dist/client/components/primitives/field-select-control.mjs +93 -0
  60. package/dist/client/components/primitives/select-multi.mjs +251 -230
  61. package/dist/client/components/primitives/select-single.mjs +345 -290
  62. package/dist/client/components/primitives/time-input.mjs +2 -2
  63. package/dist/client/components/sheets/resource-sheet.mjs +2 -0
  64. package/dist/client/components/ui/accordion.mjs +4 -4
  65. package/dist/client/components/ui/alert.mjs +3 -3
  66. package/dist/client/components/ui/badge.mjs +4 -4
  67. package/dist/client/components/ui/button.mjs +47 -37
  68. package/dist/client/components/ui/card.mjs +2 -2
  69. package/dist/client/components/ui/checkbox.mjs +1 -1
  70. package/dist/client/components/ui/command.mjs +5 -5
  71. package/dist/client/components/ui/dialog.mjs +3 -3
  72. package/dist/client/components/ui/drawer.mjs +1 -1
  73. package/dist/client/components/ui/dropdown-menu.mjs +157 -15
  74. package/dist/client/components/ui/empty-state.mjs +88 -59
  75. package/dist/client/components/ui/field.mjs +2 -2
  76. package/dist/client/components/ui/input-group.mjs +3 -3
  77. package/dist/client/components/ui/input.mjs +1 -1
  78. package/dist/client/components/ui/kbd.mjs +1 -1
  79. package/dist/client/components/ui/label.mjs +1 -1
  80. package/dist/client/components/ui/popover.mjs +19 -11
  81. package/dist/client/components/ui/scroll-fade.mjs +170 -0
  82. package/dist/client/components/ui/search-input.mjs +1 -1
  83. package/dist/client/components/ui/select.mjs +129 -27
  84. package/dist/client/components/ui/sheet.mjs +54 -34
  85. package/dist/client/components/ui/sidebar.mjs +15 -14
  86. package/dist/client/components/ui/skeleton.mjs +28 -12
  87. package/dist/client/components/ui/switch.mjs +2 -2
  88. package/dist/client/components/ui/table.mjs +82 -74
  89. package/dist/client/components/ui/tabs.mjs +26 -31
  90. package/dist/client/components/ui/textarea.mjs +1 -1
  91. package/dist/client/components/ui/tooltip.mjs +1 -1
  92. package/dist/client/components/widgets/chart-widget.mjs +134 -96
  93. package/dist/client/components/widgets/progress-widget.mjs +59 -34
  94. package/dist/client/components/widgets/quick-actions-widget.mjs +184 -113
  95. package/dist/client/components/widgets/recent-items-widget.mjs +144 -102
  96. package/dist/client/components/widgets/stats-widget.mjs +91 -72
  97. package/dist/client/components/widgets/table-widget.mjs +159 -246
  98. package/dist/client/components/widgets/timeline-widget.mjs +66 -43
  99. package/dist/client/components/widgets/value-widget.mjs +261 -152
  100. package/dist/client/components/widgets/widget-empty-state.mjs +88 -0
  101. package/dist/client/components/widgets/widget-skeletons.mjs +53 -20
  102. package/dist/client/contexts/focus-context.d.mts +2 -2
  103. package/dist/client/hooks/use-action.mjs +63 -55
  104. package/dist/client/hooks/use-audit-history.mjs +1 -65
  105. package/dist/client/hooks/use-collection-validation.mjs +36 -23
  106. package/dist/client/hooks/use-collection.mjs +96 -1
  107. package/dist/client/hooks/use-saved-views.mjs +70 -49
  108. package/dist/client/hooks/use-server-actions.mjs +59 -40
  109. package/dist/client/hooks/use-server-validation.mjs +156 -41
  110. package/dist/client/hooks/use-server-widget-data.mjs +1 -1
  111. package/dist/client/hooks/use-setup-status.d.mts +3 -3
  112. package/dist/client/hooks/use-setup-status.mjs +2 -2
  113. package/dist/client/hooks/use-transition-stage.mjs +2 -10
  114. package/dist/client/hooks/use-validation-error-map.mjs +31 -13
  115. package/dist/client/hooks/use-view-state.mjs +238 -174
  116. package/dist/client/i18n/date-locale.mjs +33 -0
  117. package/dist/client/i18n/hooks.mjs +17 -1
  118. package/dist/client/lib/utils.mjs +3 -2
  119. package/dist/client/preview/block-scope-context.d.mts +2 -2
  120. package/dist/client/preview/preview-banner.d.mts +2 -2
  121. package/dist/client/preview/preview-field.d.mts +4 -4
  122. package/dist/client/preview/preview-field.mjs +2 -2
  123. package/dist/client/runtime/provider.mjs +8 -1
  124. package/dist/client/runtime/translations-provider.mjs +1 -1
  125. package/dist/client/scope/picker.d.mts +2 -2
  126. package/dist/client/scope/provider.d.mts +2 -2
  127. package/dist/client/styles/base.css +1022 -0
  128. package/dist/client/styles/index.css +3 -589
  129. package/dist/client/utils/auto-expand-fields.mjs +4 -2
  130. package/dist/client/utils/keyboard-shortcuts.mjs +26 -0
  131. package/dist/client/utils/use-lazy-component.mjs +80 -0
  132. package/dist/client/views/auth/auth-layout.d.mts +18 -11
  133. package/dist/client/views/auth/auth-layout.mjs +291 -80
  134. package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
  135. package/dist/client/views/auth/forgot-password-form.mjs +2 -2
  136. package/dist/client/views/auth/login-form.d.mts +2 -2
  137. package/dist/client/views/auth/login-form.mjs +1 -1
  138. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  139. package/dist/client/views/auth/reset-password-form.mjs +2 -2
  140. package/dist/client/views/auth/setup-form.d.mts +2 -2
  141. package/dist/client/views/collection/auto-form-fields.mjs +11 -9
  142. package/dist/client/views/collection/bulk-action-toolbar.mjs +173 -138
  143. package/dist/client/views/collection/cells/complex-cells.mjs +22 -22
  144. package/dist/client/views/collection/cells/primitive-cells.mjs +1 -1
  145. package/dist/client/views/collection/cells/relation-cells.mjs +147 -129
  146. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +224 -278
  147. package/dist/client/views/collection/cells/shared/relation-chip.mjs +64 -36
  148. package/dist/client/views/collection/cells/upload-cells.mjs +199 -9
  149. package/dist/client/views/collection/columns/build-columns.mjs +29 -9
  150. package/dist/client/views/collection/columns/column-defaults.mjs +2 -2
  151. package/dist/client/views/collection/field-renderer.mjs +50 -89
  152. package/dist/client/views/collection/form-view.mjs +237 -227
  153. package/dist/client/views/collection/table-view.mjs +1162 -229
  154. package/dist/client/views/collection/view-skeletons.mjs +222 -79
  155. package/dist/client/views/common/global-search.mjs +29 -18
  156. package/dist/client/views/dashboard/dashboard-grid.mjs +678 -501
  157. package/dist/client/views/dashboard/dashboard-widget.mjs +6 -3
  158. package/dist/client/views/dashboard/widget-card.mjs +23 -14
  159. package/dist/client/views/globals/global-form-view.mjs +634 -589
  160. package/dist/client/views/layout/admin-layout-provider.mjs +67 -70
  161. package/dist/client/views/layout/admin-layout.d.mts +3 -6
  162. package/dist/client/views/layout/admin-layout.mjs +149 -172
  163. package/dist/client/views/layout/admin-router.mjs +747 -544
  164. package/dist/client/views/layout/admin-sidebar.d.mts +38 -1
  165. package/dist/client/views/layout/admin-sidebar.mjs +751 -591
  166. package/dist/client/views/layout/admin-theme.d.mts +10 -0
  167. package/dist/client/views/layout/admin-theme.mjs +84 -0
  168. package/dist/client/views/layout/admin-view-layout.mjs +161 -0
  169. package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
  170. package/dist/client/views/pages/accept-invite-page.mjs +49 -26
  171. package/dist/client/views/pages/dashboard-page.d.mts +2 -2
  172. package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
  173. package/dist/client/views/pages/forgot-password-page.mjs +2 -19
  174. package/dist/client/views/pages/invite-page.d.mts +2 -2
  175. package/dist/client/views/pages/invite-page.mjs +2 -19
  176. package/dist/client/views/pages/login-page.d.mts +3 -3
  177. package/dist/client/views/pages/login-page.mjs +4 -21
  178. package/dist/client/views/pages/reset-password-page.d.mts +2 -2
  179. package/dist/client/views/pages/reset-password-page.mjs +3 -20
  180. package/dist/client/views/pages/setup-page.d.mts +2 -2
  181. package/dist/client/views/pages/setup-page.mjs +3 -20
  182. package/dist/client.d.mts +6 -2
  183. package/dist/client.mjs +2 -1
  184. package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
  185. package/dist/index.d.mts +6 -2
  186. package/dist/index.mjs +2 -1
  187. package/dist/server/augmentation/dashboard.d.mts +67 -3
  188. package/dist/server/augmentation/form-layout.d.mts +21 -0
  189. package/dist/server/augmentation/index.d.mts +1 -1
  190. package/dist/server/codegen/admin-client-template.mjs +4 -0
  191. package/dist/server/fields/blocks.d.mts +1 -1
  192. package/dist/server/fields/blocks.mjs +12 -0
  193. package/dist/server/fields/rich-text.d.mts +1 -1
  194. package/dist/server/fields/rich-text.mjs +8 -0
  195. package/dist/server/i18n/index.mjs +17 -1
  196. package/dist/server/i18n/messages/cs.mjs +23 -0
  197. package/dist/server/i18n/messages/de.mjs +23 -0
  198. package/dist/server/i18n/messages/en.mjs +64 -1
  199. package/dist/server/i18n/messages/es.mjs +23 -0
  200. package/dist/server/i18n/messages/fr.mjs +23 -0
  201. package/dist/server/i18n/messages/pl.mjs +23 -0
  202. package/dist/server/i18n/messages/pt.mjs +23 -0
  203. package/dist/server/i18n/messages/sk.mjs +83 -1
  204. package/dist/server/modules/admin/block/introspection.mjs +4 -1
  205. package/dist/server/modules/admin/block/prefetch.mjs +12 -2
  206. package/dist/server/modules/admin/collections/account.d.mts +50 -50
  207. package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
  208. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  209. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  210. package/dist/server/modules/admin/collections/apikey.d.mts +64 -64
  211. package/dist/server/modules/admin/collections/assets.d.mts +20 -20
  212. package/dist/server/modules/admin/collections/assets.mjs +0 -1
  213. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  214. package/dist/server/modules/admin/collections/user.d.mts +40 -28
  215. package/dist/server/modules/admin/collections/user.mjs +40 -9
  216. package/dist/server/modules/admin/collections/verification.d.mts +36 -36
  217. package/dist/server/modules/admin/dto/admin-config.dto.mjs +2 -0
  218. package/dist/server/modules/admin/factories.mjs +7 -18
  219. package/dist/server/modules/admin/index.d.mts +1 -1
  220. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  221. package/dist/server/modules/admin/routes/admin-config.mjs +34 -16
  222. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  223. package/dist/server/modules/admin/routes/execute-action.mjs +33 -0
  224. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  225. package/dist/server/modules/admin/routes/preview.d.mts +11 -11
  226. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  227. package/dist/server/modules/admin/routes/setup.d.mts +10 -10
  228. package/dist/server/modules/admin/routes/setup.mjs +7 -7
  229. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  230. package/dist/server/modules/admin/routes/translations.mjs +5 -1
  231. package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
  232. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +1 -1
  233. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +25 -25
  234. package/dist/server/modules/audit/.generated/module.d.mts +7 -7
  235. package/dist/server/modules/audit/.generated/module.mjs +1 -1
  236. package/dist/server/modules/audit/collections/audit-log.d.mts +39 -39
  237. package/dist/server/modules/audit/collections/audit-log.mjs +1 -1
  238. package/dist/server/modules/audit/config/app.mjs +99 -42
  239. package/dist/server/modules/audit/jobs/audit-cleanup.mjs +1 -1
  240. package/dist/server/plugin.mjs +4 -2
  241. package/dist/server/proxy-factories.d.mts +4 -3
  242. package/dist/server/proxy-factories.mjs +34 -8
  243. package/dist/shared/types/saved-views.types.d.mts +2 -0
  244. package/package.json +6 -4
  245. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +0 -85
  246. package/dist/client/components/ui/spinner.mjs +0 -52
  247. package/dist/client/components/ui/toolbar.mjs +0 -136
  248. package/dist/client/contexts/breadcrumb-context.mjs +0 -60
  249. package/dist/client/views/layout/admin-topbar.mjs +0 -236
@@ -1,16 +1,18 @@
1
1
  import { useResolveText, useSafeI18n, useTranslation } from "../../i18n/hooks.mjs";
2
2
  import { cn, formatLabel } from "../../lib/utils.mjs";
3
- import { selectAdmin, selectBasePath, selectContentLocale, selectNavigate, selectSetContentLocale, useAdminStore } from "../../runtime/provider.mjs";
3
+ import { selectAdmin, selectBasePath, selectContentLocale, selectNavigate, selectSetContentLocale, useAdminStore, useAdminStoreRaw } from "../../runtime/provider.mjs";
4
4
  import { useSafeContentLocales } from "../../runtime/content-locales-provider.mjs";
5
5
  import { ComponentRenderer } from "../../components/component-renderer.mjs";
6
+ import { Button } from "../../components/ui/button.mjs";
6
7
  import { Tooltip, TooltipContent, TooltipTrigger } from "../../components/ui/tooltip.mjs";
7
8
  import { useAdminConfig } from "../../hooks/use-admin-config.mjs";
8
9
  import { getFlagUrl } from "../../utils/locale-to-flag.mjs";
9
10
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from "../../components/ui/dropdown-menu.mjs";
11
+ import { useLazyComponent } from "../../utils/use-lazy-component.mjs";
12
+ import { Skeleton } from "../../components/ui/skeleton.mjs";
10
13
  import { useAuthClientSafe } from "../../hooks/use-auth.mjs";
11
14
  import { useCurrentUser, useSessionState } from "../../hooks/use-current-user.mjs";
12
- import { Skeleton } from "../../components/ui/skeleton.mjs";
13
- import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarMenu, SidebarMenuItem, SidebarSeparator, useSidebar } from "../../components/ui/sidebar.mjs";
15
+ import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarMenu, SidebarMenuItem, SidebarSeparator, SidebarTrigger, useSidebar } from "../../components/ui/sidebar.mjs";
14
16
  import { getAdminPreferenceQueryKey, useAdminPreference, useSetAdminPreference } from "../../hooks/use-admin-preferences.mjs";
15
17
  import { c } from "react/compiler-runtime";
16
18
  import { Icon } from "@iconify/react";
@@ -265,7 +267,7 @@ function QuestpieSymbol(t0) {
265
267
  stroke: "currentColor",
266
268
  strokeWidth: "2",
267
269
  strokeLinecap: "square",
268
- className: "text-[#0a0a0a] dark:text-white"
270
+ className: "text-foreground"
269
271
  });
270
272
  t4 = /* @__PURE__ */ jsx("path", {
271
273
  d: "M23 13H13V23H23V13Z",
@@ -319,114 +321,76 @@ function isRouteActive(activeRoute, itemHref, basePath, exact = false) {
319
321
  /**
320
322
  * Menu button styles - QUESTPIE design: clean, technical look
321
323
  */
322
- const menuButtonStyles = cn("flex w-full items-center gap-2.5 px-3 py-2 text-sm font-medium transition-colors duration-150", "text-sidebar-foreground hover:text-sidebar-foreground hover:bg-sidebar-accent", "focus-visible:ring-sidebar-ring focus-visible:ring-1 focus-visible:outline-none", "group-data-[collapsible=icon]:size-8 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:px-2");
323
- const menuButtonActiveStyles = cn("bg-sidebar-primary/10 text-sidebar-primary");
324
- /**
325
- * Active indicator bar positioned at the sidebar group edge.
326
- * Uses negative left offset to compensate for SidebarGroupContent nesting padding.
327
- */
328
- function ActiveIndicator(t0) {
329
- const $ = c(2);
330
- const { depth } = t0;
331
- const t1 = `${-depth * .75}rem`;
332
- let t2;
333
- if ($[0] !== t1) {
334
- t2 = /* @__PURE__ */ jsx("div", {
335
- className: "bg-sidebar-primary absolute top-0 bottom-0 w-0.5",
336
- style: { left: t1 },
337
- "aria-hidden": "true"
338
- });
339
- $[0] = t1;
340
- $[1] = t2;
341
- } else t2 = $[1];
342
- return t2;
343
- }
324
+ const menuButtonStyles = cn("item-surface font-chrome flex w-full items-center gap-2 px-2 py-2 text-[13px] font-medium transition-[background-color,color,border-color,transform] duration-[var(--motion-duration-base)] ease-[var(--motion-ease-standard)] active:scale-[0.96] motion-reduce:transition-none motion-reduce:active:scale-100", "text-sidebar-foreground/75 hover:bg-sidebar-accent hover:text-sidebar-foreground", "focus-visible:ring-sidebar-ring focus-visible:ring-1 focus-visible:outline-none", "group-data-[collapsible=icon]:size-8 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:px-2");
325
+ const menuButtonActiveStyles = cn("border-transparent bg-[var(--sidebar-active-background)] text-[var(--sidebar-active-foreground)]");
344
326
  function NavItem(t0) {
345
- const $ = c(66);
327
+ const $ = c(45);
346
328
  const { item, isActive, LinkComponent, renderNavItem, useActiveProps, className, depth: t1 } = t0;
347
- const depth = t1 === void 0 ? 0 : t1;
348
329
  const { state, isMobile, setOpenMobile } = useSidebar();
349
330
  const collapsed = state === "collapsed";
350
331
  const resolveText = useResolveText();
351
332
  let t2;
352
- if ($[0] !== isMobile || $[1] !== setOpenMobile) {
353
- t2 = () => {
354
- if (isMobile) setOpenMobile(false);
355
- };
356
- $[0] = isMobile;
357
- $[1] = setOpenMobile;
333
+ if ($[0] !== item.label || $[1] !== resolveText) {
334
+ t2 = resolveText(item.label);
335
+ $[0] = item.label;
336
+ $[1] = resolveText;
358
337
  $[2] = t2;
359
338
  } else t2 = $[2];
360
- const handleClick = t2;
361
- if (renderNavItem) {
362
- const NavItemRenderer = renderNavItem;
363
- let t3$1;
364
- if ($[3] !== NavItemRenderer || $[4] !== collapsed || $[5] !== isActive || $[6] !== item) {
365
- t3$1 = /* @__PURE__ */ jsx(NavItemRenderer, {
366
- item,
367
- isActive,
368
- collapsed
369
- });
370
- $[3] = NavItemRenderer;
371
- $[4] = collapsed;
372
- $[5] = isActive;
373
- $[6] = item;
374
- $[7] = t3$1;
375
- } else t3$1 = $[7];
376
- return t3$1;
377
- }
378
- let t3;
379
- if ($[8] !== item.label || $[9] !== resolveText) {
380
- t3 = resolveText(item.label);
381
- $[8] = item.label;
382
- $[9] = resolveText;
383
- $[10] = t3;
384
- } else t3 = $[10];
385
- const label = t3;
339
+ const label = t2;
386
340
  const shouldUseExact = item.type === "link" || item.type === "page";
387
- let t4;
388
- if ($[11] !== shouldUseExact || $[12] !== useActiveProps) {
389
- t4 = useActiveProps ? {
341
+ let t3;
342
+ if ($[3] !== shouldUseExact || $[4] !== useActiveProps) {
343
+ t3 = useActiveProps ? {
390
344
  activeProps: { className: menuButtonActiveStyles },
391
345
  activeOptions: { exact: shouldUseExact }
392
346
  } : {};
393
- $[11] = shouldUseExact;
394
- $[12] = useActiveProps;
395
- $[13] = t4;
396
- } else t4 = $[13];
397
- const linkActiveProps = t4;
347
+ $[3] = shouldUseExact;
348
+ $[4] = useActiveProps;
349
+ $[5] = t3;
350
+ } else t3 = $[5];
351
+ const linkActiveProps = t3;
398
352
  const ariaCurrent = isActive ? "page" : void 0;
353
+ let t4;
354
+ if ($[6] !== isMobile || $[7] !== setOpenMobile) {
355
+ t4 = () => {
356
+ if (isMobile) setOpenMobile(false);
357
+ };
358
+ $[6] = isMobile;
359
+ $[7] = setOpenMobile;
360
+ $[8] = t4;
361
+ } else t4 = $[8];
362
+ const handleClick = t4;
399
363
  const t5 = item.href;
400
364
  const t6 = collapsed ? label : void 0;
401
365
  const t7 = isActive && "qa-sidebar__nav-link--active";
402
366
  const t8 = isActive && menuButtonActiveStyles;
403
367
  let t9;
404
- if ($[14] !== t7 || $[15] !== t8) {
368
+ if ($[9] !== t7 || $[10] !== t8) {
405
369
  t9 = cn("qa-sidebar__nav-link", menuButtonStyles, t7, t8);
406
- $[14] = t7;
407
- $[15] = t8;
408
- $[16] = t9;
409
- } else t9 = $[16];
370
+ $[9] = t7;
371
+ $[10] = t8;
372
+ $[11] = t9;
373
+ } else t9 = $[11];
410
374
  let t10;
411
- if ($[17] !== item.icon) {
375
+ if ($[12] !== item.icon) {
412
376
  t10 = item.icon && /* @__PURE__ */ jsx(RenderIcon, {
413
377
  icon: item.icon,
414
378
  className: "qa-sidebar__nav-icon"
415
379
  });
416
- $[17] = item.icon;
417
- $[18] = t10;
418
- } else t10 = $[18];
380
+ $[12] = item.icon;
381
+ $[13] = t10;
382
+ } else t10 = $[13];
419
383
  let t11;
420
- if ($[19] !== label) {
384
+ if ($[14] !== label) {
421
385
  t11 = /* @__PURE__ */ jsx("span", {
422
386
  className: "qa-sidebar__nav-label truncate group-data-[collapsible=icon]:hidden",
423
387
  children: label
424
388
  });
425
- $[19] = label;
426
- $[20] = t11;
427
- } else t11 = $[20];
389
+ $[14] = label;
390
+ $[15] = t11;
391
+ } else t11 = $[15];
428
392
  let t12;
429
- if ($[21] !== LinkComponent || $[22] !== item.href || $[23] !== linkActiveProps || $[24] !== t10 || $[25] !== t11 || $[26] !== t6 || $[27] !== t9) {
393
+ if ($[16] !== LinkComponent || $[17] !== item.href || $[18] !== linkActiveProps || $[19] !== t10 || $[20] !== t11 || $[21] !== t6 || $[22] !== t9) {
430
394
  t12 = /* @__PURE__ */ jsxs(LinkComponent, {
431
395
  to: t5,
432
396
  "aria-label": t6,
@@ -434,126 +398,83 @@ function NavItem(t0) {
434
398
  ...linkActiveProps,
435
399
  children: [t10, t11]
436
400
  });
437
- $[21] = LinkComponent;
438
- $[22] = item.href;
439
- $[23] = linkActiveProps;
440
- $[24] = t10;
441
- $[25] = t11;
442
- $[26] = t6;
443
- $[27] = t9;
444
- $[28] = t12;
445
- } else t12 = $[28];
401
+ $[16] = LinkComponent;
402
+ $[17] = item.href;
403
+ $[18] = linkActiveProps;
404
+ $[19] = t10;
405
+ $[20] = t11;
406
+ $[21] = t6;
407
+ $[22] = t9;
408
+ $[23] = t12;
409
+ } else t12 = $[23];
446
410
  const linkContent = t12;
447
- if (collapsed && !isMobile) {
448
- let t13$1;
449
- if ($[29] !== isActive) {
450
- t13$1 = isActive && /* @__PURE__ */ jsx(ActiveIndicator, { depth: 0 });
451
- $[29] = isActive;
452
- $[30] = t13$1;
453
- } else t13$1 = $[30];
454
- const t14$1 = item.href;
455
- const t15$1 = isActive && "qa-sidebar__nav-link--active";
456
- const t16 = isActive && menuButtonActiveStyles;
457
- let t17;
458
- if ($[31] !== t15$1 || $[32] !== t16) {
459
- t17 = cn("qa-sidebar__nav-link", menuButtonStyles, t15$1, t16);
460
- $[31] = t15$1;
461
- $[32] = t16;
462
- $[33] = t17;
463
- } else t17 = $[33];
464
- let t18;
465
- if ($[34] !== item.icon) {
466
- t18 = item.icon && /* @__PURE__ */ jsx(RenderIcon, { icon: item.icon });
467
- $[34] = item.icon;
468
- $[35] = t18;
469
- } else t18 = $[35];
470
- let t19;
471
- if ($[36] !== label) {
472
- t19 = /* @__PURE__ */ jsx("span", {
473
- className: "truncate group-data-[collapsible=icon]:hidden",
474
- children: label
475
- });
476
- $[36] = label;
477
- $[37] = t19;
478
- } else t19 = $[37];
479
- let t20;
480
- if ($[38] !== LinkComponent || $[39] !== item.href || $[40] !== linkActiveProps || $[41] !== t17 || $[42] !== t18 || $[43] !== t19) {
481
- t20 = /* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(LinkComponent, {
482
- to: t14$1,
483
- className: t17,
411
+ let t13;
412
+ if ($[24] !== LinkComponent || $[25] !== ariaCurrent || $[26] !== className || $[27] !== collapsed || $[28] !== handleClick || $[29] !== isActive || $[30] !== isMobile || $[31] !== item.href || $[32] !== item.icon || $[33] !== label || $[34] !== linkActiveProps || $[35] !== linkContent) {
413
+ t13 = collapsed && !isMobile ? /* @__PURE__ */ jsx(SidebarMenuItem, {
414
+ className: "qa-sidebar__nav-item",
415
+ onClickCapture: handleClick,
416
+ "aria-current": ariaCurrent,
417
+ children: /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsxs(LinkComponent, {
418
+ to: item.href,
419
+ className: cn("qa-sidebar__nav-link", menuButtonStyles, isActive && "qa-sidebar__nav-link--active", isActive && menuButtonActiveStyles),
484
420
  ...linkActiveProps,
485
- children: [t18, t19]
486
- }) });
487
- $[38] = LinkComponent;
488
- $[39] = item.href;
489
- $[40] = linkActiveProps;
490
- $[41] = t17;
491
- $[42] = t18;
492
- $[43] = t19;
493
- $[44] = t20;
494
- } else t20 = $[44];
495
- let t21;
496
- if ($[45] !== label) {
497
- t21 = /* @__PURE__ */ jsx(TooltipContent, {
421
+ children: [item.icon && /* @__PURE__ */ jsx(RenderIcon, { icon: item.icon }), /* @__PURE__ */ jsx("span", {
422
+ className: "truncate group-data-[collapsible=icon]:hidden",
423
+ children: label
424
+ })]
425
+ }) }), /* @__PURE__ */ jsx(TooltipContent, {
498
426
  side: "right",
499
427
  align: "center",
500
428
  children: label
501
- });
502
- $[45] = label;
503
- $[46] = t21;
504
- } else t21 = $[46];
505
- let t22;
506
- if ($[47] !== t20 || $[48] !== t21) {
507
- t22 = /* @__PURE__ */ jsxs(Tooltip, { children: [t20, t21] });
508
- $[47] = t20;
509
- $[48] = t21;
510
- $[49] = t22;
511
- } else t22 = $[49];
512
- let t23;
513
- if ($[50] !== ariaCurrent || $[51] !== handleClick || $[52] !== t13$1 || $[53] !== t22) {
514
- t23 = /* @__PURE__ */ jsxs(SidebarMenuItem, {
515
- className: "qa-sidebar__nav-item",
516
- onClickCapture: handleClick,
517
- "aria-current": ariaCurrent,
518
- children: [t13$1, t22]
519
- });
520
- $[50] = ariaCurrent;
521
- $[51] = handleClick;
522
- $[52] = t13$1;
523
- $[53] = t22;
524
- $[54] = t23;
525
- } else t23 = $[54];
526
- return t23;
527
- }
528
- let t13;
529
- if ($[55] !== className) {
530
- t13 = cn("qa-sidebar__nav-item", className);
531
- $[55] = className;
532
- $[56] = t13;
533
- } else t13 = $[56];
534
- let t14;
535
- if ($[57] !== depth || $[58] !== isActive) {
536
- t14 = isActive && /* @__PURE__ */ jsx(ActiveIndicator, { depth });
537
- $[57] = depth;
538
- $[58] = isActive;
539
- $[59] = t14;
540
- } else t14 = $[59];
541
- let t15;
542
- if ($[60] !== ariaCurrent || $[61] !== handleClick || $[62] !== linkContent || $[63] !== t13 || $[64] !== t14) {
543
- t15 = /* @__PURE__ */ jsxs(SidebarMenuItem, {
544
- className: t13,
429
+ })] })
430
+ }) : /* @__PURE__ */ jsx(SidebarMenuItem, {
431
+ className: cn("qa-sidebar__nav-item", className),
545
432
  onClickCapture: handleClick,
546
433
  "aria-current": ariaCurrent,
547
- children: [t14, linkContent]
434
+ children: linkContent
548
435
  });
549
- $[60] = ariaCurrent;
550
- $[61] = handleClick;
551
- $[62] = linkContent;
552
- $[63] = t13;
553
- $[64] = t14;
554
- $[65] = t15;
555
- } else t15 = $[65];
556
- return t15;
436
+ $[24] = LinkComponent;
437
+ $[25] = ariaCurrent;
438
+ $[26] = className;
439
+ $[27] = collapsed;
440
+ $[28] = handleClick;
441
+ $[29] = isActive;
442
+ $[30] = isMobile;
443
+ $[31] = item.href;
444
+ $[32] = item.icon;
445
+ $[33] = label;
446
+ $[34] = linkActiveProps;
447
+ $[35] = linkContent;
448
+ $[36] = t13;
449
+ } else t13 = $[36];
450
+ const builtInNavItem = t13;
451
+ if (renderNavItem) {
452
+ let t14;
453
+ if ($[37] !== collapsed || $[38] !== isActive || $[39] !== item || $[40] !== renderNavItem) {
454
+ t14 = renderNavItem({
455
+ item,
456
+ isActive,
457
+ collapsed
458
+ });
459
+ $[37] = collapsed;
460
+ $[38] = isActive;
461
+ $[39] = item;
462
+ $[40] = renderNavItem;
463
+ $[41] = t14;
464
+ } else t14 = $[41];
465
+ let t15;
466
+ if ($[42] !== builtInNavItem || $[43] !== t14) {
467
+ t15 = /* @__PURE__ */ jsx(React.Suspense, {
468
+ fallback: builtInNavItem,
469
+ children: t14
470
+ });
471
+ $[42] = builtInNavItem;
472
+ $[43] = t14;
473
+ $[44] = t15;
474
+ } else t15 = $[44];
475
+ return t15;
476
+ }
477
+ return builtInNavItem;
557
478
  }
558
479
  const SIDEBAR_COLLAPSED_SECTIONS_KEY = "sidebar:collapsed-sections";
559
480
  /**
@@ -667,7 +588,7 @@ function NavGroup(t0) {
667
588
  className: "size-3.5"
668
589
  }),
669
590
  /* @__PURE__ */ jsx("span", {
670
- className: "flex-1 text-left font-mono",
591
+ className: "flex-1 text-left",
671
592
  children: groupLabel
672
593
  }),
673
594
  group.collapsible && /* @__PURE__ */ jsx(Icon, {
@@ -689,7 +610,7 @@ function NavGroup(t0) {
689
610
  isActive: isRouteActive(activeRoute, element.href, basePath, shouldUseExact),
690
611
  LinkComponent,
691
612
  renderNavItem,
692
- useActiveProps,
613
+ useActiveProps: useActiveProps && !activeRoute,
693
614
  depth
694
615
  }, element.id);
695
616
  }) }), sections.map((subSection) => /* @__PURE__ */ jsx(NavGroup, {
@@ -742,7 +663,7 @@ function UserFooterSkeleton(t0) {
742
663
  const t1 = collapsed && "justify-center";
743
664
  let t2;
744
665
  if ($[0] !== t1) {
745
- t2 = cn("flex items-center gap-2.5 p-2", t1);
666
+ t2 = cn("item-surface border-sidebar-border/40 flex items-center gap-2.5 p-2", t1);
746
667
  $[0] = t1;
747
668
  $[1] = t2;
748
669
  } else t2 = $[1];
@@ -755,7 +676,13 @@ function UserFooterSkeleton(t0) {
755
676
  if ($[3] !== collapsed) {
756
677
  t4 = !collapsed && /* @__PURE__ */ jsxs("div", {
757
678
  className: "grid flex-1 gap-1",
758
- children: [/* @__PURE__ */ jsx(Skeleton, { className: "h-3 w-24" }), /* @__PURE__ */ jsx(Skeleton, { className: "h-2 w-32" })]
679
+ children: [/* @__PURE__ */ jsx(Skeleton, {
680
+ variant: "text",
681
+ className: "h-3 w-24"
682
+ }), /* @__PURE__ */ jsx(Skeleton, {
683
+ variant: "text",
684
+ className: "h-2 w-32"
685
+ })]
759
686
  });
760
687
  $[3] = collapsed;
761
688
  $[4] = t4;
@@ -775,8 +702,10 @@ function UserFooterSkeleton(t0) {
775
702
  } else t5 = $[7];
776
703
  return t5;
777
704
  }
778
- function UserFooter() {
779
- const $ = c(84);
705
+ function UserFooter(t0) {
706
+ const $ = c(109);
707
+ const { theme: t1, setTheme, showThemeToggle } = t0;
708
+ const theme = t1 === void 0 ? "system" : t1;
780
709
  const { state, isMobile, setOpenMobile } = useSidebar();
781
710
  const collapsed = state === "collapsed";
782
711
  const authClient = useAuthClientSafe();
@@ -789,116 +718,183 @@ function UserFooter() {
789
718
  const localeConfig = admin.getLocale();
790
719
  const uiLocales = i18nAdapter?.locales ?? localeConfig.supported ?? ["en"];
791
720
  const hasMultipleUiLocales = uiLocales.length > 1;
792
- let t0;
721
+ let t2;
793
722
  if ($[0] !== getLocaleName) {
794
- t0 = (code) => ({
723
+ t2 = (code) => ({
795
724
  code,
796
725
  label: getLocaleName(code)
797
726
  });
798
727
  $[0] = getLocaleName;
799
- $[1] = t0;
800
- } else t0 = $[1];
801
- const uiLocaleOptions = uiLocales.map(t0);
728
+ $[1] = t2;
729
+ } else t2 = $[1];
730
+ const uiLocaleOptions = uiLocales.map(t2);
802
731
  const contentLocales = useSafeContentLocales();
803
732
  const contentLocale = useAdminStore(selectContentLocale);
804
733
  const setContentLocale = useAdminStore(selectSetContentLocale);
805
734
  const hasMultipleContentLocales = (contentLocales?.locales?.length ?? 0) > 1;
806
- let t1;
807
- if ($[2] !== isMobile || $[3] !== setOpenMobile) {
808
- t1 = () => {
735
+ const shouldShowThemeToggle = !!setTheme && showThemeToggle !== false;
736
+ let t3;
737
+ if ($[2] !== t) {
738
+ t3 = t("ui.themeLight");
739
+ $[2] = t;
740
+ $[3] = t3;
741
+ } else t3 = $[3];
742
+ let t4;
743
+ if ($[4] !== t3) {
744
+ t4 = {
745
+ value: "light",
746
+ label: t3,
747
+ icon: "ph:sun"
748
+ };
749
+ $[4] = t3;
750
+ $[5] = t4;
751
+ } else t4 = $[5];
752
+ let t5;
753
+ if ($[6] !== t) {
754
+ t5 = t("ui.themeDark");
755
+ $[6] = t;
756
+ $[7] = t5;
757
+ } else t5 = $[7];
758
+ let t6;
759
+ if ($[8] !== t5) {
760
+ t6 = {
761
+ value: "dark",
762
+ label: t5,
763
+ icon: "ph:moon"
764
+ };
765
+ $[8] = t5;
766
+ $[9] = t6;
767
+ } else t6 = $[9];
768
+ let t7;
769
+ if ($[10] !== t) {
770
+ t7 = t("ui.themeSystem");
771
+ $[10] = t;
772
+ $[11] = t7;
773
+ } else t7 = $[11];
774
+ let t8;
775
+ if ($[12] !== t7) {
776
+ t8 = {
777
+ value: "system",
778
+ label: t7,
779
+ icon: "ph:monitor"
780
+ };
781
+ $[12] = t7;
782
+ $[13] = t8;
783
+ } else t8 = $[13];
784
+ let t9;
785
+ if ($[14] !== t4 || $[15] !== t6 || $[16] !== t8) {
786
+ t9 = [
787
+ t4,
788
+ t6,
789
+ t8
790
+ ];
791
+ $[14] = t4;
792
+ $[15] = t6;
793
+ $[16] = t8;
794
+ $[17] = t9;
795
+ } else t9 = $[17];
796
+ const themeOptions = t9;
797
+ let t10;
798
+ if ($[18] !== isMobile || $[19] !== setOpenMobile) {
799
+ t10 = () => {
809
800
  if (isMobile) setOpenMobile(false);
810
801
  };
811
- $[2] = isMobile;
812
- $[3] = setOpenMobile;
813
- $[4] = t1;
814
- } else t1 = $[4];
815
- const closeSidebarOnMobile = t1;
816
- let t2;
817
- if ($[5] !== authClient || $[6] !== basePath || $[7] !== closeSidebarOnMobile || $[8] !== navigate || $[9] !== t) {
818
- t2 = async () => {
802
+ $[18] = isMobile;
803
+ $[19] = setOpenMobile;
804
+ $[20] = t10;
805
+ } else t10 = $[20];
806
+ const closeSidebarOnMobile = t10;
807
+ let t11;
808
+ if ($[21] !== authClient || $[22] !== basePath || $[23] !== closeSidebarOnMobile || $[24] !== navigate || $[25] !== t) {
809
+ t11 = async () => {
819
810
  if (!authClient) return;
820
811
  try {
821
812
  await authClient.signOut();
822
813
  closeSidebarOnMobile();
823
814
  navigate(`${basePath}/login`);
824
- } catch (t3$1) {
815
+ } catch (t12$1) {
825
816
  toast.error(t("auth.logoutFailed"));
826
817
  }
827
818
  };
828
- $[5] = authClient;
829
- $[6] = basePath;
830
- $[7] = closeSidebarOnMobile;
831
- $[8] = navigate;
832
- $[9] = t;
833
- $[10] = t2;
834
- } else t2 = $[10];
835
- const handleLogout = t2;
836
- let t3;
837
- if ($[11] !== basePath || $[12] !== closeSidebarOnMobile || $[13] !== navigate || $[14] !== user) {
838
- t3 = () => {
819
+ $[21] = authClient;
820
+ $[22] = basePath;
821
+ $[23] = closeSidebarOnMobile;
822
+ $[24] = navigate;
823
+ $[25] = t;
824
+ $[26] = t11;
825
+ } else t11 = $[26];
826
+ const handleLogout = t11;
827
+ let t12;
828
+ if ($[27] !== basePath || $[28] !== closeSidebarOnMobile || $[29] !== navigate || $[30] !== user) {
829
+ t12 = () => {
839
830
  if (user?.id) {
840
831
  closeSidebarOnMobile();
841
832
  navigate(`${basePath}/collections/user/${user.id}`);
842
833
  }
843
834
  };
844
- $[11] = basePath;
845
- $[12] = closeSidebarOnMobile;
846
- $[13] = navigate;
847
- $[14] = user;
848
- $[15] = t3;
849
- } else t3 = $[15];
850
- const handleMyAccount = t3;
835
+ $[27] = basePath;
836
+ $[28] = closeSidebarOnMobile;
837
+ $[29] = navigate;
838
+ $[30] = user;
839
+ $[31] = t12;
840
+ } else t12 = $[31];
841
+ const handleMyAccount = t12;
851
842
  if (isPending) {
852
- let t4$1;
853
- if ($[16] !== collapsed) {
854
- t4$1 = /* @__PURE__ */ jsx(UserFooterSkeleton, { collapsed });
855
- $[16] = collapsed;
856
- $[17] = t4$1;
857
- } else t4$1 = $[17];
858
- return t4$1;
843
+ let t13$1;
844
+ if ($[32] !== collapsed) {
845
+ t13$1 = /* @__PURE__ */ jsx(UserFooterSkeleton, { collapsed });
846
+ $[32] = collapsed;
847
+ $[33] = t13$1;
848
+ } else t13$1 = $[33];
849
+ return t13$1;
859
850
  }
860
851
  if (!authClient || !user) return null;
861
- let t4;
862
- if ($[18] !== user.email || $[19] !== user.name) {
863
- t4 = user.name || user.email?.split("@")[0] || "User";
864
- $[18] = user.email;
865
- $[19] = user.name;
866
- $[20] = t4;
867
- } else t4 = $[20];
868
- const displayName = t4;
852
+ let t13;
853
+ if ($[34] !== user.email || $[35] !== user.name) {
854
+ t13 = user.name || user.email?.split("@")[0] || "User";
855
+ $[34] = user.email;
856
+ $[35] = user.name;
857
+ $[36] = t13;
858
+ } else t13 = $[36];
859
+ const displayName = t13;
869
860
  const displayEmail = user.email || "";
870
861
  const T0 = SidebarFooter;
871
- const t5 = "qa-sidebar__footer border-sidebar-border border-t p-2";
862
+ const t14 = "qa-sidebar__footer border-sidebar-border/70 border-t p-2";
872
863
  const T1 = SidebarMenu;
873
864
  const T2 = SidebarMenuItem;
874
865
  const T3 = DropdownMenu;
875
- const t6 = collapsed && "justify-center";
876
- let t7;
877
- if ($[21] !== t6) {
878
- t7 = cn("flex w-full items-center gap-2.5 p-2 text-left transition-colors duration-150", "hover:bg-sidebar-accent text-sidebar-foreground", "focus-visible:ring-sidebar-ring focus-visible:ring-1 focus-visible:outline-none", t6);
879
- $[21] = t6;
880
- $[22] = t7;
881
- } else t7 = $[22];
882
- let t8;
883
- if ($[23] === Symbol.for("react.memo_cache_sentinel")) {
884
- t8 = /* @__PURE__ */ jsx("div", {
885
- className: "qa-sidebar__user-avatar bg-sidebar-primary/10 text-sidebar-primary border-sidebar-primary/20 flex size-8 shrink-0 items-center justify-center border",
886
- children: /* @__PURE__ */ jsx(Icon, {
866
+ const t15 = collapsed && "justify-center";
867
+ let t16;
868
+ if ($[37] !== t15) {
869
+ t16 = cn("qa-sidebar__user-trigger flex w-full items-center gap-2.5 rounded-md p-2 text-left transition-[background-color,color,transform] duration-150 ease-out active:scale-[0.96]", "hover:bg-sidebar-accent text-sidebar-foreground", "focus-visible:ring-sidebar-ring focus-visible:ring-1 focus-visible:outline-none", t15);
870
+ $[37] = t15;
871
+ $[38] = t16;
872
+ } else t16 = $[38];
873
+ let t17;
874
+ if ($[39] !== user.image) {
875
+ t17 = /* @__PURE__ */ jsx("div", {
876
+ className: "qa-sidebar__user-avatar border-sidebar-border bg-sidebar-accent text-sidebar-accent-foreground flex size-8 shrink-0 items-center justify-center rounded-md border",
877
+ children: user.image ? /* @__PURE__ */ jsx("img", {
878
+ src: user.image,
879
+ alt: "",
880
+ className: "image-outline size-full rounded-md object-cover"
881
+ }) : /* @__PURE__ */ jsx(Icon, {
887
882
  icon: "ph:user-bold",
888
883
  className: "size-4"
889
884
  })
890
885
  });
891
- $[23] = t8;
892
- } else t8 = $[23];
893
- let t9;
894
- if ($[24] !== collapsed || $[25] !== displayEmail || $[26] !== displayName) {
895
- t9 = !collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
886
+ $[39] = user.image;
887
+ $[40] = t17;
888
+ } else t17 = $[40];
889
+ let t18;
890
+ if ($[41] !== collapsed || $[42] !== displayEmail || $[43] !== displayName) {
891
+ t18 = !collapsed && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
896
892
  className: "grid flex-1 text-left leading-tight",
897
893
  children: [/* @__PURE__ */ jsx("span", {
898
- className: "qa-sidebar__user-name truncate text-xs font-medium",
894
+ className: "qa-sidebar__user-name truncate text-sm font-medium",
899
895
  children: displayName
900
896
  }), /* @__PURE__ */ jsx("span", {
901
- className: "qa-sidebar__user-email text-sidebar-foreground/70 truncate text-[10px]",
897
+ className: "qa-sidebar__user-email text-sidebar-foreground/55 truncate text-xs",
902
898
  children: displayEmail
903
899
  })]
904
900
  }), /* @__PURE__ */ jsx(Icon, {
@@ -906,107 +902,134 @@ function UserFooter() {
906
902
  className: "text-sidebar-foreground/60 ml-auto size-3.5",
907
903
  "aria-hidden": "true"
908
904
  })] });
909
- $[24] = collapsed;
910
- $[25] = displayEmail;
911
- $[26] = displayName;
912
- $[27] = t9;
913
- } else t9 = $[27];
914
- let t10;
915
- if ($[28] !== t7 || $[29] !== t9) {
916
- t10 = /* @__PURE__ */ jsxs(DropdownMenuTrigger, {
917
- className: t7,
918
- children: [t8, t9]
905
+ $[41] = collapsed;
906
+ $[42] = displayEmail;
907
+ $[43] = displayName;
908
+ $[44] = t18;
909
+ } else t18 = $[44];
910
+ let t19;
911
+ if ($[45] !== t16 || $[46] !== t17 || $[47] !== t18) {
912
+ t19 = /* @__PURE__ */ jsxs(DropdownMenuTrigger, {
913
+ className: t16,
914
+ children: [t17, t18]
919
915
  });
920
- $[28] = t7;
921
- $[29] = t9;
922
- $[30] = t10;
923
- } else t10 = $[30];
916
+ $[45] = t16;
917
+ $[46] = t17;
918
+ $[47] = t18;
919
+ $[48] = t19;
920
+ } else t19 = $[48];
924
921
  const T4 = DropdownMenuContent;
925
- const t11 = collapsed ? "right" : "top";
926
- const t12 = collapsed ? "start" : "start";
927
- const t13 = "w-56";
928
- let t14;
929
- if ($[31] !== displayName) {
930
- t14 = /* @__PURE__ */ jsx("p", {
931
- className: "text-xs font-medium",
922
+ const t20 = collapsed ? "right" : "top";
923
+ const t21 = collapsed ? "start" : "start";
924
+ const t22 = "w-56";
925
+ let t23;
926
+ if ($[49] !== displayName) {
927
+ t23 = /* @__PURE__ */ jsx("p", {
928
+ className: "text-sm font-medium",
932
929
  children: displayName
933
930
  });
934
- $[31] = displayName;
935
- $[32] = t14;
936
- } else t14 = $[32];
937
- let t15;
938
- if ($[33] !== displayEmail) {
939
- t15 = /* @__PURE__ */ jsx("p", {
940
- className: "text-muted-foreground text-[10px]",
931
+ $[49] = displayName;
932
+ $[50] = t23;
933
+ } else t23 = $[50];
934
+ let t24;
935
+ if ($[51] !== displayEmail) {
936
+ t24 = /* @__PURE__ */ jsx("p", {
937
+ className: "text-muted-foreground text-xs",
941
938
  children: displayEmail
942
939
  });
943
- $[33] = displayEmail;
944
- $[34] = t15;
945
- } else t15 = $[34];
946
- let t16;
947
- if ($[35] !== user.role) {
948
- t16 = user.role && /* @__PURE__ */ jsx("p", {
949
- className: "text-muted-foreground mt-0.5 text-[10px] capitalize",
940
+ $[51] = displayEmail;
941
+ $[52] = t24;
942
+ } else t24 = $[52];
943
+ let t25;
944
+ if ($[53] !== user.role) {
945
+ t25 = user.role && /* @__PURE__ */ jsx("p", {
946
+ className: "text-muted-foreground mt-0.5 text-xs capitalize",
950
947
  children: user.role
951
948
  });
952
- $[35] = user.role;
953
- $[36] = t16;
954
- } else t16 = $[36];
955
- let t17;
956
- if ($[37] !== t14 || $[38] !== t15 || $[39] !== t16) {
957
- t17 = /* @__PURE__ */ jsxs("div", {
949
+ $[53] = user.role;
950
+ $[54] = t25;
951
+ } else t25 = $[54];
952
+ let t26;
953
+ if ($[55] !== t23 || $[56] !== t24 || $[57] !== t25) {
954
+ t26 = /* @__PURE__ */ jsxs("div", {
958
955
  className: "px-2 py-1.5",
959
956
  children: [
960
- t14,
961
- t15,
962
- t16
957
+ t23,
958
+ t24,
959
+ t25
963
960
  ]
964
961
  });
965
- $[37] = t14;
966
- $[38] = t15;
967
- $[39] = t16;
968
- $[40] = t17;
969
- } else t17 = $[40];
970
- let t18;
971
- if ($[41] === Symbol.for("react.memo_cache_sentinel")) {
972
- t18 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
973
- $[41] = t18;
974
- } else t18 = $[41];
975
- let t19;
976
- if ($[42] === Symbol.for("react.memo_cache_sentinel")) {
977
- t19 = /* @__PURE__ */ jsx(Icon, {
962
+ $[55] = t23;
963
+ $[56] = t24;
964
+ $[57] = t25;
965
+ $[58] = t26;
966
+ } else t26 = $[58];
967
+ let t27;
968
+ if ($[59] === Symbol.for("react.memo_cache_sentinel")) {
969
+ t27 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
970
+ $[59] = t27;
971
+ } else t27 = $[59];
972
+ let t28;
973
+ if ($[60] === Symbol.for("react.memo_cache_sentinel")) {
974
+ t28 = /* @__PURE__ */ jsx(Icon, {
978
975
  icon: "ph:user-circle",
979
976
  className: "size-4"
980
977
  });
981
- $[42] = t19;
982
- } else t19 = $[42];
983
- let t20;
984
- if ($[43] !== t) {
985
- t20 = t("auth.myAccount");
986
- $[43] = t;
987
- $[44] = t20;
988
- } else t20 = $[44];
989
- let t21;
990
- if ($[45] !== handleMyAccount || $[46] !== t20) {
991
- t21 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
978
+ $[60] = t28;
979
+ } else t28 = $[60];
980
+ let t29;
981
+ if ($[61] !== t) {
982
+ t29 = t("auth.myAccount");
983
+ $[61] = t;
984
+ $[62] = t29;
985
+ } else t29 = $[62];
986
+ let t30;
987
+ if ($[63] !== handleMyAccount || $[64] !== t29) {
988
+ t30 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
992
989
  onClick: handleMyAccount,
993
- children: [t19, t20]
990
+ children: [t28, t29]
994
991
  });
995
- $[45] = handleMyAccount;
996
- $[46] = t20;
997
- $[47] = t21;
998
- } else t21 = $[47];
999
- const t22 = hasMultipleUiLocales && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [/* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph:globe" }), t("locale.uiLanguage")] }), /* @__PURE__ */ jsx(DropdownMenuSubContent, { children: uiLocaleOptions.map((locale) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
992
+ $[63] = handleMyAccount;
993
+ $[64] = t29;
994
+ $[65] = t30;
995
+ } else t30 = $[65];
996
+ let t31;
997
+ if ($[66] !== setTheme || $[67] !== shouldShowThemeToggle || $[68] !== t || $[69] !== theme || $[70] !== themeOptions) {
998
+ t31 = shouldShowThemeToggle && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [/* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph:circle-half" }), t("ui.toggleTheme")] }), /* @__PURE__ */ jsx(DropdownMenuSubContent, { children: themeOptions.map((option) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
999
+ onClick: () => setTheme(option.value),
1000
+ children: [
1001
+ /* @__PURE__ */ jsx(Icon, {
1002
+ icon: option.icon,
1003
+ className: "size-4"
1004
+ }),
1005
+ /* @__PURE__ */ jsx("span", {
1006
+ className: "flex-1",
1007
+ children: option.label
1008
+ }),
1009
+ theme === option.value && /* @__PURE__ */ jsx(Icon, {
1010
+ icon: "ph:check",
1011
+ className: "text-foreground size-4"
1012
+ })
1013
+ ]
1014
+ }, option.value)) })] });
1015
+ $[66] = setTheme;
1016
+ $[67] = shouldShowThemeToggle;
1017
+ $[68] = t;
1018
+ $[69] = theme;
1019
+ $[70] = themeOptions;
1020
+ $[71] = t31;
1021
+ } else t31 = $[71];
1022
+ const t32 = hasMultipleUiLocales && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [/* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph:globe" }), t("locale.uiLanguage")] }), /* @__PURE__ */ jsx(DropdownMenuSubContent, { children: uiLocaleOptions.map((locale) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
1000
1023
  onClick: () => setUiLocale(locale.code),
1001
1024
  children: [
1002
1025
  /* @__PURE__ */ jsx("img", {
1003
1026
  src: getFlagUrl(locale.code),
1004
1027
  alt: locale.code,
1005
- className: "h-3 w-4 object-cover",
1028
+ className: "image-outline h-3 w-4 object-cover",
1006
1029
  onError: _temp5
1007
1030
  }),
1008
1031
  /* @__PURE__ */ jsx("span", {
1009
- className: "w-6 text-xs font-medium uppercase",
1032
+ className: "font-chrome chrome-meta w-6 text-xs font-medium",
1010
1033
  children: locale.code
1011
1034
  }),
1012
1035
  /* @__PURE__ */ jsx("span", {
@@ -1015,23 +1038,23 @@ function UserFooter() {
1015
1038
  }),
1016
1039
  locale.code === uiLocale && /* @__PURE__ */ jsx(Icon, {
1017
1040
  icon: "ph:check",
1018
- className: "text-primary size-4"
1041
+ className: "text-foreground size-4"
1019
1042
  })
1020
1043
  ]
1021
1044
  }, locale.code)) })] });
1022
- let t23;
1023
- if ($[48] !== contentLocale || $[49] !== contentLocales || $[50] !== hasMultipleContentLocales || $[51] !== setContentLocale || $[52] !== t) {
1024
- t23 = hasMultipleContentLocales && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [/* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph:translate" }), t("locale.contentLanguage")] }), /* @__PURE__ */ jsx(DropdownMenuSubContent, { children: contentLocales.locales.map((locale_0) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
1045
+ let t33;
1046
+ if ($[72] !== contentLocale || $[73] !== contentLocales || $[74] !== hasMultipleContentLocales || $[75] !== setContentLocale || $[76] !== t) {
1047
+ t33 = hasMultipleContentLocales && /* @__PURE__ */ jsxs(DropdownMenuSub, { children: [/* @__PURE__ */ jsxs(DropdownMenuSubTrigger, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph:translate" }), t("locale.contentLanguage")] }), /* @__PURE__ */ jsx(DropdownMenuSubContent, { children: contentLocales.locales.map((locale_0) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
1025
1048
  onClick: () => setContentLocale(locale_0.code),
1026
1049
  children: [
1027
1050
  /* @__PURE__ */ jsx("img", {
1028
1051
  src: getFlagUrl(locale_0.flagCountryCode ?? locale_0.code),
1029
1052
  alt: locale_0.code,
1030
- className: "h-3 w-4 object-cover",
1053
+ className: "image-outline h-3 w-4 object-cover",
1031
1054
  onError: _temp6
1032
1055
  }),
1033
1056
  /* @__PURE__ */ jsx("span", {
1034
- className: "w-6 text-xs font-medium uppercase",
1057
+ className: "font-chrome chrome-meta w-6 text-xs font-medium",
1035
1058
  children: locale_0.code
1036
1059
  }),
1037
1060
  /* @__PURE__ */ jsx("span", {
@@ -1040,107 +1063,109 @@ function UserFooter() {
1040
1063
  }),
1041
1064
  locale_0.code === contentLocale && /* @__PURE__ */ jsx(Icon, {
1042
1065
  icon: "ph:check",
1043
- className: "text-primary size-4"
1066
+ className: "text-foreground size-4"
1044
1067
  })
1045
1068
  ]
1046
1069
  }, locale_0.code)) })] });
1047
- $[48] = contentLocale;
1048
- $[49] = contentLocales;
1049
- $[50] = hasMultipleContentLocales;
1050
- $[51] = setContentLocale;
1051
- $[52] = t;
1052
- $[53] = t23;
1053
- } else t23 = $[53];
1054
- let t24;
1055
- if ($[54] === Symbol.for("react.memo_cache_sentinel")) {
1056
- t24 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
1057
- $[54] = t24;
1058
- } else t24 = $[54];
1059
- let t25;
1060
- if ($[55] === Symbol.for("react.memo_cache_sentinel")) {
1061
- t25 = /* @__PURE__ */ jsx(Icon, {
1070
+ $[72] = contentLocale;
1071
+ $[73] = contentLocales;
1072
+ $[74] = hasMultipleContentLocales;
1073
+ $[75] = setContentLocale;
1074
+ $[76] = t;
1075
+ $[77] = t33;
1076
+ } else t33 = $[77];
1077
+ let t34;
1078
+ if ($[78] === Symbol.for("react.memo_cache_sentinel")) {
1079
+ t34 = /* @__PURE__ */ jsx(DropdownMenuSeparator, {});
1080
+ $[78] = t34;
1081
+ } else t34 = $[78];
1082
+ let t35;
1083
+ if ($[79] === Symbol.for("react.memo_cache_sentinel")) {
1084
+ t35 = /* @__PURE__ */ jsx(Icon, {
1062
1085
  icon: "ph:sign-out",
1063
1086
  className: "size-4"
1064
1087
  });
1065
- $[55] = t25;
1066
- } else t25 = $[55];
1067
- let t26;
1068
- if ($[56] !== t) {
1069
- t26 = t("auth.logout");
1070
- $[56] = t;
1071
- $[57] = t26;
1072
- } else t26 = $[57];
1073
- let t27;
1074
- if ($[58] !== handleLogout || $[59] !== t26) {
1075
- t27 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
1088
+ $[79] = t35;
1089
+ } else t35 = $[79];
1090
+ let t36;
1091
+ if ($[80] !== t) {
1092
+ t36 = t("auth.logout");
1093
+ $[80] = t;
1094
+ $[81] = t36;
1095
+ } else t36 = $[81];
1096
+ let t37;
1097
+ if ($[82] !== handleLogout || $[83] !== t36) {
1098
+ t37 = /* @__PURE__ */ jsxs(DropdownMenuItem, {
1076
1099
  variant: "destructive",
1077
1100
  onClick: handleLogout,
1078
- children: [t25, t26]
1101
+ children: [t35, t36]
1079
1102
  });
1080
- $[58] = handleLogout;
1081
- $[59] = t26;
1082
- $[60] = t27;
1083
- } else t27 = $[60];
1084
- let t28;
1085
- if ($[61] !== T4 || $[62] !== t11 || $[63] !== t12 || $[64] !== t17 || $[65] !== t18 || $[66] !== t21 || $[67] !== t22 || $[68] !== t23 || $[69] !== t27) {
1086
- t28 = /* @__PURE__ */ jsxs(T4, {
1087
- side: t11,
1088
- align: t12,
1089
- className: t13,
1103
+ $[82] = handleLogout;
1104
+ $[83] = t36;
1105
+ $[84] = t37;
1106
+ } else t37 = $[84];
1107
+ let t38;
1108
+ if ($[85] !== T4 || $[86] !== t20 || $[87] !== t21 || $[88] !== t26 || $[89] !== t27 || $[90] !== t30 || $[91] !== t31 || $[92] !== t32 || $[93] !== t33 || $[94] !== t37) {
1109
+ t38 = /* @__PURE__ */ jsxs(T4, {
1110
+ side: t20,
1111
+ align: t21,
1112
+ className: t22,
1090
1113
  children: [
1091
- t17,
1092
- t18,
1093
- t21,
1094
- t22,
1095
- t23,
1096
- t24,
1097
- t27
1114
+ t26,
1115
+ t27,
1116
+ t30,
1117
+ t31,
1118
+ t32,
1119
+ t33,
1120
+ t34,
1121
+ t37
1098
1122
  ]
1099
1123
  });
1100
- $[61] = T4;
1101
- $[62] = t11;
1102
- $[63] = t12;
1103
- $[64] = t17;
1104
- $[65] = t18;
1105
- $[66] = t21;
1106
- $[67] = t22;
1107
- $[68] = t23;
1108
- $[69] = t27;
1109
- $[70] = t28;
1110
- } else t28 = $[70];
1111
- let t29;
1112
- if ($[71] !== T3 || $[72] !== t10 || $[73] !== t28) {
1113
- t29 = /* @__PURE__ */ jsxs(T3, { children: [t10, t28] });
1114
- $[71] = T3;
1115
- $[72] = t10;
1116
- $[73] = t28;
1117
- $[74] = t29;
1118
- } else t29 = $[74];
1119
- let t30;
1120
- if ($[75] !== T2 || $[76] !== t29) {
1121
- t30 = /* @__PURE__ */ jsx(T2, { children: t29 });
1122
- $[75] = T2;
1123
- $[76] = t29;
1124
- $[77] = t30;
1125
- } else t30 = $[77];
1126
- let t31;
1127
- if ($[78] !== T1 || $[79] !== t30) {
1128
- t31 = /* @__PURE__ */ jsx(T1, { children: t30 });
1129
- $[78] = T1;
1130
- $[79] = t30;
1131
- $[80] = t31;
1132
- } else t31 = $[80];
1133
- let t32;
1134
- if ($[81] !== T0 || $[82] !== t31) {
1135
- t32 = /* @__PURE__ */ jsx(T0, {
1136
- className: t5,
1137
- children: t31
1124
+ $[85] = T4;
1125
+ $[86] = t20;
1126
+ $[87] = t21;
1127
+ $[88] = t26;
1128
+ $[89] = t27;
1129
+ $[90] = t30;
1130
+ $[91] = t31;
1131
+ $[92] = t32;
1132
+ $[93] = t33;
1133
+ $[94] = t37;
1134
+ $[95] = t38;
1135
+ } else t38 = $[95];
1136
+ let t39;
1137
+ if ($[96] !== T3 || $[97] !== t19 || $[98] !== t38) {
1138
+ t39 = /* @__PURE__ */ jsxs(T3, { children: [t19, t38] });
1139
+ $[96] = T3;
1140
+ $[97] = t19;
1141
+ $[98] = t38;
1142
+ $[99] = t39;
1143
+ } else t39 = $[99];
1144
+ let t40;
1145
+ if ($[100] !== T2 || $[101] !== t39) {
1146
+ t40 = /* @__PURE__ */ jsx(T2, { children: t39 });
1147
+ $[100] = T2;
1148
+ $[101] = t39;
1149
+ $[102] = t40;
1150
+ } else t40 = $[102];
1151
+ let t41;
1152
+ if ($[103] !== T1 || $[104] !== t40) {
1153
+ t41 = /* @__PURE__ */ jsx(T1, { children: t40 });
1154
+ $[103] = T1;
1155
+ $[104] = t40;
1156
+ $[105] = t41;
1157
+ } else t41 = $[105];
1158
+ let t42;
1159
+ if ($[106] !== T0 || $[107] !== t41) {
1160
+ t42 = /* @__PURE__ */ jsx(T0, {
1161
+ className: t14,
1162
+ children: t41
1138
1163
  });
1139
- $[81] = T0;
1140
- $[82] = t31;
1141
- $[83] = t32;
1142
- } else t32 = $[83];
1143
- return t32;
1164
+ $[106] = T0;
1165
+ $[107] = t41;
1166
+ $[108] = t42;
1167
+ } else t42 = $[108];
1168
+ return t42;
1144
1169
  }
1145
1170
  /**
1146
1171
  * AdminSidebar Component
@@ -1174,8 +1199,8 @@ function _temp5(e) {
1174
1199
  e.currentTarget.style.display = "none";
1175
1200
  }
1176
1201
  function AdminSidebar(t0) {
1177
- const $ = c(63);
1178
- const { LinkComponent, activeRoute, basePath: t1, brandName: brandNameProp, className, renderBrand, renderNavItem, footer, afterBrand, beforeFooter, useActiveProps: t2 } = t0;
1202
+ const $ = c(93);
1203
+ const { LinkComponent, activeRoute, basePath: t1, brandName: brandNameProp, className, renderBrand, renderNavItem, footer, onSearchOpen, afterBrand, beforeFooter, theme, setTheme, showThemeToggle, useActiveProps: t2 } = t0;
1179
1204
  const basePath = t1 === void 0 ? "/admin" : t1;
1180
1205
  const useActiveProps = t2 === void 0 ? true : t2;
1181
1206
  let t3;
@@ -1185,194 +1210,329 @@ function AdminSidebar(t0) {
1185
1210
  $[1] = t3;
1186
1211
  } else t3 = $[1];
1187
1212
  const { navigation, brandName } = useSidebarProps(t3);
1188
- const { state, isMobile, setOpenMobile } = useSidebar();
1213
+ const { state, isMobile, setOpenMobile, toggleSidebar } = useSidebar();
1189
1214
  const collapsed = state === "collapsed";
1215
+ const currentActiveRoute = activeRoute ?? (typeof window !== "undefined" ? window.location.pathname : void 0);
1190
1216
  const { isSectionCollapsed, toggleSection } = useSidebarCollapsedSections();
1217
+ const admin = useAdminStoreRaw()?.getState().admin;
1191
1218
  let t4;
1192
- if ($[2] !== isMobile || $[3] !== setOpenMobile) {
1193
- t4 = () => {
1219
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
1220
+ t4 = { allowDynamicImportLoaders: false };
1221
+ $[2] = t4;
1222
+ } else t4 = $[2];
1223
+ const { Component: BrandOverride } = useLazyComponent(admin?.getComponent("adminSidebarBrand"), t4);
1224
+ let t5;
1225
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
1226
+ t5 = { allowDynamicImportLoaders: false };
1227
+ $[3] = t5;
1228
+ } else t5 = $[3];
1229
+ const { Component: NavItemOverride } = useLazyComponent(admin?.getComponent("adminSidebarNavItem"), t5);
1230
+ let t6;
1231
+ if ($[4] !== BrandOverride || $[5] !== renderBrand) {
1232
+ t6 = renderBrand ?? (BrandOverride ? (props) => /* @__PURE__ */ jsx(BrandOverride, { ...props }) : void 0);
1233
+ $[4] = BrandOverride;
1234
+ $[5] = renderBrand;
1235
+ $[6] = t6;
1236
+ } else t6 = $[6];
1237
+ const effectiveRenderBrand = t6;
1238
+ let t7;
1239
+ if ($[7] !== NavItemOverride || $[8] !== renderNavItem) {
1240
+ t7 = renderNavItem ?? (NavItemOverride ? (props_0) => /* @__PURE__ */ jsx(NavItemOverride, { ...props_0 }) : void 0);
1241
+ $[7] = NavItemOverride;
1242
+ $[8] = renderNavItem;
1243
+ $[9] = t7;
1244
+ } else t7 = $[9];
1245
+ const effectiveRenderNavItem = t7;
1246
+ let t8;
1247
+ if ($[10] !== isMobile || $[11] !== setOpenMobile) {
1248
+ t8 = () => {
1194
1249
  if (isMobile) setOpenMobile(false);
1195
1250
  };
1196
- $[2] = isMobile;
1197
- $[3] = setOpenMobile;
1198
- $[4] = t4;
1199
- } else t4 = $[4];
1200
- const handleBrandClick = t4;
1201
- let t5;
1202
- if ($[5] !== brandName || $[6] !== collapsed || $[7] !== renderBrand) {
1203
- t5 = renderBrand ? renderBrand({
1204
- name: brandName,
1205
- collapsed
1206
- }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(QuestpieSymbol, {}), !collapsed && /* @__PURE__ */ jsx("div", {
1251
+ $[10] = isMobile;
1252
+ $[11] = setOpenMobile;
1253
+ $[12] = t8;
1254
+ } else t8 = $[12];
1255
+ const handleBrandClick = t8;
1256
+ let t9;
1257
+ if ($[13] !== brandName) {
1258
+ t9 = (isCollapsed) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(QuestpieSymbol, {}), !isCollapsed && /* @__PURE__ */ jsx("div", {
1207
1259
  className: "grid flex-1 text-left leading-tight",
1208
1260
  children: /* @__PURE__ */ jsx("span", {
1209
- className: "truncate font-bold tracking-tight",
1261
+ className: "qa-sidebar__brand-name font-chrome truncate text-sm font-medium",
1210
1262
  children: brandName
1211
1263
  })
1212
1264
  })] });
1213
- $[5] = brandName;
1214
- $[6] = collapsed;
1215
- $[7] = renderBrand;
1216
- $[8] = t5;
1217
- } else t5 = $[8];
1218
- const brandContent = t5;
1219
- const t6 = collapsed && "justify-center";
1220
- let t7;
1221
- if ($[9] !== t6) {
1222
- t7 = cn("qa-sidebar__brand flex items-center gap-2.5 p-2 transition-colors duration-150", "hover:bg-sidebar-accent", t6);
1223
- $[9] = t6;
1224
- $[10] = t7;
1225
- } else t7 = $[10];
1226
- let t8;
1227
- if ($[11] !== LinkComponent || $[12] !== basePath || $[13] !== brandContent || $[14] !== t7) {
1228
- t8 = /* @__PURE__ */ jsx(LinkComponent, {
1265
+ $[13] = brandName;
1266
+ $[14] = t9;
1267
+ } else t9 = $[14];
1268
+ const renderBuiltInBrand = t9;
1269
+ let t10;
1270
+ if ($[15] !== brandName || $[16] !== effectiveRenderBrand || $[17] !== renderBuiltInBrand) {
1271
+ t10 = (isCollapsed_0) => {
1272
+ const builtInBrand = renderBuiltInBrand(isCollapsed_0);
1273
+ if (!effectiveRenderBrand) return builtInBrand;
1274
+ return /* @__PURE__ */ jsx(React.Suspense, {
1275
+ fallback: builtInBrand,
1276
+ children: effectiveRenderBrand({
1277
+ name: brandName,
1278
+ collapsed: isCollapsed_0
1279
+ })
1280
+ });
1281
+ };
1282
+ $[15] = brandName;
1283
+ $[16] = effectiveRenderBrand;
1284
+ $[17] = renderBuiltInBrand;
1285
+ $[18] = t10;
1286
+ } else t10 = $[18];
1287
+ const renderBrandContent = t10;
1288
+ let t11;
1289
+ if ($[19] !== collapsed || $[20] !== renderBrandContent) {
1290
+ t11 = renderBrandContent(collapsed);
1291
+ $[19] = collapsed;
1292
+ $[20] = renderBrandContent;
1293
+ $[21] = t11;
1294
+ } else t11 = $[21];
1295
+ const brandContent = t11;
1296
+ const t12 = collapsed && "justify-center";
1297
+ let t13;
1298
+ if ($[22] !== t12) {
1299
+ t13 = cn("qa-sidebar__brand flex items-center gap-2 rounded-md p-2 transition-[background-color,color,transform] duration-[var(--motion-duration-base)] ease-[var(--motion-ease-standard)] active:scale-[0.96] motion-reduce:transition-none motion-reduce:active:scale-100", "hover:bg-sidebar-accent", t12);
1300
+ $[22] = t12;
1301
+ $[23] = t13;
1302
+ } else t13 = $[23];
1303
+ let t14;
1304
+ if ($[24] !== LinkComponent || $[25] !== basePath || $[26] !== brandContent || $[27] !== t13) {
1305
+ t14 = /* @__PURE__ */ jsx(LinkComponent, {
1229
1306
  to: basePath,
1230
- className: t7,
1307
+ className: t13,
1231
1308
  children: brandContent
1232
1309
  });
1233
- $[11] = LinkComponent;
1234
- $[12] = basePath;
1235
- $[13] = brandContent;
1236
- $[14] = t7;
1237
- $[15] = t8;
1238
- } else t8 = $[15];
1239
- const brandLink = t8;
1240
- let t9;
1241
- if ($[16] !== className) {
1242
- t9 = cn("qa-sidebar", className);
1243
- $[16] = className;
1244
- $[17] = t9;
1245
- } else t9 = $[17];
1246
- let t10;
1247
- if ($[18] !== LinkComponent || $[19] !== basePath || $[20] !== brandLink || $[21] !== brandName || $[22] !== collapsed || $[23] !== isMobile || $[24] !== renderBrand) {
1248
- t10 = collapsed && !isMobile ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(LinkComponent, {
1310
+ $[24] = LinkComponent;
1311
+ $[25] = basePath;
1312
+ $[26] = brandContent;
1313
+ $[27] = t13;
1314
+ $[28] = t14;
1315
+ } else t14 = $[28];
1316
+ const brandLink = t14;
1317
+ let t15;
1318
+ if ($[29] !== onSearchOpen) {
1319
+ t15 = onSearchOpen && /* @__PURE__ */ jsx(Button, {
1320
+ type: "button",
1321
+ variant: "ghost",
1322
+ size: "icon-xs",
1323
+ className: "text-sidebar-foreground/60 hover:bg-sidebar-accent hover:text-sidebar-foreground",
1324
+ onClick: onSearchOpen,
1325
+ title: "Search",
1326
+ "aria-label": "Search",
1327
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ph:magnifying-glass" })
1328
+ });
1329
+ $[29] = onSearchOpen;
1330
+ $[30] = t15;
1331
+ } else t15 = $[30];
1332
+ let t16;
1333
+ if ($[31] === Symbol.for("react.memo_cache_sentinel")) {
1334
+ t16 = /* @__PURE__ */ jsx(SidebarTrigger, { className: "text-sidebar-foreground/60 hover:bg-sidebar-accent hover:text-sidebar-foreground" });
1335
+ $[31] = t16;
1336
+ } else t16 = $[31];
1337
+ let t17;
1338
+ if ($[32] !== t15) {
1339
+ t17 = /* @__PURE__ */ jsxs("div", {
1340
+ className: "qa-sidebar__header-actions flex shrink-0 items-center gap-1",
1341
+ children: [t15, t16]
1342
+ });
1343
+ $[32] = t15;
1344
+ $[33] = t17;
1345
+ } else t17 = $[33];
1346
+ const sidebarActions = t17;
1347
+ let t18;
1348
+ if ($[34] !== className) {
1349
+ t18 = cn("qa-sidebar bg-sidebar relative border-none", className);
1350
+ $[34] = className;
1351
+ $[35] = t18;
1352
+ } else t18 = $[35];
1353
+ let t19;
1354
+ if ($[36] !== LinkComponent || $[37] !== basePath || $[38] !== brandLink || $[39] !== brandName || $[40] !== collapsed || $[41] !== isMobile || $[42] !== renderBrandContent) {
1355
+ t19 = collapsed && !isMobile ? /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(LinkComponent, {
1249
1356
  to: basePath,
1250
- className: cn("flex items-center gap-2.5 p-2 transition-colors duration-150", "hover:bg-sidebar-accent", "justify-center"),
1251
- children: renderBrand ? renderBrand({
1252
- name: brandName,
1253
- collapsed: true
1254
- }) : /* @__PURE__ */ jsx(QuestpieSymbol, {})
1357
+ className: cn("flex items-center gap-2 rounded-md p-2 transition-[background-color,color,transform] duration-[var(--motion-duration-base)] ease-[var(--motion-ease-standard)] active:scale-[0.96] motion-reduce:transition-none motion-reduce:active:scale-100", "hover:bg-sidebar-accent", "justify-center"),
1358
+ children: renderBrandContent(true)
1255
1359
  }) }), /* @__PURE__ */ jsx(TooltipContent, {
1256
1360
  side: "right",
1257
1361
  children: brandName
1258
1362
  })] }) : brandLink;
1259
- $[18] = LinkComponent;
1260
- $[19] = basePath;
1261
- $[20] = brandLink;
1262
- $[21] = brandName;
1263
- $[22] = collapsed;
1264
- $[23] = isMobile;
1265
- $[24] = renderBrand;
1266
- $[25] = t10;
1267
- } else t10 = $[25];
1268
- let t11;
1269
- if ($[26] !== handleBrandClick || $[27] !== t10) {
1270
- t11 = /* @__PURE__ */ jsx(SidebarHeader, {
1271
- className: "qa-sidebar__header border-sidebar-border border-b p-2",
1272
- children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, {
1363
+ $[36] = LinkComponent;
1364
+ $[37] = basePath;
1365
+ $[38] = brandLink;
1366
+ $[39] = brandName;
1367
+ $[40] = collapsed;
1368
+ $[41] = isMobile;
1369
+ $[42] = renderBrandContent;
1370
+ $[43] = t19;
1371
+ } else t19 = $[43];
1372
+ let t20;
1373
+ if ($[44] !== handleBrandClick || $[45] !== t19) {
1374
+ t20 = /* @__PURE__ */ jsx(SidebarMenu, {
1375
+ className: "min-w-0 flex-1",
1376
+ children: /* @__PURE__ */ jsx(SidebarMenuItem, {
1273
1377
  onClickCapture: handleBrandClick,
1274
- children: t10
1275
- }) })
1378
+ children: t19
1379
+ })
1276
1380
  });
1277
- $[26] = handleBrandClick;
1278
- $[27] = t10;
1279
- $[28] = t11;
1280
- } else t11 = $[28];
1281
- let t12;
1282
- if ($[29] !== afterBrand || $[30] !== collapsed) {
1283
- t12 = afterBrand && !collapsed && /* @__PURE__ */ jsx("div", {
1284
- className: "qa-sidebar__after-brand border-sidebar-border border-b px-3 py-2",
1381
+ $[44] = handleBrandClick;
1382
+ $[45] = t19;
1383
+ $[46] = t20;
1384
+ } else t20 = $[46];
1385
+ const t21 = !collapsed && sidebarActions;
1386
+ let t22;
1387
+ if ($[47] !== t20 || $[48] !== t21) {
1388
+ t22 = /* @__PURE__ */ jsxs(SidebarHeader, {
1389
+ className: "qa-sidebar__header h-auto flex-row items-center gap-2 border-none px-3 pt-3 pb-1",
1390
+ children: [t20, t21]
1391
+ });
1392
+ $[47] = t20;
1393
+ $[48] = t21;
1394
+ $[49] = t22;
1395
+ } else t22 = $[49];
1396
+ let t23;
1397
+ if ($[50] !== collapsed || $[51] !== isMobile || $[52] !== onSearchOpen || $[53] !== toggleSidebar) {
1398
+ t23 = collapsed && !isMobile && /* @__PURE__ */ jsxs("div", {
1399
+ className: "qa-sidebar__collapsed-peek group/peek absolute top-4 -right-3 z-50 flex items-center",
1400
+ children: [/* @__PURE__ */ jsx(Button, {
1401
+ type: "button",
1402
+ variant: "ghost",
1403
+ size: "icon-xs",
1404
+ className: "border-sidebar-border/70 bg-sidebar text-sidebar-foreground/60 hover:bg-sidebar-accent hover:text-sidebar-foreground h-8 w-3 rounded-l-none rounded-r-md border border-l-0 p-0 shadow-[var(--floating-shadow)]",
1405
+ onClick: toggleSidebar,
1406
+ "aria-label": "Expand sidebar",
1407
+ children: /* @__PURE__ */ jsx("span", { className: "h-3 w-0.5 rounded-full bg-current opacity-55" })
1408
+ }), /* @__PURE__ */ jsxs("div", {
1409
+ className: "floating-surface ml-1 flex scale-95 items-center gap-1 p-1 opacity-0 transition-[opacity,transform] duration-[var(--motion-duration-base)] ease-[var(--motion-ease-enter)] group-focus-within/peek:scale-100 group-focus-within/peek:opacity-100 group-hover/peek:scale-100 group-hover/peek:opacity-100 motion-reduce:scale-100 motion-reduce:transition-none",
1410
+ children: [/* @__PURE__ */ jsx(SidebarTrigger, {
1411
+ className: "text-muted-foreground hover:bg-muted hover:text-foreground",
1412
+ "aria-label": "Expand sidebar"
1413
+ }), onSearchOpen && /* @__PURE__ */ jsx(Button, {
1414
+ type: "button",
1415
+ variant: "ghost",
1416
+ size: "icon-sm",
1417
+ className: "text-muted-foreground hover:bg-muted hover:text-foreground",
1418
+ onClick: onSearchOpen,
1419
+ title: "Search",
1420
+ "aria-label": "Search",
1421
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ph:magnifying-glass" })
1422
+ })]
1423
+ })]
1424
+ });
1425
+ $[50] = collapsed;
1426
+ $[51] = isMobile;
1427
+ $[52] = onSearchOpen;
1428
+ $[53] = toggleSidebar;
1429
+ $[54] = t23;
1430
+ } else t23 = $[54];
1431
+ let t24;
1432
+ if ($[55] !== afterBrand || $[56] !== collapsed) {
1433
+ t24 = afterBrand && !collapsed && /* @__PURE__ */ jsx("div", {
1434
+ className: "qa-sidebar__after-brand border-sidebar-border/70 border-b px-3 py-2",
1285
1435
  children: afterBrand
1286
1436
  });
1287
- $[29] = afterBrand;
1288
- $[30] = collapsed;
1289
- $[31] = t12;
1290
- } else t12 = $[31];
1291
- let t13;
1292
- if ($[32] !== LinkComponent || $[33] !== activeRoute || $[34] !== basePath || $[35] !== isSectionCollapsed || $[36] !== navigation || $[37] !== renderNavItem || $[38] !== toggleSection || $[39] !== useActiveProps) {
1293
- let t14$1;
1294
- if ($[41] !== LinkComponent || $[42] !== activeRoute || $[43] !== basePath || $[44] !== isSectionCollapsed || $[45] !== renderNavItem || $[46] !== toggleSection || $[47] !== useActiveProps) {
1295
- t14$1 = (group, index) => /* @__PURE__ */ jsx(NavGroup, {
1437
+ $[55] = afterBrand;
1438
+ $[56] = collapsed;
1439
+ $[57] = t24;
1440
+ } else t24 = $[57];
1441
+ let t25;
1442
+ if ($[58] !== LinkComponent || $[59] !== basePath || $[60] !== currentActiveRoute || $[61] !== effectiveRenderNavItem || $[62] !== isSectionCollapsed || $[63] !== navigation || $[64] !== toggleSection || $[65] !== useActiveProps) {
1443
+ let t26$1;
1444
+ if ($[67] !== LinkComponent || $[68] !== basePath || $[69] !== currentActiveRoute || $[70] !== effectiveRenderNavItem || $[71] !== isSectionCollapsed || $[72] !== toggleSection || $[73] !== useActiveProps) {
1445
+ t26$1 = (group, index) => /* @__PURE__ */ jsx(NavGroup, {
1296
1446
  group,
1297
- activeRoute,
1447
+ activeRoute: currentActiveRoute,
1298
1448
  LinkComponent,
1299
- renderNavItem,
1449
+ renderNavItem: effectiveRenderNavItem,
1300
1450
  basePath,
1301
- useActiveProps,
1451
+ useActiveProps: useActiveProps && !currentActiveRoute,
1302
1452
  isSectionCollapsed,
1303
1453
  toggleSection
1304
1454
  }, group.id ?? `group-${index}`);
1305
- $[41] = LinkComponent;
1306
- $[42] = activeRoute;
1307
- $[43] = basePath;
1308
- $[44] = isSectionCollapsed;
1309
- $[45] = renderNavItem;
1310
- $[46] = toggleSection;
1311
- $[47] = useActiveProps;
1312
- $[48] = t14$1;
1313
- } else t14$1 = $[48];
1314
- t13 = navigation.map(t14$1);
1315
- $[32] = LinkComponent;
1316
- $[33] = activeRoute;
1317
- $[34] = basePath;
1318
- $[35] = isSectionCollapsed;
1319
- $[36] = navigation;
1320
- $[37] = renderNavItem;
1321
- $[38] = toggleSection;
1322
- $[39] = useActiveProps;
1323
- $[40] = t13;
1324
- } else t13 = $[40];
1325
- let t14;
1326
- if ($[49] !== t13) {
1327
- t14 = /* @__PURE__ */ jsx(SidebarContent, {
1328
- className: "qa-sidebar__content",
1455
+ $[67] = LinkComponent;
1456
+ $[68] = basePath;
1457
+ $[69] = currentActiveRoute;
1458
+ $[70] = effectiveRenderNavItem;
1459
+ $[71] = isSectionCollapsed;
1460
+ $[72] = toggleSection;
1461
+ $[73] = useActiveProps;
1462
+ $[74] = t26$1;
1463
+ } else t26$1 = $[74];
1464
+ t25 = navigation.map(t26$1);
1465
+ $[58] = LinkComponent;
1466
+ $[59] = basePath;
1467
+ $[60] = currentActiveRoute;
1468
+ $[61] = effectiveRenderNavItem;
1469
+ $[62] = isSectionCollapsed;
1470
+ $[63] = navigation;
1471
+ $[64] = toggleSection;
1472
+ $[65] = useActiveProps;
1473
+ $[66] = t25;
1474
+ } else t25 = $[66];
1475
+ let t26;
1476
+ if ($[75] !== t25) {
1477
+ t26 = /* @__PURE__ */ jsx(SidebarContent, {
1478
+ className: "qa-sidebar__content gap-3 px-2 py-3 group-data-[collapsible=icon]:gap-2",
1329
1479
  children: /* @__PURE__ */ jsx("nav", {
1330
1480
  "aria-label": "Admin navigation",
1331
1481
  className: "qa-sidebar__nav",
1332
- children: t13
1482
+ children: t25
1333
1483
  })
1334
1484
  });
1335
- $[49] = t13;
1336
- $[50] = t14;
1337
- } else t14 = $[50];
1338
- let t15;
1339
- if ($[51] !== beforeFooter || $[52] !== collapsed) {
1340
- t15 = beforeFooter && !collapsed && /* @__PURE__ */ jsx("div", {
1341
- className: "qa-sidebar__before-footer border-sidebar-border border-t px-3 py-2",
1485
+ $[75] = t25;
1486
+ $[76] = t26;
1487
+ } else t26 = $[76];
1488
+ let t27;
1489
+ if ($[77] !== beforeFooter || $[78] !== collapsed) {
1490
+ t27 = beforeFooter && !collapsed && /* @__PURE__ */ jsx("div", {
1491
+ className: "qa-sidebar__before-footer border-sidebar-border/70 border-t px-3 py-2",
1342
1492
  children: beforeFooter
1343
1493
  });
1344
- $[51] = beforeFooter;
1345
- $[52] = collapsed;
1346
- $[53] = t15;
1347
- } else t15 = $[53];
1348
- let t16;
1349
- if ($[54] !== footer) {
1350
- t16 = footer ?? /* @__PURE__ */ jsx(UserFooter, {});
1351
- $[54] = footer;
1352
- $[55] = t16;
1353
- } else t16 = $[55];
1354
- let t17;
1355
- if ($[56] !== t11 || $[57] !== t12 || $[58] !== t14 || $[59] !== t15 || $[60] !== t16 || $[61] !== t9) {
1356
- t17 = /* @__PURE__ */ jsxs(Sidebar, {
1494
+ $[77] = beforeFooter;
1495
+ $[78] = collapsed;
1496
+ $[79] = t27;
1497
+ } else t27 = $[79];
1498
+ let t28;
1499
+ if ($[80] !== footer || $[81] !== setTheme || $[82] !== showThemeToggle || $[83] !== theme) {
1500
+ t28 = footer ?? /* @__PURE__ */ jsx(UserFooter, {
1501
+ theme,
1502
+ setTheme,
1503
+ showThemeToggle
1504
+ });
1505
+ $[80] = footer;
1506
+ $[81] = setTheme;
1507
+ $[82] = showThemeToggle;
1508
+ $[83] = theme;
1509
+ $[84] = t28;
1510
+ } else t28 = $[84];
1511
+ let t29;
1512
+ if ($[85] !== t18 || $[86] !== t22 || $[87] !== t23 || $[88] !== t24 || $[89] !== t26 || $[90] !== t27 || $[91] !== t28) {
1513
+ t29 = /* @__PURE__ */ jsxs(Sidebar, {
1357
1514
  collapsible: "icon",
1358
- className: t9,
1515
+ variant: "inset",
1516
+ className: t18,
1359
1517
  children: [
1360
- t11,
1361
- t12,
1362
- t14,
1363
- t15,
1364
- t16
1518
+ t22,
1519
+ t23,
1520
+ t24,
1521
+ t26,
1522
+ t27,
1523
+ t28
1365
1524
  ]
1366
1525
  });
1367
- $[56] = t11;
1368
- $[57] = t12;
1369
- $[58] = t14;
1370
- $[59] = t15;
1371
- $[60] = t16;
1372
- $[61] = t9;
1373
- $[62] = t17;
1374
- } else t17 = $[62];
1375
- return t17;
1526
+ $[85] = t18;
1527
+ $[86] = t22;
1528
+ $[87] = t23;
1529
+ $[88] = t24;
1530
+ $[89] = t26;
1531
+ $[90] = t27;
1532
+ $[91] = t28;
1533
+ $[92] = t29;
1534
+ } else t29 = $[92];
1535
+ return t29;
1376
1536
  }
1377
1537
 
1378
1538
  //#endregion