@chelone/vue 0.7.0 → 0.10.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 (229) hide show
  1. package/dist/admin/admin.vue_vue_type_script_setup_true_lang.js +5 -4
  2. package/dist/admin/auth-gate.js +1 -3
  3. package/dist/admin/resource-view.d.ts +8 -0
  4. package/dist/admin/resource-view.js +19 -0
  5. package/dist/auth/permissions-hooks.js +1 -3
  6. package/dist/choices/choices-context.d.ts +1 -2
  7. package/dist/choices/use-choices.d.ts +3 -3
  8. package/dist/choices/use-choices.js +13 -10
  9. package/dist/choices/use-reference-input.js +4 -4
  10. package/dist/components/admin/auth/auth-error.vue_vue_type_script_setup_true_lang.js +4 -3
  11. package/dist/components/admin/auth/auth-layout.vue_vue_type_script_setup_true_lang.js +1 -1
  12. package/dist/components/admin/auth/can-access.vue.d.ts +2 -2
  13. package/dist/components/admin/auth/login-form.vue_vue_type_script_setup_true_lang.js +3 -2
  14. package/dist/components/admin/auth/login-with-email.vue_vue_type_script_setup_true_lang.js +1 -0
  15. package/dist/components/admin/buttons/bulk-update-button.vue.d.ts +19 -6
  16. package/dist/components/admin/buttons/bulk-update-button.vue_vue_type_script_setup_true_lang.js +1 -1
  17. package/dist/components/admin/buttons/clone-button.vue.d.ts +19 -16
  18. package/dist/components/admin/buttons/clone-button.vue_vue_type_script_setup_true_lang.js +4 -5
  19. package/dist/components/admin/buttons/delete-button.vue.d.ts +19 -10
  20. package/dist/components/admin/buttons/delete-button.vue_vue_type_script_setup_true_lang.js +6 -7
  21. package/dist/components/admin/buttons/dual-approval-button.vue_vue_type_script_setup_true_lang.js +14 -2
  22. package/dist/components/admin/buttons/edit-button.vue.d.ts +19 -16
  23. package/dist/components/admin/buttons/edit-button.vue_vue_type_script_setup_true_lang.js +4 -5
  24. package/dist/components/admin/buttons/export-button.vue_vue_type_script_setup_true_lang.js +2 -2
  25. package/dist/components/admin/buttons/fields-selector.vue_vue_type_script_setup_true_lang.js +1 -2
  26. package/dist/components/admin/buttons/filter-button.vue_vue_type_script_setup_true_lang.js +1 -1
  27. package/dist/components/admin/buttons/record-button-props.d.ts +12 -0
  28. package/dist/components/admin/buttons/show-button.vue.d.ts +19 -16
  29. package/dist/components/admin/buttons/show-button.vue_vue_type_script_setup_true_lang.js +4 -5
  30. package/dist/components/admin/buttons/status-transition-button.vue_vue_type_script_setup_true_lang.js +3 -7
  31. package/dist/components/admin/buttons/update-button.vue.d.ts +28 -24
  32. package/dist/components/admin/buttons/update-button.vue_vue_type_script_setup_true_lang.js +3 -4
  33. package/dist/components/admin/common/application-updated-notification.vue_vue_type_script_setup_true_lang.js +1 -1
  34. package/dist/components/admin/common/i18n-key-editor.vue_vue_type_script_setup_true_lang.js +1 -2
  35. package/dist/components/admin/csv-import/csv-import.vue_vue_type_script_setup_true_lang.js +2 -5
  36. package/dist/components/admin/feedback/error.vue_vue_type_script_setup_true_lang.js +1 -1
  37. package/dist/components/admin/feedback/linear-progress.vue_vue_type_script_setup_true_lang.js +1 -0
  38. package/dist/components/admin/feedback/loading.vue_vue_type_script_setup_true_lang.js +7 -6
  39. package/dist/components/admin/feedback/placeholder.vue_vue_type_script_setup_true_lang.js +4 -1
  40. package/dist/components/admin/fields/api-key-field.vue.d.ts +3 -3
  41. package/dist/components/admin/fields/api-key-field.vue_vue_type_script_setup_true_lang.js +6 -7
  42. package/dist/components/admin/fields/array-field.vue.d.ts +3 -3
  43. package/dist/components/admin/fields/badge-field.vue.d.ts +3 -3
  44. package/dist/components/admin/fields/boolean-field.vue.d.ts +3 -3
  45. package/dist/components/admin/fields/chip-field.vue.d.ts +3 -3
  46. package/dist/components/admin/fields/color-field.vue.d.ts +3 -3
  47. package/dist/components/admin/fields/cron-field.vue.d.ts +3 -3
  48. package/dist/components/admin/fields/currency-field.vue.d.ts +3 -3
  49. package/dist/components/admin/fields/date-field.vue.d.ts +3 -3
  50. package/dist/components/admin/fields/diff-viewer.vue.d.ts +3 -3
  51. package/dist/components/admin/fields/duration-field.vue.d.ts +3 -3
  52. package/dist/components/admin/fields/email-field.vue.d.ts +3 -3
  53. package/dist/components/admin/fields/field-props.d.ts +2 -2
  54. package/dist/components/admin/fields/file-field.vue.d.ts +3 -3
  55. package/dist/components/admin/fields/function-field.vue.d.ts +3 -3
  56. package/dist/components/admin/fields/image-field.vue.d.ts +3 -3
  57. package/dist/components/admin/fields/json-field.vue.d.ts +3 -3
  58. package/dist/components/admin/fields/number-field.vue.d.ts +3 -3
  59. package/dist/components/admin/fields/phone-field.vue.d.ts +3 -3
  60. package/dist/components/admin/fields/phone-field.vue_vue_type_script_setup_true_lang.js +3 -1
  61. package/dist/components/admin/fields/rating-field.vue.d.ts +3 -3
  62. package/dist/components/admin/fields/rating-field.vue_vue_type_script_setup_true_lang.js +5 -5
  63. package/dist/components/admin/fields/record-field.vue.d.ts +3 -3
  64. package/dist/components/admin/fields/reference-array-field.vue.d.ts +20 -10
  65. package/dist/components/admin/fields/reference-field.vue.d.ts +22 -35
  66. package/dist/components/admin/fields/reference-many-count.vue.d.ts +20 -5
  67. package/dist/components/admin/fields/reference-many-field.vue.d.ts +20 -12
  68. package/dist/components/admin/fields/reference-one-field.vue.d.ts +22 -12
  69. package/dist/components/admin/fields/select-field.vue.d.ts +3 -3
  70. package/dist/components/admin/fields/subscription-plan-field.vue.d.ts +3 -3
  71. package/dist/components/admin/fields/text-array-field.vue.d.ts +3 -3
  72. package/dist/components/admin/fields/text-field.vue.d.ts +3 -3
  73. package/dist/components/admin/fields/url-field.vue.d.ts +3 -3
  74. package/dist/components/admin/fields/usage-meter-field.vue.d.ts +3 -3
  75. package/dist/components/admin/fields/usage-meter-field.vue_vue_type_script_setup_true_lang.js +6 -6
  76. package/dist/components/admin/fields/webhook-endpoint-field.vue.d.ts +3 -3
  77. package/dist/components/admin/fields/webhook-endpoint-field.vue_vue_type_script_setup_true_lang.js +1 -1
  78. package/dist/components/admin/fields/wrapper-field.vue.d.ts +21 -11
  79. package/dist/components/admin/inputs/api-key-input.vue.d.ts +20 -5
  80. package/dist/components/admin/inputs/api-key-input.vue_vue_type_script_setup_true_lang.js +3 -4
  81. package/dist/components/admin/inputs/array-input-row.vue_vue_type_script_setup_true_lang.js +1 -1
  82. package/dist/components/admin/inputs/checkbox-group-input.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/components/admin/inputs/date-input-format.d.ts +4 -1
  84. package/dist/components/admin/inputs/date-input-format.js +10 -1
  85. package/dist/components/admin/inputs/date-input.vue_vue_type_script_setup_true_lang.js +3 -2
  86. package/dist/components/admin/inputs/date-time-input.vue_vue_type_script_setup_true_lang.js +3 -2
  87. package/dist/components/admin/inputs/duration-input.vue_vue_type_script_setup_true_lang.js +1 -1
  88. package/dist/components/admin/inputs/image-input-thumbnail.vue_vue_type_script_setup_true_lang.js +6 -5
  89. package/dist/components/admin/inputs/image-input.vue.d.ts +1 -0
  90. package/dist/components/admin/inputs/image-input.vue_vue_type_script_setup_true_lang.js +4 -1
  91. package/dist/components/admin/inputs/in-place-editor-form.vue.d.ts +3 -3
  92. package/dist/components/admin/inputs/in-place-editor-form.vue_vue_type_script_setup_true_lang.js +1 -1
  93. package/dist/components/admin/inputs/in-place-editor.vue.d.ts +3 -3
  94. package/dist/components/admin/inputs/number-input.vue.d.ts +6 -0
  95. package/dist/components/admin/inputs/number-input.vue_vue_type_script_setup_true_lang.js +9 -0
  96. package/dist/components/admin/inputs/password-input.vue_vue_type_script_setup_true_lang.js +34 -30
  97. package/dist/components/admin/inputs/phone-input.vue_vue_type_script_setup_true_lang.js +1 -1
  98. package/dist/components/admin/inputs/radio-button-group-input.vue_vue_type_script_setup_true_lang.js +1 -1
  99. package/dist/components/admin/inputs/rating-input.vue_vue_type_script_setup_true_lang.js +24 -12
  100. package/dist/components/admin/inputs/reference-input.vue.d.ts +1 -1
  101. package/dist/components/admin/inputs/reference-input.vue_vue_type_script_setup_true_lang.js +2 -1
  102. package/dist/components/admin/inputs/resettable-text-input.vue.d.ts +6 -4
  103. package/dist/components/admin/inputs/resettable-text-input.vue_vue_type_script_setup_true_lang.js +44 -39
  104. package/dist/components/admin/inputs/subscription-plan-picker.vue_vue_type_script_setup_true_lang.js +2 -2
  105. package/dist/components/admin/inputs/text-input.vue.d.ts +13 -2
  106. package/dist/components/admin/inputs/text-input.vue_vue_type_script_setup_true_lang.js +9 -4
  107. package/dist/components/admin/inputs/time-input.vue_vue_type_script_setup_true_lang.js +3 -2
  108. package/dist/components/admin/inputs/use-choice-input.d.ts +2 -2
  109. package/dist/components/admin/layout/app-sidebar.vue.d.ts +12 -1
  110. package/dist/components/admin/layout/app-sidebar.vue_vue_type_script_setup_true_lang.js +15 -11
  111. package/dist/components/admin/layout/command-menu-content.vue_vue_type_script_setup_true_lang.js +1 -1
  112. package/dist/components/admin/layout/command-menu.vue.d.ts +1 -1
  113. package/dist/components/admin/layout/command-menu.vue_vue_type_script_setup_true_lang.js +9 -63
  114. package/dist/components/admin/layout/data-provider-devtools-entry.vue.d.ts +1 -1
  115. package/dist/components/admin/layout/data-provider-devtools-entry.vue_vue_type_script_setup_true_lang.js +3 -3
  116. package/dist/components/admin/layout/data-provider-devtools.vue_vue_type_script_setup_true_lang.js +62 -28
  117. package/dist/components/admin/layout/icons.d.ts +2 -0
  118. package/dist/components/admin/layout/icons.js +3 -1
  119. package/dist/components/admin/layout/layout.vue_vue_type_script_setup_true_lang.js +1 -1
  120. package/dist/components/admin/layout/menu-item-link.vue.d.ts +5 -0
  121. package/dist/components/admin/layout/menu-item-link.vue_vue_type_script_setup_true_lang.js +27 -8
  122. package/dist/components/admin/layout/onboarding-tour-overlay.vue_vue_type_script_setup_true_lang.js +1 -2
  123. package/dist/components/admin/layout/resource-menu-item-group.vue.d.ts +8 -1
  124. package/dist/components/admin/layout/resource-menu-item-group.vue_vue_type_script_setup_true_lang.js +8 -7
  125. package/dist/components/admin/layout/theme-provider.vue_vue_type_script_setup_true_lang.js +2 -1
  126. package/dist/components/admin/layout/title-portal-id.d.ts +1 -1
  127. package/dist/components/admin/layout/title-portal-id.js +1 -9
  128. package/dist/components/admin/layout/top-toolbar.vue_vue_type_script_setup_true_lang.js +4 -1
  129. package/dist/components/admin/list/approval-queue-row.vue.d.ts +2 -2
  130. package/dist/components/admin/list/approval-queue-row.vue_vue_type_script_setup_true_lang.js +2 -2
  131. package/dist/components/admin/list/approval-queue.vue.d.ts +3 -3
  132. package/dist/components/admin/list/calendar-agenda-view.vue.d.ts +23 -15
  133. package/dist/components/admin/list/calendar-event.vue.d.ts +21 -8
  134. package/dist/components/admin/list/calendar-list.vue.d.ts +29 -56
  135. package/dist/components/admin/list/calendar-list.vue_vue_type_script_setup_true_lang.js +12 -8
  136. package/dist/components/admin/list/calendar-month-view.vue.d.ts +26 -20
  137. package/dist/components/admin/list/calendar-month-view.vue_vue_type_script_setup_true_lang.js +2 -6
  138. package/dist/components/admin/list/calendar-week-view.vue.d.ts +24 -17
  139. package/dist/components/admin/list/data-table-col.vue_vue_type_script_setup_true_lang.js +8 -5
  140. package/dist/components/admin/list/data-table-context.d.ts +9 -6
  141. package/dist/components/admin/list/data-table-context.js +9 -1
  142. package/dist/components/admin/list/data-table-row.vue.d.ts +19 -15
  143. package/dist/components/admin/list/data-table-row.vue_vue_type_script_setup_true_lang.js +5 -9
  144. package/dist/components/admin/list/data-table.vue.d.ts +35 -23
  145. package/dist/components/admin/list/data-table.vue_vue_type_script_setup_true_lang.js +4 -7
  146. package/dist/components/admin/list/list-pagination.vue_vue_type_script_setup_true_lang.js +2 -2
  147. package/dist/components/admin/list/pivot-grid.vue.d.ts +3 -3
  148. package/dist/components/admin/list/record-timeline.vue.d.ts +3 -3
  149. package/dist/components/admin/list/record-timeline.vue_vue_type_script_setup_true_lang.js +1 -1
  150. package/dist/components/admin/list/simple-list-item.vue.d.ts +21 -19
  151. package/dist/components/admin/list/simple-list-item.vue_vue_type_script_setup_true_lang.js +3 -7
  152. package/dist/components/admin/list/simple-list.vue.d.ts +28 -20
  153. package/dist/components/admin/list/single-field-list-record.vue.d.ts +19 -9
  154. package/dist/components/admin/list/single-field-list.vue.d.ts +21 -11
  155. package/dist/components/admin/list/tree-list-context.d.ts +11 -6
  156. package/dist/components/admin/list/tree-list-node.vue.d.ts +19 -4
  157. package/dist/components/admin/list/tree-list.vue.d.ts +28 -37
  158. package/dist/components/admin/realtime/comments-thread.vue_vue_type_script_setup_true_lang.js +56 -44
  159. package/dist/components/admin/realtime/menu-live.vue.d.ts +3 -1
  160. package/dist/components/admin/realtime/menu-live.vue_vue_type_script_setup_true_lang.js +42 -12
  161. package/dist/components/admin/supabase/forgot-password-form.vue_vue_type_script_setup_true_lang.js +4 -3
  162. package/dist/components/admin/supabase/set-password-form.vue_vue_type_script_setup_true_lang.js +4 -3
  163. package/dist/components/admin/supabase/use-password-recovery.js +11 -1
  164. package/dist/components/admin/view/create.vue_vue_type_script_setup_true_lang.js +1 -1
  165. package/dist/components/admin/view/edit.vue_vue_type_script_setup_true_lang.js +1 -1
  166. package/dist/components/admin/view/show.vue_vue_type_script_setup_true_lang.js +1 -1
  167. package/dist/components/admin/widgets/job-monitor-row.vue.d.ts +24 -11
  168. package/dist/components/admin/widgets/job-monitor.vue.d.ts +3 -3
  169. package/dist/components/admin/widgets/job-monitor.vue_vue_type_script_setup_true_lang.js +2 -2
  170. package/dist/components/block-editor/block-doc-field.vue.d.ts +3 -3
  171. package/dist/components/block-editor/block-drag-handle.vue_vue_type_script_setup_true_lang.js +3 -4
  172. package/dist/components/block-editor/image-block-config.vue_vue_type_script_setup_true_lang.js +2 -3
  173. package/dist/components/charts/bar-chart.vue.d.ts +6 -2
  174. package/dist/components/charts/bar-chart.vue_vue_type_script_setup_true_lang.js +6 -4
  175. package/dist/components/charts/series-chart.d.ts +1 -1
  176. package/dist/components/charts/series-chart.js +9 -3
  177. package/dist/components/index.js +2 -2
  178. package/dist/components/inspector/configurable.vue.d.ts +0 -21
  179. package/dist/components/inspector/configurable.vue_vue_type_script_setup_true_lang.js +2 -2
  180. package/dist/components/inspector/inspector.vue_vue_type_script_setup_true_lang.js +6 -8
  181. package/dist/components/kanban/kanban-board.vue.d.ts +3 -3
  182. package/dist/components/kanban/kanban-board.vue_vue_type_script_setup_true_lang.js +7 -2
  183. package/dist/components/maps/bbox-field.vue_vue_type_script_setup_true_lang.js +4 -4
  184. package/dist/components/maps/geo-json-field.vue_vue_type_script_setup_true_lang.js +4 -4
  185. package/dist/components/maps/geo-json-layers.vue_vue_type_script_setup_true_lang.js +3 -3
  186. package/dist/components/maps/geo-json-view.vue_vue_type_script_setup_true_lang.js +3 -2
  187. package/dist/components/maps/lat-lng-field.vue_vue_type_script_setup_true_lang.js +4 -3
  188. package/dist/components/maps/lat-lng-input.vue_vue_type_script_setup_true_lang.js +5 -7
  189. package/dist/components/maps/map-canvas.vue_vue_type_script_setup_true_lang.js +3 -3
  190. package/dist/components/maps/use-map.js +1 -3
  191. package/dist/components/maps-draw/shape-input.vue_vue_type_script_setup_true_lang.js +5 -5
  192. package/dist/components/maps-draw/simplify-input.vue_vue_type_script_setup_true_lang.js +2 -2
  193. package/dist/components/maps-osm/geocoding-input.vue_vue_type_script_setup_true_lang.js +2 -1
  194. package/dist/components/maps-osm/map-with-search.vue_vue_type_script_setup_true_lang.js +2 -2
  195. package/dist/components/mdx-editor/mdx-editor-theme.css +47 -0
  196. package/dist/components/mdx-editor/mdx-field.vue.d.ts +21 -11
  197. package/dist/components/mdx-editor/mdx-input.vue_vue_type_script_setup_true_lang.js +4 -1
  198. package/dist/components/monaco/internal/use-json-schema.js +1 -2
  199. package/dist/components/monaco/internal/use-monaco-markers.d.ts +0 -6
  200. package/dist/components/monaco/internal/use-monaco-markers.js +4 -2
  201. package/dist/components/monaco/monaco-json-field-lazy.vue.d.ts +2 -2
  202. package/dist/components/monaco/monaco-json-field-lazy.vue_vue_type_script_setup_true_lang.js +3 -2
  203. package/dist/components/monaco/monaco-json-field.vue.d.ts +3 -3
  204. package/dist/components/monaco/monaco-json-input-lazy.vue_vue_type_script_setup_true_lang.js +4 -4
  205. package/dist/components/rich-text-input/rich-text-field.vue.d.ts +3 -3
  206. package/dist/components/ui/avatar.js +1 -1
  207. package/dist/components/ui/badge.js +4 -4
  208. package/dist/components/ui/button-variants.js +1 -1
  209. package/dist/components/ui/chart/chart-container.vue_vue_type_script_setup_true_lang.js +1 -1
  210. package/dist/components/ui/checkbox.vue_vue_type_script_setup_true_lang.js +1 -1
  211. package/dist/components/ui/command/command-dialog.vue_vue_type_script_setup_true_lang.js +1 -1
  212. package/dist/components/ui/sidebar/sidebar-menu-button.vue_vue_type_script_setup_true_lang.js +1 -1
  213. package/dist/components/ui/sidebar/sidebar-parts.js +2 -2
  214. package/dist/components/ui/sidebar/sidebar.vue_vue_type_script_setup_true_lang.js +2 -2
  215. package/dist/controllers/use-controller-for-id.d.ts +2 -2
  216. package/dist/controllers/use-prev-next-controller.d.ts +2 -2
  217. package/dist/controllers/use-reference-many-field-controller.d.ts +4 -4
  218. package/dist/controllers/use-reference-one-field-controller.d.ts +4 -4
  219. package/dist/create-resource-components.d.ts +225 -117
  220. package/dist/data/undoable.js +2 -2
  221. package/dist/form/use-form.d.ts +5 -3
  222. package/dist/form/use-form.js +1 -1
  223. package/dist/form/use-input.d.ts +0 -2
  224. package/dist/form/use-input.js +1 -2
  225. package/dist/index.js +2 -2
  226. package/dist/resource-context.d.ts +5 -1
  227. package/dist/resource-context.js +4 -0
  228. package/dist/router/use-get-path-for-record.d.ts +3 -3
  229. package/package.json +5 -5
