@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,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useResolveText } from "../../i18n/hooks.mjs";
3
+ import { useDateFnsLocale, useResolveText } from "../../i18n/hooks.mjs";
4
4
  import { cn } from "../../lib/utils.mjs";
5
5
  import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover.mjs";
6
6
  import { c } from "react/compiler-runtime";
@@ -11,6 +11,29 @@ import { format } from "date-fns";
11
11
  import { DayPicker } from "react-day-picker";
12
12
 
13
13
  //#region src/client/components/primitives/date-input.tsx
14
+ const datePickerClassNames = {
15
+ months: "flex flex-col sm:flex-row gap-2",
16
+ month: "flex flex-col gap-3",
17
+ month_caption: "relative flex h-9 items-center justify-center px-9",
18
+ caption_label: "text-foreground text-sm font-medium",
19
+ nav: "absolute inset-x-0 top-0 flex items-center justify-between px-1",
20
+ button_previous: cn("text-muted-foreground flex size-8 items-center justify-center rounded-md bg-transparent p-0 transition-[background-color,color,opacity] duration-150 ease-out", "hover:bg-surface-high hover:text-foreground"),
21
+ button_next: cn("text-muted-foreground flex size-8 items-center justify-center rounded-md bg-transparent p-0 transition-[background-color,color,opacity] duration-150 ease-out", "hover:bg-surface-high hover:text-foreground"),
22
+ month_grid: "w-full border-separate border-spacing-y-1",
23
+ weekdays: "flex",
24
+ weekday: "text-muted-foreground flex size-9 items-center justify-center text-[0.7rem] font-medium",
25
+ week: "flex w-full",
26
+ day: "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-transparent [&:has([aria-selected].day-outside)]:bg-transparent",
27
+ day_button: cn("size-9 rounded-[var(--control-radius-inner)] p-0 text-sm font-normal transition-[background-color,color,box-shadow,transform] duration-150 ease-out", "hover:bg-surface-high hover:text-foreground active:scale-[0.96]", "focus-visible:ring-ring/20 focus-visible:ring-3 focus-visible:outline-none"),
28
+ selected: "bg-foreground text-background shadow-[var(--control-shadow)] hover:bg-foreground hover:text-background focus:bg-foreground focus:text-background",
29
+ today: "bg-surface-mid text-foreground shadow-[inset_0_0_0_1px_var(--border-strong)]",
30
+ outside: "text-muted-foreground opacity-45",
31
+ disabled: "text-muted-foreground opacity-30",
32
+ hidden: "invisible"
33
+ };
34
+ const dateTriggerClassName = cn("control-surface font-chrome flex w-full items-center justify-start gap-2 px-3 py-2 text-sm", "hover:bg-surface-low hover:text-foreground", "focus-visible:border-border-strong focus-visible:ring-ring/20 aria-expanded:border-border-strong aria-expanded:ring-ring/20 focus-visible:ring-3 focus-visible:outline-none aria-expanded:ring-3", "disabled:cursor-not-allowed disabled:opacity-50");
35
+ const openTriggerClassName = "border-border-strong ring-ring/20 ring-3";
36
+ const datePopoverClassName = "floating-surface w-auto p-1";
14
37
  /**
15
38
  * Date Input Primitive
16
39
  *
@@ -27,11 +50,12 @@ import { DayPicker } from "react-day-picker";
27
50
  * ```
28
51
  */
