includio-cms 0.5.2 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/ROADMAP.md +29 -0
  3. package/dist/admin/api/rest/handler.d.ts +7 -0
  4. package/dist/admin/api/rest/handler.js +116 -0
  5. package/dist/admin/api/rest/middleware/apiKey.d.ts +6 -0
  6. package/dist/admin/api/rest/middleware/apiKey.js +45 -0
  7. package/dist/admin/api/rest/routes/collections.d.ts +5 -0
  8. package/dist/admin/api/rest/routes/collections.js +104 -0
  9. package/dist/admin/api/rest/routes/entries.d.ts +2 -0
  10. package/dist/admin/api/rest/routes/entries.js +37 -0
  11. package/dist/admin/api/rest/routes/languages.d.ts +1 -0
  12. package/dist/admin/api/rest/routes/languages.js +5 -0
  13. package/dist/admin/api/rest/routes/schema.d.ts +2 -0
  14. package/dist/admin/api/rest/routes/schema.js +78 -0
  15. package/dist/admin/api/rest/routes/singletons.d.ts +3 -0
  16. package/dist/admin/api/rest/routes/singletons.js +60 -0
  17. package/dist/admin/auth-client.d.ts +7 -7
  18. package/dist/admin/client/collection/collection-entries.svelte +56 -5
  19. package/dist/admin/client/collection/data-table.svelte +127 -18
  20. package/dist/admin/client/collection/data-table.svelte.d.ts +2 -0
  21. package/dist/admin/client/entry/entry-form.svelte +1 -0
  22. package/dist/admin/client/entry/entry.svelte +130 -123
  23. package/dist/admin/client/entry/hybrid/hybrid-preview.svelte +92 -9
  24. package/dist/admin/components/fields/blocks-field.svelte +142 -112
  25. package/dist/admin/components/fields/blocks-field.svelte.d.ts +10 -30
  26. package/dist/admin/components/fields/boolean-field.svelte +28 -38
  27. package/dist/admin/components/fields/boolean-field.svelte.d.ts +5 -27
  28. package/dist/admin/components/fields/checkboxes-field.svelte +12 -24
  29. package/dist/admin/components/fields/checkboxes-field.svelte.d.ts +5 -27
  30. package/dist/admin/components/fields/content-field.svelte +4 -17
  31. package/dist/admin/components/fields/content-field.svelte.d.ts +5 -27
  32. package/dist/admin/components/fields/date-field.svelte +8 -21
  33. package/dist/admin/components/fields/date-field.svelte.d.ts +5 -27
  34. package/dist/admin/components/fields/datetime-field.svelte +8 -21
  35. package/dist/admin/components/fields/datetime-field.svelte.d.ts +5 -27
  36. package/dist/admin/components/fields/field-renderer.svelte +32 -19
  37. package/dist/admin/components/fields/field-renderer.svelte.d.ts +1 -1
  38. package/dist/admin/components/fields/field-value-bridge.svelte +21 -0
  39. package/dist/admin/components/fields/field-value-bridge.svelte.d.ts +31 -0
  40. package/dist/admin/components/fields/fields-form.svelte +13 -10
  41. package/dist/admin/components/fields/file-field.svelte +12 -27
  42. package/dist/admin/components/fields/file-field.svelte.d.ts +5 -27
  43. package/dist/admin/components/fields/image-field.svelte +13 -28
  44. package/dist/admin/components/fields/image-field.svelte.d.ts +5 -27
  45. package/dist/admin/components/fields/media-field.svelte +15 -30
  46. package/dist/admin/components/fields/media-field.svelte.d.ts +5 -27
  47. package/dist/admin/components/fields/number-field.svelte +6 -20
  48. package/dist/admin/components/fields/number-field.svelte.d.ts +5 -27
  49. package/dist/admin/components/fields/object-field.svelte +26 -29
  50. package/dist/admin/components/fields/object-field.svelte.d.ts +11 -31
  51. package/dist/admin/components/fields/radio-field.svelte +8 -20
  52. package/dist/admin/components/fields/radio-field.svelte.d.ts +5 -27
  53. package/dist/admin/components/fields/relation-field.svelte +28 -40
  54. package/dist/admin/components/fields/relation-field.svelte.d.ts +5 -27
  55. package/dist/admin/components/fields/richtext-field.svelte +4 -17
  56. package/dist/admin/components/fields/richtext-field.svelte.d.ts +5 -27
  57. package/dist/admin/components/fields/select-field.svelte +14 -28
  58. package/dist/admin/components/fields/select-field.svelte.d.ts +5 -27
  59. package/dist/admin/components/fields/seo-field.svelte +5 -12
  60. package/dist/admin/components/fields/seo-field.svelte.d.ts +8 -28
  61. package/dist/admin/components/fields/simple-array-field.svelte +29 -42
  62. package/dist/admin/components/fields/simple-array-field.svelte.d.ts +5 -27
  63. package/dist/admin/components/fields/slug-field.svelte +6 -11
  64. package/dist/admin/components/fields/slug-field.svelte.d.ts +6 -26
  65. package/dist/admin/components/fields/text-field-wrapper.svelte +22 -40
  66. package/dist/admin/components/fields/text-field.svelte +7 -19
  67. package/dist/admin/components/fields/text-field.svelte.d.ts +5 -27
  68. package/dist/admin/components/fields/url-field-wrapper.svelte +8 -3
  69. package/dist/admin/components/fields/url-field.svelte +294 -128
  70. package/dist/admin/components/fields/url-field.svelte.d.ts +5 -27
  71. package/dist/admin/components/layout/layout-renderer.svelte +8 -6
  72. package/dist/admin/components/layout/nav-collections.svelte +2 -1
  73. package/dist/admin/components/layout/nav-forms.svelte +2 -1
  74. package/dist/admin/components/layout/nav-singletons.svelte +2 -1
  75. package/dist/admin/components/tiptap/InlineBlockNodeView.svelte +221 -31
  76. package/dist/admin/components/tiptap/content-editor.svelte +13 -2
  77. package/dist/admin/components/tiptap/inline-block-node.d.ts +1 -0
  78. package/dist/admin/components/tiptap/inline-block-node.js +18 -1
  79. package/dist/admin/components/tiptap/slash-command.js +2 -3
  80. package/dist/admin/components/tiptap/standalone-form.d.ts +7 -0
  81. package/dist/admin/components/tiptap/standalone-form.js +31 -0
  82. package/dist/admin/components/tiptap/tiptap-editor.svelte +7 -0
  83. package/dist/admin/remote/entry.remote.d.ts +9 -1
  84. package/dist/admin/remote/entry.remote.js +30 -2
  85. package/dist/admin/styles/admin.css +10 -0
  86. package/dist/admin/utils/fieldCondition.d.ts +6 -0
  87. package/dist/admin/utils/fieldCondition.js +20 -0
  88. package/dist/cli/scaffold/admin.js +8 -0
  89. package/dist/components/ui/switch/index.d.ts +2 -0
  90. package/dist/components/ui/switch/index.js +4 -0
  91. package/dist/components/ui/switch/switch.svelte +26 -0
  92. package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
  93. package/dist/core/cms.d.ts +2 -1
  94. package/dist/core/cms.js +2 -0
  95. package/dist/core/fields/fieldSchemaToTs.js +15 -3
  96. package/dist/core/fields/formFieldSchemaToTs.js +22 -6
  97. package/dist/core/fields/urlUtils.d.ts +14 -0
  98. package/dist/core/fields/urlUtils.js +21 -0
  99. package/dist/core/server/entries/operations/get.js +2 -1
  100. package/dist/core/server/entries/operations/update.d.ts +1 -0
  101. package/dist/core/server/entries/operations/update.js +5 -1
  102. package/dist/core/server/fields/populateEntry.js +43 -0
  103. package/dist/core/server/fields/resolveImageFields.js +33 -1
  104. package/dist/core/server/fields/resolveRelationFields.js +46 -0
  105. package/dist/core/server/fields/resolveRichtextLinks.js +15 -1
  106. package/dist/core/server/fields/resolveUrlFields.js +65 -0
  107. package/dist/core/server/generator/formFieldSchemaToString.js +40 -9
  108. package/dist/core/server/generator/formFields.js +2 -0
  109. package/dist/core/server/generator/generator.js +25 -1
  110. package/dist/db-postgres/schema/entry.d.ts +17 -0
  111. package/dist/db-postgres/schema/entry.js +4 -2
  112. package/dist/schemas/field/url.d.ts +2 -0
  113. package/dist/schemas/field/url.js +4 -2
  114. package/dist/server/auth.d.ts +6 -6
  115. package/dist/sveltekit/server/handle.js +1 -0
  116. package/dist/types/cms.d.ts +7 -0
  117. package/dist/types/collections.d.ts +2 -0
  118. package/dist/types/entries.d.ts +7 -1
  119. package/dist/types/fields.d.ts +9 -0
  120. package/dist/types/formFields.d.ts +15 -2
  121. package/dist/types/index.d.ts +2 -1
  122. package/dist/types/index.js +1 -0
  123. package/dist/updates/0.5.3/index.d.ts +2 -0
  124. package/dist/updates/0.5.3/index.js +19 -0
  125. package/dist/updates/0.5.4/index.d.ts +2 -0
  126. package/dist/updates/0.5.4/index.js +15 -0
  127. package/dist/updates/0.5.5/index.d.ts +2 -0
  128. package/dist/updates/0.5.5/index.js +20 -0
  129. package/dist/updates/index.js +4 -1
  130. package/package.json +7 -1
  131. package/dist/admin/components/fields/standalone-field-renderer.svelte +0 -148
  132. package/dist/admin/components/fields/standalone-field-renderer.svelte.d.ts +0 -9