@@ -7,7 +7,7 @@ import input_default from "../../ui/input.js";
7
7
  import switch_default from "../../ui/switch.js";
8
8
  import { ChevronDownIcon, ChevronUpIcon, SearchIcon, XIcon } from "./icons.js";
9
9
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, h, openBlock, ref, renderList, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
10
- import { arrangeColumns, columnLabelMatches } from "@chelone/core";
10
+ import { SEARCH_THRESHOLD, arrangeColumns, columnLabelMatches } from "@chelone/core";
11
11
  // src/components/admin/buttons/fields-selector.vue?vue&type=script&setup=true&lang.ts
12
12
  var _hoisted_1 = {
13
13
  key: 0,
@@ -73,7 +73,6 @@ var fields_selector_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
73
73
  * @example
74
74
  * <FieldsSelector store-key="posts.datatable" />
75
75
  */
76
- const SEARCH_THRESHOLD = 5;
77
76
  const props = __props;
78
77
  const resource = useResourceContext({ resource: props.resource });
79
78
  const translate = useTranslate();
@@ -73,7 +73,7 @@ var filter_button_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
73
73
  }, 8, ["aria-label"])]),
74
74
  _: 1
75
75
  }), createVNode(unref(dropdown_menu_content_default), {
76
- align: "start",
76
+ align: "end",
77
77
  class: "w-56"
78
78
  }, {
79
79
  default: withCtx(() => [
@@ -0,0 +1,12 @@
1
+ import type { LooseRecord, ResourceRecord } from "@chelone/core";
2
+ /** Props the record-scoped link buttons (edit, show, clone) share. */
3
+ export interface RecordLinkButtonProps<TRecord extends ResourceRecord = LooseRecord> {
4
+ /** Override the ambient record. */
5
+ record?: TRecord | LooseRecord;
6
+ /** Override the ambient `<Resource>`. */
7
+ resource?: string;
8
+ /** Override the auto-translated label. */
9
+ label?: string;
10
+ /** Extra CSS class appended to the anchor. */
11
+ class?: string;
12
+ }
@@ -1,22 +1,25 @@
1
- import { type LooseRecord } from "@chelone/core";
1
+ import { type LooseRecord, type ResourceRecord } from "@chelone/core";
2
+ import type { RecordLinkButtonProps } from "./record-button-props.js";
2
3
  /** Props for {@link ShowButton}. */
3
- export interface ShowButtonProps {
4
- /** Override the ambient record. */
5
- record?: LooseRecord;
6
- /** Override the ambient `<Resource>`. */
7
- resource?: string;
8
- /** Override the auto-translated label. */
9
- label?: string;
10
- /** Extra CSS class appended to the anchor. */
11
- class?: string;
4
+ export interface ShowButtonProps<TRecord extends ResourceRecord = LooseRecord> extends RecordLinkButtonProps<TRecord> {
12
5
  }
13
6
  declare const _default: typeof __VLS_export;
14
7
  export default _default;
15
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ShowButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ShowButtonProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
16
- icon?: (props: {}) => any;
17
- }>;
18
- type __VLS_WithSlots<T, S> = T & {
19
- new (): {
20
- $slots: S;
8
+ declare const __VLS_export: <TRecord extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
9
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<ShowButtonProps<TRecord>> & (typeof globalThis extends {
10
+ __VLS_PROPS_FALLBACK: infer P;
11
+ } ? P : {});
12
+ expose: (exposed: {}) => void;
13
+ attrs: any;
14
+ slots: {
15
+ icon?: (props: {}) => any;
21
16
  };
17
+ emit: {};
18
+ }>) => import("vue").VNode & {
19
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
22
20
  };
21
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
22
+ [K in keyof T]: T[K];
23
+ } : {
24
+ [K in keyof T as K]: T[K];
25
+ }) & {};
@@ -1,12 +1,12 @@
1
1
  import { useTranslate } from "../../../i18n/use-translate.js";
2
2
  import { useGetResourceLabel } from "../../../label/use-get-resource-label.js";
3
- import { RecordContextKey } from "../../../record/record-context.js";
3
+ import { useRecordContextRef } from "../../../record/record-context.js";
4
4
  import { useResourceContext } from "../../../resource-context.js";
5
5
  import { useCreatePath } from "../../../router/nav-composables.js";
6
6
  import { useMenuAccess } from "../layout/use-menu-access.js";
7
7
  import { buttonVariants } from "../../ui/button-variants.js";
8
8
  import { EyeIcon } from "./icons.js";
9
- import { computed, createBlock, createCommentVNode, createTextVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
9
+ import { computed, createBlock, createCommentVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
10
10
  import { definedParams } from "@chelone/core";
11
11
  import { RouterLink } from "vue-router";
12
12
  // src/components/admin/buttons/show-button.vue?vue&type=script&setup=true&lang.ts
@@ -32,8 +32,7 @@ var show_button_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
32
32
  */
33
33
  const props = __props;
34
34
  const resource = useResourceContext(props);
35
- const injectedRecord = inject(RecordContextKey, null);
36
- const record = computed(() => props.record ?? injectedRecord?.value);
35
+ const record = useRecordContextRef(() => props.record);
37
36
  const createPath = useCreatePath();
38
37
  const getResourceLabel = useGetResourceLabel();
39
38
  const translate = useTranslate();
@@ -59,7 +58,7 @@ var show_button_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
59
58
  class: props.class
60
59
  }));
61
60
  return (_ctx, _cache) => {
62
- return record.value && record.value.id != null && !unref(isAccessPending) && unref(canAccess) ? (openBlock(), createBlock(unref(RouterLink), {
61
+ return unref(record) && unref(record).id != null && !unref(isAccessPending) && unref(canAccess) ? (openBlock(), createBlock(unref(RouterLink), {
63
62
  key: 0,
64
63
  to: to.value,
65
64
  class: normalizeClass(classes.value),
@@ -70,14 +70,10 @@ var status_transition_button_vue_vue_type_script_setup_true_lang_default = /*@__
70
70
  const show = computed(() => !!resource && !!record.value && !isAccessPending.value && canAccess.value);
71
71
  const label = (state) => Object.hasOwn(props.labels ?? {}, state) ? props.labels?.[state] ?? state : state;
72
72
  const pendingTarget = ref(null);
73
- const confirmTitle = computed(() => translate("chelone.status_transition.confirm_title", {
74
- _: "Change status to {to}?",
75
- to: label(pendingTarget.value ?? "")
76
- }));
73
+ const confirmTitle = computed(() => translate("chelone.status_transition.confirm_title", { _: "Change status?" }));
77
74
  const confirmContent = computed(() => translate("chelone.status_transition.confirm_content", {
78
- _: "The status changes from {from} to {to}.",
79
- from: label(transitionState.value?.current ?? ""),
80
- to: label(pendingTarget.value ?? "")
75
+ _: "Move to {status}?",
76
+ status: label(pendingTarget.value ?? "")
81
77
  }));
82
78
  function onSelect(to) {
83
79
  if (props.confirm) {
@@ -1,8 +1,8 @@
1
- import type { LooseRecord, MutationMode } from "@chelone/core";
1
+ import type { LooseRecord, MutationMode, ResourceRecord } from "@chelone/core";
2
2
  /** Props for {@link UpdateButton}. */
3
- export interface UpdateButtonProps {
3
+ export interface UpdateButtonProps<TRecord extends ResourceRecord = LooseRecord> {
4
4
  /** The fields to patch onto the record. */
5
- data: Partial<LooseRecord>;
5
+ data: Partial<NoInfer<TRecord>>;
6
6
  /**
7
7
  * Read once at setup. `"undoable"` (default) patches the record now with an
8
8
  * Undo notification and no dialog; the server call is deferred until the Undo
@@ -15,7 +15,7 @@ export interface UpdateButtonProps {
15
15
  /** Button variant. Default `"outline"`. */
16
16
  variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
17
17
  /** Override the ambient record. */
18
- record?: LooseRecord;
18
+ record?: TRecord;
19
19
  /** Override the ambient `<Resource>`. */
20
20
  resource?: string;
21
21
  /** Confirmation-dialog title. Default `"ra.message.bulk_update_title"`. */
@@ -29,25 +29,29 @@ export interface UpdateButtonProps {
29
29
  }
30
30
  declare const _default: typeof __VLS_export;
31
31
  export default _default;
32
- declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<UpdateButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
33
- click: (e?: MouseEvent | undefined) => any;
34
- error: (error: unknown) => any;
35
- success: (data: LooseRecord) => any;
36
- }, string, import("vue").PublicProps, Readonly<UpdateButtonProps> & Readonly<{
37
- onClick?: ((e?: MouseEvent | undefined) => any) | undefined;
38
- onError?: ((error: unknown) => any) | undefined;
39
- onSuccess?: ((data: LooseRecord) => any) | undefined;
40
- }>, {
41
- variant: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost";
42
- confirmColor: "warning" | "primary";
43
- mutationMode: MutationMode;
44
- confirmTitle: string;
45
- confirmContent: string;
46
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
47
- icon?: (props: {}) => any;
48
- }>;
49
- type __VLS_WithSlots<T, S> = T & {
50
- new (): {
51
- $slots: S;
32
+ declare const __VLS_export: <TRecord extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
33
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<UpdateButtonProps<TRecord> & {
34
+ onClick?: ((e?: MouseEvent | undefined) => any) | undefined;
35
+ onError?: ((error: unknown) => any) | undefined;
36
+ onSuccess?: ((data: TRecord) => any) | undefined;
37
+ }> & (typeof globalThis extends {
38
+ __VLS_PROPS_FALLBACK: infer P;
39
+ } ? P : {});
40
+ expose: (exposed: {}) => void;
41
+ attrs: any;
42
+ slots: {
43
+ icon?: (props: {}) => any;
52
44
  };
45
+ emit: {
46
+ (event: "click", e?: MouseEvent): void;
47
+ (event: "success", data: TRecord): void;
48
+ (event: "error", error: unknown): void;
49
+ };
50
+ }>) => import("vue").VNode & {
51
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
53
52
  };
53
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
54
+ [K in keyof T]: T[K];
55
+ } : {
56
+ [K in keyof T as K]: T[K];
57
+ }) & {};
@@ -2,13 +2,13 @@ import { useCheloneNotifications } from "../../../context.js";
2
2
  import { useUpdate } from "../../../data/mutations.js";
3
3
  import { useTranslate } from "../../../i18n/use-translate.js";
4
4
  import { humanize, pluralize } from "../../../label/inflection.js";
5
- import { RecordContextKey } from "../../../record/record-context.js";
5
+ import { useRecordContextRef } from "../../../record/record-context.js";
6
6
  import { useResourceContext } from "../../../resource-context.js";
7
7
  import button_default from "../../ui/button.js";
8
8
  import confirm_default from "../feedback/confirm.js";
9
9
  import { useMenuAccess } from "../layout/use-menu-access.js";
10
10
  import { RefreshCwIcon } from "./icons.js";
11
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, renderSlot, toDisplayString, unref, withCtx } from "vue";
11
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, toDisplayString, unref, withCtx } from "vue";
12
12
  // src/components/admin/buttons/update-button.vue?vue&type=script&setup=true&lang.ts
13
13
  var update_button_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
14
14
  __name: "update-button",
@@ -50,8 +50,7 @@ var update_button_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
50
50
  const props = __props;
51
51
  const emit = __emit;
52
52
  const resource = useResourceContext(props);
53
- const injectedRecord = inject(RecordContextKey, null);
54
- const record = computed(() => props.record ?? injectedRecord?.value);
53
+ const record = useRecordContextRef(() => props.record);
55
54
  const translate = useTranslate();
56
55
  const notifications = useCheloneNotifications();
57
56
  const { canAccess, isPending: isAccessPending } = useMenuAccess(computed(() => ({
@@ -36,7 +36,7 @@ var application_updated_notification_vue_vue_type_script_setup_true_lang_default
36
36
  const instance = getCurrentInstance();
37
37
  const messageText = computed(() => props.message ?? props.notificationText);
38
38
  const buttonText = computed(() => props.buttonLabel ?? props.updateText);
39
- const cardClass = computed(() => cn("fixed bottom-4 left-1/2 z-50 -translate-x-1/2 flex-row items-center gap-3 px-4 py-3", props.class));
39
+ const cardClass = computed(() => cn("fixed bottom-4 left-1/2 z-50 -translate-x-1/2 flex flex-row items-center gap-3 px-4 py-3", props.class));
40
40
  function onReload() {
41
41
  const listeners = instance?.vnode.props;
42
42
  if (listeners?.onReload || listeners?.onReloadOnce) emit("reload");
@@ -7,6 +7,7 @@ import { Card } from "../../ui/card.js";
7
7
  import input_default from "../../ui/input.js";
8
8
  import { CheckIcon, ChevronDownIcon, ChevronUpIcon, CopyIcon } from "../buttons/icons.js";
9
9
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, onScopeDispose, openBlock, ref, renderList, shallowRef, toDisplayString, unref, watch, watchEffect, withCtx } from "vue";
10
+ import { COPIED_MS, OWN_KEY_PREFIX } from "@chelone/core";
10
11
  // src/components/admin/common/i18n-key-editor.vue?vue&type=script&setup=true&lang.ts
11
12
  var _hoisted_1 = { class: "flex items-center justify-between gap-2" };
12
13
  var _hoisted_2 = { class: "text-sm font-medium" };
@@ -58,8 +59,6 @@ var i18n_key_editor_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
58
59
  * <I18nKeyEditor :store="store" />
59
60
  * </template>
60
61
  */
61
- const COPIED_MS = 1500;
62
- const OWN_KEY_PREFIX = "chelone.i18n_key_editor.";
63
62
  const props = __props;
64
63
  const translate = useTranslate();
65
64
  const notifications = useCheloneNotifications();
@@ -10,7 +10,7 @@ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from ".
10
10
  import { UploadIcon } from "./upload-icon.js";
11
11
  import { CsvImportKey } from "./use-csv-import.js";
12
12
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, onScopeDispose, openBlock, provide, ref, renderList, renderSlot, toDisplayString, unref, withCtx, withModifiers } from "vue";
13
- import { createCsvImportController, csvErrorRows, downloadCSV, parseCsvWith, recordsToCSV } from "@chelone/core";
13
+ import { PREVIEW_ROWS, REPLACEMENT_CHAR, createCsvImportController, csvErrorRows, downloadCSV, parseCsvWith, recordsToCSV } from "@chelone/core";
14
14
  import Papa from "papaparse";
15
15
  // src/components/admin/csv-import/csv-import.vue?vue&type=script&setup=true&lang.ts
16
16
  var _hoisted_1 = { class: "min-h-32" };
@@ -105,8 +105,6 @@ var csv_import_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
105
105
  * The default slot renders inside the provided context, so a child can call
106
106
  * `useCsvImport()`.
107
107
  */
108
- const PREVIEW_ROWS = 50;
109
- const REPLACEMENT_CHAR = "�";
110
108
  const props = __props;
111
109
  const translate = useTranslate();
112
110
  const { dataProvider } = useCheloneContext();
@@ -222,7 +220,6 @@ var csv_import_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
222
220
  createVNode(button_default, {
223
221
  type: "button",
224
222
  variant: "outline",
225
- size: "sm",
226
223
  onClick: _cache[0] || (_cache[0] = ($event) => open.value = true)
227
224
  }, {
228
225
  default: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(unref(UploadIcon))]), createTextVNode(" " + toDisplayString(__props.label ?? unref(translate)("ra.csv_import.import", { _: "Import" })), 1)]),
@@ -327,7 +324,7 @@ var csv_import_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
327
324
  })]),
328
325
  _: 1
329
326
  }), createVNode(unref(TableBody), null, {
330
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(state).validations.slice(0, PREVIEW_ROWS), (validation, index) => {
327
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(state).validations.slice(0, unref(PREVIEW_ROWS)), (validation, index) => {
331
328
  return openBlock(), createBlock(unref(TableRow), { key: index }, {
332
329
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(state).fields, (field) => {
333
330
  return openBlock(), createBlock(unref(TableCell), { key: field }, {
@@ -7,7 +7,7 @@ var _hoisted_1 = {
7
7
  class: "flex items-center text-3xl mt-5 mb-5 gap-3",
8
8
  role: "alert"
9
9
  };
10
- var _hoisted_2 = { class: "mt-1 p-2 bg-secondary w-full lg:w-150" };
10
+ var _hoisted_2 = { class: "mt-1 p-2 bg-secondary w-full max-w-150" };
11
11
  var _hoisted_3 = { class: "py-2 cursor-pointer" };
12
12
  var _hoisted_4 = { class: "whitespace-pre-wrap pt-1" };
13
13
  var _hoisted_5 = { class: "text-xs" };
@@ -35,6 +35,7 @@ var linear_progress_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
35
35
  return (_ctx, _cache) => {
36
36
  return !unref(ready) ? (openBlock(), createElementBlock("span", _hoisted_1)) : (openBlock(), createElementBlock("div", {
37
37
  key: 1,
38
+ "data-slot": "linear-progress",
38
39
  class: normalizeClass(classes.value)
39
40
  }, [__props.value !== void 0 ? (openBlock(), createElementBlock("div", {
40
41
  key: 0,
@@ -10,8 +10,9 @@ var _hoisted_1 = {
10
10
  "aria-live": "polite"
11
11
  };
12
12
  var _hoisted_2 = { class: "text-center font-sans text-muted-foreground py-1" };
13
- var _hoisted_3 = { class: "mt-3 text-2xl text-secondary-foreground" };
14
- var _hoisted_4 = { class: "text-primary" };
13
+ var _hoisted_3 = { class: "flex justify-center" };
14
+ var _hoisted_4 = { class: "mt-3 text-2xl text-secondary-foreground" };
15
+ var _hoisted_5 = { class: "text-primary" };
15
16
  var loading_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
16
17
  __name: "loading",
17
18
  props: {
@@ -35,12 +36,12 @@ var loading_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCo
35
36
  const ready = useTimeout(props.delay);
36
37
  return (_ctx, _cache) => {
37
38
  return unref(ready) ? (openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [
38
- createVNode(spinner_default, {
39
+ createElementVNode("div", _hoisted_3, [createVNode(spinner_default, {
39
40
  size: "large",
40
41
  class: "size-9"
41
- }),
42
- createElementVNode("h5", _hoisted_3, toDisplayString(unref(translate)(__props.loadingPrimary, { _: __props.loadingPrimary })), 1),
43
- createElementVNode("p", _hoisted_4, toDisplayString(unref(translate)(__props.loadingSecondary, { _: __props.loadingSecondary })), 1)
42
+ })]),
43
+ createElementVNode("h5", _hoisted_4, toDisplayString(unref(translate)(__props.loadingPrimary, { _: __props.loadingPrimary })), 1),
44
+ createElementVNode("p", _hoisted_5, toDisplayString(unref(translate)(__props.loadingSecondary, { _: __props.loadingSecondary })), 1)
44
45
  ])])) : createCommentVNode("", true);
45
46
  };
46
47
  }
@@ -17,7 +17,10 @@ var placeholder_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
17
17
  const props = __props;
18
18
  const classes = computed(() => cn("inline-flex bg-muted", props.class));
19
19
  return (_ctx, _cache) => {
20
- return openBlock(), createElementBlock("span", { class: normalizeClass(classes.value) }, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = createTextVNode("\xA0", -1))])], 2);
20
+ return openBlock(), createElementBlock("span", {
21
+ "data-slot": "placeholder",
22
+ class: normalizeClass(classes.value)
23
+ }, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = createTextVNode("\xA0", -1))])], 2);
21
24
  };
22
25
  }
23
26
  });
@@ -1,6 +1,6 @@
1
- import { type LooseRecord, type SourceKey, type SourceProp, type SourceValue } from "@chelone/core";
1
+ import { type LooseRecord, type ResourceRecord, type SourceKey, type SourceProp, type SourceValue } from "@chelone/core";
2
2
  /** Props for {@link ApiKeyField}. */
3
- export interface ApiKeyFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface ApiKeyFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  source: SourceProp<RecordType>;
5
5
  /** The record to render. Defaults to the ambient `RecordContext` value. */
6
6
  record?: RecordType;
@@ -21,7 +21,7 @@ export interface ApiKeyFieldProps<RecordType extends LooseRecord = LooseRecord>
21
21
  }
22
22
  declare const _default: typeof __VLS_export;
23
23
  export default _default;
24
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
24
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
25
25
  props: import("vue").PublicProps & __VLS_PrettifyLocal<ApiKeyFieldProps<RecordType>> & (typeof globalThis extends {
26
26
  __VLS_PROPS_FALLBACK: infer P;
27
27
  } ? P : {});
@@ -1,9 +1,9 @@
1
1
  import { cn } from "../../../lib/utils.js";
2
2
  import button_default from "../../ui/button.js";
3
- import { RecordContextKey } from "../../../record/record-context.js";
3
+ import { useRecordContextRef } from "../../../record/record-context.js";
4
4
  import { useFieldValue } from "../../../record/use-field-value.js";
5
- import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
6
- import { formatRelativeTime } from "@chelone/core";
5
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
6
+ import { formatRelativeTime, getAtPath } from "@chelone/core";
7
7
  // src/components/admin/fields/api-key-field.vue?vue&type=script&setup=true&lang.ts
8
8
  var _hoisted_1 = { class: "inline-flex items-center gap-2" };
9
9
  var _hoisted_2 = {
@@ -75,8 +75,7 @@ var api_key_field_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
75
75
  record: props.record,
76
76
  defaultValue: props.defaultValue
77
77
  });
