@happyvertical/smrt-fields 0.40.60 → 0.40.61

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 (184) hide show
  1. package/AGENTS.md +58 -12
  2. package/README.md +90 -2
  3. package/dist/__smrt-register__.d.ts +2 -0
  4. package/dist/__smrt-register__.d.ts.map +1 -0
  5. package/dist/cache.d.ts +18 -0
  6. package/dist/cache.d.ts.map +1 -0
  7. package/dist/collections/FieldPolicyCollection.d.ts +95 -0
  8. package/dist/collections/FieldPolicyCollection.d.ts.map +1 -0
  9. package/dist/field-definitions.d.ts +77 -0
  10. package/dist/field-definitions.d.ts.map +1 -0
  11. package/dist/field-policy-resolver.d.ts +46 -0
  12. package/dist/field-policy-resolver.d.ts.map +1 -0
  13. package/dist/index.d.ts +9 -532
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +752 -55
  16. package/dist/index.js.map +1 -1
  17. package/dist/manifest.json +45 -3
  18. package/dist/models/FieldPolicy.d.ts +163 -0
  19. package/dist/models/FieldPolicy.d.ts.map +1 -0
  20. package/dist/permissions.d.ts +9 -0
  21. package/dist/permissions.d.ts.map +1 -0
  22. package/dist/playground.d.ts +2 -0
  23. package/dist/playground.d.ts.map +1 -0
  24. package/dist/playground.js +39 -0
  25. package/dist/playground.js.map +1 -0
  26. package/dist/settings-catalog.d.ts +73 -0
  27. package/dist/settings-catalog.d.ts.map +1 -0
  28. package/dist/smrt-knowledge.json +50 -7
  29. package/dist/svelte/__tests__/FieldPolicyControlPanel.test.js +223 -0
  30. package/dist/svelte/__tests__/FieldPolicyGear.test.js +503 -0
  31. package/dist/svelte/__tests__/FormHelp.test.js +138 -0
  32. package/dist/svelte/__tests__/ModeUX.test.js +109 -0
  33. package/dist/svelte/__tests__/ObjectForm.test.js +556 -0
  34. package/dist/svelte/__tests__/ObjectFormGeneratedApi.integration.test.js +436 -0
  35. package/dist/svelte/__tests__/PolicyField.test.js +373 -0
  36. package/dist/svelte/__tests__/fixtures/AdvancedFieldsFixture.svelte +30 -0
  37. package/dist/svelte/__tests__/fixtures/AdvancedFieldsFixture.svelte.d.ts +9 -0
  38. package/dist/svelte/__tests__/fixtures/AdvancedFieldsFixture.svelte.d.ts.map +1 -0
  39. package/dist/svelte/__tests__/fixtures/DomPrefillFixture.svelte +33 -0
  40. package/dist/svelte/__tests__/fixtures/DomPrefillFixture.svelte.d.ts +10 -0
  41. package/dist/svelte/__tests__/fixtures/DomPrefillFixture.svelte.d.ts.map +1 -0
  42. package/dist/svelte/__tests__/fixtures/FormHelpFixture.svelte +19 -0
  43. package/dist/svelte/__tests__/fixtures/FormHelpFixture.svelte.d.ts +10 -0
  44. package/dist/svelte/__tests__/fixtures/FormHelpFixture.svelte.d.ts.map +1 -0
  45. package/dist/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte +18 -0
  46. package/dist/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte.d.ts +11 -0
  47. package/dist/svelte/__tests__/fixtures/GeneratedApiGearFixture.svelte.d.ts.map +1 -0
  48. package/dist/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte +11 -0
  49. package/dist/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte.d.ts +19 -0
  50. package/dist/svelte/__tests__/fixtures/GracefulDegradeFixture.svelte.d.ts.map +1 -0
  51. package/dist/svelte/__tests__/fixtures/ModeSwitchFixture.svelte +18 -0
  52. package/dist/svelte/__tests__/fixtures/ModeSwitchFixture.svelte.d.ts +8 -0
  53. package/dist/svelte/__tests__/fixtures/ModeSwitchFixture.svelte.d.ts.map +1 -0
  54. package/dist/svelte/__tests__/fixtures/NoIdFixture.svelte +24 -0
  55. package/dist/svelte/__tests__/fixtures/NoIdFixture.svelte.d.ts +13 -0
  56. package/dist/svelte/__tests__/fixtures/NoIdFixture.svelte.d.ts.map +1 -0
  57. package/dist/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte +20 -0
  58. package/dist/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte.d.ts +11 -0
  59. package/dist/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte.d.ts.map +1 -0
  60. package/dist/svelte/__tests__/fixtures/ObjectFormFixture.svelte +17 -0
  61. package/dist/svelte/__tests__/fixtures/ObjectFormFixture.svelte.d.ts +10 -0
  62. package/dist/svelte/__tests__/fixtures/ObjectFormFixture.svelte.d.ts.map +1 -0
  63. package/dist/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte +25 -0
  64. package/dist/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte.d.ts +10 -0
  65. package/dist/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte.d.ts.map +1 -0
  66. package/dist/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte +34 -0
  67. package/dist/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte.d.ts +10 -0
  68. package/dist/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte.d.ts.map +1 -0
  69. package/dist/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte +29 -0
  70. package/dist/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte.d.ts +11 -0
  71. package/dist/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte.d.ts.map +1 -0
  72. package/dist/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte +33 -0
  73. package/dist/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte.d.ts +9 -0
  74. package/dist/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte.d.ts.map +1 -0
  75. package/dist/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte +40 -0
  76. package/dist/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte.d.ts +8 -0
  77. package/dist/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte.d.ts.map +1 -0
  78. package/dist/svelte/__tests__/fixtures/PrefillFixture.svelte +26 -0
  79. package/dist/svelte/__tests__/fixtures/PrefillFixture.svelte.d.ts +13 -0
  80. package/dist/svelte/__tests__/fixtures/PrefillFixture.svelte.d.ts.map +1 -0
  81. package/dist/svelte/__tests__/fixtures/ProviderFieldFixture.svelte +39 -0
  82. package/dist/svelte/__tests__/fixtures/ProviderFieldFixture.svelte.d.ts +17 -0
  83. package/dist/svelte/__tests__/fixtures/ProviderFieldFixture.svelte.d.ts.map +1 -0
  84. package/dist/svelte/__tests__/fixtures/RegistryInput.svelte +15 -0
  85. package/dist/svelte/__tests__/fixtures/RegistryInput.svelte.d.ts +5 -0
  86. package/dist/svelte/__tests__/fixtures/RegistryInput.svelte.d.ts.map +1 -0
  87. package/dist/svelte/__tests__/fixtures/RevealPrefillFixture.svelte +29 -0
  88. package/dist/svelte/__tests__/fixtures/RevealPrefillFixture.svelte.d.ts +14 -0
  89. package/dist/svelte/__tests__/fixtures/RevealPrefillFixture.svelte.d.ts.map +1 -0
  90. package/dist/svelte/__tests__/fixtures/SettingsCatalogStub.svelte +24 -0
  91. package/dist/svelte/__tests__/fixtures/SettingsCatalogStub.svelte.d.ts +14 -0
  92. package/dist/svelte/__tests__/fixtures/SettingsCatalogStub.svelte.d.ts.map +1 -0
  93. package/dist/svelte/__tests__/fixtures/SnippetFixture.svelte +28 -0
  94. package/dist/svelte/__tests__/fixtures/SnippetFixture.svelte.d.ts +13 -0
  95. package/dist/svelte/__tests__/fixtures/SnippetFixture.svelte.d.ts.map +1 -0
  96. package/dist/svelte/__tests__/fixtures/ToggleModeButton.svelte +14 -0
  97. package/dist/svelte/__tests__/fixtures/ToggleModeButton.svelte.d.ts +19 -0
  98. package/dist/svelte/__tests__/fixtures/ToggleModeButton.svelte.d.ts.map +1 -0
  99. package/dist/svelte/__tests__/fixtures/TooltipFixture.svelte +25 -0
  100. package/dist/svelte/__tests__/fixtures/TooltipFixture.svelte.d.ts +14 -0
  101. package/dist/svelte/__tests__/fixtures/TooltipFixture.svelte.d.ts.map +1 -0
  102. package/dist/svelte/__tests__/settings-catalog.test.js +161 -0
  103. package/dist/svelte/components/AdvancedFields.svelte +49 -0
  104. package/dist/svelte/components/AdvancedFields.svelte.d.ts +17 -0
  105. package/dist/svelte/components/AdvancedFields.svelte.d.ts.map +1 -0
  106. package/dist/svelte/components/FieldInput.svelte +159 -0
  107. package/dist/svelte/components/FieldInput.svelte.d.ts +5 -0
  108. package/dist/svelte/components/FieldInput.svelte.d.ts.map +1 -0
  109. package/dist/svelte/components/FieldPolicyControlPanel.svelte +261 -0
  110. package/dist/svelte/components/FieldPolicyControlPanel.svelte.d.ts +26 -0
  111. package/dist/svelte/components/FieldPolicyControlPanel.svelte.d.ts.map +1 -0
  112. package/dist/svelte/components/FieldPolicyEditor.svelte +417 -0
  113. package/dist/svelte/components/FieldPolicyEditor.svelte.d.ts +18 -0
  114. package/dist/svelte/components/FieldPolicyEditor.svelte.d.ts.map +1 -0
  115. package/dist/svelte/components/FieldPolicyGearButton.svelte +17 -0
  116. package/dist/svelte/components/FieldPolicyGearButton.svelte.d.ts +8 -0
  117. package/dist/svelte/components/FieldPolicyGearButton.svelte.d.ts.map +1 -0
  118. package/dist/svelte/components/FieldPolicyGearProvider.svelte +135 -0
  119. package/dist/svelte/components/FieldPolicyGearProvider.svelte.d.ts +17 -0
  120. package/dist/svelte/components/FieldPolicyGearProvider.svelte.d.ts.map +1 -0
  121. package/dist/svelte/components/FieldPolicyProvider.svelte +89 -0
  122. package/dist/svelte/components/FieldPolicyProvider.svelte.d.ts +35 -0
  123. package/dist/svelte/components/FieldPolicyProvider.svelte.d.ts.map +1 -0
  124. package/dist/svelte/components/FormHelp.svelte +157 -0
  125. package/dist/svelte/components/FormHelp.svelte.d.ts +15 -0
  126. package/dist/svelte/components/FormHelp.svelte.d.ts.map +1 -0
  127. package/dist/svelte/components/ModeSwitch.svelte +47 -0
  128. package/dist/svelte/components/ModeSwitch.svelte.d.ts +10 -0
  129. package/dist/svelte/components/ModeSwitch.svelte.d.ts.map +1 -0
  130. package/dist/svelte/components/ObjectForm.svelte +351 -0
  131. package/dist/svelte/components/ObjectForm.svelte.d.ts +40 -0
  132. package/dist/svelte/components/ObjectForm.svelte.d.ts.map +1 -0
  133. package/dist/svelte/components/ObjectFormSourceProvider.svelte +18 -0
  134. package/dist/svelte/components/ObjectFormSourceProvider.svelte.d.ts +11 -0
  135. package/dist/svelte/components/ObjectFormSourceProvider.svelte.d.ts.map +1 -0
  136. package/dist/svelte/components/PolicyField.svelte +338 -0
  137. package/dist/svelte/components/PolicyField.svelte.d.ts +80 -0
  138. package/dist/svelte/components/PolicyField.svelte.d.ts.map +1 -0
  139. package/dist/svelte/context.svelte.d.ts +54 -0
  140. package/dist/svelte/context.svelte.d.ts.map +1 -0
  141. package/dist/svelte/context.svelte.js +55 -0
  142. package/dist/svelte/data-table.d.ts +17 -0
  143. package/dist/svelte/data-table.d.ts.map +1 -0
  144. package/dist/svelte/data-table.js +19 -0
  145. package/dist/svelte/field-policy-editor.d.ts +81 -0
  146. package/dist/svelte/field-policy-editor.d.ts.map +1 -0
  147. package/dist/svelte/field-policy-editor.js +120 -0
  148. package/dist/svelte/gear-context.svelte.d.ts +14 -0
  149. package/dist/svelte/gear-context.svelte.d.ts.map +1 -0
  150. package/dist/svelte/gear-context.svelte.js +15 -0
  151. package/dist/svelte/index.d.ts +58 -0
  152. package/dist/svelte/index.d.ts.map +1 -0
  153. package/dist/svelte/index.js +38 -0
  154. package/dist/svelte/input-registry.d.ts +21 -0
  155. package/dist/svelte/input-registry.d.ts.map +1 -0
  156. package/dist/svelte/input-registry.js +26 -0
  157. package/dist/svelte/object-form-source-context.svelte.d.ts +4 -0
  158. package/dist/svelte/object-form-source-context.svelte.d.ts.map +1 -0
  159. package/dist/svelte/object-form-source-context.svelte.js +8 -0
  160. package/dist/svelte/object-form-source.svelte.d.ts +18 -0
  161. package/dist/svelte/object-form-source.svelte.d.ts.map +1 -0
  162. package/dist/svelte/object-form-source.svelte.js +99 -0
  163. package/dist/svelte/object-form.d.ts +6 -0
  164. package/dist/svelte/object-form.d.ts.map +1 -0
  165. package/dist/svelte/object-form.js +38 -0
  166. package/dist/svelte/playground/FieldPolicyFormPreview.svelte +212 -0
  167. package/dist/svelte/playground/FieldPolicyFormPreview.svelte.d.ts +4 -0
  168. package/dist/svelte/playground/FieldPolicyFormPreview.svelte.d.ts.map +1 -0
  169. package/dist/svelte/playground/ObjectFormPreview.svelte +129 -0
  170. package/dist/svelte/playground/ObjectFormPreview.svelte.d.ts +4 -0
  171. package/dist/svelte/playground/ObjectFormPreview.svelte.d.ts.map +1 -0
  172. package/dist/svelte/playground.d.ts +20 -0
  173. package/dist/svelte/playground.d.ts.map +1 -0
  174. package/dist/svelte/playground.js +38 -0
  175. package/dist/svelte/settings-catalog.d.ts +54 -0
  176. package/dist/svelte/settings-catalog.d.ts.map +1 -0
  177. package/dist/svelte/settings-catalog.js +116 -0
  178. package/dist/svelte/types.d.ts +101 -0
  179. package/dist/svelte/types.d.ts.map +1 -0
  180. package/dist/svelte/types.js +4 -0
  181. package/dist/types.d.ts +276 -203
  182. package/dist/types.d.ts.map +1 -0
  183. package/dist/types.js.map +1 -1
  184. package/package.json +33 -8
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
3
+ import ObjectForm from '../../components/ObjectForm.svelte';
4
+ import type { ObjectFormFieldDefinition } from '../../types.js';
5
+
6
+ interface Props {
7
+ fields: Record<string, ObjectFormFieldDefinition>;
8
+ policy: ResolvedObjectFieldPolicy;
9
+ onsubmit: (event: SubmitEvent) => void;
10
+ }
11
+
12
+ let { fields, policy, onsubmit }: Props = $props();
13
+ let record = $state<Record<string, unknown>>({});
14
+ </script>
15
+
16
+ <ObjectForm objectRef={policy.objectRef} {fields} {policy} bind:value={record} {onsubmit}>
17
+ {#snippet actions()}
18
+ <button type="submit">Save product</button>
19
+ {/snippet}
20
+ </ObjectForm>
@@ -0,0 +1,11 @@
1
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
2
+ import type { ObjectFormFieldDefinition } from '../../types.js';
3
+ interface Props {
4
+ fields: Record<string, ObjectFormFieldDefinition>;
5
+ policy: ResolvedObjectFieldPolicy;
6
+ onsubmit: (event: SubmitEvent) => void;
7
+ }
8
+ declare const ObjectFormActionsFixture: import("svelte").Component<Props, {}, "">;
9
+ type ObjectFormActionsFixture = ReturnType<typeof ObjectFormActionsFixture>;
10
+ export default ObjectFormActionsFixture;
11
+ //# sourceMappingURL=ObjectFormActionsFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectFormActionsFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormActionsFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACxC;AAmBD,QAAA,MAAM,wBAAwB,2CAAwC,CAAC;AACvE,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC5E,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
3
+ import ObjectForm from '../../components/ObjectForm.svelte';
4
+ import type { ObjectFormFieldDefinition } from '../../types.js';
5
+
6
+ interface Props {
7
+ fields: Record<string, ObjectFormFieldDefinition>;
8
+ policy: ResolvedObjectFieldPolicy;
9
+ }
10
+
11
+ let { fields, policy }: Props = $props();
12
+ let record = $state<Record<string, unknown>>({});
13
+ </script>
14
+
15
+ <ObjectForm objectRef={policy.objectRef} {fields} {policy} bind:value={record} />
16
+ <button type="button" onclick={() => (record = {})}>Start another record</button>
17
+ <output data-testid="record">{JSON.stringify(record)}</output>
@@ -0,0 +1,10 @@
1
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
2
+ import type { ObjectFormFieldDefinition } from '../../types.js';
3
+ interface Props {
4
+ fields: Record<string, ObjectFormFieldDefinition>;
5
+ policy: ResolvedObjectFieldPolicy;
6
+ }
7
+ declare const ObjectFormFixture: import("svelte").Component<Props, {}, "">;
8
+ type ObjectFormFixture = ReturnType<typeof ObjectFormFixture>;
9
+ export default ObjectFormFixture;
10
+ //# sourceMappingURL=ObjectFormFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectFormFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAiBD,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ <script lang="ts">
2
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
3
+ import ObjectForm from '../../components/ObjectForm.svelte';
4
+ import { FieldInputRegistry } from '../../input-registry.js';
5
+ import type { ObjectFormFieldDefinition } from '../../types.js';
6
+ import RegistryInput from './RegistryInput.svelte';
7
+
8
+ interface Props {
9
+ fields: Record<string, ObjectFormFieldDefinition>;
10
+ policy: ResolvedObjectFieldPolicy;
11
+ }
12
+
13
+ let { fields, policy }: Props = $props();
14
+ const registry = new FieldInputRegistry();
15
+ registry.registerField('@test:Product', 'name', RegistryInput);
16
+ let record = $state<Record<string, unknown>>({});
17
+ </script>
18
+
19
+ <ObjectForm
20
+ objectRef={policy.objectRef}
21
+ {fields}
22
+ {policy}
23
+ bind:value={record}
24
+ inputRegistry={registry}
25
+ />
@@ -0,0 +1,10 @@
1
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
2
+ import type { ObjectFormFieldDefinition } from '../../types.js';
3
+ interface Props {
4
+ fields: Record<string, ObjectFormFieldDefinition>;
5
+ policy: ResolvedObjectFieldPolicy;
6
+ }
7
+ declare const ObjectFormRegistryFixture: import("svelte").Component<Props, {}, "">;
8
+ type ObjectFormRegistryFixture = ReturnType<typeof ObjectFormRegistryFixture>;
9
+ export default ObjectFormRegistryFixture;
10
+ //# sourceMappingURL=ObjectFormRegistryFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectFormRegistryFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormRegistryFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAIhE,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAmBD,QAAA,MAAM,yBAAyB,2CAAwC,CAAC;AACxE,KAAK,yBAAyB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC9E,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
3
+ import ObjectForm from '../../components/ObjectForm.svelte';
4
+ import type {
5
+ ObjectFormFieldDefinition,
6
+ ObjectFormFieldSnippetProps,
7
+ } from '../../types.js';
8
+
9
+ interface Props {
10
+ fields: Record<string, ObjectFormFieldDefinition>;
11
+ policy: ResolvedObjectFieldPolicy;
12
+ }
13
+
14
+ let { fields, policy }: Props = $props();
15
+ let record = $state<Record<string, unknown>>({});
16
+ </script>
17
+
18
+ {#snippet customName(props: ObjectFormFieldSnippetProps)}
19
+ <input
20
+ aria-label="Custom product name"
21
+ value={String(props.value ?? '')}
22
+ disabled={props.disabled}
23
+ oninput={(event) => props.setValue((event.currentTarget as HTMLInputElement).value)}
24
+ />
25
+ {/snippet}
26
+
27
+ <ObjectForm
28
+ objectRef={policy.objectRef}
29
+ {fields}
30
+ {policy}
31
+ bind:value={record}
32
+ renderers={{ name: customName }}
33
+ />
34
+ <output data-testid="record">{JSON.stringify(record)}</output>
@@ -0,0 +1,10 @@
1
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
2
+ import type { ObjectFormFieldDefinition } from '../../types.js';
3
+ interface Props {
4
+ fields: Record<string, ObjectFormFieldDefinition>;
5
+ policy: ResolvedObjectFieldPolicy;
6
+ }
7
+ declare const ObjectFormSnippetFixture: import("svelte").Component<Props, {}, "">;
8
+ type ObjectFormSnippetFixture = ReturnType<typeof ObjectFormSnippetFixture>;
9
+ export default ObjectFormSnippetFixture;
10
+ //# sourceMappingURL=ObjectFormSnippetFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectFormSnippetFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormSnippetFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,gBAAgB,CAAC;AAGxB,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IAClD,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAoBD,QAAA,MAAM,wBAAwB,2CAAwC,CAAC;AACvE,KAAK,wBAAwB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC5E,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import ObjectForm from '../../components/ObjectForm.svelte';
3
+ import ObjectFormSourceProvider from '../../components/ObjectFormSourceProvider.svelte';
4
+ import type { ObjectFormSource } from '../../types.js';
5
+
6
+ interface Props {
7
+ source: ObjectFormSource;
8
+ objectRef: string;
9
+ isNewRecord?: boolean;
10
+ initialValue?: Record<string, unknown>;
11
+ }
12
+
13
+ let {
14
+ source,
15
+ objectRef,
16
+ isNewRecord = true,
17
+ initialValue = {},
18
+ }: Props = $props();
19
+ function initialRecord(): Record<string, unknown> {
20
+ return initialValue;
21
+ }
22
+
23
+ let record = $state<Record<string, unknown>>(initialRecord());
24
+ </script>
25
+
26
+ <ObjectFormSourceProvider {source}>
27
+ <ObjectForm {objectRef} {isNewRecord} bind:value={record} />
28
+ </ObjectFormSourceProvider>
29
+ <output data-testid="record">{JSON.stringify(record)}</output>
@@ -0,0 +1,11 @@
1
+ import type { ObjectFormSource } from '../../types.js';
2
+ interface Props {
3
+ source: ObjectFormSource;
4
+ objectRef: string;
5
+ isNewRecord?: boolean;
6
+ initialValue?: Record<string, unknown>;
7
+ }
8
+ declare const ObjectFormSourceFixture: import("svelte").Component<Props, {}, "">;
9
+ type ObjectFormSourceFixture = ReturnType<typeof ObjectFormSourceFixture>;
10
+ export default ObjectFormSourceFixture;
11
+ //# sourceMappingURL=ObjectFormSourceFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectFormSourceFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormSourceFixture.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AA2BD,QAAA,MAAM,uBAAuB,2CAAwC,CAAC;AACtE,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC1E,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import { Input } from '@happyvertical/smrt-ui/forms';
3
+ import ObjectForm from '../../components/ObjectForm.svelte';
4
+ import ObjectFormSourceProvider from '../../components/ObjectFormSourceProvider.svelte';
5
+ import type {
6
+ ObjectFormFieldSnippetProps,
7
+ ObjectFormSource,
8
+ } from '../../types.js';
9
+
10
+ interface Props {
11
+ source: ObjectFormSource;
12
+ objectRef: string;
13
+ }
14
+
15
+ let { source, objectRef }: Props = $props();
16
+ let record = $state<Record<string, unknown>>({});
17
+ </script>
18
+
19
+ {#snippet customName(props: ObjectFormFieldSnippetProps)}
20
+ <Input
21
+ id="custom-name"
22
+ name="name"
23
+ value={String(props.value ?? '')}
24
+ aria-label="Custom generated name"
25
+ disabled={props.disabled}
26
+ oninput={(event) => props.setValue((event.currentTarget as HTMLInputElement).value.toUpperCase())}
27
+ />
28
+ {/snippet}
29
+
30
+ <ObjectFormSourceProvider {source}>
31
+ <ObjectForm {objectRef} bind:value={record} renderers={{ name: customName }} />
32
+ </ObjectFormSourceProvider>
33
+ <output data-testid="record">{JSON.stringify(record)}</output>
@@ -0,0 +1,9 @@
1
+ import type { ObjectFormSource } from '../../types.js';
2
+ interface Props {
3
+ source: ObjectFormSource;
4
+ objectRef: string;
5
+ }
6
+ declare const ObjectFormSourceSnippetFixture: import("svelte").Component<Props, {}, "">;
7
+ type ObjectFormSourceSnippetFixture = ReturnType<typeof ObjectFormSourceSnippetFixture>;
8
+ export default ObjectFormSourceSnippetFixture;
9
+ //# sourceMappingURL=ObjectFormSourceSnippetFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectFormSourceSnippetFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ObjectFormSourceSnippetFixture.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAGxB,UAAU,KAAK;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAuBD,QAAA,MAAM,8BAA8B,2CAAwC,CAAC;AAC7E,KAAK,8BAA8B,GAAG,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACxF,eAAe,8BAA8B,CAAC"}
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ import { DataTable, type DataTableColumn } from '@happyvertical/smrt-ui/data';
3
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
4
+ import { policyToVisibleColumnIds } from '../../data-table.js';
5
+
6
+ interface Row {
7
+ name: string;
8
+ published: boolean;
9
+ metadata: string;
10
+ computed: string;
11
+ actions: string;
12
+ }
13
+
14
+ interface Props {
15
+ policy: ResolvedObjectFieldPolicy;
16
+ }
17
+
18
+ let { policy }: Props = $props();
19
+ const columns: DataTableColumn<Row>[] = [
20
+ { id: 'name', label: 'Name' },
21
+ { id: 'published', label: 'Published' },
22
+ { id: 'metadata', label: 'Metadata', hidden: true },
23
+ { id: 'computed', label: 'Computed' },
24
+ { id: 'actions', label: 'Actions' },
25
+ ];
26
+ const rows: Row[] = [
27
+ {
28
+ name: 'Launch',
29
+ published: true,
30
+ metadata: 'server only',
31
+ computed: 'Derived',
32
+ actions: 'Edit',
33
+ },
34
+ ];
35
+ const visibleColumnIds = $derived.by(() =>
36
+ policyToVisibleColumnIds(policy, columns),
37
+ );
38
+ </script>
39
+
40
+ <DataTable data={rows} {columns} {visibleColumnIds} caption="Policy table" />
@@ -0,0 +1,8 @@
1
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
2
+ interface Props {
3
+ policy: ResolvedObjectFieldPolicy;
4
+ }
5
+ declare const PolicyDataTableFixture: import("svelte").Component<Props, {}, "">;
6
+ type PolicyDataTableFixture = ReturnType<typeof PolicyDataTableFixture>;
7
+ export default PolicyDataTableFixture;
8
+ //# sourceMappingURL=PolicyDataTableFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyDataTableFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/PolicyDataTableFixture.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAYnE,UAAU,KAAK;IACb,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAkCD,QAAA,MAAM,sBAAsB,2CAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Test fixture: PolicyField with snippet escape hatch showing prefill signal.
4
+ * Demonstrates that the snippet receives the default value from resolved policy.
5
+ */
6
+
7
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
8
+ import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
9
+ import PolicyField from '../../components/PolicyField.svelte';
10
+
11
+ let {
12
+ policy,
13
+ mode = 'basic',
14
+ }: {
15
+ policy: ResolvedObjectFieldPolicy;
16
+ mode?: 'basic' | 'advanced';
17
+ } = $props();
18
+ </script>
19
+
20
+ <FieldPolicyProvider {policy} {mode}>
21
+ <PolicyField name="sku">
22
+ {#snippet render({ defaultValue })}
23
+ <div>Default: {String(defaultValue)}</div>
24
+ {/snippet}
25
+ </PolicyField>
26
+ </FieldPolicyProvider>
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Test fixture: PolicyField with snippet escape hatch showing prefill signal.
3
+ * Demonstrates that the snippet receives the default value from resolved policy.
4
+ */
5
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
6
+ type $$ComponentProps = {
7
+ policy: ResolvedObjectFieldPolicy;
8
+ mode?: 'basic' | 'advanced';
9
+ };
10
+ declare const PrefillFixture: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type PrefillFixture = ReturnType<typeof PrefillFixture>;
12
+ export default PrefillFixture;
13
+ //# sourceMappingURL=PrefillFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrefillFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/PrefillFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAAC;AAwBF,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,39 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Test fixture: FieldPolicyProvider wrapping PolicyField-wrapped inputs.
4
+ * Includes a mode toggle button to test switching between basic/advanced.
5
+ *
6
+ * The toggle lives in its own component so getContext runs during component
7
+ * initialisation (the only valid time for getContext in Svelte 5) instead of
8
+ * inside an event handler.
9
+ */
10
+
11
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
12
+ import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
13
+ import PolicyField from '../../components/PolicyField.svelte';
14
+ import ToggleModeButton from './ToggleModeButton.svelte';
15
+
16
+ let {
17
+ policy,
18
+ mode = 'basic',
19
+ }: {
20
+ policy: ResolvedObjectFieldPolicy;
21
+ mode?: 'basic' | 'advanced';
22
+ } = $props();
23
+ </script>
24
+
25
+ <FieldPolicyProvider {policy} {mode}>
26
+ <PolicyField name="name">
27
+ <input id="name" name="name" type="text" />
28
+ </PolicyField>
29
+ <PolicyField name="sku">
30
+ <input id="sku" name="sku" type="text" />
31
+ </PolicyField>
32
+ <PolicyField name="wholesalePrice">
33
+ <input id="wholesalePrice" name="wholesalePrice" type="number" />
34
+ </PolicyField>
35
+ <PolicyField name="internalNotes">
36
+ <input id="internalNotes" name="internalNotes" type="text" />
37
+ </PolicyField>
38
+ <ToggleModeButton />
39
+ </FieldPolicyProvider>
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Test fixture: FieldPolicyProvider wrapping PolicyField-wrapped inputs.
3
+ * Includes a mode toggle button to test switching between basic/advanced.
4
+ *
5
+ * The toggle lives in its own component so getContext runs during component
6
+ * initialisation (the only valid time for getContext in Svelte 5) instead of
7
+ * inside an event handler.
8
+ */
9
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
10
+ type $$ComponentProps = {
11
+ policy: ResolvedObjectFieldPolicy;
12
+ mode?: 'basic' | 'advanced';
13
+ };
14
+ declare const ProviderFieldFixture: import("svelte").Component<$$ComponentProps, {}, "">;
15
+ type ProviderFieldFixture = ReturnType<typeof ProviderFieldFixture>;
16
+ export default ProviderFieldFixture;
17
+ //# sourceMappingURL=ProviderFieldFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderFieldFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ProviderFieldFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAKlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAAC;AAiCF,QAAA,MAAM,oBAAoB,sDAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import { Input } from '@happyvertical/smrt-ui/forms';
3
+ import type { FieldInputProps } from '../../types.js';
4
+
5
+ let { id, name, value, disabled, onvaluechange }: FieldInputProps = $props();
6
+ </script>
7
+
8
+ <Input
9
+ {id}
10
+ {name}
11
+ value={String(value ?? '')}
12
+ {disabled}
13
+ aria-label="Registry name"
14
+ oninput={(event) => onvaluechange((event.currentTarget as HTMLInputElement).value)}
15
+ />
@@ -0,0 +1,5 @@
1
+ import type { FieldInputProps } from '../../types.js';
2
+ declare const RegistryInput: import("svelte").Component<FieldInputProps, {}, "">;
3
+ type RegistryInput = ReturnType<typeof RegistryInput>;
4
+ export default RegistryInput;
5
+ //# sourceMappingURL=RegistryInput.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegistryInput.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/RegistryInput.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAatD,QAAA,MAAM,aAAa,qDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Test fixture: an advanced-tier PolicyField with a resolved default that is
4
+ * hidden at mount (basic mode) and revealed by the mode toggle. Verifies
5
+ * prefill runs on first reveal, not only at mount.
6
+ */
7
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
8
+ import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
9
+ import PolicyField from '../../components/PolicyField.svelte';
10
+ import ToggleModeButton from './ToggleModeButton.svelte';
11
+
12
+ let {
13
+ policy,
14
+ isNewRecord = true,
15
+ }: {
16
+ policy: ResolvedObjectFieldPolicy;
17
+ isNewRecord?: boolean;
18
+ } = $props();
19
+
20
+ let wholesale = $state('');
21
+ </script>
22
+
23
+ <FieldPolicyProvider {policy} mode="basic">
24
+ <PolicyField name="wholesalePrice" {isNewRecord}>
25
+ <input id="wholesalePrice" name="wholesalePrice" type="number" bind:value={wholesale} />
26
+ </PolicyField>
27
+ <div data-testid="wholesale-state">{wholesale}</div>
28
+ <ToggleModeButton />
29
+ </FieldPolicyProvider>
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Test fixture: an advanced-tier PolicyField with a resolved default that is
3
+ * hidden at mount (basic mode) and revealed by the mode toggle. Verifies
4
+ * prefill runs on first reveal, not only at mount.
5
+ */
6
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
7
+ type $$ComponentProps = {
8
+ policy: ResolvedObjectFieldPolicy;
9
+ isNewRecord?: boolean;
10
+ };
11
+ declare const RevealPrefillFixture: import("svelte").Component<$$ComponentProps, {}, "">;
12
+ type RevealPrefillFixture = ReturnType<typeof RevealPrefillFixture>;
13
+ export default RevealPrefillFixture;
14
+ //# sourceMappingURL=RevealPrefillFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RevealPrefillFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/RevealPrefillFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAKlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AA0BF,QAAA,MAAM,oBAAoB,sDAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type {
4
+ FieldPolicyDetailItem,
5
+ FieldPolicySettingsCatalogPage,
6
+ } from '../../../settings-catalog.js';
7
+
8
+ interface Props {
9
+ page: FieldPolicySettingsCatalogPage;
10
+ baseUrl: string;
11
+ detail: Snippet<[{ item: FieldPolicyDetailItem }]>;
12
+ preservedParams?: Record<string, string>;
13
+ }
14
+
15
+ let { page, baseUrl, detail, preservedParams = {} }: Props = $props();
16
+ const href = $derived(
17
+ `${baseUrl}?${new URLSearchParams(preservedParams).toString()}`,
18
+ );
19
+ </script>
20
+
21
+ <a aria-label="catalog navigation" {href}>Catalog navigation</a>
22
+ {#if page.selected}
23
+ {@render detail({ item: page.selected })}
24
+ {/if}
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { FieldPolicyDetailItem, FieldPolicySettingsCatalogPage } from '../../../settings-catalog.js';
3
+ interface Props {
4
+ page: FieldPolicySettingsCatalogPage;
5
+ baseUrl: string;
6
+ detail: Snippet<[{
7
+ item: FieldPolicyDetailItem;
8
+ }]>;
9
+ preservedParams?: Record<string, string>;
10
+ }
11
+ declare const SettingsCatalogStub: import("svelte").Component<Props, {}, "">;
12
+ type SettingsCatalogStub = ReturnType<typeof SettingsCatalogStub>;
13
+ export default SettingsCatalogStub;
14
+ //# sourceMappingURL=SettingsCatalogStub.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsCatalogStub.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/SettingsCatalogStub.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AAGtC,UAAU,KAAK;IACb,IAAI,EAAE,8BAA8B,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC,CAAC;QAAE,IAAI,EAAE,qBAAqB,CAAA;KAAE,CAAC,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAmBD,QAAA,MAAM,mBAAmB,2CAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Test fixture: PolicyField snippet escape hatch with full policy data.
4
+ * Verifies the snippet receives resolved label, help, required, etc.
5
+ */
6
+
7
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
8
+ import FieldPolicyProvider from '../../components/FieldPolicyProvider.svelte';
9
+ import PolicyField from '../../components/PolicyField.svelte';
10
+
11
+ let {
12
+ policy,
13
+ mode = 'basic',
14
+ }: {
15
+ policy: ResolvedObjectFieldPolicy;
16
+ mode?: 'basic' | 'advanced';
17
+ } = $props();
18
+ </script>
19
+
20
+ <FieldPolicyProvider {policy} {mode}>
21
+ <PolicyField name="name">
22
+ {#snippet render({ label, help, required })}
23
+ <div data-testid="field-label">{label}</div>
24
+ <div data-testid="field-help">{help}</div>
25
+ <div data-testid="field-required">{String(required)}</div>
26
+ {/snippet}
27
+ </PolicyField>
28
+ </FieldPolicyProvider>
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Test fixture: PolicyField snippet escape hatch with full policy data.
3
+ * Verifies the snippet receives resolved label, help, required, etc.
4
+ */
5
+ import type { ResolvedObjectFieldPolicy } from '../../../types.js';
6
+ type $$ComponentProps = {
7
+ policy: ResolvedObjectFieldPolicy;
8
+ mode?: 'basic' | 'advanced';
9
+ };
10
+ declare const SnippetFixture: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type SnippetFixture = ReturnType<typeof SnippetFixture>;
12
+ export default SnippetFixture;
13
+ //# sourceMappingURL=SnippetFixture.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnippetFixture.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/SnippetFixture.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAIlE,KAAK,gBAAgB,GAAI;IACxB,MAAM,EAAE,yBAAyB,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAC7B,CAAC;AA0BF,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,14 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Test helper: a button rendered inside a FieldPolicyProvider that toggles
4
+ * the provider's mode state. Captures the context during component
5
+ * initialisation (getContext is only valid there in Svelte 5).
6
+ */
7
+ import { getFieldPolicyContext } from '../../context.svelte.js';
8
+
9
+ const context = getFieldPolicyContext();
10
+ </script>
11
+
12
+ <button onclick={() => context.mode.toggle()}>
13
+ Toggle Mode
14
+ </button>
@@ -0,0 +1,19 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const ToggleModeButton: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type ToggleModeButton = InstanceType<typeof ToggleModeButton>;
18
+ export default ToggleModeButton;
19
+ //# sourceMappingURL=ToggleModeButton.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleModeButton.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/__tests__/fixtures/ToggleModeButton.svelte.ts"],"names":[],"mappings":"AAuBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,gBAAgB;;kBAA+E,CAAC;AACpF,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,eAAe,gBAAgB,CAAC"}