@mmlogic/components 0.1.0

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 (159) hide show
  1. package/README.md +221 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  3. package/dist/cjs/format-CDw-zie_.js +82 -0
  4. package/dist/cjs/index-OvnIRO4Y.js +1523 -0
  5. package/dist/cjs/index.cjs.js +32 -0
  6. package/dist/cjs/loader.cjs.js +13 -0
  7. package/dist/cjs/mosterdcomponents.cjs.js +25 -0
  8. package/dist/cjs/mrd-boolean-field_16.cjs.entry.js +1185 -0
  9. package/dist/cjs/mrd-table.cjs.entry.js +322 -0
  10. package/dist/cjs/quill-DmFfnC1f.js +16272 -0
  11. package/dist/collection/collection-manifest.json +29 -0
  12. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.js +199 -0
  13. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.scss +77 -0
  14. package/dist/collection/components/mrd-currency-field/mrd-currency-field.js +248 -0
  15. package/dist/collection/components/mrd-currency-field/mrd-currency-field.scss +100 -0
  16. package/dist/collection/components/mrd-date-field/mrd-date-field.js +206 -0
  17. package/dist/collection/components/mrd-date-field/mrd-date-field.scss +66 -0
  18. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.js +206 -0
  19. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.scss +66 -0
  20. package/dist/collection/components/mrd-email-field/mrd-email-field.js +230 -0
  21. package/dist/collection/components/mrd-email-field/mrd-email-field.scss +69 -0
  22. package/dist/collection/components/mrd-field/mrd-field.js +187 -0
  23. package/dist/collection/components/mrd-file-field/mrd-file-field.js +273 -0
  24. package/dist/collection/components/mrd-file-field/mrd-file-field.scss +140 -0
  25. package/dist/collection/components/mrd-form/mrd-form.js +245 -0
  26. package/dist/collection/components/mrd-form/mrd-form.scss +116 -0
  27. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.js +230 -0
  28. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.scss +69 -0
  29. package/dist/collection/components/mrd-image-field/mrd-image-field.js +287 -0
  30. package/dist/collection/components/mrd-image-field/mrd-image-field.scss +166 -0
  31. package/dist/collection/components/mrd-list-field/mrd-list-field.js +311 -0
  32. package/dist/collection/components/mrd-list-field/mrd-list-field.scss +109 -0
  33. package/dist/collection/components/mrd-number-field/mrd-number-field.js +316 -0
  34. package/dist/collection/components/mrd-number-field/mrd-number-field.scss +77 -0
  35. package/dist/collection/components/mrd-relation-field/mrd-relation-field.js +490 -0
  36. package/dist/collection/components/mrd-relation-field/mrd-relation-field.scss +266 -0
  37. package/dist/collection/components/mrd-table/mrd-table.js +522 -0
  38. package/dist/collection/components/mrd-table/mrd-table.scss +158 -0
  39. package/dist/collection/components/mrd-text-field/mrd-text-field.js +227 -0
  40. package/dist/collection/components/mrd-text-field/mrd-text-field.scss +69 -0
  41. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +267 -0
  42. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.scss +79 -0
  43. package/dist/collection/components/mrd-time-field/mrd-time-field.js +206 -0
  44. package/dist/collection/components/mrd-time-field/mrd-time-field.scss +66 -0
  45. package/dist/collection/index.js +1 -0
  46. package/dist/collection/types/client-layout.js +30 -0
  47. package/dist/collection/types/index.js +1 -0
  48. package/dist/collection/utils/cell-renderer.js +57 -0
  49. package/dist/collection/utils/format.js +72 -0
  50. package/dist/collection/utils/i18n.js +80 -0
  51. package/dist/collection/utils/validation.js +46 -0
  52. package/dist/components/client-layout.js +1 -0
  53. package/dist/components/format.js +1 -0
  54. package/dist/components/i18n.js +1 -0
  55. package/dist/components/index.d.ts +35 -0
  56. package/dist/components/index.js +1 -0
  57. package/dist/components/mrd-boolean-field.d.ts +11 -0
  58. package/dist/components/mrd-boolean-field.js +1 -0
  59. package/dist/components/mrd-boolean-field2.js +1 -0
  60. package/dist/components/mrd-currency-field.d.ts +11 -0
  61. package/dist/components/mrd-currency-field.js +1 -0
  62. package/dist/components/mrd-currency-field2.js +1 -0
  63. package/dist/components/mrd-date-field.d.ts +11 -0
  64. package/dist/components/mrd-date-field.js +1 -0
  65. package/dist/components/mrd-date-field2.js +1 -0
  66. package/dist/components/mrd-datetime-field.d.ts +11 -0
  67. package/dist/components/mrd-datetime-field.js +1 -0
  68. package/dist/components/mrd-datetime-field2.js +1 -0
  69. package/dist/components/mrd-email-field.d.ts +11 -0
  70. package/dist/components/mrd-email-field.js +1 -0
  71. package/dist/components/mrd-email-field2.js +1 -0
  72. package/dist/components/mrd-field.d.ts +11 -0
  73. package/dist/components/mrd-field.js +1 -0
  74. package/dist/components/mrd-field2.js +1 -0
  75. package/dist/components/mrd-file-field.d.ts +11 -0
  76. package/dist/components/mrd-file-field.js +1 -0
  77. package/dist/components/mrd-file-field2.js +1 -0
  78. package/dist/components/mrd-form.d.ts +11 -0
  79. package/dist/components/mrd-form.js +1 -0
  80. package/dist/components/mrd-hyperlink-field.d.ts +11 -0
  81. package/dist/components/mrd-hyperlink-field.js +1 -0
  82. package/dist/components/mrd-hyperlink-field2.js +1 -0
  83. package/dist/components/mrd-image-field.d.ts +11 -0
  84. package/dist/components/mrd-image-field.js +1 -0
  85. package/dist/components/mrd-image-field2.js +1 -0
  86. package/dist/components/mrd-list-field.d.ts +11 -0
  87. package/dist/components/mrd-list-field.js +1 -0
  88. package/dist/components/mrd-list-field2.js +1 -0
  89. package/dist/components/mrd-number-field.d.ts +11 -0
  90. package/dist/components/mrd-number-field.js +1 -0
  91. package/dist/components/mrd-number-field2.js +1 -0
  92. package/dist/components/mrd-relation-field.d.ts +11 -0
  93. package/dist/components/mrd-relation-field.js +1 -0
  94. package/dist/components/mrd-relation-field2.js +1 -0
  95. package/dist/components/mrd-table.d.ts +11 -0
  96. package/dist/components/mrd-table.js +1 -0
  97. package/dist/components/mrd-text-field.d.ts +11 -0
  98. package/dist/components/mrd-text-field.js +1 -0
  99. package/dist/components/mrd-text-field2.js +1 -0
  100. package/dist/components/mrd-textarea-field.d.ts +11 -0
  101. package/dist/components/mrd-textarea-field.js +1 -0
  102. package/dist/components/mrd-textarea-field2.js +1 -0
  103. package/dist/components/mrd-time-field.d.ts +11 -0
  104. package/dist/components/mrd-time-field.js +1 -0
  105. package/dist/components/mrd-time-field2.js +1 -0
  106. package/dist/components/quill.js +1 -0
  107. package/dist/components/validation.js +1 -0
  108. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  109. package/dist/esm/format-Dt-aHxkM.js +74 -0
  110. package/dist/esm/index-DQ_he8te.js +1514 -0
  111. package/dist/esm/index.js +32 -0
  112. package/dist/esm/loader.js +11 -0
  113. package/dist/esm/mosterdcomponents.js +21 -0
  114. package/dist/esm/mrd-boolean-field_16.entry.js +1168 -0
  115. package/dist/esm/mrd-table.entry.js +320 -0
  116. package/dist/esm/quill-CiuCgGz_.js +16266 -0
  117. package/dist/index.cjs.js +1 -0
  118. package/dist/index.js +1 -0
  119. package/dist/mosterdcomponents/index.esm.js +1 -0
  120. package/dist/mosterdcomponents/mosterdcomponents.css +1 -0
  121. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -0
  122. package/dist/mosterdcomponents/p-88cd0930.entry.js +1 -0
  123. package/dist/mosterdcomponents/p-926ed331.entry.js +1 -0
  124. package/dist/mosterdcomponents/p-CiuCgGz_.js +1 -0
  125. package/dist/mosterdcomponents/p-DQ_he8te.js +2 -0
  126. package/dist/mosterdcomponents/p-DQuL1Twl.js +1 -0
  127. package/dist/mosterdcomponents/p-Dt-aHxkM.js +1 -0
  128. package/dist/types/components/mrd-boolean-field/mrd-boolean-field.d.ts +22 -0
  129. package/dist/types/components/mrd-currency-field/mrd-currency-field.d.ts +26 -0
  130. package/dist/types/components/mrd-date-field/mrd-date-field.d.ts +21 -0
  131. package/dist/types/components/mrd-datetime-field/mrd-datetime-field.d.ts +21 -0
  132. package/dist/types/components/mrd-email-field/mrd-email-field.d.ts +22 -0
  133. package/dist/types/components/mrd-field/mrd-field.d.ts +23 -0
  134. package/dist/types/components/mrd-file-field/mrd-file-field.d.ts +30 -0
  135. package/dist/types/components/mrd-form/mrd-form.d.ts +24 -0
  136. package/dist/types/components/mrd-hyperlink-field/mrd-hyperlink-field.d.ts +22 -0
  137. package/dist/types/components/mrd-image-field/mrd-image-field.d.ts +31 -0
  138. package/dist/types/components/mrd-list-field/mrd-list-field.d.ts +28 -0
  139. package/dist/types/components/mrd-number-field/mrd-number-field.d.ts +29 -0
  140. package/dist/types/components/mrd-relation-field/mrd-relation-field.d.ts +44 -0
  141. package/dist/types/components/mrd-table/mrd-table.d.ts +72 -0
  142. package/dist/types/components/mrd-text-field/mrd-text-field.d.ts +22 -0
  143. package/dist/types/components/mrd-textarea-field/mrd-textarea-field.d.ts +25 -0
  144. package/dist/types/components/mrd-time-field/mrd-time-field.d.ts +21 -0
  145. package/dist/types/components.d.ts +1609 -0
  146. package/dist/types/index.d.ts +1 -0
  147. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  148. package/dist/types/types/client-layout.d.ts +76 -0
  149. package/dist/types/types/index.d.ts +1 -0
  150. package/dist/types/utils/cell-renderer.d.ts +14 -0
  151. package/dist/types/utils/format.d.ts +7 -0
  152. package/dist/types/utils/i18n.d.ts +1 -0
  153. package/dist/types/utils/validation.d.ts +5 -0
  154. package/loader/cdn.js +1 -0
  155. package/loader/index.cjs.js +1 -0
  156. package/loader/index.d.ts +24 -0
  157. package/loader/index.es2017.js +1 -0
  158. package/loader/index.js +2 -0
  159. package/package.json +54 -0