78
- const injectedRecord = inject(RecordContextKey, null);
79
- const ctxRecord = computed(() => props.record ?? injectedRecord?.value);
78
+ const ctxRecord = useRecordContextRef(() => props.record);
80
79
  const revealed = ref(false);
81
80
  const copied = ref(false);
82
81
  const key = computed(() => value.value == null ? null : String(value.value));
@@ -87,13 +86,13 @@ var api_key_field_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
87
86
  const scopes = computed(() => {
88
87
  const rec = ctxRecord.value;
89
88
  if (!props.scopesSource || !rec) return void 0;
90
- const s = rec[props.scopesSource];
89
+ const s = getAtPath(rec, props.scopesSource);
91
90
  return Array.isArray(s) ? s.filter((scope) => typeof scope === "string") : void 0;
92
91
  });
93
92
  const lastUsed = computed(() => {
94
93
  const rec = ctxRecord.value;
95
94
  if (!props.lastUsedSource || !rec) return void 0;
96
- const l = rec[props.lastUsedSource];
95
+ const l = getAtPath(rec, props.lastUsedSource);
97
96
  return typeof l === "string" ? l : void 0;
98
97
  });
99
98
  async function handleCopy() {
@@ -1,6 +1,6 @@
1
- import type { FilterPayload, LooseRecord, SortPayload, SourceProp, SourceValue } from "@chelone/core";
1
+ import type { FilterPayload, LooseRecord, ResourceRecord, SortPayload, SourceProp, SourceValue } from "@chelone/core";
2
2
  /** Props for {@link ArrayField}. */
3
- export interface ArrayFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface ArrayFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  /** The field path to the array on the current record. */
5
5
  source: SourceProp<RecordType>;
6
6
  /** The record to read. Defaults to the ambient `RecordContext` value. */
@@ -16,7 +16,7 @@ export interface ArrayFieldProps<RecordType extends LooseRecord = LooseRecord> {
16
16
  }
17
17
  declare const _default: typeof __VLS_export;
18
18
  export default _default;
19
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
19
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
20
20
  props: import("vue").PublicProps & __VLS_PrettifyLocal<ArrayFieldProps<RecordType>> & (typeof globalThis extends {
21
21
  __VLS_PROPS_FALLBACK: infer P;
22
22
  } ? P : {});
@@ -1,14 +1,14 @@
1
- import type { LooseRecord } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord } from "@chelone/core";
2
2
  import type { BadgeVariant } from "../../ui/badge.js";