29
52
  function DateInput(t0) {
30
- const $ = c(40);
53
+ const $ = c(39);
31
54
  const { value, onChange, minDate, maxDate, format: t1, placeholder: t2, disabled, className, id, "aria-invalid": ariaInvalid } = t0;
32
55
  const dateFormat = t1 === void 0 ? "PP" : t1;
33
56
  const placeholder = t2 === void 0 ? "Select date" : t2;
34
57
  const resolveText = useResolveText();
58
+ const dateFnsLocale = useDateFnsLocale();
35
59
  const [open, setOpen] = useState(false);
36
60
  let t3;
37
61
  if ($[0] !== onChange) {
@@ -53,152 +77,121 @@ function DateInput(t0) {
53
77
  $[3] = t4;
54
78
  } else t4 = $[3];
55
79
  const handleClear = t4;
56
- const t5 = !value && "text-muted-foreground";
57
- let t6;
58
- if ($[4] !== className || $[5] !== t5) {
59
- t6 = cn("qa-date-input border-input bg-transparent font-mono flex h-9 w-full items-center justify-start gap-2 border px-3 py-2 text-sm", "hover:bg-accent hover:text-accent-foreground", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "disabled:cursor-not-allowed disabled:opacity-50", t5, className);
80
+ const t5 = open && openTriggerClassName;
81
+ const t6 = !value && "text-muted-foreground";
82
+ let t7;
83
+ if ($[4] !== className || $[5] !== t5 || $[6] !== t6) {
84
+ t7 = cn("qa-date-input", dateTriggerClassName, t5, t6, className);
60
85
  $[4] = className;
61
86
  $[5] = t5;
62
87
  $[6] = t6;
63
- } else t6 = $[6];
64
- let t7;
65
- if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
66
- t7 = /* @__PURE__ */ jsx(Icon, {
67
- icon: "ph:calendar-blank",
68
- className: "size-4"
69
- });
70
88
  $[7] = t7;
71
89
  } else t7 = $[7];
72
90
  let t8;
73
- if ($[8] !== dateFormat || $[9] !== placeholder || $[10] !== resolveText || $[11] !== value) {
74
- t8 = value ? format(value, dateFormat) : resolveText(placeholder);
75
- $[8] = dateFormat;
76
- $[9] = placeholder;
77
- $[10] = resolveText;
78
- $[11] = value;
79
- $[12] = t8;
80
- } else t8 = $[12];
91
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
92
+ t8 = /* @__PURE__ */ jsx(Icon, {
93
+ icon: "ph:calendar-blank",
94
+ className: "size-4"
95
+ });
96
+ $[8] = t8;
97
+ } else t8 = $[8];
81
98
  let t9;
82
- if ($[13] !== t8) {
83
- t9 = /* @__PURE__ */ jsx("span", {
99
+ if ($[9] !== dateFormat || $[10] !== placeholder || $[11] !== resolveText || $[12] !== value) {
100
+ t9 = value ? format(value, dateFormat) : resolveText(placeholder);
101
+ $[9] = dateFormat;
102
+ $[10] = placeholder;
103
+ $[11] = resolveText;
104
+ $[12] = value;
105
+ $[13] = t9;
106
+ } else t9 = $[13];
107
+ let t10;
108
+ if ($[14] !== t9) {
109
+ t10 = /* @__PURE__ */ jsx("span", {
84
110
  className: "flex-1 text-left",
85
- children: t8
111
+ children: t9
86
112
  });
87
- $[13] = t8;
88
113
  $[14] = t9;
89
- } else t9 = $[14];
90
- let t10;
91
- if ($[15] !== disabled || $[16] !== handleClear || $[17] !== value) {
92
- t10 = value && !disabled && /* @__PURE__ */ jsx(Icon, {
114
+ $[15] = t10;
115
+ } else t10 = $[15];
116
+ let t11;
117
+ if ($[16] !== disabled || $[17] !== handleClear || $[18] !== value) {
118
+ t11 = value && !disabled && /* @__PURE__ */ jsx(Icon, {
93
119
  icon: "ph:x",
94
120
  className: "size-4 opacity-50 hover:opacity-100",
95
121
  onClick: handleClear
96
122
  });
97
- $[15] = disabled;
98
- $[16] = handleClear;
99
- $[17] = value;
100
- $[18] = t10;
101
- } else t10 = $[18];
102
- let t11;
103
- if ($[19] !== ariaInvalid || $[20] !== disabled || $[21] !== id || $[22] !== t10 || $[23] !== t6 || $[24] !== t9) {
104
- t11 = /* @__PURE__ */ jsxs(PopoverTrigger, {
123
+ $[16] = disabled;
124
+ $[17] = handleClear;
125
+ $[18] = value;
126
+ $[19] = t11;
127
+ } else t11 = $[19];
128
+ let t12;
129
+ if ($[20] !== ariaInvalid || $[21] !== disabled || $[22] !== id || $[23] !== t10 || $[24] !== t11 || $[25] !== t7) {
130
+ t12 = /* @__PURE__ */ jsxs(PopoverTrigger, {
105
131
  id,
106
132
  disabled,
107
133
  "aria-invalid": ariaInvalid,
108
- className: t6,
134
+ className: t7,
109
135
  children: [
110
- t7,
111
- t9,
112
- t10
136
+ t8,
137
+ t10,
138
+ t11
113
139
  ]
114
140
  });
115
- $[19] = ariaInvalid;
116
- $[20] = disabled;
117
- $[21] = id;
118
- $[22] = t10;
119
- $[23] = t6;
120
- $[24] = t9;
121
- $[25] = t11;
122
- } else t11 = $[25];
123
- const t12 = value ?? void 0;
124
- let t13;
125
- if ($[26] !== maxDate || $[27] !== minDate) {
126
- t13 = (date_0) => {
141
+ $[20] = ariaInvalid;
142
+ $[21] = disabled;
143
+ $[22] = id;
144
+ $[23] = t10;
145
+ $[24] = t11;
146
+ $[25] = t7;
147
+ $[26] = t12;
148
+ } else t12 = $[26];
149
+ const t13 = value ?? void 0;
150
+ let t14;
151
+ if ($[27] !== maxDate || $[28] !== minDate) {
152
+ t14 = (date_0) => {
127
153
  if (minDate && date_0 < minDate) return true;
128
154
  if (maxDate && date_0 > maxDate) return true;
129
155
  return false;
130
156
  };
131
- $[26] = maxDate;
132
- $[27] = minDate;
133
- $[28] = t13;
134
- } else t13 = $[28];
135
- let t14;
136
- let t15;
137
- if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
138
- t14 = cn("flex size-8 items-center justify-center", "hover:bg-accent bg-transparent p-0 opacity-50 hover:opacity-100");
139
- t15 = cn("flex size-8 items-center justify-center", "hover:bg-accent bg-transparent p-0 opacity-50 hover:opacity-100");
157
+ $[27] = maxDate;
158
+ $[28] = minDate;
140
159
  $[29] = t14;
141
- $[30] = t15;
142
- } else {
143
- t14 = $[29];
144
- t15 = $[30];
145
- }
146
- let t16;
147
- if ($[31] === Symbol.for("react.memo_cache_sentinel")) {
148
- t16 = {
149
- months: "flex flex-col sm:flex-row gap-2",
150
- month: "flex flex-col gap-4",
151
- month_caption: "flex justify-center pt-1 relative items-center h-9",
152
- caption_label: "text-sm font-medium",
153
- nav: "absolute inset-x-0 top-0 flex items-center justify-between px-1",
154
- button_previous: t14,
155
- button_next: t15,
156
- month_grid: "w-full border-collapse",
157
- weekdays: "flex",
158
- weekday: "text-muted-foreground w-9 font-normal text-[0.8rem] text-center",
159
- week: "flex w-full mt-2",
160
- day: "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent",
161
- day_button: cn("size-9 p-0 font-normal", "hover:bg-accent hover:text-accent-foreground", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2"),
162
- selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
163
- today: "bg-accent text-accent-foreground",
164
- outside: "text-muted-foreground opacity-50",
165
- disabled: "text-muted-foreground opacity-50",
166
- hidden: "invisible"
167
- };
168
- $[31] = t16;
169
- } else t16 = $[31];
170
- let t17;
171
- if ($[32] !== handleSelect || $[33] !== t12 || $[34] !== t13) {
172
- t17 = /* @__PURE__ */ jsx(PopoverContent, {
173
- className: "w-auto p-0",
160
+ } else t14 = $[29];
161
+ let t15;
162
+ if ($[30] !== dateFnsLocale || $[31] !== handleSelect || $[32] !== t13 || $[33] !== t14) {
163
+ t15 = /* @__PURE__ */ jsx(PopoverContent, {
164
+ className: datePopoverClassName,
174
165
  align: "start",
175
166
  children: /* @__PURE__ */ jsx(DayPicker, {
176
167
  mode: "single",
177
- selected: t12,
168
+ selected: t13,
178
169
  onSelect: handleSelect,
179
- disabled: t13,
180
- className: "p-3",
181
- classNames: t16
170
+ locale: dateFnsLocale,
171
+ disabled: t14,
172
+ className: "qa-date-picker font-chrome p-2",
173
+ classNames: datePickerClassNames
182
174
  })
183
175
  });
184
- $[32] = handleSelect;
185
- $[33] = t12;
186
- $[34] = t13;
187
- $[35] = t17;
188
- } else t17 = $[35];
189
- let t18;
190
- if ($[36] !== open || $[37] !== t11 || $[38] !== t17) {
191
- t18 = /* @__PURE__ */ jsxs(Popover, {
176
+ $[30] = dateFnsLocale;
177
+ $[31] = handleSelect;
178
+ $[32] = t13;
179
+ $[33] = t14;
180
+ $[34] = t15;
181
+ } else t15 = $[34];
182
+ let t16;
183
+ if ($[35] !== open || $[36] !== t12 || $[37] !== t15) {
184
+ t16 = /* @__PURE__ */ jsxs(Popover, {
192
185
  open,
193
186
  onOpenChange: setOpen,
194
- children: [t11, t17]
187
+ children: [t12, t15]
195
188
  });
196
- $[36] = open;
197
- $[37] = t11;
198
- $[38] = t17;
199
- $[39] = t18;
200
- } else t18 = $[39];
201
- return t18;
189
+ $[35] = open;
190
+ $[36] = t12;
191
+ $[37] = t15;
192
+ $[38] = t16;
193
+ } else t16 = $[38];
194
+ return t16;
202
195
  }
203
196
  /**
204
197
  * DateTime Input Primitive
@@ -215,12 +208,13 @@ function DateInput(t0) {
215
208
  * ```
216
209
  */
217
210
  function DateTimeInput(t0) {
218
- const $ = c(55);
211
+ const $ = c(54);
219
212
  const { value, onChange, minDate, maxDate, format: t1, precision: t2, placeholder: t3, disabled, className, id, "aria-invalid": ariaInvalid } = t0;
220
213
  const dateFormat = t1 === void 0 ? "PPp" : t1;
221
214
  const precision = t2 === void 0 ? "minute" : t2;
222
215
  const placeholder = t3 === void 0 ? "Select date and time" : t3;
223
216
  const resolveText = useResolveText();
217
+ const dateFnsLocale = useDateFnsLocale();
224
218
  const [open, setOpen] = useState(false);
225
219
  let t4;
226
220
  if ($[0] !== precision || $[1] !== value) {
@@ -279,182 +273,151 @@ function DateTimeInput(t0) {
279
273
  $[10] = t7;
280
274
  } else t7 = $[10];
281
275
  const handleClear = t7;
282
- const t8 = !value && "text-muted-foreground";
283
- let t9;
284
- if ($[11] !== className || $[12] !== t8) {
285
- t9 = cn("qa-datetime-input border-input bg-transparent font-mono flex h-9 w-full items-center justify-start gap-2 border px-3 py-2 text-sm", "hover:bg-accent hover:text-accent-foreground", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "disabled:cursor-not-allowed disabled:opacity-50", t8, className);
276
+ const t8 = open && openTriggerClassName;
277
+ const t9 = !value && "text-muted-foreground";
278
+ let t10;
279
+ if ($[11] !== className || $[12] !== t8 || $[13] !== t9) {
280
+ t10 = cn("qa-datetime-input", dateTriggerClassName, t8, t9, className);
286
281
  $[11] = className;
287
282
  $[12] = t8;
288
283
  $[13] = t9;
289
- } else t9 = $[13];
290
- let t10;
291
- if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
292
- t10 = /* @__PURE__ */ jsx(Icon, {
293
- icon: "ph:calendar-blank",
294
- className: "size-4"
295
- });
296
284
  $[14] = t10;
297
285
  } else t10 = $[14];
298
286
  let t11;
299
- if ($[15] !== dateFormat || $[16] !== placeholder || $[17] !== resolveText || $[18] !== value) {
300
- t11 = value ? format(value, dateFormat) : resolveText(placeholder);
301
- $[15] = dateFormat;
302
- $[16] = placeholder;
303
- $[17] = resolveText;
304
- $[18] = value;
305
- $[19] = t11;
306
- } else t11 = $[19];
287
+ if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
288
+ t11 = /* @__PURE__ */ jsx(Icon, {
289
+ icon: "ph:calendar-blank",
290
+ className: "size-4"
291
+ });
292
+ $[15] = t11;
293
+ } else t11 = $[15];
307
294
  let t12;
308
- if ($[20] !== t11) {
309
- t12 = /* @__PURE__ */ jsx("span", {
295
+ if ($[16] !== dateFormat || $[17] !== placeholder || $[18] !== resolveText || $[19] !== value) {
296
+ t12 = value ? format(value, dateFormat) : resolveText(placeholder);
297
+ $[16] = dateFormat;
298
+ $[17] = placeholder;
299
+ $[18] = resolveText;
300
+ $[19] = value;
301
+ $[20] = t12;
302
+ } else t12 = $[20];
303
+ let t13;
304
+ if ($[21] !== t12) {
305
+ t13 = /* @__PURE__ */ jsx("span", {
310
306
  className: "flex-1 text-left",
311
- children: t11
307
+ children: t12
312
308
  });
313
- $[20] = t11;
314
309
  $[21] = t12;
315
- } else t12 = $[21];
316
- let t13;
317
- if ($[22] !== disabled || $[23] !== handleClear || $[24] !== value) {
318
- t13 = value && !disabled && /* @__PURE__ */ jsx(Icon, {
310
+ $[22] = t13;
311
+ } else t13 = $[22];
312
+ let t14;
313
+ if ($[23] !== disabled || $[24] !== handleClear || $[25] !== value) {
314
+ t14 = value && !disabled && /* @__PURE__ */ jsx(Icon, {
319
315
  icon: "ph:x",
320
316
  className: "size-4 opacity-50 hover:opacity-100",
321
317
  onClick: handleClear
322
318
  });
323
- $[22] = disabled;
324
- $[23] = handleClear;
325
- $[24] = value;
326
- $[25] = t13;
327
- } else t13 = $[25];
328
- let t14;
329
- if ($[26] !== ariaInvalid || $[27] !== disabled || $[28] !== id || $[29] !== t12 || $[30] !== t13 || $[31] !== t9) {
330
- t14 = /* @__PURE__ */ jsxs(PopoverTrigger, {
319
+ $[23] = disabled;
320
+ $[24] = handleClear;
321
+ $[25] = value;
322
+ $[26] = t14;
323
+ } else t14 = $[26];
324
+ let t15;
325
+ if ($[27] !== ariaInvalid || $[28] !== disabled || $[29] !== id || $[30] !== t10 || $[31] !== t13 || $[32] !== t14) {
326
+ t15 = /* @__PURE__ */ jsxs(PopoverTrigger, {
331
327
  id,
332
328
  disabled,
333
329
  "aria-invalid": ariaInvalid,
334
- className: t9,
330
+ className: t10,
335
331
  children: [
336
- t10,
337
- t12,
338
- t13
332
+ t11,
333
+ t13,
334
+ t14
339
335
  ]
340
336
  });
341
- $[26] = ariaInvalid;
342
- $[27] = disabled;
343
- $[28] = id;
344
- $[29] = t12;
345
- $[30] = t13;
346
- $[31] = t9;
337
+ $[27] = ariaInvalid;
338
+ $[28] = disabled;
339
+ $[29] = id;
340
+ $[30] = t10;
341
+ $[31] = t13;
347
342
  $[32] = t14;
348
- } else t14 = $[32];
349
- const t15 = value ?? void 0;
350
- let t16;
351
- if ($[33] !== maxDate || $[34] !== minDate) {
352
- t16 = (date_0) => {
343
+ $[33] = t15;
344
+ } else t15 = $[33];
345
+ const t16 = value ?? void 0;
346
+ let t17;
347
+ if ($[34] !== maxDate || $[35] !== minDate) {
348
+ t17 = (date_0) => {
353
349
  if (minDate && date_0 < minDate) return true;
354
350
  if (maxDate && date_0 > maxDate) return true;
355
351
  return false;
356
352
  };
357
- $[33] = maxDate;
358
- $[34] = minDate;
359
- $[35] = t16;
360
- } else t16 = $[35];
361
- let t17;
362
- let t18;
363
- if ($[36] === Symbol.for("react.memo_cache_sentinel")) {
364
- t17 = cn("flex size-8 items-center justify-center", "hover:bg-accent bg-transparent p-0 opacity-50 hover:opacity-100");
365
- t18 = cn("flex size-8 items-center justify-center", "hover:bg-accent bg-transparent p-0 opacity-50 hover:opacity-100");
353
+ $[34] = maxDate;
354
+ $[35] = minDate;
366
355
  $[36] = t17;
367
- $[37] = t18;
368
- } else {
369
- t17 = $[36];
370
- t18 = $[37];
371
- }
372
- let t19;
373
- if ($[38] === Symbol.for("react.memo_cache_sentinel")) {
374
- t19 = {
375
- months: "flex flex-col sm:flex-row gap-2",
376
- month: "flex flex-col gap-4",
377
- month_caption: "flex justify-center pt-1 relative items-center h-9",
378
- caption_label: "text-sm font-medium",
379
- nav: "absolute inset-x-0 top-0 flex items-center justify-between px-1",
380
- button_previous: t17,
381
- button_next: t18,
382
- month_grid: "w-full border-collapse",
383
- weekdays: "flex",
384
- weekday: "text-muted-foreground w-9 font-normal text-[0.8rem] text-center",
385
- week: "flex w-full mt-2",
386
- day: "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent",
387
- day_button: cn("size-9 p-0 font-normal", "hover:bg-accent hover:text-accent-foreground", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2"),
388
- selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
389
- today: "bg-accent text-accent-foreground",
390
- outside: "text-muted-foreground opacity-50",
391
- disabled: "text-muted-foreground opacity-50",
392
- hidden: "invisible"
393
- };
394
- $[38] = t19;
395
- } else t19 = $[38];
396
- let t20;
397
- if ($[39] !== handleDateSelect || $[40] !== t15 || $[41] !== t16) {
398
- t20 = /* @__PURE__ */ jsx(DayPicker, {
356
+ } else t17 = $[36];
357
+ let t18;
358
+ if ($[37] !== dateFnsLocale || $[38] !== handleDateSelect || $[39] !== t16 || $[40] !== t17) {
359
+ t18 = /* @__PURE__ */ jsx(DayPicker, {
399
360
  mode: "single",
400
- selected: t15,
361
+ selected: t16,
401
362
  onSelect: handleDateSelect,
402
- disabled: t16,
403
- className: "p-3",
404
- classNames: t19
363
+ locale: dateFnsLocale,
364
+ disabled: t17,
365
+ className: "qa-date-picker font-chrome p-2",
366
+ classNames: datePickerClassNames
405
367
  });
406
- $[39] = handleDateSelect;
407
- $[40] = t15;
408
- $[41] = t16;
368
+ $[37] = dateFnsLocale;
369
+ $[38] = handleDateSelect;
370
+ $[39] = t16;
371
+ $[40] = t17;
372
+ $[41] = t18;
373
+ } else t18 = $[41];
374
+ const t19 = precision === "second" ? 1 : 60;
375
+ let t20;
376
+ if ($[42] === Symbol.for("react.memo_cache_sentinel")) {
377
+ t20 = cn("qa-time-input control-surface flex w-full px-3 py-2 text-sm", "focus-visible:border-border-strong focus-visible:ring-ring/20 focus-visible:ring-3 focus-visible:outline-none");
409
378
  $[42] = t20;
410
379
  } else t20 = $[42];
411
- const t21 = precision === "second" ? 1 : 60;
412
- let t22;
413
- if ($[43] === Symbol.for("react.memo_cache_sentinel")) {
414
- t22 = cn("border-input bg-transparent font-mono flex h-9 w-full border px-3 py-2 text-sm", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none");
415
- $[43] = t22;
416
- } else t22 = $[43];
417
- let t23;
418
- if ($[44] !== handleTimeChange || $[45] !== t21 || $[46] !== timeValue) {
419
- t23 = /* @__PURE__ */ jsx("div", {
420
- className: "border-border border-t p-3",
380
+ let t21;
381
+ if ($[43] !== handleTimeChange || $[44] !== t19 || $[45] !== timeValue) {
382
+ t21 = /* @__PURE__ */ jsx("div", {
383
+ className: "border-border-subtle bg-surface-low/60 border-t p-3",
421
384
  children: /* @__PURE__ */ jsx("input", {
422
385
  type: "time",
423
- step: t21,
386
+ step: t19,
424
387
  value: timeValue,
425
388
  onChange: handleTimeChange,
426
- className: t22
389
+ className: t20
427
390
  })
428
391
  });
429
- $[44] = handleTimeChange;
430
- $[45] = t21;
431
- $[46] = timeValue;
432
- $[47] = t23;
433
- } else t23 = $[47];
434
- let t24;
435
- if ($[48] !== t20 || $[49] !== t23) {
436
- t24 = /* @__PURE__ */ jsxs(PopoverContent, {
437
- className: "w-auto p-0",
392
+ $[43] = handleTimeChange;
393
+ $[44] = t19;
394
+ $[45] = timeValue;
395
+ $[46] = t21;
396
+ } else t21 = $[46];
397
+ let t22;
398
+ if ($[47] !== t18 || $[48] !== t21) {
399
+ t22 = /* @__PURE__ */ jsxs(PopoverContent, {
400
+ className: datePopoverClassName,
438
401
  align: "start",
439
- children: [t20, t23]
402
+ children: [t18, t21]
440
403
  });
441
- $[48] = t20;
442
- $[49] = t23;
443
- $[50] = t24;
444
- } else t24 = $[50];
445
- let t25;
446
- if ($[51] !== open || $[52] !== t14 || $[53] !== t24) {
447
- t25 = /* @__PURE__ */ jsxs(Popover, {
404
+ $[47] = t18;
405
+ $[48] = t21;
406
+ $[49] = t22;
407
+ } else t22 = $[49];
408
+ let t23;
409
+ if ($[50] !== open || $[51] !== t15 || $[52] !== t22) {
410
+ t23 = /* @__PURE__ */ jsxs(Popover, {
448
411
  open,
449
412
  onOpenChange: setOpen,
450
- children: [t14, t24]
413
+ children: [t15, t22]
451
414
  });
452
- $[51] = open;
453
- $[52] = t14;
454
- $[53] = t24;
455
- $[54] = t25;
456
- } else t25 = $[54];
457
- return t25;
415
+ $[50] = open;
416
+ $[51] = t15;
417
+ $[52] = t22;
418
+ $[53] = t23;
419
+ } else t23 = $[53];
420
+ return t23;
458
421
  }
459
422
 
460
423
  //#endregion