includio-cms 0.5.2 → 0.5.3

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 (93) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/ROADMAP.md +13 -0
  3. package/dist/admin/client/entry/entry-form.svelte +1 -0
  4. package/dist/admin/client/entry/entry.svelte +130 -123
  5. package/dist/admin/client/entry/hybrid/hybrid-preview.svelte +92 -9
  6. package/dist/admin/components/fields/blocks-field.svelte +142 -112
  7. package/dist/admin/components/fields/blocks-field.svelte.d.ts +10 -30
  8. package/dist/admin/components/fields/boolean-field.svelte +28 -38
  9. package/dist/admin/components/fields/boolean-field.svelte.d.ts +5 -27
  10. package/dist/admin/components/fields/checkboxes-field.svelte +12 -24
  11. package/dist/admin/components/fields/checkboxes-field.svelte.d.ts +5 -27
  12. package/dist/admin/components/fields/content-field.svelte +4 -17
  13. package/dist/admin/components/fields/content-field.svelte.d.ts +5 -27
  14. package/dist/admin/components/fields/date-field.svelte +8 -21
  15. package/dist/admin/components/fields/date-field.svelte.d.ts +5 -27
  16. package/dist/admin/components/fields/datetime-field.svelte +8 -21
  17. package/dist/admin/components/fields/datetime-field.svelte.d.ts +5 -27
  18. package/dist/admin/components/fields/field-renderer.svelte +32 -19
  19. package/dist/admin/components/fields/field-renderer.svelte.d.ts +1 -1
  20. package/dist/admin/components/fields/field-value-bridge.svelte +21 -0
  21. package/dist/admin/components/fields/field-value-bridge.svelte.d.ts +31 -0
  22. package/dist/admin/components/fields/fields-form.svelte +13 -10
  23. package/dist/admin/components/fields/file-field.svelte +12 -27
  24. package/dist/admin/components/fields/file-field.svelte.d.ts +5 -27
  25. package/dist/admin/components/fields/image-field.svelte +13 -28
  26. package/dist/admin/components/fields/image-field.svelte.d.ts +5 -27
  27. package/dist/admin/components/fields/media-field.svelte +15 -30
  28. package/dist/admin/components/fields/media-field.svelte.d.ts +5 -27
  29. package/dist/admin/components/fields/number-field.svelte +6 -20
  30. package/dist/admin/components/fields/number-field.svelte.d.ts +5 -27
  31. package/dist/admin/components/fields/object-field.svelte +26 -29
  32. package/dist/admin/components/fields/object-field.svelte.d.ts +11 -31
  33. package/dist/admin/components/fields/radio-field.svelte +8 -20
  34. package/dist/admin/components/fields/radio-field.svelte.d.ts +5 -27
  35. package/dist/admin/components/fields/relation-field.svelte +15 -30
  36. package/dist/admin/components/fields/relation-field.svelte.d.ts +5 -27
  37. package/dist/admin/components/fields/richtext-field.svelte +4 -17
  38. package/dist/admin/components/fields/richtext-field.svelte.d.ts +5 -27
  39. package/dist/admin/components/fields/select-field.svelte +14 -28
  40. package/dist/admin/components/fields/select-field.svelte.d.ts +5 -27
  41. package/dist/admin/components/fields/seo-field.svelte +5 -12
  42. package/dist/admin/components/fields/seo-field.svelte.d.ts +8 -28
  43. package/dist/admin/components/fields/simple-array-field.svelte +29 -42
  44. package/dist/admin/components/fields/simple-array-field.svelte.d.ts +5 -27
  45. package/dist/admin/components/fields/slug-field.svelte +6 -11
  46. package/dist/admin/components/fields/slug-field.svelte.d.ts +6 -26
  47. package/dist/admin/components/fields/text-field-wrapper.svelte +22 -40
  48. package/dist/admin/components/fields/text-field.svelte +7 -19
  49. package/dist/admin/components/fields/text-field.svelte.d.ts +5 -27
  50. package/dist/admin/components/fields/url-field-wrapper.svelte +8 -3
  51. package/dist/admin/components/fields/url-field.svelte +294 -128
  52. package/dist/admin/components/fields/url-field.svelte.d.ts +5 -27
  53. package/dist/admin/components/layout/layout-renderer.svelte +8 -6
  54. package/dist/admin/components/tiptap/InlineBlockNodeView.svelte +221 -31
  55. package/dist/admin/components/tiptap/content-editor.svelte +13 -2
  56. package/dist/admin/components/tiptap/inline-block-node.d.ts +1 -0
  57. package/dist/admin/components/tiptap/inline-block-node.js +18 -1
  58. package/dist/admin/components/tiptap/slash-command.js +2 -3
  59. package/dist/admin/components/tiptap/standalone-form.d.ts +7 -0
  60. package/dist/admin/components/tiptap/standalone-form.js +31 -0
  61. package/dist/admin/components/tiptap/tiptap-editor.svelte +7 -0
  62. package/dist/admin/remote/entry.remote.js +16 -0
  63. package/dist/admin/styles/admin.css +10 -0
  64. package/dist/admin/utils/fieldCondition.d.ts +6 -0
  65. package/dist/admin/utils/fieldCondition.js +20 -0
  66. package/dist/components/ui/switch/index.d.ts +2 -0
  67. package/dist/components/ui/switch/index.js +4 -0
  68. package/dist/components/ui/switch/switch.svelte +26 -0
  69. package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
  70. package/dist/core/fields/fieldSchemaToTs.js +15 -3
  71. package/dist/core/fields/formFieldSchemaToTs.js +22 -6
  72. package/dist/core/fields/urlUtils.d.ts +14 -0
  73. package/dist/core/fields/urlUtils.js +21 -0
  74. package/dist/core/server/fields/populateEntry.js +43 -0
  75. package/dist/core/server/fields/resolveImageFields.js +33 -1
  76. package/dist/core/server/fields/resolveRelationFields.js +46 -0
  77. package/dist/core/server/fields/resolveRichtextLinks.js +15 -1
  78. package/dist/core/server/fields/resolveUrlFields.js +65 -0
  79. package/dist/core/server/generator/formFieldSchemaToString.js +40 -9
  80. package/dist/core/server/generator/formFields.js +2 -0
  81. package/dist/core/server/generator/generator.js +25 -1
  82. package/dist/schemas/field/url.d.ts +2 -0
  83. package/dist/schemas/field/url.js +4 -2
  84. package/dist/types/fields.d.ts +9 -0
  85. package/dist/types/formFields.d.ts +15 -2
  86. package/dist/types/index.d.ts +1 -0
  87. package/dist/types/index.js +1 -0
  88. package/dist/updates/0.5.3/index.d.ts +2 -0
  89. package/dist/updates/0.5.3/index.js +19 -0
  90. package/dist/updates/index.js +2 -1
  91. package/package.json +2 -1
  92. package/dist/admin/components/fields/standalone-field-renderer.svelte +0 -148
  93. package/dist/admin/components/fields/standalone-field-renderer.svelte.d.ts +0 -9
