@happyvertical/smrt-products 0.55.16 → 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/lib/chunks/{__smrt-register__-BwKt2549.js → __smrt-register__-DaNsNpgR.js} +2 -2
- package/dist/lib/chunks/{__smrt-register__-BwKt2549.js.map → __smrt-register__-DaNsNpgR.js.map} +1 -1
- package/dist/lib/chunks/{collections-D2oi_2PD.js → collections-CceTyrc3.js} +2 -2
- package/dist/lib/chunks/{collections-D2oi_2PD.js.map → collections-CceTyrc3.js.map} +1 -1
- package/dist/lib/chunks/{components-DoiQjCUj.js → components-B_eBqqq7.js} +3 -3
- package/dist/lib/chunks/components-B_eBqqq7.js.map +1 -0
- package/dist/lib/chunks/{generated-LG1FaP89.js → generated-BAt9538W.js} +2 -2
- package/dist/lib/chunks/{generated-LG1FaP89.js.map → generated-BAt9538W.js.map} +1 -1
- package/dist/lib/chunks/models-Dz_F5VOA.js +2 -0
- package/dist/lib/collections.js +1 -1
- package/dist/lib/components.js +1 -1
- package/dist/lib/generated.js +1 -1
- package/dist/lib/index.js +5 -5
- package/dist/lib/lib/components/LiveProductList.svelte +14 -11
- package/dist/lib/lib/components/ProductCard.svelte +20 -17
- package/dist/lib/lib/components/ProductForm.svelte +12 -9
- package/dist/lib/lib/components/TestComponent.svelte +6 -3
- package/dist/lib/lib/components/auto-generated/AutoForm.svelte +13 -10
- package/dist/lib/lib/components/auto-generated/FieldRenderer.svelte +6 -3
- package/dist/lib/lib/features/CategoryManager.svelte +10 -7
- package/dist/lib/lib/features/ProductCatalog.svelte +10 -7
- package/dist/lib/manifest.json +1 -1
- package/dist/lib/models.js +1 -1
- package/dist/lib/smrt-knowledge.json +3 -3
- package/dist/lib/smrt-products.css +30 -24
- package/package.json +9 -9
- package/dist/lib/chunks/components-DoiQjCUj.js.map +0 -1
- package/dist/lib/chunks/models-Buh7bo27.js +0 -2
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
|
|
2
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
3
|
+
@layer smrt.theme {
|
|
2
4
|
.product-card.svelte-11ja2cl {
|
|
3
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
4
|
-
border-radius: var(--smrt-radius-md
|
|
5
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
6
|
+
border-radius: var(--smrt-radius-md);
|
|
5
7
|
padding: 1rem;
|
|
6
|
-
background: var(--smrt-color-surface
|
|
7
|
-
box-shadow: var(--smrt-elevation-1, 0 1px 3px color-mix(in srgb, var(--smrt-color-shadow
|
|
8
|
+
background: var(--smrt-color-surface);
|
|
9
|
+
box-shadow: var(--smrt-elevation-1, 0 1px 3px color-mix(in srgb, var(--smrt-color-shadow) 10%, transparent));
|
|
8
10
|
transition: box-shadow 0.2s;
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
.product-card.svelte-11ja2cl:hover {
|
|
12
|
-
box-shadow: var(--smrt-elevation-2, 0 4px 6px color-mix(in srgb, var(--smrt-color-shadow
|
|
14
|
+
box-shadow: var(--smrt-elevation-2, 0 4px 6px color-mix(in srgb, var(--smrt-color-shadow) 10%, transparent));
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
.product-header.svelte-11ja2cl {
|
|
@@ -23,35 +25,35 @@
|
|
|
23
25
|
margin: 0;
|
|
24
26
|
font-size: var(--smrt-typography-title-medium-size, 1.125rem);
|
|
25
27
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
26
|
-
color: var(--smrt-color-on-surface
|
|
28
|
+
color: var(--smrt-color-on-surface);
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
.product-manufacturer.svelte-11ja2cl {
|
|
30
32
|
font-size: var(--smrt-typography-title-small-size, 0.875rem);
|
|
31
33
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
32
|
-
color: var(--smrt-color-on-surface-variant
|
|
34
|
+
color: var(--smrt-color-on-surface-variant);
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
.product-model.svelte-11ja2cl {
|
|
36
38
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
37
|
-
color: var(--smrt-color-on-surface-variant
|
|
39
|
+
color: var(--smrt-color-on-surface-variant);
|
|
38
40
|
margin-bottom: 0.5rem;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
.product-category.svelte-11ja2cl {
|
|
42
44
|
font-size: var(--smrt-typography-label-medium-size, 0.75rem);
|
|
43
45
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
44
|
-
color: var(--smrt-color-on-surface
|
|
45
|
-
background: var(--smrt-color-surface-container
|
|
46
|
+
color: var(--smrt-color-on-surface);
|
|
47
|
+
background: var(--smrt-color-surface-container);
|
|
46
48
|
padding: 0.25rem 0.5rem;
|
|
47
|
-
border-radius: var(--smrt-radius-sm
|
|
49
|
+
border-radius: var(--smrt-radius-sm);
|
|
48
50
|
display: inline-block;
|
|
49
51
|
margin-bottom: 0.5rem;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
.product-description.svelte-11ja2cl {
|
|
53
55
|
margin: 0.5rem 0;
|
|
54
|
-
color: var(--smrt-color-on-surface-variant
|
|
56
|
+
color: var(--smrt-color-on-surface-variant);
|
|
55
57
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
56
58
|
line-height: var(--smrt-typography-body-medium-line-height, 1.4);
|
|
57
59
|
}
|
|
@@ -69,10 +71,10 @@
|
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
.tag.svelte-11ja2cl {
|
|
72
|
-
background: var(--smrt-color-surface-container
|
|
73
|
-
color: var(--smrt-color-on-surface
|
|
74
|
+
background: var(--smrt-color-surface-container);
|
|
75
|
+
color: var(--smrt-color-on-surface);
|
|
74
76
|
padding: 0.125rem 0.5rem;
|
|
75
|
-
border-radius: var(--smrt-radius-full
|
|
77
|
+
border-radius: var(--smrt-radius-full);
|
|
76
78
|
font-size: var(--smrt-typography-label-medium-size, 0.75rem);
|
|
77
79
|
}
|
|
78
80
|
|
|
@@ -81,15 +83,18 @@
|
|
|
81
83
|
gap: 0.5rem;
|
|
82
84
|
margin-top: 1rem;
|
|
83
85
|
padding-top: 0.75rem;
|
|
84
|
-
border-top: 1px solid var(--smrt-color-outline-variant
|
|
86
|
+
border-top: 1px solid var(--smrt-color-outline-variant);
|
|
85
87
|
}
|
|
88
|
+
}
|
|
86
89
|
|
|
90
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
91
|
+
@layer smrt.theme {
|
|
87
92
|
.product-form-shell.svelte-1hh5ovx .product-form {
|
|
88
93
|
max-width: 500px;
|
|
89
94
|
padding: 1.5rem;
|
|
90
|
-
background: var(--smrt-color-surface
|
|
91
|
-
border-radius: var(--smrt-radius-md
|
|
92
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
95
|
+
background: var(--smrt-color-surface);
|
|
96
|
+
border-radius: var(--smrt-radius-md);
|
|
97
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
93
98
|
}
|
|
94
99
|
|
|
95
100
|
.form-group.svelte-1hh5ovx {
|
|
@@ -106,7 +111,7 @@
|
|
|
106
111
|
display: block;
|
|
107
112
|
margin-bottom: 0.25rem;
|
|
108
113
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
109
|
-
color: var(--smrt-color-on-surface
|
|
114
|
+
color: var(--smrt-color-on-surface);
|
|
110
115
|
font-size: var(--smrt-typography-label-large-size, 0.875rem);
|
|
111
116
|
}
|
|
112
117
|
|
|
@@ -114,7 +119,7 @@
|
|
|
114
119
|
<input class="input error"> inside its own component, so the scoped class
|
|
115
120
|
can't reach it without :global (#1589). */
|
|
116
121
|
.product-form-shell.svelte-1hh5ovx .input.error {
|
|
117
|
-
border-color: var(--smrt-color-error
|
|
122
|
+
border-color: var(--smrt-color-error);
|
|
118
123
|
}
|
|
119
124
|
|
|
120
125
|
.checkbox-label.svelte-1hh5ovx {
|
|
@@ -129,13 +134,13 @@
|
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
.form-hint.svelte-1hh5ovx {
|
|
132
|
-
color: var(--smrt-color-on-surface-variant
|
|
137
|
+
color: var(--smrt-color-on-surface-variant);
|
|
133
138
|
font-size: var(--smrt-typography-body-small-size, 0.75rem);
|
|
134
139
|
margin-top: 0.25rem;
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
.error-message.svelte-1hh5ovx {
|
|
138
|
-
color: var(--smrt-color-error
|
|
143
|
+
color: var(--smrt-color-error);
|
|
139
144
|
font-size: var(--smrt-typography-label-medium-size, 0.75rem);
|
|
140
145
|
margin-top: 0.25rem;
|
|
141
146
|
display: block;
|
|
@@ -147,6 +152,7 @@
|
|
|
147
152
|
justify-content: flex-end;
|
|
148
153
|
margin-top: 1.5rem;
|
|
149
154
|
padding-top: 1rem;
|
|
150
|
-
border-top: 1px solid var(--smrt-color-outline-variant
|
|
155
|
+
border-top: 1px solid var(--smrt-color-outline-variant);
|
|
151
156
|
}
|
|
157
|
+
}
|
|
152
158
|
/*$vite$:1*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-products",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.17",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "SMRT products module: triple-purpose microservice template for standalone apps, federated modules, and NPM libraries",
|
|
6
6
|
"author": "HappyVertical",
|
|
@@ -57,13 +57,13 @@
|
|
|
57
57
|
"@happyvertical/ai": "^0.103.4",
|
|
58
58
|
"@happyvertical/files": "^0.103.4",
|
|
59
59
|
"@happyvertical/logger": "^0.103.4",
|
|
60
|
-
"@happyvertical/smrt-assets": "0.55.
|
|
61
|
-
"@happyvertical/smrt-core": "0.55.
|
|
62
|
-
"@happyvertical/smrt-scanner": "0.55.
|
|
63
|
-
"@happyvertical/smrt-svelte": "0.55.
|
|
64
|
-
"@happyvertical/smrt-tenancy": "0.55.
|
|
65
|
-
"@happyvertical/smrt-ui": "0.55.
|
|
66
|
-
"@happyvertical/smrt-web": "0.55.
|
|
60
|
+
"@happyvertical/smrt-assets": "0.55.17",
|
|
61
|
+
"@happyvertical/smrt-core": "0.55.17",
|
|
62
|
+
"@happyvertical/smrt-scanner": "0.55.17",
|
|
63
|
+
"@happyvertical/smrt-svelte": "0.55.17",
|
|
64
|
+
"@happyvertical/smrt-tenancy": "0.55.17",
|
|
65
|
+
"@happyvertical/smrt-ui": "0.55.17",
|
|
66
|
+
"@happyvertical/smrt-web": "0.55.17",
|
|
67
67
|
"@happyvertical/sql": "^0.103.4",
|
|
68
68
|
"@happyvertical/utils": "^0.103.4",
|
|
69
69
|
"cors": "^2.8.6",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@types/cors": "2.8.19",
|
|
85
85
|
"@types/express": "^5.0.6",
|
|
86
86
|
"@types/node": "24.13.6",
|
|
87
|
-
"@happyvertical/smrt-vitest": "0.55.
|
|
87
|
+
"@happyvertical/smrt-vitest": "0.55.17",
|
|
88
88
|
"concurrently": "^10.0.5",
|
|
89
89
|
"svelte": "^5.57.1",
|
|
90
90
|
"svelte-check": "^4.7.6",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"components-DoiQjCUj.js","names":[],"sources":["../../../src/lib/components/ProductCard.svelte","../../../src/lib/components/ProductForm.svelte"],"sourcesContent":["<script lang=\"ts\">\nimport { Button } from '@happyvertical/smrt-ui/ui';\nimport type { ProductData } from '../types';\n\ninterface Props {\n /** The product to display. */\n product: ProductData;\n /** Fired when the user clicks to edit the product. */\n onEdit?: (product: ProductData) => void;\n /** Fired when the user clicks to delete the product. */\n onDelete?: (id: string) => void;\n}\n\nconst { product, onEdit, onDelete }: Props = $props();\n</script>\n\n<div class=\"product-card\">\n <div class=\"product-header\">\n <h3 class=\"product-name\">{product.name}</h3>\n {#if product.manufacturer}\n <div class=\"product-manufacturer\">{product.manufacturer}</div>\n {/if}\n </div>\n\n {#if product.model}\n <div class=\"product-model\">Model: {product.model}</div>\n {/if}\n\n {#if product.description}\n <p class=\"product-description\">{product.description}</p>\n {/if}\n\n <div class=\"product-meta\">\n {#if product.category}\n <div class=\"product-category\">Category: {product.category}</div>\n {/if}\n \n {#if product.tags && product.tags.length > 0}\n <div class=\"product-tags\">\n {#each product.tags as tag}\n <span class=\"tag\">{tag}</span>\n {/each}\n </div>\n {/if}\n </div>\n \n <div class=\"product-actions\">\n {#if onEdit}\n <Button type=\"button\" variant=\"secondary\" size=\"sm\" onclick={() => onEdit?.(product)}>\n Edit\n </Button>\n {/if}\n\n {#if onDelete}\n <Button type=\"button\" variant=\"danger\" size=\"sm\" onclick={() => onDelete?.(product.id)}>\n Delete\n </Button>\n {/if}\n </div>\n</div>\n\n<style>\n .product-card {\n border: 1px solid var(--smrt-color-outline-variant, #e2e8f0);\n border-radius: var(--smrt-radius-md, 8px);\n padding: 1rem;\n background: var(--smrt-color-surface, #fff);\n box-shadow: var(--smrt-elevation-1, 0 1px 3px color-mix(in srgb, var(--smrt-color-shadow, #000) 10%, transparent));\n transition: box-shadow 0.2s;\n }\n\n .product-card:hover {\n box-shadow: var(--smrt-elevation-2, 0 4px 6px color-mix(in srgb, var(--smrt-color-shadow, #000) 10%, transparent));\n }\n \n .product-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.5rem;\n }\n \n .product-name {\n margin: 0;\n font-size: var(--smrt-typography-title-medium-size, 1.125rem);\n font-weight: var(--smrt-typography-weight-semibold, 600);\n color: var(--smrt-color-on-surface, #1f2937);\n }\n\n .product-manufacturer {\n font-size: var(--smrt-typography-title-small-size, 0.875rem);\n font-weight: var(--smrt-typography-weight-medium, 500);\n color: var(--smrt-color-on-surface-variant, #6b7280);\n }\n\n .product-model {\n font-size: var(--smrt-typography-body-medium-size, 0.875rem);\n color: var(--smrt-color-on-surface-variant, #6b7280);\n margin-bottom: 0.5rem;\n }\n\n .product-category {\n font-size: var(--smrt-typography-label-medium-size, 0.75rem);\n font-weight: var(--smrt-typography-weight-medium, 500);\n color: var(--smrt-color-on-surface, #374151);\n background: var(--smrt-color-surface-container, #f3f4f6);\n padding: 0.25rem 0.5rem;\n border-radius: var(--smrt-radius-sm, 4px);\n display: inline-block;\n margin-bottom: 0.5rem;\n }\n \n .product-description {\n margin: 0.5rem 0;\n color: var(--smrt-color-on-surface-variant, #6b7280);\n font-size: var(--smrt-typography-body-medium-size, 0.875rem);\n line-height: var(--smrt-typography-body-medium-line-height, 1.4);\n }\n \n .product-meta {\n margin: 0.75rem 0;\n }\n \n \n .product-tags {\n margin-top: 0.5rem;\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n }\n \n .tag {\n background: var(--smrt-color-surface-container, #f3f4f6);\n color: var(--smrt-color-on-surface, #374151);\n padding: 0.125rem 0.5rem;\n border-radius: var(--smrt-radius-full, 9999px);\n font-size: var(--smrt-typography-label-medium-size, 0.75rem);\n }\n\n .product-actions {\n display: flex;\n gap: 0.5rem;\n margin-top: 1rem;\n padding-top: 0.75rem;\n border-top: 1px solid var(--smrt-color-outline-variant, #f3f4f6);\n }\n</style>","<script lang=\"ts\">\nimport { Form, Input, Textarea } from '@happyvertical/smrt-ui/forms';\nimport { useI18n } from '@happyvertical/smrt-ui/i18n';\nimport { Button } from '@happyvertical/smrt-ui/ui';\nimport { M } from '../i18n.js';\nimport type { ProductData } from '../types';\n\nconst { t } = useI18n();\n\ninterface Props {\n /** Product to populate the form with. */\n product?: Partial<ProductData>;\n /** Fired when the user submits the form. */\n onSubmit: (product: Partial<ProductData>) => void;\n /** Fired when the user clicks the cancel button. */\n onCancel?: () => void;\n /** Disables all inputs and shows \"Saving...\" when true. */\n loading?: boolean;\n}\n\nconst { product = {}, onSubmit, onCancel, loading = false }: Props = $props();\n\nconst formData = $state({\n name: product.name || '',\n description: product.description || '',\n price: product.price || 0,\n inStock: product.inStock ?? true,\n category: product.category || '',\n tags: product.tags?.join(', ') || '',\n});\n\nlet errors = $state<Record<string, string>>({});\n\nfunction validateForm() {\n errors = {};\n\n if (!formData.name.trim()) {\n errors.name = 'Product name is required';\n }\n\n if (formData.price < 0) {\n errors.price = 'Price must be non-negative';\n }\n\n return Object.keys(errors).length === 0;\n}\n\nfunction handleSubmit(event: Event) {\n event.preventDefault();\n\n if (!validateForm()) {\n return;\n }\n\n const productData: Partial<ProductData> = {\n ...product,\n name: formData.name.trim(),\n description: formData.description.trim() || undefined,\n price: formData.price,\n inStock: formData.inStock,\n category: formData.category.trim(),\n tags: formData.tags\n ? formData.tags\n .split(',')\n .map((tag) => tag.trim())\n .filter(Boolean)\n : [],\n };\n\n onSubmit(productData);\n}\n</script>\n\n<div class=\"product-form-shell\">\n <Form onsubmit={handleSubmit} class=\"product-form\">\n <div class=\"form-group\">\n <label for=\"name\">{t(M['products.product_form.name_label'])}</label>\n <Input\n id=\"name\"\n type=\"text\"\n bind:value={formData.name}\n disabled={loading}\n class={errors.name ? 'error' : ''}\n placeholder={t(M['products.product_form.name_placeholder'])}\n />\n {#if errors.name}\n <span class=\"error-message\">{errors.name}</span>\n {/if}\n </div>\n\n <div class=\"form-group\">\n <label for=\"description\">Description</label>\n <Textarea\n id=\"description\"\n bind:value={formData.description}\n disabled={loading}\n placeholder={t(M['products.product_form.description_placeholder'])}\n rows={3}\n ></Textarea>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label for=\"price\">Price *</label>\n <Input\n id=\"price\"\n type=\"number\"\n step=\"0.01\"\n min=\"0\"\n bind:value={formData.price}\n disabled={loading}\n class={errors.price ? 'error' : ''}\n placeholder=\"0.00\"\n />\n {#if errors.price}\n <span class=\"error-message\">{errors.price}</span>\n {/if}\n </div>\n\n <div class=\"form-group\">\n <label for=\"category\">Category</label>\n <Input\n id=\"category\"\n type=\"text\"\n bind:value={formData.category}\n disabled={loading}\n placeholder={t(M['products.product_form.category_placeholder'])}\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <label for=\"tags\">Tags</label>\n <Input\n id=\"tags\"\n type=\"text\"\n bind:value={formData.tags}\n disabled={loading}\n placeholder={t(M['products.product_form.tags_placeholder'])}\n />\n <small class=\"form-hint\">{t(M['products.product_form.tags_hint'])}</small>\n </div>\n\n <div class=\"form-group\">\n <label class=\"checkbox-label\">\n <!-- raw-primitive-allow: native checkbox; no Provider-free checkbox primitive (Toggle is a switch with different semantics, CheckboxInput requires a Provider) -->\n <input\n type=\"checkbox\"\n bind:checked={formData.inStock}\n disabled={loading}\n class=\"form-checkbox\"\n />\n {t(M['products.product_form.in_stock_label'])}\n </label>\n </div>\n\n <div class=\"form-actions\">\n {#if onCancel}\n <Button type=\"button\" variant=\"secondary\" onclick={onCancel} disabled={loading}>\n Cancel\n </Button>\n {/if}\n\n <Button type=\"submit\" variant=\"primary\" disabled={loading}>\n {#if loading}\n Saving...\n {:else}\n {product.id ? 'Update Product' : 'Create Product'}\n {/if}\n </Button>\n </div>\n </Form>\n</div>\n\n<style>\n .product-form-shell :global(.product-form) {\n max-width: 500px;\n padding: 1.5rem;\n background: var(--smrt-color-surface, #fff);\n border-radius: var(--smrt-radius-md, 8px);\n border: 1px solid var(--smrt-color-outline-variant, #e2e8f0);\n }\n\n .form-group {\n margin-bottom: 1rem;\n }\n\n .form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n }\n\n label {\n display: block;\n margin-bottom: 0.25rem;\n font-weight: var(--smrt-typography-weight-medium, 500);\n color: var(--smrt-color-on-surface, #374151);\n font-size: var(--smrt-typography-label-large-size, 0.875rem);\n }\n\n /* Error border on the migrated <Input>. The primitive renders the inner\n <input class=\"input error\"> inside its own component, so the scoped class\n can't reach it without :global (#1589). */\n .product-form-shell :global(.input.error) {\n border-color: var(--smrt-color-error, #dc2626);\n }\n\n .checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n }\n \n .form-checkbox {\n width: auto;\n }\n \n .form-hint {\n color: var(--smrt-color-on-surface-variant, #6b7280);\n font-size: var(--smrt-typography-body-small-size, 0.75rem);\n margin-top: 0.25rem;\n }\n\n .error-message {\n color: var(--smrt-color-error, #dc2626);\n font-size: var(--smrt-typography-label-medium-size, 0.75rem);\n margin-top: 0.25rem;\n display: block;\n }\n\n .form-actions {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-top: 1.5rem;\n padding-top: 1rem;\n border-top: 1px solid var(--smrt-color-outline-variant, #f3f4f6);\n }\n</style>"],"mappings":"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"}
|