@@ -1,30 +1,8 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
1
  import type { FileField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: FileField;
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: FileField;
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 FileField: $$IsomorphicComponent;
29
- type FileField<T extends Record<string, unknown>> = InstanceType<typeof FileField<T>>;
6
+ declare const FileField: import("svelte").Component<Props, {}, "value">;
7
+ type FileField = ReturnType<typeof FileField>;
30
8
  export default FileField;
@@ -1,15 +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>">
1
+ <script lang="ts">
6
2
  import * as Dialog from '../../../components/ui/dialog/index.js';
7
- import {
8
- formFieldProxy,
9
- type FormFieldProxy,
10
- type FormPathLeaves,
11
- type SuperForm
12
- } from 'sveltekit-superforms';
13
3
  import { onMount } from 'svelte';
14
4
  import Button from '../../../components/ui/button/button.svelte';
15
5
  import type { ImageField } from '../../../types/fields.js';
@@ -42,31 +32,26 @@
42
32
 
43
33
  type Props = {
44
34
  field: ImageField;
45
- form: SuperForm<T>;
46
- path: FormPathLeaves<T, string | string[] | undefined>;
35
+ value: string | string[] | undefined;
47
36
  };
48
37
 
49
- let { field, form, path, ...props }: Props = $props();
50
-
51
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<
52
- string | string[] | undefined
53
- >;
38
+ let { field, value = $bindable(), ...props }: Props = $props();
54
39
 
55
40
  onMount(() => {
56
- if ($value === undefined) {
57
- $value = field.multiple ? [] : '';
41
+ if (value === undefined) {
42
+ value = field.multiple ? [] : '';
58
43
  }
59
44
  });
60
45
  </script>
61
46
 
62
- {#if $value !== undefined}
47
+ {#if value !== undefined}
63
48
  <Dialog.Root>
64
49
  <Dialog.Trigger>
65
50
  {#snippet child({ props })}
66
- {#if $value && ((typeof $value === 'string' && $value !== '') || (Array.isArray($value) && $value.length > 0))}
51
+ {#if value && ((typeof value === 'string' && value !== '') || (Array.isArray(value) && value.length > 0))}
67
52
  <div class="group/dialog-trigger relative aspect-square max-w-64 overflow-hidden rounded-2xl border">
68
- {#if typeof $value === 'string'}
69
- {#await remotes.getFileById($value)}
53
+ {#if typeof value === 'string'}
54
+ {#await remotes.getFileById(value)}
70
55
  <div class="animate-pulse bg-muted w-full h-full rounded-xl"></div>
71
56
  {:then file}
72
57
  {#if file}
@@ -83,8 +68,8 @@
83
68
  </button>
84
69
  {/if}
85
70
  {/await}
86
- {:else if Array.isArray($value) && $value.length > 0}
87
- {@const valueArr = $value}
71
+ {:else if Array.isArray(value) && value.length > 0}
72
+ {@const valueArr = value}
88
73
  {#await remotes.getMediaFiles({ data: { ids: valueArr } })}
89
74
  <div class="animate-pulse bg-muted w-full h-full rounded-xl"></div>
90
75
  {:then files}
@@ -151,7 +136,7 @@
151
136
  class="h-8"
152
137
  onclick={(e) => {
153
138
  e.stopPropagation();
154
- $value = field.multiple ? [] : '';
139
+ value = field.multiple ? [] : '';
155
140
  }}
156
141
  >
157
142
  <X class="h-4 w-4" />
@@ -176,7 +161,7 @@
176
161
  {/snippet}
177
162
  </Dialog.Trigger>
178
163
  <Dialog.Content class="h-[85vh] w-full max-w-6xl! sm:max-w-6xl! overflow-hidden p-0 flex flex-col">
179
- <MediaSelector bind:selected={$value} multiple={field.multiple} accept="image/*" />
164
+ <MediaSelector bind:selected={value} multiple={field.multiple} accept="image/*" />
180
165
  </Dialog.Content>
181
166
  </Dialog.Root>
182
167
 
@@ -1,30 +1,8 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
1
  import type { ImageField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: ImageField;
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: ImageField;
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 ImageField: $$IsomorphicComponent;
29
- type ImageField<T extends Record<string, unknown>> = InstanceType<typeof ImageField<T>>;
6
+ declare const ImageField: import("svelte").Component<Props, {}, "value">;
7
+ type ImageField = ReturnType<typeof ImageField>;
30
8
  export default ImageField;
@@ -1,15 +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>">
1
+ <script lang="ts">
6
2
  import * as Dialog from '../../../components/ui/dialog/index.js';
7
- import {
8
- formFieldProxy,
9
- type FormFieldProxy,
10
- type FormPathLeaves,
11
- type SuperForm
12
- } from 'sveltekit-superforms';
13
3
  import { onMount } from 'svelte';
14
4
  import Button from '../../../components/ui/button/button.svelte';
15
5
  import type { MediaField } from '../../../types/fields.js';
@@ -110,19 +100,14 @@
110
100
 
111
101
  type Props = {
112
102
  field: MediaField;
113
- form: SuperForm<T>;
114
- path: FormPathLeaves<T, string | string[] | undefined>;
103
+ value: string | string[] | undefined;
115
104
  };
116
105
 
117
- let { field, form, path, ...props }: Props = $props();
118
-
119
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<
120
- string | string[] | undefined
121
- >;
106
+ let { field, value = $bindable(), ...props }: Props = $props();
122
107
 
123
108
  onMount(() => {
124
- if ($value === undefined) {
125
- $value = field.multiple ? [] : '';
109
+ if (value === undefined) {
110
+ value = field.multiple ? [] : '';
126
111
  }
127
112
  });
128
113
  </script>
@@ -203,14 +188,14 @@
203
188
  {/if}
204
189
  {/snippet}
205
190
 
206
- {#if $value !== undefined}
191
+ {#if value !== undefined}
207
192
  <Dialog.Root>
208
193
  <Dialog.Trigger>
209
194
  {#snippet child({ props })}
210
- {#if $value && ((typeof $value === 'string' && $value !== '') || (Array.isArray($value) && $value.length > 0))}
195
+ {#if value && ((typeof value === 'string' && value !== '') || (Array.isArray(value) && value.length > 0))}
211
196
  <div class="max-w-96">
212
- {#if typeof $value === 'string'}
213
- {#await remotes.getFileById($value)}
197
+ {#if typeof value === 'string'}
198
+ {#await remotes.getFileById(value)}
214
199
  <div class="animate-pulse bg-muted w-full aspect-video rounded-xl"></div>
215
200
  {:then file}
216
201
  {#if file}
@@ -223,7 +208,7 @@
223
208
  {lang[interfaceLanguage.current].change}
224
209
  </Button>
225
210
  {#if !field.required}
226
- <Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); $value = ''; }}>
211
+ <Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); value = ''; }}>
227
212
  <X class="h-4 w-4" />
228
213
  {lang[interfaceLanguage.current].remove}
229
214
  </Button>
@@ -246,7 +231,7 @@
246
231
  {lang[interfaceLanguage.current].change}
247
232
  </Button>
248
233
  {#if !field.required}
249
- <Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); $value = ''; }}>
234
+ <Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); value = ''; }}>
250
235
  <X class="h-4 w-4" />
251
236
  {lang[interfaceLanguage.current].remove}
252
237
  </Button>
@@ -256,8 +241,8 @@
256
241
  {/if}
257
242
  {/if}
258
243
  {/await}
259
- {:else if Array.isArray($value) && $value.length > 0}
260
- {@const valueArr = $value}
244
+ {:else if Array.isArray(value) && value.length > 0}
245
+ {@const valueArr = value}
261
246
  {#await remotes.getMediaFiles({ data: { ids: valueArr } })}
262
247
  <div class="animate-pulse bg-muted w-full aspect-video rounded-xl"></div>
263
248
  {:then files}
@@ -304,7 +289,7 @@
304
289
  {lang[interfaceLanguage.current].change}
305
290
  </Button>
306
291
  {#if !field.required}
307
- <Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); $value = field.multiple ? [] : ''; }}>
292
+ <Button variant="destructive" size="sm" class="h-8" onclick={(e) => { e.stopPropagation(); value = field.multiple ? [] : ''; }}>
308
293
  <X class="h-4 w-4" />
309
294
  {lang[interfaceLanguage.current].remove}
310
295
  </Button>
@@ -331,7 +316,7 @@
331
316
  {/snippet}
332
317
  </Dialog.Trigger>
333
318
  <Dialog.Content class="h-[85vh] w-full max-w-6xl! sm:max-w-6xl! overflow-hidden p-0 flex flex-col">
334
- <MediaSelector bind:selected={$value} multiple={field.multiple} accept={field.accept} />
319
+ <MediaSelector bind:selected={value} multiple={field.multiple} accept={field.accept} />
335
320
  </Dialog.Content>
336
321
  </Dialog.Root>
337
322
 
@@ -1,30 +1,8 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
1
  import type { MediaField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: MediaField;
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: MediaField;
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 MediaField: $$IsomorphicComponent;
29
- type MediaField<T extends Record<string, unknown>> = InstanceType<typeof MediaField<T>>;
6
+ declare const MediaField: import("svelte").Component<Props, {}, "value">;
7
+ type MediaField = ReturnType<typeof MediaField>;
30
8
  export default MediaField;
@@ -1,34 +1,20 @@
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 Input from '../../../components/ui/input/input.svelte';
7
- import Textarea from '../../../components/ui/textarea/textarea.svelte';
8
3
  import type { NumberField } from '../../../types/fields.js';
9
4
  import { onMount } from 'svelte';
10
- import {
11
- formFieldProxy,
12
- type FormFieldProxy,
13
- type FormPathLeaves,
14
- type SuperForm
15
- } from 'sveltekit-superforms';
16
5
 
17
6
  type Props = {
18
7
  field: NumberField;
19
- form: SuperForm<T>;
20
- path: FormPathLeaves<T, number | undefined>;
8
+ value: number | undefined;
21
9
  };
22
10
 
23
- let { field, form, path, ...props }: Props = $props();
24
-
25
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<number | undefined>;
11
+ let { field, value = $bindable(), ...props }: Props = $props();
26
12
 
27
13
  onMount(() => {
28
- if ($value === undefined && field.defaultValue !== undefined) {
29
- $value = field.defaultValue;
14
+ if (value === undefined && field.defaultValue !== undefined) {
15
+ value = field.defaultValue;
30
16
  }
31
17
  });
32
18
  </script>
33
19
 
34
- <Input {...props} bind:value={$value} type="number" min={field.min} max={field.max} step={field.step} />
20
+ <Input {...props} bind:value type="number" min={field.min} max={field.max} step={field.step} />
@@ -1,30 +1,8 @@
1
1
  import type { NumberField } 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: NumberField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T, number | undefined>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
2
+ type Props = {
3
+ field: NumberField;
4
+ value: number | 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 NumberField: $$IsomorphicComponent;
29
- type NumberField<T extends Record<string, unknown>> = InstanceType<typeof NumberField<T>>;
6
+ declare const NumberField: import("svelte").Component<Props, {}, "value">;
7
+ type NumberField = ReturnType<typeof NumberField>;
30
8
  export default NumberField;
@@ -1,17 +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>">
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';
12
7
  import FieldRenderer from './field-renderer.svelte';
13
8
  import { joinPath, normalizePath } from '../../utils/objectPath.js';
14
9
  import type { ObjectField, ObjectFieldData } from '../../../types/fields.js';
10
+ import { evaluateCondition } from '../../utils/fieldCondition.js';
15
11
  import { onMount } from 'svelte';
16
12
  import * as Item from '../../../components/ui/item/index.js';
17
13
  import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
@@ -21,8 +17,8 @@
21
17
  type Props = {
22
18
  objectFieldType?: 'default' | 'inline';
23
19
  field: ObjectField;
24
- form: SuperForm<T>;
25
- path: FormPathLeaves<T, ObjectFieldData | undefined>;
20
+ form: SuperForm<Record<string, unknown>>;
21
+ path: FormPathLeaves<Record<string, unknown>>;
26
22
  focusedPath?: string | null;
27
23
  flashingPath?: string | null;
28
24
  depth?: number;
@@ -31,9 +27,8 @@
31
27
  let { field, form, path, objectFieldType = 'default', focusedPath = null, flashingPath = null, depth = 0, ...props }: Props = $props();
32
28
 
33
29
  const interfaceLanguage = useInterfaceLanguage();
34
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<
35
- ObjectFieldData | undefined
36
- >;
30
+ const { form: formData } = form;
31
+ const { value } = formFieldProxy(form, path) as { value: import('svelte/store').Writable<ObjectFieldData | undefined> };
37
32
 
38
33
  onMount(() => {
39
34
  if (!$value) {
@@ -64,24 +59,26 @@
64
59
  {#snippet content()}
65
60
  <div class="space-y-4">
66
61
  {#each field.fields as f}
67
- {@const fieldPath = joinPath(path, 'data', f.slug)}
68
- {@const showFlash = isFlashing(fieldPath)}
69
- <div
70
- data-field-path={fieldPath}
71
- class={cn(
72
- 'rounded-lg transition-all duration-500',
73
- showFlash && 'ring-2 ring-primary ring-offset-2 bg-primary/5'
74
- )}
75
- >
76
- <FieldRenderer
77
- field={f}
78
- form={form as SuperForm<Record<string, unknown>>}
79
- path={fieldPath}
80
- {focusedPath}
81
- {flashingPath}
82
- depth={depth + 1}
83
- />
84
- </div>
62
+ {#if evaluateCondition(f.showWhen, (slug) => $value?.data?.[slug] ?? $formData[slug])}
63
+ {@const fieldPath = joinPath(path, 'data', f.slug)}
64
+ {@const showFlash = isFlashing(fieldPath)}
65
+ <div
66
+ data-field-path={fieldPath}
67
+ class={cn(
68
+ 'rounded-lg transition-all duration-500',
69
+ showFlash && 'ring-2 ring-primary ring-offset-2 bg-primary/5'
70
+ )}
71
+ >
72
+ <FieldRenderer
73
+ field={f}
74
+ {form}
75
+ path={fieldPath}
76
+ {focusedPath}
77
+ {flashingPath}
78
+ depth={depth + 1}
79
+ />
80
+ </div>
81
+ {/if}
85
82
  {/each}
86
83
  </div>
87
84
  {/snippet}
@@ -1,34 +1,14 @@
1
1
  import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
- import type { ObjectField, ObjectFieldData } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- objectFieldType?: "default" | "inline";
6
- field: ObjectField;
7
- form: SuperForm<T>;
8
- path: FormPathLeaves<T, ObjectFieldData | undefined>;
9
- focusedPath?: string | null;
10
- flashingPath?: string | null;
11
- depth?: number;
12
- };
13
- exports: {};
14
- bindings: "";
15
- slots: {};
16
- events: {};
2
+ import type { ObjectField } from '../../../types/fields.js';
3
+ type Props = {
4
+ objectFieldType?: 'default' | 'inline';
5
+ field: ObjectField;
6
+ form: SuperForm<Record<string, unknown>>;
7
+ path: FormPathLeaves<Record<string, unknown>>;
8
+ focusedPath?: string | null;
9
+ flashingPath?: string | null;
10
+ depth?: number;
17
11
  };
18
- declare class __sveltets_Render<T extends Record<string, unknown>> {
19
- props(): ReturnType<typeof $$render<T>>['props'];
20
- events(): ReturnType<typeof $$render<T>>['events'];
21
- slots(): ReturnType<typeof $$render<T>>['slots'];
22
- bindings(): "";
23
- exports(): {};
24
- }
25
- interface $$IsomorphicComponent {
26
- 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']>> & {
27
- $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
28
- } & ReturnType<__sveltets_Render<T>['exports']>;
29
- <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
30
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
31
- }
32
- declare const ObjectField: $$IsomorphicComponent;
33
- type ObjectField<T extends Record<string, unknown>> = InstanceType<typeof ObjectField<T>>;
12
+ declare const ObjectField: import("svelte").Component<Props, {}, "">;
13
+ type ObjectField = ReturnType<typeof ObjectField>;
34
14
  export default ObjectField;
@@ -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>">
6
- import {
7
- formFieldProxy,
8
- type FormFieldProxy,
9
- type FormPathLeaves,
10
- type SuperForm
11
- } from 'sveltekit-superforms';
1
+ <script lang="ts">
12
2
  import { onMount } from 'svelte';
13
- import type { BooleanField, ImageField, RadioField } from '../../../types/fields.js';
3
+ import type { RadioField } from '../../../types/fields.js';
14
4
  import * as Form from '../../../components/ui/form/index.js';
15
5
  import * as RadioGroup from '../../../components/ui/radio-group/index.js';
16
6
  import { useInterfaceLanguage } from '../../state/interface-language.svelte.js';
@@ -18,24 +8,22 @@
18
8
 
19
9
  type Props = {
20
10
  field: RadioField;
21
- form: SuperForm<T>;
22
- path: FormPathLeaves<T, string | undefined>;
11
+ value: string | undefined;
23
12
  };
24
13
 
25
- let { field, form, path, ...props }: Props = $props();
14
+ let { field, value = $bindable(), ...props }: Props = $props();
26
15
 
27
16
  const interfaceLanguage = useInterfaceLanguage();
28
- const { value } = formFieldProxy(form, path) satisfies FormFieldProxy<string | undefined>;
29
17
 
30
18
  onMount(() => {
31
- if ($value === undefined) {
32
- $value = field.defaultValue ?? '';
19
+ if (value === undefined) {
20
+ value = field.defaultValue ?? '';
33
21
  }
34
22
  });
35
23
  </script>
36
24
 
37
- {#if $value !== undefined}
38
- <RadioGroup.Root bind:value={$value} class="flex flex-col space-y-1" name={path}>
25
+ {#if value !== undefined}
26
+ <RadioGroup.Root bind:value class="flex flex-col space-y-1">
39
27
  {#each field.options as option}
40
28
  <div class="flex items-center space-y-0 space-x-3">
41
29
  <Form.Control>
@@ -1,30 +1,8 @@
1
- import { type FormPathLeaves, type SuperForm } from 'sveltekit-superforms';
2
1
  import type { RadioField } from '../../../types/fields.js';
3
- declare function $$render<T extends Record<string, unknown>>(): {
4
- props: {
5
- field: RadioField;
6
- form: SuperForm<T>;
7
- path: FormPathLeaves<T, string | undefined>;
8
- };
9
- exports: {};
10
- bindings: "";
11
- slots: {};
12
- events: {};
2
+ type Props = {
3
+ field: RadioField;
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 RadioField: $$IsomorphicComponent;
29
- type RadioField<T extends Record<string, unknown>> = InstanceType<typeof RadioField<T>>;
6
+ declare const RadioField: import("svelte").Component<Props, {}, "value">;
7
+ type RadioField = ReturnType<typeof RadioField>;
30
8
  export default RadioField;