@@ -0,0 +1,287 @@
1
+ import { Host, h } from "@stencil/core";
2
+ import { t } from "../../utils/i18n";
3
+ export class MrdImageField {
4
+ constructor() {
5
+ this.name = '';
6
+ this.label = '';
7
+ this.required = false;
8
+ this.disabled = false;
9
+ this.locale = navigator.language;
10
+ this.accept = 'image/*';
11
+ this.maxSize = 0;
12
+ this.previewUrl = '';
13
+ this.fileName = '';
14
+ this.isDragging = false;
15
+ this.error = '';
16
+ this.handleInputChange = (e) => {
17
+ var _a;
18
+ const files = e.target.files;
19
+ this.handleFile((_a = files === null || files === void 0 ? void 0 : files[0]) !== null && _a !== void 0 ? _a : null);
20
+ };
21
+ this.handleDragOver = (e) => {
22
+ e.preventDefault();
23
+ this.isDragging = true;
24
+ };
25
+ this.handleDragLeave = () => {
26
+ this.isDragging = false;
27
+ };
28
+ this.handleDrop = (e) => {
29
+ var _a, _b, _c;
30
+ e.preventDefault();
31
+ this.isDragging = false;
32
+ const file = (_c = (_b = (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : null;
33
+ this.handleFile(file);
34
+ };
35
+ this.handleZoneClick = () => {
36
+ var _a;
37
+ if (!this.disabled) {
38
+ (_a = this.fileInputRef) === null || _a === void 0 ? void 0 : _a.click();
39
+ }
40
+ };
41
+ this.handleClear = (e) => {
42
+ e.stopPropagation();
43
+ this.previewUrl = '';
44
+ this.fileName = '';
45
+ this.error = '';
46
+ if (this.fileInputRef)
47
+ this.fileInputRef.value = '';
48
+ this.mrdChange.emit({ name: this.name, value: null });
49
+ };
50
+ }
51
+ handleFile(file) {
52
+ if (!file) {
53
+ this.previewUrl = '';
54
+ this.fileName = '';
55
+ this.mrdChange.emit({ name: this.name, value: null });
56
+ return;
57
+ }
58
+ if (this.maxSize > 0 && file.size > this.maxSize) {
59
+ this.error = t('file_too_large', this.locale);
60
+ return;
61
+ }
62
+ if (!file.type.startsWith('image/')) {
63
+ this.error = 'Please select an image file';
64
+ return;
65
+ }
66
+ this.error = '';
67
+ this.fileName = file.name;
68
+ const reader = new FileReader();
69
+ reader.onload = (ev) => {
70
+ var _a;
71
+ this.previewUrl = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.result;
72
+ };
73
+ reader.readAsDataURL(file);
74
+ this.mrdChange.emit({ name: this.name, value: file });
75
+ }
76
+ render() {
77
+ const hasError = !!this.error;
78
+ return (h(Host, { key: 'c188d49744b7044d46b6c6f42126032f1ecc8a8f' }, h("div", { key: '53990650a5109172addca5ae274b180569b08860', class: "mrd-image-field" }, this.label && (h("label", { key: '3dc78faca422fcafed31833a11307cace9f2ff13', class: `mrd-image-field__label${this.required ? ' mrd-image-field__label--required' : ''}` }, this.label)), h("div", { key: '4ca9eb1362c999721742ac3d727326078fe844c7', class: `mrd-image-field__zone${this.isDragging ? ' mrd-image-field__zone--dragging' : ''}${hasError ? ' mrd-image-field__zone--error' : ''}${this.disabled ? ' mrd-image-field__zone--disabled' : ''}`, onClick: this.handleZoneClick, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("input", { key: '9e3a237ffb69ce9f6fb20e6b3e603e4db453e7e9', ref: el => (this.fileInputRef = el), class: "mrd-image-field__input", type: "file", name: this.name, accept: this.accept, disabled: this.disabled, required: this.required && !this.previewUrl, onChange: this.handleInputChange }), this.previewUrl ? (h("div", { class: "mrd-image-field__preview-container" }, h("div", { class: "mrd-image-field__preview-thumb" }, h("img", { class: "mrd-image-field__preview", src: this.previewUrl, alt: this.fileName })), h("div", { class: "mrd-image-field__preview-info" }, h("span", { class: "mrd-image-field__preview-name" }, this.fileName)), h("button", { class: "mrd-image-field__clear", type: "button", onClick: this.handleClear, "aria-label": t('clear', this.locale) }, t('remove', this.locale)))) : (h("div", { class: "mrd-image-field__prompt" }, h("svg", { class: "mrd-image-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }), h("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), h("polyline", { points: "21 15 16 10 5 21" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-image-field__browse" }, t('browse', this.locale)))))), hasError && h("span", { key: '85cf998e1ab26cce7fbf87836df25672971a4eb1', class: "mrd-image-field__error" }, this.error))));
79
+ }
80
+ static get is() { return "mrd-image-field"; }
81
+ static get encapsulation() { return "scoped"; }
82
+ static get originalStyleUrls() {
83
+ return {
84
+ "$": ["mrd-image-field.scss"]
85
+ };
86
+ }
87
+ static get styleUrls() {
88
+ return {
89
+ "$": ["mrd-image-field.css"]
90
+ };
91
+ }
92
+ static get properties() {
93
+ return {
94
+ "name": {
95
+ "type": "string",
96
+ "mutable": false,
97
+ "complexType": {
98
+ "original": "string",
99
+ "resolved": "string",
100
+ "references": {}
101
+ },
102
+ "required": false,
103
+ "optional": false,
104
+ "docs": {
105
+ "tags": [],
106
+ "text": ""
107
+ },
108
+ "getter": false,
109
+ "setter": false,
110
+ "reflect": false,
111
+ "attribute": "name",
112
+ "defaultValue": "''"
113
+ },
114
+ "label": {
115
+ "type": "string",
116
+ "mutable": false,
117
+ "complexType": {
118
+ "original": "string",
119
+ "resolved": "string",
120
+ "references": {}
121
+ },
122
+ "required": false,
123
+ "optional": false,
124
+ "docs": {
125
+ "tags": [],
126
+ "text": ""
127
+ },
128
+ "getter": false,
129
+ "setter": false,
130
+ "reflect": false,
131
+ "attribute": "label",
132
+ "defaultValue": "''"
133
+ },
134
+ "required": {
135
+ "type": "boolean",
136
+ "mutable": false,
137
+ "complexType": {
138
+ "original": "boolean",
139
+ "resolved": "boolean",
140
+ "references": {}
141
+ },
142
+ "required": false,
143
+ "optional": false,
144
+ "docs": {
145
+ "tags": [],
146
+ "text": ""
147
+ },
148
+ "getter": false,
149
+ "setter": false,
150
+ "reflect": false,
151
+ "attribute": "required",
152
+ "defaultValue": "false"
153
+ },
154
+ "disabled": {
155
+ "type": "boolean",
156
+ "mutable": false,
157
+ "complexType": {
158
+ "original": "boolean",
159
+ "resolved": "boolean",
160
+ "references": {}
161
+ },
162
+ "required": false,
163
+ "optional": false,
164
+ "docs": {
165
+ "tags": [],
166
+ "text": ""
167
+ },
168
+ "getter": false,
169
+ "setter": false,
170
+ "reflect": false,
171
+ "attribute": "disabled",
172
+ "defaultValue": "false"
173
+ },
174
+ "locale": {
175
+ "type": "string",
176
+ "mutable": false,
177
+ "complexType": {
178
+ "original": "string",
179
+ "resolved": "string",
180
+ "references": {}
181
+ },
182
+ "required": false,
183
+ "optional": false,
184
+ "docs": {
185
+ "tags": [],
186
+ "text": ""
187
+ },
188
+ "getter": false,
189
+ "setter": false,
190
+ "reflect": false,
191
+ "attribute": "locale",
192
+ "defaultValue": "navigator.language"
193
+ },
194
+ "accept": {
195
+ "type": "string",
196
+ "mutable": false,
197
+ "complexType": {
198
+ "original": "string",
199
+ "resolved": "string",
200
+ "references": {}
201
+ },
202
+ "required": false,
203
+ "optional": false,
204
+ "docs": {
205
+ "tags": [],
206
+ "text": ""
207
+ },
208
+ "getter": false,
209
+ "setter": false,
210
+ "reflect": false,
211
+ "attribute": "accept",
212
+ "defaultValue": "'image/*'"
213
+ },
214
+ "maxSize": {
215
+ "type": "number",
216
+ "mutable": false,
217
+ "complexType": {
218
+ "original": "number",
219
+ "resolved": "number",
220
+ "references": {}
221
+ },
222
+ "required": false,
223
+ "optional": false,
224
+ "docs": {
225
+ "tags": [],
226
+ "text": ""
227
+ },
228
+ "getter": false,
229
+ "setter": false,
230
+ "reflect": false,
231
+ "attribute": "max-size",
232
+ "defaultValue": "0"
233
+ }
234
+ };
235
+ }
236
+ static get states() {
237
+ return {
238
+ "previewUrl": {},
239
+ "fileName": {},
240
+ "isDragging": {},
241
+ "error": {}
242
+ };
243
+ }
244
+ static get events() {
245
+ return [{
246
+ "method": "mrdChange",
247
+ "name": "mrdChange",
248
+ "bubbles": true,
249
+ "cancelable": true,
250
+ "composed": true,
251
+ "docs": {
252
+ "tags": [],
253
+ "text": ""
254
+ },
255
+ "complexType": {
256
+ "original": "{ name: string; value: File | null }",
257
+ "resolved": "{ name: string; value: File | null; }",
258
+ "references": {
259
+ "File": {
260
+ "location": "global",
261
+ "id": "global::File"
262
+ }
263
+ }
264
+ }
265
+ }, {
266
+ "method": "mrdBlur",
267
+ "name": "mrdBlur",
268
+ "bubbles": true,
269
+ "cancelable": true,
270
+ "composed": true,
271
+ "docs": {
272
+ "tags": [],
273
+ "text": ""
274
+ },
275
+ "complexType": {
276
+ "original": "{ name: string; value: File | null }",
277
+ "resolved": "{ name: string; value: File | null; }",
278
+ "references": {
279
+ "File": {
280
+ "location": "global",
281
+ "id": "global::File"
282
+ }
283
+ }
284
+ }
285
+ }];
286
+ }
287
+ }
@@ -0,0 +1,166 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ .mrd-image-field {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: var(--mrd-space-1);
9
+ width: 100%;
10
+ }
11
+
12
+ .mrd-image-field__label {
13
+ display: block;
14
+ font-family: var(--mrd-font-family);
15
+ font-size: var(--mrd-label-font-size);
16
+ font-weight: var(--mrd-label-font-weight);
17
+ color: var(--mrd-label-color);
18
+ }
19
+
20
+ .mrd-image-field__label--required::after {
21
+ content: ' *';
22
+ color: var(--mrd-color-danger);
23
+ }
24
+
25
+ .mrd-image-field__zone {
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ border: 2px dashed var(--mrd-border-color);
30
+ border-radius: var(--mrd-border-radius-md);
31
+ background-color: var(--mrd-color-neutral-50);
32
+ cursor: pointer;
33
+ transition: border-color var(--mrd-transition), background-color var(--mrd-transition);
34
+ min-height: 100px;
35
+ position: relative;
36
+ }
37
+
38
+ .mrd-image-field__zone:hover {
39
+ border-color: var(--mrd-color-primary);
40
+ background-color: var(--mrd-color-primary-light);
41
+ }
42
+
43
+ .mrd-image-field__zone--dragging {
44
+ border-color: var(--mrd-color-primary);
45
+ background-color: var(--mrd-color-primary-light);
46
+ }
47
+
48
+ .mrd-image-field__zone--error {
49
+ border-color: var(--mrd-border-color-error);
50
+ }
51
+
52
+ .mrd-image-field__zone--disabled {
53
+ opacity: 0.6;
54
+ cursor: not-allowed;
55
+ }
56
+
57
+ .mrd-image-field__zone--disabled:hover {
58
+ border-color: var(--mrd-border-color);
59
+ background-color: var(--mrd-color-neutral-50);
60
+ }
61
+
62
+ .mrd-image-field__input {
63
+ position: absolute;
64
+ inset: 0;
65
+ opacity: 0;
66
+ width: 100%;
67
+ height: 100%;
68
+ pointer-events: none;
69
+ }
70
+
71
+ .mrd-image-field__prompt {
72
+ display: flex;
73
+ flex-direction: column;
74
+ align-items: center;
75
+ gap: var(--mrd-space-2);
76
+ padding: var(--mrd-space-6);
77
+ font-family: var(--mrd-font-family);
78
+ font-size: var(--mrd-font-size-sm);
79
+ color: var(--mrd-color-neutral-500);
80
+ text-align: center;
81
+ }
82
+
83
+ .mrd-image-field__upload-icon {
84
+ width: 40px;
85
+ height: 40px;
86
+ color: var(--mrd-color-neutral-400);
87
+ }
88
+
89
+ .mrd-image-field__browse {
90
+ color: var(--mrd-color-primary);
91
+ font-weight: var(--mrd-font-weight-medium);
92
+ text-decoration: underline;
93
+ }
94
+
95
+ /* Preview: thumbnail + bestandsnaam + verwijder knop */
96
+ .mrd-image-field__preview-container {
97
+ display: flex;
98
+ align-items: center;
99
+ gap: var(--mrd-space-4);
100
+ padding: var(--mrd-space-4);
101
+ width: 100%;
102
+ }
103
+
104
+ .mrd-image-field__preview-thumb {
105
+ flex-shrink: 0;
106
+ width: 80px;
107
+ height: 80px;
108
+ border-radius: var(--mrd-border-radius);
109
+ overflow: hidden;
110
+ border: var(--mrd-border-width) solid var(--mrd-border-color);
111
+ background-color: var(--mrd-color-neutral-100);
112
+ }
113
+
114
+ .mrd-image-field__preview {
115
+ width: 100%;
116
+ height: 100%;
117
+ object-fit: cover;
118
+ display: block;
119
+ }
120
+
121
+ .mrd-image-field__preview-info {
122
+ flex: 1;
123
+ min-width: 0;
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: var(--mrd-space-1);
127
+ }
128
+
129
+ .mrd-image-field__preview-name {
130
+ font-family: var(--mrd-font-family);
131
+ font-size: var(--mrd-font-size-sm);
132
+ font-weight: var(--mrd-font-weight-medium);
133
+ color: var(--mrd-color-neutral-800);
134
+ overflow: hidden;
135
+ text-overflow: ellipsis;
136
+ white-space: nowrap;
137
+ }
138
+
139
+ .mrd-image-field__overlay {
140
+ display: none;
141
+ }
142
+
143
+ .mrd-image-field__clear {
144
+ flex-shrink: 0;
145
+ background-color: var(--mrd-color-white);
146
+ color: var(--mrd-color-danger);
147
+ border: var(--mrd-border-width) solid var(--mrd-color-danger);
148
+ border-radius: var(--mrd-border-radius);
149
+ padding: var(--mrd-space-1) var(--mrd-space-3);
150
+ font-family: var(--mrd-font-family);
151
+ font-size: var(--mrd-font-size-sm);
152
+ font-weight: var(--mrd-font-weight-medium);
153
+ cursor: pointer;
154
+ transition: background-color var(--mrd-transition), color var(--mrd-transition);
155
+ }
156
+
157
+ .mrd-image-field__clear:hover {
158
+ background-color: var(--mrd-color-danger);
159
+ color: var(--mrd-color-white);
160
+ }
161
+
162
+ .mrd-image-field__error {
163
+ font-family: var(--mrd-font-family);
164
+ font-size: var(--mrd-error-font-size);
165
+ color: var(--mrd-error-color);
166
+ }