@happyvertical/smrt-fields 0.55.14 → 0.55.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/dist/svelte/components/FieldInput.svelte +6 -1
- package/dist/svelte/components/FieldPolicyControlPanel.svelte +5 -2
- package/dist/svelte/components/FieldPolicyEditor.svelte +6 -3
- package/dist/svelte/components/FieldPolicyGearButton.svelte +4 -1
- package/dist/svelte/components/FieldPolicyGearProvider.svelte +6 -3
- package/dist/svelte/components/FieldPolicySuggestionQueue.svelte +5 -2
- package/dist/svelte/components/FormHelp.svelte +6 -3
- package/dist/svelte/components/ObjectForm.svelte +7 -4
- package/dist/svelte/components/PolicyField.svelte +5 -2
- package/dist/svelte/playground/FieldPolicyFormPreview.svelte +4 -1
- package/dist/svelte/playground/ObjectFormPreview.svelte +3 -0
- package/package.json +10 -10
package/dist/manifest.json
CHANGED
package/dist/smrt-knowledge.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"sensitiveFieldsExcluded": true,
|
|
4
4
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
5
5
|
"packageName": "@happyvertical/smrt-fields",
|
|
6
|
-
"packageVersion": "0.55.
|
|
6
|
+
"packageVersion": "0.55.17",
|
|
7
7
|
"sourceManifestPath": "dist/manifest.json",
|
|
8
8
|
"agentDocPath": "AGENTS.md",
|
|
9
9
|
"sourceHashes": {
|
|
10
|
-
"manifest": "
|
|
11
|
-
"packageJson": "
|
|
10
|
+
"manifest": "d7dd51e9722ec0c290e6b517a5b004e32e6e26f9ccf0f7e4e45eb946be549ab0",
|
|
11
|
+
"packageJson": "f1bafdc443da37003e50069b6eea34115a55eccde35a2db8c9b3cba31786e29a",
|
|
12
12
|
"agents": "ae4bf7b69ae3b28a7900b590dd21b53ea0dfc5fd6778f858ceac97dfd8654187"
|
|
13
13
|
},
|
|
14
14
|
"exports": [
|
|
@@ -156,4 +156,9 @@ function setDateTime(event: Event): void {
|
|
|
156
156
|
/>
|
|
157
157
|
{/if}
|
|
158
158
|
|
|
159
|
-
<style
|
|
159
|
+
<style>
|
|
160
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
161
|
+
@layer smrt.theme {
|
|
162
|
+
.field-input__error { color: var(--smrt-color-error); margin: 0; }
|
|
163
|
+
}
|
|
164
|
+
</style>
|
|
@@ -223,7 +223,7 @@ async function suggestionChanged(): Promise<void> {
|
|
|
223
223
|
</script>
|
|
224
224
|
|
|
225
225
|
{#if canManage}
|
|
226
|
-
<section class="field-policy-control-panel" aria-label={heading}>
|
|
226
|
+
<section class="field-policy-control-panel" aria-label={heading} data-smrt-component="FieldPolicyControlPanel">
|
|
227
227
|
<header>
|
|
228
228
|
<h1>{heading}</h1>
|
|
229
229
|
<p>Manage inherited defaults, visibility, help, labels, order, and locks for every registered field.</p>
|
|
@@ -281,13 +281,16 @@ async function suggestionChanged(): Promise<void> {
|
|
|
281
281
|
{/if}
|
|
282
282
|
|
|
283
283
|
<style>
|
|
284
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
285
|
+
@layer smrt.theme {
|
|
284
286
|
.field-policy-control-panel { display: grid; gap: var(--smrt-spacing-4); }
|
|
285
287
|
.field-policy-control-panel header p, .field-policy-control-panel__detail > p { color: var(--smrt-color-on-surface-variant); }
|
|
286
|
-
.field-policy-control-panel__error { color: var(--smrt-color-error
|
|
288
|
+
.field-policy-control-panel__error { color: var(--smrt-color-error); }
|
|
287
289
|
.field-policy-control-panel__layers { display: grid; gap: var(--smrt-spacing-2); }
|
|
288
290
|
.field-policy-control-panel__layers div { display: grid; grid-template-columns: 10rem minmax(0, 1fr); gap: var(--smrt-spacing-2); }
|
|
289
291
|
.field-policy-control-panel__layers dt { font-weight: 600; }
|
|
290
292
|
.field-policy-control-panel__layers dd { margin: 0; }
|
|
291
293
|
.field-policy-control-panel__actions { display: flex; flex-wrap: wrap; gap: var(--smrt-spacing-2); }
|
|
292
294
|
.field-policy-control-panel__drift ul { display: grid; gap: var(--smrt-spacing-2); padding-inline-start: var(--smrt-spacing-5); }
|
|
295
|
+
}
|
|
293
296
|
</style>
|
|
@@ -415,10 +415,13 @@ async function reset(fieldName: string): Promise<void> {
|
|
|
415
415
|
</Modal>
|
|
416
416
|
|
|
417
417
|
<style>
|
|
418
|
-
|
|
418
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
419
|
+
@layer smrt.theme {
|
|
420
|
+
.field-policy-editor { background: var(--smrt-color-surface, white); color: var(--smrt-color-on-surface); display: grid; gap: var(--smrt-spacing-4, 1rem); max-block-size: min(90vh, 56rem); overflow: auto; padding: var(--smrt-spacing-5, 1.25rem); }
|
|
419
421
|
.field-policy-editor__actions, .field-policy-editor__tabs { align-items: center; display: flex; gap: var(--smrt-spacing-2, .5rem); justify-content: space-between; }
|
|
420
|
-
.field-policy-editor__field { border: 1px solid var(--smrt-color-outline
|
|
422
|
+
.field-policy-editor__field { border: 1px solid var(--smrt-color-outline); display: grid; gap: var(--smrt-spacing-3, .75rem); margin: 0 0 var(--smrt-spacing-3, .75rem); padding: var(--smrt-spacing-3, .75rem); }
|
|
421
423
|
.field-policy-editor__field label { display: grid; gap: var(--smrt-spacing-1, .25rem); }
|
|
422
|
-
.field-policy-editor__error { color: var(--smrt-color-error
|
|
424
|
+
.field-policy-editor__error { color: var(--smrt-color-error); }
|
|
423
425
|
.field-policy-editor__notice { margin: 0; }
|
|
426
|
+
}
|
|
424
427
|
</style>
|
|
@@ -20,5 +20,8 @@ const gear = getFieldPolicyGearContext();
|
|
|
20
20
|
{/if}
|
|
21
21
|
|
|
22
22
|
<style>
|
|
23
|
-
|
|
23
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
24
|
+
@layer smrt.theme {
|
|
25
|
+
.field-policy-gear-button__badge { border-radius: 999px; background: var(--smrt-color-secondary-container); min-inline-size: 1.25rem; padding-inline: 0.25rem; text-align: center; }
|
|
26
|
+
}
|
|
24
27
|
</style>
|
|
@@ -158,16 +158,19 @@ $effect(() => {
|
|
|
158
158
|
|
|
159
159
|
{@render children?.()}
|
|
160
160
|
{#if error && !open}
|
|
161
|
-
<p class="field-policy-gear__error" role="alert">{error}</p>
|
|
161
|
+
<p class="field-policy-gear__error" role="alert" data-smrt-component="FieldPolicyGearProvider">{error}</p>
|
|
162
162
|
{/if}
|
|
163
163
|
{#if open && editorState}
|
|
164
164
|
<FieldPolicyEditor state={editorState} {adapter} {fields} {inputRegistry} {organizationScope} onclose={() => controller.hide()} onmutated={reload} />
|
|
165
165
|
{/if}
|
|
166
166
|
{#if loading}
|
|
167
|
-
<span class="field-policy-gear__loading" aria-live="polite">Loading field settings…</span>
|
|
167
|
+
<span class="field-policy-gear__loading" aria-live="polite" data-smrt-component="FieldPolicyGearProvider">Loading field settings…</span>
|
|
168
168
|
{/if}
|
|
169
169
|
|
|
170
170
|
<style>
|
|
171
|
-
|
|
171
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
172
|
+
@layer smrt.theme {
|
|
173
|
+
.field-policy-gear__error { color: var(--smrt-color-error); }
|
|
172
174
|
.field-policy-gear__loading { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }
|
|
175
|
+
}
|
|
173
176
|
</style>
|
|
@@ -97,7 +97,7 @@ function description(suggestion: FieldPolicySuggestion): string {
|
|
|
97
97
|
}
|
|
98
98
|
</script>
|
|
99
99
|
|
|
100
|
-
<section class="field-policy-suggestion-queue" aria-label={heading}>
|
|
100
|
+
<section class="field-policy-suggestion-queue" aria-label={heading} data-smrt-component="FieldPolicySuggestionQueue">
|
|
101
101
|
<header>
|
|
102
102
|
<h2>{heading}</h2>
|
|
103
103
|
{#if !loading}<span class="field-policy-suggestion-queue__count">{total}</span>{/if}
|
|
@@ -128,12 +128,15 @@ function description(suggestion: FieldPolicySuggestion): string {
|
|
|
128
128
|
</section>
|
|
129
129
|
|
|
130
130
|
<style>
|
|
131
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
132
|
+
@layer smrt.theme {
|
|
131
133
|
.field-policy-suggestion-queue { display: grid; gap: var(--smrt-spacing-3, 0.75rem); }
|
|
132
134
|
.field-policy-suggestion-queue header { align-items: center; display: flex; gap: var(--smrt-spacing-2, 0.5rem); }
|
|
133
135
|
.field-policy-suggestion-queue h2, .field-policy-suggestion-queue h3 { margin: 0; }
|
|
134
|
-
.field-policy-suggestion-queue__count { border-radius: 999px; background: var(--smrt-color-secondary-container
|
|
136
|
+
.field-policy-suggestion-queue__count { border-radius: 999px; background: var(--smrt-color-secondary-container); min-inline-size: 1.5rem; padding: 0.125rem 0.4rem; text-align: center; }
|
|
135
137
|
.field-policy-suggestion-queue ul { display: grid; gap: var(--smrt-spacing-3, 0.75rem); list-style: none; margin: 0; padding: 0; }
|
|
136
138
|
.field-policy-suggestion-queue article { border: 1px solid var(--smrt-color-outline-variant, currentColor); border-radius: var(--smrt-radius-small, 0.25rem); display: grid; gap: var(--smrt-spacing-2, 0.5rem); padding: var(--smrt-spacing-3, 0.75rem); }
|
|
137
139
|
.field-policy-suggestion-queue article p { margin: 0; }
|
|
138
140
|
.field-policy-suggestion-queue__actions { display: flex; flex-wrap: wrap; gap: var(--smrt-spacing-2, 0.5rem); }
|
|
141
|
+
}
|
|
139
142
|
</style>
|
|
@@ -79,7 +79,7 @@ const glossary = $derived.by(() => {
|
|
|
79
79
|
});
|
|
80
80
|
</script>
|
|
81
81
|
|
|
82
|
-
<details class="form-help {className}">
|
|
82
|
+
<details class="form-help {className}" data-smrt-component="FormHelp">
|
|
83
83
|
<summary class="form-help__toggle">
|
|
84
84
|
<span class="form-help__icon" aria-hidden="true">?</span>
|
|
85
85
|
<span class="form-help__label">{label}</span>
|
|
@@ -102,6 +102,8 @@ const glossary = $derived.by(() => {
|
|
|
102
102
|
</details>
|
|
103
103
|
|
|
104
104
|
<style>
|
|
105
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
106
|
+
@layer smrt.theme {
|
|
105
107
|
.form-help {
|
|
106
108
|
display: inline-block;
|
|
107
109
|
}
|
|
@@ -121,9 +123,9 @@ const glossary = $derived.by(() => {
|
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
.form-help__toggle:focus-visible {
|
|
124
|
-
outline: 2px solid var(--smrt-color-primary
|
|
126
|
+
outline: 2px solid var(--smrt-color-primary);
|
|
125
127
|
outline-offset: 2px;
|
|
126
|
-
border-radius:
|
|
128
|
+
border-radius: var(--smrt-radius-sm);
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
.form-help__icon {
|
|
@@ -169,4 +171,5 @@ const glossary = $derived.by(() => {
|
|
|
169
171
|
font: var(--smrt-typography-body-small-font, inherit);
|
|
170
172
|
color: var(--smrt-color-on-surface-variant, currentColor);
|
|
171
173
|
}
|
|
174
|
+
}
|
|
172
175
|
</style>
|
|
@@ -411,17 +411,17 @@ function inputFor(field: ObjectFormField): FieldInputComponent {
|
|
|
411
411
|
{/snippet}
|
|
412
412
|
|
|
413
413
|
{#if sourceLoading}
|
|
414
|
-
<div class="object-form__status" role="status" aria-live="polite">Loading form…</div>
|
|
414
|
+
<div class="object-form__status" role="status" aria-live="polite" data-smrt-component="ObjectForm">Loading form…</div>
|
|
415
415
|
{:else if sourceError}
|
|
416
|
-
<div class="object-form__status" role="alert">{sourceError}</div>
|
|
416
|
+
<div class="object-form__status" role="alert" data-smrt-component="ObjectForm">{sourceError}</div>
|
|
417
417
|
{:else if resolvedPolicy}
|
|
418
418
|
<FieldPolicyProvider policy={resolvedPolicy}>
|
|
419
419
|
{#if showModeSwitch || (showPolicyGear && fieldPolicyGear)}
|
|
420
420
|
{#if showModeSwitch}
|
|
421
|
-
<div class="object-form__mode"><ModeSwitch /></div>
|
|
421
|
+
<div class="object-form__mode" data-smrt-component="ObjectForm"><ModeSwitch /></div>
|
|
422
422
|
{/if}
|
|
423
423
|
{#if showPolicyGear && fieldPolicyGear}
|
|
424
|
-
<div class="object-form__gear"><FieldPolicyGearButton /></div>
|
|
424
|
+
<div class="object-form__gear" data-smrt-component="ObjectForm"><FieldPolicyGearButton /></div>
|
|
425
425
|
{/if}
|
|
426
426
|
{/if}
|
|
427
427
|
<Form class="object-form {className}" onsubmit={handleSubmit}>
|
|
@@ -437,9 +437,12 @@ function inputFor(field: ObjectFormField): FieldInputComponent {
|
|
|
437
437
|
{/if}
|
|
438
438
|
|
|
439
439
|
<style>
|
|
440
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
441
|
+
@layer smrt.theme {
|
|
440
442
|
:global(.object-form) { display: grid; gap: var(--smrt-spacing-4, 1rem); }
|
|
441
443
|
.object-form__mode, .object-form__gear { display: inline-flex; justify-content: flex-end; margin-bottom: var(--smrt-spacing-3, 0.75rem); }
|
|
442
444
|
.object-form__group { display: grid; gap: var(--smrt-spacing-3, 0.75rem); border: 0; margin: 0; min-inline-size: 0; padding: 0; }
|
|
443
445
|
.object-form__group legend { font: var(--smrt-typography-title-small-font, inherit); margin-bottom: var(--smrt-spacing-2, 0.5rem); }
|
|
444
446
|
.object-form__status { color: var(--smrt-color-on-surface-variant, currentColor); }
|
|
447
|
+
}
|
|
445
448
|
</style>
|
|
@@ -289,7 +289,7 @@ $effect(() => {
|
|
|
289
289
|
{#if renderSnippet}
|
|
290
290
|
{@render renderSnippet(snippetProps)}
|
|
291
291
|
{:else if visible}
|
|
292
|
-
<div class="policy-field {className}" bind:this={rootEl}>
|
|
292
|
+
<div class="policy-field {className}" bind:this={rootEl} data-smrt-component="PolicyField">
|
|
293
293
|
{#if label !== null}
|
|
294
294
|
<!-- `for` tracks the repaired label↔control association: the `name`
|
|
295
295
|
convention before the first effect pass (SSR / first paint), the
|
|
@@ -314,6 +314,8 @@ $effect(() => {
|
|
|
314
314
|
{/if}
|
|
315
315
|
|
|
316
316
|
<style>
|
|
317
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
318
|
+
@layer smrt.theme {
|
|
317
319
|
.policy-field {
|
|
318
320
|
display: flex;
|
|
319
321
|
flex-direction: column;
|
|
@@ -326,7 +328,7 @@ $effect(() => {
|
|
|
326
328
|
}
|
|
327
329
|
|
|
328
330
|
.policy-field__required {
|
|
329
|
-
color: var(--smrt-color-error
|
|
331
|
+
color: var(--smrt-color-error);
|
|
330
332
|
margin-left: 0.25em;
|
|
331
333
|
}
|
|
332
334
|
|
|
@@ -335,4 +337,5 @@ $effect(() => {
|
|
|
335
337
|
color: var(--smrt-color-on-surface-variant, currentColor);
|
|
336
338
|
margin: 0;
|
|
337
339
|
}
|
|
340
|
+
}
|
|
338
341
|
</style>
|
|
@@ -164,6 +164,8 @@ function handleSubmit() {
|
|
|
164
164
|
</section>
|
|
165
165
|
|
|
166
166
|
<style>
|
|
167
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
168
|
+
@layer smrt.theme {
|
|
167
169
|
.field-policy-preview {
|
|
168
170
|
display: flex;
|
|
169
171
|
flex-direction: column;
|
|
@@ -213,6 +215,7 @@ function handleSubmit() {
|
|
|
213
215
|
|
|
214
216
|
.status {
|
|
215
217
|
font: var(--smrt-typography-body-medium-font, inherit);
|
|
216
|
-
color: var(--smrt-color-primary
|
|
218
|
+
color: var(--smrt-color-primary);
|
|
217
219
|
}
|
|
220
|
+
}
|
|
218
221
|
</style>
|
|
@@ -123,7 +123,10 @@ let record = $state<Record<string, unknown>>({});
|
|
|
123
123
|
</section>
|
|
124
124
|
|
|
125
125
|
<style>
|
|
126
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
127
|
+
@layer smrt.theme {
|
|
126
128
|
.object-form-preview { display: grid; gap: var(--smrt-spacing-3, 0.75rem); max-width: 40rem; }
|
|
127
129
|
h2, p { margin: 0; }
|
|
128
130
|
.record-preview { font: var(--smrt-typography-body-small-font, monospace); color: var(--smrt-color-on-surface-variant, currentColor); overflow-wrap: anywhere; }
|
|
131
|
+
}
|
|
129
132
|
</style>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-fields",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.17",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Layered field policy store and resolver (defaults, visibility tiers, help text) for SMRT objects",
|
|
6
6
|
"type": "module",
|
|
@@ -37,17 +37,17 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@happyvertical/smrt-core": "0.55.
|
|
41
|
-
"@happyvertical/smrt-tenancy": "0.55.
|
|
42
|
-
"@happyvertical/smrt-ui": "0.55.
|
|
43
|
-
"@happyvertical/smrt-users": "0.55.
|
|
44
|
-
"@happyvertical/sql": "^0.103.
|
|
40
|
+
"@happyvertical/smrt-core": "0.55.17",
|
|
41
|
+
"@happyvertical/smrt-tenancy": "0.55.17",
|
|
42
|
+
"@happyvertical/smrt-ui": "0.55.17",
|
|
43
|
+
"@happyvertical/smrt-users": "0.55.17",
|
|
44
|
+
"@happyvertical/sql": "^0.103.4"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@happyvertical/smrt-cli": "0.55.
|
|
48
|
-
"@happyvertical/smrt-scanner": "0.55.
|
|
49
|
-
"@happyvertical/smrt-users": "0.55.
|
|
50
|
-
"@happyvertical/smrt-vitest": "0.55.
|
|
47
|
+
"@happyvertical/smrt-cli": "0.55.17",
|
|
48
|
+
"@happyvertical/smrt-scanner": "0.55.17",
|
|
49
|
+
"@happyvertical/smrt-users": "0.55.17",
|
|
50
|
+
"@happyvertical/smrt-vitest": "0.55.17",
|
|
51
51
|
"@sveltejs/package": "^2.5.8",
|
|
52
52
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
53
53
|
"@testing-library/svelte": "^5.4.2",
|