@chelone/vue 0.9.0 → 0.11.0

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 (118) hide show
  1. package/dist/admin/admin-shell.vue_vue_type_script_setup_true_lang.js +15 -2
  2. package/dist/admin/resource-registry.d.ts +6 -2
  3. package/dist/admin/resource-registry.js +0 -18
  4. package/dist/admin/resource.vue.d.ts +6 -2
  5. package/dist/choices/choices-context.d.ts +9 -9
  6. package/dist/choices/use-reference-input.js +2 -2
  7. package/dist/components/admin/auth/access-denied.vue.d.ts +2 -2
  8. package/dist/components/admin/auth/access-denied.vue_vue_type_script_setup_true_lang.js +2 -2
  9. package/dist/components/admin/auth/auth-error.vue.d.ts +2 -2
  10. package/dist/components/admin/auth/auth-error.vue_vue_type_script_setup_true_lang.js +3 -3
  11. package/dist/components/admin/auth/authentication-error.vue.d.ts +2 -2
  12. package/dist/components/admin/auth/authentication-error.vue_vue_type_script_setup_true_lang.js +2 -2
  13. package/dist/components/admin/auth/login-form.vue_vue_type_script_setup_true_lang.js +2 -2
  14. package/dist/components/admin/auth/login-with-email.vue.d.ts +1 -1
  15. package/dist/components/admin/auth/login-with-email.vue_vue_type_script_setup_true_lang.js +2 -2
  16. package/dist/components/admin/auth/logout.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/components/admin/auth/permission-matrix.vue_vue_type_script_setup_true_lang.js +1 -1
  18. package/dist/components/admin/buttons/bulk-delete-button.vue.d.ts +2 -2
  19. package/dist/components/admin/buttons/bulk-delete-button.vue_vue_type_script_setup_true_lang.js +3 -3
  20. package/dist/components/admin/buttons/bulk-export-button.vue_vue_type_script_setup_true_lang.js +1 -1
  21. package/dist/components/admin/buttons/bulk-update-button.vue_vue_type_script_setup_true_lang.js +2 -2
  22. package/dist/components/admin/buttons/cancel-button.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/dist/components/admin/buttons/clone-button.vue_vue_type_script_setup_true_lang.js +1 -1
  24. package/dist/components/admin/buttons/columns-button.vue_vue_type_script_setup_true_lang.js +1 -1
  25. package/dist/components/admin/buttons/create-button.vue_vue_type_script_setup_true_lang.js +1 -1
  26. package/dist/components/admin/buttons/delete-button.vue.d.ts +2 -2
  27. package/dist/components/admin/buttons/delete-button.vue_vue_type_script_setup_true_lang.js +3 -3
  28. package/dist/components/admin/buttons/edit-button.vue_vue_type_script_setup_true_lang.js +1 -1
  29. package/dist/components/admin/buttons/export-button.vue_vue_type_script_setup_true_lang.js +1 -1
  30. package/dist/components/admin/buttons/fields-selector.vue_vue_type_script_setup_true_lang.js +5 -5
  31. package/dist/components/admin/buttons/filter-button.vue_vue_type_script_setup_true_lang.js +2 -2
  32. package/dist/components/admin/buttons/list-button.vue_vue_type_script_setup_true_lang.js +1 -1
  33. package/dist/components/admin/buttons/locales-menu.vue_vue_type_script_setup_true_lang.js +1 -1
  34. package/dist/components/admin/buttons/refresh-button.vue_vue_type_script_setup_true_lang.js +1 -1
  35. package/dist/components/admin/buttons/refresh-icon-button.vue_vue_type_script_setup_true_lang.js +1 -1
  36. package/dist/components/admin/buttons/save-button.vue_vue_type_script_setup_true_lang.js +2 -2
  37. package/dist/components/admin/buttons/select-all-button.vue_vue_type_script_setup_true_lang.js +1 -1
  38. package/dist/components/admin/buttons/show-button.vue_vue_type_script_setup_true_lang.js +1 -1
  39. package/dist/components/admin/buttons/sidebar-toggle-button.vue_vue_type_script_setup_true_lang.js +1 -1
  40. package/dist/components/admin/buttons/skip-navigation-button.vue.d.ts +1 -1
  41. package/dist/components/admin/buttons/skip-navigation-button.vue_vue_type_script_setup_true_lang.js +1 -1
  42. package/dist/components/admin/buttons/sort-button.vue_vue_type_script_setup_true_lang.js +2 -2
  43. package/dist/components/admin/buttons/update-button.vue.d.ts +2 -2
  44. package/dist/components/admin/buttons/update-button.vue_vue_type_script_setup_true_lang.js +3 -3
  45. package/dist/components/admin/common/application-updated-notification.vue_vue_type_script_setup_true_lang.js +2 -2
  46. package/dist/components/admin/csv-import/csv-import.vue.d.ts +24 -14
  47. package/dist/components/admin/csv-import/csv-import.vue_vue_type_script_setup_true_lang.js +18 -18
  48. package/dist/components/admin/feedback/confirm.vue.d.ts +2 -2
  49. package/dist/components/admin/feedback/confirm.vue_vue_type_script_setup_true_lang.js +2 -2
  50. package/dist/components/admin/feedback/error.vue_vue_type_script_setup_true_lang.js +3 -3
  51. package/dist/components/admin/feedback/loading-indicator.vue_vue_type_script_setup_true_lang.js +2 -2
  52. package/dist/components/admin/feedback/loading.vue.d.ts +2 -2
  53. package/dist/components/admin/feedback/loading.vue_vue_type_script_setup_true_lang.js +2 -2
  54. package/dist/components/admin/feedback/not-found.vue_vue_type_script_setup_true_lang.js +3 -3
  55. package/dist/components/admin/feedback/notification.vue_vue_type_script_setup_true_lang.js +1 -1
  56. package/dist/components/admin/feedback/offline.vue_vue_type_script_setup_true_lang.js +1 -1
  57. package/dist/components/admin/fields/boolean-field.vue_vue_type_script_setup_true_lang.js +1 -1
  58. package/dist/components/admin/form/translatable-inputs-tab.vue_vue_type_script_setup_true_lang.js +1 -1
  59. package/dist/components/admin/inputs/array-input-row.vue_vue_type_script_setup_true_lang.js +3 -3
  60. package/dist/components/admin/inputs/array-input.vue_vue_type_script_setup_true_lang.js +3 -3
  61. package/dist/components/admin/inputs/autocomplete-array-input.vue_vue_type_script_setup_true_lang.js +3 -3
  62. package/dist/components/admin/inputs/autocomplete-input.vue_vue_type_script_setup_true_lang.js +2 -2
  63. package/dist/components/admin/inputs/datagrid-input.vue_vue_type_script_setup_true_lang.js +2 -2
  64. package/dist/components/admin/inputs/file-input-preview.vue_vue_type_script_setup_true_lang.js +2 -2
  65. package/dist/components/admin/inputs/file-input.vue_vue_type_script_setup_true_lang.js +2 -2
  66. package/dist/components/admin/inputs/image-input.vue_vue_type_script_setup_true_lang.js +2 -2
  67. package/dist/components/admin/inputs/in-place-editor-form.vue_vue_type_script_setup_true_lang.js +4 -4
  68. package/dist/components/admin/inputs/in-place-editor.vue_vue_type_script_setup_true_lang.js +1 -1
  69. package/dist/components/admin/inputs/nullable-boolean-input.vue_vue_type_script_setup_true_lang.js +3 -3
  70. package/dist/components/admin/inputs/password-input.vue_vue_type_script_setup_true_lang.js +1 -1
  71. package/dist/components/admin/inputs/resettable-text-input.vue_vue_type_script_setup_true_lang.js +1 -1
  72. package/dist/components/admin/inputs/search-input.vue_vue_type_script_setup_true_lang.js +2 -2
  73. package/dist/components/admin/inputs/select-array-input.vue_vue_type_script_setup_true_lang.js +2 -2
  74. package/dist/components/admin/inputs/text-array-input.vue_vue_type_script_setup_true_lang.js +1 -1
  75. package/dist/components/admin/layout/command-menu-logout.vue_vue_type_script_setup_true_lang.js +2 -2
  76. package/dist/components/admin/layout/dashboard-menu-item.vue.d.ts +1 -1
  77. package/dist/components/admin/layout/dashboard-menu-item.vue_vue_type_script_setup_true_lang.js +1 -1
  78. package/dist/components/admin/layout/data-provider-devtools.vue_vue_type_script_setup_true_lang.js +61 -27
  79. package/dist/components/admin/layout/icons.d.ts +2 -0
  80. package/dist/components/admin/layout/icons.js +3 -1
  81. package/dist/components/admin/layout/theme-mode-toggle.vue_vue_type_script_setup_true_lang.js +1 -1
  82. package/dist/components/admin/layout/user-menu-inner.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/components/admin/list/approval-queue-row.vue_vue_type_script_setup_true_lang.js +1 -1
  84. package/dist/components/admin/list/bulk-actions-toolbar.vue_vue_type_script_setup_true_lang.js +2 -2
  85. package/dist/components/admin/list/bulk-edit-drawer.vue_vue_type_script_setup_true_lang.js +4 -4
  86. package/dist/components/admin/list/calendar-agenda-view.vue_vue_type_script_setup_true_lang.js +1 -1
  87. package/dist/components/admin/list/calendar-header.vue_vue_type_script_setup_true_lang.js +5 -5
  88. package/dist/components/admin/list/calendar-list.vue_vue_type_script_setup_true_lang.js +2 -2
  89. package/dist/components/admin/list/count.vue_vue_type_script_setup_true_lang.js +1 -1
  90. package/dist/components/admin/list/filter-form.vue_vue_type_script_setup_true_lang.js +1 -1
  91. package/dist/components/admin/list/filter-list-item.vue_vue_type_script_setup_true_lang.js +1 -1
  92. package/dist/components/admin/list/filter-live-search.vue_vue_type_script_setup_true_lang.js +1 -1
  93. package/dist/components/admin/list/list-no-results.vue_vue_type_script_setup_true_lang.js +2 -2
  94. package/dist/components/admin/list/list-pagination.vue_vue_type_script_setup_true_lang.js +5 -5
  95. package/dist/components/admin/list/prev-next-buttons.vue_vue_type_script_setup_true_lang.js +5 -5
  96. package/dist/components/admin/list/saved-queries-list.vue_vue_type_script_setup_true_lang.js +5 -5
  97. package/dist/components/admin/list/tree-list-node.vue_vue_type_script_setup_true_lang.js +1 -1
  98. package/dist/components/admin/realtime/menu-live.vue.d.ts +3 -1
  99. package/dist/components/admin/realtime/menu-live.vue_vue_type_script_setup_true_lang.js +42 -12
  100. package/dist/components/admin/supabase/forgot-password-form.vue_vue_type_script_setup_true_lang.js +1 -1
  101. package/dist/components/admin/supabase/set-password-form.vue_vue_type_script_setup_true_lang.js +3 -3
  102. package/dist/components/admin/supabase/supabase-login-page.vue_vue_type_script_setup_true_lang.js +1 -1
  103. package/dist/components/admin/view/create.vue_vue_type_script_setup_true_lang.js +1 -1
  104. package/dist/components/admin/view/infinite-list.vue_vue_type_script_setup_true_lang.js +1 -1
  105. package/dist/components/admin/view/list.vue_vue_type_script_setup_true_lang.js +1 -1
  106. package/dist/components/admin/view/translatable-fields-tab.vue_vue_type_script_setup_true_lang.js +1 -1
  107. package/dist/components/admin/widgets/job-monitor-row.vue_vue_type_script_setup_true_lang.js +1 -1
  108. package/dist/components/inspector/inspector.vue_vue_type_script_setup_true_lang.js +1 -1
  109. package/dist/controllers/reference-field-options.d.ts +18 -0
  110. package/dist/controllers/reference-field-test-harness.d.ts +3 -2
  111. package/dist/controllers/use-infinite-list-controller.d.ts +3 -3
  112. package/dist/controllers/use-list-controller.d.ts +4 -4
  113. package/dist/controllers/use-reference-many-field-controller.d.ts +8 -15
  114. package/dist/controllers/use-reference-one-field-controller.d.ts +8 -17
  115. package/dist/list/list-context.d.ts +10 -4
  116. package/dist/list/use-list.d.ts +3 -3
  117. package/dist/store/use-saved-queries.d.ts +5 -5
  118. package/package.json +5 -5