3
3
  import type { FieldProps } from "./field-props.js";
4
4
  /** Props for {@link BadgeField}. */
5
- export interface BadgeFieldProps<RecordType extends LooseRecord = LooseRecord> extends FieldProps<RecordType> {
5
+ export interface BadgeFieldProps<RecordType extends ResourceRecord = LooseRecord> extends FieldProps<RecordType> {
6
6
  /** Badge variant. Default `outline` (parity with the React twin). */
7
7
  variant?: BadgeVariant;
8
8
  }
9
9
  declare const _default: typeof __VLS_export;
10
10
  export default _default;
11
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
11
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
12
12
  props: import("vue").PublicProps & __VLS_PrettifyLocal<BadgeFieldProps<RecordType>> & (typeof globalThis extends {
13
13
  __VLS_PROPS_FALLBACK: infer P;
14
14
  } ? P : {});
@@ -1,6 +1,6 @@
1
- import type { LooseRecord, SourceProp, SourceValue } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord, SourceProp, SourceValue } from "@chelone/core";
2
2
  /** Props for {@link BooleanField}. */
3
- export interface BooleanFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface BooleanFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  source: SourceProp<RecordType>;
5
5
  record?: RecordType;
6
6
  defaultValue?: SourceValue<RecordType, SourceProp<RecordType>>;
