@mmlogic/components 0.3.6 → 0.3.8

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 (161) hide show
  1. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  2. package/dist/cjs/index-BPj2cBXs.js +1570 -0
  3. package/dist/cjs/index.cjs.js +66 -0
  4. package/dist/cjs/loader.cjs.js +13 -0
  5. package/dist/cjs/mosterdcomponents.cjs.js +25 -0
  6. package/dist/cjs/mrd-boolean-field_20.cjs.entry.js +3961 -0
  7. package/dist/cjs/quill-DmFfnC1f.js +16272 -0
  8. package/dist/collection/collection-manifest.json +32 -0
  9. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.js +199 -0
  10. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.scss +77 -0
  11. package/dist/collection/components/mrd-currency-field/mrd-currency-field.js +248 -0
  12. package/dist/collection/components/mrd-currency-field/mrd-currency-field.scss +100 -0
  13. package/dist/collection/components/mrd-date-field/mrd-date-field.js +206 -0
  14. package/dist/collection/components/mrd-date-field/mrd-date-field.scss +66 -0
  15. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.js +240 -0
  16. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.scss +66 -0
  17. package/dist/collection/components/mrd-email-field/mrd-email-field.js +230 -0
  18. package/dist/collection/components/mrd-email-field/mrd-email-field.scss +69 -0
  19. package/dist/{mosterdcomponents/mrd-field.entry.js → collection/components/mrd-field/mrd-field.js} +179 -28
  20. package/dist/collection/components/mrd-field/mrd-field.scss +118 -0
  21. package/dist/collection/components/mrd-file-field/mrd-file-field.js +341 -0
  22. package/dist/collection/components/mrd-file-field/mrd-file-field.scss +153 -0
  23. package/dist/{mosterdcomponents/mrd-form.entry.js → collection/components/mrd-form/mrd-form.js} +308 -31
  24. package/dist/collection/components/mrd-form/mrd-form.scss +148 -0
  25. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.js +291 -0
  26. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.scss +91 -0
  27. package/dist/collection/components/mrd-image-field/mrd-image-field.js +356 -0
  28. package/dist/collection/components/mrd-image-field/mrd-image-field.scss +190 -0
  29. package/dist/{mosterdcomponents/mrd-layout-section.entry.js → collection/components/mrd-layout-section/mrd-layout-section.js} +420 -33
  30. package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +445 -0
  31. package/dist/collection/components/mrd-list-field/mrd-list-field.js +313 -0
  32. package/dist/collection/components/mrd-list-field/mrd-list-field.scss +109 -0
  33. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +227 -0
  34. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.scss +78 -0
  35. package/dist/collection/components/mrd-number-field/mrd-number-field.js +316 -0
  36. package/dist/collection/components/mrd-number-field/mrd-number-field.scss +77 -0
  37. package/dist/collection/components/mrd-relation-field/mrd-relation-field.js +707 -0
  38. package/dist/collection/components/mrd-relation-field/mrd-relation-field.scss +266 -0
  39. package/dist/collection/components/mrd-secret-field/mrd-secret-field.js +229 -0
  40. package/dist/collection/components/mrd-secret-field/mrd-secret-field.scss +73 -0
  41. package/dist/{mosterdcomponents/mrd-table.entry.js → collection/components/mrd-table/mrd-table.js} +394 -32
  42. package/dist/collection/components/mrd-table/mrd-table.scss +809 -0
  43. package/dist/collection/components/mrd-text-field/mrd-text-field.js +227 -0
  44. package/dist/collection/components/mrd-text-field/mrd-text-field.scss +69 -0
  45. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +267 -0
  46. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.scss +79 -0
  47. package/dist/collection/components/mrd-time-field/mrd-time-field.js +206 -0
  48. package/dist/collection/components/mrd-time-field/mrd-time-field.scss +66 -0
  49. package/dist/collection/dev/api.js +145 -0
  50. package/dist/collection/dev/app.js +890 -0
  51. package/dist/collection/dev/auth.js +156 -0
  52. package/dist/collection/dev/example-data.js +403 -0
  53. package/dist/collection/dev/sprites.svg +55 -0
  54. package/dist/collection/index.js +1 -0
  55. package/dist/collection/types/client-layout.js +64 -0
  56. package/dist/collection/types/index.js +1 -0
  57. package/dist/{mosterdcomponents/cell-renderer-CbRwLOo8.js → collection/utils/cell-renderer.js} +3 -9
  58. package/dist/{mosterdcomponents/format-BAfsQfy1.js → collection/utils/format.js} +7 -12
  59. package/dist/{mosterdcomponents/i18n-hoGGKbKU.js → collection/utils/i18n.js} +1 -6
  60. package/dist/{mosterdcomponents/validation-ixb43cqU.js → collection/utils/validation.js} +5 -12
  61. package/dist/components/client-layout.js +1 -0
  62. package/dist/components/format.js +1 -0
  63. package/dist/components/i18n.js +1 -0
  64. package/dist/components/index.js +1 -0
  65. package/dist/components/mrd-boolean-field.js +1 -0
  66. package/dist/components/mrd-boolean-field2.js +1 -0
  67. package/dist/components/mrd-currency-field.js +1 -0
  68. package/dist/components/mrd-currency-field2.js +1 -0
  69. package/dist/components/mrd-date-field.js +1 -0
  70. package/dist/components/mrd-date-field2.js +1 -0
  71. package/dist/components/mrd-datetime-field.js +1 -0
  72. package/dist/components/mrd-datetime-field2.js +1 -0
  73. package/dist/components/mrd-email-field.js +1 -0
  74. package/dist/components/mrd-email-field2.js +1 -0
  75. package/dist/components/mrd-field.js +1 -0
  76. package/dist/components/mrd-field2.js +1 -0
  77. package/dist/components/mrd-file-field.js +1 -0
  78. package/dist/components/mrd-file-field2.js +1 -0
  79. package/dist/components/mrd-form.js +1 -0
  80. package/dist/components/mrd-hyperlink-field.js +1 -0
  81. package/dist/components/mrd-hyperlink-field2.js +1 -0
  82. package/dist/components/mrd-image-field.js +1 -0
  83. package/dist/components/mrd-image-field2.js +1 -0
  84. package/dist/components/mrd-layout-section.js +1 -0
  85. package/dist/components/mrd-list-field.js +1 -0
  86. package/dist/components/mrd-list-field2.js +1 -0
  87. package/dist/components/mrd-longtext-field.js +1 -0
  88. package/dist/components/mrd-longtext-field2.js +1 -0
  89. package/dist/components/mrd-number-field.js +1 -0
  90. package/dist/components/mrd-number-field2.js +1 -0
  91. package/dist/components/mrd-relation-field.js +1 -0
  92. package/dist/components/mrd-relation-field2.js +1 -0
  93. package/dist/components/mrd-secret-field.js +1 -0
  94. package/dist/components/mrd-secret-field2.js +1 -0
  95. package/dist/components/mrd-table.js +1 -0
  96. package/dist/components/mrd-table2.js +1 -0
  97. package/dist/components/mrd-text-field.js +1 -0
  98. package/dist/components/mrd-text-field2.js +1 -0
  99. package/dist/components/mrd-textarea-field.js +1 -0
  100. package/dist/components/mrd-textarea-field2.js +1 -0
  101. package/dist/components/mrd-time-field.js +1 -0
  102. package/dist/components/mrd-time-field2.js +1 -0
  103. package/dist/components/quill.js +1 -0
  104. package/dist/components/validation.js +1 -0
  105. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  106. package/dist/esm/index-_tsCCkAi.js +1561 -0
  107. package/dist/{mosterdcomponents/client-layout-D88nn5zf.js → esm/index.js} +1 -4
  108. package/dist/esm/loader.js +11 -0
  109. package/dist/esm/mosterdcomponents.js +21 -0
  110. package/dist/esm/mrd-boolean-field_20.entry.js +3940 -0
  111. package/dist/{mosterdcomponents/quill-C9pgw_k-.js → esm/quill-CiuCgGz_.js} +1347 -16232
  112. package/dist/index.cjs.js +1 -0
  113. package/dist/index.js +1 -0
  114. package/dist/mosterdcomponents/index-6yQUNVww.js.map +1 -0
  115. package/dist/mosterdcomponents/index.esm.js +1 -5
  116. package/dist/mosterdcomponents/mosterdcomponents.css +1 -180
  117. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -50
  118. package/dist/mosterdcomponents/p-7bfaee51.entry.js +1 -0
  119. package/dist/mosterdcomponents/p-CiuCgGz_.js +1 -0
  120. package/dist/mosterdcomponents/p-DQuL1Twl.js +1 -0
  121. package/dist/mosterdcomponents/p-_tsCCkAi.js +2 -0
  122. package/package.json +1 -1
  123. package/dist/mosterdcomponents/index-B_tPFIvS.js +0 -4585
  124. package/dist/mosterdcomponents/index-B_tPFIvS.js.map +0 -1
  125. package/dist/mosterdcomponents/index-I5SuYv7a.js +0 -4
  126. package/dist/mosterdcomponents/mrd-boolean-field.entry.js +0 -37
  127. package/dist/mosterdcomponents/mrd-boolean-field.entry.js.map +0 -1
  128. package/dist/mosterdcomponents/mrd-currency-field.entry.js +0 -67
  129. package/dist/mosterdcomponents/mrd-currency-field.entry.js.map +0 -1
  130. package/dist/mosterdcomponents/mrd-date-field.entry.js +0 -46
  131. package/dist/mosterdcomponents/mrd-date-field.entry.js.map +0 -1
  132. package/dist/mosterdcomponents/mrd-datetime-field.entry.js +0 -78
  133. package/dist/mosterdcomponents/mrd-datetime-field.entry.js.map +0 -1
  134. package/dist/mosterdcomponents/mrd-email-field.entry.js +0 -50
  135. package/dist/mosterdcomponents/mrd-email-field.entry.js.map +0 -1
  136. package/dist/mosterdcomponents/mrd-field.entry.js.map +0 -1
  137. package/dist/mosterdcomponents/mrd-file-field.entry.js +0 -108
  138. package/dist/mosterdcomponents/mrd-file-field.entry.js.map +0 -1
  139. package/dist/mosterdcomponents/mrd-form.entry.js.map +0 -1
  140. package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js +0 -87
  141. package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js.map +0 -1
  142. package/dist/mosterdcomponents/mrd-image-field.entry.js +0 -122
  143. package/dist/mosterdcomponents/mrd-image-field.entry.js.map +0 -1
  144. package/dist/mosterdcomponents/mrd-layout-section.entry.js.map +0 -1
  145. package/dist/mosterdcomponents/mrd-list-field.entry.js +0 -107
  146. package/dist/mosterdcomponents/mrd-list-field.entry.js.map +0 -1
  147. package/dist/mosterdcomponents/mrd-longtext-field.entry.js +0 -47
  148. package/dist/mosterdcomponents/mrd-longtext-field.entry.js.map +0 -1
  149. package/dist/mosterdcomponents/mrd-number-field.entry.js +0 -87
  150. package/dist/mosterdcomponents/mrd-number-field.entry.js.map +0 -1
  151. package/dist/mosterdcomponents/mrd-relation-field.entry.js +0 -267
  152. package/dist/mosterdcomponents/mrd-relation-field.entry.js.map +0 -1
  153. package/dist/mosterdcomponents/mrd-secret-field.entry.js +0 -49
  154. package/dist/mosterdcomponents/mrd-secret-field.entry.js.map +0 -1
  155. package/dist/mosterdcomponents/mrd-table.entry.js.map +0 -1
  156. package/dist/mosterdcomponents/mrd-text-field.entry.js +0 -47
  157. package/dist/mosterdcomponents/mrd-text-field.entry.js.map +0 -1
  158. package/dist/mosterdcomponents/mrd-textarea-field.entry.js +0 -86
  159. package/dist/mosterdcomponents/mrd-textarea-field.entry.js.map +0 -1
  160. package/dist/mosterdcomponents/mrd-time-field.entry.js +0 -46
  161. package/dist/mosterdcomponents/mrd-time-field.entry.js.map +0 -1