@@ -62,15 +62,15 @@ var nullable_boolean_input_vue_vue_type_script_setup_true_lang_default = /*@__PU
62
62
  const options = computed(() => [
63
63
  {
64
64
  value: "",
65
- label: props.nullLabel ? translate(props.nullLabel, { _: props.nullLabel }) : translate("ra.boolean.null", { _: "" })
65
+ label: props.nullLabel ? translate(props.nullLabel, { _: props.nullLabel }) : translate("chelone.boolean.null", { _: "" })
66
66
  },
67
67
  {
68
68
  value: "false",
69
- label: props.falseLabel ? translate(props.falseLabel, { _: props.falseLabel }) : translate("ra.boolean.false", { _: "No" })
69
+ label: props.falseLabel ? translate(props.falseLabel, { _: props.falseLabel }) : translate("chelone.boolean.false", { _: "No" })
70
70
  },
71
71
  {
72
72
  value: "true",
73
- label: props.trueLabel ? translate(props.trueLabel, { _: props.trueLabel }) : translate("ra.boolean.true", { _: "Yes" })
73
+ label: props.trueLabel ? translate(props.trueLabel, { _: props.trueLabel }) : translate("chelone.boolean.true", { _: "Yes" })
74
74
  }
75
75
  ]);
76
76
  function onChange(next) {
@@ -61,7 +61,7 @@ var password_input_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
61
61
  const props = __props;
62
62
  const visible = ref(props.initiallyVisible === true);
63
63
  const translate = useTranslate();
64
- const toggleLabel = computed(() => visible.value ? translate("ra.input.password.toggle_visible", { _: "Hide password" }) : translate("ra.input.password.toggle_hidden", { _: "Show password" }));
64
+ const toggleLabel = computed(() => visible.value ? translate("chelone.input.password.toggle_visible", { _: "Hide password" }) : translate("chelone.input.password.toggle_hidden", { _: "Show password" }));
65
65
  return (_ctx, _cache) => {
66
66
  return openBlock(), createBlock(text_input_default, {
67
67
  source: __props.source,
@@ -61,7 +61,7 @@ var resettable_text_input_vue_vue_type_script_setup_true_lang_default = /*@__PUR
61
61
  return v != null && v !== "";
62
62
  });
63
63
  const showClearButton = computed(() => props.resettable && (props.clearAlwaysVisible || hasValue.value));
64
- const clearLabel = computed(() => translate("ra.action.clear_input_value", { _: "Clear value" }));
64
+ const clearLabel = computed(() => translate("chelone.action.clear_input_value", { _: "Clear value" }));
65
65
  function handleClear() {
66
66
  form.ambient.setFieldValue(wrappedSource, "");
67
67
  }
@@ -45,8 +45,8 @@ var search_input_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
45
45
  return v != null && v !== "";
46
46
  });
47
47
  const showClearButton = computed(() => !props.disableClearable && hasValue.value);
48
- const searchPlaceholder = computed(() => props.placeholder ?? translate("ra.action.search", { _: "Search" }));
49
- const clearLabel = computed(() => translate("ra.action.clear_search", { _: "Clear search" }));
48
+ const searchPlaceholder = computed(() => props.placeholder ?? translate("chelone.action.search", { _: "Search" }));
49
+ const clearLabel = computed(() => translate("chelone.action.clear_search", { _: "Clear search" }));
50
50
  function handleClear() {
51
51
  form.ambient.setFieldValue(wrappedSource, "");
52
52
  }
@@ -141,13 +141,13 @@ var select_array_input_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
141
141
  role: "button",
142
142
  tabindex: "0",
143
143
  class: "cursor-pointer text-muted-foreground opacity-50 hover:opacity-100",
144
- "aria-label": unref(translate)("ra.action.clear_input_value", { _: "Clear value" }),
144
+ "aria-label": unref(translate)("chelone.action.clear_input_value", { _: "Clear value" }),
145
145
  onClick: withModifiers(onClear, ["stop"]),
146
146
  onKeydown: [withKeys(withModifiers(onClear, ["prevent"]), ["enter"]), withKeys(withModifiers(onClear, ["prevent"]), ["space"])]
147
147
  }, "×", 40, _hoisted_7)) : createCommentVNode("", true), _cache[1] || (_cache[1] = createElementVNode("span", {
148
148
  "aria-hidden": "true",
149
149
  class: "opacity-50"
150
- }, "▾", -1))])], 8, _hoisted_3), open.value ? (openBlock(), createElementBlock("div", _hoisted_8, [unref(allChoices).length === 0 ? (openBlock(), createElementBlock("p", _hoisted_9, toDisplayString(unref(translate)("ra.navigation.no_results", { _: "No results" })), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(allChoices), (choice) => {
150
+ }, "▾", -1))])], 8, _hoisted_3), open.value ? (openBlock(), createElementBlock("div", _hoisted_8, [unref(allChoices).length === 0 ? (openBlock(), createElementBlock("p", _hoisted_9, toDisplayString(unref(translate)("chelone.navigation.no_results", { _: "No results" })), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(allChoices), (choice) => {
151
151
  return openBlock(), createElementBlock("label", {
152
152
  key: String(unref(getChoiceValue)(choice)),
153
153
  for: `${unref(id)}-${String(unref(getChoiceValue)(choice))}`,
@@ -98,7 +98,7 @@ var text_array_input_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
98
98
  disabled: __props.disabled || __props.readonly,
99
99
  onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {}, ["prevent", "stop"])),
100
100
  onClick: withModifiers(($event) => removeValue(index), ["prevent"])
101
- }, [createElementVNode("span", _hoisted_4, toDisplayString(unref(translate)("ra.action.remove", { _: "Remove" })), 1), _cache[2] || (_cache[2] = createElementVNode("span", { "aria-hidden": "true" }, "×", -1))], 40, _hoisted_3)]);
101
+ }, [createElementVNode("span", _hoisted_4, toDisplayString(unref(translate)("chelone.action.remove", { _: "Remove" })), 1), _cache[2] || (_cache[2] = createElementVNode("span", { "aria-hidden": "true" }, "×", -1))], 40, _hoisted_3)]);
102
102
  }), 128)), withDirectives(createElementVNode("input", {
103
103
  id: unref(id),
104
104
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => inputValue.value = $event),
@@ -23,11 +23,11 @@ var command_menu_logout_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
23
23
  return (_ctx, _cache) => {
24
24
  return openBlock(), createBlock(unref(command_group_default), { heading: unref(translate)("chelone.command_menu.account", { _: "Account" }) }, {
25
25
  default: withCtx(() => [createVNode(unref(command_item_default), {
26
- value: unref(translate)("ra.auth.logout", { _: "Log out" }),
26
+ value: unref(translate)("chelone.auth.logout", { _: "Log out" }),
27
27
  keywords: ["sign out"],
28
28
  onSelect
29
29
  }, {
30
- default: withCtx(() => [createVNode(unref(LogOutIcon)), createTextVNode(" " + toDisplayString(unref(translate)("ra.auth.logout", { _: "Log out" })), 1)]),
30
+ default: withCtx(() => [createVNode(unref(LogOutIcon)), createTextVNode(" " + toDisplayString(unref(translate)("chelone.auth.logout", { _: "Log out" })), 1)]),
31
31
  _: 1
32
32
  }, 8, ["value"])]),
33
33
  _: 1
@@ -5,7 +5,7 @@ export interface DashboardMenuItemProps {
5
5
  class?: string;
6
6
  /** Replaces the default `House` icon. */
