@mlola-ui/engine 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generated/agents.json +1 -1
- package/generated/agents.md +2 -1
- package/generated/assets.json +22 -22
- package/generated/contract.json +1 -0
- package/generated/recipes.css +92 -9
- package/package.json +1 -1
package/generated/agents.json
CHANGED
|
@@ -341,7 +341,7 @@
|
|
|
341
341
|
},
|
|
342
342
|
{
|
|
343
343
|
"name": "ml-page-shell",
|
|
344
|
-
"note": "
|
|
344
|
+
"note": "The navigation, main and footer are grid items; they may be narrower than their widest content (a table that scrolls), so the page never does."
|
|
345
345
|
},
|
|
346
346
|
{
|
|
347
347
|
"name": "ml-person",
|
package/generated/agents.md
CHANGED
|
@@ -131,7 +131,7 @@ component, so a page built from them themes with the rest.
|
|
|
131
131
|
|
|
132
132
|
- `.ml-check-list` — A list of benefits, each after a check. Pricing tiers and feature rows share it.
|
|
133
133
|
- `.ml-link` — A glyph inside a link flows with the text instead of breaking the line.
|
|
134
|
-
- `.ml-page-shell` —
|
|
134
|
+
- `.ml-page-shell` — The navigation, main and footer are grid items; they may be narrower than their widest content (a table that scrolls), so the page never does.
|
|
135
135
|
- `.ml-section` — A section a link jumps to clears the sticky navigation bar.
|
|
136
136
|
|
|
137
137
|
## Elements and their attributes
|
|
@@ -168,6 +168,7 @@ correct. This table is read out of the stylesheet, so it is never stale.
|
|
|
168
168
|
| `.ml-calendar-day` | `data-unreachable` | _presence only_ |
|
|
169
169
|
| `.ml-card` | `data-interactive` | _presence only_ |
|
|
170
170
|
| `.ml-card` | `data-variant` | `elevated`, `glass`, `specular` |
|
|
171
|
+
| `.ml-carousel` | `data-arrows` | _presence only_ |
|
|
171
172
|
| `.ml-carousel` | `data-playing` | _presence only_ |
|
|
172
173
|
| `.ml-carousel-arrow` | `data-side` | `next`, `previous` |
|
|
173
174
|
| `.ml-carousel-dot` | `aria-current` | `true` |
|
package/generated/assets.json
CHANGED
|
@@ -1431,14 +1431,14 @@
|
|
|
1431
1431
|
{
|
|
1432
1432
|
"path": "empty-cart.svg",
|
|
1433
1433
|
"role": "source",
|
|
1434
|
-
"bytes":
|
|
1435
|
-
"integrity": "sha256-
|
|
1434
|
+
"bytes": 4982,
|
|
1435
|
+
"integrity": "sha256-8m4Z0HWSI7KRjDc6MSHRrCI1HwbiyynBmoxgCyo2DDw="
|
|
1436
1436
|
},
|
|
1437
1437
|
{
|
|
1438
1438
|
"path": "empty-cart.tsx",
|
|
1439
1439
|
"role": "react",
|
|
1440
|
-
"bytes":
|
|
1441
|
-
"integrity": "sha256-
|
|
1440
|
+
"bytes": 5934,
|
|
1441
|
+
"integrity": "sha256-CFip8M6D6RJdYVGIwQ6H3HwWek/dHTq9ON98SeHjS4Q="
|
|
1442
1442
|
}
|
|
1443
1443
|
],
|
|
1444
1444
|
"themeable": true,
|
|
@@ -1617,7 +1617,7 @@
|
|
|
1617
1617
|
"id": "inventory",
|
|
1618
1618
|
"kind": "2d",
|
|
1619
1619
|
"title": "Inventory",
|
|
1620
|
-
"summary": "
|
|
1620
|
+
"summary": "An open shelf of labeled parcels, one empty slot and a tag marking the stock that is ready.",
|
|
1621
1621
|
"tags": [
|
|
1622
1622
|
"inventory",
|
|
1623
1623
|
"warehouse",
|
|
@@ -1627,14 +1627,14 @@
|
|
|
1627
1627
|
{
|
|
1628
1628
|
"path": "inventory.svg",
|
|
1629
1629
|
"role": "source",
|
|
1630
|
-
"bytes":
|
|
1631
|
-
"integrity": "sha256-
|
|
1630
|
+
"bytes": 9461,
|
|
1631
|
+
"integrity": "sha256-PrHqQsxeEtVKhftidsFZpr2XMIWx2oMgKhsd0dGKXSQ="
|
|
1632
1632
|
},
|
|
1633
1633
|
{
|
|
1634
1634
|
"path": "inventory.tsx",
|
|
1635
1635
|
"role": "react",
|
|
1636
|
-
"bytes":
|
|
1637
|
-
"integrity": "sha256-
|
|
1636
|
+
"bytes": 10590,
|
|
1637
|
+
"integrity": "sha256-WH+stRnsQsNF8bWuVpZAoqkjthF3JNM/FEQ3aw2G6Lg="
|
|
1638
1638
|
}
|
|
1639
1639
|
],
|
|
1640
1640
|
"themeable": true,
|
|
@@ -1869,7 +1869,7 @@
|
|
|
1869
1869
|
"id": "offline",
|
|
1870
1870
|
"kind": "2d",
|
|
1871
1871
|
"title": "Offline",
|
|
1872
|
-
"summary": "A
|
|
1872
|
+
"summary": "A wireless router that has lost its signal and a disconnected cable. Connection paused, ready to reconnect.",
|
|
1873
1873
|
"tags": [
|
|
1874
1874
|
"error",
|
|
1875
1875
|
"network",
|
|
@@ -1879,14 +1879,14 @@
|
|
|
1879
1879
|
{
|
|
1880
1880
|
"path": "offline.svg",
|
|
1881
1881
|
"role": "source",
|
|
1882
|
-
"bytes":
|
|
1883
|
-
"integrity": "sha256-
|
|
1882
|
+
"bytes": 4560,
|
|
1883
|
+
"integrity": "sha256-q0ZZ4EKo8a+56sIAtcGyjni7yVhxyD6yMYwSlDaWqRQ="
|
|
1884
1884
|
},
|
|
1885
1885
|
{
|
|
1886
1886
|
"path": "offline.tsx",
|
|
1887
1887
|
"role": "react",
|
|
1888
|
-
"bytes":
|
|
1889
|
-
"integrity": "sha256-
|
|
1888
|
+
"bytes": 5517,
|
|
1889
|
+
"integrity": "sha256-G1ys9dW4cJg6CjD3Gj1aJ2InQus4zYClR45jExmITSg="
|
|
1890
1890
|
}
|
|
1891
1891
|
],
|
|
1892
1892
|
"themeable": true,
|
|
@@ -2897,14 +2897,14 @@
|
|
|
2897
2897
|
{
|
|
2898
2898
|
"path": "measuring-tape.glb",
|
|
2899
2899
|
"role": "source",
|
|
2900
|
-
"bytes":
|
|
2901
|
-
"integrity": "sha256-
|
|
2900
|
+
"bytes": 445392,
|
|
2901
|
+
"integrity": "sha256-VsiwX1rsnRBGeE28vd1LuoqIZSF5OVqvDjy9fgwbLNk="
|
|
2902
2902
|
},
|
|
2903
2903
|
{
|
|
2904
2904
|
"path": "measuring-tape-poster.webp",
|
|
2905
2905
|
"role": "poster",
|
|
2906
|
-
"bytes":
|
|
2907
|
-
"integrity": "sha256-
|
|
2906
|
+
"bytes": 18308,
|
|
2907
|
+
"integrity": "sha256-Nmmtp3upafknGSg3V57I1GEBf+yMRCBVBmIsSGXKlks="
|
|
2908
2908
|
}
|
|
2909
2909
|
],
|
|
2910
2910
|
"themeable": true,
|
|
@@ -3209,14 +3209,14 @@
|
|
|
3209
3209
|
{
|
|
3210
3210
|
"path": "task-lamp.glb",
|
|
3211
3211
|
"role": "source",
|
|
3212
|
-
"bytes":
|
|
3213
|
-
"integrity": "sha256-
|
|
3212
|
+
"bytes": 283120,
|
|
3213
|
+
"integrity": "sha256-mQVMpISa78gjVjYSbzsY9IOzZjTQVwl2n/YrCCdVOf0="
|
|
3214
3214
|
},
|
|
3215
3215
|
{
|
|
3216
3216
|
"path": "task-lamp-poster.webp",
|
|
3217
3217
|
"role": "poster",
|
|
3218
|
-
"bytes":
|
|
3219
|
-
"integrity": "sha256-
|
|
3218
|
+
"bytes": 17958,
|
|
3219
|
+
"integrity": "sha256-IQot+k4DZEqTkOknca5ZxH4dqPjpE4xyeJWxGANl6yM="
|
|
3220
3220
|
}
|
|
3221
3221
|
],
|
|
3222
3222
|
"themeable": true,
|
package/generated/contract.json
CHANGED
package/generated/recipes.css
CHANGED
|
@@ -170,6 +170,9 @@
|
|
|
170
170
|
|
|
171
171
|
.ml-section {
|
|
172
172
|
padding-block: clamp(3.5rem,8vw,6.5rem);
|
|
173
|
+
/* A section is a grid or flex item in a page shell; without this, a wide
|
|
174
|
+
table inside it widens the whole page instead of scrolling in place. */
|
|
175
|
+
min-width: 0;
|
|
173
176
|
}
|
|
174
177
|
|
|
175
178
|
/* A section a link jumps to clears the sticky navigation bar. */
|
|
@@ -579,6 +582,12 @@
|
|
|
579
582
|
color: var(--ml-text);
|
|
580
583
|
}
|
|
581
584
|
|
|
585
|
+
/* The navigation, main and footer are grid items; they may be narrower than
|
|
586
|
+
their widest content (a table that scrolls), so the page never does. */
|
|
587
|
+
.ml-page-shell > * {
|
|
588
|
+
min-width: 0;
|
|
589
|
+
}
|
|
590
|
+
|
|
582
591
|
/* components/accordion */
|
|
583
592
|
.ml-accordion {
|
|
584
593
|
width: 100%;
|
|
@@ -1437,15 +1446,41 @@
|
|
|
1437
1446
|
|
|
1438
1447
|
.ml-breadcrumb-item {
|
|
1439
1448
|
display: inline-flex;
|
|
1449
|
+
min-width: 0;
|
|
1440
1450
|
align-items: center;
|
|
1441
1451
|
gap: var(--ml-space-1-5);
|
|
1442
1452
|
}
|
|
1443
1453
|
|
|
1454
|
+
/* Links, in-app buttons and the current page share one shape; a long title shortens instead of breaking the bar. */
|
|
1455
|
+
.ml-breadcrumb-link,
|
|
1456
|
+
.ml-breadcrumb-page {
|
|
1457
|
+
display: inline-flex;
|
|
1458
|
+
align-items: center;
|
|
1459
|
+
gap: var(--ml-space-1);
|
|
1460
|
+
min-width: 0;
|
|
1461
|
+
overflow: hidden;
|
|
1462
|
+
text-overflow: ellipsis;
|
|
1463
|
+
white-space: nowrap;
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1444
1466
|
.ml-breadcrumb-link {
|
|
1445
1467
|
color: var(--ml-text-muted);
|
|
1446
1468
|
text-decoration: none;
|
|
1447
1469
|
}
|
|
1448
1470
|
|
|
1471
|
+
button.ml-breadcrumb-link {
|
|
1472
|
+
padding: 0;
|
|
1473
|
+
border: 0;
|
|
1474
|
+
border-radius: var(--ml-radius-xs);
|
|
1475
|
+
background: none;
|
|
1476
|
+
font: inherit;
|
|
1477
|
+
cursor: pointer;
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
.ml-breadcrumb-icon {
|
|
1481
|
+
flex: none;
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1449
1484
|
.ml-breadcrumb-link:hover {
|
|
1450
1485
|
color: var(--ml-text);
|
|
1451
1486
|
}
|
|
@@ -1961,7 +1996,24 @@
|
|
|
1961
1996
|
height: 100%;
|
|
1962
1997
|
}
|
|
1963
1998
|
|
|
1964
|
-
/*
|
|
1999
|
+
/* With a pointer that hovers, the arrows sit in a gutter beside the slides,
|
|
2000
|
+
never over them. On touch the reader swipes, the arrows stay hidden until
|
|
2001
|
+
focused, and the slides keep the full width. */
|
|
2002
|
+
@media (hover: hover) and (pointer: fine) {
|
|
2003
|
+
.ml-carousel[data-arrows] .ml-carousel-viewport {
|
|
2004
|
+
padding-inline: calc(var(--ml-control-md) + var(--ml-space-3));
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
.ml-carousel[data-arrows] .ml-carousel-arrow[data-side="previous"] {
|
|
2008
|
+
left: 0;
|
|
2009
|
+
}
|
|
2010
|
+
|
|
2011
|
+
.ml-carousel[data-arrows] .ml-carousel-arrow[data-side="next"] {
|
|
2012
|
+
right: 0;
|
|
2013
|
+
}
|
|
2014
|
+
}
|
|
2015
|
+
|
|
2016
|
+
/* The arrows come forward when the reader is near. */
|
|
1965
2017
|
.ml-carousel-arrow {
|
|
1966
2018
|
position: absolute;
|
|
1967
2019
|
top: 50%;
|
|
@@ -2100,6 +2152,7 @@
|
|
|
2100
2152
|
grid-template-columns: auto 1fr;
|
|
2101
2153
|
gap: var(--ml-space-1-5) var(--ml-space-3);
|
|
2102
2154
|
align-items: start;
|
|
2155
|
+
align-content: start;
|
|
2103
2156
|
}
|
|
2104
2157
|
|
|
2105
2158
|
.ml-checkbox-control {
|
|
@@ -3089,6 +3142,7 @@
|
|
|
3089
3142
|
.ml-dropzone-root {
|
|
3090
3143
|
display: grid;
|
|
3091
3144
|
gap: var(--ml-space-2);
|
|
3145
|
+
align-content: start;
|
|
3092
3146
|
}
|
|
3093
3147
|
|
|
3094
3148
|
.ml-dropzone {
|
|
@@ -3327,6 +3381,8 @@
|
|
|
3327
3381
|
grid-template-columns: minmax(0, 1fr);
|
|
3328
3382
|
gap: var(--ml-space-1-5);
|
|
3329
3383
|
width: 100%;
|
|
3384
|
+
/* In a form row taller than itself, a field keeps its own height instead of stretching its label and control apart. */
|
|
3385
|
+
align-content: start;
|
|
3330
3386
|
}
|
|
3331
3387
|
|
|
3332
3388
|
.ml-input,
|
|
@@ -3672,9 +3728,12 @@
|
|
|
3672
3728
|
border-inline-start: var(--ml-border-width) solid var(--ml-border-subtle);
|
|
3673
3729
|
}
|
|
3674
3730
|
|
|
3731
|
+
/* Square at any height: where touch sizing makes the field taller, the steps
|
|
3732
|
+
grow with it instead of stretching into tall slivers. */
|
|
3675
3733
|
.ml-number-input-step {
|
|
3676
3734
|
display: inline-grid;
|
|
3677
|
-
width: var(--ml-control-md);
|
|
3735
|
+
min-width: var(--ml-control-md);
|
|
3736
|
+
aspect-ratio: 1;
|
|
3678
3737
|
place-items: center;
|
|
3679
3738
|
padding: 0;
|
|
3680
3739
|
border: 0;
|
|
@@ -3972,6 +4031,7 @@
|
|
|
3972
4031
|
display: grid;
|
|
3973
4032
|
gap: var(--ml-space-2);
|
|
3974
4033
|
width: 100%;
|
|
4034
|
+
align-content: start;
|
|
3975
4035
|
}
|
|
3976
4036
|
|
|
3977
4037
|
.ml-progress-root[data-tone="info"] {
|
|
@@ -4319,6 +4379,7 @@
|
|
|
4319
4379
|
display: grid;
|
|
4320
4380
|
gap: var(--ml-space-3);
|
|
4321
4381
|
width: 100%;
|
|
4382
|
+
align-content: start;
|
|
4322
4383
|
}
|
|
4323
4384
|
|
|
4324
4385
|
.ml-radio-group[data-orientation="horizontal"] .ml-radio-group-items {
|
|
@@ -4340,6 +4401,7 @@
|
|
|
4340
4401
|
.ml-radio-group-items {
|
|
4341
4402
|
display: grid;
|
|
4342
4403
|
gap: var(--ml-space-2-5);
|
|
4404
|
+
align-content: start;
|
|
4343
4405
|
}
|
|
4344
4406
|
|
|
4345
4407
|
/* components/rating */
|
|
@@ -5032,6 +5094,7 @@
|
|
|
5032
5094
|
display: grid;
|
|
5033
5095
|
gap: var(--ml-space-2-5);
|
|
5034
5096
|
width: 100%;
|
|
5097
|
+
align-content: start;
|
|
5035
5098
|
}
|
|
5036
5099
|
|
|
5037
5100
|
.ml-slider-header {
|
|
@@ -5380,6 +5443,9 @@ button.ml-stepper-target:focus-visible {
|
|
|
5380
5443
|
|
|
5381
5444
|
/* components/table */
|
|
5382
5445
|
.ml-table-container {
|
|
5446
|
+
/* The containing block for anything positioned inside, such as visually
|
|
5447
|
+
hidden cell text, so it scrolls with the table instead of widening the page. */
|
|
5448
|
+
position: relative;
|
|
5383
5449
|
width: 100%;
|
|
5384
5450
|
overflow-x: auto;
|
|
5385
5451
|
border: var(--ml-border-width) solid var(--ml-border-subtle);
|
|
@@ -6466,8 +6532,12 @@ button.ml-stepper-target:focus-visible {
|
|
|
6466
6532
|
font-size: var(--ml-type-xs);
|
|
6467
6533
|
font-weight: 500;
|
|
6468
6534
|
line-height: 1.4;
|
|
6469
|
-
|
|
6535
|
+
/* One line when it fits; a long tip wraps within the window instead of running past it. */
|
|
6536
|
+
width: max-content;
|
|
6537
|
+
max-width: min(20rem, calc(100vw - 2 * var(--ml-space-2)));
|
|
6538
|
+
white-space: normal;
|
|
6470
6539
|
pointer-events: none;
|
|
6540
|
+
/* Placement uses `translate`, so the pop-in's transform adds to it instead of replacing it mid-animation. */
|
|
6471
6541
|
animation: ml-pop-in var(--ml-duration-fast) var(--ml-ease-spring);
|
|
6472
6542
|
}
|
|
6473
6543
|
|
|
@@ -6475,25 +6545,25 @@ button.ml-stepper-target:focus-visible {
|
|
|
6475
6545
|
.ml-tooltip:not([data-side]) {
|
|
6476
6546
|
bottom: calc(100% + var(--ml-space-2));
|
|
6477
6547
|
left: 50%;
|
|
6478
|
-
|
|
6548
|
+
translate: calc(-50% + var(--ml-tooltip-shift, 0px)) 0;
|
|
6479
6549
|
}
|
|
6480
6550
|
|
|
6481
6551
|
.ml-tooltip[data-side="bottom"] {
|
|
6482
6552
|
top: calc(100% + var(--ml-space-2));
|
|
6483
6553
|
left: 50%;
|
|
6484
|
-
|
|
6554
|
+
translate: calc(-50% + var(--ml-tooltip-shift, 0px)) 0;
|
|
6485
6555
|
}
|
|
6486
6556
|
|
|
6487
6557
|
.ml-tooltip[data-side="left"] {
|
|
6488
6558
|
right: calc(100% + var(--ml-space-2));
|
|
6489
6559
|
top: 50%;
|
|
6490
|
-
|
|
6560
|
+
translate: 0 calc(-50% + var(--ml-tooltip-shift, 0px));
|
|
6491
6561
|
}
|
|
6492
6562
|
|
|
6493
6563
|
.ml-tooltip[data-side="right"] {
|
|
6494
6564
|
left: calc(100% + var(--ml-space-2));
|
|
6495
6565
|
top: 50%;
|
|
6496
|
-
|
|
6566
|
+
translate: 0 calc(-50% + var(--ml-tooltip-shift, 0px));
|
|
6497
6567
|
}
|
|
6498
6568
|
|
|
6499
6569
|
.ml-tooltip-arrow {
|
|
@@ -6508,13 +6578,26 @@ button.ml-stepper-target:focus-visible {
|
|
|
6508
6578
|
.ml-tooltip:not([data-side]) .ml-tooltip-arrow {
|
|
6509
6579
|
bottom: -.2rem;
|
|
6510
6580
|
left: 50%;
|
|
6511
|
-
margin-left: calc(var(--ml-space-1) * -1);
|
|
6581
|
+
margin-left: calc(var(--ml-space-1) * -1 - var(--ml-tooltip-shift, 0px));
|
|
6512
6582
|
}
|
|
6513
6583
|
|
|
6514
6584
|
.ml-tooltip[data-side="bottom"] .ml-tooltip-arrow {
|
|
6515
6585
|
top: -.2rem;
|
|
6516
6586
|
left: 50%;
|
|
6517
|
-
margin-left: calc(var(--ml-space-1) * -1);
|
|
6587
|
+
margin-left: calc(var(--ml-space-1) * -1 - var(--ml-tooltip-shift, 0px));
|
|
6588
|
+
}
|
|
6589
|
+
|
|
6590
|
+
/* The arrow slides back by the tooltip's shift, so it keeps pointing at the trigger. */
|
|
6591
|
+
.ml-tooltip[data-side="left"] .ml-tooltip-arrow {
|
|
6592
|
+
right: -.2rem;
|
|
6593
|
+
top: 50%;
|
|
6594
|
+
margin-top: calc(var(--ml-space-1) * -1 - var(--ml-tooltip-shift, 0px));
|
|
6595
|
+
}
|
|
6596
|
+
|
|
6597
|
+
.ml-tooltip[data-side="right"] .ml-tooltip-arrow {
|
|
6598
|
+
left: -.2rem;
|
|
6599
|
+
top: 50%;
|
|
6600
|
+
margin-top: calc(var(--ml-space-1) * -1 - var(--ml-tooltip-shift, 0px));
|
|
6518
6601
|
}
|
|
6519
6602
|
|
|
6520
6603
|
/* components/tour */
|