@@ -15,7 +15,7 @@ export interface BooleanFieldProps<RecordType extends LooseRecord = LooseRecord>
15
15
  }
16
16
  declare const _default: typeof __VLS_export;
17
17
  export default _default;
18
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
18
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
19
19
  props: import("vue").PublicProps & __VLS_PrettifyLocal<BooleanFieldProps<RecordType>> & (typeof globalThis extends {
20
20
  __VLS_PROPS_FALLBACK: infer P;
21
21
  } ? P : {});
@@ -1,14 +1,14 @@
1
- import type { LooseRecord } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord } from "@chelone/core";
2
2
  import type { BadgeVariant } from "../../ui/badge.js";
3
3
  import type { FieldProps } from "./field-props.js";
4
4
  /** Props for {@link ChipField}. */
5
- export interface ChipFieldProps<RecordType extends LooseRecord = LooseRecord> extends FieldProps<RecordType> {
5
+ export interface ChipFieldProps<RecordType extends ResourceRecord = LooseRecord> extends FieldProps<RecordType> {
6
6
  /** Badge variant. Default `outline` (parity with the React twin). */
7
7
  variant?: BadgeVariant;
8
8
  }
9
9
  declare const _default: typeof __VLS_export;
10
10
  export default _default;
11
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
11
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
12
12
  props: import("vue").PublicProps & __VLS_PrettifyLocal<ChipFieldProps<RecordType>> & (typeof globalThis extends {
13
13
  __VLS_PROPS_FALLBACK: infer P;
14
14
  } ? P : {});
@@ -1,6 +1,6 @@
1
- import type { LooseRecord, SourceProp, SourceValue } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord, SourceProp, SourceValue } from "@chelone/core";
2
2
  /** Props for {@link ColorField}. */