7
7
  icon?: Component;
8
- /** Replaces the default translated label (`ra.page.dashboard`, default "Dashboard"). */
8
+ /** Replaces the default translated label (`chelone.page.dashboard`, default "Dashboard"). */
9
9
  label?: string;
10
10
  /** Click handler invoked alongside the default navigation (e.g. close the drawer). */
11
11
  onClick?: () => void;
@@ -22,7 +22,7 @@ var dashboard_menu_item_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
22
22
  const props = __props;
23
23
  const translate = useTranslate();
24
24
  const to = `${useBasename()}/`;
25
- const label = computed(() => props.label ?? translate("ra.page.dashboard", { _: "Dashboard" }));
25
+ const label = computed(() => props.label ?? translate("chelone.page.dashboard", { _: "Dashboard" }));
26
26
  const icon = computed(() => props.icon ?? HouseIcon);
27
27
  return (_ctx, _cache) => {
28
28
  return openBlock(), createBlock(menu_item_link_default, {
@@ -1,19 +1,26 @@
1
1
  import { useTranslate } from "../../../i18n/use-translate.js";
2
2
  import { cn } from "../../../lib/utils.js";
3
3
  import button_default from "../../ui/button.js";
4
+ import { buttonVariants } from "../../ui/button-variants.js";
4
5
  import data_provider_devtools_entry_default from "./data-provider-devtools-entry.js";
5
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, unref, watch, withCtx } from "vue";
6
+ import { ActivityIcon } from "./icons.js";
7
+ import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, unref, watch, withCtx } from "vue";
6
8
  import { shouldHandleHotkey } from "@chelone/core";
7
9
  // src/components/admin/layout/data-provider-devtools.vue?vue&type=script&setup=true&lang.ts
8
- var _hoisted_1 = ["aria-label", "data-open"];
9
- var _hoisted_2 = ["data-open"];
10
- var _hoisted_3 = { class: "font-semibold" };
11
- var _hoisted_4 = { class: "text-muted-foreground tabular-nums" };
12
- var _hoisted_5 = {
10
+ var _hoisted_1 = ["aria-label"];
11
+ var _hoisted_2 = {
12
+ "data-slot": "data-provider-devtools-badge",
13
+ class: "absolute top-0 right-0 min-w-4 -translate-y-1/2 translate-x-1/2 rounded-full bg-primary px-1 text-center text-[10px] leading-4 text-primary-foreground tabular-nums"
14
+ };
15
+ var _hoisted_3 = ["aria-label"];
16
+ var _hoisted_4 = { class: "flex items-center gap-2 border-b px-3 py-1.5" };
17
+ var _hoisted_5 = { class: "font-semibold" };
18
+ var _hoisted_6 = { class: "text-muted-foreground tabular-nums" };
19
+ var _hoisted_7 = {
13
20
  key: 0,
14
21
  class: "px-3 py-2 text-muted-foreground"
15
22
  };
16
- var _hoisted_6 = {
23
+ var _hoisted_8 = {
17
24
  key: 1,
18
25
  class: "min-h-0 flex-1 overflow-y-auto"
19
26
  };
@@ -30,11 +37,13 @@ var data_provider_devtools_vue_vue_type_script_setup_true_lang_default = /*@__PU
30
37
  },
31
38
  setup(__props) {
32
39
  /**
33
- * `<DataProviderDevtools>` — a floating panel at the bottom right that lists
34
- * the calls a `createDataProviderLog` log has recorded: method, resource,
35
- * duration and, for a failed call, the error. The Vue twin of
40
+ * `<DataProviderDevtools>` — a round button at the bottom right carrying a
41
+ * badge with the number of calls a `createDataProviderLog` log has recorded.
42
+ * Activating it opens a panel listing those calls: method, resource, duration
43
+ * and, for a failed call, the error. The panel's Hide button, or the
44
+ * `shortcut`, closes it back to the button. The Vue twin of
36
45
  * `@chelone/react`'s `layout/data-provider-devtools.tsx`. Wrap the data
37
- * provider with `log.wrap`, then mount the panel once, in the layout.
46
+ * provider with `log.wrap`, then mount the component once, in the layout.
38
47
  */
39
48
  const props = __props;
40
49
  const translate = useTranslate();
@@ -48,6 +57,7 @@ var data_provider_devtools_vue_vue_type_script_setup_true_lang_default = /*@__PU
48
57
  }));
49
58
  }, { immediate: true });
50
59
  const entries = computed(() => [...snapshot.value.entries].reverse());
60
+ const title = () => translate("chelone.devtools.title", { _: "Data provider" });
51
61
  function onKeydown(event) {
52
62
  const target = event.target instanceof HTMLElement ? event.target : null;
53
63
  if (!shouldHandleHotkey(event, props.shortcut, target)) return;
@@ -56,24 +66,48 @@ var data_provider_devtools_vue_vue_type_script_setup_true_lang_default = /*@__PU
56
66
  }
57
67
  onMounted(() => window.addEventListener("keydown", onKeydown));
58
68
  onBeforeUnmount(() => window.removeEventListener("keydown", onKeydown));
69
+ const triggerRef = ref(null);
70
+ const panelRef = ref(null);
71
+ watch(open, (opened) => {
72
+ nextTick(() => {
73
+ const focused = document.activeElement;
74
+ if (focused !== null && focused !== document.body && focused.isConnected) return;
75
+ (opened ? panelRef : triggerRef).value?.focus();
76
+ });
77
+ });
59
78
  return (_ctx, _cache) => {
60
- return openBlock(), createElementBlock("section", {
61
- "aria-label": unref(translate)("chelone.devtools.title", { _: "Data provider" }),
79
+ return !open.value ? (openBlock(), createElementBlock("button", {
80
+ key: 0,
81
+ ref_key: "triggerRef",
82
+ ref: triggerRef,
83
+ type: "button",
84
+ "aria-expanded": false,
85
+ "aria-label": `${title()} (${snapshot.value.entries.length})`,
86
+ "data-slot": "data-provider-devtools",
87
+ "data-open": false,
88
+ class: normalizeClass(unref(cn)(unref(buttonVariants)({
89
+ variant: "outline",
90
+ size: "icon"
91
+ }), "fixed right-4 bottom-4 z-50 rounded-full shadow-lg", props.class)),
92
+ onClick: _cache[0] || (_cache[0] = ($event) => open.value = true)
93
+ }, [createVNode(unref(ActivityIcon)), createElementVNode("span", _hoisted_2, toDisplayString(snapshot.value.entries.length), 1)], 10, _hoisted_1)) : (openBlock(), createElementBlock("section", {
94
+ key: 1,
95
+ ref_key: "panelRef",
96
+ ref: panelRef,
97
+ tabindex: "-1",
98
+ "aria-label": title(),
62
99
  "data-slot": "data-provider-devtools",
63
- "data-open": open.value,
100
+ "data-open": true,
64
101
  class: normalizeClass(unref(cn)("fixed right-4 bottom-4 z-50 flex max-h-[70vh] w-96 max-w-[calc(100vw-2rem)] flex-col rounded-lg border bg-popover text-xs text-popover-foreground shadow-lg", props.class))
65
- }, [createElementVNode("header", {
66
- class: "flex items-center gap-2 border-b px-3 py-1.5 data-[open=false]:border-b-0",
67
- "data-open": open.value
68
- }, [
69
- createElementVNode("span", _hoisted_3, toDisplayString(unref(translate)("chelone.devtools.title", { _: "Data provider" })), 1),
70
- createElementVNode("span", _hoisted_4, toDisplayString(snapshot.value.entries.length), 1),
102
+ }, [createElementVNode("header", _hoisted_4, [
103
+ createElementVNode("span", _hoisted_5, toDisplayString(title()), 1),
104
+ createElementVNode("span", _hoisted_6, toDisplayString(snapshot.value.entries.length), 1),
71
105
  createVNode(button_default, {
72
106
  type: "button",
73
107
  variant: "ghost",
74
108
  size: "sm",
75
109
  class: "ml-auto h-6 px-2",
76
- onClick: _cache[0] || (_cache[0] = ($event) => props.log.clear())
110
+ onClick: _cache[1] || (_cache[1] = ($event) => props.log.clear())
77
111
  }, {
78
112
  default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("chelone.devtools.clear", { _: "Clear" })), 1)]),
79
113
  _: 1
@@ -83,18 +117,18 @@ var data_provider_devtools_vue_vue_type_script_setup_true_lang_default = /*@__PU
83
117
  variant: "ghost",
84
118
  size: "sm",
85
119
  class: "h-6 px-2",
86
- "aria-expanded": open.value,
87
- onClick: _cache[1] || (_cache[1] = ($event) => open.value = !open.value)
120
+ "aria-expanded": true,
121
+ onClick: _cache[2] || (_cache[2] = ($event) => open.value = false)
88
122
  }, {
89
- default: withCtx(() => [createTextVNode(toDisplayString(open.value ? unref(translate)("chelone.devtools.hide", { _: "Hide" }) : unref(translate)("chelone.devtools.show", { _: "Show" })), 1)]),
123
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("chelone.devtools.hide", { _: "Hide" })), 1)]),
90
124
  _: 1
91
- }, 8, ["aria-expanded"])
92
- ], 8, _hoisted_2), open.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [entries.value.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_5, toDisplayString(unref(translate)("chelone.devtools.empty", { _: "No calls yet" })), 1)) : (openBlock(), createElementBlock("ul", _hoisted_6, [(openBlock(true), createElementBlock(Fragment, null, renderList(entries.value, (entry) => {
125
+ })
126
+ ]), entries.value.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_7, toDisplayString(unref(translate)("chelone.devtools.empty", { _: "No calls yet" })), 1)) : (openBlock(), createElementBlock("ul", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(entries.value, (entry) => {
93
127
  return openBlock(), createBlock(data_provider_devtools_entry_default, {
94
128
  key: entry.id,
95
129
  entry
96
130
  }, null, 8, ["entry"]);
97
- }), 128))]))], 64)) : createCommentVNode("", true)], 10, _hoisted_1);
131
+ }), 128))]))], 10, _hoisted_3));
98
132
  };
99
133
  }
100
134
  });
@@ -20,3 +20,5 @@ export declare const SendIcon: FunctionalComponent;
20
20
  export declare const SquareIcon: FunctionalComponent;
21
21
  /** The assistant close glyph (a cross). */
22
22
  export declare const XIcon: FunctionalComponent;
23
+ /** The data provider devtools trigger glyph (a pulse line). */
24
+ export declare const ActivityIcon: FunctionalComponent;
@@ -38,4 +38,6 @@ var SendIcon = glyph(["M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0
38
38
  var SquareIcon = glyph(["M5 3h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"]);
39
39
  /** The assistant close glyph (a cross). */
40
40
  var XIcon = glyph(["M18 6 6 18", "m6 6 12 12"]);
41
- export { HouseIcon, ListIcon, LogOutIcon, MessageCircleIcon, SendIcon, SquareIcon, XIcon };
41
+ /** The data provider devtools trigger glyph (a pulse line). */
42
+ var ActivityIcon = glyph(["M22 12h-4l-3 9L9 3l-3 9H2"]);
43
+ export { ActivityIcon, HouseIcon, ListIcon, LogOutIcon, MessageCircleIcon, SendIcon, SquareIcon, XIcon };
@@ -62,7 +62,7 @@ var theme_mode_toggle_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
62
62
  const index = CYCLE.indexOf(theme.value);
63
63
  setTheme(CYCLE[(index + 1) % CYCLE.length] ?? "system");
64
64
  }
65
- const label = computed(() => translate("ra.action.toggle_theme", { _: "Toggle theme" }));
65
+ const label = computed(() => translate("chelone.action.toggle_theme", { _: "Toggle theme" }));
66
66
  return (_ctx, _cache) => {
67
67
  return openBlock(), createBlock(button_default, {
68
68
  variant: "ghost",
@@ -33,7 +33,7 @@ var user_menu_inner_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
33
33
  const props = __props;
34
34
  const { isPending, data: identity } = useGetIdentity();
35
35
  const translate = useTranslate();
36
- const ariaLabel = computed(() => props.label != null ? translate(props.label, { _: props.label }) : identity.value?.fullName || translate("ra.auth.user_menu", { _: "User menu" }));
36
+ const ariaLabel = computed(() => props.label != null ? translate(props.label, { _: props.label }) : identity.value?.fullName || translate("chelone.auth.user_menu", { _: "User menu" }));
37
37
  const initial = computed(() => identity.value?.fullName?.charAt(0) ?? "");
38
38
  return (_ctx, _cache) => {
39
39
  return unref(isPending) ? (openBlock(), createBlock(skeleton_default, {
@@ -181,7 +181,7 @@ var approval_queue_row_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
181
181
  variant: "ghost",
182
182
  onClick: close
183
183
  }, {
184
- default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("ra.action.cancel", { _: "Cancel" })), 1)]),
184
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("chelone.action.cancel", { _: "Cancel" })), 1)]),
185
185
  _: 1
186
186
  }), createVNode(button_default, {
187
187
  type: "submit",
@@ -33,8 +33,8 @@ var bulk_actions_toolbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE
33
33
  const translate = useTranslate();
34
34
  const count = computed(() => list.selectedIds?.length ?? 0);
35
35
  const visible = computed(() => count.value > 0);
36
- const unselectLabel = computed(() => translate("ra.action.unselect", { _: "Unselect" }));
37
- const countLabel = computed(() => translate("ra.action.bulk_actions", {
36
+ const unselectLabel = computed(() => translate("chelone.action.unselect", { _: "Unselect" }));
37
+ const countLabel = computed(() => translate("chelone.action.bulk_actions", {
38
38
  smart_count: count.value,
39
39
  _: `${count.value} rows selected`
40
40
  }));
@@ -62,7 +62,7 @@ var bulk_edit_drawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
62
62
  onSubmit: async () => {
63
63
  const nested = Object.entries(form.store.state.fieldMeta).find(([path, meta]) => meta?.isDirty && /[.[]/.test(path));
64
64
  if (nested) {
65
- notifications?.notify("ra.message.bulk_edit_nested_source", {
65
+ notifications?.notify("chelone.message.bulk_edit_nested_source", {
66
66
  type: "error",
67
67
  messageArgs: {
68
68
  source: nested[0],
@@ -108,15 +108,15 @@ var bulk_edit_drawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
108
108
  const count = computed(() => list.selectedIds?.length ?? 0);
109
109
  const label = computed(() => translate(props.label, { _: props.label }));
110
110
  const title = computed(() => props.title ? translate(props.title, { _: props.title }) : label.value);
111
- const description = computed(() => translate("ra.message.bulk_edit_description", {
111
+ const description = computed(() => translate("chelone.message.bulk_edit_description", {
112
112
  smart_count: count.value,
113
113
  _: "Only the fields you change are applied to {smart_count} selected record(s)."
114
114
  }));
115
- const applyLabel = computed(() => translate("ra.action.bulk_edit_apply", {
115
+ const applyLabel = computed(() => translate("chelone.action.bulk_edit_apply", {
116
116
  smart_count: count.value,
117
117
  _: "Apply to {smart_count} record(s)"
118
118
  }));
119
- const cancelLabel = computed(() => translate("ra.action.cancel", { _: "Cancel" }));
119
+ const cancelLabel = computed(() => translate("chelone.action.cancel", { _: "Cancel" }));
120
120
  return (_ctx, _cache) => {
121
121
  return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(button_default, {
122
122
  type: "button",
@@ -42,7 +42,7 @@ var calendar_agenda_view_vue_vue_type_script_setup_true_lang_default = /*@__PURE
42
42
  "aria-label": __props.label,
43
43
  role: "region",
44
44
  "data-slot": "calendar-agenda"
45
- }, [groups.value.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_2, toDisplayString(unref(translate)("ra.calendar.no_events", { _: "No events in this range" })), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group) => {
45
+ }, [groups.value.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_2, toDisplayString(unref(translate)("chelone.calendar.no_events", { _: "No events in this range" })), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group) => {
46
46
  return openBlock(), createElementBlock("section", {
47
47
  key: group.key,
48
48
  "data-slot": "calendar-agenda-day",
@@ -31,13 +31,13 @@ var calendar_header_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
31
31
  */
32
32
  const emit = __emit;
33
33
  const translate = useTranslate();
34
- const viewLabel = (view) => view === "month" ? translate("ra.calendar.month", { _: "Month" }) : view === "week" ? translate("ra.calendar.week", { _: "Week" }) : translate("ra.calendar.agenda", { _: "Agenda" });
34
+ const viewLabel = (view) => view === "month" ? translate("chelone.calendar.month", { _: "Month" }) : view === "week" ? translate("chelone.calendar.week", { _: "Week" }) : translate("chelone.calendar.agenda", { _: "Agenda" });
35
35
  return (_ctx, _cache) => {
36
36
  return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("h2", _hoisted_2, toDisplayString(__props.title), 1), createElementVNode("div", _hoisted_3, [__props.views && __props.views.length > 1 ? (openBlock(), createElementBlock("div", {
37
37
  key: 0,
38
38
  "data-slot": "calendar-view-switcher",
39
39
  role: "group",
40
- "aria-label": unref(translate)("ra.calendar.view", { _: "View" }),
40
+ "aria-label": unref(translate)("chelone.calendar.view", { _: "View" }),
41
41
  class: "flex items-center gap-1"
42
42
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.views, (option) => {
43
43
  return openBlock(), createBlock(button_default, {
@@ -60,7 +60,7 @@ var calendar_header_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
60
60
  createVNode(button_default, {
61
61
  variant: "ghost",
62
62
  size: "icon",
63
- "aria-label": unref(translate)("ra.calendar.previous", { _: "Previous" }),
63
+ "aria-label": unref(translate)("chelone.calendar.previous", { _: "Previous" }),
64
64
  onClick: _cache[0] || (_cache[0] = ($event) => emit("navigate", "previous"))
65
65
  }, {
66
66
  default: withCtx(() => [createVNode(unref(ChevronLeftIcon))]),
@@ -71,13 +71,13 @@ var calendar_header_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
71
71
  size: "sm",
72
72
  onClick: _cache[1] || (_cache[1] = ($event) => emit("navigate", "today"))
73
73
  }, {
74
- default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("ra.calendar.today", { _: "Today" })), 1)]),
74
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("chelone.calendar.today", { _: "Today" })), 1)]),
75
75
  _: 1
76
76
  }),
77
77
  createVNode(button_default, {
78
78
  variant: "ghost",
79
79
  size: "icon",
80
- "aria-label": unref(translate)("ra.calendar.next", { _: "Next" }),
80
+ "aria-label": unref(translate)("chelone.calendar.next", { _: "Next" }),
81
81
  onClick: _cache[2] || (_cache[2] = ($event) => emit("navigate", "next"))
82
82
  }, {
83
83
  default: withCtx(() => [createVNode(unref(ChevronRightIcon))]),
@@ -121,13 +121,13 @@ var calendar_list_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
121
121
  colorMap: props.colorMap,
122
122
  getTitle: getRepresentation
123
123
  }));
124
- const rangeValue = computed(() => props.rangeFilter ? props.rangeFilter(range.value) : calendarRangeFilter(props.startSource, range.value, props.endSource));
124
+ const rangeValue = computed(() => props.rangeFilter ? props.rangeFilter(range.value) : calendarRangeFilter(pathOf(props.startSource), range.value, pathOfOptional(props.endSource)));
125
125
  const rangeStartISO = computed(() => range.value.start.toISOString());
126
126
  const rangeEndISO = computed(() => range.value.end.toISOString());
127
127
  const originalPerPage = list.perPage === props.perPage ? list.defaultPerPage ?? DEFAULT_PER_PAGE : list.perPage;
128
128
  let appliedKeys = [];
129
129
  const without = (filter, keys) => Object.fromEntries(Object.entries(filter).filter(([key]) => !keys.includes(key)));
130
- const staleKeys = computed(() => props.rangeFilter ? [] : staleCalendarRangeKeys(props.startSource, props.endSource));
130
+ const staleKeys = computed(() => props.rangeFilter ? [] : staleCalendarRangeKeys(pathOf(props.startSource), pathOfOptional(props.endSource)));
131
131
  const inSync = computed(() => list.perPage === props.perPage && staleKeys.value.every((key) => !(key in list.filter)) && Object.entries(rangeValue.value).every(([key, value]) => list.filter[key] === value));
132
132
  watch([
133
133
  rangeStartISO,
@@ -56,7 +56,7 @@ var count_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
56
56
  }, null, 8, ["timeout", "class"])) : unref(error) ? (openBlock(), createElementBlock("span", {
57
57
  key: 1,
58
58
  role: "img",
59
- "aria-label": unref(translate)("ra.notification.http_error", { _: "Error" }),
59
+ "aria-label": unref(translate)("chelone.notification.http_error_label", { _: "Error" }),
60
60
  class: normalizeClass(unref(cn)("inline-flex text-destructive", props.class))
61
61
  }, [createVNode(unref(CircleXIcon))], 10, _hoisted_1)) : unref(data)?.total != null ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [__props.link ? (openBlock(), createBlock(unref(RouterLink), {
62
62
  key: 0,
@@ -98,7 +98,7 @@ var filter_form_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
98
98
  key: 0,
99
99
  type: "button",
100
100
  class: "hide-filter inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-md mt-auto hover:bg-accent hover:text-accent-foreground",
101
- title: unref(translate)("ra.action.remove_filter", { _: "Remove filter" }),
101
+ title: unref(translate)("chelone.action.remove_filter", { _: "Remove filter" }),
102
102
  onClick: ($event) => unref(list).hideFilter(entry.source)
103
103
  }, [createVNode(unref(MinusCircleIcon))], 8, _hoisted_2)) : createCommentVNode("", true)], 8, _hoisted_1)) : createCommentVNode("", true)], 64);
104
104
  }), 128)), renderSlot(_ctx.$slots, "default")], 32);
@@ -50,7 +50,7 @@ var filter_list_item_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
50
50
  variant: "ghost",
51
51
  size: "icon",
52
52
  class: "size-8",
53
- "aria-label": unref(translate)("ra.action.remove_filter", { _: "Remove filter" }),
53
+ "aria-label": unref(translate)("chelone.action.remove_filter", { _: "Remove filter" }),
54
54
  onClick: toggle
55
55
  }, {
56
56
  default: withCtx(() => [..._cache[0] || (_cache[0] = [createElementVNode("span", { "aria-hidden": "true" }, "×", -1)])]),
@@ -30,7 +30,7 @@ var filter_live_search_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
30
30
  const translate = useTranslate();
31
31
  return (_ctx, _cache) => {
32
32
  return openBlock(), createBlock(filter_form_default, null, {
33
- default: withCtx(() => [createVNode(search_input_default, mergeProps(props, { placeholder: props.placeholder ?? unref(translate)("ra.action.search", { _: "Search" }) }), null, 16, ["placeholder"])]),
33
+ default: withCtx(() => [createVNode(search_input_default, mergeProps(props, { placeholder: props.placeholder ?? unref(translate)("chelone.action.search", { _: "Search" }) }), null, 16, ["placeholder"])]),
34
34
  _: 1
35
35
  });
36
36
  };
@@ -22,13 +22,13 @@ var list_no_results_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
22
22
  if (!resource) throw new Error("<ListNoResults> must be used inside a <List> component");
23
23
  const filtered = computed(() => Object.keys(list.filter ?? {}).length > 0);
24
24
  return (_ctx, _cache) => {
25
- return openBlock(), createElementBlock("div", { class: normalizeClass(unref(cn)("flex flex-col items-center gap-2 p-6 text-center text-sm", props.class)) }, [createElementVNode("p", _hoisted_1, toDisplayString(filtered.value ? unref(translate)("ra.navigation.no_filtered_results", { _: "No results found with the current filters." }) : unref(translate)("ra.navigation.no_results", { _: "No results found" })), 1), filtered.value ? (openBlock(), createBlock(button_default, {
25
+ return openBlock(), createElementBlock("div", { class: normalizeClass(unref(cn)("flex flex-col items-center gap-2 p-6 text-center text-sm", props.class)) }, [createElementVNode("p", _hoisted_1, toDisplayString(filtered.value ? unref(translate)("chelone.navigation.no_filtered_results", { _: "No results found with the current filters." }) : unref(translate)("chelone.navigation.no_results", { _: "No results found" })), 1), filtered.value ? (openBlock(), createBlock(button_default, {
26
26
  key: 0,
27
27
  variant: "outline",
28
28
  size: "sm",
29
29
  onClick: _cache[0] || (_cache[0] = ($event) => unref(list).setFilters({}, {}))
30
30
  }, {
31
- default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("ra.navigation.clear_filters", { _: "Clear filters" })), 1)]),
31
+ default: withCtx(() => [createTextVNode(toDisplayString(unref(translate)("chelone.navigation.clear_filters", { _: "Clear filters" })), 1)]),
32
32
  _: 1
33
33
  })) : createCommentVNode("", true)], 2);
34
34
  };
@@ -99,14 +99,14 @@ var list_pagination_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
99
99
  for (const p of endPages) pushPage(p);
100
100
  return tokens;
101
101
  });
102
- const previousLabel = computed(() => translate("ra.navigation.previous", { _: "Previous" }));
103
- const nextLabel = computed(() => translate("ra.navigation.next", { _: "Next" }));
104
- const rowsPerPageLabel = computed(() => translate("ra.navigation.page_rows_per_page", { _: "Rows per page" }));
105
- const rangeLabel = computed(() => isPartial.value ? translate("ra.navigation.partial_page_range_info", {
102
+ const previousLabel = computed(() => translate("chelone.navigation.previous", { _: "Previous" }));
103
+ const nextLabel = computed(() => translate("chelone.navigation.next", { _: "Next" }));
104
+ const rowsPerPageLabel = computed(() => translate("chelone.navigation.page_rows_per_page", { _: "Rows per page" }));
105
+ const rangeLabel = computed(() => isPartial.value ? translate("chelone.navigation.partial_page_range_info", {
106
106
  offsetBegin: pageStart.value,
107
107
  offsetEnd: pageEnd.value,
108
108
  _: `${pageStart.value}-${pageEnd.value}`
109
- }) : translate("ra.navigation.page_range_info", {
109
+ }) : translate("chelone.navigation.page_range_info", {
110
110
  offsetBegin: pageStart.value,
111
111
  offsetEnd: pageEnd.value,
112
112
  total: totalDisplay.value,
@@ -61,7 +61,7 @@ var prev_next_buttons_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
61
61
  }, null, 8, ["class"])) : unref(controller).error ? (openBlock(), createElementBlock("span", {
62
62
  key: 1,
63
63
  role: "img",
64
- "aria-label": unref(translate)("ra.notification.http_error", { _: "Error" }),
64
+ "aria-label": unref(translate)("chelone.notification.http_error_label", { _: "Error" }),
65
65
  class: normalizeClass(unref(cn)("inline-flex text-destructive", props.class))
66
66
  }, [createVNode(unref(AlertCircleIcon))], 10, _hoisted_1)) : !unref(controller).hasPrev && !unref(controller).hasNext ? (openBlock(), createElementBlock("div", {
67
67
  key: 2,
@@ -75,7 +75,7 @@ var prev_next_buttons_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
75
75
  unref(controller).prevPath ? (openBlock(), createBlock(unref(RouterLink), {
76
76
  key: 0,
77
77
  to: unref(controller).prevPath,
78
- "aria-label": unref(translate)("ra.navigation.previous", { _: "Previous" }),
78
+ "aria-label": unref(translate)("chelone.navigation.previous", { _: "Previous" }),
79
79
  class: normalizeClass(unref(ghostIcon))
80
80
  }, {
81
81
  default: withCtx(() => [createVNode(unref(ChevronLeftIcon))]),
@@ -88,7 +88,7 @@ var prev_next_buttons_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
88
88
  key: 1,
89
89
  variant: "ghost",
90
90
  size: "icon",
91
- "aria-label": unref(translate)("ra.navigation.previous", { _: "Previous" }),
91
+ "aria-label": unref(translate)("chelone.navigation.previous", { _: "Previous" }),
92
92
  disabled: ""
93
93
  }, {
94
94
  default: withCtx(() => [createVNode(unref(ChevronLeftIcon))]),
@@ -98,7 +98,7 @@ var prev_next_buttons_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
98
98
  unref(controller).nextPath ? (openBlock(), createBlock(unref(RouterLink), {
99
99
  key: 3,
100
100
  to: unref(controller).nextPath,
101
- "aria-label": unref(translate)("ra.navigation.next", { _: "Next" }),
101
+ "aria-label": unref(translate)("chelone.navigation.next", { _: "Next" }),
102
102
  class: normalizeClass(unref(ghostIcon))
103
103
  }, {
104
104
  default: withCtx(() => [createVNode(unref(ChevronRightIcon))]),
@@ -111,7 +111,7 @@ var prev_next_buttons_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
111
111
  key: 4,
112
112
  variant: "ghost",
113
113
  size: "icon",
114
- "aria-label": unref(translate)("ra.navigation.next", { _: "Next" }),
114
+ "aria-label": unref(translate)("chelone.navigation.next", { _: "Next" }),
115
115
  disabled: ""
116
116
  }, {
117
117
  default: withCtx(() => [createVNode(unref(ChevronRightIcon))]),
@@ -37,7 +37,7 @@ var saved_queries_list_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
37
37
  const out = translate(key, params);
38
38
  return out === key ? fallback : out;
39
39
  };
40
- const removeLabel = (label) => t("ra.saved_queries.remove_label_with_name", `Remove saved query "${label}"`, { name: label });
40
+ const removeLabel = (label) => t("chelone.saved_queries.remove_label_with_name", `Remove saved query "${label}"`, { name: label });
41
41
  const current = computed(() => ({
42
42
  filter: toRaw(list.filter),
43
43
  displayedFilters: toRaw(list.displayedFilters),
@@ -112,14 +112,14 @@ var saved_queries_list_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
112
112
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => name.value = $event),
113
113
  type: "text",
114
114
  class: "h-8 w-48",
115
- "aria-label": t("ra.saved_queries.query_name", "Query name")
115
+ "aria-label": t("chelone.saved_queries.query_name", "Query name")
116
116
  }, null, 8, ["modelValue", "aria-label"]),
117
117
  createVNode(button_default, {
118
118
  type: "submit",
119
119
  size: "sm",
120
120
  disabled: !name.value.trim()
121
121
  }, {
122
- default: withCtx(() => [createTextVNode(toDisplayString(t("ra.action.save", "Save")), 1)]),
122
+ default: withCtx(() => [createTextVNode(toDisplayString(t("chelone.action.save", "Save")), 1)]),
123
123
  _: 1
124
124
  }, 8, ["disabled"]),
125
125
  createVNode(button_default, {
@@ -127,7 +127,7 @@ var saved_queries_list_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
127
127
  size: "sm",
128
128
  onClick: closeForm
129
129
  }, {
130
- default: withCtx(() => [createTextVNode(toDisplayString(t("ra.action.cancel", "Cancel")), 1)]),
130
+ default: withCtx(() => [createTextVNode(toDisplayString(t("chelone.action.cancel", "Cancel")), 1)]),
131
131
  _: 1
132
132
  })
133
133
  ], 32)) : canSave.value ? (openBlock(), createBlock(button_default, {
@@ -136,7 +136,7 @@ var saved_queries_list_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
136
136
  size: "sm",
137
137
  onClick: _cache[1] || (_cache[1] = ($event) => naming.value = true)
138
138
  }, {
139
- default: withCtx(() => [createTextVNode(toDisplayString(t("ra.saved_queries.new_label", "Save current query")), 1)]),
139
+ default: withCtx(() => [createTextVNode(toDisplayString(t("chelone.saved_queries.new_label", "Save current query")), 1)]),
140
140
  _: 1
141
141
  })) : createCommentVNode("", true)], 2);
142
142
  };
@@ -117,7 +117,7 @@ var tree_list_node_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
117
117
  "data-slot": "tree-list-chevron",
118
118
  tabindex: "-1",
119
119
  class: "flex size-6 shrink-0 items-center justify-center rounded-md hover:bg-accent",
120
- "aria-label": open.value ? unref(translate)("ra.action.collapse", { _: "Collapse" }) : unref(translate)("ra.action.expand", { _: "Expand" }),
120
+ "aria-label": open.value ? unref(translate)("chelone.action.collapse", { _: "Collapse" }) : unref(translate)("chelone.action.expand", { _: "Expand" }),
121
121
  onClick: _cache[0] || (_cache[0] = ($event) => unref(tree).toggle(record.value.id))
122
122
  }, [open.value ? (openBlock(), createBlock(unref(ChevronDownIcon), { key: 0 })) : (openBlock(), createBlock(unref(ChevronRightIcon), { key: 1 }))], 8, _hoisted_3)) : (openBlock(), createElementBlock("span", _hoisted_4)), (openBlock(), createBlock(resolveDynamicComponent(rowTag.value), {
123
123
  "data-slot": "tree-list-row",