@questpie/admin 3.0.3 → 3.0.5

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 (253) 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-editor-layout.mjs +2 -2
  16. package/dist/client/components/blocks/block-fields-renderer.mjs +64 -28
  17. package/dist/client/components/blocks/block-insert-button.mjs +4 -4
  18. package/dist/client/components/blocks/block-item.mjs +2 -2
  19. package/dist/client/components/blocks/block-library-sidebar.mjs +91 -63
  20. package/dist/client/components/component-renderer.mjs +1 -1
  21. package/dist/client/components/fields/array-field.mjs +14 -14
  22. package/dist/client/components/fields/asset-preview-field.mjs +1 -1
  23. package/dist/client/components/fields/blocks-field/blocks-field.mjs +84 -104
  24. package/dist/client/components/fields/json-field.mjs +2 -2
  25. package/dist/client/components/fields/object-array-field.mjs +22 -22
  26. package/dist/client/components/fields/object-field.mjs +5 -5
  27. package/dist/client/components/fields/relation/displays/cards-display.mjs +16 -9
  28. package/dist/client/components/fields/relation/displays/chips-display.mjs +15 -12
  29. package/dist/client/components/fields/relation/displays/grid-display.mjs +15 -11
  30. package/dist/client/components/fields/relation/displays/list-display.mjs +33 -20
  31. package/dist/client/components/fields/relation/displays/table-display.mjs +62 -93
  32. package/dist/client/components/fields/relation/relation-items-display.mjs +1 -1
  33. package/dist/client/components/fields/relation-picker.mjs +7 -6
  34. package/dist/client/components/fields/relation-select.mjs +71 -47
  35. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +392 -82
  36. package/dist/client/components/fields/rich-text-editor/extensions.mjs +54 -23
  37. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +24 -50
  38. package/dist/client/components/fields/rich-text-editor/image-upload.mjs +66 -0
  39. package/dist/client/components/fields/rich-text-editor/index.d.mts +38 -0
  40. package/dist/client/components/fields/rich-text-editor/index.mjs +637 -376
  41. package/dist/client/components/fields/rich-text-editor/link-utils.mjs +26 -0
  42. package/dist/client/components/fields/rich-text-editor/presets.d.mts +10 -0
  43. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +27 -6
  44. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +464 -346
  45. package/dist/client/components/fields/rich-text-editor/types.d.mts +77 -0
  46. package/dist/client/components/fields/upload-field.mjs +45 -49
  47. package/dist/client/components/filter-builder/columns-tab.mjs +69 -62
  48. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +473 -308
  49. package/dist/client/components/filter-builder/filters-tab.mjs +109 -82
  50. package/dist/client/components/filter-builder/saved-views-tab.mjs +300 -198
  51. package/dist/client/components/history-sidebar.mjs +850 -340
  52. package/dist/client/components/layout/field-layout-renderer.mjs +6 -5
  53. package/dist/client/components/locale-switcher.mjs +8 -8
  54. package/dist/client/components/media/media-grid.mjs +106 -86
  55. package/dist/client/components/media/media-picker-dialog.mjs +242 -230
  56. package/dist/client/components/preview/live-preview-mode.mjs +1 -1
  57. package/dist/client/components/primitives/asset-preview.mjs +37 -22
  58. package/dist/client/components/primitives/date-input.mjs +212 -249
  59. package/dist/client/components/primitives/dropzone.mjs +192 -159
  60. package/dist/client/components/primitives/field-select-control.mjs +93 -0
  61. package/dist/client/components/primitives/select-multi.mjs +406 -365
  62. package/dist/client/components/primitives/select-single.mjs +391 -323
  63. package/dist/client/components/primitives/time-input.mjs +2 -2
  64. package/dist/client/components/sheets/resource-sheet.mjs +2 -0
  65. package/dist/client/components/ui/accordion.mjs +4 -4
  66. package/dist/client/components/ui/alert.mjs +3 -3
  67. package/dist/client/components/ui/badge.mjs +4 -4
  68. package/dist/client/components/ui/button.mjs +47 -37
  69. package/dist/client/components/ui/card.mjs +2 -2
  70. package/dist/client/components/ui/checkbox.mjs +1 -1
  71. package/dist/client/components/ui/command.mjs +5 -5
  72. package/dist/client/components/ui/dialog.mjs +3 -3
  73. package/dist/client/components/ui/drawer.mjs +1 -1
  74. package/dist/client/components/ui/dropdown-menu.mjs +157 -15
  75. package/dist/client/components/ui/empty-state.mjs +88 -59
  76. package/dist/client/components/ui/field.mjs +2 -2
  77. package/dist/client/components/ui/input-group.mjs +3 -3
  78. package/dist/client/components/ui/input.mjs +1 -1
  79. package/dist/client/components/ui/kbd.mjs +1 -1
  80. package/dist/client/components/ui/label.mjs +1 -1
  81. package/dist/client/components/ui/popover.mjs +19 -11
  82. package/dist/client/components/ui/scroll-fade.mjs +170 -0
  83. package/dist/client/components/ui/search-input.mjs +1 -1
  84. package/dist/client/components/ui/select.mjs +129 -27
  85. package/dist/client/components/ui/sheet.mjs +54 -34
  86. package/dist/client/components/ui/sidebar.mjs +15 -14
  87. package/dist/client/components/ui/skeleton.mjs +28 -12
  88. package/dist/client/components/ui/switch.mjs +2 -2
  89. package/dist/client/components/ui/table.mjs +82 -74
  90. package/dist/client/components/ui/tabs.mjs +26 -31
  91. package/dist/client/components/ui/textarea.mjs +1 -1
  92. package/dist/client/components/ui/tooltip.mjs +1 -1
  93. package/dist/client/components/widgets/chart-widget.mjs +154 -100
  94. package/dist/client/components/widgets/progress-widget.mjs +63 -36
  95. package/dist/client/components/widgets/quick-actions-widget.mjs +207 -115
  96. package/dist/client/components/widgets/recent-items-widget.mjs +147 -103
  97. package/dist/client/components/widgets/stats-widget.mjs +91 -72
  98. package/dist/client/components/widgets/table-widget.mjs +161 -247
  99. package/dist/client/components/widgets/timeline-widget.mjs +119 -78
  100. package/dist/client/components/widgets/value-widget.mjs +286 -157
  101. package/dist/client/components/widgets/widget-empty-state.mjs +88 -0
  102. package/dist/client/components/widgets/widget-skeletons.mjs +53 -20
  103. package/dist/client/contexts/focus-context.d.mts +2 -2
  104. package/dist/client/hooks/use-action.mjs +63 -55
  105. package/dist/client/hooks/use-audit-history.mjs +1 -65
  106. package/dist/client/hooks/use-collection-validation.mjs +36 -23
  107. package/dist/client/hooks/use-collection.mjs +96 -1
  108. package/dist/client/hooks/use-saved-views.mjs +70 -49
  109. package/dist/client/hooks/use-server-actions.mjs +70 -46
  110. package/dist/client/hooks/use-server-validation.mjs +156 -41
  111. package/dist/client/hooks/use-server-widget-data.mjs +1 -1
  112. package/dist/client/hooks/use-setup-status.d.mts +3 -3
  113. package/dist/client/hooks/use-setup-status.mjs +2 -2
  114. package/dist/client/hooks/use-transition-stage.mjs +2 -10
  115. package/dist/client/hooks/use-validation-error-map.mjs +31 -13
  116. package/dist/client/hooks/use-view-state.mjs +238 -174
  117. package/dist/client/i18n/date-locale.mjs +33 -0
  118. package/dist/client/i18n/hooks.mjs +17 -1
  119. package/dist/client/lib/utils.mjs +3 -2
  120. package/dist/client/preview/block-scope-context.d.mts +2 -2
  121. package/dist/client/preview/preview-banner.d.mts +2 -2
  122. package/dist/client/preview/preview-banner.mjs +75 -46
  123. package/dist/client/preview/preview-field.d.mts +4 -4
  124. package/dist/client/preview/preview-field.mjs +2 -2
  125. package/dist/client/runtime/provider.mjs +8 -1
  126. package/dist/client/runtime/translations-provider.mjs +1 -1
  127. package/dist/client/scope/picker.d.mts +2 -2
  128. package/dist/client/scope/provider.d.mts +2 -2
  129. package/dist/client/styles/base.css +1022 -0
  130. package/dist/client/styles/index.css +3 -589
  131. package/dist/client/utils/auto-expand-fields.mjs +4 -2
  132. package/dist/client/utils/keyboard-shortcuts.mjs +26 -0
  133. package/dist/client/utils/use-lazy-component.mjs +80 -0
  134. package/dist/client/views/auth/accept-invite-form.d.mts +2 -2
  135. package/dist/client/views/auth/auth-layout.d.mts +17 -10
  136. package/dist/client/views/auth/auth-layout.mjs +291 -80
  137. package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
  138. package/dist/client/views/auth/forgot-password-form.mjs +2 -2
  139. package/dist/client/views/auth/login-form.d.mts +2 -2
  140. package/dist/client/views/auth/login-form.mjs +1 -1
  141. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  142. package/dist/client/views/auth/reset-password-form.mjs +2 -2
  143. package/dist/client/views/auth/setup-form.d.mts +2 -2
  144. package/dist/client/views/collection/auto-form-fields.mjs +11 -9
  145. package/dist/client/views/collection/bulk-action-toolbar.mjs +173 -138
  146. package/dist/client/views/collection/cells/complex-cells.mjs +22 -22
  147. package/dist/client/views/collection/cells/primitive-cells.mjs +1 -1
  148. package/dist/client/views/collection/cells/relation-cells.mjs +147 -129
  149. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +224 -278
  150. package/dist/client/views/collection/cells/shared/relation-chip.mjs +64 -36
  151. package/dist/client/views/collection/cells/upload-cells.mjs +199 -9
  152. package/dist/client/views/collection/columns/build-columns.mjs +29 -9
  153. package/dist/client/views/collection/columns/column-defaults.mjs +2 -2
  154. package/dist/client/views/collection/field-renderer.mjs +50 -89
  155. package/dist/client/views/collection/form-view.mjs +237 -227
  156. package/dist/client/views/collection/table-view.mjs +1167 -234
  157. package/dist/client/views/collection/view-skeletons.mjs +222 -79
  158. package/dist/client/views/common/global-search.mjs +29 -18
  159. package/dist/client/views/dashboard/dashboard-grid.mjs +678 -501
  160. package/dist/client/views/dashboard/dashboard-widget.mjs +6 -3
  161. package/dist/client/views/dashboard/widget-card.mjs +23 -14
  162. package/dist/client/views/globals/global-form-view.mjs +634 -589
  163. package/dist/client/views/layout/admin-layout-provider.mjs +67 -70
  164. package/dist/client/views/layout/admin-layout.d.mts +3 -6
  165. package/dist/client/views/layout/admin-layout.mjs +152 -155
  166. package/dist/client/views/layout/admin-router.mjs +936 -616
  167. package/dist/client/views/layout/admin-sidebar.d.mts +38 -1
  168. package/dist/client/views/layout/admin-sidebar.mjs +762 -592
  169. package/dist/client/views/layout/admin-theme.d.mts +10 -0
  170. package/dist/client/views/layout/admin-theme.mjs +84 -0
  171. package/dist/client/views/layout/admin-view-layout.mjs +161 -0
  172. package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
  173. package/dist/client/views/pages/accept-invite-page.mjs +49 -26
  174. package/dist/client/views/pages/dashboard-page.d.mts +2 -2
  175. package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
  176. package/dist/client/views/pages/forgot-password-page.mjs +2 -19
  177. package/dist/client/views/pages/invite-page.d.mts +2 -2
  178. package/dist/client/views/pages/invite-page.mjs +2 -19
  179. package/dist/client/views/pages/login-page.d.mts +3 -3
  180. package/dist/client/views/pages/login-page.mjs +4 -21
  181. package/dist/client/views/pages/reset-password-page.d.mts +2 -2
  182. package/dist/client/views/pages/reset-password-page.mjs +3 -20
  183. package/dist/client/views/pages/setup-page.d.mts +2 -2
  184. package/dist/client/views/pages/setup-page.mjs +70 -71
  185. package/dist/client.d.mts +6 -2
  186. package/dist/client.mjs +2 -1
  187. package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
  188. package/dist/index.d.mts +6 -2
  189. package/dist/index.mjs +2 -1
  190. package/dist/server/augmentation/dashboard.d.mts +67 -3
  191. package/dist/server/augmentation/form-layout.d.mts +21 -0
  192. package/dist/server/augmentation/index.d.mts +1 -1
  193. package/dist/server/codegen/admin-client-template.mjs +4 -0
  194. package/dist/server/fields/blocks.d.mts +1 -1
  195. package/dist/server/fields/blocks.mjs +12 -0
  196. package/dist/server/fields/rich-text.d.mts +1 -1
  197. package/dist/server/fields/rich-text.mjs +8 -0
  198. package/dist/server/i18n/index.mjs +29 -7
  199. package/dist/server/i18n/messages/cs.mjs +414 -1
  200. package/dist/server/i18n/messages/de.mjs +412 -1
  201. package/dist/server/i18n/messages/en.mjs +166 -1
  202. package/dist/server/i18n/messages/es.mjs +412 -1
  203. package/dist/server/i18n/messages/fr.mjs +412 -1
  204. package/dist/server/i18n/messages/pl.mjs +416 -1
  205. package/dist/server/i18n/messages/pt.mjs +409 -1
  206. package/dist/server/i18n/messages/sk.mjs +216 -2
  207. package/dist/server/modules/admin/block/introspection.mjs +4 -1
  208. package/dist/server/modules/admin/block/prefetch.mjs +12 -2
  209. package/dist/server/modules/admin/collections/account.d.mts +2 -2
  210. package/dist/server/modules/admin/collections/admin-locks.d.mts +2 -2
  211. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  212. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  213. package/dist/server/modules/admin/collections/apikey.d.mts +42 -42
  214. package/dist/server/modules/admin/collections/assets.d.mts +20 -20
  215. package/dist/server/modules/admin/collections/assets.mjs +0 -1
  216. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  217. package/dist/server/modules/admin/collections/user.d.mts +40 -28
  218. package/dist/server/modules/admin/collections/user.mjs +40 -9
  219. package/dist/server/modules/admin/collections/verification.d.mts +36 -36
  220. package/dist/server/modules/admin/dto/admin-config.dto.mjs +2 -0
  221. package/dist/server/modules/admin/factories.mjs +7 -18
  222. package/dist/server/modules/admin/index.d.mts +1 -1
  223. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  224. package/dist/server/modules/admin/routes/admin-config.mjs +34 -16
  225. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  226. package/dist/server/modules/admin/routes/execute-action.mjs +67 -28
  227. package/dist/server/modules/admin/routes/i18n-helpers.mjs +34 -0
  228. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  229. package/dist/server/modules/admin/routes/preview.mjs +25 -17
  230. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  231. package/dist/server/modules/admin/routes/route-helpers.mjs +1 -1
  232. package/dist/server/modules/admin/routes/setup.d.mts +10 -10
  233. package/dist/server/modules/admin/routes/setup.mjs +16 -13
  234. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  235. package/dist/server/modules/admin/routes/translations.mjs +5 -1
  236. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +1 -1
  237. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +2 -2
  238. package/dist/server/modules/audit/.generated/module.d.mts +1 -1
  239. package/dist/server/modules/audit/.generated/module.mjs +1 -1
  240. package/dist/server/modules/audit/collections/audit-log.d.mts +2 -2
  241. package/dist/server/modules/audit/collections/audit-log.mjs +1 -1
  242. package/dist/server/modules/audit/config/app.mjs +99 -42
  243. package/dist/server/modules/audit/jobs/audit-cleanup.mjs +1 -1
  244. package/dist/server/plugin.mjs +4 -2
  245. package/dist/server/proxy-factories.d.mts +4 -3
  246. package/dist/server/proxy-factories.mjs +34 -8
  247. package/dist/shared/types/saved-views.types.d.mts +2 -0
  248. package/package.json +6 -4
  249. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +0 -85
  250. package/dist/client/components/ui/spinner.mjs +0 -52
  251. package/dist/client/components/ui/toolbar.mjs +0 -136
  252. package/dist/client/contexts/breadcrumb-context.mjs +0 -60
  253. package/dist/client/views/layout/admin-topbar.mjs +0 -236