3
- export interface ColorFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface ColorFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  source: SourceProp<RecordType>;
5
5
  record?: RecordType;
6
6
  defaultValue?: SourceValue<RecordType, SourceProp<RecordType>>;
@@ -11,7 +11,7 @@ export interface ColorFieldProps<RecordType extends LooseRecord = LooseRecord> {
11
11
  }
12
12
  declare const _default: typeof __VLS_export;
13
13
  export default _default;
14
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
14
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
15
15
  props: import("vue").PublicProps & __VLS_PrettifyLocal<ColorFieldProps<RecordType>> & (typeof globalThis extends {
16
16
  __VLS_PROPS_FALLBACK: infer P;
17
17
  } ? P : {});
@@ -1,6 +1,6 @@
1
- import type { LooseRecord, SourceProp, SourceValue } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord, SourceProp, SourceValue } from "@chelone/core";
2
2
  /** Props for {@link CronField}. */
3
- export interface CronFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface CronFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  source: SourceProp<RecordType>;
5
5
  record?: RecordType;
6
6
  defaultValue?: SourceValue<RecordType, SourceProp<RecordType>>;
@@ -11,7 +11,7 @@ export interface CronFieldProps<RecordType extends LooseRecord = LooseRecord> {
11
11
  }
12
12
  declare const _default: typeof __VLS_export;
