@mulmoclaude/collection-plugin 0.5.9 → 0.5.11

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.
package/dist/vue.js CHANGED
@@ -60,6 +60,7 @@ var i18n = createI18n({
60
60
  chat: "Chat",
61
61
  refreshFeed: "Refresh",
62
62
  refreshFailed: "Refresh failed: {error}",
63
+ refreshDispatched: "Refresh started in the background.",
63
64
  feedChatSeed: "The \"{slug}\" feed is defined by the schema at `feeds/{slug}/schema.json` and its records live in `{dataPath}/` (one `<id>.json` per record). Using that schema and data, respond to this request: {message}",
64
65
  feedsTitle: "Data-source feeds",
65
66
  feedsEmpty: "No feeds registered yet.",
@@ -163,6 +164,7 @@ var i18n = createI18n({
163
164
  chat: "チャット",
164
165
  refreshFeed: "更新",
165
166
  refreshFailed: "更新に失敗しました: {error}",
167
+ refreshDispatched: "バックグラウンドで更新を開始しました。",
166
168
  feedChatSeed: "フィード「{slug}」はスキーマ `feeds/{slug}/schema.json` で定義され、レコードは `{dataPath}/`(1 レコードにつき `<id>.json` 1 ファイル)に保存されています。このスキーマとデータを使って、次のリクエストに応えてください: {message}",
167
169
  feedsTitle: "データソースフィード",
168
170
  feedsEmpty: "登録されたフィードはありません。",
@@ -266,6 +268,7 @@ var i18n = createI18n({
266
268
  chat: "对话",
267
269
  refreshFeed: "刷新",
268
270
  refreshFailed: "刷新失败:{error}",
271
+ refreshDispatched: "已在后台开始刷新。",
269
272
  feedChatSeed: "订阅源“{slug}”由 schema `feeds/{slug}/schema.json` 定义,其记录保存在 `{dataPath}/`(每条记录一个 `<id>.json` 文件)。请使用该 schema 和数据来响应以下请求:{message}",
270
273
  feedsTitle: "数据源订阅",
271
274
  feedsEmpty: "尚未注册任何订阅源。",
@@ -369,6 +372,7 @@ var i18n = createI18n({
369
372
  chat: "채팅",
370
373
  refreshFeed: "새로고침",
371
374
  refreshFailed: "새로고침 실패: {error}",
375
+ refreshDispatched: "백그라운드에서 새로고침을 시작했습니다.",
372
376
  feedChatSeed: "“{slug}” 피드는 스키마 `feeds/{slug}/schema.json`로 정의되며, 레코드는 `{dataPath}/`(레코드당 `<id>.json` 파일 하나)에 저장됩니다. 이 스키마와 데이터를 사용하여 다음 요청에 응답하세요: {message}",
373
377
  feedsTitle: "데이터 소스 피드",
374
378
  feedsEmpty: "등록된 피드가 없습니다.",
@@ -472,6 +476,7 @@ var i18n = createI18n({
472
476
  chat: "Chat",
473
477
  refreshFeed: "Actualizar",
474
478
  refreshFailed: "Error al actualizar: {error}",
479
+ refreshDispatched: "Actualización iniciada en segundo plano.",
475
480
  feedChatSeed: "El feed «{slug}» está definido por el esquema `feeds/{slug}/schema.json` y sus registros se guardan en `{dataPath}/` (un archivo `<id>.json` por registro). Usa ese esquema y esos datos para responder a esta solicitud: {message}",
476
481
  feedsTitle: "Fuentes de datos",
477
482
  feedsEmpty: "Aún no hay fuentes registradas.",
@@ -575,6 +580,7 @@ var i18n = createI18n({
575
580
  chat: "Chat",
576
581
  refreshFeed: "Atualizar",
577
582
  refreshFailed: "Falha ao atualizar: {error}",
583
+ refreshDispatched: "Atualização iniciada em segundo plano.",
578
584
  feedChatSeed: "O feed \"{slug}\" é definido pelo esquema `feeds/{slug}/schema.json` e seus registros ficam em `{dataPath}/` (um arquivo `<id>.json` por registro). Use esse esquema e esses dados para responder a esta solicitação: {message}",
579
585
  feedsTitle: "Feeds de dados",
580
586
  feedsEmpty: "Nenhum feed registrado ainda.",
@@ -678,6 +684,7 @@ var i18n = createI18n({
678
684
  chat: "Discussion",
679
685
  refreshFeed: "Actualiser",
680
686
  refreshFailed: "Échec de l'actualisation : {error}",
687
+ refreshDispatched: "Actualisation lancée en arrière-plan.",
681
688
  feedChatSeed: "Le flux « {slug} » est défini par le schéma `feeds/{slug}/schema.json` et ses enregistrements se trouvent dans `{dataPath}/` (un fichier `<id>.json` par enregistrement). Utilise ce schéma et ces données pour répondre à cette demande : {message}",
682
689
  feedsTitle: "Flux de données",
683
690
  feedsEmpty: "Aucun flux enregistré pour le moment.",
@@ -781,6 +788,7 @@ var i18n = createI18n({
781
788
  chat: "Chat",
782
789
  refreshFeed: "Aktualisieren",
783
790
  refreshFailed: "Aktualisierung fehlgeschlagen: {error}",
791
+ refreshDispatched: "Aktualisierung im Hintergrund gestartet.",
784
792
  feedChatSeed: "Der Feed {slug} ist durch das Schema `feeds/{slug}/schema.json` definiert und seine Datensätze liegen in `{dataPath}/` (eine `<id>.json`-Datei pro Datensatz). Nutze dieses Schema und diese Daten, um auf die folgende Anfrage zu antworten: {message}",
785
793
  feedsTitle: "Datenquellen-Feeds",
786
794
  feedsEmpty: "Noch keine Feeds registriert.",
@@ -1242,7 +1250,7 @@ var CollectionDayView_default = /* @__PURE__ */ defineComponent({
1242
1250
  return `${String(hour).padStart(2, "0")}:00`;
1243
1251
  }
1244
1252
  const labelField = computed(() => labelFieldFor(props.schema));
1245
- const CHIP_SKIP_TYPES = new Set([
1253
+ const CHIP_SKIP_TYPES = /* @__PURE__ */ new Set([
1246
1254
  "date",
1247
1255
  "datetime",
1248
1256
  "table",
@@ -1906,7 +1914,7 @@ var _hoisted_74$1 = ["disabled"];
1906
1914
  //#region src/vue/components/CollectionRecordPanel.vue
1907
1915
  var CollectionRecordPanel_default = /* @__PURE__ */ defineComponent({
1908
1916
  __name: "CollectionRecordPanel",
1909
- props: /* @__PURE__ */ mergeModels({
1917
+ props: /*@__PURE__*/ mergeModels({
1910
1918
  collection: {},
1911
1919
  viewing: {},
1912
1920
  saving: { type: Boolean },
@@ -1924,7 +1932,7 @@ var CollectionRecordPanel_default = /* @__PURE__ */ defineComponent({
1924
1932
  "editing": { required: true },
1925
1933
  "editingModifiers": {}
1926
1934
  }),
1927
- emits: /* @__PURE__ */ mergeModels([
1935
+ emits: /*@__PURE__*/ mergeModels([
1928
1936
  "submit",
1929
1937
  "cancel",
1930
1938
  "edit",
@@ -2427,7 +2435,7 @@ var _hoisted_3$4 = {
2427
2435
  var _hoisted_4$4 = ["title", "srcdoc"];
2428
2436
  var REMINT_LEAD_MS = 6e4;
2429
2437
  var MIN_REMINT_DELAY_MS = 1e4;
2430
- var CollectionCustomView_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
2438
+ var CollectionCustomView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
2431
2439
  __name: "CollectionCustomView",
2432
2440
  props: {
2433
2441
  slug: {},
@@ -2556,7 +2564,7 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
2556
2564
  };
2557
2565
  //#endregion
2558
2566
  //#region src/vue/components/CollectionCustomView.vue
2559
- var CollectionCustomView_default = /* @__PURE__ */ _plugin_vue_export_helper_default(CollectionCustomView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-aa6e6c2d"]]);
2567
+ var CollectionCustomView_default = /*#__PURE__*/ _plugin_vue_export_helper_default(CollectionCustomView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-aa6e6c2d"]]);
2560
2568
  //#endregion
2561
2569
  //#region src/vue/useCollectionRendering.ts
2562
2570
  function stepForFieldType(type) {
@@ -2612,7 +2620,7 @@ function useCollectionRendering(collection, locale) {
2612
2620
  async function loadLinkedCollections(schema, expectedSlug) {
2613
2621
  const refTargets = new Set(uniqueRefTargets(schema));
2614
2622
  const embedTargets = new Set(uniqueEmbedTargets(schema));
2615
- const allTargets = [...new Set([...refTargets, ...embedTargets])];
2623
+ const allTargets = [.../* @__PURE__ */ new Set([...refTargets, ...embedTargets])];
2616
2624
  if (allTargets.length === 0) return;
2617
2625
  const binding = collectionUi();
2618
2626
  const results = await Promise.all(allTargets.map(async (target) => {
@@ -2817,6 +2825,24 @@ function useCollectionRendering(collection, locale) {
2817
2825
  }
2818
2826
  //#endregion
2819
2827
  //#region src/vue/collectionViewMode.ts
2828
+ /** Build the `custom:<id>` selector key for a custom view. */
2829
+ function customViewKey(viewId) {
2830
+ return `custom:${viewId}`;
2831
+ }
2832
+ /** Every view mode a schema can render, in selector order: `table`
2833
+ * always, `calendar` when a `date`/`datetime` field exists, `kanban`
2834
+ * when an `enum` field exists, then each declared custom view. Mirrors
2835
+ * the field-derived gating inside `CollectionView` (hasCalendar /
2836
+ * hasKanban / customViews) so callers outside that component — e.g. the
2837
+ * dashboard's per-tile view picker — offer exactly the same choices. */
2838
+ function applicableViewModes(schema) {
2839
+ const modes = ["table"];
2840
+ const fields = Object.values(schema.fields);
2841
+ if (fields.some((field) => field.type === "date" || field.type === "datetime")) modes.push("calendar");
2842
+ if (fields.some((field) => field.type === "enum")) modes.push("kanban");
2843
+ for (const view of schema.views ?? []) modes.push(customViewKey(view.id));
2844
+ return modes;
2845
+ }
2820
2846
  var STORAGE_KEY = "collection_view_modes";
2821
2847
  var SORT_STORAGE_KEY = "collection_sorts";
2822
2848
  var BUILT_IN_MODES = [
@@ -2885,7 +2911,10 @@ function writeCollectionSort(slug, sort) {
2885
2911
  //#endregion
2886
2912
  //#region src/vue/components/CollectionView.vue?vue&type=script&setup=true&lang.ts
2887
2913
  var _hoisted_1$4 = { class: "h-full flex flex-col bg-slate-50/30" };
2888
- var _hoisted_2$3 = { class: "flex items-center gap-3 px-6 py-2 border-b border-slate-200 bg-white" };
2914
+ var _hoisted_2$3 = {
2915
+ key: 0,
2916
+ class: "flex items-center gap-3 px-6 py-2 border-b border-slate-200 bg-white"
2917
+ };
2889
2918
  var _hoisted_3$3 = ["title", "aria-label"];
2890
2919
  var _hoisted_4$3 = {
2891
2920
  key: 1,
@@ -2912,186 +2941,192 @@ var _hoisted_12$2 = {
2912
2941
  var _hoisted_13$2 = ["title", "aria-label"];
2913
2942
  var _hoisted_14$2 = ["title", "aria-label"];
2914
2943
  var _hoisted_15$2 = {
2915
- key: 0,
2944
+ key: 1,
2945
+ class: "mx-6 mt-2 rounded-lg border border-indigo-200 bg-indigo-50/60 px-4 py-2 text-sm text-indigo-800 flex items-center gap-2",
2946
+ "data-testid": "collections-refresh-note"
2947
+ };
2948
+ var _hoisted_16$1 = { class: "flex-1" };
2949
+ var _hoisted_17$1 = {
2950
+ key: 2,
2916
2951
  class: "px-6 py-3 bg-white border-b border-slate-100 flex items-center justify-between gap-4"
2917
2952
  };
2918
- var _hoisted_16$1 = {
2953
+ var _hoisted_18$1 = {
2919
2954
  key: 0,
2920
2955
  class: "relative flex-1 max-w-md"
2921
2956
  };
2922
- var _hoisted_17$1 = ["placeholder", "aria-label"];
2923
- var _hoisted_18$1 = ["aria-label"];
2924
- var _hoisted_19$1 = { class: "flex items-center gap-2" };
2957
+ var _hoisted_19$1 = ["placeholder", "aria-label"];
2925
2958
  var _hoisted_20$1 = ["aria-label"];
2926
- var _hoisted_21$1 = ["aria-pressed"];
2927
- var _hoisted_22$1 = ["aria-pressed"];
2959
+ var _hoisted_21$1 = { class: "flex items-center gap-2" };
2960
+ var _hoisted_22$1 = ["aria-label"];
2928
2961
  var _hoisted_23$1 = ["aria-pressed"];
2929
- var _hoisted_24 = [
2962
+ var _hoisted_24 = ["aria-pressed"];
2963
+ var _hoisted_25 = ["aria-pressed"];
2964
+ var _hoisted_26 = [
2930
2965
  "aria-pressed",
2931
2966
  "data-testid",
2932
2967
  "onClick"
2933
2968
  ];
2934
- var _hoisted_25 = { class: "material-icons text-sm" };
2935
- var _hoisted_26 = ["title", "aria-label"];
2936
- var _hoisted_27 = ["title", "aria-label"];
2937
- var _hoisted_28 = ["value", "aria-label"];
2938
- var _hoisted_29 = ["value"];
2969
+ var _hoisted_27 = { class: "material-icons text-sm" };
2970
+ var _hoisted_28 = ["title", "aria-label"];
2971
+ var _hoisted_29 = ["title", "aria-label"];
2939
2972
  var _hoisted_30 = ["value", "aria-label"];
2940
2973
  var _hoisted_31 = ["value"];
2941
- var _hoisted_32 = {
2974
+ var _hoisted_32 = ["value", "aria-label"];
2975
+ var _hoisted_33 = ["value"];
2976
+ var _hoisted_34 = {
2942
2977
  key: 3,
2943
2978
  class: "text-[10px] text-slate-400 font-bold uppercase tracking-wider select-none"
2944
2979
  };
2945
- var _hoisted_33 = {
2946
- key: 1,
2980
+ var _hoisted_35 = {
2981
+ key: 3,
2947
2982
  class: "mx-6 mt-4 rounded-xl border border-amber-200 bg-amber-50/60 p-4 text-sm text-amber-900 shadow-sm flex items-center gap-3",
2948
2983
  "data-testid": "collections-data-issues"
2949
2984
  };
2950
- var _hoisted_34 = { class: "flex-1" };
2951
- var _hoisted_35 = { class: "flex-1 overflow-auto" };
2952
- var _hoisted_36 = {
2985
+ var _hoisted_36 = { class: "flex-1" };
2986
+ var _hoisted_37 = { class: "flex-1 overflow-auto" };
2987
+ var _hoisted_38 = {
2953
2988
  key: 0,
2954
2989
  class: "flex flex-col items-center justify-center py-20 text-sm text-slate-500 gap-3"
2955
2990
  };
2956
- var _hoisted_37 = {
2991
+ var _hoisted_39 = {
2957
2992
  key: 1,
2958
2993
  class: "m-6 rounded-xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-800 shadow-sm flex items-center gap-3"
2959
2994
  };
2960
- var _hoisted_38 = { key: 2 };
2961
- var _hoisted_39 = {
2995
+ var _hoisted_40 = { key: 2 };
2996
+ var _hoisted_41 = {
2962
2997
  key: 3,
2963
2998
  class: "p-4"
2964
2999
  };
2965
- var _hoisted_40 = {
3000
+ var _hoisted_42 = {
2966
3001
  key: 4,
2967
3002
  class: "h-full flex flex-col"
2968
3003
  };
2969
- var _hoisted_41 = {
3004
+ var _hoisted_43 = {
2970
3005
  key: 0,
2971
3006
  class: "m-3 mb-0 rounded-xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-800 shadow-sm flex items-center gap-3",
2972
3007
  "data-testid": "collections-inline-error"
2973
3008
  };
2974
- var _hoisted_42 = { class: "flex-1" };
2975
- var _hoisted_43 = ["aria-label"];
2976
- var _hoisted_44 = { class: "flex-1 min-h-0 px-3 py-2" };
2977
- var _hoisted_45 = {
3009
+ var _hoisted_44 = { class: "flex-1" };
3010
+ var _hoisted_45 = ["aria-label"];
3011
+ var _hoisted_46 = { class: "flex-1 min-h-0 px-3 py-2" };
3012
+ var _hoisted_47 = {
2978
3013
  key: 5,
2979
3014
  class: "h-full",
2980
3015
  "data-testid": "collection-custom-view-body"
2981
3016
  };
2982
- var _hoisted_46 = {
3017
+ var _hoisted_48 = {
2983
3018
  key: 6,
2984
3019
  class: "flex flex-col items-center justify-center py-20 text-sm text-slate-400 gap-2"
2985
3020
  };
2986
- var _hoisted_47 = { class: "font-semibold text-slate-600" };
2987
- var _hoisted_48 = {
3021
+ var _hoisted_49 = { class: "font-semibold text-slate-600" };
3022
+ var _hoisted_50 = {
2988
3023
  key: 7,
2989
3024
  class: "flex flex-col items-center justify-center py-20 text-sm text-slate-400 gap-2"
2990
3025
  };
2991
- var _hoisted_49 = { class: "font-semibold text-slate-600" };
2992
- var _hoisted_50 = {
3026
+ var _hoisted_51 = { class: "font-semibold text-slate-600" };
3027
+ var _hoisted_52 = {
2993
3028
  key: 8,
2994
3029
  class: "overflow-x-auto [container-type:inline-size]"
2995
3030
  };
2996
- var _hoisted_51 = {
3031
+ var _hoisted_53 = {
2997
3032
  key: 0,
2998
3033
  class: "m-4 rounded-xl border border-red-200 bg-red-50/50 p-4 text-sm text-red-800 shadow-sm flex items-center gap-3",
2999
3034
  "data-testid": "collections-inline-error"
3000
3035
  };
3001
- var _hoisted_52 = { class: "flex-1" };
3002
- var _hoisted_53 = ["aria-label"];
3003
- var _hoisted_54 = { class: "min-w-full text-xs" };
3004
- var _hoisted_55 = { class: "bg-slate-50 border-b border-slate-200" };
3005
- var _hoisted_56 = ["aria-sort"];
3006
- var _hoisted_57 = { class: "flex items-center gap-1" };
3007
- var _hoisted_58 = ["title"];
3008
- var _hoisted_59 = [
3036
+ var _hoisted_54 = { class: "flex-1" };
3037
+ var _hoisted_55 = ["aria-label"];
3038
+ var _hoisted_56 = { class: "min-w-full text-xs" };
3039
+ var _hoisted_57 = { class: "bg-slate-50 border-b border-slate-200" };
3040
+ var _hoisted_58 = ["aria-sort"];
3041
+ var _hoisted_59 = { class: "flex items-center gap-1" };
3042
+ var _hoisted_60 = ["title"];
3043
+ var _hoisted_61 = [
3009
3044
  "data-testid",
3010
3045
  "aria-label",
3011
3046
  "onClick",
3012
3047
  "onPointerenter"
3013
3048
  ];
3014
- var _hoisted_60 = { class: "material-icons text-base align-middle" };
3015
- var _hoisted_61 = { class: "divide-y divide-slate-100 bg-white" };
3016
- var _hoisted_62 = [
3049
+ var _hoisted_62 = { class: "material-icons text-base align-middle" };
3050
+ var _hoisted_63 = { class: "divide-y divide-slate-100 bg-white" };
3051
+ var _hoisted_64 = [
3017
3052
  "aria-label",
3018
3053
  "data-testid",
3019
3054
  "onClick",
3020
3055
  "onKeydown"
3021
3056
  ];
3022
- var _hoisted_63 = [
3057
+ var _hoisted_65 = [
3023
3058
  "checked",
3024
3059
  "disabled",
3025
3060
  "data-testid",
3026
3061
  "aria-label",
3027
3062
  "onChange"
3028
3063
  ];
3029
- var _hoisted_64 = [
3064
+ var _hoisted_66 = [
3030
3065
  "checked",
3031
3066
  "disabled",
3032
3067
  "data-testid",
3033
3068
  "aria-label",
3034
3069
  "onChange"
3035
3070
  ];
3036
- var _hoisted_65 = {
3071
+ var _hoisted_67 = {
3037
3072
  key: 2,
3038
3073
  class: "block truncate"
3039
3074
  };
3040
- var _hoisted_66 = [
3075
+ var _hoisted_68 = [
3041
3076
  "href",
3042
3077
  "tabindex",
3043
3078
  "data-testid",
3044
3079
  "onClick",
3045
3080
  "onKeydown"
3046
3081
  ];
3047
- var _hoisted_67 = [
3082
+ var _hoisted_69 = [
3048
3083
  "value",
3049
3084
  "disabled",
3050
3085
  "data-testid",
3051
3086
  "aria-label",
3052
3087
  "onChange"
3053
3088
  ];
3054
- var _hoisted_68 = {
3089
+ var _hoisted_70 = {
3055
3090
  key: 0,
3056
3091
  value: ""
3057
3092
  };
3058
- var _hoisted_69 = ["value"];
3059
- var _hoisted_70 = {
3093
+ var _hoisted_71 = ["value"];
3094
+ var _hoisted_72 = {
3060
3095
  key: 4,
3061
3096
  class: "block truncate tabular-nums font-semibold text-slate-900"
3062
3097
  };
3063
- var _hoisted_71 = {
3098
+ var _hoisted_73 = {
3064
3099
  key: 5,
3065
3100
  class: "inline-flex items-center gap-1 px-2 py-0.5 rounded-lg text-[10px] font-bold bg-slate-100 text-slate-600 border border-slate-200/40"
3066
3101
  };
3067
- var _hoisted_72 = {
3102
+ var _hoisted_74 = {
3068
3103
  key: 6,
3069
3104
  class: "inline-block truncate tabular-nums font-bold text-indigo-900 bg-indigo-50/50 px-1.5 py-0.5 rounded border border-indigo-100/50"
3070
3105
  };
3071
- var _hoisted_73 = ["href", "data-testid"];
3072
- var _hoisted_74 = ["href", "data-testid"];
3073
- var _hoisted_75 = [
3106
+ var _hoisted_75 = ["href", "data-testid"];
3107
+ var _hoisted_76 = ["href", "data-testid"];
3108
+ var _hoisted_77 = [
3074
3109
  "href",
3075
3110
  "data-testid",
3076
3111
  "onClick"
3077
3112
  ];
3078
- var _hoisted_76 = {
3113
+ var _hoisted_78 = {
3079
3114
  key: 10,
3080
3115
  class: "block truncate text-slate-600"
3081
3116
  };
3082
- var _hoisted_77 = { class: "bg-white rounded-2xl shadow-2xl w-full max-w-xl flex flex-col border border-slate-200 overflow-hidden" };
3083
- var _hoisted_78 = { class: "px-6 py-4 border-b border-slate-100 flex items-center gap-3 bg-slate-50/50" };
3084
- var _hoisted_79 = { class: "flex-1" };
3085
- var _hoisted_80 = {
3117
+ var _hoisted_79 = { class: "bg-white rounded-2xl shadow-2xl w-full max-w-xl flex flex-col border border-slate-200 overflow-hidden" };
3118
+ var _hoisted_80 = { class: "px-6 py-4 border-b border-slate-100 flex items-center gap-3 bg-slate-50/50" };
3119
+ var _hoisted_81 = { class: "flex-1" };
3120
+ var _hoisted_82 = {
3086
3121
  id: "collections-chat-title",
3087
3122
  class: "text-sm font-bold text-slate-800 uppercase tracking-wide"
3088
3123
  };
3089
- var _hoisted_81 = { class: "text-xs text-slate-400 font-semibold" };
3090
- var _hoisted_82 = ["aria-label"];
3091
- var _hoisted_83 = { class: "px-6 py-5" };
3092
- var _hoisted_84 = ["placeholder", "onKeydown"];
3093
- var _hoisted_85 = { class: "px-6 py-3.5 border-t border-slate-100 flex items-center justify-end gap-2 bg-slate-50/50" };
3094
- var _hoisted_86 = ["disabled"];
3124
+ var _hoisted_83 = { class: "text-xs text-slate-400 font-semibold" };
3125
+ var _hoisted_84 = ["aria-label"];
3126
+ var _hoisted_85 = { class: "px-6 py-5" };
3127
+ var _hoisted_86 = ["placeholder", "onKeydown"];
3128
+ var _hoisted_87 = { class: "px-6 py-3.5 border-t border-slate-100 flex items-center justify-end gap-2 bg-slate-50/50" };
3129
+ var _hoisted_88 = ["disabled"];
3095
3130
  /** `slug` / `selected` are supplied only in EMBEDDED mode (the
3096
3131
  * `presentCollection` chat card mounts this component and drives both
3097
3132
  * from the tool result). In standalone route mode (the
@@ -3113,7 +3148,10 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3113
3148
  sendTextMessage: { type: Function },
3114
3149
  initialView: {},
3115
3150
  initialAnchorField: {},
3116
- initialGroupField: {}
3151
+ initialGroupField: {},
3152
+ hideViewToggle: { type: Boolean },
3153
+ hideHeader: { type: Boolean },
3154
+ hideSearch: { type: Boolean }
3117
3155
  },
3118
3156
  emits: ["select", "viewStateChange"],
3119
3157
  setup(__props, { emit: __emit }) {
@@ -3151,6 +3189,11 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3151
3189
  });
3152
3190
  /** True while a feed collection's manual refresh is in flight. */
3153
3191
  const refreshing = ref(false);
3192
+ /** Transient note shown after an agent-ingest Refresh dispatches a background
3193
+ * worker (records update asynchronously, so there's nothing to show inline).
3194
+ * Auto-clears; `refreshNoteTimer` cancels a pending clear on re-trigger. */
3195
+ const refreshNote = ref(null);
3196
+ let refreshNoteTimer;
3154
3197
  /** Slug already auto-refreshed on first open — prevents a reload loop
3155
3198
  * (the auto-refresh reloads the view, which would re-trigger otherwise). */
3156
3199
  const autoRefreshedSlug = ref(null);
@@ -3333,7 +3376,21 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3333
3376
  return;
3334
3377
  }
3335
3378
  await loadCollection(current.slug);
3336
- if (result.data.errors.length > 0) inlineError.value = t("collectionsView.refreshFailed", { error: result.data.errors.join("; ") });
3379
+ if (result.data.errors.length > 0) {
3380
+ inlineError.value = t("collectionsView.refreshFailed", { error: result.data.errors.join("; ") });
3381
+ return;
3382
+ }
3383
+ if (result.data.dispatched) if (result.data.chatId && cui.navigate) cui.navigate(`/chat/${result.data.chatId}`);
3384
+ else showRefreshNote(t("collectionsView.refreshDispatched"));
3385
+ }
3386
+ /** Show a transient refresh note, replacing any pending auto-clear. */
3387
+ function showRefreshNote(message) {
3388
+ refreshNote.value = message;
3389
+ if (refreshNoteTimer !== void 0) clearTimeout(refreshNoteTimer);
3390
+ refreshNoteTimer = setTimeout(() => {
3391
+ refreshNote.value = null;
3392
+ refreshNoteTimer = void 0;
3393
+ }, 6e3);
3337
3394
  }
3338
3395
  /** Collection-level header actions. No `when` predicate (no record). */
3339
3396
  const collectionActions = computed(() => collection.value?.schema.collectionActions ?? []);
@@ -3426,11 +3483,11 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3426
3483
  * (`feeds/<slug>/schema.json` and `<dataPath>/`) and let it act on the
3427
3484
  * request directly. */
3428
3485
  function buildChatSeed(slug, message, itemId) {
3429
- const schema = collection.value?.schema;
3430
- if (!schema?.ingest) return itemId ? `/${slug} id=${itemId} ${message}` : `/${slug} ${message}`;
3486
+ const current = collection.value;
3487
+ if (current?.source !== "feed") return itemId ? `/${slug} id=${itemId} ${message}` : `/${slug} ${message}`;
3431
3488
  return t("collectionsView.feedChatSeed", {
3432
3489
  slug,
3433
- dataPath: schema.dataPath ?? `data/feeds/${slug}`,
3490
+ dataPath: current.schema.dataPath ?? `data/feeds/${slug}`,
3434
3491
  message: itemId ? `(for record \`${itemId}\`) ${message}` : message
3435
3492
  });
3436
3493
  }
@@ -3514,7 +3571,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3514
3571
  function maybeAutoRefreshFeed(slug) {
3515
3572
  if (embedded.value) return;
3516
3573
  const current = collection.value;
3517
- if (current?.slug !== slug || !current.schema.ingest) return;
3574
+ if (current?.slug !== slug || current.source !== "feed") return;
3518
3575
  if (items.value.length > 0 || autoRefreshedSlug.value === slug) return;
3519
3576
  autoRefreshedSlug.value = slug;
3520
3577
  refreshFeed();
@@ -3538,7 +3595,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3538
3595
  if (!current) return false;
3539
3596
  return current.source === "project" && !current.slug.startsWith("mc-");
3540
3597
  });
3541
- const isFeed = computed(() => Boolean(collection.value?.schema.ingest));
3598
+ const isFeed = computed(() => collection.value?.source === "feed");
3542
3599
  const canDeleteFeed = computed(() => isFeed.value && !embedded.value);
3543
3600
  const isFeedRoute = computed(() => !embedded.value && cui.isFeedRoute());
3544
3601
  /** The view to open with: the embedded card's restored `initialView` if
@@ -3601,7 +3658,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3601
3658
  function addCustomView() {
3602
3659
  const current = collection.value;
3603
3660
  if (!current) return;
3604
- const base = current.schema.ingest ? `feeds/${current.slug}` : `data/skills/${current.slug}`;
3661
+ const base = current.source === "feed" ? `feeds/${current.slug}` : `data/skills/${current.slug}`;
3605
3662
  const prompt = t("collectionsView.addViewPrompt", {
3606
3663
  title: current.title,
3607
3664
  base
@@ -3659,10 +3716,6 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
3659
3716
  function setCustomView(viewId) {
3660
3717
  view.value = `custom:${viewId}`;
3661
3718
  }
3662
- /** Selector-key for a custom view, for active-state comparison in the template. */
3663
- function customViewKey(viewId) {
3664
- return `custom:${viewId}`;
3665
- }
3666
3719
  /** A short, slug-safe id not already used by a loaded record. Collisions
3667
3720
  * are astronomically unlikely (32 bits), but we still re-roll a few
3668
3721
  * times against the in-memory set before giving up and using the last
@@ -4140,6 +4193,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4140
4193
  changeUnsub?.();
4141
4194
  changeUnsub = null;
4142
4195
  clearLiveRefreshTimer();
4196
+ if (refreshNoteTimer !== void 0) clearTimeout(refreshNoteTimer);
4143
4197
  });
4144
4198
  watch([
4145
4199
  activeView,
@@ -4165,7 +4219,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4165
4219
  });
4166
4220
  return (_ctx, _cache) => {
4167
4221
  return openBlock(), createElementBlock("div", _hoisted_1$4, [
4168
- createElementVNode("header", _hoisted_2$3, [
4222
+ !__props.hideHeader ? (openBlock(), createElementBlock("header", _hoisted_2$3, [
4169
4223
  !embedded.value ? (openBlock(), createElementBlock("button", {
4170
4224
  key: 0,
4171
4225
  type: "button",
@@ -4239,25 +4293,26 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4239
4293
  "data-testid": "feeds-delete",
4240
4294
  onClick: confirmFeedDelete
4241
4295
  }, [..._cache[27] || (_cache[27] = [createElementVNode("span", { class: "material-icons text-sm" }, "delete_forever", -1)])], 8, _hoisted_14$2)) : createCommentVNode("", true)
4242
- ]),
4243
- collection.value && (items.value.length > 0 || hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value) ? (openBlock(), createElementBlock("div", _hoisted_15$2, [items.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_16$1, [
4244
- _cache[29] || (_cache[29] = createElementVNode("span", { class: "absolute inset-y-0 left-0 flex items-center pl-3 text-slate-400 pointer-events-none" }, [createElementVNode("span", { class: "material-icons text-lg" }, "search")], -1)),
4296
+ ])) : createCommentVNode("", true),
4297
+ refreshNote.value ? (openBlock(), createElementBlock("div", _hoisted_15$2, [_cache[28] || (_cache[28] = createElementVNode("span", { class: "material-icons text-base text-indigo-600" }, "hourglass_top", -1)), createElementVNode("span", _hoisted_16$1, toDisplayString(refreshNote.value), 1)])) : createCommentVNode("", true),
4298
+ collection.value && (!__props.hideSearch && items.value.length > 0 || !__props.hideViewToggle && (hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value)) ? (openBlock(), createElementBlock("div", _hoisted_17$1, [!__props.hideSearch && items.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_18$1, [
4299
+ _cache[30] || (_cache[30] = createElementVNode("span", { class: "absolute inset-y-0 left-0 flex items-center pl-3 text-slate-400 pointer-events-none" }, [createElementVNode("span", { class: "material-icons text-lg" }, "search")], -1)),
4245
4300
  withDirectives(createElementVNode("input", {
4246
4301
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
4247
4302
  type: "text",
4248
4303
  placeholder: unref(t)("collectionsView.searchPlaceholder"),
4249
4304
  "aria-label": unref(t)("collectionsView.searchPlaceholder"),
4250
4305
  class: "w-full bg-slate-50 border border-slate-200/80 rounded-xl pl-9 pr-8 py-1.5 text-xs placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 focus:bg-white transition-all font-medium"
4251
- }, null, 8, _hoisted_17$1), [[vModelText, searchQuery.value]]),
4306
+ }, null, 8, _hoisted_19$1), [[vModelText, searchQuery.value]]),
4252
4307
  searchQuery.value ? (openBlock(), createElementBlock("button", {
4253
4308
  key: 0,
4254
4309
  type: "button",
4255
4310
  "aria-label": unref(t)("collectionsView.clearSearch"),
4256
4311
  class: "absolute inset-y-0 right-0 flex items-center pr-2.5 text-slate-400 hover:text-slate-600",
4257
4312
  onClick: _cache[1] || (_cache[1] = ($event) => searchQuery.value = "")
4258
- }, [..._cache[28] || (_cache[28] = [createElementVNode("span", { class: "material-icons text-sm" }, "close", -1)])], 8, _hoisted_18$1)) : createCommentVNode("", true)
4259
- ])) : createCommentVNode("", true), createElementVNode("div", _hoisted_19$1, [
4260
- hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value ? (openBlock(), createElementBlock("div", {
4313
+ }, [..._cache[29] || (_cache[29] = [createElementVNode("span", { class: "material-icons text-sm" }, "close", -1)])], 8, _hoisted_20$1)) : createCommentVNode("", true)
4314
+ ])) : createCommentVNode("", true), createElementVNode("div", _hoisted_21$1, [
4315
+ !__props.hideViewToggle && (hasCalendar.value || hasKanban.value || hasCustomViews.value || canAddCustomView.value) ? (openBlock(), createElementBlock("div", {
4261
4316
  key: 0,
4262
4317
  class: "flex gap-0.5",
4263
4318
  role: "group",
@@ -4269,7 +4324,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4269
4324
  "aria-pressed": activeView.value === "table",
4270
4325
  "data-testid": "collection-view-toggle-table",
4271
4326
  onClick: _cache[2] || (_cache[2] = ($event) => setView("table"))
4272
- }, [_cache[30] || (_cache[30] = createElementVNode("span", { class: "material-icons text-sm" }, "table_rows", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewTable")), 1)], 10, _hoisted_21$1),
4327
+ }, [_cache[31] || (_cache[31] = createElementVNode("span", { class: "material-icons text-sm" }, "table_rows", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewTable")), 1)], 10, _hoisted_23$1),
4273
4328
  hasCalendar.value ? (openBlock(), createElementBlock("button", {
4274
4329
  key: 0,
4275
4330
  type: "button",
@@ -4277,7 +4332,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4277
4332
  "aria-pressed": activeView.value === "calendar",
4278
4333
  "data-testid": "collection-view-toggle-calendar",
4279
4334
  onClick: _cache[3] || (_cache[3] = ($event) => setView("calendar"))
4280
- }, [_cache[31] || (_cache[31] = createElementVNode("span", { class: "material-icons text-sm" }, "calendar_month", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewCalendar")), 1)], 10, _hoisted_22$1)) : createCommentVNode("", true),
4335
+ }, [_cache[32] || (_cache[32] = createElementVNode("span", { class: "material-icons text-sm" }, "calendar_month", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewCalendar")), 1)], 10, _hoisted_24)) : createCommentVNode("", true),
4281
4336
  hasKanban.value ? (openBlock(), createElementBlock("button", {
4282
4337
  key: 1,
4283
4338
  type: "button",
@@ -4285,16 +4340,16 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4285
4340
  "aria-pressed": activeView.value === "kanban",
4286
4341
  "data-testid": "collection-view-toggle-kanban",
4287
4342
  onClick: _cache[4] || (_cache[4] = ($event) => setView("kanban"))
4288
- }, [_cache[32] || (_cache[32] = createElementVNode("span", { class: "material-icons text-sm" }, "view_kanban", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewKanban")), 1)], 10, _hoisted_23$1)) : createCommentVNode("", true),
4343
+ }, [_cache[33] || (_cache[33] = createElementVNode("span", { class: "material-icons text-sm" }, "view_kanban", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.viewKanban")), 1)], 10, _hoisted_25)) : createCommentVNode("", true),
4289
4344
  (openBlock(true), createElementBlock(Fragment, null, renderList(customViews.value, (cv) => {
4290
4345
  return openBlock(), createElementBlock("button", {
4291
4346
  key: cv.id,
4292
4347
  type: "button",
4293
- class: normalizeClass(["h-8 px-2.5 flex items-center gap-1 rounded text-xs font-bold transition-colors", activeView.value === customViewKey(cv.id) ? "bg-indigo-600 text-white" : "bg-white text-slate-500 border border-slate-200 hover:bg-slate-50"]),
4294
- "aria-pressed": activeView.value === customViewKey(cv.id),
4348
+ class: normalizeClass(["h-8 px-2.5 flex items-center gap-1 rounded text-xs font-bold transition-colors", activeView.value === unref(customViewKey)(cv.id) ? "bg-indigo-600 text-white" : "bg-white text-slate-500 border border-slate-200 hover:bg-slate-50"]),
4349
+ "aria-pressed": activeView.value === unref(customViewKey)(cv.id),
4295
4350
  "data-testid": `collection-view-custom-${cv.id}`,
4296
4351
  onClick: ($event) => setCustomView(cv.id)
4297
- }, [createElementVNode("span", _hoisted_25, toDisplayString(cv.icon || "dashboard_customize"), 1), createElementVNode("span", null, toDisplayString(cv.label), 1)], 10, _hoisted_24);
4352
+ }, [createElementVNode("span", _hoisted_27, toDisplayString(cv.icon || "dashboard_customize"), 1), createElementVNode("span", null, toDisplayString(cv.label), 1)], 10, _hoisted_26);
4298
4353
  }), 128)),
4299
4354
  canAddCustomView.value ? (openBlock(), createElementBlock("button", {
4300
4355
  key: 2,
@@ -4304,7 +4359,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4304
4359
  "aria-label": unref(t)("collectionsView.addView"),
4305
4360
  "data-testid": "collection-view-add",
4306
4361
  onClick: addCustomView
4307
- }, [..._cache[33] || (_cache[33] = [createElementVNode("span", { class: "material-icons text-sm" }, "add", -1)])], 8, _hoisted_26)) : createCommentVNode("", true),
4362
+ }, [..._cache[34] || (_cache[34] = [createElementVNode("span", { class: "material-icons text-sm" }, "add", -1)])], 8, _hoisted_28)) : createCommentVNode("", true),
4308
4363
  canConfigureViews.value ? (openBlock(), createElementBlock("button", {
4309
4364
  key: 3,
4310
4365
  type: "button",
@@ -4313,8 +4368,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4313
4368
  "aria-label": unref(t)("collectionsView.config.open"),
4314
4369
  "data-testid": "collection-config-open",
4315
4370
  onClick: _cache[5] || (_cache[5] = ($event) => configOpen.value = true)
4316
- }, [..._cache[34] || (_cache[34] = [createElementVNode("span", { class: "material-icons text-sm" }, "settings", -1)])], 8, _hoisted_27)) : createCommentVNode("", true)
4317
- ], 8, _hoisted_20$1)) : createCommentVNode("", true),
4371
+ }, [..._cache[35] || (_cache[35] = [createElementVNode("span", { class: "material-icons text-sm" }, "settings", -1)])], 8, _hoisted_29)) : createCommentVNode("", true)
4372
+ ], 8, _hoisted_22$1)) : createCommentVNode("", true),
4318
4373
  calendarActive.value && dateFields.value.length > 1 ? (openBlock(), createElementBlock("select", {
4319
4374
  key: 1,
4320
4375
  value: calendarAnchorField.value,
@@ -4326,8 +4381,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4326
4381
  return openBlock(), createElementBlock("option", {
4327
4382
  key,
4328
4383
  value: key
4329
- }, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9, _hoisted_29);
4330
- }), 128))], 40, _hoisted_28)) : createCommentVNode("", true),
4384
+ }, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9, _hoisted_31);
4385
+ }), 128))], 40, _hoisted_30)) : createCommentVNode("", true),
4331
4386
  kanbanActive.value && enumFields.value.length > 1 ? (openBlock(), createElementBlock("select", {
4332
4387
  key: 2,
4333
4388
  value: kanbanGroupField.value,
@@ -4339,24 +4394,24 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4339
4394
  return openBlock(), createElementBlock("option", {
4340
4395
  key,
4341
4396
  value: key
4342
- }, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9, _hoisted_31);
4343
- }), 128))], 40, _hoisted_30)) : createCommentVNode("", true),
4344
- items.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_32, toDisplayString(unref(t)("collectionsView.searchSummary", {
4397
+ }, toDisplayString(collection.value?.schema.fields[key]?.label ?? key), 9, _hoisted_33);
4398
+ }), 128))], 40, _hoisted_32)) : createCommentVNode("", true),
4399
+ items.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_34, toDisplayString(unref(t)("collectionsView.searchSummary", {
4345
4400
  shown: filteredItems.value.length,
4346
4401
  total: items.value.length
4347
4402
  })), 1)) : createCommentVNode("", true)
4348
4403
  ])])) : createCommentVNode("", true),
4349
- collection.value && dataIssues.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_33, [
4350
- _cache[36] || (_cache[36] = createElementVNode("span", { class: "material-icons text-amber-600" }, "warning", -1)),
4351
- createElementVNode("span", _hoisted_34, toDisplayString(unref(t)("collectionsView.dataIssuesDetected", { count: dataIssues.value.length })), 1),
4404
+ collection.value && dataIssues.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_35, [
4405
+ _cache[37] || (_cache[37] = createElementVNode("span", { class: "material-icons text-amber-600" }, "warning", -1)),
4406
+ createElementVNode("span", _hoisted_36, toDisplayString(unref(t)("collectionsView.dataIssuesDetected", { count: dataIssues.value.length })), 1),
4352
4407
  createElementVNode("button", {
4353
4408
  type: "button",
4354
4409
  class: "h-8 px-2.5 flex items-center gap-1 rounded border border-amber-300 bg-white hover:bg-amber-100 text-amber-700 font-bold text-xs transition-colors",
4355
4410
  "data-testid": "collections-repair",
4356
4411
  onClick: repairCollection
4357
- }, [_cache[35] || (_cache[35] = createElementVNode("span", { class: "material-icons text-sm" }, "build", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.repair")), 1)])
4412
+ }, [_cache[36] || (_cache[36] = createElementVNode("span", { class: "material-icons text-sm" }, "build", -1)), createElementVNode("span", null, toDisplayString(unref(t)("collectionsView.repair")), 1)])
4358
4413
  ])) : createCommentVNode("", true),
4359
- createElementVNode("div", _hoisted_35, [loading.value ? (openBlock(), createElementBlock("div", _hoisted_36, [_cache[37] || (_cache[37] = createElementVNode("div", { class: "h-8 w-8 border-2 border-indigo-600/20 border-t-indigo-600 rounded-full animate-spin" }, null, -1)), createElementVNode("span", null, toDisplayString(unref(t)("common.loading")), 1)])) : loadError.value ? (openBlock(), createElementBlock("div", _hoisted_37, [_cache[38] || (_cache[38] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)), createElementVNode("span", null, toDisplayString(loadError.value === "not-found" ? unref(t)("collectionsView.notFound") : `${unref(t)("collectionsView.loadFailed")}: ${loadError.value}`), 1)])) : !collection.value ? (openBlock(), createElementBlock("div", _hoisted_38)) : calendarActive.value ? (openBlock(), createElementBlock("div", _hoisted_39, [createVNode(CollectionCalendarView_default, {
4414
+ createElementVNode("div", _hoisted_37, [loading.value ? (openBlock(), createElementBlock("div", _hoisted_38, [_cache[38] || (_cache[38] = createElementVNode("div", { class: "h-8 w-8 border-2 border-indigo-600/20 border-t-indigo-600 rounded-full animate-spin" }, null, -1)), createElementVNode("span", null, toDisplayString(unref(t)("common.loading")), 1)])) : loadError.value ? (openBlock(), createElementBlock("div", _hoisted_39, [_cache[39] || (_cache[39] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)), createElementVNode("span", null, toDisplayString(loadError.value === "not-found" ? unref(t)("collectionsView.notFound") : `${unref(t)("collectionsView.loadFailed")}: ${loadError.value}`), 1)])) : !collection.value ? (openBlock(), createElementBlock("div", _hoisted_40)) : calendarActive.value ? (openBlock(), createElementBlock("div", _hoisted_41, [createVNode(CollectionCalendarView_default, {
4360
4415
  schema: collection.value.schema,
4361
4416
  items: filteredItems.value,
4362
4417
  "anchor-field": calendarAnchorField.value,
@@ -4441,16 +4496,16 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4441
4496
  "selected",
4442
4497
  "can-create",
4443
4498
  "show-detail"
4444
- ])) : createCommentVNode("", true)])) : kanbanActive.value ? (openBlock(), createElementBlock("div", _hoisted_40, [inlineError.value ? (openBlock(), createElementBlock("div", _hoisted_41, [
4445
- _cache[40] || (_cache[40] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)),
4446
- createElementVNode("span", _hoisted_42, toDisplayString(unref(t)("collectionsView.inlineSaveFailed", { error: inlineError.value })), 1),
4499
+ ])) : createCommentVNode("", true)])) : kanbanActive.value ? (openBlock(), createElementBlock("div", _hoisted_42, [inlineError.value ? (openBlock(), createElementBlock("div", _hoisted_43, [
4500
+ _cache[41] || (_cache[41] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)),
4501
+ createElementVNode("span", _hoisted_44, toDisplayString(unref(t)("collectionsView.inlineSaveFailed", { error: inlineError.value })), 1),
4447
4502
  createElementVNode("button", {
4448
4503
  type: "button",
4449
4504
  class: "h-8 w-8 flex items-center justify-center rounded text-red-600 hover:bg-red-100",
4450
4505
  "aria-label": unref(t)("common.close"),
4451
4506
  onClick: _cache[10] || (_cache[10] = ($event) => inlineError.value = null)
4452
- }, [..._cache[39] || (_cache[39] = [createElementVNode("span", { class: "material-icons text-base" }, "close", -1)])], 8, _hoisted_43)
4453
- ])) : createCommentVNode("", true), createElementVNode("div", _hoisted_44, [createVNode(CollectionKanbanView_default, {
4507
+ }, [..._cache[40] || (_cache[40] = [createElementVNode("span", { class: "material-icons text-base" }, "close", -1)])], 8, _hoisted_45)
4508
+ ])) : createCommentVNode("", true), createElementVNode("div", _hoisted_46, [createVNode(CollectionKanbanView_default, {
4454
4509
  schema: collection.value.schema,
4455
4510
  items: filteredItems.value,
4456
4511
  "group-field": kanbanGroupField.value,
@@ -4464,37 +4519,37 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4464
4519
  "group-field",
4465
4520
  "selected",
4466
4521
  "notified"
4467
- ])])])) : activeCustomView.value ? (openBlock(), createElementBlock("div", _hoisted_45, [createVNode(CollectionCustomView_default, {
4522
+ ])])])) : activeCustomView.value ? (openBlock(), createElementBlock("div", _hoisted_47, [createVNode(CollectionCustomView_default, {
4468
4523
  slug: collection.value.slug,
4469
4524
  view: activeCustomView.value,
4470
4525
  onOpenItem: onCustomViewOpenItem,
4471
4526
  onStartChat: onCustomViewStartChat
4472
- }, null, 8, ["slug", "view"])])) : items.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div", _hoisted_46, [_cache[41] || (_cache[41] = createElementVNode("span", { class: "material-icons text-4xl text-slate-300" }, "folder_open", -1)), createElementVNode("p", _hoisted_47, toDisplayString(unref(t)("collectionsView.itemsEmpty")), 1)])) : filteredItems.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div", _hoisted_48, [
4473
- _cache[42] || (_cache[42] = createElementVNode("span", { class: "material-icons text-4xl text-slate-300" }, "search_off", -1)),
4474
- createElementVNode("p", _hoisted_49, toDisplayString(unref(t)("collectionsView.noMatchingItems")), 1),
4527
+ }, null, 8, ["slug", "view"])])) : items.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div", _hoisted_48, [_cache[42] || (_cache[42] = createElementVNode("span", { class: "material-icons text-4xl text-slate-300" }, "folder_open", -1)), createElementVNode("p", _hoisted_49, toDisplayString(unref(t)("collectionsView.itemsEmpty")), 1)])) : filteredItems.value.length === 0 && editing.value?.mode !== "create" ? (openBlock(), createElementBlock("div", _hoisted_50, [
4528
+ _cache[43] || (_cache[43] = createElementVNode("span", { class: "material-icons text-4xl text-slate-300" }, "search_off", -1)),
4529
+ createElementVNode("p", _hoisted_51, toDisplayString(unref(t)("collectionsView.noMatchingItems")), 1),
4475
4530
  createElementVNode("button", {
4476
4531
  type: "button",
4477
4532
  class: "text-xs text-indigo-600 font-semibold hover:underline",
4478
4533
  onClick: _cache[11] || (_cache[11] = ($event) => searchQuery.value = "")
4479
4534
  }, toDisplayString(unref(t)("collectionsView.clearSearch")), 1)
4480
- ])) : (openBlock(), createElementBlock("div", _hoisted_50, [inlineError.value ? (openBlock(), createElementBlock("div", _hoisted_51, [
4481
- _cache[44] || (_cache[44] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)),
4482
- createElementVNode("span", _hoisted_52, toDisplayString(unref(t)("collectionsView.inlineSaveFailed", { error: inlineError.value })), 1),
4535
+ ])) : (openBlock(), createElementBlock("div", _hoisted_52, [inlineError.value ? (openBlock(), createElementBlock("div", _hoisted_53, [
4536
+ _cache[45] || (_cache[45] = createElementVNode("span", { class: "material-icons text-red-600" }, "error", -1)),
4537
+ createElementVNode("span", _hoisted_54, toDisplayString(unref(t)("collectionsView.inlineSaveFailed", { error: inlineError.value })), 1),
4483
4538
  createElementVNode("button", {
4484
4539
  type: "button",
4485
4540
  class: "h-8 w-8 flex items-center justify-center rounded text-red-600 hover:bg-red-100",
4486
4541
  "aria-label": unref(t)("common.close"),
4487
4542
  onClick: _cache[12] || (_cache[12] = ($event) => inlineError.value = null)
4488
- }, [..._cache[43] || (_cache[43] = [createElementVNode("span", { class: "material-icons text-base" }, "close", -1)])], 8, _hoisted_53)
4489
- ])) : createCommentVNode("", true), createElementVNode("table", _hoisted_54, [createElementVNode("thead", null, [createElementVNode("tr", _hoisted_55, [(openBlock(true), createElementBlock(Fragment, null, renderList(listColumnFields.value, ([key, field]) => {
4543
+ }, [..._cache[44] || (_cache[44] = [createElementVNode("span", { class: "material-icons text-base" }, "close", -1)])], 8, _hoisted_55)
4544
+ ])) : createCommentVNode("", true), createElementVNode("table", _hoisted_56, [createElementVNode("thead", null, [createElementVNode("tr", _hoisted_57, [(openBlock(true), createElementBlock(Fragment, null, renderList(listColumnFields.value, ([key, field]) => {
4490
4545
  return openBlock(), createElementBlock("th", {
4491
4546
  key,
4492
4547
  "aria-sort": unref(isSortableField)(field) ? sortAriaValue(key) : void 0,
4493
4548
  class: "px-5 py-3 font-bold text-slate-500 text-left uppercase tracking-wider whitespace-nowrap"
4494
- }, [createElementVNode("div", _hoisted_57, [createElementVNode("span", {
4549
+ }, [createElementVNode("div", _hoisted_59, [createElementVNode("span", {
4495
4550
  class: "truncate max-w-[14rem]",
4496
4551
  title: field.label
4497
- }, toDisplayString(field.label), 9, _hoisted_58), unref(isSortableField)(field) ? (openBlock(), createElementBlock("button", {
4552
+ }, toDisplayString(field.label), 9, _hoisted_60), unref(isSortableField)(field) ? (openBlock(), createElementBlock("button", {
4498
4553
  key: 0,
4499
4554
  type: "button",
4500
4555
  class: normalizeClass(["inline-flex items-center justify-center rounded p-0.5 -my-1 leading-none transition-colors", sortButtonClass(key)]),
@@ -4503,8 +4558,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4503
4558
  onClick: withModifiers(($event) => cycleSort(key), ["stop"]),
4504
4559
  onPointerenter: ($event) => hoveredSortKey.value = key,
4505
4560
  onPointerleave: _cache[13] || (_cache[13] = ($event) => hoveredSortKey.value = null)
4506
- }, [createElementVNode("span", _hoisted_60, toDisplayString(sortIconName(key)), 1)], 42, _hoisted_59)) : createCommentVNode("", true)])], 8, _hoisted_56);
4507
- }), 128))])]), createElementVNode("tbody", _hoisted_61, [(openBlock(true), createElementBlock(Fragment, null, renderList(sortedItems.value, (item) => {
4561
+ }, [createElementVNode("span", _hoisted_62, toDisplayString(sortIconName(key)), 1)], 42, _hoisted_61)) : createCommentVNode("", true)])], 8, _hoisted_58);
4562
+ }), 128))])]), createElementVNode("tbody", _hoisted_63, [(openBlock(true), createElementBlock(Fragment, null, renderList(sortedItems.value, (item) => {
4508
4563
  return openBlock(), createElementBlock("tr", {
4509
4564
  key: String(item[collection.value.schema.primaryKey] ?? ""),
4510
4565
  class: normalizeClass(["hover:bg-slate-50/70 cursor-pointer transition-colors focus:outline-none focus:bg-indigo-50/30", isRowOpen(item) || isEditingRow(item) ? "bg-indigo-50/40" : ""]),
@@ -4528,7 +4583,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4528
4583
  "aria-label": field.label,
4529
4584
  onClick: _cache[14] || (_cache[14] = withModifiers(() => {}, ["stop"])),
4530
4585
  onChange: ($event) => commitToggle(item, field)
4531
- }, null, 40, _hoisted_63)) : field.type === "boolean" ? (openBlock(), createElementBlock("input", {
4586
+ }, null, 40, _hoisted_65)) : field.type === "boolean" ? (openBlock(), createElementBlock("input", {
4532
4587
  key: 1,
4533
4588
  type: "checkbox",
4534
4589
  checked: item[key] === true,
@@ -4538,7 +4593,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4538
4593
  "aria-label": field.label,
4539
4594
  onClick: _cache[15] || (_cache[15] = withModifiers(() => {}, ["stop"])),
4540
4595
  onChange: ($event) => commitInlineEdit(item, String(key), field, $event.target.checked)
4541
- }, null, 40, _hoisted_64)) : field.type === "ref" && field.to && typeof item[key] === "string" && item[key] ? (openBlock(), createElementBlock("span", _hoisted_65, [createElementVNode("a", {
4596
+ }, null, 40, _hoisted_66)) : field.type === "ref" && field.to && typeof item[key] === "string" && item[key] ? (openBlock(), createElementBlock("span", _hoisted_67, [createElementVNode("a", {
4542
4597
  href: unref(cui).recordHref?.(field.to, String(item[key])),
4543
4598
  tabindex: unref(cui).recordHref?.(field.to, String(item[key])) ? void 0 : 0,
4544
4599
  role: "link",
@@ -4546,7 +4601,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4546
4601
  "data-testid": `collections-ref-link-${key}-${item[key]}`,
4547
4602
  onClick: ($event) => unref(activateRefLink)($event, field.to, String(item[key]), true),
4548
4603
  onKeydown: [withKeys(($event) => unref(activateRefLink)($event, field.to, String(item[key]), true), ["enter"]), withKeys(($event) => unref(activateRefLink)($event, field.to, String(item[key]), true), ["space"])]
4549
- }, toDisplayString(unref(refDisplay)(field.to, String(item[key]))), 41, _hoisted_66)])) : field.type === "enum" && Array.isArray(field.values) && field.values.length > 0 ? (openBlock(), createElementBlock("select", {
4604
+ }, toDisplayString(unref(refDisplay)(field.to, String(item[key]))), 41, _hoisted_68)])) : field.type === "enum" && Array.isArray(field.values) && field.values.length > 0 ? (openBlock(), createElementBlock("select", {
4550
4605
  key: 3,
4551
4606
  value: item[key] == null ? "" : String(item[key]),
4552
4607
  disabled: isRowInlineSaving(item),
@@ -4555,12 +4610,12 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4555
4610
  "aria-label": field.label,
4556
4611
  onClick: _cache[16] || (_cache[16] = withModifiers(() => {}, ["stop"])),
4557
4612
  onChange: ($event) => commitInlineEdit(item, String(key), field, $event.target.value)
4558
- }, [showEnumPlaceholder(item, String(key)) ? (openBlock(), createElementBlock("option", _hoisted_68, toDisplayString(unref(t)("collectionsView.selectPlaceholder")), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(field.values, (value) => {
4613
+ }, [showEnumPlaceholder(item, String(key)) ? (openBlock(), createElementBlock("option", _hoisted_70, toDisplayString(unref(t)("collectionsView.selectPlaceholder")), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(field.values, (value) => {
4559
4614
  return openBlock(), createElementBlock("option", {
4560
4615
  key: value,
4561
4616
  value
4562
- }, toDisplayString(value), 9, _hoisted_69);
4563
- }), 128))], 42, _hoisted_67)) : field.type === "money" ? (openBlock(), createElementBlock("span", _hoisted_70, toDisplayString(unref(formatMoney)(item[key], unref(resolveCurrency)(field, item), unref(locale))), 1)) : field.type === "table" ? (openBlock(), createElementBlock("span", _hoisted_71, [_cache[45] || (_cache[45] = createElementVNode("span", { class: "material-icons text-[11px]" }, "list", -1)), createElementVNode("span", null, toDisplayString(tableSummary(item[key])), 1)])) : field.type === "derived" ? (openBlock(), createElementBlock("span", _hoisted_72, toDisplayString(unref(derivedDisplay)(field, unref(evaluateDerivedAgainstItem)(field, String(key), item), item)), 1)) : field.type !== "file" && unref(isExternalUrl)(item[key]) ? (openBlock(), createElementBlock("a", {
4617
+ }, toDisplayString(value), 9, _hoisted_71);
4618
+ }), 128))], 42, _hoisted_69)) : field.type === "money" ? (openBlock(), createElementBlock("span", _hoisted_72, toDisplayString(unref(formatMoney)(item[key], unref(resolveCurrency)(field, item), unref(locale))), 1)) : field.type === "table" ? (openBlock(), createElementBlock("span", _hoisted_73, [_cache[46] || (_cache[46] = createElementVNode("span", { class: "material-icons text-[11px]" }, "list", -1)), createElementVNode("span", null, toDisplayString(tableSummary(item[key])), 1)])) : field.type === "derived" ? (openBlock(), createElementBlock("span", _hoisted_74, toDisplayString(unref(derivedDisplay)(field, unref(evaluateDerivedAgainstItem)(field, String(key), item), item)), 1)) : field.type !== "file" && unref(isExternalUrl)(item[key]) ? (openBlock(), createElementBlock("a", {
4564
4619
  key: 7,
4565
4620
  href: String(item[key]),
4566
4621
  target: "_blank",
@@ -4568,7 +4623,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4568
4623
  class: "block truncate text-blue-600 hover:text-blue-800 hover:underline font-semibold",
4569
4624
  "data-testid": `collections-url-link-${key}-${item[collection.value.schema.primaryKey]}`,
4570
4625
  onClick: _cache[17] || (_cache[17] = withModifiers(() => {}, ["stop"]))
4571
- }, toDisplayString(String(item[key])), 9, _hoisted_73)) : field.type === "file" && unref(artifactUrl)(item[key]) ? (openBlock(), createElementBlock("a", {
4626
+ }, toDisplayString(String(item[key])), 9, _hoisted_75)) : field.type === "file" && unref(artifactUrl)(item[key]) ? (openBlock(), createElementBlock("a", {
4572
4627
  key: 8,
4573
4628
  href: unref(artifactUrl)(item[key]) ?? void 0,
4574
4629
  target: "_blank",
@@ -4576,17 +4631,17 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4576
4631
  class: "block truncate text-blue-600 hover:text-blue-800 hover:underline font-semibold",
4577
4632
  "data-testid": `collections-file-link-${key}-${item[collection.value.schema.primaryKey]}`,
4578
4633
  onClick: _cache[18] || (_cache[18] = withModifiers(() => {}, ["stop"]))
4579
- }, toDisplayString(String(item[key])), 9, _hoisted_74)) : field.type === "file" && unref(fileRoutePath)(item[key]) ? (openBlock(), createElementBlock("a", {
4634
+ }, toDisplayString(String(item[key])), 9, _hoisted_76)) : field.type === "file" && unref(fileRoutePath)(item[key]) ? (openBlock(), createElementBlock("a", {
4580
4635
  key: 9,
4581
4636
  href: unref(fileRoutePath)(item[key]) ?? void 0,
4582
4637
  class: "block truncate text-blue-600 hover:text-blue-800 hover:underline font-semibold",
4583
4638
  "data-testid": `collections-file-link-${key}-${item[collection.value.schema.primaryKey]}`,
4584
4639
  onClick: ($event) => unref(activatePathLink)($event, unref(fileRoutePath)(item[key]) ?? "", true)
4585
- }, toDisplayString(String(item[key])), 9, _hoisted_75)) : (openBlock(), createElementBlock("span", _hoisted_76, toDisplayString(unref(formatCell)(item[key], field.type)), 1))], 64)) : createCommentVNode("", true)]);
4586
- }), 128))], 42, _hoisted_62);
4640
+ }, toDisplayString(String(item[key])), 9, _hoisted_77)) : (openBlock(), createElementBlock("span", _hoisted_78, toDisplayString(unref(formatCell)(item[key], field.type)), 1))], 64)) : createCommentVNode("", true)]);
4641
+ }), 128))], 42, _hoisted_64);
4587
4642
  }), 128))])])]))]),
4588
4643
  collection.value && (viewing.value || editing.value) && !(calendarActive.value && openDay.value) ? (openBlock(), createBlock(CollectionRecordModal_default, {
4589
- key: 2,
4644
+ key: 4,
4590
4645
  onClose: closeRecordModal
4591
4646
  }, {
4592
4647
  default: withCtx(() => [createVNode(CollectionRecordPanel_default, {
@@ -4631,7 +4686,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4631
4686
  _: 1
4632
4687
  })) : createCommentVNode("", true),
4633
4688
  configOpen.value && collection.value ? (openBlock(), createBlock(CollectionViewConfigModal_default, {
4634
- key: 3,
4689
+ key: 5,
4635
4690
  slug: collection.value.slug,
4636
4691
  title: collection.value.title,
4637
4692
  views: customViews.value,
@@ -4643,7 +4698,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4643
4698
  "views"
4644
4699
  ])) : createCommentVNode("", true),
4645
4700
  chatOpen.value && collection.value ? (openBlock(), createElementBlock("div", {
4646
- key: 4,
4701
+ key: 6,
4647
4702
  class: "fixed inset-0 z-30 flex items-center justify-center bg-slate-900/60 backdrop-blur-sm p-4 transition-all duration-300",
4648
4703
  role: "dialog",
4649
4704
  "aria-modal": "true",
@@ -4651,19 +4706,19 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4651
4706
  "data-testid": "collections-chat-modal",
4652
4707
  onClick: withModifiers(closeChat, ["self"]),
4653
4708
  onKeydown: withKeys(closeChat, ["esc"])
4654
- }, [createElementVNode("div", _hoisted_77, [
4655
- createElementVNode("header", _hoisted_78, [
4656
- _cache[47] || (_cache[47] = createElementVNode("div", { class: "h-9 w-9 flex items-center justify-center rounded-xl bg-indigo-50 text-indigo-600 border border-indigo-100/50" }, [createElementVNode("span", { class: "material-icons text-lg" }, "forum")], -1)),
4657
- createElementVNode("div", _hoisted_79, [createElementVNode("h2", _hoisted_80, toDisplayString(unref(t)("collectionsView.chatTitle")), 1), createElementVNode("span", _hoisted_81, toDisplayString(collection.value.title), 1)]),
4709
+ }, [createElementVNode("div", _hoisted_79, [
4710
+ createElementVNode("header", _hoisted_80, [
4711
+ _cache[48] || (_cache[48] = createElementVNode("div", { class: "h-9 w-9 flex items-center justify-center rounded-xl bg-indigo-50 text-indigo-600 border border-indigo-100/50" }, [createElementVNode("span", { class: "material-icons text-lg" }, "forum")], -1)),
4712
+ createElementVNode("div", _hoisted_81, [createElementVNode("h2", _hoisted_82, toDisplayString(unref(t)("collectionsView.chatTitle")), 1), createElementVNode("span", _hoisted_83, toDisplayString(collection.value.title), 1)]),
4658
4713
  createElementVNode("button", {
4659
4714
  type: "button",
4660
4715
  class: "h-8 w-8 flex items-center justify-center rounded text-slate-400 hover:bg-slate-200/50 hover:text-slate-600 transition-colors",
4661
4716
  "aria-label": unref(t)("common.close"),
4662
4717
  "data-testid": "collections-chat-close",
4663
4718
  onClick: closeChat
4664
- }, [..._cache[46] || (_cache[46] = [createElementVNode("span", { class: "material-icons text-lg" }, "close", -1)])], 8, _hoisted_82)
4719
+ }, [..._cache[47] || (_cache[47] = [createElementVNode("span", { class: "material-icons text-lg" }, "close", -1)])], 8, _hoisted_84)
4665
4720
  ]),
4666
- createElementVNode("div", _hoisted_83, [withDirectives(createElementVNode("textarea", {
4721
+ createElementVNode("div", _hoisted_85, [withDirectives(createElementVNode("textarea", {
4667
4722
  ref_key: "chatInputEl",
4668
4723
  ref: chatInputEl,
4669
4724
  "onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => chatMessage.value = $event),
@@ -4672,8 +4727,8 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4672
4727
  class: "w-full bg-slate-50 border border-slate-200/80 rounded-xl px-3 py-2.5 text-sm placeholder-slate-400 focus:outline-none focus:ring-2 focus:ring-indigo-500/20 focus:border-indigo-500 focus:bg-white transition-all resize-none",
4673
4728
  "data-testid": "collections-chat-input",
4674
4729
  onKeydown: [withKeys(withModifiers(submitChat, ["meta"]), ["enter"]), withKeys(withModifiers(submitChat, ["ctrl"]), ["enter"])]
4675
- }, null, 40, _hoisted_84), [[vModelText, chatMessage.value]])]),
4676
- createElementVNode("footer", _hoisted_85, [createElementVNode("button", {
4730
+ }, null, 40, _hoisted_86), [[vModelText, chatMessage.value]])]),
4731
+ createElementVNode("footer", _hoisted_87, [createElementVNode("button", {
4677
4732
  type: "button",
4678
4733
  class: "h-8 px-2.5 rounded text-xs font-bold text-slate-500 hover:bg-slate-200/50 transition-colors",
4679
4734
  "data-testid": "collections-chat-cancel",
@@ -4684,7 +4739,7 @@ var CollectionView_default = /* @__PURE__ */ defineComponent({
4684
4739
  disabled: !chatMessage.value.trim(),
4685
4740
  "data-testid": "collections-chat-send",
4686
4741
  onClick: submitChat
4687
- }, toDisplayString(unref(t)("collectionsView.chatStart")), 9, _hoisted_86)])
4742
+ }, toDisplayString(unref(t)("collectionsView.chatStart")), 9, _hoisted_88)])
4688
4743
  ])], 32)) : createCommentVNode("", true)
4689
4744
  ]);
4690
4745
  };
@@ -5116,6 +5171,6 @@ var plugin = {
5116
5171
  previewComponent: Preview_default
5117
5172
  };
5118
5173
  //#endregion
5119
- export { CollectionCalendarView_default as CollectionCalendarView, CollectionCustomView_default as CollectionCustomView, CollectionDayView_default as CollectionDayView, CollectionEmbedView_default as CollectionEmbedView, CollectionKanbanView_default as CollectionKanbanView, CollectionRecordModal_default as CollectionRecordModal, CollectionRecordPanel_default as CollectionRecordPanel, CollectionView_default as CollectionView, CollectionViewConfigModal_default as CollectionViewConfigModal, CollectionsIndexView_default as CollectionsIndexView, FeedsView_default as FeedsView, Preview_default as PresentCollectionPreview, View_default as PresentCollectionView, collectionUi, configureCollectionUi, plugin, readCollectionSort, readCollectionViewMode, useCollectionRendering, writeCollectionSort, writeCollectionViewMode };
5174
+ export { CollectionCalendarView_default as CollectionCalendarView, CollectionCustomView_default as CollectionCustomView, CollectionDayView_default as CollectionDayView, CollectionEmbedView_default as CollectionEmbedView, CollectionKanbanView_default as CollectionKanbanView, CollectionRecordModal_default as CollectionRecordModal, CollectionRecordPanel_default as CollectionRecordPanel, CollectionView_default as CollectionView, CollectionViewConfigModal_default as CollectionViewConfigModal, CollectionsIndexView_default as CollectionsIndexView, FeedsView_default as FeedsView, Preview_default as PresentCollectionPreview, View_default as PresentCollectionView, applicableViewModes, collectionUi, configureCollectionUi, customViewKey, plugin, readCollectionSort, readCollectionViewMode, useCollectionRendering, writeCollectionSort, writeCollectionViewMode };
5120
5175
 
5121
5176
  //# sourceMappingURL=vue.js.map