@timmo001/groundwork-ui 0.4.1 → 0.6.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.
- package/custom-elements.json +1027 -18
- package/package.json +2 -2
- package/src/events.ts +3 -0
- package/src/gw-alert.ts +4 -0
- package/src/gw-app-bar.ts +106 -42
- package/src/gw-badge.ts +11 -2
- package/src/gw-banner.ts +4 -0
- package/src/gw-button.ts +91 -12
- package/src/gw-card.ts +6 -3
- package/src/gw-chip.ts +3 -0
- package/src/gw-command-menu.ts +7 -3
- package/src/gw-dialog.ts +15 -5
- package/src/gw-dot.ts +2 -0
- package/src/gw-expansion.ts +7 -2
- package/src/gw-facts.ts +13 -5
- package/src/gw-gauge.ts +11 -5
- package/src/gw-meter.ts +17 -4
- package/src/gw-notification-center.ts +14 -3
- package/src/gw-notification.ts +2 -0
- package/src/gw-option-list.ts +26 -5
- package/src/gw-page-header.ts +7 -3
- package/src/gw-popover.ts +17 -5
- package/src/gw-section-title.ts +3 -1
- package/src/gw-segmented.ts +2 -1
- package/src/gw-skeleton.ts +3 -1
- package/src/gw-spinner.ts +5 -1
- package/src/gw-theme-gallery.ts +493 -0
- package/src/gw-theme-picker.ts +187 -34
- package/src/gw-toast.ts +3 -1
- package/src/index.ts +2 -0
package/custom-elements.json
CHANGED
|
@@ -1021,6 +1021,20 @@
|
|
|
1021
1021
|
"kind": "class",
|
|
1022
1022
|
"description": "A message in the flow of the page. `urgent` announces it at once, for\nerrors that need attention; otherwise it's announced politely.",
|
|
1023
1023
|
"name": "GwAlert",
|
|
1024
|
+
"cssProperties": [
|
|
1025
|
+
{
|
|
1026
|
+
"description": "The icon color, for a tone of your own. `tone` sets it.",
|
|
1027
|
+
"name": "--gw-tone"
|
|
1028
|
+
},
|
|
1029
|
+
{
|
|
1030
|
+
"description": "The background. `tone` sets it.",
|
|
1031
|
+
"name": "--gw-tone-fill"
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
"description": "The border. `tone` sets it.",
|
|
1035
|
+
"name": "--gw-tone-border"
|
|
1036
|
+
}
|
|
1037
|
+
],
|
|
1024
1038
|
"cssParts": [
|
|
1025
1039
|
{
|
|
1026
1040
|
"description": "The alert.",
|
|
@@ -1465,16 +1479,24 @@
|
|
|
1465
1479
|
"declarations": [
|
|
1466
1480
|
{
|
|
1467
1481
|
"kind": "class",
|
|
1468
|
-
"description": "A site or app header pinned to the top of the page, with a brand, nav\nlinks and actions, full width with its content kept to the content width.\nIt's transparent at first, then gets a blurred surface and a bottom border\nonce the page scrolls, or once the element\n`reveal-after` names scrolls out of view, such as a hero. With\n`reveal-after` the brand stays hidden until then, so a
|
|
1482
|
+
"description": "A site or app header pinned to the top of the page, with a brand, nav\nlinks and actions, full width with its content kept to the content width.\nIt's transparent at first, then gets a blurred surface and a bottom border\nonce the page scrolls, or once the element\n`reveal-after` names scrolls out of view, such as a hero. With\n`reveal-after` the brand stays hidden, taking no room, until then, so a\nlarge logo in the hero hands over to the small one in the bar. The nav\nslides over as it opens.\n\n`overlay` lays it over the top of the page rather than taking room, for a\npage that opens with a hero. Below `menu-below`, 600px wide by default,\nthe nav moves into a menu opened from a button, which closes on Esc, a\nclick outside or a link. Raise it when the nav and actions need more room.",
|
|
1469
1483
|
"name": "GwAppBar",
|
|
1470
1484
|
"cssParts": [
|
|
1471
1485
|
{
|
|
1472
1486
|
"description": "The bar.",
|
|
1473
1487
|
"name": "bar"
|
|
1474
1488
|
},
|
|
1489
|
+
{
|
|
1490
|
+
"description": "The brand's container.",
|
|
1491
|
+
"name": "brand"
|
|
1492
|
+
},
|
|
1475
1493
|
{
|
|
1476
1494
|
"description": "The nav links' container, the menu panel on narrow screens.",
|
|
1477
1495
|
"name": "nav"
|
|
1496
|
+
},
|
|
1497
|
+
{
|
|
1498
|
+
"description": "The actions' container.",
|
|
1499
|
+
"name": "actions"
|
|
1478
1500
|
}
|
|
1479
1501
|
],
|
|
1480
1502
|
"slots": [
|
|
@@ -1499,7 +1521,7 @@
|
|
|
1499
1521
|
"text": "Properties"
|
|
1500
1522
|
},
|
|
1501
1523
|
"static": true,
|
|
1502
|
-
"default": "{ revealAfter: { attribute: \"reveal-after\" }, overlay: { type: \"boolean\", reflect: true }, floating: { type: \"boolean\", reflect: true }, menuOpen: { type: \"boolean\", attribute: \"menu-open\", reflect: true }, menuLabel: { attribute: \"menu-label\" }, }",
|
|
1524
|
+
"default": "{ revealAfter: { attribute: \"reveal-after\" }, overlay: { type: \"boolean\", reflect: true }, floating: { type: \"boolean\", reflect: true }, menuOpen: { type: \"boolean\", attribute: \"menu-open\", reflect: true }, menuLabel: { attribute: \"menu-label\" }, menuBelow: { type: \"number\", attribute: \"menu-below\" }, collapsed: { type: \"boolean\", reflect: true }, }",
|
|
1503
1525
|
"inheritedFrom": {
|
|
1504
1526
|
"name": "GwElement",
|
|
1505
1527
|
"module": "src/element.ts"
|
|
@@ -1512,7 +1534,7 @@
|
|
|
1512
1534
|
"text": "readonly CSSStyleSheet[]"
|
|
1513
1535
|
},
|
|
1514
1536
|
"static": true,
|
|
1515
|
-
"default": "[ base, css` :host { position: sticky; inset-block-start: 0; z-index: 50; display: block; } :host([overlay]) { position: fixed; inset-inline: 0; } .bar { position: relative; display: flex; gap: var(--gw-space-3); align-items: center; min-height: 3.5rem; padding: var(--gw-space-1) max(var(--gw-space-3), (100% - var(--gw-content-width)) / 2); border-block-end: max(var(--gw-border-width), 1px) solid transparent; transition: background-color var(--gw-motion-normal) var(--gw-motion-easing), border-color var(--gw-motion-normal) var(--gw-motion-easing), backdrop-filter var(--gw-motion-normal) var(--gw-motion-easing); } :host([floating]) .bar, :host([menu-open]) .bar { background: color-mix( in oklab, var(--gw-color-surface-default) 82%, transparent ); border-color: var(--gw-color-border-quiet); backdrop-filter: blur(12px) saturate(1.4); } .brand { display:
|
|
1537
|
+
"default": "[ base, css` :host { position: sticky; inset-block-start: 0; z-index: 50; display: block; } :host([overlay]) { position: fixed; inset-inline: 0; } .bar { position: relative; display: flex; gap: var(--gw-space-3); align-items: center; min-height: 3.5rem; padding: var(--gw-space-1) max(var(--gw-space-3), (100% - var(--gw-content-width)) / 2); border-block-end: max(var(--gw-border-width), 1px) solid transparent; transition: background-color var(--gw-motion-normal) var(--gw-motion-easing), border-color var(--gw-motion-normal) var(--gw-motion-easing), backdrop-filter var(--gw-motion-normal) var(--gw-motion-easing); } :host([floating]) .bar, :host([menu-open]) .bar { background: color-mix( in oklab, var(--gw-color-surface-default) 82%, transparent ); border-color: var(--gw-color-border-quiet); backdrop-filter: blur(12px) saturate(1.4); } /* A one-column grid, so a hidden brand can fold its width to nothing and the nav slides over as it opens, rather than leaving a gap */ .brand { display: grid; flex: none; grid-template-columns: 1fr; align-items: center; transition: grid-template-columns var(--gw-motion-slow) var(--gw-motion-easing), margin var(--gw-motion-slow) var(--gw-motion-easing), opacity var(--gw-motion-normal) var(--gw-motion-easing), translate var(--gw-motion-normal) var(--gw-motion-easing); } .brand > slot { display: flex; align-items: center; min-width: 0; overflow: clip; overflow-clip-margin: calc( var(--gw-focus-width) + var(--gw-focus-offset) ); } :host([reveal-after]:not([floating])) .brand { grid-template-columns: 0fr; margin-inline-end: calc(var(--gw-space-3) * -1); pointer-events: none; visibility: hidden; opacity: 0; translate: 0 -0.25rem; transition: grid-template-columns var(--gw-motion-slow) var(--gw-motion-easing), margin var(--gw-motion-slow) var(--gw-motion-easing), opacity var(--gw-motion-normal) var(--gw-motion-easing), translate var(--gw-motion-normal) var(--gw-motion-easing), visibility var(--gw-motion-slow) allow-discrete; } .nav { display: flex; flex: 1; gap: var(--gw-space-1); align-items: center; min-width: 0; } .actions { display: flex; flex: none; gap: var(--gw-space-1); align-items: center; margin-inline-start: auto; } .menu { display: none; place-items: center; width: 2.5rem; height: 2.5rem; padding: 0; color: var(--gw-color-text-strong); cursor: pointer; background: none; border: 0; border-radius: var(--gw-radius-pill); transition: background-color var(--gw-motion-fast) var(--gw-motion-easing); } .menu:hover { background: var(--gw-color-fill-neutral-hovered); } /* Below menu-below, which sets collapsed, the nav folds into a menu */ :host([collapsed]) .menu { display: inline-grid; } :host([collapsed]) .nav { position: absolute; inset-block-start: 100%; inset-inline: 0; flex-direction: column; gap: var(--gw-space-0-5); align-items: stretch; padding: var(--gw-space-2) max(var(--gw-space-3), (100% - var(--gw-content-width)) / 2); visibility: hidden; background: var(--gw-color-surface-default); border-block-end: max(var(--gw-border-width), 1px) solid var(--gw-color-border-quiet); box-shadow: var(--gw-shadow-m); opacity: 0; translate: 0 -0.5rem; transition: opacity var(--gw-motion-fast) var(--gw-motion-easing), translate var(--gw-motion-normal) var(--gw-motion-easing), visibility var(--gw-motion-normal) allow-discrete; } :host([collapsed][menu-open]) .nav { visibility: visible; opacity: 1; translate: 0 0; } `, ]",
|
|
1516
1538
|
"inheritedFrom": {
|
|
1517
1539
|
"name": "GwElement",
|
|
1518
1540
|
"module": "src/element.ts"
|
|
@@ -1558,6 +1580,38 @@
|
|
|
1558
1580
|
},
|
|
1559
1581
|
"default": "\"Menu\""
|
|
1560
1582
|
},
|
|
1583
|
+
{
|
|
1584
|
+
"kind": "field",
|
|
1585
|
+
"name": "menuBelow",
|
|
1586
|
+
"type": {
|
|
1587
|
+
"text": "number"
|
|
1588
|
+
},
|
|
1589
|
+
"description": "The viewport width in pixels below which the nav moves into a menu.",
|
|
1590
|
+
"default": "600"
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
"kind": "field",
|
|
1594
|
+
"name": "collapsed",
|
|
1595
|
+
"type": {
|
|
1596
|
+
"text": "boolean"
|
|
1597
|
+
},
|
|
1598
|
+
"description": "Whether the nav is in the menu. Set by the bar from `menuBelow`.",
|
|
1599
|
+
"default": "false"
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
"kind": "field",
|
|
1603
|
+
"name": "#narrow",
|
|
1604
|
+
"privacy": "private",
|
|
1605
|
+
"type": {
|
|
1606
|
+
"text": "MediaQueryList | undefined"
|
|
1607
|
+
}
|
|
1608
|
+
},
|
|
1609
|
+
{
|
|
1610
|
+
"kind": "field",
|
|
1611
|
+
"name": "#onNarrow",
|
|
1612
|
+
"privacy": "private",
|
|
1613
|
+
"readonly": true
|
|
1614
|
+
},
|
|
1561
1615
|
{
|
|
1562
1616
|
"kind": "field",
|
|
1563
1617
|
"name": "#menuIcon",
|
|
@@ -1593,6 +1647,12 @@
|
|
|
1593
1647
|
},
|
|
1594
1648
|
"default": "0"
|
|
1595
1649
|
},
|
|
1650
|
+
{
|
|
1651
|
+
"kind": "method",
|
|
1652
|
+
"name": "#watchWidth",
|
|
1653
|
+
"privacy": "private",
|
|
1654
|
+
"description": "Follows the viewport across `menuBelow`, setting `collapsed`."
|
|
1655
|
+
},
|
|
1596
1656
|
{
|
|
1597
1657
|
"kind": "method",
|
|
1598
1658
|
"name": "toggleMenu",
|
|
@@ -1976,6 +2036,20 @@
|
|
|
1976
2036
|
"description": "Whether it floats. Set by the bar as the page scrolls.",
|
|
1977
2037
|
"name": "floating"
|
|
1978
2038
|
},
|
|
2039
|
+
{
|
|
2040
|
+
"type": {
|
|
2041
|
+
"text": "number"
|
|
2042
|
+
},
|
|
2043
|
+
"description": "The viewport width in pixels below which the nav moves into a menu. Defaults to `600`.",
|
|
2044
|
+
"name": "menu-below"
|
|
2045
|
+
},
|
|
2046
|
+
{
|
|
2047
|
+
"type": {
|
|
2048
|
+
"text": "boolean"
|
|
2049
|
+
},
|
|
2050
|
+
"description": "Whether the nav is in the menu. Set by the bar from `menu-below`.",
|
|
2051
|
+
"name": "collapsed"
|
|
2052
|
+
},
|
|
1979
2053
|
{
|
|
1980
2054
|
"type": {
|
|
1981
2055
|
"text": "boolean"
|
|
@@ -2019,10 +2093,24 @@
|
|
|
2019
2093
|
"kind": "class",
|
|
2020
2094
|
"description": "A pill with an icon, a value and an optional small label above it. The\nicon takes the `tone`'s color. While `loading`, a skeleton stands in for\nthe value, and for the icon if it has none yet, and the value fades in\nonce it's loaded.",
|
|
2021
2095
|
"name": "GwBadge",
|
|
2096
|
+
"cssProperties": [
|
|
2097
|
+
{
|
|
2098
|
+
"description": "The icon's color, for a tone of your own. `tone` sets it.",
|
|
2099
|
+
"name": "--gw-tone"
|
|
2100
|
+
}
|
|
2101
|
+
],
|
|
2022
2102
|
"cssParts": [
|
|
2023
2103
|
{
|
|
2024
2104
|
"description": "The badge.",
|
|
2025
2105
|
"name": "badge"
|
|
2106
|
+
},
|
|
2107
|
+
{
|
|
2108
|
+
"description": "The label above the value.",
|
|
2109
|
+
"name": "label"
|
|
2110
|
+
},
|
|
2111
|
+
{
|
|
2112
|
+
"description": "The value.",
|
|
2113
|
+
"name": "value"
|
|
2026
2114
|
}
|
|
2027
2115
|
],
|
|
2028
2116
|
"slots": [
|
|
@@ -2511,6 +2599,20 @@
|
|
|
2511
2599
|
"kind": "class",
|
|
2512
2600
|
"description": "A slim bar across the top of the app for app-wide state the person can\nwork through: a restart is needed, the connection is lost, or a new\nversion is ready. Put it above the app's content, not over it. Its height\nopens and closes smoothly, so the page below moves with it rather than\njumping. Put one action in the `actions` slot, which opens what it's\nabout. `urgent` announces it at once.",
|
|
2513
2601
|
"name": "GwBanner",
|
|
2602
|
+
"cssProperties": [
|
|
2603
|
+
{
|
|
2604
|
+
"description": "The text and icon color, for a tone of your own. `tone` sets it.",
|
|
2605
|
+
"name": "--gw-tone"
|
|
2606
|
+
},
|
|
2607
|
+
{
|
|
2608
|
+
"description": "The background. `tone` sets it.",
|
|
2609
|
+
"name": "--gw-tone-fill"
|
|
2610
|
+
},
|
|
2611
|
+
{
|
|
2612
|
+
"description": "The border. `tone` sets it.",
|
|
2613
|
+
"name": "--gw-tone-border"
|
|
2614
|
+
}
|
|
2615
|
+
],
|
|
2514
2616
|
"cssParts": [
|
|
2515
2617
|
{
|
|
2516
2618
|
"description": "The bar.",
|
|
@@ -2949,7 +3051,7 @@
|
|
|
2949
3051
|
"declarations": [
|
|
2950
3052
|
{
|
|
2951
3053
|
"kind": "class",
|
|
2952
|
-
"description": "A native button styled through `--gw-*` variables, so it follows the\ntheme and mode around it. With `href` it renders a link that looks the\nsame. Put an icon in the `icon` slot.\n\n`variant` picks the color and `appearance` how it's applied, from most to\nleast important: `accent` (a solid fill), `filled` (a soft tint),\n`outlined` (a stroke) or `plain` (text only). Every button is a pill.\nSizes run `xs` to `xl`, and `--gw-button-scale` sets any size in between.\n\nWhile `loading`, a spinning ring takes the icon's place, or the text's\nwhen there's no icon, so the button keeps its size, and clicks are\nignored. The icon fades back once it's done.",
|
|
3054
|
+
"description": "A native button styled through `--gw-*` variables, so it follows the\ntheme and mode around it. With `href` it renders a link that looks the\nsame. Put an icon in the `icon` slot.\n\nFor a link the page's HTML has to carry, such as one with `rel=\"me\"`, a\n`target` or `aria-current=\"page\"`, put a plain `<a>` inside instead of\n`href`. The button styles it, a click anywhere on the pill follows it, and\n`aria-current` on it gets a current style.\n\n`variant` picks the color and `appearance` how it's applied, from most to\nleast important: `accent` (a solid fill), `filled` (a soft tint),\n`outlined` (a stroke) or `plain` (text only). Every button is a pill.\nSizes run `xs` to `xl`, and `--gw-button-scale` sets any size in between.\n\nWhile `loading`, a spinning ring takes the icon's place, or the text's\nwhen there's no icon, so the button keeps its size, and clicks are\nignored. The icon fades back once it's done.",
|
|
2953
3055
|
"name": "GwButton",
|
|
2954
3056
|
"cssProperties": [
|
|
2955
3057
|
{
|
|
@@ -2967,13 +3069,13 @@
|
|
|
2967
3069
|
],
|
|
2968
3070
|
"cssParts": [
|
|
2969
3071
|
{
|
|
2970
|
-
"description": "The native button or link.",
|
|
3072
|
+
"description": "The native button or link, or the pill around a slotted link.",
|
|
2971
3073
|
"name": "button"
|
|
2972
3074
|
}
|
|
2973
3075
|
],
|
|
2974
3076
|
"slots": [
|
|
2975
3077
|
{
|
|
2976
|
-
"description": "The text
|
|
3078
|
+
"description": "The text, or an `<a>` holding it, in place of `href`.",
|
|
2977
3079
|
"name": ""
|
|
2978
3080
|
},
|
|
2979
3081
|
{
|
|
@@ -3016,7 +3118,7 @@
|
|
|
3016
3118
|
"text": "readonly CSSStyleSheet[]"
|
|
3017
3119
|
},
|
|
3018
3120
|
"static": true,
|
|
3019
|
-
"default": "[ base, css` :host { --gw-button-tone: var(--gw-color-accent); display: inline-block; } /* Everything scales from --gw-button-scale, around a 40px medium button: the presets give 24, 32, 48 and 56px, and an app can set any value for a size between or beyond them */ :host([size=\"xs\"]) { --gw-button-scale: 0.6; } :host([size=\"small\"]) { --gw-button-scale: 0.8; } :host([size=\"large\"]) { --gw-button-scale: 1.2; } :host([size=\"xl\"]) { --gw-button-scale: 1.4; } :host([variant=\"neutral\"]) { --gw-button-tone: var(--gw-color-text-secondary); --gw-button-ink: var(--gw-color-text-strong); } :host([variant=\"info\"]) { --gw-button-tone: var(--gw-color-info); } :host([variant=\"success\"]) { --gw-button-tone: var(--gw-color-success); } :host([variant=\"warning\"]) { --gw-button-tone: var(--gw-color-warning); } :host([variant=\"danger\"]) { --gw-button-tone: var(--gw-color-danger); } .button { --gw-scale: var(--gw-button-scale, 1); --gw-icon-size: calc(1.125rem * var(--gw-scale)); position: relative; display: inline-flex; gap: calc(var(--gw-space-2) * var(--gw-scale)); align-items: center; justify-content: center; min-height: calc(2.5rem * var(--gw-scale)); padding: 0 calc(var(--gw-space-4) * var(--gw-scale)); font: inherit; font-size: calc(var(--gw-font-size-s) * var(--gw-scale)); font-weight: var(--gw-font-weight-strong); line-height: 1; color: var(--gw-button-ink, var(--gw-button-tone)); text-decoration: none; text-transform: var(--gw-label-transform); letter-spacing: var(--gw-label-tracking); white-space: nowrap; cursor: pointer; background: transparent; border: max(var(--gw-border-width), 1px) solid transparent; border-radius: var(--gw-radius-pill); transition: background-color var(--gw-motion-fast) var(--gw-motion-easing), border-color var(--gw-motion-fast) var(--gw-motion-easing), color var(--gw-motion-fast) var(--gw-motion-easing), scale var(--gw-motion-fast) var(--gw-motion-easing); } /* A slight press, so a click feels physical */ .button:active { scale: 0.97; } .button:hover { background: color-mix(in oklch, var(--gw-button-tone) 16%, transparent); } .button:active { background: color-mix(in oklch, var(--gw-button-tone) 24%, transparent); } /* A solid fill, with text that flips between black and white by the fill's lightness so it reads on every theme's colors */ :host([appearance=\"accent\"]) .button { color: oklch( from var(--gw-button-tone) clamp(0, (0.66 - l) * 1000, 1) 0 0 ); background: var(--gw-button-tone); } :host([appearance=\"accent\"]) .button:hover { background: oklch( from var(--gw-button-tone) calc(l + (0.6 - l) * 0.2) c h ); } :host([appearance=\"accent\"]) .button:active { background: oklch( from var(--gw-button-tone) calc(l + (0.6 - l) * 0.35) c h ); } /* The tint lowers the tone's contrast, so the text leans toward the strongest text color to stay readable on it */ :host([appearance=\"filled\"]) .button { color: var( --gw-button-ink, color-mix( in oklch, var(--gw-button-tone) 70%, var(--gw-color-text-strong) ) ); background: color-mix(in oklch, var(--gw-button-tone) 16%, transparent); } :host([appearance=\"filled\"]) .button:hover { background: color-mix(in oklch, var(--gw-button-tone) 24%, transparent); } :host([appearance=\"filled\"]) .button:active { background: color-mix(in oklch, var(--gw-button-tone) 32%, transparent); } :host([appearance=\"outlined\"]) .button { border-color: var(--gw-button-tone); } .button:disabled, .button[aria-disabled=\"true\"] { color: var(--gw-color-text-disabled); pointer-events: none; cursor: not-allowed; background: var(--gw-color-fill-neutral-disabled); border-color: transparent; } :host([appearance=\"plain\"]) .button:disabled, :host([appearance=\"plain\"]) .button[aria-disabled=\"true\"] { background: transparent; } ::slotted([slot=\"icon\"]), .icon { flex: none; width: var(--gw-icon-size); height: var(--gw-icon-size); fill: currentColor; } /* The icon and the ring share one cell and crossfade */ .lead { display: grid; place-items: center; } .lead > * { grid-area: 1 / 1; } .lead > *, .text, .ring { transition: opacity var(--gw-motion-normal) cubic-bezier(0.4, 0, 0.2, 1); } /* Sized to the icon's drawn area, which is inset in its 24px box */ .ring { width: calc(var(--gw-icon-size) * 0.8); height: calc(var(--gw-icon-size) * 0.8); border: calc(2px * var(--gw-scale)) solid color-mix(in oklch, currentColor 25%, transparent); border-top-color: currentColor; border-radius: 50%; opacity: 0; animation: spin 0.9s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Without an icon, the ring sits over the hidden text */ .ring.over { position: absolute; inset: 0; margin: auto; } :host([loading]) .button { cursor: progress; } :host([loading]) .lead > .ring, :host([loading]) .button:not(.has-icon) > .ring.over { opacity: 1; } :host([loading]) .lead > :not(.ring), :host([loading]) .button:not(.has-icon) > .text { opacity: 0; } .button:not(.has-icon) > .lead { display: none; } /* Icon only, to save space: square, with the text kept for assistive technology. auto does this on narrow screens */ :host([labels=\"hide\"]) .button.has-icon { min-width: calc(2.5rem * var(--gw-scale)); padding: 0; } :host([labels=\"hide\"]) .has-icon .text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } @media (width < 40rem) { :host([labels=\"auto\"]) .button.has-icon { min-width: calc(2.5rem * var(--gw-scale)); padding: 0; } :host([labels=\"auto\"]) .has-icon .text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } } `, ]",
|
|
3121
|
+
"default": "[ base, css` :host { --gw-button-tone: var(--gw-color-accent); display: inline-block; } /* Everything scales from --gw-button-scale, around a 40px medium button: the presets give 24, 32, 48 and 56px, and an app can set any value for a size between or beyond them */ :host([size=\"xs\"]) { --gw-button-scale: 0.6; } :host([size=\"small\"]) { --gw-button-scale: 0.8; } :host([size=\"large\"]) { --gw-button-scale: 1.2; } :host([size=\"xl\"]) { --gw-button-scale: 1.4; } :host([variant=\"neutral\"]) { --gw-button-tone: var(--gw-color-text-secondary); --gw-button-ink: var(--gw-color-text-strong); } :host([variant=\"info\"]) { --gw-button-tone: var(--gw-color-info); } :host([variant=\"success\"]) { --gw-button-tone: var(--gw-color-success); } :host([variant=\"warning\"]) { --gw-button-tone: var(--gw-color-warning); } :host([variant=\"danger\"]) { --gw-button-tone: var(--gw-color-danger); } .button { --gw-scale: var(--gw-button-scale, 1); --gw-icon-size: calc(1.125rem * var(--gw-scale)); position: relative; display: inline-flex; gap: calc(var(--gw-space-2) * var(--gw-scale)); align-items: center; justify-content: center; min-height: calc(2.5rem * var(--gw-scale)); padding: 0 calc(var(--gw-space-4) * var(--gw-scale)); font: inherit; font-size: calc(var(--gw-font-size-s) * var(--gw-scale)); font-weight: var(--gw-font-weight-strong); line-height: 1; color: var(--gw-button-ink, var(--gw-button-tone)); text-decoration: none; text-transform: var(--gw-label-transform); letter-spacing: var(--gw-label-tracking); white-space: nowrap; cursor: pointer; background: transparent; border: max(var(--gw-border-width), 1px) solid transparent; border-radius: var(--gw-radius-pill); transition: background-color var(--gw-motion-fast) var(--gw-motion-easing), border-color var(--gw-motion-fast) var(--gw-motion-easing), color var(--gw-motion-fast) var(--gw-motion-easing), scale var(--gw-motion-fast) var(--gw-motion-easing); } /* A slight press, so a click feels physical */ .button:active { scale: 0.97; } .button:hover { background: color-mix(in oklch, var(--gw-button-tone) 16%, transparent); } .button:active { background: color-mix(in oklch, var(--gw-button-tone) 24%, transparent); } /* A solid fill, with text that flips between black and white by the fill's lightness so it reads on every theme's colors */ :host([appearance=\"accent\"]) .button { color: oklch( from var(--gw-button-tone) clamp(0, (0.66 - l) * 1000, 1) 0 0 ); background: var(--gw-button-tone); } :host([appearance=\"accent\"]) .button:hover { background: oklch( from var(--gw-button-tone) calc(l + (0.6 - l) * 0.2) c h ); } :host([appearance=\"accent\"]) .button:active { background: oklch( from var(--gw-button-tone) calc(l + (0.6 - l) * 0.35) c h ); } /* The tint lowers the tone's contrast, so the text leans toward the strongest text color to stay readable on it */ :host([appearance=\"filled\"]) .button { color: var( --gw-button-ink, color-mix( in oklch, var(--gw-button-tone) 70%, var(--gw-color-text-strong) ) ); background: color-mix(in oklch, var(--gw-button-tone) 16%, transparent); } :host([appearance=\"filled\"]) .button:hover { background: color-mix(in oklch, var(--gw-button-tone) 24%, transparent); } :host([appearance=\"filled\"]) .button:active { background: color-mix(in oklch, var(--gw-button-tone) 32%, transparent); } :host([appearance=\"outlined\"]) .button { border-color: var(--gw-button-tone); } /* A slotted link carries the text; the pill draws its focus ring */ ::slotted(a) { color: inherit; text-decoration: none; outline: none; } .button.focused { outline: var(--gw-focus-width) solid var(--gw-color-focus); outline-offset: var(--gw-focus-offset); } :host([appearance=\"plain\"]) .button.current, :host([appearance=\"outlined\"]) .button.current { background: color-mix(in oklch, var(--gw-button-tone) 16%, transparent); } :host([appearance=\"filled\"]) .button.current { background: color-mix(in oklch, var(--gw-button-tone) 32%, transparent); } .button:disabled, .button[aria-disabled=\"true\"] { color: var(--gw-color-text-disabled); pointer-events: none; cursor: not-allowed; background: var(--gw-color-fill-neutral-disabled); border-color: transparent; } :host([appearance=\"plain\"]) .button:disabled, :host([appearance=\"plain\"]) .button[aria-disabled=\"true\"] { background: transparent; } ::slotted([slot=\"icon\"]), .icon { flex: none; width: var(--gw-icon-size); height: var(--gw-icon-size); fill: currentColor; } /* The icon and the ring share one cell and crossfade */ .lead { display: grid; place-items: center; } .lead > * { grid-area: 1 / 1; } .lead > *, .text, .ring { transition: opacity var(--gw-motion-normal) cubic-bezier(0.4, 0, 0.2, 1); } /* Sized to the icon's drawn area, which is inset in its 24px box */ .ring { width: calc(var(--gw-icon-size) * 0.8); height: calc(var(--gw-icon-size) * 0.8); border: calc(2px * var(--gw-scale)) solid color-mix(in oklch, currentColor 25%, transparent); border-top-color: currentColor; border-radius: 50%; opacity: 0; animation: spin 0.9s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Without an icon, the ring sits over the hidden text */ .ring.over { position: absolute; inset: 0; margin: auto; } :host([loading]) .button { cursor: progress; } :host([loading]) .lead > .ring, :host([loading]) .button:not(.has-icon) > .ring.over { opacity: 1; } :host([loading]) .lead > :not(.ring), :host([loading]) .button:not(.has-icon) > .text { opacity: 0; } .button:not(.has-icon) > .lead { display: none; } /* Icon only, to save space: square, with the text kept for assistive technology. auto does this on narrow screens */ :host([labels=\"hide\"]) .button.has-icon { min-width: calc(2.5rem * var(--gw-scale)); padding: 0; } :host([labels=\"hide\"]) .has-icon .text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } @media (width < 40rem) { :host([labels=\"auto\"]) .button.has-icon { min-width: calc(2.5rem * var(--gw-scale)); padding: 0; } :host([labels=\"auto\"]) .has-icon .text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } } `, ]",
|
|
3020
3122
|
"inheritedFrom": {
|
|
3021
3123
|
"name": "GwElement",
|
|
3022
3124
|
"module": "src/element.ts"
|
|
@@ -3140,9 +3242,20 @@
|
|
|
3140
3242
|
"name": "#control",
|
|
3141
3243
|
"privacy": "private",
|
|
3142
3244
|
"type": {
|
|
3143
|
-
"text": "HTMLButtonElement | HTMLAnchorElement"
|
|
3245
|
+
"text": "HTMLButtonElement | HTMLAnchorElement | HTMLSpanElement"
|
|
3144
3246
|
}
|
|
3145
3247
|
},
|
|
3248
|
+
{
|
|
3249
|
+
"kind": "method",
|
|
3250
|
+
"name": "#link",
|
|
3251
|
+
"privacy": "private",
|
|
3252
|
+
"return": {
|
|
3253
|
+
"type": {
|
|
3254
|
+
"text": "HTMLAnchorElement | null"
|
|
3255
|
+
}
|
|
3256
|
+
},
|
|
3257
|
+
"description": "A plain `<a>` the page put inside, which the button wraps instead of `href`."
|
|
3258
|
+
},
|
|
3146
3259
|
{
|
|
3147
3260
|
"kind": "method",
|
|
3148
3261
|
"name": "create",
|
|
@@ -3545,6 +3658,18 @@
|
|
|
3545
3658
|
{
|
|
3546
3659
|
"description": "The card's surface.",
|
|
3547
3660
|
"name": "card"
|
|
3661
|
+
},
|
|
3662
|
+
{
|
|
3663
|
+
"description": "The row with the heading and actions.",
|
|
3664
|
+
"name": "header"
|
|
3665
|
+
},
|
|
3666
|
+
{
|
|
3667
|
+
"description": "The heading.",
|
|
3668
|
+
"name": "heading"
|
|
3669
|
+
},
|
|
3670
|
+
{
|
|
3671
|
+
"description": "The content.",
|
|
3672
|
+
"name": "body"
|
|
3548
3673
|
}
|
|
3549
3674
|
],
|
|
3550
3675
|
"slots": [
|
|
@@ -5144,6 +5269,16 @@
|
|
|
5144
5269
|
"kind": "class",
|
|
5145
5270
|
"description": "A short status or category, tinted by its `tone`. While `loading`, a\nskeleton stands in for its text, and the text fades in once it's loaded.",
|
|
5146
5271
|
"name": "GwChip",
|
|
5272
|
+
"cssProperties": [
|
|
5273
|
+
{
|
|
5274
|
+
"description": "The tint, for a tone of your own. `tone` sets it.",
|
|
5275
|
+
"name": "--gw-tone-fill"
|
|
5276
|
+
},
|
|
5277
|
+
{
|
|
5278
|
+
"description": "The border. `tone` sets it.",
|
|
5279
|
+
"name": "--gw-tone-border"
|
|
5280
|
+
}
|
|
5281
|
+
],
|
|
5147
5282
|
"cssParts": [
|
|
5148
5283
|
{
|
|
5149
5284
|
"description": "The chip.",
|
|
@@ -5599,6 +5734,20 @@
|
|
|
5599
5734
|
"kind": "class",
|
|
5600
5735
|
"description": "A command menu on Cmd+K or Ctrl+K: a searchable list of commands in a\nmodal near the top of the page, or a bottom sheet on phones. Picking one\ncloses the menu and fires `pick` with its value. Esc or a click outside\ncloses it. It won't open over another dialog, so only one overlay shows at\na time. Set `shortcut=\"none\"` to open it only with `show()`.",
|
|
5601
5736
|
"name": "GwCommandMenu",
|
|
5737
|
+
"cssParts": [
|
|
5738
|
+
{
|
|
5739
|
+
"description": "The menu's surface.",
|
|
5740
|
+
"name": "dialog"
|
|
5741
|
+
},
|
|
5742
|
+
{
|
|
5743
|
+
"description": "The `gw-option-list` of commands.",
|
|
5744
|
+
"name": "list"
|
|
5745
|
+
},
|
|
5746
|
+
{
|
|
5747
|
+
"description": "The row of key hints.",
|
|
5748
|
+
"name": "footer"
|
|
5749
|
+
}
|
|
5750
|
+
],
|
|
5602
5751
|
"members": [
|
|
5603
5752
|
{
|
|
5604
5753
|
"kind": "field",
|
|
@@ -6079,6 +6228,28 @@
|
|
|
6079
6228
|
"kind": "class",
|
|
6080
6229
|
"description": "A modal on the native `<dialog>`, so focus is trapped and returned, Esc\ncloses it and the page behind is inert. Open it with `show()`. Put buttons\nin the `actions` slot; a click on one with a `value` closes the dialog with\nthat value, and fires `close`.",
|
|
6081
6230
|
"name": "GwDialog",
|
|
6231
|
+
"cssParts": [
|
|
6232
|
+
{
|
|
6233
|
+
"description": "The dialog's surface.",
|
|
6234
|
+
"name": "dialog"
|
|
6235
|
+
},
|
|
6236
|
+
{
|
|
6237
|
+
"description": "The row with the heading and close button.",
|
|
6238
|
+
"name": "header"
|
|
6239
|
+
},
|
|
6240
|
+
{
|
|
6241
|
+
"description": "The heading.",
|
|
6242
|
+
"name": "heading"
|
|
6243
|
+
},
|
|
6244
|
+
{
|
|
6245
|
+
"description": "The content.",
|
|
6246
|
+
"name": "body"
|
|
6247
|
+
},
|
|
6248
|
+
{
|
|
6249
|
+
"description": "The actions row.",
|
|
6250
|
+
"name": "footer"
|
|
6251
|
+
}
|
|
6252
|
+
],
|
|
6082
6253
|
"slots": [
|
|
6083
6254
|
{
|
|
6084
6255
|
"description": "The content.",
|
|
@@ -6580,6 +6751,12 @@
|
|
|
6580
6751
|
"kind": "class",
|
|
6581
6752
|
"description": "A small status dot. Give it a `label`, such as \"Online\", unless text\nbeside it already says the same.",
|
|
6582
6753
|
"name": "GwDot",
|
|
6754
|
+
"cssProperties": [
|
|
6755
|
+
{
|
|
6756
|
+
"description": "The color, for a tone of your own. `tone` sets it.",
|
|
6757
|
+
"name": "--gw-tone"
|
|
6758
|
+
}
|
|
6759
|
+
],
|
|
6583
6760
|
"members": [
|
|
6584
6761
|
{
|
|
6585
6762
|
"kind": "field",
|
|
@@ -7436,6 +7613,14 @@
|
|
|
7436
7613
|
"description": "The summary row.",
|
|
7437
7614
|
"name": "summary"
|
|
7438
7615
|
},
|
|
7616
|
+
{
|
|
7617
|
+
"description": "The heading.",
|
|
7618
|
+
"name": "heading"
|
|
7619
|
+
},
|
|
7620
|
+
{
|
|
7621
|
+
"description": "The line under the heading.",
|
|
7622
|
+
"name": "description"
|
|
7623
|
+
},
|
|
7439
7624
|
{
|
|
7440
7625
|
"description": "The content's wrapper.",
|
|
7441
7626
|
"name": "content"
|
|
@@ -7898,6 +8083,20 @@
|
|
|
7898
8083
|
"kind": "class",
|
|
7899
8084
|
"description": "Label and value pairs, as a description list. While `loading`, `rows`\nskeleton pairs stand in for them, keeping any labels already known. The\nlist glides to its new height and the values fade in once they've loaded.",
|
|
7900
8085
|
"name": "GwFacts",
|
|
8086
|
+
"cssParts": [
|
|
8087
|
+
{
|
|
8088
|
+
"description": "The description list.",
|
|
8089
|
+
"name": "list"
|
|
8090
|
+
},
|
|
8091
|
+
{
|
|
8092
|
+
"description": "Each label.",
|
|
8093
|
+
"name": "label"
|
|
8094
|
+
},
|
|
8095
|
+
{
|
|
8096
|
+
"description": "Each value.",
|
|
8097
|
+
"name": "value"
|
|
8098
|
+
}
|
|
8099
|
+
],
|
|
7901
8100
|
"members": [
|
|
7902
8101
|
{
|
|
7903
8102
|
"kind": "field",
|
|
@@ -8789,6 +8988,28 @@
|
|
|
8789
8988
|
"name": "--gw-gauge-color"
|
|
8790
8989
|
}
|
|
8791
8990
|
],
|
|
8991
|
+
"cssParts": [
|
|
8992
|
+
{
|
|
8993
|
+
"description": "The dial, with the arc and the reading.",
|
|
8994
|
+
"name": "dial"
|
|
8995
|
+
},
|
|
8996
|
+
{
|
|
8997
|
+
"description": "The reading's number.",
|
|
8998
|
+
"name": "value"
|
|
8999
|
+
},
|
|
9000
|
+
{
|
|
9001
|
+
"description": "The unit after it.",
|
|
9002
|
+
"name": "unit"
|
|
9003
|
+
},
|
|
9004
|
+
{
|
|
9005
|
+
"description": "What it measures.",
|
|
9006
|
+
"name": "label"
|
|
9007
|
+
},
|
|
9008
|
+
{
|
|
9009
|
+
"description": "The line under the label.",
|
|
9010
|
+
"name": "caption"
|
|
9011
|
+
}
|
|
9012
|
+
],
|
|
8792
9013
|
"members": [
|
|
8793
9014
|
{
|
|
8794
9015
|
"kind": "field",
|
|
@@ -10516,6 +10737,24 @@
|
|
|
10516
10737
|
"kind": "class",
|
|
10517
10738
|
"description": "A labeled bar for a value in a range, such as disk use. Past `high` it\nturns warning, and past `critical` danger, unless a `tone` is set. While\n`loading`, the track pulses and a skeleton stands in for the value.",
|
|
10518
10739
|
"name": "GwMeter",
|
|
10740
|
+
"cssParts": [
|
|
10741
|
+
{
|
|
10742
|
+
"description": "The row with the label and value.",
|
|
10743
|
+
"name": "top"
|
|
10744
|
+
},
|
|
10745
|
+
{
|
|
10746
|
+
"description": "The value as shown.",
|
|
10747
|
+
"name": "value"
|
|
10748
|
+
},
|
|
10749
|
+
{
|
|
10750
|
+
"description": "The bar's track.",
|
|
10751
|
+
"name": "track"
|
|
10752
|
+
},
|
|
10753
|
+
{
|
|
10754
|
+
"description": "The filled part of the bar.",
|
|
10755
|
+
"name": "fill"
|
|
10756
|
+
}
|
|
10757
|
+
],
|
|
10519
10758
|
"members": [
|
|
10520
10759
|
{
|
|
10521
10760
|
"kind": "field",
|
|
@@ -11083,6 +11322,20 @@
|
|
|
11083
11322
|
"kind": "class",
|
|
11084
11323
|
"description": "Where notifications wait until they're dealt with: a list of\n`gw-notification` cards with Clear all, and an empty state once nothing's\nleft. Put it in a page, a panel or a popover from a bell button. Each\ncard folds away when dismissed, and the list closes up smoothly. It fires\n`clear` when Clear all is pressed.",
|
|
11085
11324
|
"name": "GwNotificationCenter",
|
|
11325
|
+
"cssParts": [
|
|
11326
|
+
{
|
|
11327
|
+
"description": "The row with the heading and Clear all.",
|
|
11328
|
+
"name": "header"
|
|
11329
|
+
},
|
|
11330
|
+
{
|
|
11331
|
+
"description": "The heading.",
|
|
11332
|
+
"name": "heading"
|
|
11333
|
+
},
|
|
11334
|
+
{
|
|
11335
|
+
"description": "The list of cards.",
|
|
11336
|
+
"name": "list"
|
|
11337
|
+
}
|
|
11338
|
+
],
|
|
11086
11339
|
"slots": [
|
|
11087
11340
|
{
|
|
11088
11341
|
"description": "The `gw-notification` cards.",
|
|
@@ -11536,6 +11789,12 @@
|
|
|
11536
11789
|
"kind": "class",
|
|
11537
11790
|
"description": "Something new the person needs to decide or know, kept in a\n`gw-notification-center` until it's dealt with. It has an icon, a heading,\na line of text, when it happened and up to two actions. Its close button\ndismisses it: it fires `dismiss`, then folds away and removes itself,\nunless the event is cancelled.",
|
|
11538
11791
|
"name": "GwNotification",
|
|
11792
|
+
"cssProperties": [
|
|
11793
|
+
{
|
|
11794
|
+
"description": "The icon's color, for a tone of your own. `tone` sets it.",
|
|
11795
|
+
"name": "--gw-tone"
|
|
11796
|
+
}
|
|
11797
|
+
],
|
|
11539
11798
|
"cssParts": [
|
|
11540
11799
|
{
|
|
11541
11800
|
"description": "The card.",
|
|
@@ -12040,6 +12299,32 @@
|
|
|
12040
12299
|
"name": "--gw-option-list-height"
|
|
12041
12300
|
}
|
|
12042
12301
|
],
|
|
12302
|
+
"cssParts": [
|
|
12303
|
+
{
|
|
12304
|
+
"description": "The search field's row.",
|
|
12305
|
+
"name": "search"
|
|
12306
|
+
},
|
|
12307
|
+
{
|
|
12308
|
+
"description": "The scrolling list.",
|
|
12309
|
+
"name": "listbox"
|
|
12310
|
+
},
|
|
12311
|
+
{
|
|
12312
|
+
"description": "Each option.",
|
|
12313
|
+
"name": "option"
|
|
12314
|
+
},
|
|
12315
|
+
{
|
|
12316
|
+
"description": "Each group heading.",
|
|
12317
|
+
"name": "group"
|
|
12318
|
+
},
|
|
12319
|
+
{
|
|
12320
|
+
"description": "An option's second line.",
|
|
12321
|
+
"name": "description"
|
|
12322
|
+
},
|
|
12323
|
+
{
|
|
12324
|
+
"description": "The no matches line.",
|
|
12325
|
+
"name": "none"
|
|
12326
|
+
}
|
|
12327
|
+
],
|
|
12043
12328
|
"members": [
|
|
12044
12329
|
{
|
|
12045
12330
|
"kind": "field",
|
|
@@ -12749,6 +13034,20 @@
|
|
|
12749
13034
|
"kind": "class",
|
|
12750
13035
|
"description": "A page's title, with an optional icon tile and description, and its\ncontrols at the top right in the `actions` slot.",
|
|
12751
13036
|
"name": "GwPageHeader",
|
|
13037
|
+
"cssParts": [
|
|
13038
|
+
{
|
|
13039
|
+
"description": "The icon tile.",
|
|
13040
|
+
"name": "tile"
|
|
13041
|
+
},
|
|
13042
|
+
{
|
|
13043
|
+
"description": "The title.",
|
|
13044
|
+
"name": "heading"
|
|
13045
|
+
},
|
|
13046
|
+
{
|
|
13047
|
+
"description": "The line under the title.",
|
|
13048
|
+
"name": "description"
|
|
13049
|
+
}
|
|
13050
|
+
],
|
|
12752
13051
|
"slots": [
|
|
12753
13052
|
{
|
|
12754
13053
|
"description": "The page's controls.",
|
|
@@ -13193,6 +13492,30 @@
|
|
|
13193
13492
|
"kind": "class",
|
|
13194
13493
|
"description": "A confirmation, rename or small form that opens next to the button that\nasked for it, rather than as a dialog in the middle of the screen. On\nnarrow screens it's a bottom sheet. Opened without a button, such as after\na save, it sits in the middle like a dialog.\n\nIt's on the Popover API, in the top layer, and closes on Esc or a click\noutside. Open it with `show(anchor)`. Put buttons in the `actions` slot: a\nclick on one with a `value` closes it with that value, and fires `close`.\n`confirm` makes it an `alertdialog`, for a question that needs an answer.",
|
|
13195
13494
|
"name": "GwPopover",
|
|
13495
|
+
"cssProperties": [
|
|
13496
|
+
{
|
|
13497
|
+
"description": "Its width beside a button. Defaults to `20rem`.",
|
|
13498
|
+
"name": "--gw-popover-width"
|
|
13499
|
+
}
|
|
13500
|
+
],
|
|
13501
|
+
"cssParts": [
|
|
13502
|
+
{
|
|
13503
|
+
"description": "The popover's surface.",
|
|
13504
|
+
"name": "surface"
|
|
13505
|
+
},
|
|
13506
|
+
{
|
|
13507
|
+
"description": "The heading.",
|
|
13508
|
+
"name": "heading"
|
|
13509
|
+
},
|
|
13510
|
+
{
|
|
13511
|
+
"description": "The content.",
|
|
13512
|
+
"name": "body"
|
|
13513
|
+
},
|
|
13514
|
+
{
|
|
13515
|
+
"description": "The actions row.",
|
|
13516
|
+
"name": "footer"
|
|
13517
|
+
}
|
|
13518
|
+
],
|
|
13196
13519
|
"slots": [
|
|
13197
13520
|
{
|
|
13198
13521
|
"description": "The content.",
|
|
@@ -13224,7 +13547,7 @@
|
|
|
13224
13547
|
"text": "readonly CSSStyleSheet[]"
|
|
13225
13548
|
},
|
|
13226
13549
|
"static": true,
|
|
13227
|
-
"default": "[ base, dismissalStyles, css` [popover] { position: fixed; inset: unset; box-sizing: border-box; width: min(20rem, calc(100vw - 2 * ${gap}px)); padding: var(--gw-space-4); margin: 0; color: var(--gw-color-text-primary); background: var(--gw-color-surface-overlay); border: max(var(--gw-border-width), 1px) solid var(--gw-color-border-normal); border-radius: var(--gw-radius-panel); box-shadow: var(--gw-shadow-l); opacity: 0; scale: 0.96; transition: opacity var(--gw-motion-fast) var(--gw-motion-easing), scale var(--gw-motion-normal) var(--gw-motion-easing), translate var(--gw-motion-normal) var(--gw-motion-easing), display var(--gw-motion-normal) allow-discrete, overlay var(--gw-motion-normal) allow-discrete; } [popover]:popover-open { opacity: 1; scale: 1; } @starting-style { [popover]:popover-open { opacity: 0; scale: 0.96; } } /* Grows from the corner nearest the button */ [data-placement=\"below\"] { transform-origin: top right; } [data-placement=\"above\"] { transform-origin: bottom right; } [data-placement=\"below\"][data-side=\"start\"] { transform-origin: top left; } [data-placement=\"above\"][data-side=\"start\"] { transform-origin: bottom left; } [data-placement=\"center\"] { inset: 0; margin: auto; height: fit-content; } [data-placement=\"center\"]::backdrop { background: rgb(0 0 0 / 40%); } /* A bottom sheet on narrow screens, sliding up from the edge */ [data-placement=\"sheet\"] { inset: auto 0 0; width: 100%; max-width: none; padding-block-end: calc( var(--gw-space-4) + env(safe-area-inset-bottom) ); border-end-start-radius: 0; border-end-end-radius: 0; scale: 1; translate: 0 100%; } [data-placement=\"sheet\"]:popover-open { translate: 0 0; } @starting-style { [data-placement=\"sheet\"]:popover-open { translate: 0 100%; } } [data-placement=\"sheet\"]::backdrop { background: rgb(0 0 0 / 40%); } header { display: flex; gap: var(--gw-space-2); align-items: flex-start; margin: calc(var(--gw-space-2) * -1) calc(var(--gw-space-2) * -1) var(--gw-space-2) 0; } header .content { flex: 1; min-width: 0; padding-block-start: var(--gw-space-2); } h2 { margin: 0 0 var(--gw-space-2); font-size: var(--gw-font-size-m); font-weight: var(--gw-font-weight-strong); color: var(--gw-color-text-strong); } .body { font-size: var(--gw-font-size-s); } ::slotted(p) { margin: 0; } footer { display: flex; flex-wrap: wrap; gap: var(--gw-space-2); justify-content: flex-end; margin-block-start: var(--gw-space-4); } `, ]",
|
|
13550
|
+
"default": "[ base, dismissalStyles, css` [popover] { position: fixed; inset: unset; box-sizing: border-box; width: min(var(--gw-popover-width, 20rem), calc(100vw - 2 * ${gap}px)); padding: var(--gw-space-4); margin: 0; color: var(--gw-color-text-primary); background: var(--gw-color-surface-overlay); border: max(var(--gw-border-width), 1px) solid var(--gw-color-border-normal); border-radius: var(--gw-radius-panel); box-shadow: var(--gw-shadow-l); opacity: 0; scale: 0.96; transition: opacity var(--gw-motion-fast) var(--gw-motion-easing), scale var(--gw-motion-normal) var(--gw-motion-easing), translate var(--gw-motion-normal) var(--gw-motion-easing), display var(--gw-motion-normal) allow-discrete, overlay var(--gw-motion-normal) allow-discrete; } [popover]:popover-open { opacity: 1; scale: 1; } @starting-style { [popover]:popover-open { opacity: 0; scale: 0.96; } } /* Grows from the corner nearest the button */ [data-placement=\"below\"] { transform-origin: top right; } [data-placement=\"above\"] { transform-origin: bottom right; } [data-placement=\"below\"][data-side=\"start\"] { transform-origin: top left; } [data-placement=\"above\"][data-side=\"start\"] { transform-origin: bottom left; } [data-placement=\"center\"] { inset: 0; margin: auto; height: fit-content; } [data-placement=\"center\"]::backdrop { background: rgb(0 0 0 / 40%); } /* A bottom sheet on narrow screens, sliding up from the edge */ [data-placement=\"sheet\"] { inset: auto 0 0; width: 100%; max-width: none; padding-block-end: calc( var(--gw-space-4) + env(safe-area-inset-bottom) ); border-end-start-radius: 0; border-end-end-radius: 0; scale: 1; translate: 0 100%; } [data-placement=\"sheet\"]:popover-open { translate: 0 0; } @starting-style { [data-placement=\"sheet\"]:popover-open { translate: 0 100%; } } [data-placement=\"sheet\"]::backdrop { background: rgb(0 0 0 / 40%); } header { display: flex; gap: var(--gw-space-2); align-items: flex-start; margin: calc(var(--gw-space-2) * -1) calc(var(--gw-space-2) * -1) var(--gw-space-2) 0; } header .content { flex: 1; min-width: 0; padding-block-start: var(--gw-space-2); } h2 { margin: 0 0 var(--gw-space-2); font-size: var(--gw-font-size-m); font-weight: var(--gw-font-weight-strong); color: var(--gw-color-text-strong); } .body { font-size: var(--gw-font-size-s); } ::slotted(p) { margin: 0; } footer { display: flex; flex-wrap: wrap; gap: var(--gw-space-2); justify-content: flex-end; margin-block-start: var(--gw-space-4); } `, ]",
|
|
13228
13551
|
"inheritedFrom": {
|
|
13229
13552
|
"name": "GwElement",
|
|
13230
13553
|
"module": "src/element.ts"
|
|
@@ -13726,6 +14049,12 @@
|
|
|
13726
14049
|
"kind": "class",
|
|
13727
14050
|
"description": "A small heading between groups on a page, as an `<h2>` unless `level` says otherwise.",
|
|
13728
14051
|
"name": "GwSectionTitle",
|
|
14052
|
+
"cssParts": [
|
|
14053
|
+
{
|
|
14054
|
+
"description": "The heading.",
|
|
14055
|
+
"name": "heading"
|
|
14056
|
+
}
|
|
14057
|
+
],
|
|
13729
14058
|
"slots": [
|
|
13730
14059
|
{
|
|
13731
14060
|
"description": "The heading text.",
|
|
@@ -14127,6 +14456,10 @@
|
|
|
14127
14456
|
"description": "Picks one of a few options, as a row of native radio buttons, so arrow\nkeys move between them and a form submits the choice. Fires `change`.\n\nOptions can carry icons, as Home Assistant's toggles do. `labels` decides\nwhether their text shows: `show` (the default), `hide` (icons only, with\nthe text as a tooltip and accessible name) or `auto`, which shows the text\non wide screens and only the icons on narrow ones.",
|
|
14128
14457
|
"name": "GwSegmented",
|
|
14129
14458
|
"cssParts": [
|
|
14459
|
+
{
|
|
14460
|
+
"description": "Each option.",
|
|
14461
|
+
"name": "option"
|
|
14462
|
+
},
|
|
14130
14463
|
{
|
|
14131
14464
|
"description": "The pill that slides to the chosen option.",
|
|
14132
14465
|
"name": "indicator"
|
|
@@ -16589,6 +16922,12 @@
|
|
|
16589
16922
|
"kind": "class",
|
|
16590
16923
|
"description": "Several lines of text, as a paragraph, with a shorter last line so it\ndoesn't read as a solid block.",
|
|
16591
16924
|
"name": "GwSkeletonLines",
|
|
16925
|
+
"cssParts": [
|
|
16926
|
+
{
|
|
16927
|
+
"description": "Each line.",
|
|
16928
|
+
"name": "line"
|
|
16929
|
+
}
|
|
16930
|
+
],
|
|
16592
16931
|
"members": [
|
|
16593
16932
|
{
|
|
16594
16933
|
"kind": "field",
|
|
@@ -17376,6 +17715,12 @@
|
|
|
17376
17715
|
"name": "--gw-spinner-size"
|
|
17377
17716
|
}
|
|
17378
17717
|
],
|
|
17718
|
+
"cssParts": [
|
|
17719
|
+
{
|
|
17720
|
+
"description": "The spinning ring.",
|
|
17721
|
+
"name": "ring"
|
|
17722
|
+
}
|
|
17723
|
+
],
|
|
17379
17724
|
"members": [
|
|
17380
17725
|
{
|
|
17381
17726
|
"kind": "field",
|
|
@@ -17760,12 +18105,36 @@
|
|
|
17760
18105
|
},
|
|
17761
18106
|
{
|
|
17762
18107
|
"kind": "javascript-module",
|
|
17763
|
-
"path": "src/gw-theme-
|
|
18108
|
+
"path": "src/gw-theme-gallery.ts",
|
|
17764
18109
|
"declarations": [
|
|
17765
18110
|
{
|
|
17766
18111
|
"kind": "class",
|
|
17767
|
-
"description": "
|
|
17768
|
-
"name": "
|
|
18112
|
+
"description": "Picks a theme from a grid of cards, each a small picture of an app in that\ntheme's colors: a rail, a panel and the status tones. For a settings page,\nor inside `gw-theme-picker` with `gallery`.\n\nThemes with a `group` sit together under its name, and lone ones under\n\"Other\", so a family's light and dark variants line up. Previews draw in\n`mode`, or the mode of the page or themed container it sits in, from the\ntheme CSS already on the page, including a custom theme `pageTheme`\nimported. Call `refresh()` after that CSS changes.\n\nIt's a `<fieldset>` of native radio buttons, so arrow keys move the choice.\nIt fires `theme`.",
|
|
18113
|
+
"name": "GwThemeGallery",
|
|
18114
|
+
"cssProperties": [
|
|
18115
|
+
{
|
|
18116
|
+
"description": "The narrowest a card gets. Defaults to `9rem`.",
|
|
18117
|
+
"name": "--gw-theme-gallery-min"
|
|
18118
|
+
}
|
|
18119
|
+
],
|
|
18120
|
+
"cssParts": [
|
|
18121
|
+
{
|
|
18122
|
+
"description": "Each theme's card.",
|
|
18123
|
+
"name": "card"
|
|
18124
|
+
},
|
|
18125
|
+
{
|
|
18126
|
+
"description": "The picture of an app in the theme.",
|
|
18127
|
+
"name": "preview"
|
|
18128
|
+
},
|
|
18129
|
+
{
|
|
18130
|
+
"description": "The theme's name under it.",
|
|
18131
|
+
"name": "name"
|
|
18132
|
+
},
|
|
18133
|
+
{
|
|
18134
|
+
"description": "Each group's heading.",
|
|
18135
|
+
"name": "group"
|
|
18136
|
+
}
|
|
18137
|
+
],
|
|
17769
18138
|
"members": [
|
|
17770
18139
|
{
|
|
17771
18140
|
"kind": "field",
|
|
@@ -17774,7 +18143,7 @@
|
|
|
17774
18143
|
"text": "Properties"
|
|
17775
18144
|
},
|
|
17776
18145
|
"static": true,
|
|
17777
|
-
"default": "{
|
|
18146
|
+
"default": "{ label: {}, theme: { reflect: true }, themes: { type: \"json\" }, mode: { reflect: true }, }",
|
|
17778
18147
|
"inheritedFrom": {
|
|
17779
18148
|
"name": "GwElement",
|
|
17780
18149
|
"module": "src/element.ts"
|
|
@@ -17787,7 +18156,536 @@
|
|
|
17787
18156
|
"text": "readonly CSSStyleSheet[]"
|
|
17788
18157
|
},
|
|
17789
18158
|
"static": true,
|
|
17790
|
-
"default": "[ base, css` :host { display:
|
|
18159
|
+
"default": "[ base, css` :host { display: block; } fieldset { display: flex; flex-direction: column; gap: var(--gw-space-4); min-width: 0; padding: 0; margin: 0; border: 0; } legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } .group { display: grid; grid-template-columns: repeat( auto-fill, minmax(var(--gw-theme-gallery-min, 9rem), 1fr) ); gap: var(--gw-space-3); } .group-name { grid-column: 1 / -1; margin: 0; font-size: var(--gw-font-size-s); font-weight: var(--gw-font-weight-strong); color: var(--gw-color-text-secondary); text-transform: var(--gw-label-transform); letter-spacing: var(--gw-label-tracking); } label { position: relative; display: flex; flex-direction: column; gap: var(--gw-space-2); padding: var(--gw-space-2); cursor: pointer; background: var(--gw-color-surface-raised); border: 2px solid var(--gw-color-border-normal); border-radius: var(--gw-radius-panel); transition: border-color var(--gw-motion-fast) var(--gw-motion-easing), background-color var(--gw-motion-fast) var(--gw-motion-easing); } label:hover { border-color: var(--gw-color-border-accent); } label:has(input:checked) { background: var(--gw-color-fill-accent-quiet); border-color: var(--gw-color-accent); } label:has(input:focus-visible) { outline: var(--gw-focus-width) solid var(--gw-color-focus); outline-offset: var(--gw-focus-offset); } input { position: absolute; inset: 0; margin: 0; cursor: pointer; opacity: 0; } /* A small app in the theme's own colors */ .preview { display: grid; grid-template-columns: 22% 1fr; gap: 6px; height: 5.5rem; padding: 6px; background: var(--p-bg); border-radius: calc(var(--gw-radius-panel) - 2px); } .rail { display: flex; flex-direction: column; gap: 4px; padding: 4px; } .rail i { height: 5px; background: var(--p-muted); border-radius: 3px; opacity: 0.5; } .rail i:first-child { background: var(--p-accent); opacity: 1; } .panel { display: flex; flex-direction: column; gap: 5px; min-width: 0; padding: 6px; background: var(--p-surface); border: 1px solid var(--p-border); border-radius: min(var(--p-radius), 6px); } .line { width: 60%; height: 5px; background: var(--p-text); border-radius: 3px; } .line.short { width: 40%; background: var(--p-muted); } .bars { display: flex; flex: 1; gap: 3px; align-items: flex-end; } .bars i { flex: 1; border-radius: 2px 2px 0 0; } .name { display: flex; flex-direction: column; padding: 0 var(--gw-space-1) var(--gw-space-1); font-size: var(--gw-font-size-s); font-weight: var(--gw-font-weight-strong); color: var(--gw-color-text-strong); } .name small { font-size: var(--gw-font-size-xs); font-weight: normal; color: var(--gw-color-text-secondary); } label:has(input:checked) .name { color: var(--gw-color-accent); } .check { position: absolute; inset-block-start: var(--gw-space-3); inset-inline-end: var(--gw-space-3); display: none; place-items: center; width: 1.5rem; height: 1.5rem; color: var(--gw-color-on-accent); background: var(--gw-color-fill-accent-resting); border-radius: 50%; --gw-icon-size: 1rem; } label:has(input:checked) .check { display: grid; } `, ]",
|
|
18160
|
+
"inheritedFrom": {
|
|
18161
|
+
"name": "GwElement",
|
|
18162
|
+
"module": "src/element.ts"
|
|
18163
|
+
}
|
|
18164
|
+
},
|
|
18165
|
+
{
|
|
18166
|
+
"kind": "field",
|
|
18167
|
+
"name": "label",
|
|
18168
|
+
"type": {
|
|
18169
|
+
"text": "string"
|
|
18170
|
+
},
|
|
18171
|
+
"default": "\"Theme\""
|
|
18172
|
+
},
|
|
18173
|
+
{
|
|
18174
|
+
"kind": "field",
|
|
18175
|
+
"name": "theme",
|
|
18176
|
+
"type": {
|
|
18177
|
+
"text": "string"
|
|
18178
|
+
},
|
|
18179
|
+
"default": "\"\""
|
|
18180
|
+
},
|
|
18181
|
+
{
|
|
18182
|
+
"kind": "field",
|
|
18183
|
+
"name": "themes",
|
|
18184
|
+
"type": {
|
|
18185
|
+
"text": "readonly OptionItem[]"
|
|
18186
|
+
},
|
|
18187
|
+
"default": "[]"
|
|
18188
|
+
},
|
|
18189
|
+
{
|
|
18190
|
+
"kind": "field",
|
|
18191
|
+
"name": "mode",
|
|
18192
|
+
"type": {
|
|
18193
|
+
"text": "string"
|
|
18194
|
+
},
|
|
18195
|
+
"default": "\"\""
|
|
18196
|
+
},
|
|
18197
|
+
{
|
|
18198
|
+
"kind": "field",
|
|
18199
|
+
"name": "#legend",
|
|
18200
|
+
"privacy": "private",
|
|
18201
|
+
"readonly": true
|
|
18202
|
+
},
|
|
18203
|
+
{
|
|
18204
|
+
"kind": "field",
|
|
18205
|
+
"name": "#fieldset",
|
|
18206
|
+
"privacy": "private",
|
|
18207
|
+
"readonly": true
|
|
18208
|
+
},
|
|
18209
|
+
{
|
|
18210
|
+
"kind": "field",
|
|
18211
|
+
"name": "#name",
|
|
18212
|
+
"privacy": "private",
|
|
18213
|
+
"readonly": true,
|
|
18214
|
+
"default": "`gw-theme-gallery-${Math.random().toString(36).slice(2)}`"
|
|
18215
|
+
},
|
|
18216
|
+
{
|
|
18217
|
+
"kind": "field",
|
|
18218
|
+
"name": "#cards",
|
|
18219
|
+
"privacy": "private",
|
|
18220
|
+
"type": {
|
|
18221
|
+
"text": "{\n input: HTMLInputElement;\n preview: HTMLElement;\n id: string;\n }[]"
|
|
18222
|
+
},
|
|
18223
|
+
"default": "[]"
|
|
18224
|
+
},
|
|
18225
|
+
{
|
|
18226
|
+
"kind": "field",
|
|
18227
|
+
"name": "#scheme",
|
|
18228
|
+
"privacy": "private",
|
|
18229
|
+
"readonly": true
|
|
18230
|
+
},
|
|
18231
|
+
{
|
|
18232
|
+
"kind": "field",
|
|
18233
|
+
"name": "#onScheme",
|
|
18234
|
+
"privacy": "private",
|
|
18235
|
+
"readonly": true
|
|
18236
|
+
},
|
|
18237
|
+
{
|
|
18238
|
+
"kind": "field",
|
|
18239
|
+
"name": "#modeRoot",
|
|
18240
|
+
"privacy": "private",
|
|
18241
|
+
"readonly": true,
|
|
18242
|
+
"default": "new MutationObserver(() => { if (!this.mode) this.refresh(); })"
|
|
18243
|
+
},
|
|
18244
|
+
{
|
|
18245
|
+
"kind": "method",
|
|
18246
|
+
"name": "#mode",
|
|
18247
|
+
"privacy": "private",
|
|
18248
|
+
"description": "`mode`, or the mode of the page or themed container around it."
|
|
18249
|
+
},
|
|
18250
|
+
{
|
|
18251
|
+
"kind": "method",
|
|
18252
|
+
"name": "refresh",
|
|
18253
|
+
"description": "Redraws the previews from the page's theme CSS, such as after an import."
|
|
18254
|
+
},
|
|
18255
|
+
{
|
|
18256
|
+
"kind": "method",
|
|
18257
|
+
"name": "#card",
|
|
18258
|
+
"privacy": "private",
|
|
18259
|
+
"parameters": [
|
|
18260
|
+
{
|
|
18261
|
+
"name": "theme",
|
|
18262
|
+
"type": {
|
|
18263
|
+
"text": "OptionItem"
|
|
18264
|
+
}
|
|
18265
|
+
},
|
|
18266
|
+
{
|
|
18267
|
+
"name": "inOther",
|
|
18268
|
+
"type": {
|
|
18269
|
+
"text": "boolean"
|
|
18270
|
+
}
|
|
18271
|
+
}
|
|
18272
|
+
]
|
|
18273
|
+
},
|
|
18274
|
+
{
|
|
18275
|
+
"kind": "method",
|
|
18276
|
+
"name": "create",
|
|
18277
|
+
"privacy": "protected",
|
|
18278
|
+
"parameters": [
|
|
18279
|
+
{
|
|
18280
|
+
"name": "root",
|
|
18281
|
+
"type": {
|
|
18282
|
+
"text": "ShadowRoot"
|
|
18283
|
+
}
|
|
18284
|
+
}
|
|
18285
|
+
],
|
|
18286
|
+
"description": "Builds the shadow root's content once, on first connection.",
|
|
18287
|
+
"inheritedFrom": {
|
|
18288
|
+
"name": "GwElement",
|
|
18289
|
+
"module": "src/element.ts"
|
|
18290
|
+
}
|
|
18291
|
+
},
|
|
18292
|
+
{
|
|
18293
|
+
"kind": "method",
|
|
18294
|
+
"name": "update",
|
|
18295
|
+
"privacy": "protected",
|
|
18296
|
+
"parameters": [
|
|
18297
|
+
{
|
|
18298
|
+
"name": "changed",
|
|
18299
|
+
"type": {
|
|
18300
|
+
"text": "ReadonlySet<string>"
|
|
18301
|
+
}
|
|
18302
|
+
}
|
|
18303
|
+
],
|
|
18304
|
+
"description": "Sets what the changed properties affect.",
|
|
18305
|
+
"inheritedFrom": {
|
|
18306
|
+
"name": "GwElement",
|
|
18307
|
+
"module": "src/element.ts"
|
|
18308
|
+
}
|
|
18309
|
+
},
|
|
18310
|
+
{
|
|
18311
|
+
"kind": "field",
|
|
18312
|
+
"name": "shadow",
|
|
18313
|
+
"type": {
|
|
18314
|
+
"text": "boolean"
|
|
18315
|
+
},
|
|
18316
|
+
"static": true,
|
|
18317
|
+
"default": "true",
|
|
18318
|
+
"description": "Whether to attach a shadow root. Light DOM elements set this false.",
|
|
18319
|
+
"inheritedFrom": {
|
|
18320
|
+
"name": "GwElement",
|
|
18321
|
+
"module": "src/element.ts"
|
|
18322
|
+
}
|
|
18323
|
+
},
|
|
18324
|
+
{
|
|
18325
|
+
"kind": "field",
|
|
18326
|
+
"name": "shadowRootOptions",
|
|
18327
|
+
"type": {
|
|
18328
|
+
"text": "ShadowRootInit"
|
|
18329
|
+
},
|
|
18330
|
+
"static": true,
|
|
18331
|
+
"default": "{ mode: \"open\" }",
|
|
18332
|
+
"description": "How the shadow root is attached.",
|
|
18333
|
+
"inheritedFrom": {
|
|
18334
|
+
"name": "GwElement",
|
|
18335
|
+
"module": "src/element.ts"
|
|
18336
|
+
}
|
|
18337
|
+
},
|
|
18338
|
+
{
|
|
18339
|
+
"kind": "method",
|
|
18340
|
+
"name": "define",
|
|
18341
|
+
"static": true,
|
|
18342
|
+
"parameters": [
|
|
18343
|
+
{
|
|
18344
|
+
"name": "tag",
|
|
18345
|
+
"type": {
|
|
18346
|
+
"text": "string"
|
|
18347
|
+
}
|
|
18348
|
+
}
|
|
18349
|
+
],
|
|
18350
|
+
"description": "Adds the property accessors, then defines the element.",
|
|
18351
|
+
"inheritedFrom": {
|
|
18352
|
+
"name": "GwElement",
|
|
18353
|
+
"module": "src/element.ts"
|
|
18354
|
+
}
|
|
18355
|
+
},
|
|
18356
|
+
{
|
|
18357
|
+
"kind": "field",
|
|
18358
|
+
"name": "#values",
|
|
18359
|
+
"privacy": "private",
|
|
18360
|
+
"readonly": true,
|
|
18361
|
+
"default": "new Map<string, PropertyValue>()",
|
|
18362
|
+
"inheritedFrom": {
|
|
18363
|
+
"name": "GwElement",
|
|
18364
|
+
"module": "src/element.ts"
|
|
18365
|
+
}
|
|
18366
|
+
},
|
|
18367
|
+
{
|
|
18368
|
+
"kind": "field",
|
|
18369
|
+
"name": "#defaults",
|
|
18370
|
+
"privacy": "private",
|
|
18371
|
+
"readonly": true,
|
|
18372
|
+
"default": "new Map<string, PropertyValue>()",
|
|
18373
|
+
"inheritedFrom": {
|
|
18374
|
+
"name": "GwElement",
|
|
18375
|
+
"module": "src/element.ts"
|
|
18376
|
+
}
|
|
18377
|
+
},
|
|
18378
|
+
{
|
|
18379
|
+
"kind": "field",
|
|
18380
|
+
"name": "#changed",
|
|
18381
|
+
"privacy": "private",
|
|
18382
|
+
"readonly": true,
|
|
18383
|
+
"default": "new Set<string>()",
|
|
18384
|
+
"inheritedFrom": {
|
|
18385
|
+
"name": "GwElement",
|
|
18386
|
+
"module": "src/element.ts"
|
|
18387
|
+
}
|
|
18388
|
+
},
|
|
18389
|
+
{
|
|
18390
|
+
"kind": "field",
|
|
18391
|
+
"name": "#unreflected",
|
|
18392
|
+
"privacy": "private",
|
|
18393
|
+
"readonly": true,
|
|
18394
|
+
"default": "new Set<string>()",
|
|
18395
|
+
"inheritedFrom": {
|
|
18396
|
+
"name": "GwElement",
|
|
18397
|
+
"module": "src/element.ts"
|
|
18398
|
+
}
|
|
18399
|
+
},
|
|
18400
|
+
{
|
|
18401
|
+
"kind": "field",
|
|
18402
|
+
"name": "#created",
|
|
18403
|
+
"privacy": "private",
|
|
18404
|
+
"type": {
|
|
18405
|
+
"text": "boolean"
|
|
18406
|
+
},
|
|
18407
|
+
"default": "false",
|
|
18408
|
+
"inheritedFrom": {
|
|
18409
|
+
"name": "GwElement",
|
|
18410
|
+
"module": "src/element.ts"
|
|
18411
|
+
}
|
|
18412
|
+
},
|
|
18413
|
+
{
|
|
18414
|
+
"kind": "field",
|
|
18415
|
+
"name": "#queued",
|
|
18416
|
+
"privacy": "private",
|
|
18417
|
+
"type": {
|
|
18418
|
+
"text": "boolean"
|
|
18419
|
+
},
|
|
18420
|
+
"default": "false",
|
|
18421
|
+
"inheritedFrom": {
|
|
18422
|
+
"name": "GwElement",
|
|
18423
|
+
"module": "src/element.ts"
|
|
18424
|
+
}
|
|
18425
|
+
},
|
|
18426
|
+
{
|
|
18427
|
+
"kind": "field",
|
|
18428
|
+
"name": "#pending",
|
|
18429
|
+
"privacy": "private",
|
|
18430
|
+
"type": {
|
|
18431
|
+
"text": "Promise<void> | undefined"
|
|
18432
|
+
},
|
|
18433
|
+
"inheritedFrom": {
|
|
18434
|
+
"name": "GwElement",
|
|
18435
|
+
"module": "src/element.ts"
|
|
18436
|
+
}
|
|
18437
|
+
},
|
|
18438
|
+
{
|
|
18439
|
+
"kind": "field",
|
|
18440
|
+
"name": "#reflecting",
|
|
18441
|
+
"privacy": "private",
|
|
18442
|
+
"type": {
|
|
18443
|
+
"text": "boolean"
|
|
18444
|
+
},
|
|
18445
|
+
"default": "false",
|
|
18446
|
+
"inheritedFrom": {
|
|
18447
|
+
"name": "GwElement",
|
|
18448
|
+
"module": "src/element.ts"
|
|
18449
|
+
}
|
|
18450
|
+
},
|
|
18451
|
+
{
|
|
18452
|
+
"kind": "field",
|
|
18453
|
+
"name": "#resolveUpdated",
|
|
18454
|
+
"privacy": "private",
|
|
18455
|
+
"type": {
|
|
18456
|
+
"text": "() => void"
|
|
18457
|
+
},
|
|
18458
|
+
"inheritedFrom": {
|
|
18459
|
+
"name": "GwElement",
|
|
18460
|
+
"module": "src/element.ts"
|
|
18461
|
+
}
|
|
18462
|
+
},
|
|
18463
|
+
{
|
|
18464
|
+
"kind": "field",
|
|
18465
|
+
"name": "#updated",
|
|
18466
|
+
"privacy": "private",
|
|
18467
|
+
"readonly": true,
|
|
18468
|
+
"default": "new Promise<void>((resolve) => { this.#resolveUpdated = resolve; })",
|
|
18469
|
+
"inheritedFrom": {
|
|
18470
|
+
"name": "GwElement",
|
|
18471
|
+
"module": "src/element.ts"
|
|
18472
|
+
}
|
|
18473
|
+
},
|
|
18474
|
+
{
|
|
18475
|
+
"kind": "field",
|
|
18476
|
+
"name": "renderRoot",
|
|
18477
|
+
"type": {
|
|
18478
|
+
"text": "ShadowRoot | HTMLElement"
|
|
18479
|
+
},
|
|
18480
|
+
"readonly": true,
|
|
18481
|
+
"description": "The shadow root, or the element itself for a light DOM element.",
|
|
18482
|
+
"inheritedFrom": {
|
|
18483
|
+
"name": "GwElement",
|
|
18484
|
+
"module": "src/element.ts"
|
|
18485
|
+
}
|
|
18486
|
+
},
|
|
18487
|
+
{
|
|
18488
|
+
"kind": "field",
|
|
18489
|
+
"name": "#own",
|
|
18490
|
+
"privacy": "private",
|
|
18491
|
+
"type": {
|
|
18492
|
+
"text": "typeof GwElement"
|
|
18493
|
+
},
|
|
18494
|
+
"readonly": true,
|
|
18495
|
+
"description": "The element's own class, for its static properties and styles.",
|
|
18496
|
+
"default": "new.target",
|
|
18497
|
+
"inheritedFrom": {
|
|
18498
|
+
"name": "GwElement",
|
|
18499
|
+
"module": "src/element.ts"
|
|
18500
|
+
}
|
|
18501
|
+
},
|
|
18502
|
+
{
|
|
18503
|
+
"kind": "field",
|
|
18504
|
+
"name": "updateComplete",
|
|
18505
|
+
"description": "Resolves once the pending update has run, or the first one before it connects.",
|
|
18506
|
+
"readonly": true,
|
|
18507
|
+
"inheritedFrom": {
|
|
18508
|
+
"name": "GwElement",
|
|
18509
|
+
"module": "src/element.ts"
|
|
18510
|
+
}
|
|
18511
|
+
},
|
|
18512
|
+
{
|
|
18513
|
+
"kind": "method",
|
|
18514
|
+
"name": "defaultOf",
|
|
18515
|
+
"privacy": "protected",
|
|
18516
|
+
"parameters": [
|
|
18517
|
+
{
|
|
18518
|
+
"name": "name",
|
|
18519
|
+
"type": {
|
|
18520
|
+
"text": "string"
|
|
18521
|
+
}
|
|
18522
|
+
}
|
|
18523
|
+
],
|
|
18524
|
+
"description": "The value a property returns to when its attribute is removed. Defaults\nto the value it was given in the constructor.",
|
|
18525
|
+
"inheritedFrom": {
|
|
18526
|
+
"name": "GwElement",
|
|
18527
|
+
"module": "src/element.ts"
|
|
18528
|
+
}
|
|
18529
|
+
},
|
|
18530
|
+
{
|
|
18531
|
+
"kind": "method",
|
|
18532
|
+
"name": "requestUpdate",
|
|
18533
|
+
"parameters": [
|
|
18534
|
+
{
|
|
18535
|
+
"name": "names",
|
|
18536
|
+
"type": {
|
|
18537
|
+
"text": "readonly string[]"
|
|
18538
|
+
}
|
|
18539
|
+
}
|
|
18540
|
+
],
|
|
18541
|
+
"description": "Asks for an update with the given properties marked as changed.",
|
|
18542
|
+
"inheritedFrom": {
|
|
18543
|
+
"name": "GwElement",
|
|
18544
|
+
"module": "src/element.ts"
|
|
18545
|
+
}
|
|
18546
|
+
},
|
|
18547
|
+
{
|
|
18548
|
+
"kind": "method",
|
|
18549
|
+
"name": "#flush",
|
|
18550
|
+
"privacy": "private",
|
|
18551
|
+
"inheritedFrom": {
|
|
18552
|
+
"name": "GwElement",
|
|
18553
|
+
"module": "src/element.ts"
|
|
18554
|
+
}
|
|
18555
|
+
},
|
|
18556
|
+
{
|
|
18557
|
+
"kind": "method",
|
|
18558
|
+
"name": "#setProperty",
|
|
18559
|
+
"privacy": "private",
|
|
18560
|
+
"parameters": [
|
|
18561
|
+
{
|
|
18562
|
+
"name": "name",
|
|
18563
|
+
"type": {
|
|
18564
|
+
"text": "string"
|
|
18565
|
+
}
|
|
18566
|
+
},
|
|
18567
|
+
{
|
|
18568
|
+
"name": "options",
|
|
18569
|
+
"type": {
|
|
18570
|
+
"text": "PropertyOptions"
|
|
18571
|
+
}
|
|
18572
|
+
},
|
|
18573
|
+
{
|
|
18574
|
+
"name": "value",
|
|
18575
|
+
"type": {
|
|
18576
|
+
"text": "PropertyValue"
|
|
18577
|
+
}
|
|
18578
|
+
}
|
|
18579
|
+
],
|
|
18580
|
+
"inheritedFrom": {
|
|
18581
|
+
"name": "GwElement",
|
|
18582
|
+
"module": "src/element.ts"
|
|
18583
|
+
}
|
|
18584
|
+
}
|
|
18585
|
+
],
|
|
18586
|
+
"events": [
|
|
18587
|
+
{
|
|
18588
|
+
"name": "theme",
|
|
18589
|
+
"type": {
|
|
18590
|
+
"text": "CustomEvent<{ id: string }>"
|
|
18591
|
+
},
|
|
18592
|
+
"description": "When a theme is picked."
|
|
18593
|
+
}
|
|
18594
|
+
],
|
|
18595
|
+
"attributes": [
|
|
18596
|
+
{
|
|
18597
|
+
"type": {
|
|
18598
|
+
"text": "string"
|
|
18599
|
+
},
|
|
18600
|
+
"description": "The group's accessible name. Defaults to `Theme`.",
|
|
18601
|
+
"name": "label"
|
|
18602
|
+
},
|
|
18603
|
+
{
|
|
18604
|
+
"type": {
|
|
18605
|
+
"text": "string"
|
|
18606
|
+
},
|
|
18607
|
+
"description": "The chosen theme, by id.",
|
|
18608
|
+
"name": "theme"
|
|
18609
|
+
},
|
|
18610
|
+
{
|
|
18611
|
+
"type": {
|
|
18612
|
+
"text": "OptionItem[]"
|
|
18613
|
+
},
|
|
18614
|
+
"description": "The themes, as JSON: `value` is the id, `label` the name, and `group` the family.",
|
|
18615
|
+
"name": "themes"
|
|
18616
|
+
},
|
|
18617
|
+
{
|
|
18618
|
+
"type": {
|
|
18619
|
+
"text": "\"auto\"|\"light\"|\"dark\"|\"darker\""
|
|
18620
|
+
},
|
|
18621
|
+
"description": "The mode the previews show. Defaults to the mode it sits in.",
|
|
18622
|
+
"name": "mode"
|
|
18623
|
+
}
|
|
18624
|
+
],
|
|
18625
|
+
"superclass": {
|
|
18626
|
+
"name": "GwElement",
|
|
18627
|
+
"module": "/src/element.js"
|
|
18628
|
+
},
|
|
18629
|
+
"tagName": "gw-theme-gallery",
|
|
18630
|
+
"customElement": true,
|
|
18631
|
+
"summary": "Picks a theme from cards that preview each one."
|
|
18632
|
+
}
|
|
18633
|
+
],
|
|
18634
|
+
"exports": [
|
|
18635
|
+
{
|
|
18636
|
+
"kind": "js",
|
|
18637
|
+
"name": "GwThemeGallery",
|
|
18638
|
+
"declaration": {
|
|
18639
|
+
"name": "GwThemeGallery",
|
|
18640
|
+
"module": "src/gw-theme-gallery.ts"
|
|
18641
|
+
}
|
|
18642
|
+
}
|
|
18643
|
+
]
|
|
18644
|
+
},
|
|
18645
|
+
{
|
|
18646
|
+
"kind": "javascript-module",
|
|
18647
|
+
"path": "src/gw-theme-picker.ts",
|
|
18648
|
+
"declarations": [
|
|
18649
|
+
{
|
|
18650
|
+
"kind": "class",
|
|
18651
|
+
"description": "A palette button for a page's look. It opens a popover with the mode\n(auto, light, dark or Darker), the theme, and buttons to import a theme\nfile (a Groundwork theme's `.json` or an Omarchy `colors.toml`) or reset.\n\nIt only asks: it fires `mode`, `theme`, `import` and `reset`, and the page\napplies them and sets `mode`, `theme` and `themes` back. `pageTheme` from\n`@timmo001/groundwork-tokens/page` does all of that. Show an import's\nresult, such as contrast misses, in `status`.\n\n`gallery` swaps the theme select for `gw-theme-gallery`'s cards, which\npreview each theme in the chosen mode.\n\n`layout` sets how it shows. `popover`, the default, is the palette button\nand its popover. `cycle` is one button showing the mode in use, which steps\nto the next mode on each press, for an app bar. `inline` lays the controls\nout in place, in one wrapping row with Reset and Import, for a footer or a\nsettings page; set `justify-content` on it to align the row. `modes` picks which modes it offers, such as `light dark` without\nAuto.",
|
|
18652
|
+
"name": "GwThemePicker",
|
|
18653
|
+
"cssParts": [
|
|
18654
|
+
{
|
|
18655
|
+
"description": "The theme gallery, with `gallery`.",
|
|
18656
|
+
"name": "gallery"
|
|
18657
|
+
},
|
|
18658
|
+
{
|
|
18659
|
+
"description": "The mode, theme and status.",
|
|
18660
|
+
"name": "controls"
|
|
18661
|
+
},
|
|
18662
|
+
{
|
|
18663
|
+
"description": "Reset and Import, with `inline`.",
|
|
18664
|
+
"name": "actions"
|
|
18665
|
+
}
|
|
18666
|
+
],
|
|
18667
|
+
"members": [
|
|
18668
|
+
{
|
|
18669
|
+
"kind": "field",
|
|
18670
|
+
"name": "properties",
|
|
18671
|
+
"type": {
|
|
18672
|
+
"text": "Properties"
|
|
18673
|
+
},
|
|
18674
|
+
"static": true,
|
|
18675
|
+
"default": "{ mode: { reflect: true }, theme: { reflect: true }, themes: { type: \"json\" }, gallery: { type: \"boolean\", reflect: true }, status: {}, label: {}, layout: { reflect: true }, modes: {}, }",
|
|
18676
|
+
"inheritedFrom": {
|
|
18677
|
+
"name": "GwElement",
|
|
18678
|
+
"module": "src/element.ts"
|
|
18679
|
+
}
|
|
18680
|
+
},
|
|
18681
|
+
{
|
|
18682
|
+
"kind": "field",
|
|
18683
|
+
"name": "styles",
|
|
18684
|
+
"type": {
|
|
18685
|
+
"text": "readonly CSSStyleSheet[]"
|
|
18686
|
+
},
|
|
18687
|
+
"static": true,
|
|
18688
|
+
"default": "[ base, css` :host { display: inline-block; } :host([gallery]) gw-popover { --gw-popover-width: 34rem; } .gallery { max-height: min(24rem, 50vh); overflow: auto; /* Room for the cards' focus rings */ padding: var(--gw-space-1); margin: calc(var(--gw-space-1) * -1); } .controls { display: flex; flex-direction: column; gap: var(--gw-space-4); margin-block-start: var(--gw-space-2); } .status { margin: 0; font-size: var(--gw-font-size-s); color: var(--gw-color-text-secondary); } /* One wrapping row: the controls, then Reset and Import. The host is the flex container, so a page can set its justify-content */ :host([layout=\"inline\"]) { display: flex; flex-wrap: wrap; gap: var(--gw-space-4); align-items: center; } :host([layout=\"inline\"]) .controls { flex-flow: row wrap; align-items: center; margin-block-start: 0; } .actions { display: flex; flex-wrap: wrap; gap: var(--gw-space-2); align-items: center; } `, ]",
|
|
17791
18689
|
"inheritedFrom": {
|
|
17792
18690
|
"name": "GwElement",
|
|
17793
18691
|
"module": "src/element.ts"
|
|
@@ -17817,6 +18715,14 @@
|
|
|
17817
18715
|
},
|
|
17818
18716
|
"default": "[]"
|
|
17819
18717
|
},
|
|
18718
|
+
{
|
|
18719
|
+
"kind": "field",
|
|
18720
|
+
"name": "gallery",
|
|
18721
|
+
"type": {
|
|
18722
|
+
"text": "boolean"
|
|
18723
|
+
},
|
|
18724
|
+
"default": "false"
|
|
18725
|
+
},
|
|
17820
18726
|
{
|
|
17821
18727
|
"kind": "field",
|
|
17822
18728
|
"name": "status",
|
|
@@ -17833,6 +18739,24 @@
|
|
|
17833
18739
|
},
|
|
17834
18740
|
"default": "\"Theme\""
|
|
17835
18741
|
},
|
|
18742
|
+
{
|
|
18743
|
+
"kind": "field",
|
|
18744
|
+
"name": "layout",
|
|
18745
|
+
"type": {
|
|
18746
|
+
"text": "\"popover\" | \"cycle\" | \"inline\""
|
|
18747
|
+
},
|
|
18748
|
+
"description": "How it shows: a button and popover, a button cycling the modes, or the controls in place.",
|
|
18749
|
+
"default": "\"popover\""
|
|
18750
|
+
},
|
|
18751
|
+
{
|
|
18752
|
+
"kind": "field",
|
|
18753
|
+
"name": "modes",
|
|
18754
|
+
"type": {
|
|
18755
|
+
"text": "string"
|
|
18756
|
+
},
|
|
18757
|
+
"description": "The modes to offer, in order and separated by spaces.",
|
|
18758
|
+
"default": "\"auto light dark darker\""
|
|
18759
|
+
},
|
|
17836
18760
|
{
|
|
17837
18761
|
"kind": "field",
|
|
17838
18762
|
"name": "#button",
|
|
@@ -17851,6 +18775,12 @@
|
|
|
17851
18775
|
"privacy": "private",
|
|
17852
18776
|
"readonly": true
|
|
17853
18777
|
},
|
|
18778
|
+
{
|
|
18779
|
+
"kind": "field",
|
|
18780
|
+
"name": "#gallery",
|
|
18781
|
+
"privacy": "private",
|
|
18782
|
+
"readonly": true
|
|
18783
|
+
},
|
|
17854
18784
|
{
|
|
17855
18785
|
"kind": "field",
|
|
17856
18786
|
"name": "#status",
|
|
@@ -17863,16 +18793,60 @@
|
|
|
17863
18793
|
"privacy": "private",
|
|
17864
18794
|
"readonly": true
|
|
17865
18795
|
},
|
|
18796
|
+
{
|
|
18797
|
+
"kind": "field",
|
|
18798
|
+
"name": "#controls",
|
|
18799
|
+
"privacy": "private",
|
|
18800
|
+
"readonly": true
|
|
18801
|
+
},
|
|
18802
|
+
{
|
|
18803
|
+
"kind": "field",
|
|
18804
|
+
"name": "#reset",
|
|
18805
|
+
"privacy": "private",
|
|
18806
|
+
"readonly": true
|
|
18807
|
+
},
|
|
18808
|
+
{
|
|
18809
|
+
"kind": "field",
|
|
18810
|
+
"name": "#import",
|
|
18811
|
+
"privacy": "private",
|
|
18812
|
+
"readonly": true
|
|
18813
|
+
},
|
|
17866
18814
|
{
|
|
17867
18815
|
"kind": "field",
|
|
17868
18816
|
"name": "#popover",
|
|
17869
18817
|
"privacy": "private",
|
|
17870
18818
|
"readonly": true
|
|
17871
18819
|
},
|
|
18820
|
+
{
|
|
18821
|
+
"kind": "field",
|
|
18822
|
+
"name": "#actions",
|
|
18823
|
+
"privacy": "private",
|
|
18824
|
+
"readonly": true
|
|
18825
|
+
},
|
|
18826
|
+
{
|
|
18827
|
+
"kind": "method",
|
|
18828
|
+
"name": "#offered",
|
|
18829
|
+
"privacy": "private",
|
|
18830
|
+
"description": "The modes on offer, in the order `modes` gives them."
|
|
18831
|
+
},
|
|
17872
18832
|
{
|
|
17873
18833
|
"kind": "method",
|
|
17874
18834
|
"name": "show",
|
|
17875
|
-
"description": "Opens the popover under the button."
|
|
18835
|
+
"description": "Opens the popover under the button, or with `cycle`, steps to the next mode."
|
|
18836
|
+
},
|
|
18837
|
+
{
|
|
18838
|
+
"kind": "method",
|
|
18839
|
+
"name": "#place",
|
|
18840
|
+
"privacy": "private",
|
|
18841
|
+
"parameters": [
|
|
18842
|
+
{
|
|
18843
|
+
"name": "root",
|
|
18844
|
+
"type": {
|
|
18845
|
+
"text": "ShadowRoot"
|
|
18846
|
+
}
|
|
18847
|
+
}
|
|
18848
|
+
],
|
|
18849
|
+
"description": "Puts the controls and their buttons in the popover, or in place for `inline`."
|
|
17876
18850
|
},
|
|
17877
18851
|
{
|
|
17878
18852
|
"kind": "method",
|
|
@@ -17917,7 +18891,7 @@
|
|
|
17917
18891
|
"privacy": "protected",
|
|
17918
18892
|
"parameters": [
|
|
17919
18893
|
{
|
|
17920
|
-
"name": "
|
|
18894
|
+
"name": "changed",
|
|
17921
18895
|
"type": {
|
|
17922
18896
|
"text": "ReadonlySet<string>"
|
|
17923
18897
|
}
|
|
@@ -18236,6 +19210,20 @@
|
|
|
18236
19210
|
}
|
|
18237
19211
|
],
|
|
18238
19212
|
"attributes": [
|
|
19213
|
+
{
|
|
19214
|
+
"type": {
|
|
19215
|
+
"text": "\"popover\"|\"cycle\"|\"inline\""
|
|
19216
|
+
},
|
|
19217
|
+
"description": "How it shows: a button and popover, a button cycling the modes, or the controls in place. Defaults to `popover`.",
|
|
19218
|
+
"name": "layout"
|
|
19219
|
+
},
|
|
19220
|
+
{
|
|
19221
|
+
"type": {
|
|
19222
|
+
"text": "string"
|
|
19223
|
+
},
|
|
19224
|
+
"description": "The modes to offer, in order and separated by spaces. Defaults to `auto light dark darker`.",
|
|
19225
|
+
"name": "modes"
|
|
19226
|
+
},
|
|
18239
19227
|
{
|
|
18240
19228
|
"type": {
|
|
18241
19229
|
"text": "\"auto\"|\"light\"|\"dark\"|\"darker\""
|
|
@@ -18254,9 +19242,16 @@
|
|
|
18254
19242
|
"type": {
|
|
18255
19243
|
"text": "OptionItem[]"
|
|
18256
19244
|
},
|
|
18257
|
-
"description": "The themes to offer, as JSON.",
|
|
19245
|
+
"description": "The themes to offer, as JSON. The select hides with fewer than two. With `gallery`, a `group` gathers a family's themes.",
|
|
18258
19246
|
"name": "themes"
|
|
18259
19247
|
},
|
|
19248
|
+
{
|
|
19249
|
+
"type": {
|
|
19250
|
+
"text": "boolean"
|
|
19251
|
+
},
|
|
19252
|
+
"description": "Shows the themes as preview cards rather than a select.",
|
|
19253
|
+
"name": "gallery"
|
|
19254
|
+
},
|
|
18260
19255
|
{
|
|
18261
19256
|
"type": {
|
|
18262
19257
|
"text": "string"
|
|
@@ -18268,7 +19263,7 @@
|
|
|
18268
19263
|
"type": {
|
|
18269
19264
|
"text": "string"
|
|
18270
19265
|
},
|
|
18271
|
-
"description": "The button's accessible name and the popover's heading. Defaults to `Theme`.",
|
|
19266
|
+
"description": "The button's accessible name and the popover's heading. Defaults to `Theme`. With `cycle`, the button's name also gives the mode in use.",
|
|
18272
19267
|
"name": "label"
|
|
18273
19268
|
}
|
|
18274
19269
|
],
|
|
@@ -18300,6 +19295,12 @@
|
|
|
18300
19295
|
"kind": "class",
|
|
18301
19296
|
"description": "Where toasts appear: the bottom corner on the end side, away from what\npeople click. Call `show(message, tone)`; each toast is announced politely\nand fades out after `duration` milliseconds.\n\nA toast only tells; it has no actions and lets every click through, since\nit may sit over something interactive and leaves before it can be used.\nIt's in the top layer and rises above any dialog each time one shows. It's\na last resort: show an outcome where it happened instead.",
|
|
18302
19297
|
"name": "GwToaster",
|
|
19298
|
+
"cssParts": [
|
|
19299
|
+
{
|
|
19300
|
+
"description": "Each toast.",
|
|
19301
|
+
"name": "toast"
|
|
19302
|
+
}
|
|
19303
|
+
],
|
|
18303
19304
|
"members": [
|
|
18304
19305
|
{
|
|
18305
19306
|
"kind": "field",
|
|
@@ -19006,6 +20007,14 @@
|
|
|
19006
20007
|
"module": "src/gw-spinner.js"
|
|
19007
20008
|
}
|
|
19008
20009
|
},
|
|
20010
|
+
{
|
|
20011
|
+
"kind": "js",
|
|
20012
|
+
"name": "*",
|
|
20013
|
+
"declaration": {
|
|
20014
|
+
"name": "*",
|
|
20015
|
+
"module": "src/gw-theme-gallery.js"
|
|
20016
|
+
}
|
|
20017
|
+
},
|
|
19009
20018
|
{
|
|
19010
20019
|
"kind": "js",
|
|
19011
20020
|
"name": "*",
|