13
13
  export default _default;
14
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
14
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
15
15
  props: import("vue").PublicProps & __VLS_PrettifyLocal<CronFieldProps<RecordType>> & (typeof globalThis extends {
16
16
  __VLS_PROPS_FALLBACK: infer P;
17
17
  } ? P : {});
@@ -1,6 +1,6 @@
1
- import type { LooseRecord, SourceProp, SourceValue } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord, SourceProp, SourceValue } from "@chelone/core";
2
2
  /** Props for {@link CurrencyField}. */
3
- export interface CurrencyFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface CurrencyFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  source: SourceProp<RecordType>;
5
5
  record?: RecordType;
6
6
  defaultValue?: SourceValue<RecordType, SourceProp<RecordType>>;
@@ -17,7 +17,7 @@ export interface CurrencyFieldProps<RecordType extends LooseRecord = LooseRecord
17
17
  }
18
18
  declare const _default: typeof __VLS_export;
19
19
  export default _default;
20
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
20
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
21
21
  props: import("vue").PublicProps & __VLS_PrettifyLocal<CurrencyFieldProps<RecordType>> & (typeof globalThis extends {
22
22
  __VLS_PROPS_FALLBACK: infer P;
23
23
  } ? P : {});
@@ -1,6 +1,6 @@
1
- import type { LooseRecord, SourceProp, SourceValue } from "@chelone/core";
1
+ import type { LooseRecord, ResourceRecord, SourceProp, SourceValue } from "@chelone/core";
2
2
  /** Props for {@link DateField}. */
