@questpie/admin 3.0.3 → 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 +1 -1
  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 +68 -68
  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 +12 -0
  215. package/dist/server/modules/admin/collections/user.mjs +40 -9
  216. package/dist/server/modules/admin/collections/verification.d.mts +2 -2
  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 +27 -27
  234. package/dist/server/modules/audit/.generated/module.d.mts +1 -1
  235. package/dist/server/modules/audit/.generated/module.mjs +1 -1
  236. package/dist/server/modules/audit/collections/audit-log.d.mts +2 -2
  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
@@ -50,10 +50,10 @@ function TimeInput(t0) {
50
50
  } else t4 = $[3];
51
51
  const handleClear = t4;
52
52
  const t5 = disabled && "cursor-not-allowed opacity-50";
53
- const t6 = ariaInvalid && "border-destructive";
53
+ const t6 = ariaInvalid && "border-border-strong";
54
54
  let t7;
55
55
  if ($[4] !== className || $[5] !== t5 || $[6] !== t6) {
56
- t7 = cn("border-input bg-transparent font-mono flex h-9 w-full items-center gap-2 border px-3 py-2 text-sm", "focus-within:ring-ring focus-within:ring-2 focus-within:ring-offset-2", t5, t6, className);
56
+ t7 = cn("control-surface font-chrome flex w-full items-center gap-2 px-3 py-2 text-sm", "focus-within:border-border-strong focus-within:ring-ring/20 focus-within:ring-3", t5, t6, className);
57
57
  $[4] = className;
58
58
  $[5] = t5;
59
59
  $[6] = t6;
@@ -60,6 +60,7 @@ function ResourceSheet(props) {
60
60
  if ($[12] !== side || $[13] !== t2) {
61
61
  t3 = /* @__PURE__ */ jsx(SheetContent, {
62
62
  side,
63
+ showOverlay: false,
63
64
  className: "qa-resource-sheet overflow-y-auto p-6 pt-12",
64
65
  children: t2
65
66
  });
@@ -72,6 +73,7 @@ function ResourceSheet(props) {
72
73
  t4 = /* @__PURE__ */ jsx(Sheet, {
73
74
  open,
74
75
  onOpenChange,
76
+ modal: false,
75
77
  children: t3
76
78
  });
77
79
  $[15] = onOpenChange;
@@ -87,7 +87,7 @@ function AccordionTrigger(t0) {
87
87
  }
88
88
  let t1;
89
89
  if ($[4] !== className) {
90
- t1 = cn("qa-accordion__trigger **:data-[slot=accordion-trigger-icon]:text-muted-foreground hover:bg-muted group/accordion-trigger relative flex flex-1 items-center justify-between gap-4 px-4 py-3 text-left text-sm font-medium transition-all outline-none disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4", className);
90
+ t1 = cn("qa-accordion__trigger **:data-[slot=accordion-trigger-icon]:text-muted-foreground hover:bg-muted group/accordion-trigger relative flex min-h-10 flex-1 items-center justify-between gap-4 px-4 py-3 text-left text-sm font-medium transition-[background-color,color,transform] duration-[var(--motion-duration-base)] ease-[var(--motion-ease-standard)] outline-none active:scale-[0.96] disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 motion-reduce:transition-none motion-reduce:active:scale-100", className);
91
91
  $[4] = className;
92
92
  $[5] = t1;
93
93
  } else t1 = $[5];
@@ -96,7 +96,7 @@ function AccordionTrigger(t0) {
96
96
  t2 = /* @__PURE__ */ jsx(Icon, {
97
97
  icon: "ph:caret-down",
98
98
  "data-slot": "accordion-trigger-icon",
99
- className: "pointer-events-none shrink-0 transition-transform duration-200 group-aria-expanded/accordion-trigger:rotate-180"
99
+ className: "pointer-events-none shrink-0 transition-transform duration-[var(--motion-duration-base)] ease-[var(--motion-ease-standard)] group-aria-expanded/accordion-trigger:rotate-180 motion-reduce:transition-none"
100
100
  });
101
101
  $[6] = t2;
102
102
  } else t2 = $[6];
@@ -136,7 +136,7 @@ function AccordionContent(t0) {
136
136
  }
137
137
  let t1;
138
138
  if ($[4] !== className) {
139
- t1 = cn("[&_a]:hover:text-foreground h-(--accordion-panel-height) px-4 pt-0 pb-4 text-sm data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4", className);
139
+ t1 = cn("[&_a]:hover:text-foreground h-(--accordion-panel-height) px-4 pt-0 pb-4 text-sm opacity-100 transition-[height,opacity] duration-[var(--motion-duration-slow)] ease-[var(--motion-ease-enter)] data-ending-style:h-0 data-ending-style:opacity-0 data-starting-style:h-0 data-starting-style:opacity-0 motion-reduce:transition-none [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4", className);
140
140
  $[4] = className;
141
141
  $[5] = t1;
142
142
  } else t1 = $[5];
@@ -154,7 +154,7 @@ function AccordionContent(t0) {
154
154
  if ($[9] !== props || $[10] !== t2) {
155
155
  t3 = /* @__PURE__ */ jsx(Accordion.Panel, {
156
156
  "data-slot": "accordion-content",
157
- className: "qa-accordion__content data-open:animate-accordion-down data-closed:animate-accordion-up overflow-hidden",
157
+ className: "qa-accordion__content overflow-hidden",
158
158
  ...props,
159
159
  children: t2
160
160
  });
@@ -4,10 +4,10 @@ import { jsx } from "react/jsx-runtime";
4
4
  import { cva } from "class-variance-authority";
5
5
 
6
6
  //#region src/client/components/ui/alert.tsx
7
- const alertVariants = cva("qa-alert group/alert relative grid w-full gap-0.5 border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5", {
7
+ const alertVariants = cva("qa-alert group/alert border-border-subtle bg-card text-card-foreground *:[svg]:text-muted-foreground relative grid w-full gap-0.5 border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg:not([class*='size-'])]:size-3.5", {
8
8
  variants: { variant: {
9
- default: "bg-card text-card-foreground",
10
- destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
9
+ default: "",
10
+ destructive: "border-destructive/30 bg-destructive/10 text-destructive *:data-[slot=alert-description]:text-destructive/85 *:[svg]:text-destructive"
11
11
  } },
12
12
  defaultVariants: { variant: "default" }
13
13
  });
@@ -5,14 +5,14 @@ import { mergeProps } from "@base-ui/react/merge-props";
5
5
  import { useRender } from "@base-ui/react/use-render";
6
6
 
7
7
  //#region src/client/components/ui/badge.tsx
8
- const badgeVariants = cva("qa-badge focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden border border-transparent px-2 py-0.5 font-mono text-[0.625rem] font-medium whitespace-nowrap transition-all transition-colors focus-visible:ring-[3px] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:pointer-events-none [&>svg]:size-2.5!", {
8
+ const badgeVariants = cva("qa-badge font-chrome focus-visible:border-ring focus-visible:ring-ring/20 aria-invalid:border-border-strong group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-xs border border-transparent px-2 py-0.5 text-[0.625rem] font-medium whitespace-nowrap tabular-nums transition-[background-color,border-color,color,box-shadow] duration-150 ease-out focus-visible:ring-[3px] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:pointer-events-none [&>svg]:size-2.5!", {
9
9
  variants: { variant: {
10
- default: "bg-primary/10 text-primary border-primary [a]:hover:bg-primary/80 border",
10
+ default: "border-border bg-secondary text-secondary-foreground [a]:hover:bg-accent",
11
11
  secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary",
12
- destructive: "bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20",
12
+ destructive: "bg-destructive text-destructive-foreground [a]:hover:bg-destructive/90 border-transparent",
13
13
  outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-transparent",
14
14
  ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted",
15
- link: "text-primary underline-offset-4 hover:underline"
15
+ link: "text-foreground underline-offset-4 hover:underline"
16
16
  } },
17
17
  defaultVariants: { variant: "default" }
18
18
  });
@@ -7,24 +7,24 @@ import { Button } from "@base-ui/react/button";
7
7
  import { cva } from "class-variance-authority";
8
8
 
9
9
  //#region src/client/components/ui/button.tsx
10
- const buttonVariants = cva("qa-button focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 group/button inline-flex shrink-0 cursor-pointer items-center justify-center border border-transparent bg-clip-padding font-mono text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:ring-[2px] disabled:pointer-events-none disabled:opacity-50 aria-invalid:ring-[2px] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
10
+ const buttonVariants = cva("qa-button font-chrome group/button text-foreground focus-visible:border-border-strong focus-visible:ring-ring/20 aria-invalid:border-border-strong aria-invalid:ring-ring/20 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-[var(--control-radius)] border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[background-color,color,border-color,box-shadow,transform,opacity] duration-150 ease-out outline-none select-none focus-visible:ring-[3px] active:scale-[0.96] disabled:pointer-events-none disabled:opacity-50 disabled:active:scale-100 aria-invalid:ring-[3px] motion-reduce:active:scale-100 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
11
11
  variants: {
12
12
  variant: {
13
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
14
- outline: "border-border bg-transparent hover:bg-accent hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
15
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
16
- ghost: "hover:bg-muted hover:text-foreground dark:hover:bg-muted aria-expanded:bg-muted aria-expanded:text-foreground",
17
- destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30",
18
- link: "text-primary underline-offset-4 hover:underline"
13
+ default: "bg-primary text-primary-foreground shadow-[var(--control-shadow)] hover:opacity-95",
14
+ outline: "border-input bg-card text-foreground hover:bg-muted aria-expanded:bg-muted aria-expanded:text-foreground shadow-[var(--control-shadow)]",
15
+ secondary: "bg-secondary text-secondary-foreground hover:bg-accent aria-expanded:bg-accent aria-expanded:text-secondary-foreground",
16
+ ghost: "text-muted-foreground hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
17
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/25 border-transparent shadow-[var(--control-shadow)]",
18
+ link: "text-foreground h-auto px-0 underline-offset-4 hover:underline"
19
19
  },
20
20
  size: {
21
- default: "h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg:not([class*='size-'])]:size-4",
22
- xs: "h-6 gap-1 px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",
23
- sm: "h-7 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3.5",
24
- lg: "h-10 gap-2 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-4",
21
+ default: "h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-4",
22
+ xs: "h-7 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3.5",
23
+ sm: "h-8 gap-1.5 px-3 text-xs has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg:not([class*='size-'])]:size-3.5",
24
+ lg: "h-11 gap-2 px-4 text-base has-data-[icon=inline-end]:pr-3.5 has-data-[icon=inline-start]:pl-3.5 [&_svg:not([class*='size-'])]:size-4",
25
25
  icon: "size-9 [&_svg:not([class*='size-'])]:size-4",
26
- "icon-xs": "size-6 [&_svg:not([class*='size-'])]:size-3",
27
- "icon-sm": "size-7 [&_svg:not([class*='size-'])]:size-3.5",
26
+ "icon-xs": "size-7 [&_svg:not([class*='size-'])]:size-3.5",
27
+ "icon-sm": "size-8 [&_svg:not([class*='size-'])]:size-3.5",
28
28
  "icon-lg": "size-10 [&_svg:not([class*='size-'])]:size-5"
29
29
  }
30
30
  },
@@ -34,50 +34,60 @@ const buttonVariants = cva("qa-button focus-visible:border-ring focus-visible:ri
34
34
  }
35
35
  });
36
36
  function Button$1(t0) {
37
- const $ = c(12);
37
+ const $ = c(16);
38
38
  let className;
39
39
  let props;
40
40
  let t1;
41
41
  let t2;
42
+ let t3;
43
+ let t4;
42
44
  if ($[0] !== t0) {
43
- ({className, variant: t1, size: t2, ...props} = t0);
45
+ ({className, type: t1, variant: t2, size: t3, static: t4, ...props} = t0);
44
46
  $[0] = t0;
45
47
  $[1] = className;
46
48
  $[2] = props;
47
49
  $[3] = t1;
48
50
  $[4] = t2;
51
+ $[5] = t3;
52
+ $[6] = t4;
49
53
  } else {
50
54
  className = $[1];
51
55
  props = $[2];
52
56
  t1 = $[3];
53
57
  t2 = $[4];
58
+ t3 = $[5];
59
+ t4 = $[6];
54
60
  }
55
- const variant = t1 === void 0 ? "default" : t1;
56
- const size = t2 === void 0 ? "default" : t2;
57
- let t3;
58
- if ($[5] !== className || $[6] !== size || $[7] !== variant) {
59
- t3 = cn(buttonVariants({
61
+ const type = t1 === void 0 ? "button" : t1;
62
+ const variant = t2 === void 0 ? "default" : t2;
63
+ const size = t3 === void 0 ? "default" : t3;
64
+ const staticPress = t4 === void 0 ? false : t4;
65
+ let t5;
66
+ if ($[7] !== className || $[8] !== size || $[9] !== staticPress || $[10] !== variant) {
67
+ t5 = cn(buttonVariants({
60
68
  variant,
61
- size,
62
- className
63
- }));
64
- $[5] = className;
65
- $[6] = size;
66
- $[7] = variant;
67
- $[8] = t3;
68
- } else t3 = $[8];
69
- let t4;
70
- if ($[9] !== props || $[10] !== t3) {
71
- t4 = /* @__PURE__ */ jsx(Button, {
69
+ size
70
+ }), staticPress && "active:scale-100", className);
71
+ $[7] = className;
72
+ $[8] = size;
73
+ $[9] = staticPress;
74
+ $[10] = variant;
75
+ $[11] = t5;
76
+ } else t5 = $[11];
77
+ let t6;
78
+ if ($[12] !== props || $[13] !== t5 || $[14] !== type) {
79
+ t6 = /* @__PURE__ */ jsx(Button, {
72
80
  "data-slot": "button",
73
- className: t3,
81
+ type,
82
+ className: t5,
74
83
  ...props
75
84
  });
76
- $[9] = props;
77
- $[10] = t3;
78
- $[11] = t4;
79
- } else t4 = $[11];
80
- return t4;
85
+ $[12] = props;
86
+ $[13] = t5;
87
+ $[14] = type;
88
+ $[15] = t6;
89
+ } else t6 = $[15];
90
+ return t6;
81
91
  }
82
92
 
83
93
  //#endregion
@@ -22,7 +22,7 @@ function Card(t0) {
22
22
  const size = t1 === void 0 ? "default" : t1;
23
23
  let t2;
24
24
  if ($[4] !== className) {
25
- t2 = cn("qa-card bg-card text-card-foreground border-border group/card flex flex-col gap-4 overflow-hidden border py-4 text-xs/relaxed data-[size=sm]:gap-3 data-[size=sm]:py-3", className);
25
+ t2 = cn("qa-card bg-card text-card-foreground border-border-subtle group/card flex flex-col gap-4 overflow-hidden rounded-[var(--surface-radius)] border py-4 text-xs/relaxed shadow-[var(--surface-shadow)] data-[size=sm]:gap-3 data-[size=sm]:py-3", className);
26
26
  $[4] = className;
27
27
  $[5] = t2;
28
28
  } else t2 = $[5];
@@ -88,7 +88,7 @@ function CardTitle(t0) {
88
88
  }
89
89
  let t1;
90
90
  if ($[3] !== className) {
91
- t1 = cn("qa-card__title font-mono text-sm font-medium", className);
91
+ t1 = cn("qa-card__title font-chrome text-sm font-semibold tracking-tight", className);
92
92
  $[3] = className;
93
93
  $[4] = t1;
94
94
  } else t1 = $[4];
@@ -24,7 +24,7 @@ function Checkbox$1(t0) {
24
24
  const showIndeterminate = indeterminate && !props.checked;
25
25
  let t1;
26
26
  if ($[4] !== className) {
27
- t1 = cn("qa-checkbox border-input data-checked:bg-primary data-checked:text-primary-foreground data-indeterminate:bg-primary data-indeterminate:text-primary-foreground dark:data-checked:bg-primary dark:data-indeterminate:bg-primary data-checked:border-primary data-indeterminate:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 peer relative flex size-4 shrink-0 items-center justify-center border transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-[2px] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[2px]", className);
27
+ t1 = cn("qa-checkbox border-input bg-card data-checked:border-border-strong data-checked:bg-surface-high data-checked:text-foreground data-indeterminate:border-border-strong data-indeterminate:bg-surface-high data-indeterminate:text-foreground aria-invalid:border-border-strong focus-visible:border-ring focus-visible:ring-ring/20 aria-invalid:ring-ring/20 peer relative flex size-4 shrink-0 items-center justify-center rounded-xs border transition-[background-color,border-color,box-shadow,color] duration-150 ease-out outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[3px]", className);
28
28
  $[4] = className;
29
29
  $[5] = t1;
30
30
  } else t1 = $[5];
@@ -55,7 +55,7 @@ function CommandInput(t0) {
55
55
  }
56
56
  let t1;
57
57
  if ($[3] !== className) {
58
- t1 = cn("qa-command__input w-full text-xs/relaxed outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className);
58
+ t1 = cn("qa-command__input w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className);
59
59
  $[3] = className;
60
60
  $[4] = t1;
61
61
  } else t1 = $[4];
@@ -84,7 +84,7 @@ function CommandInput(t0) {
84
84
  "data-slot": "command-input-wrapper",
85
85
  className: "p-1 pb-0",
86
86
  children: /* @__PURE__ */ jsxs(InputGroup, {
87
- className: "h-8!",
87
+ className: "h-9!",
88
88
  children: [t2, t3]
89
89
  })
90
90
  });
@@ -140,7 +140,7 @@ function CommandEmpty(t0) {
140
140
  }
141
141
  let t1;
142
142
  if ($[3] !== className) {
143
- t1 = cn("qa-command__empty py-6 text-center text-xs/relaxed", className);
143
+ t1 = cn("qa-command__empty text-muted-foreground py-6 text-center text-sm", className);
144
144
  $[3] = className;
145
145
  $[4] = t1;
146
146
  } else t1 = $[4];
@@ -172,7 +172,7 @@ function CommandGroup(t0) {
172
172
  }
173
173
  let t1;
174
174
  if ($[3] !== className) {
175
- t1 = cn("qa-command__group text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className);
175
+ t1 = cn("qa-command__group text-foreground [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:font-chrome [&_[cmdk-group-heading]]:chrome-meta overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className);
176
176
  $[3] = className;
177
177
  $[4] = t1;
178
178
  } else t1 = $[4];
@@ -207,7 +207,7 @@ function CommandItem(t0) {
207
207
  }
208
208
  let t1;
209
209
  if ($[4] !== className) {
210
- t1 = cn("qa-command__item data-selected:text-foreground data-selected:*:[svg]:text-foreground group/command-item relative flex min-h-7 cursor-pointer items-center gap-2 px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none data-selected:bg-current/5 data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5", className);
210
+ t1 = cn("qa-command__item item-surface data-selected:border-border data-selected:bg-accent data-selected:text-accent-foreground data-selected:*:[svg]:text-accent-foreground group/command-item relative flex min-h-9 cursor-pointer items-center gap-2.5 px-3 py-2 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5", className);
211
211
  $[4] = className;
212
212
  $[5] = t1;
213
213
  } else t1 = $[5];
@@ -61,7 +61,7 @@ function DialogOverlay(t0) {
61
61
  }
62
62
  let t1;
63
63
  if ($[3] !== className) {
64
- t1 = cn("qa-dialog__overlay data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 isolate z-50 bg-black/80 duration-100", className);
64
+ t1 = cn("qa-dialog__overlay motion-overlay fixed inset-0 isolate z-50 bg-black/70 backdrop-blur-[2px] data-ending-style:opacity-0 data-starting-style:opacity-0", className);
65
65
  $[3] = className;
66
66
  $[4] = t1;
67
67
  } else t1 = $[4];
@@ -105,7 +105,7 @@ function DialogContent(t0) {
105
105
  } else t2 = $[5];
106
106
  let t3;
107
107
  if ($[6] !== className) {
108
- t3 = cn("qa-dialog__content bg-background data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 border-border fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 border p-4 text-sm duration-100 outline-none sm:max-w-md", className);
108
+ t3 = cn("qa-dialog__content floating-surface motion-floating text-popover-foreground fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] origin-center -translate-x-1/2 -translate-y-1/2 gap-4 p-5 text-sm outline-none data-ending-style:scale-[var(--motion-scale-enter)] data-ending-style:opacity-0 data-starting-style:scale-[var(--motion-scale-enter)] data-starting-style:opacity-0 sm:max-w-md", className);
109
109
  $[6] = className;
110
110
  $[7] = t3;
111
111
  } else t3 = $[7];
@@ -242,7 +242,7 @@ function DialogTitle(t0) {
242
242
  }
243
243
  let t1;
244
244
  if ($[3] !== className) {
245
- t1 = cn("qa-dialog__title font-mono text-sm font-medium", className);
245
+ t1 = cn("qa-dialog__title font-chrome text-sm font-medium", className);
246
246
  $[3] = className;
247
247
  $[4] = t1;
248
248
  } else t1 = $[4];
@@ -78,7 +78,7 @@ function DrawerOverlay(t0) {
78
78
  }
79
79
  let t1;
80
80
  if ($[3] !== className) {
81
- t1 = cn("qa-drawer__overlay data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-black/80", className);
81
+ t1 = cn("qa-drawer__overlay motion-overlay fixed inset-0 z-50 bg-black/80 data-ending-style:opacity-0 data-starting-style:opacity-0", className);
82
82
  $[3] = className;
83
83
  $[4] = t1;
84
84
  } else t1 = $[4];
@@ -27,23 +27,31 @@ function DropdownMenu(t0) {
27
27
  return t1;
28
28
  }
29
29
  function DropdownMenuTrigger(t0) {
30
- const $ = c(4);
30
+ const $ = c(6);
31
31
  let props;
32
+ let t1;
32
33
  if ($[0] !== t0) {
33
- ({...props} = t0);
34
+ ({type: t1, ...props} = t0);
34
35
  $[0] = t0;
35
36
  $[1] = props;
36
- } else props = $[1];
37
- let t1;
38
- if ($[2] !== props) {
39
- t1 = /* @__PURE__ */ jsx(Menu.Trigger, {
37
+ $[2] = t1;
38
+ } else {
39
+ props = $[1];
40
+ t1 = $[2];
41
+ }
42
+ const type = t1 === void 0 ? "button" : t1;
43
+ let t2;
44
+ if ($[3] !== props || $[4] !== type) {
45
+ t2 = /* @__PURE__ */ jsx(Menu.Trigger, {
40
46
  "data-slot": "dropdown-menu-trigger",
47
+ type,
41
48
  ...props
42
49
  });
43
- $[2] = props;
44
- $[3] = t1;
45
- } else t1 = $[3];
46
- return t1;
50
+ $[3] = props;
51
+ $[4] = type;
52
+ $[5] = t2;
53
+ } else t2 = $[5];
54
+ return t2;
47
55
  }
48
56
  function DropdownMenuContent(t0) {
49
57
  const $ = c(18);
@@ -76,7 +84,7 @@ function DropdownMenuContent(t0) {
76
84
  const sideOffset = t4 === void 0 ? 4 : t4;
77
85
  let t5;
78
86
  if ($[7] !== className) {
79
- t5 = cn("qa-dropdown-menu__content data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 border-border bg-popover text-popover-foreground z-50 max-h-(--available-height) w-(--anchor-width) min-w-48 origin-(--transform-origin) overflow-x-hidden overflow-y-auto border p-1.5 duration-100 outline-none data-closed:overflow-hidden", className);
87
+ t5 = cn("qa-dropdown-menu__content floating-surface motion-floating text-popover-foreground z-50 max-h-(--available-height) w-(--anchor-width) min-w-48 origin-(--transform-origin) overflow-x-hidden overflow-y-auto p-1.5 outline-none data-closed:overflow-hidden data-ending-style:scale-[var(--motion-scale-enter)] data-ending-style:opacity-0 data-starting-style:scale-[var(--motion-scale-enter)] data-starting-style:opacity-0", className);
80
88
  $[7] = className;
81
89
  $[8] = t5;
82
90
  } else t5 = $[8];
@@ -110,6 +118,43 @@ function DropdownMenuContent(t0) {
110
118
  } else t7 = $[17];
111
119
  return t7;
112
120
  }
121
+ function DropdownMenuLabel(t0) {
122
+ const $ = c(10);
123
+ let className;
124
+ let inset;
125
+ let props;
126
+ if ($[0] !== t0) {
127
+ ({className, inset, ...props} = t0);
128
+ $[0] = t0;
129
+ $[1] = className;
130
+ $[2] = inset;
131
+ $[3] = props;
132
+ } else {
133
+ className = $[1];
134
+ inset = $[2];
135
+ props = $[3];
136
+ }
137
+ let t1;
138
+ if ($[4] !== className) {
139
+ t1 = cn("qa-dropdown-menu__label text-muted-foreground font-chrome chrome-meta px-2.5 py-1.5 text-xs font-medium data-[inset]:pl-8", className);
140
+ $[4] = className;
141
+ $[5] = t1;
142
+ } else t1 = $[5];
143
+ let t2;
144
+ if ($[6] !== inset || $[7] !== props || $[8] !== t1) {
145
+ t2 = /* @__PURE__ */ jsx("div", {
146
+ "data-slot": "dropdown-menu-label",
147
+ "data-inset": inset,
148
+ className: t1,
149
+ ...props
150
+ });
151
+ $[6] = inset;
152
+ $[7] = props;
153
+ $[8] = t1;
154
+ $[9] = t2;
155
+ } else t2 = $[9];
156
+ return t2;
157
+ }
113
158
  function DropdownMenuItem(t0) {
114
159
  const $ = c(12);
115
160
  let className;
@@ -132,7 +177,7 @@ function DropdownMenuItem(t0) {
132
177
  const variant = t1 === void 0 ? "default" : t1;
133
178
  let t2;
134
179
  if ($[5] !== className) {
135
- t2 = cn("qa-dropdown-menu__item focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground group/dropdown-menu-item relative flex min-h-9 cursor-default items-center gap-2.5 px-3 py-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-9 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className);
180
+ t2 = cn("qa-dropdown-menu__item item-surface focus:border-border focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:border-destructive/30 data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground group/dropdown-menu-item relative flex min-h-9 cursor-default items-center gap-2.5 px-3 py-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-9 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className);
136
181
  $[5] = className;
137
182
  $[6] = t2;
138
183
  } else t2 = $[6];
@@ -193,7 +238,7 @@ function DropdownMenuSubTrigger(t0) {
193
238
  }
194
239
  let t1;
195
240
  if ($[5] !== className) {
196
- t1 = cn("qa-dropdown-menu__sub-trigger focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground flex min-h-9 cursor-default items-center gap-2.5 px-3 py-2 text-sm outline-hidden select-none data-[inset]:pl-9 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className);
241
+ t1 = cn("qa-dropdown-menu__sub-trigger item-surface focus:border-border focus:bg-accent focus:text-accent-foreground data-open:border-border data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground flex min-h-9 cursor-default items-center gap-2.5 px-3 py-2 text-sm outline-hidden select-none data-[inset]:pl-9 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className);
197
242
  $[5] = className;
198
243
  $[6] = t1;
199
244
  } else t1 = $[6];
@@ -253,7 +298,7 @@ function DropdownMenuSubContent(t0) {
253
298
  const sideOffset = t4 === void 0 ? 0 : t4;
254
299
  let t5;
255
300
  if ($[7] !== className) {
256
- t5 = cn("qa-dropdown-menu__sub-content data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 border-border bg-popover text-popover-foreground w-auto min-w-32 border p-1 duration-100", className);
301
+ t5 = cn("qa-dropdown-menu__sub-content w-auto min-w-32 p-1", className);
257
302
  $[7] = className;
258
303
  $[8] = t5;
259
304
  } else t5 = $[8];
@@ -278,6 +323,71 @@ function DropdownMenuSubContent(t0) {
278
323
  } else t6 = $[15];
279
324
  return t6;
280
325
  }
326
+ function DropdownMenuRadioGroup(t0) {
327
+ const $ = c(4);
328
+ let props;
329
+ if ($[0] !== t0) {
330
+ ({...props} = t0);
331
+ $[0] = t0;
332
+ $[1] = props;
333
+ } else props = $[1];
334
+ let t1;
335
+ if ($[2] !== props) {
336
+ t1 = /* @__PURE__ */ jsx(Menu.RadioGroup, {
337
+ "data-slot": "dropdown-menu-radio-group",
338
+ ...props
339
+ });
340
+ $[2] = props;
341
+ $[3] = t1;
342
+ } else t1 = $[3];
343
+ return t1;
344
+ }
345
+ function DropdownMenuRadioItem(t0) {
346
+ const $ = c(11);
347
+ let children;
348
+ let className;
349
+ let props;
350
+ if ($[0] !== t0) {
351
+ ({className, children, ...props} = t0);
352
+ $[0] = t0;
353
+ $[1] = children;
354
+ $[2] = className;
355
+ $[3] = props;
356
+ } else {
357
+ children = $[1];
358
+ className = $[2];
359
+ props = $[3];
360
+ }
361
+ let t1;
362
+ if ($[4] !== className) {
363
+ t1 = cn("qa-dropdown-menu__radio-item item-surface focus:border-border focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground relative flex min-h-9 cursor-default items-center gap-2.5 px-3 py-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5", className);
364
+ $[4] = className;
365
+ $[5] = t1;
366
+ } else t1 = $[5];
367
+ let t2;
368
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
369
+ t2 = /* @__PURE__ */ jsx("span", {
370
+ className: "pointer-events-none absolute right-3 flex items-center justify-center",
371
+ "data-slot": "dropdown-menu-radio-item-indicator",
372
+ children: /* @__PURE__ */ jsx(Menu.RadioItemIndicator, { children: /* @__PURE__ */ jsx(Icon, { icon: "ph:check" }) })
373
+ });
374
+ $[6] = t2;
375
+ } else t2 = $[6];
376
+ let t3;
377
+ if ($[7] !== children || $[8] !== props || $[9] !== t1) {
378
+ t3 = /* @__PURE__ */ jsxs(Menu.RadioItem, {
379
+ "data-slot": "dropdown-menu-radio-item",
380
+ className: t1,
381
+ ...props,
382
+ children: [t2, children]
383
+ });
384
+ $[7] = children;
385
+ $[8] = props;
386
+ $[9] = t1;
387
+ $[10] = t3;
388
+ } else t3 = $[10];
389
+ return t3;
390
+ }
281
391
  function DropdownMenuSeparator(t0) {
282
392
  const $ = c(8);
283
393
  let className;
@@ -310,6 +420,38 @@ function DropdownMenuSeparator(t0) {
310
420
  } else t2 = $[7];
311
421
  return t2;
312
422
  }
423
+ function DropdownMenuShortcut(t0) {
424
+ const $ = c(8);
425
+ let className;
426
+ let props;
427
+ if ($[0] !== t0) {
428
+ ({className, ...props} = t0);
429
+ $[0] = t0;
430
+ $[1] = className;
431
+ $[2] = props;
432
+ } else {
433
+ className = $[1];
434
+ props = $[2];
435
+ }
436
+ let t1;
437
+ if ($[3] !== className) {
438
+ t1 = cn("qa-dropdown-menu__shortcut text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground font-chrome chrome-meta ml-auto text-[0.625rem]", className);
439
+ $[3] = className;
440
+ $[4] = t1;
441
+ } else t1 = $[4];
442
+ let t2;
443
+ if ($[5] !== props || $[6] !== t1) {
444
+ t2 = /* @__PURE__ */ jsx("span", {
445
+ "data-slot": "dropdown-menu-shortcut",
446
+ className: t1,
447
+ ...props
448
+ });
449
+ $[5] = props;
450
+ $[6] = t1;
451
+ $[7] = t2;
452
+ } else t2 = $[7];
453
+ return t2;
454
+ }
313
455
 
314
456
  //#endregion
315
- export { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
457
+ export { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };