@yewdiel21/motion-kit 0.14.0 → 0.15.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 (154) hide show
  1. package/README.md +174 -155
  2. package/bin/motion-kit.mjs +3 -3
  3. package/dist/auto/index.d.ts +6 -3
  4. package/dist/auto/index.js +8 -2
  5. package/dist/auto/index.js.map +1 -1
  6. package/dist/{chunk-EY4BJKC4.js → chunk-6IRJYXJU.js} +2 -2
  7. package/dist/{chunk-CU6SXW3E.js → chunk-A6QQCF6V.js} +1309 -310
  8. package/dist/chunk-A6QQCF6V.js.map +1 -0
  9. package/dist/chunk-JXRS3OEA.js +3638 -0
  10. package/dist/chunk-JXRS3OEA.js.map +1 -0
  11. package/dist/css/components/add-to-cart.css +72 -0
  12. package/dist/css/components/bidirectional-slider.css +168 -0
  13. package/dist/css/components/data-table.css +121 -26
  14. package/dist/css/components/filter-builder.css +10 -15
  15. package/dist/css/components/heatmap-chart.css +391 -0
  16. package/dist/css/components/hover-card.css +8 -2
  17. package/dist/css/components/image-preview.css +90 -2
  18. package/dist/css/components/json-viewer.css +33 -1
  19. package/dist/css/components/nav.css +102 -102
  20. package/dist/css/components/orbit-menu.css +130 -0
  21. package/dist/css/components/pagination.css +10 -5
  22. package/dist/css/components/pie-chart.css +390 -0
  23. package/dist/css/components/pill-button.css +135 -0
  24. package/dist/css/components/radar-chart.css +370 -0
  25. package/dist/css/components/radial-chart.css +398 -0
  26. package/dist/css/components/sankey-chart.css +358 -0
  27. package/dist/css/components/scroll-island.css +111 -0
  28. package/dist/css/components/select.css +136 -0
  29. package/dist/css/components/toolbar.css +122 -0
  30. package/dist/css/components/tree-view.css +79 -0
  31. package/dist/css/components/voice-dots.css +70 -0
  32. package/dist/elements/index.d.ts +180 -7
  33. package/dist/elements/index.js +287 -6
  34. package/dist/elements/index.js.map +1 -1
  35. package/dist/{engine-Cn6IhE3z.d.ts → engine-5zRIssTO.d.ts} +11 -1
  36. package/dist/index.css +1832 -168
  37. package/dist/index.d.ts +4 -4
  38. package/dist/index.js +33 -3
  39. package/dist/index.js.map +1 -1
  40. package/dist/react/index.d.ts +117 -11
  41. package/dist/react/index.js +314 -13
  42. package/dist/react/index.js.map +1 -1
  43. package/dist/{reduced-BBUusld6.d.ts → reduced-6X_bns60.d.ts} +1 -1
  44. package/dist/{reveal-DEvp6U6T.d.ts → reveal-BfyKKsw4.d.ts} +97 -4
  45. package/dist/store-CA2Qcun_.d.ts +453 -0
  46. package/package.json +9 -16
  47. package/registry.json +1096 -948
  48. package/src/auto/auto-init.ts +6 -0
  49. package/src/components/add-to-cart/README.md +34 -0
  50. package/src/components/add-to-cart/add-to-cart.css +71 -0
  51. package/src/components/add-to-cart/element.ts +20 -0
  52. package/src/components/add-to-cart/engine.ts +206 -0
  53. package/src/components/add-to-cart/react.tsx +29 -0
  54. package/src/components/bidirectional-slider/README.md +46 -0
  55. package/src/components/bidirectional-slider/bidirectional-slider.css +167 -0
  56. package/src/components/bidirectional-slider/element.ts +42 -0
  57. package/src/components/bidirectional-slider/engine.ts +289 -0
  58. package/src/components/bidirectional-slider/react.tsx +45 -0
  59. package/src/components/chart/README.md +10 -0
  60. package/src/components/chart/element.ts +2 -0
  61. package/src/components/chart/engine.ts +50 -23
  62. package/src/components/chart/parts.ts +237 -0
  63. package/src/components/chart/react.tsx +2 -2
  64. package/src/components/chart/use-chart.ts +55 -0
  65. package/src/components/data-table/README.md +3 -3
  66. package/src/components/data-table/data-table.css +121 -26
  67. package/src/components/data-table/engine.ts +81 -29
  68. package/src/components/editable-table/engine.ts +67 -11
  69. package/src/components/filter-builder/engine.ts +33 -2
  70. package/src/components/filter-builder/filter-builder.css +10 -15
  71. package/src/components/heatmap-chart/README.md +48 -0
  72. package/src/components/heatmap-chart/element.ts +21 -0
  73. package/src/components/heatmap-chart/engine.ts +281 -0
  74. package/src/components/heatmap-chart/heatmap-chart.css +93 -0
  75. package/src/components/heatmap-chart/react.tsx +14 -0
  76. package/src/components/hover-card/engine.ts +30 -1
  77. package/src/components/hover-card/hover-card.css +8 -2
  78. package/src/components/image-preview/element.ts +1 -1
  79. package/src/components/image-preview/engine.ts +95 -15
  80. package/src/components/image-preview/image-preview.css +90 -2
  81. package/src/components/image-preview/react.tsx +3 -3
  82. package/src/components/json-viewer/engine.ts +11 -2
  83. package/src/components/json-viewer/json-viewer.css +33 -1
  84. package/src/components/nav/README.md +12 -10
  85. package/src/components/nav/element.ts +5 -5
  86. package/src/components/nav/engine.ts +21 -14
  87. package/src/components/nav/nav.css +102 -102
  88. package/src/components/nav/react.tsx +4 -4
  89. package/src/components/orbit-menu/README.md +46 -0
  90. package/src/components/orbit-menu/element.ts +27 -0
  91. package/src/components/orbit-menu/engine.ts +179 -0
  92. package/src/components/orbit-menu/orbit-menu.css +129 -0
  93. package/src/components/orbit-menu/react.tsx +44 -0
  94. package/src/components/pagination/README.md +1 -1
  95. package/src/components/pagination/engine.ts +50 -4
  96. package/src/components/pagination/pagination.css +10 -5
  97. package/src/components/pie-chart/README.md +48 -0
  98. package/src/components/pie-chart/element.ts +30 -0
  99. package/src/components/pie-chart/engine.ts +283 -0
  100. package/src/components/pie-chart/pie-chart.css +92 -0
  101. package/src/components/pie-chart/react.tsx +14 -0
  102. package/src/components/pill-button/README.md +46 -0
  103. package/src/components/pill-button/element.ts +16 -0
  104. package/src/components/pill-button/engine.ts +77 -0
  105. package/src/components/pill-button/pill-button.css +134 -0
  106. package/src/components/pill-button/react.tsx +32 -0
  107. package/src/components/radar-chart/README.md +48 -0
  108. package/src/components/radar-chart/element.ts +30 -0
  109. package/src/components/radar-chart/engine.ts +327 -0
  110. package/src/components/radar-chart/radar-chart.css +72 -0
  111. package/src/components/radar-chart/react.tsx +14 -0
  112. package/src/components/radial-chart/README.md +48 -0
  113. package/src/components/radial-chart/element.ts +30 -0
  114. package/src/components/radial-chart/engine.ts +290 -0
  115. package/src/components/radial-chart/radial-chart.css +100 -0
  116. package/src/components/radial-chart/react.tsx +14 -0
  117. package/src/components/sankey-chart/README.md +48 -0
  118. package/src/components/sankey-chart/element.ts +31 -0
  119. package/src/components/sankey-chart/engine.ts +401 -0
  120. package/src/components/sankey-chart/react.tsx +14 -0
  121. package/src/components/sankey-chart/sankey-chart.css +60 -0
  122. package/src/components/scroll-island/README.md +34 -0
  123. package/src/components/scroll-island/element.ts +16 -0
  124. package/src/components/scroll-island/engine.ts +252 -0
  125. package/src/components/scroll-island/react.tsx +26 -0
  126. package/src/components/scroll-island/scroll-island.css +110 -0
  127. package/src/components/select/README.md +34 -0
  128. package/src/components/select/element.ts +26 -0
  129. package/src/components/select/engine.ts +267 -0
  130. package/src/components/select/react.tsx +33 -0
  131. package/src/components/select/select.css +135 -0
  132. package/src/components/toolbar/README.md +46 -0
  133. package/src/components/toolbar/element.ts +30 -0
  134. package/src/components/toolbar/engine.ts +230 -0
  135. package/src/components/toolbar/react.tsx +34 -0
  136. package/src/components/toolbar/toolbar.css +121 -0
  137. package/src/components/tree-view/element.ts +1 -1
  138. package/src/components/tree-view/engine.ts +174 -0
  139. package/src/components/tree-view/react.tsx +7 -3
  140. package/src/components/tree-view/tree-view.css +79 -0
  141. package/src/components/voice-dots/README.md +48 -0
  142. package/src/components/voice-dots/element.ts +45 -0
  143. package/src/components/voice-dots/engine.ts +243 -0
  144. package/src/components/voice-dots/react.tsx +52 -0
  145. package/src/components/voice-dots/voice-dots.css +69 -0
  146. package/src/elements/index.ts +39 -0
  147. package/src/index.ts +16 -0
  148. package/src/motion/liquid.ts +14 -4
  149. package/src/react/index.ts +14 -1
  150. package/dist/chunk-6P4P7NU6.js +0 -1401
  151. package/dist/chunk-6P4P7NU6.js.map +0 -1
  152. package/dist/chunk-CU6SXW3E.js.map +0 -1
  153. package/dist/store-DjkTBX7f.d.ts +0 -195
  154. /package/dist/{chunk-EY4BJKC4.js.map → chunk-6IRJYXJU.js.map} +0 -0
@@ -0,0 +1,72 @@
1
+ /* components/add-to-cart/add-to-cart.css */
2
+ /* add-to-cart — the little box that carries the product to the cart: a kraft front with a tape stripe in the accent,
3
+ two flaps that close over the picture, a soft shadow; it flies above everything and never takes the pointer. */
4
+ .mk-add-to-cart,
5
+ mk-add-to-cart {
6
+ display: inline-flex;
7
+ }
8
+
9
+ [data-mk-cart-box] {
10
+ --mk-cart-box: #c99a62;
11
+ --mk-cart-box-shade: #b0824d;
12
+ --mk-cart-tape: var(--mk-accent);
13
+ position: fixed;
14
+ z-index: 2147483646;
15
+ pointer-events: none;
16
+ filter: drop-shadow(0 10px 14px rgb(0 0 0 / 0.28));
17
+ }
18
+
19
+ [data-mk-cart-thumb] {
20
+ position: absolute;
21
+ top: 6px;
22
+ left: 50%;
23
+ width: 40px;
24
+ height: 40px;
25
+ margin-left: -20px;
26
+ border-radius: 8px;
27
+ object-fit: cover;
28
+ }
29
+
30
+ [data-mk-cart-front] {
31
+ position: absolute;
32
+ right: 0;
33
+ bottom: 0;
34
+ left: 0;
35
+ height: 70%;
36
+ border-radius: 4px 4px 8px 8px;
37
+ background: linear-gradient(180deg, var(--mk-cart-box), var(--mk-cart-box-shade));
38
+ transform-origin: 50% 100%;
39
+ }
40
+
41
+ [data-mk-cart-tape] {
42
+ position: absolute;
43
+ top: 0;
44
+ left: 50%;
45
+ width: 10px;
46
+ height: 100%;
47
+ margin-left: -5px;
48
+ border-radius: 0 0 2px 2px;
49
+ background: var(--mk-cart-tape);
50
+ opacity: 0.9;
51
+ transform-origin: 50% 0;
52
+ }
53
+
54
+ [data-mk-cart-flap] {
55
+ position: absolute;
56
+ top: 18%;
57
+ width: 50%;
58
+ height: 14%;
59
+ background: var(--mk-cart-box-shade);
60
+ }
61
+
62
+ [data-mk-cart-flap='left'] {
63
+ left: 0;
64
+ border-radius: 4px 0 0 2px;
65
+ transform-origin: 0 100%;
66
+ }
67
+
68
+ [data-mk-cart-flap='right'] {
69
+ right: 0;
70
+ border-radius: 0 4px 2px 0;
71
+ transform-origin: 100% 100%;
72
+ }
@@ -0,0 +1,168 @@
1
+ /* components/bidirectional-slider/bidirectional-slider.css */
2
+ /* bidirectional-slider — a chunky 12 px track whose fill grows from the origin notch towards the thumb:
3
+ "more" in the accent, "less" in a tint of it. − and + sit at the ends; the bubble shows the signed value while held. */
4
+ .mk-bidirectional-slider,
5
+ mk-bidirectional-slider {
6
+ --mk-bislider-height: 2.75rem;
7
+ --mk-bislider-track: var(--mk-surface-2);
8
+ --mk-bislider-more: var(--mk-accent);
9
+ --mk-bislider-less: color-mix(in srgb, var(--mk-accent) 45%, var(--mk-surface-2));
10
+ display: grid;
11
+ grid-template-columns: auto minmax(6rem, 1fr) auto;
12
+ align-items: center;
13
+ gap: 0.375rem;
14
+ width: 100%;
15
+ max-width: 26rem;
16
+ color: var(--mk-text);
17
+ }
18
+
19
+ [data-mk-bislider-track] {
20
+ position: relative;
21
+ height: var(--mk-bislider-height);
22
+ border-radius: 12px;
23
+ background: var(--mk-bislider-track);
24
+ touch-action: none;
25
+ }
26
+
27
+ [data-mk-bislider-track]:has(input:focus-visible) {
28
+ outline: 2px solid var(--mk-accent);
29
+ outline-offset: 3px;
30
+ }
31
+
32
+ [data-mk-bislider-clip] {
33
+ position: absolute;
34
+ inset: 0;
35
+ overflow: hidden;
36
+ border-radius: inherit;
37
+ pointer-events: none;
38
+ }
39
+
40
+ [data-mk-bislider-fill] {
41
+ position: absolute;
42
+ top: 0;
43
+ bottom: 0;
44
+ background: var(--mk-bislider-more);
45
+ transition: background-color 0.2s ease;
46
+ }
47
+
48
+ :is(.mk-bidirectional-slider, mk-bidirectional-slider)[data-mk-side='less'] [data-mk-bislider-fill] {
49
+ background: var(--mk-bislider-less);
50
+ }
51
+
52
+ [data-mk-bislider-notch] {
53
+ position: absolute;
54
+ top: 30%;
55
+ bottom: 30%;
56
+ width: 2px;
57
+ margin-left: -1px;
58
+ border-radius: 2px;
59
+ background: color-mix(in srgb, var(--mk-text) 30%, transparent);
60
+ }
61
+
62
+ [data-mk-bislider-thumb] {
63
+ position: absolute;
64
+ top: 20%;
65
+ bottom: 20%;
66
+ width: 4px;
67
+ margin-left: -2px;
68
+ border-radius: 4px;
69
+ background: var(--mk-text);
70
+ pointer-events: none;
71
+ transition: transform 0.35s var(--mk-ease-swatch);
72
+ }
73
+
74
+ :is(.mk-bidirectional-slider, mk-bidirectional-slider)[data-mk-held] [data-mk-bislider-thumb] {
75
+ transform: scale(1.5, 1.2);
76
+ }
77
+
78
+ [data-mk-bislider-bubble] {
79
+ position: absolute;
80
+ bottom: calc(100% + 0.5rem);
81
+ padding: 0.2rem 0.55rem;
82
+ border-radius: var(--mk-radius-full);
83
+ background: var(--mk-glass-inverse);
84
+ box-shadow: var(--mk-glass-bevel);
85
+ color: var(--mk-on-glass-inverse);
86
+ font: 600 0.75rem/1.2 var(--mk-font);
87
+ font-variant-numeric: tabular-nums;
88
+ white-space: nowrap;
89
+ pointer-events: none;
90
+ opacity: 0;
91
+ transform: translate(-50%, 4px) scale(0.85);
92
+ transform-origin: 50% 100%;
93
+ transition:
94
+ opacity 0.15s ease,
95
+ transform 0.3s var(--mk-ease-swatch);
96
+ }
97
+
98
+ :is(.mk-bidirectional-slider, mk-bidirectional-slider):is([data-mk-held], :has(input:focus-visible)) [data-mk-bislider-bubble] {
99
+ opacity: 1;
100
+ transform: translate(-50%, 0) scale(1);
101
+ }
102
+
103
+ [data-mk-bislider-input] {
104
+ position: absolute;
105
+ inset: 0;
106
+ width: 100%;
107
+ height: 100%;
108
+ margin: 0;
109
+ opacity: 0;
110
+ cursor: grab;
111
+ appearance: none;
112
+ }
113
+
114
+ :is(.mk-bidirectional-slider, mk-bidirectional-slider)[data-mk-held] [data-mk-bislider-input] {
115
+ cursor: grabbing;
116
+ }
117
+
118
+ :is([data-mk-bislider-less], [data-mk-bislider-more]) {
119
+ display: grid;
120
+ place-items: center;
121
+ width: var(--mk-bislider-height);
122
+ height: var(--mk-bislider-height);
123
+ padding: 0;
124
+ border: 0;
125
+ border-radius: 12px;
126
+ background: transparent;
127
+ color: inherit;
128
+ cursor: pointer;
129
+ transition: background-color 0.15s ease;
130
+ -webkit-tap-highlight-color: transparent;
131
+ }
132
+
133
+ :is([data-mk-bislider-less], [data-mk-bislider-more]) svg {
134
+ width: 1.25rem;
135
+ height: 1.25rem;
136
+ fill: none;
137
+ stroke: currentColor;
138
+ stroke-width: 2;
139
+ stroke-linecap: round;
140
+ stroke-linejoin: round;
141
+ }
142
+
143
+ @media (hover: hover) {
144
+ :is([data-mk-bislider-less], [data-mk-bislider-more]):hover {
145
+ background: var(--mk-surface-2);
146
+ }
147
+ }
148
+
149
+ :is(.mk-bidirectional-slider, mk-bidirectional-slider):has(input:disabled) {
150
+ opacity: 0.5;
151
+ pointer-events: none;
152
+ }
153
+
154
+ @media (prefers-reduced-motion: reduce) {
155
+ [data-mk-bislider-thumb],
156
+ [data-mk-bislider-bubble] {
157
+ transition: opacity 0.15s ease;
158
+ }
159
+ }
160
+
161
+ @media (forced-colors: active) {
162
+ [data-mk-bislider-fill] {
163
+ background: Highlight !important;
164
+ }
165
+ [data-mk-bislider-track] {
166
+ border: 1px solid CanvasText;
167
+ }
168
+ }
@@ -1,10 +1,12 @@
1
1
  /* components/data-table/data-table.css */