@@ -1,26 +1,13 @@
1
- <script lang="ts" module>
2
- type T = Record<string, unknown>;
3
- </script>
4
-
5
- <script lang="ts" generics="T extends Record<string, unknown>">
6
- import {
7
- formFieldProxy,
8
- type FormFieldProxy,
9
- type FormPathLeaves,
10
- type SuperForm
11
- } from 'sveltekit-superforms';
1
+ <script lang="ts">
12
2
  import Tiptap from '../tiptap.svelte';
13
3
  import type { RichtextField } from '../../../types/fields.js';
14
4
 
15
5
  type Props = {
16
6
  field: RichtextField;
17
- form: SuperForm<T>;
18
- path: FormPathLeaves<T, string | undefined>;
7
+ value: string | undefined;
19
8
  };
20
9
 
21
- let { field, form, path, ...props }: Props = $props();
22
-
23
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<string | undefined>;
10
+ let { field, value = $bindable(), ...props }: Props = $props();
24
11
  </script>
25
12
 
26
- <Tiptap bind:value={$value} />
13
+ <Tiptap bind:value />
@@ -1,30 +1,8 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
1
  import type { RichtextField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: RichtextField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T, string | undefined>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
2
+ type Props = {
3
+ field: RichtextField;
4
+ value: string | undefined;
13
5
  };
14
- declare class __sveltets_Render<T extends Record<string, unknown>> {
15
- props(): ReturnType<typeof $$render<T>>['props'];
16
- events(): ReturnType<typeof $$render<T>>['events'];
17
- slots(): ReturnType<typeof $$render<T>>['slots'];
18
- bindings(): "";
19
- exports(): {};
20
- }
21
- interface $$IsomorphicComponent {
22
- new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
23
- $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
24
- } & ReturnType<__sveltets_Render<T>['exports']>;
25
- <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
26
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
- }
28
- declare const RichtextField: $$IsomorphicComponent;
29
- type RichtextField<T extends Record<string, unknown>> = InstanceType<typeof RichtextField<T>>;
6
+ declare const RichtextField: import("svelte").Component<Props, {}, "value">;
7
+ type RichtextField = ReturnType<typeof RichtextField>;
30
8
  export default RichtextField;