@@ -0,0 +1,809 @@
1
+ :host {
2
+ display: block;
3
+ width: 100%;
4
+ }
5
+
6
+ /* ── Scroll container (paginated mode) ─────────────────────────────────── */
7
+ .mrd-table__scroll {
8
+ overflow-y: auto;
9
+ overflow-x: auto;
10
+ border: 1px solid var(--mrd-border-color);
11
+ border-radius: var(--mrd-border-radius);
12
+ /* Voorkomt dat de browser scrollTop automatisch aanpast wanneer de
13
+ top-spacer groeit (scroll anchoring feedbackloop). */
14
+ overflow-anchor: none;
15
+ }
16
+
17
+ /* ── Inner wrapper: horizontal scroll in non-paginated mode ────────────── */
18
+ /* Only used in non-paginated path; paginated mode scrolls via .mrd-table__scroll */
19
+ .mrd-table {
20
+ overflow-x: auto;
21
+ }
22
+
23
+ /* ── Table ─────────────────────────────────────────────────────────────── */
24
+ .mrd-table__table {
25
+ width: auto;
26
+ min-width: 100%;
27
+ border-collapse: collapse;
28
+ font-size: var(--mrd-font-size-sm);
29
+ color: var(--mrd-color-neutral-900);
30
+ }
31
+
32
+ /* When table-layout: fixed is applied (after col widths are locked), allow
33
+ horizontal overflow so the scroll container can scroll. */
34
+ .mrd-table__scroll .mrd-table__table {
35
+ min-width: max-content;
36
+ }
37
+
38
+ /* ── Sticky header ─────────────────────────────────────────────────────── */
39
+ .mrd-table__header {
40
+ position: sticky;
41
+ top: 0;
42
+ z-index: 1;
43
+ background: var(--mrd-color-white);
44
+ text-align: left;
45
+ padding: var(--mrd-space-2) var(--mrd-space-4);
46
+ border-bottom: 2px solid var(--mrd-border-color);
47
+ color: var(--mrd-color-neutral-600);
48
+ font-weight: var(--mrd-font-weight-medium);
49
+ white-space: nowrap;
50
+ font-size: var(--mrd-font-size-xs);
51
+ text-transform: uppercase;
52
+ letter-spacing: 0.04em;
53
+ }
54
+
55
+ .mrd-table__header--sortable {
56
+ cursor: pointer;
57
+ user-select: none;
58
+ }
59
+
60
+ .mrd-table__header--sortable:hover {
61
+ background: var(--mrd-color-neutral-50);
62
+ color: var(--mrd-color-neutral-800);
63
+ }
64
+
65
+ .mrd-table__header--sorted-asc,
66
+ .mrd-table__header--sorted-desc {
67
+ color: var(--mrd-color-primary);
68
+ border-bottom-color: var(--mrd-color-primary);
69
+ }
70
+
71
+ .mrd-table__header-label {
72
+ margin-right: var(--mrd-space-1);
73
+ }
74
+
75
+ .mrd-table__sort-icon {
76
+ font-size: 0.85rem;
77
+ opacity: 0.4;
78
+ vertical-align: middle;
79
+ }
80
+
81
+ .mrd-table__header--sorted-asc .mrd-table__sort-icon,
82
+ .mrd-table__header--sorted-desc .mrd-table__sort-icon {
83
+ opacity: 1;
84
+ color: var(--mrd-color-primary);
85
+ }
86
+
87
+ .mrd-table__filter-icon {
88
+ display: inline-flex;
89
+ align-items: center;
90
+ vertical-align: middle;
91
+ margin-left: var(--mrd-space-1);
92
+ color: var(--mrd-color-primary);
93
+ }
94
+
95
+ /* ── Data rows ─────────────────────────────────────────────────────────── */
96
+ /* Background is set via inline style based on absolute row index,
97
+ so zebra striping stays correct even with virtual spacer rows. */
98
+ .mrd-table__row {
99
+ border-bottom: 1px solid var(--mrd-border-color);
100
+ }
101
+
102
+ /* !important overrides the inline zebra background on hover */
103
+ .mrd-table__row:hover {
104
+ background: var(--mrd-color-neutral-200) !important;
105
+ }
106
+
107
+ .mrd-table__row--clickable {
108
+ cursor: pointer;
109
+ }
110
+
111
+ /* ── Spacer rows (virtual scroll padding above/below render window) ─────── */
112
+ .mrd-table__spacer {
113
+ border: none;
114
+ }
115
+
116
+ .mrd-table__spacer td {
117
+ padding: 0;
118
+ border: none;
119
+ }
120
+
121
+ /* ── Cells ─────────────────────────────────────────────────────────────── */
122
+ .mrd-table__cell {
123
+ padding: var(--mrd-space-2) var(--mrd-space-4);
124
+ vertical-align: top;
125
+ white-space: nowrap;
126
+ }
127
+
128
+ .mrd-table__cell--numeric {
129
+ text-align: right;
130
+ font-variant-numeric: tabular-nums;
131
+ }
132
+
133
+ /* ── Loading placeholder row ───────────────────────────────────────────── */
134
+ .mrd-table__row--loading {
135
+ background: transparent;
136
+ }
137
+
138
+ .mrd-table__cell--placeholder {
139
+ padding: var(--mrd-space-2) var(--mrd-space-4);
140
+ border-bottom: 1px solid var(--mrd-border-color);
141
+ }
142
+
143
+ .mrd-table__placeholder-bar {
144
+ display: block;
145
+ height: 0.75rem;
146
+ width: 55%;
147
+ border-radius: var(--mrd-border-radius-sm);
148
+ background: linear-gradient(
149
+ 90deg,
150
+ var(--mrd-color-neutral-200) 25%,
151
+ var(--mrd-color-neutral-100) 50%,
152
+ var(--mrd-color-neutral-200) 75%
153
+ );
154
+ background-size: 200% 100%;
155
+ animation: mrd-shimmer 1.4s ease infinite;
156
+ }
157
+
158
+ @keyframes mrd-shimmer {
159
+ 0% { background-position: 200% 0; }
160
+ 100% { background-position: -200% 0; }
161
+ }
162
+
163
+ /* ── Toolbar ───────────────────────────────────────────────────────────── */
164
+ .mrd-table__toolbar {
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: space-between;
168
+ padding-bottom: var(--mrd-space-2);
169
+ }
170
+
171
+ .mrd-table__toolbar-left,
172
+ .mrd-table__toolbar-right {
173
+ display: flex;
174
+ gap: var(--mrd-space-2);
175
+ align-items: center;
176
+ }
177
+
178
+ .mrd-table__toolbar-center {
179
+ flex: 1;
180
+ display: flex;
181
+ justify-content: center;
182
+ align-items: center;
183
+ gap: var(--mrd-space-1);
184
+ }
185
+
186
+ /* ── View switcher ───────────────────────────────────────────────────────── */
187
+ .mrd-table__view-switcher {
188
+ display: flex;
189
+ align-items: center;
190
+ gap: var(--mrd-space-1);
191
+ }
192
+
193
+ .mrd-table__view-arrow {
194
+ background: none;
195
+ border: none;
196
+ cursor: pointer;
197
+ padding: 0 var(--mrd-space-1);
198
+ color: var(--mrd-color-neutral-500);
199
+ font-size: var(--mrd-font-size-xs);
200
+ line-height: 1;
201
+ }
202
+
203
+ .mrd-table__view-arrow:hover {
204
+ color: var(--mrd-color-neutral-800);
205
+ }
206
+
207
+ .mrd-table__view-title-wrap {
208
+ position: relative;
209
+ }
210
+
211
+ .mrd-table__view-title {
212
+ font-size: var(--mrd-font-size-sm);
213
+ font-weight: 600;
214
+ color: var(--mrd-color-neutral-800);
215
+ font-family: var(--mrd-font-family);
216
+ background: none;
217
+ border: none;
218
+ outline: none;
219
+ cursor: pointer;
220
+ padding: 0 var(--mrd-space-1);
221
+ max-width: 220px;
222
+ white-space: nowrap;
223
+ overflow: hidden;
224
+ text-overflow: ellipsis;
225
+ }
226
+
227
+ .mrd-table__view-title:hover {
228
+ color: var(--mrd-color-primary);
229
+ }
230
+
231
+ .mrd-table__view-popover {
232
+ position: absolute;
233
+ top: calc(100% + var(--mrd-space-1));
234
+ left: 50%;
235
+ transform: translateX(-50%);
236
+ background: var(--mrd-color-white);
237
+ border: 1px solid var(--mrd-color-neutral-200);
238
+ border-radius: var(--mrd-radius-md);
239
+ box-shadow: var(--mrd-shadow-md);
240
+ z-index: 100;
241
+ min-width: 160px;
242
+ padding: var(--mrd-space-1) 0;
243
+ }
244
+
245
+ .mrd-table__view-popover-item {
246
+ display: block;
247
+ width: 100%;
248
+ text-align: left;
249
+ background: none;
250
+ border: none;
251
+ cursor: pointer;
252
+ padding: var(--mrd-space-2) var(--mrd-space-3);
253
+ font-size: var(--mrd-font-size-sm);
254
+ font-family: var(--mrd-font-family);
255
+ color: var(--mrd-color-neutral-700);
256
+ white-space: nowrap;
257
+ }
258
+
259
+ .mrd-table__view-popover-item:hover {
260
+ background: var(--mrd-color-neutral-50);
261
+ }
262
+
263
+ .mrd-table__view-popover-item--active {
264
+ font-weight: 600;
265
+ color: var(--mrd-color-primary);
266
+ }
267
+
268
+ .mrd-table__action {
269
+ position: relative;
270
+ display: inline-flex;
271
+ align-items: center;
272
+ justify-content: center;
273
+ width: 2rem;
274
+ height: 2rem;
275
+ padding: 0;
276
+ background: transparent;
277
+ border: 1px solid transparent;
278
+ border-radius: var(--mrd-border-radius);
279
+ cursor: pointer;
280
+ color: var(--mrd-color-neutral-400);
281
+ transition: background-color 0.15s, border-color 0.15s, color 0.15s;
282
+ }
283
+
284
+ .mrd-table__action:hover {
285
+ background-color: var(--mrd-color-neutral-100);
286
+ border-color: var(--mrd-color-neutral-300);
287
+ color: var(--mrd-color-neutral-700);
288
+ }
289
+
290
+ .mrd-table__action:disabled {
291
+ opacity: 0.4;
292
+ cursor: not-allowed;
293
+ }
294
+
295
+ /* Primary: slightly more prominent than regular at rest; primary fill on hover */
296
+ .mrd-table__action--primary {
297
+ color: var(--mrd-color-neutral-500);
298
+ }
299
+
300
+ .mrd-table__action--primary:hover {
301
+ background: var(--mrd-color-primary);
302
+ border-color: var(--mrd-color-primary);
303
+ color: var(--mrd-color-white);
304
+ }
305
+
306
+ .mrd-table__action--danger {
307
+ color: var(--mrd-color-error);
308
+ }
309
+
310
+ .mrd-table__action--danger:hover {
311
+ background-color: var(--mrd-color-error-light, #fef2f2);
312
+ border-color: var(--mrd-color-error);
313
+ }
314
+
315
+ .mrd-table__action-icon {
316
+ width: 1.25rem;
317
+ height: 1.25rem;
318
+ pointer-events: none;
319
+ fill: currentColor;
320
+ }
321
+
322
+ /* CSS tooltip — appears above the button on hover */
323
+ .mrd-table__action-tooltip {
324
+ display: none;
325
+ position: absolute;
326
+ bottom: calc(100% + 6px);
327
+ right: 0;
328
+ padding: var(--mrd-space-1) var(--mrd-space-2);
329
+ font-size: var(--mrd-font-size-xs);
330
+ white-space: nowrap;
331
+ background: var(--mrd-color-tooltip, #fffce1);
332
+ color: var(--mrd-color-neutral-900);
333
+ border: 1px solid var(--mrd-border-color);
334
+ border-radius: var(--mrd-border-radius-sm, var(--mrd-border-radius));
335
+ pointer-events: none;
336
+ z-index: 10;
337
+ }
338
+
339
+ .mrd-table__action:hover .mrd-table__action-tooltip {
340
+ display: block;
341
+ }
342
+
343
+ /* ── Create-type picker ──────────────────────────────────────────────────── */
344
+ .mrd-table__create-picker-wrap {
345
+ position: relative;
346
+ }
347
+
348
+ .mrd-table__create-picker {
349
+ position: absolute;
350
+ right: 0;
351
+ top: calc(100% + 4px);
352
+ background: var(--mrd-color-white, #fff);
353
+ border: 1px solid var(--mrd-border-color);
354
+ border-radius: var(--mrd-border-radius);
355
+ box-shadow: var(--mrd-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.12));
356
+ z-index: 10;
357
+ min-width: 10rem;
358
+ padding: var(--mrd-space-1) 0;
359
+ }
360
+
361
+ .mrd-table__create-picker-item {
362
+ display: block;
363
+ width: 100%;
364
+ text-align: left;
365
+ padding: var(--mrd-space-2) var(--mrd-space-3);
366
+ background: none;
367
+ border: none;
368
+ cursor: pointer;
369
+ font-size: var(--mrd-font-size-sm);
370
+ font-family: var(--mrd-font-family);
371
+ color: var(--mrd-color-neutral-800);
372
+ }
373
+
374
+ .mrd-table__create-picker-item:hover {
375
+ background: var(--mrd-color-neutral-50);
376
+ color: var(--mrd-color-neutral-900);
377
+ }
378
+
379
+ /* ── Filter toggle active state ────────────────────────────────────────── */
380
+ .mrd-table__filter-toggle--active {
381
+ background: var(--mrd-color-primary);
382
+ border-color: var(--mrd-color-primary);
383
+ color: var(--mrd-color-white);
384
+ }
385
+
386
+ .mrd-table__filter-toggle--active:hover {
387
+ background: var(--mrd-color-primary-dark, var(--mrd-color-primary));
388
+ border-color: var(--mrd-color-primary-dark, var(--mrd-color-primary));
389
+ color: var(--mrd-color-white);
390
+ }
391
+
392
+ /* Badge showing count of active filters */
393
+ .mrd-table__filter-badge {
394
+ position: absolute;
395
+ top: -6px;
396
+ right: -6px;
397
+ min-width: 1.25rem;
398
+ height: 1.25rem;
399
+ padding: 0 3px;
400
+ background: var(--mrd-color-error, #e53e3e);
401
+ color: var(--mrd-color-white);
402
+ border-radius: 9999px;
403
+ font-size: 0.65rem;
404
+ font-weight: var(--mrd-font-weight-medium);
405
+ line-height: 1.25rem;
406
+ text-align: center;
407
+ pointer-events: none;
408
+ }
409
+
410
+ /* ── Header: filtered indicator ─────────────────────────────────────────── */
411
+ .mrd-table__header--filtered {
412
+ color: var(--mrd-color-primary);
413
+ border-bottom-color: var(--mrd-color-primary);
414
+ }
415
+
416
+ /* ── Filter popup ───────────────────────────────────────────────────────── */
417
+ .mrd-table__filter-popup {
418
+ position: fixed;
419
+ width: 280px;
420
+ background: var(--mrd-color-white);
421
+ border: 1px solid var(--mrd-border-color);
422
+ border-radius: var(--mrd-border-radius);
423
+ box-shadow: var(--mrd-shadow-md, 0 4px 12px rgba(0,0,0,.12));
424
+ z-index: var(--mrd-z-dropdown, 200);
425
+ font-size: var(--mrd-font-size-sm);
426
+ }
427
+
428
+ .mrd-table__filter-popup-header {
429
+ display: flex;
430
+ align-items: center;
431
+ justify-content: space-between;
432
+ padding: var(--mrd-space-2) var(--mrd-space-3);
433
+ border-bottom: 1px solid var(--mrd-border-color);
434
+ }
435
+
436
+ .mrd-table__filter-popup-title {
437
+ font-weight: var(--mrd-font-weight-medium);
438
+ color: var(--mrd-color-neutral-800);
439
+ font-size: var(--mrd-font-size-sm);
440
+ }
441
+
442
+ .mrd-table__filter-close {
443
+ background: transparent;
444
+ border: none;
445
+ cursor: pointer;
446
+ color: var(--mrd-color-neutral-500);
447
+ font-size: 0.9rem;
448
+ padding: 2px 4px;
449
+ border-radius: 3px;
450
+ line-height: 1;
451
+ }
452
+
453
+ .mrd-table__filter-close:hover {
454
+ background: var(--mrd-color-neutral-100);
455
+ color: var(--mrd-color-neutral-800);
456
+ }
457
+
458
+ .mrd-table__filter-section {
459
+ padding: var(--mrd-space-2) var(--mrd-space-3);
460
+ }
461
+
462
+ .mrd-table__filter-section-label {
463
+ font-size: var(--mrd-font-size-xs);
464
+ font-weight: var(--mrd-font-weight-medium);
465
+ text-transform: uppercase;
466
+ letter-spacing: 0.04em;
467
+ color: var(--mrd-color-neutral-500);
468
+ margin-bottom: var(--mrd-space-2);
469
+ }
470
+
471
+ .mrd-table__filter-sort-buttons {
472
+ display: flex;
473
+ gap: var(--mrd-space-2);
474
+ }
475
+
476
+ .mrd-table__filter-sort-btn {
477
+ flex: 1;
478
+ padding: var(--mrd-space-1) var(--mrd-space-2);
479
+ background: transparent;
480
+ border: 1px solid var(--mrd-border-color);
481
+ border-radius: var(--mrd-border-radius);
482
+ cursor: pointer;
483
+ font-size: var(--mrd-font-size-xs);
484
+ color: var(--mrd-color-neutral-700);
485
+ }
486
+
487
+ .mrd-table__filter-sort-btn:hover {
488
+ background: var(--mrd-color-neutral-100);
489
+ }
490
+
491
+ .mrd-table__filter-sort-btn--active {
492
+ background: var(--mrd-color-primary);
493
+ border-color: var(--mrd-color-primary);
494
+ color: var(--mrd-color-white);
495
+ }
496
+
497
+ .mrd-table__filter-divider {
498
+ height: 1px;
499
+ background: var(--mrd-border-color);
500
+ margin: 0;
501
+ }
502
+
503
+ /* ── Filter editors ─────────────────────────────────────────────────────── */
504
+ .mrd-table__filter-editor {
505
+ display: flex;
506
+ flex-direction: column;
507
+ gap: var(--mrd-space-2);
508
+ }
509
+
510
+ .mrd-table__filter-select,
511
+ .mrd-table__filter-input {
512
+ width: 100%;
513
+ padding: var(--mrd-space-1) var(--mrd-space-2);
514
+ border: 1px solid var(--mrd-border-color);
515
+ border-radius: var(--mrd-border-radius);
516
+ font-size: var(--mrd-font-size-sm);
517
+ color: var(--mrd-color-neutral-900);
518
+ background: var(--mrd-color-white);
519
+ box-sizing: border-box;
520
+ }
521
+
522
+ .mrd-table__filter-select:focus,
523
+ .mrd-table__filter-input:focus {
524
+ outline: none;
525
+ border-color: var(--mrd-color-primary);
526
+ box-shadow: 0 0 0 2px rgba(0,0,0,.06);
527
+ }
528
+
529
+ .mrd-table__filter-range {
530
+ display: flex;
531
+ align-items: center;
532
+ gap: var(--mrd-space-1);
533
+ }
534
+
535
+ .mrd-table__filter-range .mrd-table__filter-input {
536
+ flex: 1;
537
+ min-width: 0;
538
+ }
539
+
540
+ .mrd-table__filter-range-sep {
541
+ color: var(--mrd-color-neutral-400);
542
+ flex-shrink: 0;
543
+ }
544
+
545
+ .mrd-table__filter-range--stacked {
546
+ flex-direction: column;
547
+ align-items: stretch;
548
+ gap: var(--mrd-space-2);
549
+ }
550
+
551
+ .mrd-table__filter-range-label {
552
+ font-size: var(--mrd-font-size-xs);
553
+ color: var(--mrd-color-neutral-500);
554
+ margin-bottom: 2px;
555
+ }
556
+
557
+ /* Radio group */
558
+ .mrd-table__filter-radio-group {
559
+ display: flex;
560
+ flex-direction: column;
561
+ gap: var(--mrd-space-1);
562
+ }
563
+
564
+ .mrd-table__filter-radio-group--inline {
565
+ flex-direction: row;
566
+ gap: var(--mrd-space-3);
567
+ }
568
+
569
+ .mrd-table__filter-radio-label {
570
+ display: flex;
571
+ align-items: center;
572
+ gap: var(--mrd-space-1);
573
+ cursor: pointer;
574
+ font-size: var(--mrd-font-size-sm);
575
+ color: var(--mrd-color-neutral-800);
576
+ }
577
+
578
+ /* List (enum) checkboxes */
579
+ .mrd-table__filter-list {
580
+ display: flex;
581
+ flex-direction: column;
582
+ gap: var(--mrd-space-1);
583
+ max-height: 180px;
584
+ overflow-y: auto;
585
+ }
586
+
587
+ .mrd-table__filter-list-controls {
588
+ display: flex;
589
+ gap: var(--mrd-space-2);
590
+ margin-bottom: var(--mrd-space-1);
591
+ }
592
+
593
+ .mrd-table__filter-list-btn {
594
+ font-size: var(--mrd-font-size-xs);
595
+ color: var(--mrd-color-primary);
596
+ background: transparent;
597
+ border: none;
598
+ cursor: pointer;
599
+ padding: 0;
600
+ text-decoration: underline;
601
+ }
602
+
603
+ .mrd-table__filter-checkbox-label {
604
+ display: flex;
605
+ align-items: center;
606
+ gap: var(--mrd-space-1);
607
+ cursor: pointer;
608
+ font-size: var(--mrd-font-size-sm);
609
+ color: var(--mrd-color-neutral-800);
610
+ }
611
+
612
+ .mrd-table__filter-no-support {
613
+ font-size: var(--mrd-font-size-sm);
614
+ color: var(--mrd-color-neutral-500);
615
+ margin: 0;
616
+ font-style: italic;
617
+ }
618
+
619
+ /* ── Popup footer ───────────────────────────────────────────────────────── */
620
+ .mrd-table__filter-popup-footer {
621
+ display: flex;
622
+ justify-content: flex-end;
623
+ gap: var(--mrd-space-2);
624
+ padding: var(--mrd-space-2) var(--mrd-space-3);
625
+ border-top: 1px solid var(--mrd-border-color);
626
+ }
627
+
628
+ .mrd-table__filter-btn {
629
+ padding: var(--mrd-space-1) var(--mrd-space-3);
630
+ border-radius: var(--mrd-border-radius);
631
+ border: 1px solid var(--mrd-border-color);
632
+ font-size: var(--mrd-font-size-sm);
633
+ cursor: pointer;
634
+ }
635
+
636
+ .mrd-table__filter-btn--clear {
637
+ background: transparent;
638
+ color: var(--mrd-color-neutral-600);
639
+ }
640
+
641
+ .mrd-table__filter-btn--clear:hover {
642
+ background: var(--mrd-color-neutral-100);
643
+ }
644
+
645
+ .mrd-table__filter-btn--apply {
646
+ background: var(--mrd-color-primary);
647
+ border-color: var(--mrd-color-primary);
648
+ color: var(--mrd-color-white);
649
+ }
650
+
651
+ .mrd-table__filter-btn--apply:hover {
652
+ background: var(--mrd-color-primary-dark, var(--mrd-color-primary));
653
+ border-color: var(--mrd-color-primary-dark, var(--mrd-color-primary));
654
+ }
655
+
656
+ /* ── Totals row ─────────────────────────────────────────────────────────── */
657
+ .mrd-table__totals-row {
658
+ border-top: 2px solid var(--mrd-border-color);
659
+ }
660
+
661
+ .mrd-table__totals-cell {
662
+ position: sticky;
663
+ bottom: 0;
664
+ z-index: 2;
665
+ padding: var(--mrd-space-2) var(--mrd-space-4);
666
+ background: var(--mrd-color-white);
667
+ font-weight: var(--mrd-font-weight-medium);
668
+ font-variant-numeric: tabular-nums;
669
+ white-space: nowrap;
670
+ border-top: 2px solid var(--mrd-border-color);
671
+ }
672
+
673
+ .mrd-table__totals-cell--numeric {
674
+ text-align: right;
675
+ }
676
+
677
+ /* ── Pagination footer ─────────────────────────────────────────────────── */
678
+ .mrd-table__footer {
679
+ padding: var(--mrd-space-1) var(--mrd-space-2);
680
+ font-size: var(--mrd-font-size-xs);
681
+ color: var(--mrd-color-neutral-500);
682
+ text-align: right;
683
+ }
684
+
685
+ /* ── Empty state ───────────────────────────────────────────────────────── */
686
+ .mrd-table__empty {
687
+ padding: var(--mrd-space-4) var(--mrd-space-3);
688
+ color: var(--mrd-color-neutral-500);
689
+ font-size: var(--mrd-font-size-sm);
690
+ text-align: center;
691
+ margin: 0;
692
+ }
693
+
694
+ /* ── File / image download cell ─────────────────────────────────────────── */
695
+ .mrd-table__file-btn {
696
+ display: inline-flex;
697
+ align-items: center;
698
+ gap: var(--mrd-space-1);
699
+ background: none;
700
+ border: none;
701
+ padding: 0;
702
+ cursor: pointer;
703
+ color: var(--mrd-color-primary);
704
+ font-size: var(--mrd-font-size-sm);
705
+ font-family: inherit;
706
+ max-width: 100%;
707
+ overflow: hidden;
708
+ }
709
+
710
+ .mrd-table__file-btn:hover {
711
+ text-decoration: underline;
712
+ color: var(--mrd-color-primary-dark);
713
+ }
714
+
715
+ .mrd-table__file-icon {
716
+ flex-shrink: 0;
717
+ width: 1rem;
718
+ height: 1rem;
719
+ }
720
+
721
+ /* ── TEXTBLOCK expand button ────────────────────────────────────────────── */
722
+ .mrd-table__textblock-btn {
723
+ display: inline;
724
+ background: none;
725
+ border: none;
726
+ padding: 0 0 0 var(--mrd-space-1);
727
+ cursor: pointer;
728
+ color: var(--mrd-color-primary);
729
+ font-size: var(--mrd-font-size-sm);
730
+ font-family: inherit;
731
+ line-height: inherit;
732
+ vertical-align: middle;
733
+ }
734
+
735
+ .mrd-table__textblock-btn:hover {
736
+ color: var(--mrd-color-primary-dark);
737
+ }
738
+
739
+ /* ── TEXTBLOCK modal ────────────────────────────────────────────────────── */
740
+ .mrd-table__modal-backdrop {
741
+ position: fixed;
742
+ inset: 0;
743
+ background: rgba(0, 0, 0, 0.4);
744
+ z-index: var(--mrd-z-modal, 300);
745
+ display: flex;
746
+ align-items: center;
747
+ justify-content: center;
748
+ }
749
+
750
+ .mrd-table__modal {
751
+ background: #fff;
752
+ border-radius: var(--mrd-radius-md, 0.5rem);
753
+ padding: var(--mrd-space-6);
754
+ max-width: min(600px, 90vw);
755
+ max-height: 70vh;
756
+ overflow-y: auto;
757
+ position: relative;
758
+ box-shadow: var(--mrd-shadow-lg);
759
+ }
760
+
761
+ .mrd-table__modal-close {
762
+ position: absolute;
763
+ top: var(--mrd-space-3);
764
+ right: var(--mrd-space-3);
765
+ background: none;
766
+ border: none;
767
+ cursor: pointer;
768
+ font-size: 1.25rem;
769
+ line-height: 1;
770
+ color: var(--mrd-color-text-muted, #6b7280);
771
+ padding: 0;
772
+ }
773
+
774
+ .mrd-table__modal-close:hover {
775
+ color: var(--mrd-color-text, #111827);
776
+ }
777
+
778
+ .mrd-table__modal-text {
779
+ margin: 0;
780
+ padding-right: var(--mrd-space-6);
781
+ white-space: pre-wrap;
782
+ word-break: break-word;
783
+ font-size: var(--mrd-font-size-sm);
784
+ line-height: 1.6;
785
+ }
786
+
787
+ .mrd-table__json-preview {
788
+ font-family: var(--mrd-font-family-mono);
789
+ font-size: var(--mrd-font-size-xs);
790
+ overflow: hidden;
791
+ white-space: nowrap;
792
+ text-overflow: ellipsis;
793
+ display: inline-block;
794
+ max-width: calc(100% - 1.5rem);
795
+ vertical-align: middle;
796
+ }
797
+
798
+ .mrd-table__modal-json {
799
+ margin: 0;
800
+ padding-right: var(--mrd-space-6);
801
+ font-family: var(--mrd-font-family-mono);
802
+ font-size: var(--mrd-font-size-xs);
803
+ white-space: pre-wrap;
804
+ word-break: break-word;
805
+ line-height: 1.6;
806
+ background: none;
807
+ border: none;
808
+ }
809
+