@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
@@ -41,7 +41,7 @@ const EMPTY_OPTIONS = [];
41
41
  * ```
42
42
  */
43
43
  function SelectMulti(t0) {
44
- const $ = c(141);
44
+ const $ = c(147);
45
45
  const { value, onChange, options: staticOptions, loadOptions, queryKey, prefetchOnMount: t1, maxSelections, loading: t2, emptyMessage: t3, placeholder: t4, disabled, className, id, "aria-invalid": ariaInvalid, drawerTitle: t5, maxVisibleChips: t6 } = t0;
46
46
  const prefetchOnMount = t1 === void 0 ? false : t1;
47
47
  const externalLoading = t2 === void 0 ? false : t2;
@@ -210,6 +210,7 @@ function SelectMulti(t0) {
210
210
  let t21;
211
211
  if ($[41] !== onChange || $[42] !== resolvedValue) {
212
212
  t21 = (removedValue, e) => {
213
+ e?.preventDefault();
213
214
  e?.stopPropagation();
214
215
  onChange(resolvedValue.filter((v_0) => v_0 !== removedValue));
215
216
  };
@@ -221,6 +222,7 @@ function SelectMulti(t0) {
221
222
  let t22;
222
223
  if ($[44] !== onChange) {
223
224
  t22 = (e_0) => {
225
+ e_0.preventDefault();
224
226
  e_0.stopPropagation();
225
227
  onChange([]);
226
228
  };
@@ -228,9 +230,19 @@ function SelectMulti(t0) {
228
230
  $[45] = t22;
229
231
  } else t22 = $[45];
230
232
  const handleClearAll = t22;
233
+ let t23;
234
+ if ($[46] !== disabled || $[47] !== handleClearAll || $[48] !== resolvedValue.length) {
235
+ t23 = (event) => {
236
+ if (resolvedValue.length > 0 && !disabled && (event.key === "Backspace" || event.key === "Delete")) handleClearAll(event);
237
+ };
238
+ $[46] = disabled;
239
+ $[47] = handleClearAll;
240
+ $[48] = resolvedValue.length;
241
+ $[49] = t23;
242
+ } else t23 = $[49];
243
+ const handleTriggerKeyDown = t23;
231
244
  const showLoading = isFetching || externalLoading;
232
245
  const canAddMore = !maxSelections || resolvedValue.length < maxSelections;
233
- let t23;
234
246
  let t24;
235
247
  let t25;
236
248
  let t26;
@@ -239,38 +251,41 @@ function SelectMulti(t0) {
239
251
  let t29;
240
252
  let t30;
241
253
  let t31;
242
- if ($[46] !== ariaInvalid || $[47] !== className || $[48] !== disabled || $[49] !== getLabel || $[50] !== handleRemove || $[51] !== id || $[52] !== maxVisibleChips || $[53] !== open || $[54] !== resolvedPlaceholder || $[55] !== resolvedValue) {
254
+ let t32;
255
+ if ($[50] !== ariaInvalid || $[51] !== className || $[52] !== disabled || $[53] !== getLabel || $[54] !== handleRemove || $[55] !== id || $[56] !== maxVisibleChips || $[57] !== open || $[58] !== resolvedPlaceholder || $[59] !== resolvedValue) {
243
256
  const visibleChips = resolvedValue.slice(0, maxVisibleChips);
244
257
  const hiddenCount = resolvedValue.length - maxVisibleChips;
245
- t23 = id;
246
- t24 = "combobox";
247
- t25 = "select-multi-list";
248
- t26 = "listbox";
249
- t27 = open;
250
- t28 = ariaInvalid;
251
- t29 = 0;
252
- const t32$1 = disabled && "cursor-not-allowed opacity-50";
253
- const t33$1 = ariaInvalid && "border-destructive ring-destructive/20";
254
- if ($[65] !== className || $[66] !== t32$1 || $[67] !== t33$1) {
255
- t30 = cn("qa-select-multi border-input bg-transparent font-mono flex min-h-9 w-full flex-wrap items-center gap-1 border px-3 py-1.5 text-sm transition-colors", "focus-within:ring-ring focus-within:border-ring focus-within:ring-2", t32$1, t33$1, className);
256
- $[65] = className;
257
- $[66] = t32$1;
258
- $[67] = t33$1;
259
- $[68] = t30;
260
- } else t30 = $[68];
261
- t31 = resolvedValue.length === 0 ? /* @__PURE__ */ jsx("span", {
258
+ t24 = id;
259
+ t25 = "combobox";
260
+ t26 = "select-multi-list";
261
+ t27 = "listbox";
262
+ t28 = open;
263
+ t29 = ariaInvalid;
264
+ t30 = 0;
265
+ const t33$1 = disabled && "cursor-not-allowed opacity-50";
266
+ const t34$1 = ariaInvalid && "border-destructive ring-destructive/20";
267
+ if ($[69] !== className || $[70] !== t33$1 || $[71] !== t34$1) {
268
+ t31 = cn("qa-select-multi control-surface font-chrome flex h-auto min-h-[var(--control-height)] w-full flex-wrap items-center gap-1 px-3 py-1.5 text-sm", "hover:bg-surface-low focus-within:border-border-strong focus-within:ring-ring/20 aria-expanded:border-border-strong aria-expanded:ring-ring/20 focus-within:ring-3 aria-expanded:ring-3", t33$1, t34$1, className);
269
+ $[69] = className;
270
+ $[70] = t33$1;
271
+ $[71] = t34$1;
272
+ $[72] = t31;
273
+ } else t31 = $[72];
274
+ t32 = resolvedValue.length === 0 ? /* @__PURE__ */ jsx("span", {
262
275
  className: "text-muted-foreground text-xs",
263
276
  children: resolvedPlaceholder
264
277
  }) : /* @__PURE__ */ jsxs(Fragment, { children: [visibleChips.map((val_0) => /* @__PURE__ */ jsxs(Badge, {
265
278
  variant: "secondary",
266
- className: "gap-1 pr-1",
279
+ className: "min-h-7 gap-1 pr-1",
267
280
  children: [/* @__PURE__ */ jsx("span", {
268
281
  className: "max-w-24 truncate",
269
282
  children: getLabel(val_0)
270
- }), !disabled && /* @__PURE__ */ jsx("button", {
271
- type: "button",
272
- onClick: (e_1) => handleRemove(val_0, e_1),
273
- className: "hover:bg-muted-foreground/20 rounded-full p-0.5",
283
+ }), !disabled && /* @__PURE__ */ jsx("span", {
284
+ "aria-hidden": "true",
285
+ title: "Remove option",
286
+ onPointerDown: (e_1) => handleRemove(val_0, e_1),
287
+ onClick: (e_2) => handleRemove(val_0, e_2),
288
+ className: "hover:bg-muted-foreground/20 inline-flex size-5 items-center justify-center rounded-full transition-colors",
274
289
  children: /* @__PURE__ */ jsx(Icon, {
275
290
  icon: "ph:x",
276
291
  className: "size-2.5"
@@ -285,129 +300,131 @@ function SelectMulti(t0) {
285
300
  " more"
286
301
  ]
287
302
  })] });
288
- $[46] = ariaInvalid;
289
- $[47] = className;
290
- $[48] = disabled;
291
- $[49] = getLabel;
292
- $[50] = handleRemove;
293
- $[51] = id;
294
- $[52] = maxVisibleChips;
295
- $[53] = open;
296
- $[54] = resolvedPlaceholder;
297
- $[55] = resolvedValue;
298
- $[56] = t23;
299
- $[57] = t24;
300
- $[58] = t25;
301
- $[59] = t26;
302
- $[60] = t27;
303
- $[61] = t28;
304
- $[62] = t29;
305
- $[63] = t30;
306
- $[64] = t31;
303
+ $[50] = ariaInvalid;
304
+ $[51] = className;
305
+ $[52] = disabled;
306
+ $[53] = getLabel;
307
+ $[54] = handleRemove;
308
+ $[55] = id;
309
+ $[56] = maxVisibleChips;
310
+ $[57] = open;
311
+ $[58] = resolvedPlaceholder;
312
+ $[59] = resolvedValue;
313
+ $[60] = t24;
314
+ $[61] = t25;
315
+ $[62] = t26;
316
+ $[63] = t27;
317
+ $[64] = t28;
318
+ $[65] = t29;
319
+ $[66] = t30;
320
+ $[67] = t31;
321
+ $[68] = t32;
307
322
  } else {
308
- t23 = $[56];
309
- t24 = $[57];
310
- t25 = $[58];
311
- t26 = $[59];
312
- t27 = $[60];
313
- t28 = $[61];
314
- t29 = $[62];
315
- t30 = $[63];
316
- t31 = $[64];
323
+ t24 = $[60];
324
+ t25 = $[61];
325
+ t26 = $[62];
326
+ t27 = $[63];
327
+ t28 = $[64];
328
+ t29 = $[65];
329
+ t30 = $[66];
330
+ t31 = $[67];
331
+ t32 = $[68];
317
332
  }
318
- let t32;
319
- if ($[69] !== disabled || $[70] !== handleClearAll || $[71] !== resolvedValue.length) {
320
- t32 = resolvedValue.length > 0 && !disabled && /* @__PURE__ */ jsx("button", {
321
- type: "button",
333
+ let t33;
334
+ if ($[73] !== disabled || $[74] !== handleClearAll || $[75] !== resolvedValue.length) {
335
+ t33 = resolvedValue.length > 0 && !disabled && /* @__PURE__ */ jsx("span", {
336
+ "aria-hidden": "true",
337
+ title: "Clear all",
338
+ onPointerDown: handleClearAll,
322
339
  onClick: handleClearAll,
323
- className: "hover:bg-muted p-0.5 opacity-50 hover:opacity-100",
340
+ className: "hover:bg-muted inline-flex size-6 items-center justify-center rounded-md opacity-60 transition-[background-color,opacity] hover:opacity-100",
324
341
  children: /* @__PURE__ */ jsx(Icon, {
325
342
  icon: "ph:x",
326
343
  className: "size-3"
327
344
  })
328
345
  });
329
- $[69] = disabled;
330
- $[70] = handleClearAll;
331
- $[71] = resolvedValue.length;
332
- $[72] = t32;
333
- } else t32 = $[72];
334
- let t33;
335
- if ($[73] === Symbol.for("react.memo_cache_sentinel")) {
336
- t33 = /* @__PURE__ */ jsx(Icon, {
346
+ $[73] = disabled;
347
+ $[74] = handleClearAll;
348
+ $[75] = resolvedValue.length;
349
+ $[76] = t33;
350
+ } else t33 = $[76];
351
+ let t34;
352
+ if ($[77] === Symbol.for("react.memo_cache_sentinel")) {
353
+ t34 = /* @__PURE__ */ jsx(Icon, {
337
354
  icon: "ph:plus",
338
355
  className: "size-3.5 opacity-50"
339
356
  });
340
- $[73] = t33;
341
- } else t33 = $[73];
342
- let t34;
343
- if ($[74] !== t32) {
344
- t34 = /* @__PURE__ */ jsxs("div", {
345
- className: "ml-auto flex shrink-0 items-center gap-1",
346
- children: [t32, t33]
347
- });
348
- $[74] = t32;
349
- $[75] = t34;
350
- } else t34 = $[75];
357
+ $[77] = t34;
358
+ } else t34 = $[77];
351
359
  let t35;
352
- if ($[76] !== t23 || $[77] !== t24 || $[78] !== t25 || $[79] !== t26 || $[80] !== t27 || $[81] !== t28 || $[82] !== t29 || $[83] !== t30 || $[84] !== t31 || $[85] !== t34) {
360
+ if ($[78] !== t33) {
353
361
  t35 = /* @__PURE__ */ jsxs("div", {
354
- id: t23,
355
- role: t24,
356
- "aria-controls": t25,
357
- "aria-haspopup": t26,
358
- "aria-expanded": t27,
359
- "aria-invalid": t28,
360
- tabIndex: t29,
361
- className: t30,
362
- children: [t31, t34]
362
+ className: "ml-auto flex shrink-0 items-center gap-1",
363
+ children: [t33, t34]
364
+ });
365
+ $[78] = t33;
366
+ $[79] = t35;
367
+ } else t35 = $[79];
368
+ let t36;
369
+ if ($[80] !== t24 || $[81] !== t25 || $[82] !== t26 || $[83] !== t27 || $[84] !== t28 || $[85] !== t29 || $[86] !== t30 || $[87] !== t31 || $[88] !== t32 || $[89] !== t35) {
370
+ t36 = /* @__PURE__ */ jsxs("div", {
371
+ id: t24,
372
+ role: t25,
373
+ "aria-controls": t26,
374
+ "aria-haspopup": t27,
375
+ "aria-expanded": t28,
376
+ "aria-invalid": t29,
377
+ tabIndex: t30,
378
+ className: t31,
379
+ children: [t32, t35]
363
380
  });
364
- $[76] = t23;
365
- $[77] = t24;
366
- $[78] = t25;
367
- $[79] = t26;
368
- $[80] = t27;
369
- $[81] = t28;
370
- $[82] = t29;
371
- $[83] = t30;
372
- $[84] = t31;
373
- $[85] = t34;
374
- $[86] = t35;
375
- } else t35 = $[86];
376
- const TriggerContent = t35;
377
- const t36 = !loadOptions;
378
- let t37;
379
- if ($[87] !== search) {
380
- t37 = /* @__PURE__ */ jsx(CommandInput, {
381
+ $[80] = t24;
382
+ $[81] = t25;
383
+ $[82] = t26;
384
+ $[83] = t27;
385
+ $[84] = t28;
386
+ $[85] = t29;
387
+ $[86] = t30;
388
+ $[87] = t31;
389
+ $[88] = t32;
390
+ $[89] = t35;
391
+ $[90] = t36;
392
+ } else t36 = $[90];
393
+ const TriggerContent = t36;
394
+ const t37 = !loadOptions;
395
+ let t38;
396
+ if ($[91] !== search) {
397
+ t38 = /* @__PURE__ */ jsx(CommandInput, {
381
398
  placeholder: "Search...",
382
399
  value: search,
383
400
  onValueChange: setSearch
384
401
  });
385
- $[87] = search;
386
- $[88] = t37;
387
- } else t37 = $[88];
388
- let t38;
389
- if ($[89] !== showLoading) {
390
- t38 = showLoading && /* @__PURE__ */ jsx("div", {
402
+ $[91] = search;
403
+ $[92] = t38;
404
+ } else t38 = $[92];
405
+ let t39;
406
+ if ($[93] !== showLoading) {
407
+ t39 = showLoading && /* @__PURE__ */ jsx("div", {
391
408
  className: "flex items-center justify-center py-6",
392
409
  children: /* @__PURE__ */ jsx(Icon, {
393
410
  icon: "ph:circle-notch",
394
411
  className: "text-muted-foreground size-4 animate-spin"
395
412
  })
396
413
  });
397
- $[89] = showLoading;
398
- $[90] = t38;
399
- } else t38 = $[90];
400
- let t39;
401
- if ($[91] !== resolvedEmptyMessage) {
402
- t39 = /* @__PURE__ */ jsx(CommandEmpty, { children: resolvedEmptyMessage });
403
- $[91] = resolvedEmptyMessage;
404
- $[92] = t39;
405
- } else t39 = $[92];
414
+ $[93] = showLoading;
415
+ $[94] = t39;
416
+ } else t39 = $[94];
406
417
  let t40;
407
- if ($[93] !== canAddMore || $[94] !== filteredOptions || $[95] !== handleToggle || $[96] !== resolveText || $[97] !== resolvedValue) {
408
- let t41$1;
409
- if ($[99] !== canAddMore || $[100] !== handleToggle || $[101] !== resolveText || $[102] !== resolvedValue) {
410
- t41$1 = (option_0) => {
418
+ if ($[95] !== resolvedEmptyMessage) {
419
+ t40 = /* @__PURE__ */ jsx(CommandEmpty, { children: resolvedEmptyMessage });
420
+ $[95] = resolvedEmptyMessage;
421
+ $[96] = t40;
422
+ } else t40 = $[96];
423
+ let t41;
424
+ if ($[97] !== canAddMore || $[98] !== filteredOptions || $[99] !== handleToggle || $[100] !== resolveText || $[101] !== resolvedValue) {
425
+ let t42$1;
426
+ if ($[103] !== canAddMore || $[104] !== handleToggle || $[105] !== resolveText || $[106] !== resolvedValue) {
427
+ t42$1 = (option_0) => {
411
428
  const isSelected_0 = resolvedValue.includes(option_0.value);
412
429
  const isDisabled = option_0.disabled || !isSelected_0 && !canAddMore;
413
430
  return /* @__PURE__ */ jsxs(CommandItem, {
@@ -416,7 +433,7 @@ function SelectMulti(t0) {
416
433
  disabled: isDisabled,
417
434
  children: [
418
435
  /* @__PURE__ */ jsx("div", {
419
- className: cn("flex size-4 items-center justify-center border", isSelected_0 ? "bg-primary border-primary text-primary-foreground" : "border-muted-foreground/30"),
436
+ className: cn("flex size-4 items-center justify-center border", isSelected_0 ? "border-foreground bg-foreground text-background" : "border-muted-foreground/30"),
420
437
  children: isSelected_0 && /* @__PURE__ */ jsx(Icon, {
421
438
  icon: "ph:check",
422
439
  className: "size-3"
@@ -430,42 +447,42 @@ function SelectMulti(t0) {
430
447
  ]
431
448
  }, String(option_0.value));
432
449
  };
433
- $[99] = canAddMore;
434
- $[100] = handleToggle;
435
- $[101] = resolveText;
436
- $[102] = resolvedValue;
437
- $[103] = t41$1;
438
- } else t41$1 = $[103];
439
- t40 = filteredOptions.map(t41$1);
440
- $[93] = canAddMore;
441
- $[94] = filteredOptions;
442
- $[95] = handleToggle;
443
- $[96] = resolveText;
444
- $[97] = resolvedValue;
445
- $[98] = t40;
446
- } else t40 = $[98];
447
- let t41;
448
- if ($[104] !== t40) {
449
- t41 = /* @__PURE__ */ jsx(CommandGroup, { children: t40 });
450
- $[104] = t40;
451
- $[105] = t41;
452
- } else t41 = $[105];
450
+ $[103] = canAddMore;
451
+ $[104] = handleToggle;
452
+ $[105] = resolveText;
453
+ $[106] = resolvedValue;
454
+ $[107] = t42$1;
455
+ } else t42$1 = $[107];
456
+ t41 = filteredOptions.map(t42$1);
457
+ $[97] = canAddMore;
458
+ $[98] = filteredOptions;
459
+ $[99] = handleToggle;
460
+ $[100] = resolveText;
461
+ $[101] = resolvedValue;
462
+ $[102] = t41;
463
+ } else t41 = $[102];
453
464
  let t42;
454
- if ($[106] !== t38 || $[107] !== t39 || $[108] !== t41) {
455
- t42 = /* @__PURE__ */ jsxs(CommandList, { children: [
456
- t38,
457
- t39,
458
- t41
459
- ] });
460
- $[106] = t38;
461
- $[107] = t39;
465
+ if ($[108] !== t41) {
466
+ t42 = /* @__PURE__ */ jsx(CommandGroup, { children: t41 });
462
467
  $[108] = t41;
463
468
  $[109] = t42;
464
469
  } else t42 = $[109];
465
470
  let t43;
466
- if ($[110] !== maxSelections || $[111] !== resolvedValue.length) {
467
- t43 = maxSelections && /* @__PURE__ */ jsxs("div", {
468
- className: "text-muted-foreground border-t p-2 text-center text-xs",
471
+ if ($[110] !== t39 || $[111] !== t40 || $[112] !== t42) {
472
+ t43 = /* @__PURE__ */ jsxs(CommandList, { children: [
473
+ t39,
474
+ t40,
475
+ t42
476
+ ] });
477
+ $[110] = t39;
478
+ $[111] = t40;
479
+ $[112] = t42;
480
+ $[113] = t43;
481
+ } else t43 = $[113];
482
+ let t44;
483
+ if ($[114] !== maxSelections || $[115] !== resolvedValue.length) {
484
+ t44 = maxSelections && /* @__PURE__ */ jsxs("div", {
485
+ className: "text-muted-foreground border-t p-2 text-center text-xs tabular-nums",
469
486
  children: [
470
487
  resolvedValue.length,
471
488
  " / ",
@@ -473,114 +490,118 @@ function SelectMulti(t0) {
473
490
  " selected"
474
491
  ]
475
492
  });
476
- $[110] = maxSelections;
477
- $[111] = resolvedValue.length;
478
- $[112] = t43;
479
- } else t43 = $[112];
480
- let t44;
481
- if ($[113] !== t36 || $[114] !== t37 || $[115] !== t42 || $[116] !== t43) {
482
- t44 = /* @__PURE__ */ jsxs(Command, {
483
- shouldFilter: t36,
493
+ $[114] = maxSelections;
494
+ $[115] = resolvedValue.length;
495
+ $[116] = t44;
496
+ } else t44 = $[116];
497
+ let t45;
498
+ if ($[117] !== t37 || $[118] !== t38 || $[119] !== t43 || $[120] !== t44) {
499
+ t45 = /* @__PURE__ */ jsxs(Command, {
500
+ shouldFilter: t37,
484
501
  children: [
485
- t37,
486
- t42,
487
- t43
502
+ t38,
503
+ t43,
504
+ t44
488
505
  ]
489
506
  });
490
- $[113] = t36;
491
- $[114] = t37;
492
- $[115] = t42;
493
- $[116] = t43;
494
- $[117] = t44;
495
- } else t44 = $[117];
496
- const CommandContent = t44;
507
+ $[117] = t37;
508
+ $[118] = t38;
509
+ $[119] = t43;
510
+ $[120] = t44;
511
+ $[121] = t45;
512
+ } else t45 = $[121];
513
+ const CommandContent = t45;
497
514
  if (isMobile) {
498
- let t45$1;
499
- if ($[118] !== TriggerContent || $[119] !== disabled) {
500
- t45$1 = /* @__PURE__ */ jsx(DrawerTrigger, {
515
+ let t46$1;
516
+ if ($[122] !== TriggerContent || $[123] !== disabled || $[124] !== handleTriggerKeyDown) {
517
+ t46$1 = /* @__PURE__ */ jsx(DrawerTrigger, {
501
518
  asChild: true,
502
519
  children: /* @__PURE__ */ jsx("button", {
503
520
  type: "button",
504
521
  disabled,
522
+ onKeyDown: handleTriggerKeyDown,
505
523
  className: "w-full text-left",
506
524
  children: TriggerContent
507
525
  })
508
526
  });
509
- $[118] = TriggerContent;
510
- $[119] = disabled;
511
- $[120] = t45$1;
512
- } else t45$1 = $[120];
513
- let t46$1;
514
- if ($[121] !== resolvedDrawerTitle) {
515
- t46$1 = /* @__PURE__ */ jsx(DrawerHeader, { children: /* @__PURE__ */ jsx(DrawerTitle, { children: resolvedDrawerTitle }) });
516
- $[121] = resolvedDrawerTitle;
517
- $[122] = t46$1;
518
- } else t46$1 = $[122];
527
+ $[122] = TriggerContent;
528
+ $[123] = disabled;
529
+ $[124] = handleTriggerKeyDown;
530
+ $[125] = t46$1;
531
+ } else t46$1 = $[125];
519
532
  let t47$1;
520
- if ($[123] !== CommandContent) {
521
- t47$1 = /* @__PURE__ */ jsx("div", {
533
+ if ($[126] !== resolvedDrawerTitle) {
534
+ t47$1 = /* @__PURE__ */ jsx(DrawerHeader, { children: /* @__PURE__ */ jsx(DrawerTitle, { children: resolvedDrawerTitle }) });
535
+ $[126] = resolvedDrawerTitle;
536
+ $[127] = t47$1;
537
+ } else t47$1 = $[127];
538
+ let t48$1;
539
+ if ($[128] !== CommandContent) {
540
+ t48$1 = /* @__PURE__ */ jsx("div", {
522
541
  className: "px-4 pb-6",
523
542
  children: CommandContent
524
543
  });
525
- $[123] = CommandContent;
526
- $[124] = t47$1;
527
- } else t47$1 = $[124];
528
- let t48;
529
- if ($[125] !== t46$1 || $[126] !== t47$1) {
530
- t48 = /* @__PURE__ */ jsxs(DrawerContent, { children: [t46$1, t47$1] });
531
- $[125] = t46$1;
532
- $[126] = t47$1;
533
- $[127] = t48;
534
- } else t48 = $[127];
544
+ $[128] = CommandContent;
545
+ $[129] = t48$1;
546
+ } else t48$1 = $[129];
535
547
  let t49;
536
- if ($[128] !== open || $[129] !== t45$1 || $[130] !== t48) {
537
- t49 = /* @__PURE__ */ jsxs(Drawer, {
548
+ if ($[130] !== t47$1 || $[131] !== t48$1) {
549
+ t49 = /* @__PURE__ */ jsxs(DrawerContent, { children: [t47$1, t48$1] });
550
+ $[130] = t47$1;
551
+ $[131] = t48$1;
552
+ $[132] = t49;
553
+ } else t49 = $[132];
554
+ let t50;
555
+ if ($[133] !== open || $[134] !== t46$1 || $[135] !== t49) {
556
+ t50 = /* @__PURE__ */ jsxs(Drawer, {
538
557
  open,
539
558
  onOpenChange: setOpen,
540
- children: [t45$1, t48]
559
+ children: [t46$1, t49]
541
560
  });
542
- $[128] = open;
543
- $[129] = t45$1;
544
- $[130] = t48;
545
- $[131] = t49;
546
- } else t49 = $[131];
547
- return t49;
561
+ $[133] = open;
562
+ $[134] = t46$1;
563
+ $[135] = t49;
564
+ $[136] = t50;
565
+ } else t50 = $[136];
566
+ return t50;
548
567
  }
549
- let t45;
550
- if ($[132] !== TriggerContent || $[133] !== disabled) {
551
- t45 = /* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx("button", {
568
+ let t46;
569
+ if ($[137] !== TriggerContent || $[138] !== disabled || $[139] !== handleTriggerKeyDown) {
570
+ t46 = /* @__PURE__ */ jsx(PopoverTrigger, { render: /* @__PURE__ */ jsx("button", {
552
571
  type: "button",
553
572
  disabled,
573
+ onKeyDown: handleTriggerKeyDown,
554
574
  className: "w-full text-left",
555
575
  children: TriggerContent
556
576
  }) });
557
- $[132] = TriggerContent;
558
- $[133] = disabled;
559
- $[134] = t45;
560
- } else t45 = $[134];
561
- let t46;
562
- if ($[135] !== CommandContent) {
563
- t46 = /* @__PURE__ */ jsx(PopoverContent, {
577
+ $[137] = TriggerContent;
578
+ $[138] = disabled;
579
+ $[139] = handleTriggerKeyDown;
580
+ $[140] = t46;
581
+ } else t46 = $[140];
582
+ let t47;
583
+ if ($[141] !== CommandContent) {
584
+ t47 = /* @__PURE__ */ jsx(PopoverContent, {
564
585
  className: "w-(--anchor-width) p-0",
565
586
  align: "start",
566
587
  children: CommandContent
567
588
  });
568
- $[135] = CommandContent;
569
- $[136] = t46;
570
- } else t46 = $[136];
571
- let t47;
572
- if ($[137] !== open || $[138] !== t45 || $[139] !== t46) {
573
- t47 = /* @__PURE__ */ jsxs(Popover, {
589
+ $[141] = CommandContent;
590
+ $[142] = t47;
591
+ } else t47 = $[142];
592
+ let t48;
593
+ if ($[143] !== open || $[144] !== t46 || $[145] !== t47) {
594
+ t48 = /* @__PURE__ */ jsxs(Popover, {
574
595
  open,
575
596
  onOpenChange: setOpen,
576
- children: [t45, t46]
597
+ children: [t46, t47]
577
598
  });
578
- $[137] = open;
579
- $[138] = t45;
580
- $[139] = t46;
581
- $[140] = t47;
582
- } else t47 = $[140];
583
- return t47;
599
+ $[143] = open;
600
+ $[144] = t46;
601
+ $[145] = t47;
602
+ $[146] = t48;
603
+ } else t48 = $[146];
604
+ return t48;
584
605
  }
585
606
  function _temp(map, opt) {
586
607
  return new Map(map).set(opt.value, opt);