@@ -1,49 +1,37 @@
1
- <script lang="ts" module>
2
- type T = Record<string, unknown>;
3
- </script>
4
-
5
- <script lang="ts" generics="T extends Record<string, unknown>">
1
+ <script lang="ts">
6
2
  import * as Select from '../../../components/ui/select/index.js';
7
3
  import type { SelectField } from '../../../types/fields.js';
8
4
  import { onMount } from 'svelte';
9
- import {
10
- formFieldProxy,
11
- type FormFieldProxy,
12
- type FormPathLeaves,
13
- type SuperForm
14
- } from 'sveltekit-superforms';
15
5
  import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
16
6
  import { getLocalizedLabel } from '../../utils/collectionLabel.js';
17
7
 
18
8
  type Props = {
19
9
  field: SelectField;
20
- form: SuperForm<T>;
21
- path: FormPathLeaves<T, string | string[] | undefined>;
10
+ value: string | string[] | undefined;
22
11
  };
23
12
 
24
- let { field, form, path, ...props }: Props = $props();
13
+ let { field, value = $bindable(), ...props }: Props = $props();
25
14
 
26
15
  const interfaceLanguage = useInterfaceLanguage();
27
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<string | string[] | undefined>;
28
16
 
29
17
  // Get display label for current value(s)
