@mlola-ui/engine 1.1.10 → 1.1.12

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.
@@ -202,6 +202,7 @@ correct. This table is read out of the stylesheet, so it is never stale.
202
202
  | `.ml-dropdown-item` | `data-danger` | _presence only_ |
203
203
  | `.ml-dropdown-item` | `data-highlighted` | _presence only_ |
204
204
  | `.ml-dropdown-menu` | `data-align` | `end` |
205
+ | `.ml-dropdown-menu` | `data-side` | `top` |
205
206
  | `.ml-dropdown-trigger` | `aria-expanded` | `true` |
206
207
  | `.ml-dropzone` | `aria-disabled` | _presence only_ |
207
208
  | `.ml-dropzone` | `data-dragging` | _presence only_ |
@@ -221,6 +221,9 @@
221
221
  "ml-dropdown-menu": {
222
222
  "data-align": [
223
223
  "end"
224
+ ],
225
+ "data-side": [
226
+ "top"
224
227
  ]
225
228
  },
226
229
  "ml-dropdown-trigger": {
@@ -1486,6 +1486,20 @@
1486
1486
  text-decoration: none;
1487
1487
  }
1488
1488
 
1489
+ /* A fingertip's target. The link clips its own text for the ellipsis, which
1490
+ would clip the invisible target data-hit="expand" draws around it, so on a
1491
+ touch screen the link itself grows instead, without moving the bar. */
1492
+ @media (pointer: coarse) {
1493
+ .ml-breadcrumb-link {
1494
+ padding-block: var(--ml-space-2);
1495
+ margin-block: calc(-1 * var(--ml-space-2));
1496
+ }
1497
+
1498
+ .ml-breadcrumb-link::after {
1499
+ inset: 0;
1500
+ }
1501
+ }
1502
+
1489
1503
  button.ml-breadcrumb-link {
1490
1504
  padding: 0;
1491
1505
  border: 0;
@@ -3095,6 +3109,23 @@ button.ml-breadcrumb-link {
3095
3109
  .ml-dropdown-menu[data-align="end"] {
3096
3110
  right: 0;
3097
3111
  left: auto;
3112
+ transform-origin: top right;
3113
+ }
3114
+
3115
+ /* Kept on screen by fitMenu: slid sideways, and above the trigger when
3116
+ there is no room below. */
3117
+ .ml-dropdown-menu {
3118
+ translate: var(--ml-dropdown-shift, 0) 0;
3119
+ }
3120
+
3121
+ .ml-dropdown-menu[data-side="top"] {
3122
+ top: auto;
3123
+ bottom: calc(100% + var(--ml-space-1-5));
3124
+ transform-origin: bottom left;
3125
+ }
3126
+
3127
+ .ml-dropdown-menu[data-side="top"][data-align="end"] {
3128
+ transform-origin: bottom right;
3098
3129
  }
3099
3130
 
3100
3131
  .ml-dropdown-label {
@@ -3433,6 +3464,13 @@ button.ml-breadcrumb-link {
3433
3464
  transition: border-color var(--ml-duration-fast),box-shadow var(--ml-duration-fast);
3434
3465
  }
3435
3466
 
3467
+ /* A single-line field is exactly its size's control height, like the button
3468
+ beside it: the height comes from density, and the text sits centered in
3469
+ it, instead of padding around the text setting a height of its own. */
3470
+ .ml-input {
3471
+ padding-block: 0;
3472
+ }
3473
+
3436
3474
  .ml-input:hover,
3437
3475
  .ml-textarea:hover {
3438
3476
  border-color: color-mix(in oklab,var(--ml-border) 100%,var(--ml-text) 12%);
@@ -3513,13 +3551,13 @@ button.ml-breadcrumb-link {
3513
3551
 
3514
3552
  .ml-input[data-size="sm"] {
3515
3553
  min-height: var(--ml-control-sm);
3516
- padding: var(--ml-space-1-5) var(--ml-space-2-5);
3554
+ padding-inline: var(--ml-space-2-5);
3517
3555
  font-size: var(--ml-type-sm);
3518
3556
  }
3519
3557
 
3520
3558
  .ml-input[data-size="lg"] {
3521
3559
  min-height: var(--ml-control-lg);
3522
- padding: var(--ml-space-2-5) var(--ml-space-3-5);
3560
+ padding-inline: var(--ml-space-3-5);
3523
3561
  font-size: var(--ml-type-md);
3524
3562
  }
3525
3563
 
@@ -3741,7 +3779,8 @@ button.ml-breadcrumb-link {
3741
3779
  .ml-number-input-field {
3742
3780
  flex: 1;
3743
3781
  min-width: 0;
3744
- padding: var(--ml-space-2) var(--ml-space-3);
3782
+ /* The control's height comes from density, like a text field's. */
3783
+ padding: 0 var(--ml-space-3);
3745
3784
  border: 0;
3746
3785
  background: transparent;
3747
3786
  color: var(--ml-text);
@@ -3762,10 +3801,11 @@ button.ml-breadcrumb-link {
3762
3801
  }
3763
3802
 
3764
3803
  /* Square at any height: where touch sizing makes the field taller, the steps
3765
- grow with it instead of stretching into tall slivers. */
3804
+ grow with it instead of stretching into tall slivers. They sit inside the
3805
+ control's border, so their side is the height within it. */
3766
3806
  .ml-number-input-step {
3767
3807
  display: inline-grid;
3768
- min-width: var(--ml-control-md);
3808
+ min-width: calc(var(--ml-control-md) - 2 * var(--ml-border-width));
3769
3809
  aspect-ratio: 1;
3770
3810
  place-items: center;
3771
3811
  padding: 0;
@@ -4603,9 +4643,11 @@ button.ml-breadcrumb-link {
4603
4643
  gap: var(--ml-space-0-5);
4604
4644
  }
4605
4645
 
4646
+ /* Each option is a small control inside the track, so the whole control is
4647
+ as tall as a medium one and sits level with the fields beside it. */
4606
4648
  .ml-segmented-control-item {
4607
4649
  min-height: var(--ml-control-sm);
4608
- padding: var(--ml-space-1-5) var(--ml-space-3);
4650
+ padding: 0 var(--ml-space-3);
4609
4651
  border: 0;
4610
4652
  border-radius: var(--ml-radius-md);
4611
4653
  background: transparent;
@@ -4654,7 +4696,8 @@ button.ml-breadcrumb-link {
4654
4696
  align-items: center;
4655
4697
  justify-content: space-between;
4656
4698
  gap: var(--ml-space-2);
4657
- padding: var(--ml-space-2) var(--ml-space-3);
4699
+ /* As tall as its size's control height, level with an input or a button. */
4700
+ padding: 0 var(--ml-space-3);
4658
4701
  color: var(--ml-text);
4659
4702
  background: var(--ml-surface);
4660
4703
  border: var(--ml-border-width) solid var(--ml-border);
@@ -4682,7 +4725,7 @@ button.ml-breadcrumb-link {
4682
4725
 
4683
4726
  .ml-select[data-size="sm"] {
4684
4727
  min-height: var(--ml-control-sm);
4685
- padding: var(--ml-space-1-5) var(--ml-space-2-5);
4728
+ padding: 0 var(--ml-space-2-5);
4686
4729
  font-size: var(--ml-type-sm);
4687
4730
  }
4688
4731
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlola-ui/engine",
3
- "version": "1.1.10",
3
+ "version": "1.1.12",
4
4
  "description": "Framework-free CSS, spring easings, and the machine-readable contract for Mlola UI",
5
5
  "type": "module",
6
6
  "sideEffects": [