2
2
  /* data-table — a toolbar (a 12 px search on surface-3, 12 px tool buttons with an accent count), the filter sentence
3
3
  on accent-soft, then the table on a 20 px panel: a sticky muted header with sort buttons whose arrow turns, 3rem
4
- rows on hairlines, chosen rows tinted, 18 px checks that draw themselves, an 8 px row menu button and shimmering
5
- bones while loading; the foot with the range, rows per page and the pager; the bar of the chosen rows on inverse
6
- glass. Panels (columns, filters) are anchored .mk-dialog (dialog.css) surfaces with 20 px corners. The table
7
- scrolls sideways inside its panel when it is wider; --mk-dt-max-height lets it scroll down too. */
4
+ rows on hairlines, chosen rows softly tinted with an accent edge (their data stays readable), 18 px checks that
5
+ draw themselves, an 8 px row menu button and shimmering bones while loading; the foot with the range, the rows
6
+ per page menu and the pager; the bar of the chosen rows takes the toolbar's place, so it never covers a row.
7
+ Panels and menus (columns, filters, rows per page, row actions) are anchored .mk-dialog (dialog.css) surfaces with
8
+ 20 px corners and 8 px items. The table scrolls sideways inside its panel when it is wider; --mk-dt-max-height
9
+ lets it scroll down too. */
8
10
  .mk-data-table,