30
18
  function getDisplayLabel(): string {
31
- if (!$value) return '';
32
- if (field.multiple && Array.isArray($value)) {
33
- return $value
19
+ if (!value) return '';
20
+ if (field.multiple && Array.isArray(value)) {
21
+ return value
34
22
  .map((v) => {
35
23
  const opt = field.options.find((o) => o.value === v);
36
24
  return opt ? getLocalizedLabel(opt.label, interfaceLanguage.current) : v;
37
25
  })
38
26
  .join(', ');
39
27
  }
40
- const option = field.options.find((o) => o.value === $value);
41
- return option ? getLocalizedLabel(option.label, interfaceLanguage.current) : ($value as string);
28
+ const option = field.options.find((o) => o.value === value);
29
+ return option ? getLocalizedLabel(option.label, interfaceLanguage.current) : (value as string);
42
30
  }
43
31
 
44
32
  onMount(() => {
45
- if ($value === undefined) {
46
- $value = field.multiple ? [] : '';
33
+ if (value === undefined) {
34
+ value = field.multiple ? [] : '';
47
35
  }
48
36
  });
49
37
  </script>
@@ -51,11 +39,10 @@
51
39
  {#if field.multiple}
52
40
  <Select.Root
53
41
  type="multiple"
54
- bind:value={$value as string[]}
55
- name={path}
42
+ bind:value={value as string[]}
56
43
  >
57
44
  <Select.Trigger {...props} class="w-full">
58
- {#if Array.isArray($value) && $value.length > 0}
45
+ {#if Array.isArray(value) && value.length > 0}
59
46
  {getDisplayLabel()}
60
47
  {:else}
61
48
  <span class="text-muted-foreground">Select...</span>
@@ -70,11 +57,10 @@
70
57
  {:else}
71
58
  <Select.Root
72
59
  type="single"
73
- bind:value={$value as string}
74
- name={path}
60
+ bind:value={value as string}
75
61
  >
76
62
  <Select.Trigger {...props} class="w-full">
77
- {#if $value}
63
+ {#if value}
78
64
  {getDisplayLabel()}
79
65
  {:else}
80
66
  <span class="text-muted-foreground">Select...</span>
@@ -1,30 +1,8 @@
1
1
  import type { SelectField } from '../../../types/fields.js';
2
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: SelectField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T, string | string[] | undefined>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
2
+ type Props = {
3
+ field: SelectField;
4
+ value: string | string[] | undefined;
13
5
  };
14
- declare class __sveltets_Render<T extends Record<string, unknown>> {
15
- props(): ReturnType<typeof $$render<T>>['props'];
16
- events(): ReturnType<typeof $$render<T>>['events'];
17
- slots(): ReturnType<typeof $$render<T>>['slots'];
18
- bindings(): "";
19
- exports(): {};
20
- }
21
- interface $$IsomorphicComponent {
22
- new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
23
- $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
24
- } & ReturnType<__sveltets_Render<T>['exports']>;
25
- <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
26
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
- }
28
- declare const SelectField: $$IsomorphicComponent;
29
- type SelectField<T extends Record<string, unknown>> = InstanceType<typeof SelectField<T>>;
6
+ declare const SelectField: import("svelte").Component<Props, {}, "value">;
7
+ type SelectField = ReturnType<typeof SelectField>;
30
8
  export default SelectField;
@@ -1,12 +1,5 @@
1
- <script lang="ts" module>
2
- type T = Record<string, unknown>;
3
- </script>
4
-
5
- <script lang="ts" generics="T extends Record<string, unknown>">
6
- import {
7
- type FormPathLeaves,
8
- type SuperForm
9
- } from 'sveltekit-superforms';
1
+ <script lang="ts">
2
+ import type { SuperForm } from 'sveltekit-superforms';
10
3
  import FieldRenderer from './field-renderer.svelte';
11
4
  import { joinPath } from '../../utils/objectPath.js';
12
5
  import { getAtPath, setAtPath } from '../../utils/objectPath.js';
@@ -28,8 +21,8 @@
28
21
 
29
22
  type Props = {
30
23
  field: SeoField;
31
- form: SuperForm<T>;
32
- path: FormPathLeaves<T, SeoFieldData | undefined>;
24
+ form: SuperForm<Record<string, unknown>>;
25
+ path: string;
33
26
  };
34
27
 
35
28
  let { field, form, path, ...props }: Props = $props();
@@ -261,7 +254,7 @@
261
254
  <div>
262
255
  <FieldRenderer
263
256
  field={f}
264
- form={form as SuperForm<Record<string, unknown>>}
257
+ {form}
265
258
  path={joinPath(path, f.slug)}
266
259
  />
267
260
  {#if f.slug === 'title'}
@@ -1,30 +1,10 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
- import type { SeoField, SeoFieldData } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: SeoField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T, SeoFieldData | undefined>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
1
+ import type { SuperForm } from 'sveltekit-superforms';
2
+ import type { SeoField } from '../../../types/fields.js';
3
+ type Props = {
4
+ field: SeoField;
5
+ form: SuperForm<Record<string, unknown>>;
6
+ path: string;
13
7
  };
14
- declare class __sveltets_Render<T extends Record<string, unknown>> {
15
- props(): ReturnType<typeof $$render<T>>['props'];
16
- events(): ReturnType<typeof $$render<T>>['events'];
17
- slots(): ReturnType<typeof $$render<T>>['slots'];
18
- bindings(): "";
19
- exports(): {};
20
- }
21
- interface $$IsomorphicComponent {
22
- new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
23
- $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
24
- } & ReturnType<__sveltets_Render<T>['exports']>;
25
- <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
26
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
- }
28
- declare const SeoField: $$IsomorphicComponent;
29
- type SeoField<T extends Record<string, unknown>> = InstanceType<typeof SeoField<T>>;
8
+ declare const SeoField: import("svelte").Component<Props, {}, "">;
9
+ type SeoField = ReturnType<typeof SeoField>;
30
10
  export default SeoField;
@@ -1,16 +1,6 @@
1
- <script lang="ts" module>
2
- type T = Record<string, unknown>;
3
- </script>
4
-
5
- <script lang="ts" generics="T extends Record<string, unknown>">
1
+ <script lang="ts">
6
2
  import Button from '../../../components/ui/button/button.svelte';
7
3
  import Input from '../../../components/ui/input/input.svelte';
8
- import {
9
- formFieldProxy,
10
- type FormFieldProxy,
11
- type FormPathLeaves,
12
- type SuperForm
13
- } from 'sveltekit-superforms';
14
4
  import type { ArrayField, UrlFieldData } from '../../../types/fields.js';
15
5
  import { onMount } from 'svelte';
16
6
  import CirclePlus from '@tabler/icons-svelte/icons/circle-plus';
@@ -23,21 +13,18 @@
23
13
 
24
14
  type Props = {
25
15
  field: ArrayField;
26
- form: SuperForm<T>;
27
- path: FormPathLeaves<T>;
16
+ value: unknown[] | undefined;
28
17
  };
29
18
 
30
- let { field, form, path, ...props }: Props = $props();
31
-
32
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<unknown[] | undefined>;
19
+ let { field, value = $bindable(), ...props }: Props = $props();
33
20
 
34
21
  onMount(() => {
35
- if (!$value || !Array.isArray($value)) {
36
- $value = [];
22
+ if (!value || !Array.isArray(value)) {
23
+ value = [];
37
24
  }
38
25
  });
39
26
 
40
- const atMax = $derived(field.maxItems !== undefined && ($value?.length ?? 0) >= field.maxItems);
27
+ const atMax = $derived(field.maxItems !== undefined && (value?.length ?? 0) >= field.maxItems);
41
28
 
42
29
  // --- Text ---
43
30
  let textInput = $state('');
@@ -47,9 +34,9 @@
47
34
  if (field.localized) {
48
35
  const item: Record<string, string> = {};
49
36
  item[contentLanguage.current] = textInput.trim();
50
- $value = [...($value ?? []), item];
37
+ value = [...(value ?? []), item];
51
38
  } else {
52
- $value = [...($value ?? []), textInput.trim()];
39
+ value = [...(value ?? []), textInput.trim()];
53
40
  }
54
41
  textInput = '';
55
42
  }
@@ -67,7 +54,7 @@
67
54
  function addNumberItem() {
68
55
  const num = Number(numberInput);
69
56
  if (numberInput === '' || isNaN(num) || atMax) return;
70
- $value = [...($value ?? []), num];
57
+ value = [...(value ?? []), num];
71
58
  numberInput = '';
72
59
  }
73
60
 
@@ -82,13 +69,13 @@
82
69
  function addUrlItem() {
83
70
  if (atMax) return;
84
71
  const item: UrlFieldData = { url: {}, text: {}, newTab: false };
85
- $value = [...($value ?? []), item];
72
+ value = [...(value ?? []), item];
86
73
  }
87
74
 
88
75
  // --- Common ---
89
76
  function removeItem(index: number) {
90
- if (!$value) return;
91
- $value = $value.filter((_, i) => i !== index);
77
+ if (!value) return;
78
+ value = value.filter((_, i) => i !== index);
92
79
  }
93
80
 
94
81
  function getTextDisplay(item: unknown): string {
@@ -104,9 +91,9 @@
104
91
  {#if field.of === 'text'}
105
92
  <!-- Tag chips for text items -->
106
93
  <div class="space-y-3">
107
- {#if $value && $value.length > 0}
94
+ {#if value && value.length > 0}
108
95
  <div class="flex flex-wrap gap-2">
109
- {#each $value as item, index}
96
+ {#each value as item, index}
110
97
  <span
111
98
  class="bg-[#EEEAF8] text-[#1A1A2E] inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm font-medium"
112
99
  >
@@ -122,9 +109,9 @@
122
109
  if (typeof item === 'object' && item !== null) {
123
110
  const rec = { ...(item as Record<string, string>) };
124
111
  rec[contentLanguage.current] = val;
125
- const arr = [...($value ?? [])];
112
+ const arr = [...(value ?? [])];
126
113
  arr[index] = rec;
127
- $value = arr;
114
+ value = arr;
128
115
  }
129
116
  }}
130
117
  />
@@ -161,7 +148,7 @@
161
148
 
162
149
  {#if field.maxItems !== undefined}
163
150
  <p class="text-xs {atMax ? 'text-destructive' : 'text-muted-foreground'}">
164
- {$value?.length ?? 0} / {field.maxItems}
151
+ {value?.length ?? 0} / {field.maxItems}
165
152
  </p>
166
153
  {/if}
167
154
  </div>
@@ -169,9 +156,9 @@
169
156
  {:else if field.of === 'number'}
170
157
  <!-- Tag chips for number items -->
171
158
  <div class="space-y-3">
172
- {#if $value && $value.length > 0}
159
+ {#if value && value.length > 0}
173
160
  <div class="flex flex-wrap gap-2">
174
- {#each $value as item, index}
161
+ {#each value as item, index}
175
162
  <span
176
163
  class="bg-[#EEEAF8] text-[#1A1A2E] inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm font-medium tabular-nums"
177
164
  >
@@ -206,7 +193,7 @@
206
193
 
207
194
  {#if field.maxItems !== undefined}
208
195
  <p class="text-xs {atMax ? 'text-destructive' : 'text-muted-foreground'}">
209
- {$value?.length ?? 0} / {field.maxItems}
196
+ {value?.length ?? 0} / {field.maxItems}
210
197
  </p>
211
198
  {/if}
212
199
  </div>
@@ -214,9 +201,9 @@
214
201
  {:else if field.of === 'url'}
215
202
  <!-- Compact list for URL items -->
216
203
  <div class="space-y-3">
217
- {#if $value && $value.length > 0}
204
+ {#if value && value.length > 0}
218
205
  <div class="space-y-2">
219
- {#each $value as item, index}
206
+ {#each value as item, index}
220
207
  {@const urlItem = item as UrlFieldData}
221
208
  <div class="flex items-start gap-2 rounded-xl border border-[#E2DFF0] bg-[#F4F2FA] p-3">
222
209
  <div class="flex-1 space-y-2">
@@ -227,9 +214,9 @@
227
214
  oninput={(e) => {
228
215
  const val = e.currentTarget.value;
229
216
  const updated = { ...urlItem, url: { ...(urlItem.url ?? {}), [contentLanguage.current]: val } };
230
- const arr = [...($value ?? [])];
217
+ const arr = [...(value ?? [])];
231
218
  arr[index] = updated;
232
- $value = arr;
219
+ value = arr;
233
220
  }}
234
221
  />
235
222
  <div class="flex items-center gap-2">
@@ -241,9 +228,9 @@
241
228
  oninput={(e) => {
242
229
  const val = e.currentTarget.value;
243
230
  const updated = { ...urlItem, text: { ...(urlItem.text ?? {}), [contentLanguage.current]: val } };
244
- const arr = [...($value ?? [])];
231
+ const arr = [...(value ?? [])];
245
232
  arr[index] = updated;
246
- $value = arr;
233
+ value = arr;
247
234
  }}
248
235
  />
249
236
  <label class="flex items-center gap-1.5 text-xs text-[#555566] whitespace-nowrap">
@@ -252,9 +239,9 @@
252
239
  checked={urlItem.newTab ?? false}
253
240
  onchange={(e) => {
254
241
  const updated = { ...urlItem, newTab: e.currentTarget.checked };
255
- const arr = [...($value ?? [])];
242
+ const arr = [...(value ?? [])];
256
243
  arr[index] = updated;
257
- $value = arr;
244
+ value = arr;
258
245
  }}
259
246
  class="accent-[#5B4A9E]"
260
247
  />
@@ -282,7 +269,7 @@
282
269
 
283
270
  {#if field.maxItems !== undefined}
284
271
  <p class="text-xs {atMax ? 'text-destructive' : 'text-muted-foreground'}">
285
- {$value?.length ?? 0} / {field.maxItems}
272
+ {value?.length ?? 0} / {field.maxItems}
286
273
  </p>
287
274
  {/if}
288
275
  </div>
@@ -1,30 +1,8 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
1
  import type { ArrayField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: ArrayField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
2
+ type Props = {
3
+ field: ArrayField;
4
+ value: unknown[] | undefined;
13
5
  };
14
- declare class __sveltets_Render<T extends Record<string, unknown>> {
15
- props(): ReturnType<typeof $$render<T>>['props'];
16
- events(): ReturnType<typeof $$render<T>>['events'];
17
- slots(): ReturnType<typeof $$render<T>>['slots'];
18
- bindings(): "";
19
- exports(): {};
20
- }
21
- interface $$IsomorphicComponent {
22
- new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
23
- $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
24
- } & ReturnType<__sveltets_Render<T>['exports']>;
25
- <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
26
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
- }
28
- declare const SimpleArrayField: $$IsomorphicComponent;
29
- type SimpleArrayField<T extends Record<string, unknown>> = InstanceType<typeof SimpleArrayField<T>>;
6
+ declare const SimpleArrayField: import("svelte").Component<Props, {}, "value">;
7
+ type SimpleArrayField = ReturnType<typeof SimpleArrayField>;
30
8
  export default SimpleArrayField;
@@ -1,11 +1,6 @@
1
- <script lang="ts" module>
2
- type T = Record<string, unknown>;
3
- </script>
4
-
5
- <script lang="ts" generics="T extends Record<string, unknown>">
1
+ <script lang="ts">
6
2
  import {
7
3
  formFieldProxy,
8
- type FormFieldProxy,
9
4
  type FormPathLeaves,
10
5
  type SuperForm
11
6
  } from 'sveltekit-superforms';
@@ -16,8 +11,8 @@
16
11
 
17
12
  type Props = {
18
13
  field: SlugField;
19
- form: SuperForm<T>;
20
- path: FormPathLeaves<T, string | undefined>;
14
+ form: SuperForm<Record<string, unknown>>;
15
+ path: FormPathLeaves<Record<string, unknown>>;
21
16
  };
22
17
 
23
18
  let { field, form, path, ...props }: Props = $props();
@@ -27,7 +22,7 @@
27
22
 
28
23
  const { form: formData } = form;
29
24
 
30
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<string | undefined>;
25
+ const { value } = formFieldProxy(form, path);
31
26
 
32
27
  let patternKeys = effectivePattern ? extractPatternKeys(effectivePattern) : [];
33
28
 
@@ -41,8 +36,8 @@
41
36
  patternKeys.map((key) => {
42
37
  const { value: valueStore } = formFieldProxy(
43
38
  form,
44
- key as FormPathLeaves<T, string>
45
- ) satisfies FormFieldProxy<string>;
39
+ key as FormPathLeaves<Record<string, unknown>>
40
+ );
46
41
  valueStore.subscribe(() => {
47
42
  try {
48
43
  $value = generateSlug(pattern);
@@ -1,30 +1,10 @@
1
1
  import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
2
  import type { SlugField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: SlugField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T, string | undefined>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
3
+ type Props = {
4
+ field: SlugField;
5
+ form: SuperForm<Record<string, unknown>>;
6
+ path: FormPathLeaves<Record<string, unknown>>;
13
7
  };
14
- declare class __sveltets_Render<T extends Record<string, unknown>> {
15
- props(): ReturnType<typeof $$render<T>>['props'];
16
- events(): ReturnType<typeof $$render<T>>['events'];
17
- slots(): ReturnType<typeof $$render<T>>['slots'];
18
- bindings(): "";
19
- exports(): {};
20
- }
21
- interface $$IsomorphicComponent {
22
- new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
23
- $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
24
- } & ReturnType<__sveltets_Render<T>['exports']>;
25
- <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
26
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
- }
28
- declare const SlugField: $$IsomorphicComponent;
29
- type SlugField<T extends Record<string, unknown>> = InstanceType<typeof SlugField<T>>;
8
+ declare const SlugField: import("svelte").Component<Props, {}, "">;
9
+ type SlugField = ReturnType<typeof SlugField>;
30
10
  export default SlugField;