@@ -1,5 +1,6 @@
1
1
  import { cn } from "../../lib/utils.mjs";
2
2
  import { c } from "react/compiler-runtime";
3
+ import * as React from "react";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
 
5
6
  //#region src/client/components/ui/table.tsx
@@ -18,7 +19,7 @@ function Table(t0) {
18
19
  }
19
20
  let t1;
20
21
  if ($[3] !== className) {
21
- t1 = cn("qa-table w-full caption-bottom border-separate border-spacing-0 text-xs", className);
22
+ t1 = cn("qa-table w-full caption-bottom border-separate border-spacing-0 text-sm", className);
22
23
  $[3] = className;
23
24
  $[4] = t1;
24
25
  } else t1 = $[4];
@@ -26,7 +27,7 @@ function Table(t0) {
26
27
  if ($[5] !== props || $[6] !== t1) {
27
28
  t2 = /* @__PURE__ */ jsx("div", {
28
29
  "data-slot": "table-container",
29
- className: "qa-table-container scrollbar-thin relative min-w-0 w-full overflow-x-auto",
30
+ className: "qa-table-container scrollbar-thin relative w-full min-w-0 overflow-x-auto",
30
31
  children: /* @__PURE__ */ jsx("table", {
31
32
  "data-slot": "table",
32
33
  className: t1,
@@ -54,7 +55,7 @@ function TableHeader(t0) {
54
55
  }
55
56
  let t1;
56
57
  if ($[3] !== className) {
57
- t1 = cn("qa-table__header [&_tr]:border-border bg-card sticky top-0 z-10 [&_tr]:border-b", className);
58
+ t1 = cn("qa-table__header bg-background sticky top-0 z-10", className);
58
59
  $[3] = className;
59
60
  $[4] = t1;
60
61
  } else t1 = $[4];
@@ -86,7 +87,7 @@ function TableBody(t0) {
86
87
  }
87
88
  let t1;
88
89
  if ($[3] !== className) {
89
- t1 = cn("qa-table__body [&_tr:last-child]:border-0", className);
90
+ t1 = cn("qa-table__body", className);
90
91
  $[3] = className;
91
92
  $[4] = t1;
92
93
  } else t1 = $[4];
@@ -103,8 +104,8 @@ function TableBody(t0) {
103
104
  } else t2 = $[7];
104
105
  return t2;
105
106
  }
106
- function TableRow(t0) {
107
- const $ = c(8);
107
+ const TableRow = React.forwardRef((t0, ref) => {
108
+ const $ = c(9);
108
109
  let className;
109
110
  let props;
110
111
  if ($[0] !== t0) {
@@ -118,25 +119,28 @@ function TableRow(t0) {
118
119
  }
119
120
  let t1;
120
121
  if ($[3] !== className) {
121
- t1 = cn("qa-table__row group/row bg-background hover:bg-muted data-[state=selected]:bg-accent border-border h-10 border-b transition-colors", className);
122
+ t1 = cn("qa-table__row group/row hover:bg-accent data-[state=selected]:bg-muted h-10 bg-transparent transition-colors", className);
122
123
  $[3] = className;
123
124
  $[4] = t1;
124
125
  } else t1 = $[4];
125
126
  let t2;
126
- if ($[5] !== props || $[6] !== t1) {
127
+ if ($[5] !== props || $[6] !== ref || $[7] !== t1) {
127
128
  t2 = /* @__PURE__ */ jsx("tr", {
129
+ ref,
128
130
  "data-slot": "table-row",
129
131
  className: t1,
130
132
  ...props
131
133
  });
132
134
  $[5] = props;
133
- $[6] = t1;
134
- $[7] = t2;
135
- } else t2 = $[7];
135
+ $[6] = ref;
136
+ $[7] = t1;
137
+ $[8] = t2;
138
+ } else t2 = $[8];
136
139
  return t2;
137
- }
140
+ });
141
+ TableRow.displayName = "TableRow";
138
142
  function TableHead(t0) {
139
- const $ = c(21);
143
+ const $ = c(22);
140
144
  let className;
141
145
  let props;
142
146
  let showStickyBorder;
@@ -160,51 +164,53 @@ function TableHead(t0) {
160
164
  const isSticky = stickyLeft !== void 0;
161
165
  const t1 = isSticky ? "" : void 0;
162
166
  const t2 = isSticky && "sticky z-20 min-w-0";
163
- const t3 = showStickyBorder && "after:bg-border after:absolute after:top-0 after:right-0 after:bottom-0 after:w-px";
164
- let t4;
165
- if ($[6] !== className || $[7] !== t2 || $[8] !== t3) {
166
- t4 = cn("qa-table__head text-muted-foreground bg-card h-10 min-w-[100px] px-4 text-left align-middle font-mono text-[10px] font-semibold tracking-[0.08em] whitespace-nowrap uppercase [&:has([role=checkbox])]:px-2", t2, t3, className);
167
+ const t3 = showStickyBorder && "after:bg-border-subtle after:absolute after:top-0 after:right-0 after:bottom-0 after:w-px";
168
+ const t4 = showStickyBorder && !isSticky && "relative";
169
+ let t5;
170
+ if ($[6] !== className || $[7] !== t2 || $[8] !== t3 || $[9] !== t4) {
171
+ t5 = cn("qa-table__head font-chrome text-muted-foreground bg-background chrome-meta h-9 min-w-[100px] overflow-hidden px-3 text-left align-middle text-[11px] font-medium text-ellipsis whitespace-nowrap [&:has([role=checkbox])]:px-2", t2, t3, t4, className);
167
172
  $[6] = className;
168
173
  $[7] = t2;
169
174
  $[8] = t3;
170
175
  $[9] = t4;
171
- } else t4 = $[9];
172
- let t5;
173
- if ($[10] !== isSticky || $[11] !== stickyLeft) {
174
- t5 = isSticky ? { left: stickyLeft } : {};
175
- $[10] = isSticky;
176
- $[11] = stickyLeft;
177
- $[12] = t5;
178
- } else t5 = $[12];
176
+ $[10] = t5;
177
+ } else t5 = $[10];
179
178
  let t6;
180
- if ($[13] !== style || $[14] !== t5) {
181
- t6 = {
179
+ if ($[11] !== isSticky || $[12] !== stickyLeft) {
180
+ t6 = isSticky ? { left: stickyLeft } : {};
181
+ $[11] = isSticky;
182
+ $[12] = stickyLeft;
183
+ $[13] = t6;
184
+ } else t6 = $[13];
185
+ let t7;
186
+ if ($[14] !== style || $[15] !== t6) {
187
+ t7 = {
182
188
  ...style,
183
- ...t5
189
+ ...t6
184
190
  };
185
- $[13] = style;
186
- $[14] = t5;
191
+ $[14] = style;
187
192
  $[15] = t6;
188
- } else t6 = $[15];
189
- let t7;
190
- if ($[16] !== props || $[17] !== t1 || $[18] !== t4 || $[19] !== t6) {
191
- t7 = /* @__PURE__ */ jsx("th", {
193
+ $[16] = t7;
194
+ } else t7 = $[16];
195
+ let t8;
196
+ if ($[17] !== props || $[18] !== t1 || $[19] !== t5 || $[20] !== t7) {
197
+ t8 = /* @__PURE__ */ jsx("th", {
192
198
  "data-slot": "table-head",
193
199
  "data-sticky-left": t1,
194
- className: t4,
195
- style: t6,
200
+ className: t5,
201
+ style: t7,
196
202
  ...props
197
203
  });
198
- $[16] = props;
199
- $[17] = t1;
200
- $[18] = t4;
201
- $[19] = t6;
204
+ $[17] = props;
205
+ $[18] = t1;
206
+ $[19] = t5;
202
207
  $[20] = t7;
203
- } else t7 = $[20];
204
- return t7;
208
+ $[21] = t8;
209
+ } else t8 = $[21];
210
+ return t8;
205
211
  }
206
212
  function TableCell(t0) {
207
- const $ = c(21);
213
+ const $ = c(22);
208
214
  let className;
209
215
  let props;
210
216
  let showStickyBorder;
@@ -227,49 +233,51 @@ function TableCell(t0) {
227
233
  }
228
234
  const isSticky = stickyLeft !== void 0;
229
235
  const t1 = isSticky ? "" : void 0;
230
- const t2 = isSticky && "sticky z-10 min-w-0 bg-inherit";
231
- const t3 = showStickyBorder && "after:bg-border after:absolute after:top-0 after:right-0 after:bottom-0 after:w-px";
232
- let t4;
233
- if ($[6] !== className || $[7] !== t2 || $[8] !== t3) {
234
- t4 = cn("qa-table__cell min-w-[100px] px-4 py-2.5 align-middle whitespace-nowrap [&:has([role=checkbox])]:px-2", t2, t3, className);
236
+ const t2 = isSticky && "group-data-[state=selected]/row:bg-muted group-hover/row:bg-accent bg-background sticky z-10 min-w-0";
237
+ const t3 = showStickyBorder && "after:bg-border-subtle after:absolute after:top-0 after:right-0 after:bottom-0 after:w-px";
238
+ const t4 = showStickyBorder && !isSticky && "relative";
239
+ let t5;
240
+ if ($[6] !== className || $[7] !== t2 || $[8] !== t3 || $[9] !== t4) {
241
+ t5 = cn("qa-table__cell min-w-[100px] overflow-hidden px-3 py-2 align-middle text-ellipsis whitespace-nowrap tabular-nums transition-colors [&:has([role=checkbox])]:px-2", t2, t3, t4, className);
235
242
  $[6] = className;
236
243
  $[7] = t2;
237
244
  $[8] = t3;
238
245
  $[9] = t4;
239
- } else t4 = $[9];
240
- let t5;
241
- if ($[10] !== isSticky || $[11] !== stickyLeft) {
242
- t5 = isSticky ? { left: stickyLeft } : {};
243
- $[10] = isSticky;
244
- $[11] = stickyLeft;
245
- $[12] = t5;
246
- } else t5 = $[12];
246
+ $[10] = t5;
247
+ } else t5 = $[10];
247
248
  let t6;
248
- if ($[13] !== style || $[14] !== t5) {
249
- t6 = {
249
+ if ($[11] !== isSticky || $[12] !== stickyLeft) {
250
+ t6 = isSticky ? { left: stickyLeft } : {};
251
+ $[11] = isSticky;
252
+ $[12] = stickyLeft;
253
+ $[13] = t6;
254
+ } else t6 = $[13];
255
+ let t7;
256
+ if ($[14] !== style || $[15] !== t6) {
257
+ t7 = {
250
258
  ...style,
251
- ...t5
259
+ ...t6
252
260
  };
253
- $[13] = style;
254
- $[14] = t5;
261
+ $[14] = style;
255
262
  $[15] = t6;
256
- } else t6 = $[15];
257
- let t7;
258
- if ($[16] !== props.children || $[17] !== t1 || $[18] !== t4 || $[19] !== t6) {
259
- t7 = /* @__PURE__ */ jsx("td", {
263
+ $[16] = t7;
264
+ } else t7 = $[16];
265
+ let t8;
266
+ if ($[17] !== props || $[18] !== t1 || $[19] !== t5 || $[20] !== t7) {
267
+ t8 = /* @__PURE__ */ jsx("td", {
260
268
  "data-slot": "table-cell",
261
269
  "data-sticky-left": t1,
262
- className: t4,
263
- style: t6,
264
- children: props.children
270
+ className: t5,
271
+ style: t7,
272
+ ...props
265
273
  });
266
- $[16] = props.children;
267
- $[17] = t1;
268
- $[18] = t4;
269
- $[19] = t6;
274
+ $[17] = props;
275
+ $[18] = t1;
276
+ $[19] = t5;
270
277
  $[20] = t7;
271
- } else t7 = $[20];
272
- return t7;
278
+ $[21] = t8;
279
+ } else t8 = $[21];
280
+ return t8;
273
281
  }
274
282
 
275
283
  //#endregion
@@ -3,7 +3,6 @@
3
3
  import { cn } from "../../lib/utils.mjs";
4
4
  import { c } from "react/compiler-runtime";
5
5
  import { jsx } from "react/jsx-runtime";
6
- import { cva } from "class-variance-authority";
7
6
  import { Tabs } from "@base-ui/react/tabs";
8
7
 
9
8
  //#region src/client/components/ui/tabs.tsx
@@ -45,51 +44,47 @@ function Tabs$1(t0) {
45
44
  } else t3 = $[9];
46
45
  return t3;
47
46
  }
48
- const tabsListVariants = cva("qa-tabs__list group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center p-[3px] group-data-horizontal/tabs:h-8 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col", {
49
- variants: { variant: {
50
- default: "bg-muted",
51
- line: "gap-1 bg-transparent"
52
- } },
53
- defaultVariants: { variant: "default" }
54
- });
47
+ const tabsListBase = "qa-tabs__list group/tabs-list text-muted-foreground bg-surface-low border-border-subtle inline-flex w-fit items-center justify-center gap-1 rounded-md border p-1 group-data-horizontal/tabs:min-h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col";
48
+ const tabsListVariantStyles = { pills: "border-transparent bg-muted/70" };
55
49
  function TabsList(t0) {
56
50
  const $ = c(11);
57
51
  let className;
58
52
  let props;
59
- let t1;
53
+ let variant;
60
54
  if ($[0] !== t0) {
61
- ({className, variant: t1, ...props} = t0);
55
+ ({className, variant, ...props} = t0);
62
56
  $[0] = t0;
63
57
  $[1] = className;
64
58
  $[2] = props;
65
- $[3] = t1;
59
+ $[3] = variant;
66
60
  } else {
67
61
  className = $[1];
68
62
  props = $[2];
69
- t1 = $[3];
63
+ variant = $[3];
70
64
  }
71
- const variant = t1 === void 0 ? "default" : t1;
72
- let t2;
73
- if ($[4] !== className || $[5] !== variant) {
74
- t2 = cn(tabsListVariants({ variant }), className);
75
- $[4] = className;
76
- $[5] = variant;
77
- $[6] = t2;
78
- } else t2 = $[6];
65
+ const t1 = variant ?? "default";
66
+ const t2 = variant && tabsListVariantStyles[variant];
79
67
  let t3;
80
- if ($[7] !== props || $[8] !== t2 || $[9] !== variant) {
81
- t3 = /* @__PURE__ */ jsx(Tabs.List, {
68
+ if ($[4] !== className || $[5] !== t2) {
69
+ t3 = cn(tabsListBase, t2, className);
70
+ $[4] = className;
71
+ $[5] = t2;
72
+ $[6] = t3;
73
+ } else t3 = $[6];
74
+ let t4;
75
+ if ($[7] !== props || $[8] !== t1 || $[9] !== t3) {
76
+ t4 = /* @__PURE__ */ jsx(Tabs.List, {
82
77
  "data-slot": "tabs-list",
83
- "data-variant": variant,
84
- className: t2,
78
+ "data-variant": t1,
79
+ className: t3,
85
80
  ...props
86
81
  });
87
82
  $[7] = props;
88
- $[8] = t2;
89
- $[9] = variant;
90
- $[10] = t3;
91
- } else t3 = $[10];
92
- return t3;
83
+ $[8] = t1;
84
+ $[9] = t3;
85
+ $[10] = t4;
86
+ } else t4 = $[10];
87
+ return t4;
93
88
  }
94
89
  function TabsTrigger(t0) {
95
90
  const $ = c(8);
@@ -106,7 +101,7 @@ function TabsTrigger(t0) {
106
101
  }
107
102
  let t1;
108
103
  if ($[3] !== className) {
109
- t1 = cn("qa-tabs__trigger focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border border-transparent px-1.5 py-0.5 font-mono text-xs font-medium whitespace-nowrap transition-all group-data-vertical/tabs:py-[calc(--spacing(1.25))] group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background dark:data-active:text-foreground dark:data-active:border-border dark:data-active:bg-background data-active:text-foreground", "after:bg-primary after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", className);
104
+ t1 = cn("qa-tabs__trigger font-chrome text-muted-foreground hover:text-foreground data-active:bg-surface-high data-active:text-foreground focus-visible:ring-ring/20 relative inline-flex min-h-7 flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-sm border border-transparent px-3 py-1 text-xs font-medium whitespace-nowrap tabular-nums transition-[background-color,color,border-color,box-shadow,transform] duration-[var(--motion-duration-base)] ease-[var(--motion-ease-standard)] group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-none active:scale-[0.96] disabled:pointer-events-none disabled:opacity-50 motion-reduce:transition-none motion-reduce:active:scale-100 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5", className);
110
105
  $[3] = className;
111
106
  $[4] = t1;
112
107
  } else t1 = $[4];
@@ -138,7 +133,7 @@ function TabsContent(t0) {
138
133
  }
139
134
  let t1;
140
135
  if ($[3] !== className) {
141
- t1 = cn("qa-tabs__content flex-1 text-xs/relaxed outline-none", className);
136
+ t1 = cn("qa-tabs__content flex-1 text-xs/relaxed transition-opacity duration-[var(--motion-duration-fast)] ease-[var(--motion-ease-standard)] outline-none motion-reduce:transition-none", className);
142
137
  $[3] = className;
143
138
  $[4] = t1;
144
139
  } else t1 = $[4];
@@ -18,7 +18,7 @@ function Textarea(t0) {
18
18
  }
19
19
  let t1;
20
20
  if ($[3] !== className) {
21
- t1 = cn("qa-textarea border-input bg-transparent font-mono 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 placeholder:text-muted-foreground flex field-sizing-content min-h-24 w-full resize-none border px-3 py-2.5 text-sm transition-all outline-none focus-visible:ring-[2px] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[2px]", className);
21
+ t1 = cn("qa-textarea control-surface font-chrome focus-visible:border-border-strong focus-visible:ring-ring/20 aria-invalid:border-border-strong aria-invalid:ring-ring/20 placeholder:text-muted-foreground flex h-auto min-h-24 w-full resize-none px-3 py-2.5 text-sm outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-[3px]", className);
22
22
  $[3] = className;
23
23
  $[4] = t1;
24
24
  } else t1 = $[4];
@@ -105,7 +105,7 @@ function TooltipContent(t0) {
105
105
  const alignOffset = t4 === void 0 ? 0 : t4;
106
106
  let t5;
107
107
  if ($[8] !== className) {
108
- t5 = cn("qa-tooltip__content data-open:animate-in data-open:fade-in-0 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-closed:animate-out data-closed:fade-out-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 bg-card text-foreground border-border z-50 w-fit max-w-xs origin-(--transform-origin) border px-3 py-1.5 text-xs font-mono", className);
108
+ t5 = cn("qa-tooltip__content floating-surface motion-floating-fast font-chrome text-popover-foreground z-50 w-fit max-w-xs origin-(--transform-origin) px-2.5 py-1.5 text-xs 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);
109
109
  $[8] = className;
110
110
  $[9] = t5;
111
111
  } else t5 = $[9];