3
- export interface DateFieldProps<RecordType extends LooseRecord = LooseRecord> {
3
+ export interface DateFieldProps<RecordType extends ResourceRecord = LooseRecord> {
4
4
  source: SourceProp<RecordType>;
5
5
  record?: RecordType;
6
6
  defaultValue?: SourceValue<RecordType, SourceProp<RecordType>>;
@@ -18,7 +18,7 @@ export interface DateFieldProps<RecordType extends LooseRecord = LooseRecord> {
18
18
  }
19
19
  declare const _default: typeof __VLS_export;
20
20
  export default _default;
21
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
21
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
22
22
  props: import("vue").PublicProps & __VLS_PrettifyLocal<DateFieldProps<RecordType>> & (typeof globalThis extends {
23
23
  __VLS_PROPS_FALLBACK: infer P;
24
24
  } ? P : {});
@@ -1,9 +1,9 @@
1
1
  import { type VNode } from "vue";
2
- import type { LooseRecord, SourceProp } from "@chelone/core";
2
+ import type { LooseRecord, ResourceRecord, SourceProp } from "@chelone/core";
3
3
  /** Table (`side-by-side`, the default) or list (`inline`). */
4
4
  export type DiffViewerMode = "side-by-side" | "inline";
5
5
  /** Props for {@link DiffViewer}. */
6
- export interface DiffViewerProps<RecordType extends LooseRecord = LooseRecord> {
6
+ export interface DiffViewerProps<RecordType extends ResourceRecord = LooseRecord> {
7
7
  /** The earlier version. */
8
8
  before: RecordType;
9
9
  /** The later version. */
@@ -20,7 +20,7 @@ export interface DiffViewerProps<RecordType extends LooseRecord = LooseRecord> {
20
20
  }
21
21
  declare const _default: typeof __VLS_export;
22
22
  export default _default;
23
- declare const __VLS_export: <RecordType extends LooseRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
23
+ declare const __VLS_export: <RecordType extends ResourceRecord = LooseRecord>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
24
24
  props: import("vue").PublicProps & __VLS_PrettifyLocal<DiffViewerProps<RecordType>> & (typeof globalThis extends {
25
25
  __VLS_PROPS_FALLBACK: infer P;
26
26
  } ? P : {});