9
11
  mk-data-table {
10
12
  --mk-dt-max-height: none;
@@ -18,6 +20,8 @@ mk-data-table {
18
20
 
19
21
  /* ── The toolbar ─────────────────────────────────────────────────────────── */
20
22
  [data-mk-dt-bar] {
23
+ grid-row: 1;
24
+ grid-column: 1;
21
25
  display: flex;
22
26
  flex-wrap: wrap;
23
27
  align-items: center;
@@ -87,6 +91,7 @@ mk-data-table {
87
91
  }
88
92
 
89
93
  [data-mk-dt-tool]:focus-visible,
94
+ [data-mk-dt-size-button]:focus-visible,
90
95
  [data-mk-dt-sort]:focus-visible,
91
96
  [data-mk-dt-row-menu]:focus-visible,
92
97
  [data-mk-dt-pager] button:focus-visible,
@@ -224,8 +229,17 @@ mk-data-table {
224
229
  background: color-mix(in srgb, var(--mk-text) 3%, transparent);
225
230
  }
226
231
 
232
+ /* A chosen row: a light tint and an accent edge, never a fill that hides the data (on OLED the accent is white). */
227
233
  [data-mk-dt-table] tbody tr[data-selected] {
228
- background: color-mix(in srgb, var(--mk-accent-soft) 60%, transparent);
234
+ background: color-mix(in srgb, var(--mk-accent) 7%, transparent);
235
+ }
236
+
237
+ [data-mk-dt-table] tbody tr[data-selected]:hover {
238
+ background: color-mix(in srgb, var(--mk-accent) 11%, transparent);
239
+ }
240
+
241
+ [data-mk-dt-table] tbody tr[data-selected] > :first-child {
242
+ box-shadow: inset 3px 0 0 var(--mk-accent);
229
243
  }
230
244
 
231
245
  [data-mk-dt-table] td mark {
@@ -297,7 +311,7 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
297
311
  width: 1.125rem;
298
312
  height: 1.125rem;
299
313
  box-sizing: border-box;
300
- border: 1.5px solid var(--mk-outline);
314
+ border: 2px solid var(--mk-outline);
301
315
  border-radius: 5px;
302
316
  color: transparent;
303
317
  vertical-align: middle;
@@ -318,6 +332,9 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
318
332
  }
319
333
 
320
334
  [data-mk-dt-check] svg {
335
+ display: block;
336
+ width: 100%;
337
+ height: 100%;
321
338
  pointer-events: none;
322
339
  }
323
340
 
@@ -423,14 +440,35 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
423
440
  margin-left: auto;
424
441
  }
425
442
 
426
- [data-mk-dt-size] select {
443
+ [data-mk-dt-size-button] {
444
+ display: inline-flex;
445
+ align-items: center;
446
+ gap: 0.25rem;
427
447
  height: 2rem;
428
- padding: 0 0.5rem;
448
+ padding: 0 0.375rem 0 0.75rem;
429
449
  border: 1px solid var(--mk-outline-soft);
430
450
  border-radius: 8px;
431
451
  background: var(--mk-surface-1);
432
452
  color: var(--mk-text);
433
453
  font: inherit;
454
+ font-variant-numeric: tabular-nums;
455
+ cursor: pointer;
456
+ transition: background-color 0.15s;
457
+ }
458
+
459
+ [data-mk-dt-size-button]:hover,
460
+ [data-mk-dt-size-button][aria-expanded='true'] {
461
+ background: var(--mk-surface-2);
462
+ }
463
+
464
+ [data-mk-dt-size-button] svg {
465
+ flex: none;
466
+ color: var(--mk-muted);
467
+ transition: transform 0.3s cubic-bezier(0.38, 0.49, 0, 1.5);
468
+ }
469
+
470
+ [data-mk-dt-size-button][aria-expanded='true'] svg {
471
+ transform: rotate(180deg);
434
472
  }
435
473
 
436
474
  [data-mk-dt-pager] {
@@ -464,24 +502,28 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
464
502
  }
465
503
 
466
504
  /* ── The bar of the chosen rows ──────────────────────────────────────────── */
505
+ /* It shares the toolbar's grid cell and covers it while rows are chosen: the rows stay in view. */
467
506
  [data-mk-dt-bulk] {
468
- position: absolute;
469
- right: 0;
470
- bottom: 3.25rem;
471
- left: 0;
472
- z-index: 3;
507
+ position: relative;
508
+ z-index: 2;
509
+ grid-row: 1;
510
+ grid-column: 1;
473
511
  display: flex;
474
512
  flex-wrap: wrap;
475
513
  align-items: center;
514
+ align-self: stretch;
476
515
  gap: 0.25rem 0.5rem;
477
- width: max-content;
478
- max-width: calc(100% - 1rem);
479
- margin-inline: auto;
480
- padding: 0.375rem 0.375rem 0.375rem 1rem;
481
- border-radius: 20px;
482
- background: var(--mk-glass-inverse, var(--mk-text));
483
- box-shadow: 0 14px 32px -12px color-mix(in srgb, var(--mk-shadow-color, #000) 45%, transparent);
484
- color: var(--mk-on-glass-inverse, var(--mk-surface-1));
516
+ min-width: 0;
517
+ min-height: 2.5rem;
518
+ padding: 0.25rem 0.25rem 0.25rem 1rem;
519
+ border-radius: 12px;
520
+ background: var(--mk-surface-3);
521
+ color: var(--mk-text);
522
+ }
523
+
524
+ .mk-data-table:has(> [data-mk-dt-bulk]:not([hidden])) > [data-mk-dt-bar],
525
+ mk-data-table:has(> [data-mk-dt-bulk]:not([hidden])) > [data-mk-dt-bar] {
526
+ visibility: hidden;
485
527
  }
486
528
 
487
529
  [data-mk-dt-bulk-label] {
@@ -505,12 +547,17 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
505
547
  height: 2rem;
506
548
  padding: 0 0.75rem;
507
549
  border: 0;
508
- border-radius: 12px;
509
- background: color-mix(in srgb, currentColor 14%, transparent);
550
+ border-radius: 8px;
551
+ background: var(--mk-surface-1);
510
552
  color: inherit;
511
553
  font: inherit;
512
554
  font-weight: 500;
513
555
  cursor: pointer;
556
+ transition: background-color 0.15s;
557
+ }
558
+
559
+ [data-mk-dt-bulk] button:hover {
560
+ background: var(--mk-surface-2);
514
561
  }
515
562
 
516
563
  [data-mk-dt-bulk] button[data-danger] {
@@ -518,23 +565,31 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
518
565
  color: var(--mk-on-error, #fff);
519
566
  }
520
567
 
521
- [data-mk-dt-select-all] {
568
+ [data-mk-dt-bulk] [data-mk-dt-select-all] {
569
+ background: none;
522
570
  text-decoration: underline;
523
571
  text-underline-offset: 3px;
524
572
  }
525
573
 
526
- [data-mk-dt-bulk-close] {
574
+ /* The close button is a square with its cross in the middle (the bar's button padding must not reach it). */
575
+ [data-mk-dt-bulk] [data-mk-dt-bulk-close] {
527
576
  display: inline-grid;
528
577
  place-items: center;
529
578
  width: 2rem;
579
+ margin-left: auto;
530
580
  padding: 0;
531
581
  }
532
582
 
583
+ [data-mk-dt-bulk-close] svg {
584
+ display: block;
585
+ }
586
+
533
587
  /* ── Panels and the row menu ─────────────────────────────────────────────── */
534
588
  .mk-dialog.mk-dt-panel {
535
589
  --mk-dialog-radius: 20px;
536
590
  --mk-dialog-bg: var(--mk-surface-1);
537
- --mk-dialog-shadow: 0 16px 48px -12px color-mix(in srgb, var(--mk-shadow-color, #000) 35%, transparent);
591
+ /* A hairline keeps the panel apart from the table under it (on OLED both are near black). */
592
+ --mk-dialog-shadow: 0 0 0 1px var(--mk-outline-soft), 0 16px 48px -12px color-mix(in srgb, var(--mk-shadow-color, #000) 35%, transparent);
538
593
  gap: 0.5rem;
539
594
  width: max-content;
540
595
  min-width: min(14rem, calc(100vw - 32px));
@@ -575,6 +630,45 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
575
630
  background: var(--mk-surface-2);
576
631
  }
577
632
 
633
+ /* The row menu and the rows per page menu look like the panels: 20 px surface, 8 px items, the same hover. */
634
+ .mk-dialog.mk-dt-panel.mk-dt-menu {
635
+ gap: 0.125rem;
636
+ min-width: 9rem;
637
+ padding: 0.375rem;
638
+ -webkit-backdrop-filter: none;
639
+ backdrop-filter: none;
640
+ }
641
+
642
+ .mk-dialog.mk-dt-menu [data-mk-item] {
643
+ gap: 0.625rem;
644
+ min-height: 2.25rem;
645
+ padding: 0 0.625rem;
646
+ border-radius: 8px;
647
+ font-family: inherit;
648
+ font-size: 0.875rem;
649
+ font-weight: 500;
650
+ letter-spacing: normal;
651
+ }
652
+
653
+ .mk-dialog.mk-dt-menu [data-mk-item]:hover,
654
+ .mk-dialog.mk-dt-menu [data-mk-item]:focus-visible {
655
+ background: var(--mk-surface-2);
656
+ }
657
+
658
+ .mk-dialog.mk-dt-menu [data-mk-item] svg {
659
+ flex: none;
660
+ margin-left: auto;
661
+ opacity: 0;
662
+ }
663
+
664
+ .mk-dialog.mk-dt-menu [data-mk-item][aria-checked='true'] {
665
+ font-weight: 600;
666
+ }
667
+
668
+ .mk-dialog.mk-dt-menu [data-mk-item][aria-checked='true'] svg {
669
+ opacity: 1;
670
+ }
671
+
578
672
  .mk-dialog.mk-dt-menu [data-mk-item][data-danger] {
579
673
  color: var(--mk-error);
580
674
  }
@@ -585,6 +679,7 @@ th[data-direction='desc'] [data-mk-dt-sort] svg {
585
679
  }
586
680
 
587
681
  [data-mk-dt-sort] svg,
682
+ [data-mk-dt-size-button] svg,
588
683
  [data-mk-dt-check] {
589
684
  transition: none;
590
685
  }
@@ -89,7 +89,13 @@ mk-filter-builder {
89
89
  min-width: 0;
90
90
  }
91
91
 
92
- [data-mk-fb-rule] :is(select, input) {
92
+ /* Choices are the kit's select (select.css draws the button); inputs share its look. */
93
+ [data-mk-fb-rule] .mk-select {
94
+ min-width: 8rem;
95
+ max-width: 100%;
96
+ }
97
+
98
+ [data-mk-fb-rule] input {
93
99
  box-sizing: border-box;
94
100
  min-width: 0;
95
101
  height: 2.5rem;
@@ -104,22 +110,11 @@ mk-filter-builder {
104
110
  transition: box-shadow 0.2s ease;
105
111
  }
106
112
 
107
- [data-mk-fb-rule] select {
108
- max-width: 100%;
109
- padding-right: 1.9rem;
110
- appearance: none;
111
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
112
- background-position: right 0.55rem center;
113
- background-repeat: no-repeat;
114
- background-size: 1rem;
115
- cursor: pointer;
116
- }
117
-
118
113
  [data-mk-fb-rule] input {
119
114
  width: 9rem;
120
115
  }
121
116
 
122
- [data-mk-fb-rule] :is(select, input):focus-visible {
117
+ [data-mk-fb-rule] input:focus-visible {
123
118
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mk-accent) 35%, transparent);
124
119
  }
125
120
 
@@ -218,7 +213,7 @@ mk-filter-builder {
218
213
  }
219
214
 
220
215
  @media (max-width: 480px) {
221
- [data-mk-fb-rule] :is(select, input) {
216
+ [data-mk-fb-rule] :is(.mk-select, input) {
222
217
  flex: 1 1 8rem;
223
218
  }
224
219
  }
@@ -226,7 +221,7 @@ mk-filter-builder {
226
221
  @media (prefers-reduced-motion: reduce) {
227
222
  [data-mk-fb-combinator] [role='radio'],
228
223
  [data-mk-fb-actions] button,
229
- [data-mk-fb-rule] :is(select, input) {
224
+ [data-mk-fb-rule] input {
230
225
  transition: none;
231
226
  }
232
227
  }