@taprootio/espalier 2.19.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/custom-elements.json +45897 -34042
  3. package/dist/badge/esp-badge.d.ts +7 -6
  4. package/dist/badge/esp-badge.js +6 -6
  5. package/dist/box/esp-box.d.ts +5 -5
  6. package/dist/button/esp-button.d.ts +6 -12
  7. package/dist/button/esp-button.js +3 -3
  8. package/dist/date-picker/esp-date-picker.js +2 -2
  9. package/dist/details/esp-details-group.d.ts +0 -13
  10. package/dist/details/esp-details.d.ts +9 -9
  11. package/dist/dialog/esp-dialog.d.ts +4 -4
  12. package/dist/empty-state/esp-empty-state.d.ts +1 -1
  13. package/dist/form/esp-form.d.ts +5 -5
  14. package/dist/grid/esp-grid.d.ts +8 -8
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/info/esp-info.d.ts +6 -4
  18. package/dist/info/esp-info.js +15 -15
  19. package/dist/input/esp-input.d.ts +5 -3
  20. package/dist/lightbox/esp-lightbox.js +1 -1
  21. package/dist/pickers/esp-picker-menu.d.ts +1 -0
  22. package/dist/pickers/esp-picker-menu.js +6 -6
  23. package/dist/progress/esp-progress.d.ts +24 -24
  24. package/dist/repeater/esp-repeater.d.ts +0 -3
  25. package/dist/root/helpers/compute-semantic-properties.js +1 -0
  26. package/dist/root/helpers/compute-theme-properties.js +1 -1
  27. package/dist/root/helpers/lightness-ramp-properties.js +1 -0
  28. package/dist/shared/bus-events.d.ts +2 -2
  29. package/dist/shared/esp-element-base.d.ts +40 -16
  30. package/dist/shared/esp-element-base.js +2 -2
  31. package/dist/shared/style-fragments.js +39 -9
  32. package/dist/shared/theme.d.ts +34 -16
  33. package/dist/shared/theme.js +1 -1
  34. package/dist/shared/toast-events.d.ts +6 -5
  35. package/dist/status-indicator/esp-status-indicator.d.ts +13 -12
  36. package/dist/status-indicator/esp-status-indicator.js +7 -7
  37. package/dist/tabs/esp-tab-group.d.ts +8 -6
  38. package/dist/textarea/esp-textarea.d.ts +5 -4
  39. package/dist/toaster/esp-toaster.d.ts +9 -9
  40. package/dist/toaster/esp-toaster.js +3 -3
  41. package/dist/tree/esp-tree.js +2 -2
  42. package/package.json +1 -1
  43. package/dist/shared/esp-intent-element-base.d.ts +0 -10
  44. package/dist/shared/esp-intent-element-base.js +0 -31
@@ -1,4 +1,4 @@
1
- import { EspalierIntentElementBase } from "../shared/esp-intent-element-base.js";
1
+ import { EspalierElementBase } from "../shared/esp-element-base.js";
2
2
  import { type EspalierIntentVariant } from "../shared/intent-values.js";
3
3
  export type EspalierBadgeVariant = EspalierIntentVariant;
4
4
  export type EspalierBadgeSize = "small" | "medium";
@@ -12,10 +12,10 @@ export type EspalierBadgeSize = "small" | "medium";
12
12
  * ```html
13
13
  * <div style="display: flex; flex-wrap: wrap; gap: var(--esp-size-tiny);">
14
14
  * <esp-badge>Draft</esp-badge>
15
- * <esp-badge variant="success" icon="circle-dot">Published</esp-badge>
16
- * <esp-badge variant="warning">Pending review</esp-badge>
17
- * <esp-badge variant="danger" icon="circle-x">Banned</esp-badge>
18
- * <esp-badge variant="info" size="medium" icon="info-i">12 updates</esp-badge>
15
+ * <esp-badge intent="success" icon="circle-dot">Published</esp-badge>
16
+ * <esp-badge intent="warning">Pending review</esp-badge>
17
+ * <esp-badge intent="danger" icon="circle-x">Banned</esp-badge>
18
+ * <esp-badge intent="info" size="medium" icon="info-i">12 updates</esp-badge>
19
19
  * </div>
20
20
  * ```
21
21
  *
@@ -32,7 +32,8 @@ export type EspalierBadgeSize = "small" | "medium";
32
32
  * @menuLabel Badge
33
33
  * @menuIcon tags
34
34
  */
35
- export declare class EspalierBadge extends EspalierIntentElementBase {
35
+ export declare class EspalierBadge extends EspalierElementBase {
36
+ protected intentEmitsTokens: boolean;
36
37
  /**
37
38
  * Semantic visual treatment for the badge. Supported values are
38
39
  * `neutral`, `success`, `warning`, `danger`, and `info`.
@@ -1,16 +1,16 @@
1
- var c=function(s,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(s,e,t,o);else for(var l=s.length-1;l>=0;l--)(a=s[l])&&(i=(r<3?a(i):r>3?a(e,t,i):a(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i};import{css as d,html as h,nothing as m}from"lit";import{customElement as f,property as p}from"lit/decorators.js";import{classMap as g}from"lit/directives/class-map.js";import{ref as u}from"lit/directives/ref.js";import{EspalierElementBase as b}from"../shared/esp-element-base.js";import{EspalierIntentElementBase as v,intentSurfaceTokens as z}from"../shared/esp-intent-element-base.js";import{syncNormalizedAttribute as y}from"../shared/attribute-helpers.js";import{getIconHrefForHost as w}from"../shared/intent-values.js";import{SlottedIconController as S}from"../shared/slotted-icon-controller.js";import{renderSpriteIcon as _}from"../shared/svgs/render-sprite-icon.js";function x(s){return s==="medium"?"medium":"small"}let n=class extends v{constructor(){super(...arguments),this.iconSlot=new S(this),this.sizeBacker="small",this.icon=""}get size(){return this.sizeBacker}set size(e){const t=this.sizeBacker;this.sizeBacker=x(e),this.requestUpdate("size",t),y(this,"size",this.sizeBacker)}render(){const e=w(this.icon,this),t=this.iconSlot.hasSlottedIcon(),o=t||e.length>0,r={badge:!0,[`variant-${this.variant}`]:!0,[`size-${this.size}`]:!0,"has-icon":o};return h`
2
- <span part="badge" class=${g(r)}>
1
+ var c=function(s,e,t,o){var n=arguments.length,i=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(s,e,t,o);else for(var l=s.length-1;l>=0;l--)(a=s[l])&&(i=(n<3?a(i):n>3?a(e,t,i):a(e,t))||i);return n>3&&i&&Object.defineProperty(e,t,i),i};import{css as h,html as m,nothing as f}from"lit";import{customElement as g,property as p}from"lit/decorators.js";import{classMap as u}from"lit/directives/class-map.js";import{ref as b}from"lit/directives/ref.js";import{EspalierElementBase as d}from"../shared/esp-element-base.js";import{intentSurfaceTokens as z}from"../shared/style-fragments.js";import{syncNormalizedAttribute as v}from"../shared/attribute-helpers.js";import{getIconHrefForHost as y}from"../shared/intent-values.js";import{SlottedIconController as w}from"../shared/slotted-icon-controller.js";import{renderSpriteIcon as S}from"../shared/svgs/render-sprite-icon.js";function _(s){return s==="medium"?"medium":"small"}let r=class extends d{constructor(){super(...arguments),this.intentEmitsTokens=!1,this.iconSlot=new w(this),this.sizeBacker="small",this.icon=""}get size(){return this.sizeBacker}set size(e){const t=this.sizeBacker;this.sizeBacker=_(e),this.requestUpdate("size",t),v(this,"size",this.sizeBacker)}render(){const e=y(this.icon,this),t=this.iconSlot.hasSlottedIcon(),o=t||e.length>0,n={badge:!0,[`intent-${this.intent}`]:!0,[`size-${this.size}`]:!0,"has-icon":o};return m`
2
+ <span part="badge" class=${u(n)}>
3
3
  <span part="icon" class="icon" aria-hidden="true">
4
4
  <slot
5
5
  name="icon"
6
- ${u(this.iconSlot.slotRef)}
6
+ ${b(this.iconSlot.slotRef)}
7
7
  @slotchange=${this.iconSlot.handleSlotChange}
8
8
  ></slot>
9
- ${!t&&e?_(e):m}
9
+ ${!t&&e?S(e):f}
10
10
  </span>
11
11
  <span part="label" class="label"><slot></slot></span>
12
12
  </span>
13
- `}};n.styles=[...b.styles,z,d`
13
+ `}};r.styles=[...d.styles,z,h`
14
14
  :host {
15
15
  display: inline-flex;
16
16
  max-width: 100%;
@@ -72,4 +72,4 @@ var c=function(s,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnP
72
72
  overflow: hidden;
73
73
  text-overflow: ellipsis;
74
74
  }
75
- `],c([p({type:String})],n.prototype,"icon",void 0),c([p({type:String,reflect:!0})],n.prototype,"size",null),n=c([f("esp-badge")],n);export{n as EspalierBadge};
75
+ `],c([p({type:String})],r.prototype,"icon",void 0),c([p({type:String,reflect:!0})],r.prototype,"size",null),r=c([g("esp-badge")],r);export{r as EspalierBadge};
@@ -41,7 +41,7 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
41
41
  * }
42
42
  * }
43
43
  * </style>
44
- * <esp-box class="box-with-bg" variant="analogous-right">
44
+ * <esp-box class="box-with-bg">
45
45
  * <h2>Box with background image</h2>
46
46
  * <p>I have a different generated background texture in dark mode than light mode.</p>
47
47
  * </esp-box>
@@ -71,7 +71,7 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
71
71
  * padding: var(--esp-size-padding);
72
72
  * }
73
73
  * </style>
74
- * <esp-box class="card-box" variant="analogous-right">
74
+ * <esp-box class="card-box">
75
75
  * <header>Box as a card</header>
76
76
  * <div>
77
77
  * <p>Card content.</p>
@@ -92,11 +92,11 @@ export declare class EspalierBox extends EspalierElementBase {
92
92
  * displaying a dialog in full-screen mode.
93
93
  *
94
94
  * ```html
95
- * <esp-box variant="triadic-right">
95
+ * <esp-box>
96
96
  * <h2>Box things</h2>
97
- * <esp-box variant="complementary">
97
+ * <esp-box>
98
98
  * <h2>Box in box</h2>
99
- * <esp-button label="Toggle full screen" variant="complementary"></esp-button>
99
+ * <esp-button label="Toggle full screen"></esp-button>
100
100
  * </esp-box>
101
101
  * </esp-box>
102
102
  * <script>
@@ -17,21 +17,15 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
17
17
  * </script>
18
18
  * ```
19
19
  *
20
- * Here are some different button color variants:
20
+ * Here is each of the button intents:
21
21
  *
22
22
  * ```html
23
23
  * <div style="display: flex; flex-wrap: wrap; gap: var(--esp-size-padding);">
24
- * <esp-button label="Analogous Left" variant="analogous-left" collapsed></esp-button>
25
- * <esp-button label="Analogous Right" variant="analogous-right" collapsed></esp-button>
26
- * <esp-button label="Complementary" variant="complementary" collapsed></esp-button>
27
- * <esp-button label="Danger" variant="danger" collapsed></esp-button>
28
- * <esp-button label="Primary" variant="primary" collapsed></esp-button>
29
- * <esp-button label="Split Complementary Left" variant="split-complementary-left" collapsed></esp-button>
30
- * <esp-button label="Split Complementary Right" variant="split-complementary-right" collapsed></esp-button>
31
- * <esp-button label="Success" variant="success" collapsed></esp-button>
32
- * <esp-button label="Triadic Left" variant="triadic-left" collapsed></esp-button>
33
- * <esp-button label="Triadic Right" variant="triadic-right" collapsed></esp-button>
34
- * <esp-button label="Warning" variant="warning" collapsed></esp-button>
24
+ * <esp-button label="Neutral" intent="neutral" collapsed></esp-button>
25
+ * <esp-button label="Success" intent="success" collapsed></esp-button>
26
+ * <esp-button label="Warning" intent="warning" collapsed></esp-button>
27
+ * <esp-button label="Danger" intent="danger" collapsed></esp-button>
28
+ * <esp-button label="Info" intent="info" collapsed></esp-button>
35
29
  * </div>
36
30
  * ```
37
31
  *
@@ -1,4 +1,4 @@
1
- var n=function(h,t,i,e){var s=arguments.length,r=s<3?t:e===null?e=Object.getOwnPropertyDescriptor(t,i):e,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(h,t,i,e);else for(var d=h.length-1;d>=0;d--)(c=h[d])&&(r=(s<3?c(r):s>3?c(t,i,r):c(t,i))||r);return s>3&&r&&Object.defineProperty(t,i,r),r};import{css as f,html as p,nothing as l}from"lit";import{customElement as m,eventOptions as v,property as a,state as y}from"lit/decorators.js";import{classMap as u}from"lit/directives/class-map.js";import{EspalierElementBase as b}from"../shared/esp-element-base.js";import{ref as k}from"lit/directives/ref.js";import{getIconHrefForHost as x}from"../shared/intent-values.js";import{SlottedIconController as T}from"../shared/slotted-icon-controller.js";import{renderSpriteIcon as w}from"../shared/svgs/render-sprite-icon.js";import{BUTTON_ICON_INTERACTION_LIGHTNESS_FACTOR as S,BUTTON_ICON_SPLIT_LIGHTNESS_FACTOR as g,BUTTON_INTERACTION_LIGHTNESS_FACTOR as $}from"./action-state-lightness.js";const N=p`<svg
1
+ var n=function(h,t,i,e){var a=arguments.length,r=a<3?t:e===null?e=Object.getOwnPropertyDescriptor(t,i):e,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(h,t,i,e);else for(var d=h.length-1;d>=0;d--)(c=h[d])&&(r=(a<3?c(r):a>3?c(t,i,r):c(t,i))||r);return a>3&&r&&Object.defineProperty(t,i,r),r};import{css as f,html as p,nothing as l}from"lit";import{customElement as m,eventOptions as v,property as s,state as y}from"lit/decorators.js";import{classMap as u}from"lit/directives/class-map.js";import{EspalierElementBase as b}from"../shared/esp-element-base.js";import{ref as k}from"lit/directives/ref.js";import{getIconHrefForHost as x}from"../shared/intent-values.js";import{SlottedIconController as T}from"../shared/slotted-icon-controller.js";import{renderSpriteIcon as w}from"../shared/svgs/render-sprite-icon.js";import{BUTTON_ICON_INTERACTION_LIGHTNESS_FACTOR as S,BUTTON_ICON_SPLIT_LIGHTNESS_FACTOR as g,BUTTON_INTERACTION_LIGHTNESS_FACTOR as $}from"./action-state-lightness.js";const N=p`<svg
2
2
  xmlns="http://www.w3.org/2000/svg"
3
3
  viewBox="0 0 24 24"
4
4
  fill="none"
@@ -15,7 +15,7 @@ var n=function(h,t,i,e){var s=arguments.length,r=s<3?t:e===null?e=Object.getOwnP
15
15
  <slot ${k(this.iconSlot.slotRef)} @slotchange=${this.iconSlot.handleSlotChange}></slot>
16
16
  ${!this.iconSlot.hasSlottedIcon(":scope > *")&&t?w(t):l}
17
17
  </span>
18
- `}static get observedAttributes(){return[...super.observedAttributes,"tabindex","aria-pressed"]}attributeChangedCallback(t,i,e){if(super.attributeChangedCallback(t,i,e),t==="aria-pressed"){this.requestUpdate();return}if(t!=="tabindex"||this.neutralizingTabindex)return;const s=e===null?null:Number(e),r=s===null||Number.isNaN(s)?null:s;r!==null&&r>=0?(this.innerTabindex=r,this.writeHostTabindex(null)):r===null&&e!==null?(this.innerTabindex=null,this.writeHostTabindex(null)):this.innerTabindex=r}writeHostTabindex(t){this.getAttribute("tabindex")!==t&&(this.neutralizingTabindex=!0,t===null?this.removeAttribute("tabindex"):this.setAttribute("tabindex",t),this.neutralizingTabindex=!1)}removeAttribute(t){super.removeAttribute(t),t==="tabindex"&&!this.neutralizingTabindex&&(this.innerTabindex=null)}focus(t){this.focusShadowElementAfterUpdate("button, a",t)}handleClick(t){if(this.dispatchEvent(new CustomEvent("clicked",{detail:{},bubbles:!0,composed:!0})),this.buttonType==="submit"){const i=this.closest("form");if(i){const e=document.createElement("button");e.type="submit",e.hidden=!0,this.formNoValidate&&(e.formNoValidate=!0),i.appendChild(e),i.requestSubmit(e),e.remove()}}else this.buttonType==="reset"&&this.closest("form")?.reset()}render(){const t=x(this.icon,this),i=this.loading||this.iconSlot.hasSlottedIcon(":scope > *")||t.length>0,{collapsed:e,iconOnly:s}=this,r=s?this.getAttribute("aria-label")||this.label||l:l,c=this.getAttribute("aria-pressed")||l,d={"esp-field":!0,"icon-only":s,incognito:this.incognito,"is-collapsed":e,"has-icon":i};return this.href.length?p`
18
+ `}static get observedAttributes(){return[...super.observedAttributes,"tabindex","aria-pressed"]}attributeChangedCallback(t,i,e){if(super.attributeChangedCallback(t,i,e),t==="aria-pressed"){this.requestUpdate();return}if(t!=="tabindex"||this.neutralizingTabindex)return;const a=e===null?null:Number(e),r=a===null||Number.isNaN(a)?null:a;r!==null&&r>=0?(this.innerTabindex=r,this.writeHostTabindex(null)):r===null&&e!==null?(this.innerTabindex=null,this.writeHostTabindex(null)):this.innerTabindex=r}writeHostTabindex(t){this.getAttribute("tabindex")!==t&&(this.neutralizingTabindex=!0,t===null?this.removeAttribute("tabindex"):this.setAttribute("tabindex",t),this.neutralizingTabindex=!1)}removeAttribute(t){super.removeAttribute(t),t==="tabindex"&&!this.neutralizingTabindex&&(this.innerTabindex=null)}focus(t){this.focusShadowElementAfterUpdate("button, a",t)}handleClick(t){if(this.dispatchEvent(new CustomEvent("clicked",{detail:{},bubbles:!0,composed:!0})),this.buttonType==="submit"){const i=this.closest("form");if(i){const e=document.createElement("button");e.type="submit",e.hidden=!0,this.formNoValidate&&(e.formNoValidate=!0),i.appendChild(e),i.requestSubmit(e),e.remove()}}else this.buttonType==="reset"&&this.closest("form")?.reset()}render(){const t=x(this.icon,this),i=this.loading||this.iconSlot.hasSlottedIcon(":scope > *")||t.length>0,{collapsed:e,iconOnly:a}=this,r=a?this.getAttribute("aria-label")||this.label||l:l,c=this.getAttribute("aria-pressed")||l,d={"esp-field":!0,"icon-only":a,incognito:this.incognito,"is-collapsed":e,"has-icon":i};return this.href.length?p`
19
19
  <div part="wrapper" class=${u(d)}>
20
20
  <a
21
21
  ?disabled=${this.disabled}
@@ -223,4 +223,4 @@ var n=function(h,t,i,e){var s=arguments.length,r=s<3?t:e===null?e=Object.getOwnP
223
223
  transform: rotate(360deg);
224
224
  }
225
225
  }
226
- `],n([y()],o.prototype,"innerTabindex",void 0),n([a({attribute:"button-type",type:String})],o.prototype,"buttonType",void 0),n([a({type:Boolean})],o.prototype,"collapsed",void 0),n([a({type:Boolean,reflect:!0})],o.prototype,"disabled",void 0),n([a({type:String})],o.prototype,"href",void 0),n([a({attribute:"icon-only",type:Boolean})],o.prototype,"iconOnly",void 0),n([a({type:Boolean,reflect:!0})],o.prototype,"incognito",void 0),n([a({type:String})],o.prototype,"icon",void 0),n([a({type:String})],o.prototype,"label",void 0),n([a({type:Boolean,reflect:!0})],o.prototype,"loading",void 0),n([a({type:String})],o.prototype,"target",void 0),n([a({type:String})],o.prototype,"rel",void 0),n([a({attribute:"formnovalidate",type:Boolean})],o.prototype,"formNoValidate",void 0),n([v({capture:!1,passive:!0})],o.prototype,"handleClick",null),o=n([m("esp-button")],o);export{o as EspalierButton};
226
+ `],n([y()],o.prototype,"innerTabindex",void 0),n([s({attribute:"button-type",type:String})],o.prototype,"buttonType",void 0),n([s({type:Boolean})],o.prototype,"collapsed",void 0),n([s({type:Boolean,reflect:!0})],o.prototype,"disabled",void 0),n([s({type:String})],o.prototype,"href",void 0),n([s({attribute:"icon-only",type:Boolean})],o.prototype,"iconOnly",void 0),n([s({type:Boolean,reflect:!0})],o.prototype,"incognito",void 0),n([s({type:String})],o.prototype,"icon",void 0),n([s({type:String})],o.prototype,"label",void 0),n([s({type:Boolean,reflect:!0})],o.prototype,"loading",void 0),n([s({type:String})],o.prototype,"target",void 0),n([s({type:String})],o.prototype,"rel",void 0),n([s({attribute:"formnovalidate",type:Boolean})],o.prototype,"formNoValidate",void 0),n([v({capture:!1,passive:!0})],o.prototype,"handleClick",null),o=n([m("esp-button")],o);export{o as EspalierButton};
@@ -151,7 +151,7 @@ var n=function(m,e,t,i){var r=arguments.length,s=r<3?e:i===null?i=Object.getOwnP
151
151
  </esp-button>
152
152
  <esp-button
153
153
  icon-only
154
- variant="danger"
154
+ intent="danger"
155
155
  @clicked=${()=>{this.value=this._valueOnOpen,this._closePopover(),this.inputRef.value?.focus()}}
156
156
  >
157
157
  ${S}
@@ -167,7 +167,7 @@ var n=function(m,e,t,i){var r=arguments.length,s=r<3?e:i===null?i=Object.getOwnP
167
167
  </esp-button>
168
168
  <esp-button
169
169
  icon-only
170
- variant="danger"
170
+ intent="danger"
171
171
  @clicked=${()=>{this.value=this._valueOnOpen,this._closePopover(),this.inputRef.value?.focus()}}
172
172
  >
173
173
  ${S}
@@ -39,19 +39,6 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
39
39
  * </esp-details-group>
40
40
  * ```
41
41
  *
42
- * ### With color variant
43
- *
44
- * ```html
45
- * <esp-details-group variant="complementary">
46
- * <esp-details summary="FAQ 1">
47
- * <p>Answer to FAQ 1.</p>
48
- * </esp-details>
49
- * <esp-details summary="FAQ 2">
50
- * <p>Answer to FAQ 2.</p>
51
- * </esp-details>
52
- * </esp-details-group>
53
- * ```
54
- *
55
42
  * @customElement esp-details-group
56
43
  * @slot - Place `esp-details` elements in the default slot.
57
44
  *
@@ -13,15 +13,15 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
13
13
  * </esp-details>
14
14
  * ```
15
15
  *
16
- * Details can have [color variants](/espalier-guides/):
16
+ * Details pick up zone theming from a `context` attribute on the group
17
+ * or any ancestor — see the [theming guide](/espalier-guides/):
17
18
  *
18
19
  * ```html
19
- * <esp-details summary="Complementary variant" variant="complementary">
20
- * <p>This details element uses the complementary color variant.</p>
21
- * </esp-details>
22
- * <esp-details summary="Analogous left variant" variant="analogous-left">
23
- * <p>This one uses the analogous-left color variant.</p>
24
- * </esp-details>
20
+ * <esp-details-group context="quiet">
21
+ * <esp-details summary="Inside the quiet zone">
22
+ * <p>Zone-correct tokens, contrast enforced by the theme engine.</p>
23
+ * </esp-details>
24
+ * </esp-details-group>
25
25
  * ```
26
26
  *
27
27
  * ### Pre-opened details
@@ -78,7 +78,7 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
78
78
  * ### Scroll-stability regression harness
79
79
  *
80
80
  * ```html
81
- * <esp-info variant="warning" icon="info-i">
81
+ * <esp-info intent="warning" icon="info-i">
82
82
  * <strong>Manual verification (Firefox):</strong>
83
83
  * <ol>
84
84
  * <li>Scroll so the details summary and top of the grid are both visible.</li>
@@ -98,7 +98,7 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
98
98
  * <label style="display:flex; align-items:center; gap:var(--esp-size-tiny); font-family:var(--esp-font-body); color:var(--esp-color-text);">
99
99
  * <input type="checkbox" value="flagged" /> Flagged
100
100
  * </label>
101
- * <esp-button id="scroll-test-apply" variant="complementary" label="Apply filters"></esp-button>
101
+ * <esp-button id="scroll-test-apply" label="Apply filters"></esp-button>
102
102
  * </div>
103
103
  * </esp-details>
104
104
  * <esp-grid page-size="30" grid-height="50vh" style="margin-top:var(--esp-size-small);">
@@ -24,7 +24,7 @@ import { LitElement } from "lit";
24
24
  * <esp-box>
25
25
  * <h2>Showing something</h2>
26
26
  * <p>There could be controls or a confirmation or anything here.</p>
27
- * <esp-button variant="danger" label="Close"></esp-button>
27
+ * <esp-button intent="danger" label="Close"></esp-button>
28
28
  * </esp-box>
29
29
  * </esp-dialog>
30
30
  * <esp-button label="Show Dialog"></esp-button>
@@ -62,8 +62,8 @@ import { LitElement } from "lit";
62
62
  * <esp-form-item label="Notes">
63
63
  * <esp-textarea placeholder="Optional notes"></esp-textarea>
64
64
  * </esp-form-item>
65
- * <esp-button variant="success" label="Save"></esp-button>
66
- * <esp-button variant="danger" label="Cancel"></esp-button>
65
+ * <esp-button intent="success" label="Save"></esp-button>
66
+ * <esp-button intent="danger" label="Cancel"></esp-button>
67
67
  * </esp-box>
68
68
  * </esp-dialog>
69
69
  * <esp-button label="Open Form"></esp-button>
@@ -120,7 +120,7 @@ export declare class EspalierDialog extends LitElement {
120
120
  * <esp-box full-screen>
121
121
  * <h2>Full screen dialog</h2>
122
122
  * <p>There could be controls or a confirmation or anything here.</p>
123
- * <esp-button variant="danger" label="Close"></esp-button>
123
+ * <esp-button intent="danger" label="Close"></esp-button>
124
124
  * </esp-box>
125
125
  * </esp-dialog>
126
126
  * <esp-button label="Show Dialog"></esp-button>
@@ -8,7 +8,7 @@ export type EspalierEmptyStateSize = "medium" | "large";
8
8
  * <esp-empty-state icon="photo-up">
9
9
  * <span slot="heading">No images yet</span>
10
10
  * Upload the first image to start building this library.
11
- * <esp-button slot="action" label="Upload Image" variant="primary"></esp-button>
11
+ * <esp-button slot="action" label="Upload Image"></esp-button>
12
12
  * </esp-empty-state>
13
13
  *
14
14
  * <esp-empty-state size="large" icon="users">
@@ -74,7 +74,7 @@ import { LitElement } from "lit";
74
74
  * </esp-form-item>
75
75
  * <div class="actions">
76
76
  * <esp-button button-type="submit" label="Sign Up"></esp-button>
77
- * <esp-button button-type="reset" label="Reset" variant="danger"></esp-button>
77
+ * <esp-button button-type="reset" label="Reset" intent="danger"></esp-button>
78
78
  * </div>
79
79
  * </esp-form>
80
80
  * ```
@@ -103,7 +103,7 @@ import { LitElement } from "lit";
103
103
  * </esp-form-item>
104
104
  * <div class="actions">
105
105
  * <esp-button button-type="submit" label="Publish"></esp-button>
106
- * <esp-button button-type="submit" formnovalidate label="Save Draft" variant="split-complementary-left"></esp-button>
106
+ * <esp-button button-type="submit" formnovalidate label="Save Draft"></esp-button>
107
107
  * </div>
108
108
  * </esp-form>
109
109
  * ```
@@ -132,14 +132,14 @@ import { LitElement } from "lit";
132
132
  * const text = findById("response-text");
133
133
  * form.addEventListener("esp-submit-response", (ev) => {
134
134
  * msg.style.display = "";
135
- * msg.setAttribute("variant", ev.detail.ok ? "success" : "warning");
135
+ * msg.setAttribute("intent", ev.detail.ok ? "success" : "warning");
136
136
  * text.textContent = ev.detail.ok
137
137
  * ? "Submitted successfully!"
138
138
  * : "Server returned an error.";
139
139
  * });
140
140
  * form.addEventListener("esp-submit-error", () => {
141
141
  * msg.style.display = "";
142
- * msg.setAttribute("variant", "danger");
142
+ * msg.setAttribute("intent", "danger");
143
143
  * text.textContent = "Network error — please try again.";
144
144
  * });
145
145
  * </script>
@@ -179,7 +179,7 @@ import { LitElement } from "lit";
179
179
  * </esp-form-item>
180
180
  * <div class="actions">
181
181
  * <esp-button button-type="submit" label="Submit"></esp-button>
182
- * <esp-button button-type="reset" label="Reset" variant="danger"></esp-button>
182
+ * <esp-button button-type="reset" label="Reset" intent="danger"></esp-button>
183
183
  * </div>
184
184
  * </esp-form>
185
185
  * ```
@@ -81,7 +81,7 @@ export type GridLoadErrorEventDetail<T = GridRow> = GridDataStateEventDetail<T>
81
81
  * <esp-grid-column header="Email" field-name="email" sortable></esp-grid-column>
82
82
  * <esp-grid-column pin="right" width="calc(var(--esp-size-font) + var(--esp-size-tiny) / 3 * 2 + var(--esp-size-tiny-to-small) * 2)">
83
83
  * <esp-action-menu placement="bottom-end" icon-position="right">
84
- * <esp-button slot="trigger" icon-only icon="select" variant="complementary" aria-label="Row actions" class="grid-demo-button"></esp-button>
84
+ * <esp-button slot="trigger" icon-only icon="select" aria-label="Row actions" class="grid-demo-button"></esp-button>
85
85
  * <esp-action-menu-item value="edit" icon="edit" grid-event="edit-user">
86
86
  * Edit
87
87
  * </esp-action-menu-item>
@@ -131,7 +131,7 @@ export type GridLoadErrorEventDetail<T = GridRow> = GridDataStateEventDetail<T>
131
131
  * <esp-grid-column header="Last name" field-name="last_name" width="calc(12ch + var(--esp-size-tiny-to-small) * 2)"></esp-grid-column>
132
132
  * <esp-grid-column header="Email" field-name="email" sortable width="calc(22ch + var(--esp-size-tiny-to-small) * 2)" grow></esp-grid-column>
133
133
  * <esp-grid-column pin="right" width="calc(var(--esp-size-font) + var(--esp-size-tiny) / 3 * 2 + var(--esp-size-tiny-to-small) * 2)">
134
- * <esp-button grid-event="user-button-clicked" icon-only icon="user-circle" variant="complementary" class="grid-demo-button"></esp-button>
134
+ * <esp-button grid-event="user-button-clicked" icon-only icon="user-circle" class="grid-demo-button"></esp-button>
135
135
  * </esp-grid-column>
136
136
  * </esp-grid>
137
137
  * <script>
@@ -213,7 +213,7 @@ export type GridLoadErrorEventDetail<T = GridRow> = GridDataStateEventDetail<T>
213
213
  * <esp-grid page-size="50" grid-height="60vh">
214
214
  * <esp-grid-column header="Id" field-name="id" text-align="right" sortable sort-type="number" width="calc(5ch + var(--esp-size-tiny-to-small) * 2)"></esp-grid-column>
215
215
  * <esp-grid-column header="Name" field-name="name" sortable width="calc(18ch + var(--esp-size-tiny-to-small) * 2)" grow></esp-grid-column>
216
- * <esp-button slot="header-buttons" variant="success" id="load-more-btn" label="Load more"></esp-button>
216
+ * <esp-button slot="header-buttons" intent="success" id="load-more-btn" label="Load more"></esp-button>
217
217
  * </esp-grid>
218
218
  * <script>
219
219
  * const theGrid = findByTagName("esp-grid")[0];
@@ -307,14 +307,14 @@ export type GridLoadErrorEventDetail<T = GridRow> = GridDataStateEventDetail<T>
307
307
  * item button:
308
308
  *
309
309
  * ```html
310
- * <esp-grid data-url="/assets/data/grid-data.json" search-fields='["first_name", "last_name"]' variant="triadic-left">
310
+ * <esp-grid data-url="/assets/data/grid-data.json" search-fields='["first_name", "last_name"]'>
311
311
  * <esp-grid-column header="Name" sort-field="first_name" sort-order="asc" sortable>
312
312
  * <a href="mailto:${email}">${first_name} ${last_name}</a>
313
313
  * </esp-grid-column>
314
314
  * <esp-grid-column width="0">
315
- * <esp-button icon-only icon="user-circle" class="grid-demo-button" variant="triadic-left"></esp-button>
315
+ * <esp-button icon-only icon="user-circle" class="grid-demo-button"></esp-button>
316
316
  * </esp-grid-column>
317
- * <esp-button variant="success" icon-only icon="plus" slot="header-buttons"></esp-button>
317
+ * <esp-button intent="success" icon-only icon="plus" slot="header-buttons"></esp-button>
318
318
  * </esp-grid>
319
319
  * ```
320
320
  *
@@ -456,7 +456,7 @@ export declare class EspalierGrid extends EspalierElementBase {
456
456
  * <esp-grid-column header="Last name" field-name="last_name"></esp-grid-column>
457
457
  * <esp-grid-column header="Email" field-name="email" sortable></esp-grid-column>
458
458
  * <esp-grid-column>
459
- * <esp-button grid-event="trash-button-clicked" icon-only icon="trash" variant="danger" class="grid-demo-button"></esp-button>
459
+ * <esp-button grid-event="trash-button-clicked" icon-only icon="trash" intent="danger" class="grid-demo-button"></esp-button>
460
460
  * </esp-grid-column>
461
461
  * </esp-grid>
462
462
  * <script>
@@ -486,7 +486,7 @@ export declare class EspalierGrid extends EspalierElementBase {
486
486
  * <esp-grid-column header="Last name" field-name="last_name"></esp-grid-column>
487
487
  * <esp-grid-column header="Email" field-name="email" sortable></esp-grid-column>
488
488
  * <esp-grid-column>
489
- * <esp-button grid-event="replace-button-clicked" icon-only icon="wand" variant="triadic-left" class="grid-demo-button"></esp-button>
489
+ * <esp-button grid-event="replace-button-clicked" icon-only icon="wand" class="grid-demo-button"></esp-button>
490
490
  * </esp-grid-column>
491
491
  * </esp-grid>
492
492
  * <script>
package/dist/index.d.ts CHANGED
@@ -70,7 +70,7 @@ export * from "./shared/events.js";
70
70
  export { getImageDetails, releasePreviewUrl, type EspalierUploadImage, type ImageDetailsOptions, type SelectedUploadImage, type ExistingUploadImage, type ExistingImage, type ResponsiveImageUrl, type UploadCallbacks, type UploadEventDetail, } from "./image-upload/image-helpers.js";
71
71
  export { calculatePhotoLayout, type LayoutImage, type PhotoRow, } from "./shared/justified-layout.js";
72
72
  export { type TypeaheadFetchItems } from "./pickers/types.js";
73
- export { type EspalierTheme, type PartialTheme, type VariantColorSource, encodeTheme, parseTheme, mergePartials, layerThemes, buildTaprootLightTheme, buildTaprootDarkTheme, NESTED_THEME_KEYS, } from "./shared/theme.js";
73
+ export { type EspalierTheme, type PartialTheme, type PartialThemeContexts, type ThemeContext, type ThemeContexts, type VariantColorSource, encodeTheme, parseTheme, mergePartials, layerThemes, validateThemePair, buildTaprootLightTheme, buildTaprootDarkTheme, NESTED_THEME_KEYS, } from "./shared/theme.js";
74
74
  export { auditDataPalette, generateSequentialRamp, generateDivergingRamp, COLOR_VISION_SIMULATIONS, DATA_SERIES_KEYS, DEFAULT_DATA_PALETTE, DEFAULT_DATA_RAMP_STEPS, DEFAULT_DIVERGING_NEUTRAL, MAX_DATA_RAMP_STEPS, MIN_DATA_COLOR_DISTANCE, MIN_DATA_RAMP_LIGHTNESS_STEP, MIN_DATA_RAMP_STEPS, type ColorVisionSimulation, type DataPalette, type DataPaletteIssue, type DataRamp, type DataRamps, type DataSeriesKey, type DivergingDataRamp, type DivergingRampOptions, type PartialDataRamp, type PartialDataRamps, type SequentialDataRamp, type SequentialRampOptions, } from "./shared/data-colors.js";
75
75
  export { WEIGHT_LABELS, extractWeights, normalizeWeight, bestAvailableWeight, extractFamily, getFallbackFont, } from "./shared/font-helpers.js";
76
76
  export { getGoogleFonts } from "./font-picker/esp-font-picker.js";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export*from"./box/esp-box.js";export*from"./action-menu/esp-action-menu.js";export*from"./action-menu/esp-action-menu-item.js";export*from"./avatar/esp-avatar.js";export*from"./avatar/esp-profile-chip.js";export*from"./badge/esp-badge.js";export*from"./checkbox/esp-checkbox.js";export*from"./checkbox/esp-checkbox-group.js";export*from"./data-cell/esp-data-cell.js";export*from"./radio-button/esp-radio-button.js";export*from"./radio-button/esp-radio-button-group.js";export*from"./repeater/esp-repeater.js";export*from"./breadcrumbs/esp-breadcrumbs.js";export*from"./button/esp-button.js";export*from"./button/esp-button-group.js";export*from"./color-picker/esp-color-picker.js";export*from"./flyout/esp-flyout.js";export*from"./form/esp-form.js";export*from"./form-item/esp-form-item.js";export*from"./help/esp-help-button.js";export*from"./help/esp-help-provider.js";export*from"./header/index.js";export*from"./page/esp-page.js";export*from"./popover/esp-popover.js";export*from"./dialog/esp-dialog.js";export*from"./empty-state/esp-empty-state.js";export*from"./image-upload/esp-image-upload.js";export*from"./file-upload/esp-file-upload.js";export*from"./font-picker/esp-font-picker.js";export*from"./focus-picker/esp-focus-picker.js";export*from"./footer/index.js";export*from"./grid/esp-grid.js";export*from"./image/esp-image.js";export*from"./image/image-focus.js";export*from"./lightbox/esp-lightbox.js";export*from"./info/esp-info.js";export*from"./input/esp-input.js";export*from"./textarea/esp-textarea.js";export*from"./pickers/esp-pick-one.js";export*from"./pickers/esp-pick-some.js";export*from"./pickers/esp-picker-menu.js";export*from"./pickers/esp-picker-item.js";export*from"./root/esp-root.js";export*from"./menu/index.js";export*from"./burger/esp-burger.js";export*from"./date-picker/esp-date-picker.js";export*from"./details/esp-details.js";export*from"./details/esp-details-group.js";export*from"./tabs/esp-tab.js";export*from"./tabs/esp-tab-group.js";export*from"./slider/esp-slider.js";export*from"./switch/esp-switch.js";export*from"./toaster/esp-toaster.js";export*from"./tooltip/esp-tooltip.js";export*from"./progress/esp-progress.js";export*from"./search/esp-search.js";export*from"./status-indicator/esp-status-indicator.js";export*from"./tree/esp-tree.js";export*from"./tree/esp-tree-item.js";import{DEFAULT_ICON_SPRITE_URL as xo,DEFAULT_ICON_VIEW_BOX as To,INTENT_VARIANTS as ao,normalizeIntentVariant as _o,getIconHref as Ao,getIconHrefForHost as Eo,getIconSpriteUrl as lo}from"./shared/intent-values.js";import{EspalierElementBase as io}from"./shared/esp-element-base.js";import{VALIDITY_CHANGED_EVENT as so}from"./shared/validation.js";import{FormFieldController as go}from"./shared/form-field-controller.js";import{traverseToClosest as Fo}from"./shared/utilities.js";import{showToast as No}from"./shared/toast-events.js";import{showFlyout as ho,closeFlyout as Po}from"./shared/flyout-events.js";import{requestHelp as uo}from"./shared/help-events.js";import{getEspBus as Uo}from"./shared/bus-events.js";export*from"./shared/events.js";import{getImageDetails as Ho,releasePreviewUrl as Vo}from"./image-upload/image-helpers.js";import{calculatePhotoLayout as bo}from"./shared/justified-layout.js";import{encodeTheme as Wo,parseTheme as vo,mergePartials as wo,layerThemes as Bo,buildTaprootLightTheme as Yo,buildTaprootDarkTheme as ko,NESTED_THEME_KEYS as qo}from"./shared/theme.js";import{auditDataPalette as Ko,generateSequentialRamp as Xo,generateDivergingRamp as jo,COLOR_VISION_SIMULATIONS as Jo,DATA_SERIES_KEYS as Qo,DEFAULT_DATA_PALETTE as Zo,DEFAULT_DATA_RAMP_STEPS as $o,DEFAULT_DIVERGING_NEUTRAL as or,MAX_DATA_RAMP_STEPS as rr,MIN_DATA_COLOR_DISTANCE as er,MIN_DATA_RAMP_LIGHTNESS_STEP as tr,MIN_DATA_RAMP_STEPS as mr}from"./shared/data-colors.js";import{WEIGHT_LABELS as fr,extractWeights as xr,normalizeWeight as Tr,bestAvailableWeight as ar,extractFamily as _r,getFallbackFont as Ar}from"./shared/font-helpers.js";import{getGoogleFonts as lr}from"./font-picker/esp-font-picker.js";import{themeFitReport as ir,themeFitRows as Sr,printThemeFitReport as sr}from"./shared/theme-fit-report.js";export{Jo as COLOR_VISION_SIMULATIONS,Qo as DATA_SERIES_KEYS,Zo as DEFAULT_DATA_PALETTE,$o as DEFAULT_DATA_RAMP_STEPS,or as DEFAULT_DIVERGING_NEUTRAL,xo as DEFAULT_ICON_SPRITE_URL,To as DEFAULT_ICON_VIEW_BOX,io as EspalierElementBase,go as FormFieldController,ao as INTENT_VARIANTS,rr as MAX_DATA_RAMP_STEPS,er as MIN_DATA_COLOR_DISTANCE,tr as MIN_DATA_RAMP_LIGHTNESS_STEP,mr as MIN_DATA_RAMP_STEPS,qo as NESTED_THEME_KEYS,so as VALIDITY_CHANGED_EVENT,fr as WEIGHT_LABELS,Ko as auditDataPalette,ar as bestAvailableWeight,ko as buildTaprootDarkTheme,Yo as buildTaprootLightTheme,bo as calculatePhotoLayout,Po as closeFlyout,Wo as encodeTheme,_r as extractFamily,xr as extractWeights,jo as generateDivergingRamp,Xo as generateSequentialRamp,Uo as getEspBus,Ar as getFallbackFont,lr as getGoogleFonts,Ao as getIconHref,Eo as getIconHrefForHost,lo as getIconSpriteUrl,Ho as getImageDetails,Bo as layerThemes,wo as mergePartials,_o as normalizeIntentVariant,Tr as normalizeWeight,vo as parseTheme,sr as printThemeFitReport,Vo as releasePreviewUrl,uo as requestHelp,ho as showFlyout,No as showToast,ir as themeFitReport,Sr as themeFitRows,Fo as traverseToClosest};
1
+ export*from"./box/esp-box.js";export*from"./action-menu/esp-action-menu.js";export*from"./action-menu/esp-action-menu-item.js";export*from"./avatar/esp-avatar.js";export*from"./avatar/esp-profile-chip.js";export*from"./badge/esp-badge.js";export*from"./checkbox/esp-checkbox.js";export*from"./checkbox/esp-checkbox-group.js";export*from"./data-cell/esp-data-cell.js";export*from"./radio-button/esp-radio-button.js";export*from"./radio-button/esp-radio-button-group.js";export*from"./repeater/esp-repeater.js";export*from"./breadcrumbs/esp-breadcrumbs.js";export*from"./button/esp-button.js";export*from"./button/esp-button-group.js";export*from"./color-picker/esp-color-picker.js";export*from"./flyout/esp-flyout.js";export*from"./form/esp-form.js";export*from"./form-item/esp-form-item.js";export*from"./help/esp-help-button.js";export*from"./help/esp-help-provider.js";export*from"./header/index.js";export*from"./page/esp-page.js";export*from"./popover/esp-popover.js";export*from"./dialog/esp-dialog.js";export*from"./empty-state/esp-empty-state.js";export*from"./image-upload/esp-image-upload.js";export*from"./file-upload/esp-file-upload.js";export*from"./font-picker/esp-font-picker.js";export*from"./focus-picker/esp-focus-picker.js";export*from"./footer/index.js";export*from"./grid/esp-grid.js";export*from"./image/esp-image.js";export*from"./image/image-focus.js";export*from"./lightbox/esp-lightbox.js";export*from"./info/esp-info.js";export*from"./input/esp-input.js";export*from"./textarea/esp-textarea.js";export*from"./pickers/esp-pick-one.js";export*from"./pickers/esp-pick-some.js";export*from"./pickers/esp-picker-menu.js";export*from"./pickers/esp-picker-item.js";export*from"./root/esp-root.js";export*from"./menu/index.js";export*from"./burger/esp-burger.js";export*from"./date-picker/esp-date-picker.js";export*from"./details/esp-details.js";export*from"./details/esp-details-group.js";export*from"./tabs/esp-tab.js";export*from"./tabs/esp-tab-group.js";export*from"./slider/esp-slider.js";export*from"./switch/esp-switch.js";export*from"./toaster/esp-toaster.js";export*from"./tooltip/esp-tooltip.js";export*from"./progress/esp-progress.js";export*from"./search/esp-search.js";export*from"./status-indicator/esp-status-indicator.js";export*from"./tree/esp-tree.js";export*from"./tree/esp-tree-item.js";import{DEFAULT_ICON_SPRITE_URL as xr,DEFAULT_ICON_VIEW_BOX as Tr,INTENT_VARIANTS as ar,normalizeIntentVariant as _r,getIconHref as Ar,getIconHrefForHost as Er,getIconSpriteUrl as lr}from"./shared/intent-values.js";import{EspalierElementBase as Ir}from"./shared/esp-element-base.js";import{VALIDITY_CHANGED_EVENT as sr}from"./shared/validation.js";import{FormFieldController as gr}from"./shared/form-field-controller.js";import{traverseToClosest as Fr}from"./shared/utilities.js";import{showToast as Nr}from"./shared/toast-events.js";import{showFlyout as hr,closeFlyout as Pr}from"./shared/flyout-events.js";import{requestHelp as ur}from"./shared/help-events.js";import{getEspBus as Ur}from"./shared/bus-events.js";export*from"./shared/events.js";import{getImageDetails as Hr,releasePreviewUrl as Vr}from"./image-upload/image-helpers.js";import{calculatePhotoLayout as Gr}from"./shared/justified-layout.js";import{encodeTheme as vr,parseTheme as yr,mergePartials as Wr,layerThemes as wr,validateThemePair as Br,buildTaprootLightTheme as Yr,buildTaprootDarkTheme as kr,NESTED_THEME_KEYS as qr}from"./shared/theme.js";import{auditDataPalette as Kr,generateSequentialRamp as Xr,generateDivergingRamp as jr,COLOR_VISION_SIMULATIONS as Jr,DATA_SERIES_KEYS as Qr,DEFAULT_DATA_PALETTE as Zr,DEFAULT_DATA_RAMP_STEPS as $r,DEFAULT_DIVERGING_NEUTRAL as ro,MAX_DATA_RAMP_STEPS as oo,MIN_DATA_COLOR_DISTANCE as eo,MIN_DATA_RAMP_LIGHTNESS_STEP as to,MIN_DATA_RAMP_STEPS as mo}from"./shared/data-colors.js";import{WEIGHT_LABELS as fo,extractWeights as xo,normalizeWeight as To,bestAvailableWeight as ao,extractFamily as _o,getFallbackFont as Ao}from"./shared/font-helpers.js";import{getGoogleFonts as lo}from"./font-picker/esp-font-picker.js";import{themeFitReport as Io,themeFitRows as So,printThemeFitReport as so}from"./shared/theme-fit-report.js";export{Jr as COLOR_VISION_SIMULATIONS,Qr as DATA_SERIES_KEYS,Zr as DEFAULT_DATA_PALETTE,$r as DEFAULT_DATA_RAMP_STEPS,ro as DEFAULT_DIVERGING_NEUTRAL,xr as DEFAULT_ICON_SPRITE_URL,Tr as DEFAULT_ICON_VIEW_BOX,Ir as EspalierElementBase,gr as FormFieldController,ar as INTENT_VARIANTS,oo as MAX_DATA_RAMP_STEPS,eo as MIN_DATA_COLOR_DISTANCE,to as MIN_DATA_RAMP_LIGHTNESS_STEP,mo as MIN_DATA_RAMP_STEPS,qr as NESTED_THEME_KEYS,sr as VALIDITY_CHANGED_EVENT,fo as WEIGHT_LABELS,Kr as auditDataPalette,ao as bestAvailableWeight,kr as buildTaprootDarkTheme,Yr as buildTaprootLightTheme,Gr as calculatePhotoLayout,Pr as closeFlyout,vr as encodeTheme,_o as extractFamily,xo as extractWeights,jr as generateDivergingRamp,Xr as generateSequentialRamp,Ur as getEspBus,Ao as getFallbackFont,lo as getGoogleFonts,Ar as getIconHref,Er as getIconHrefForHost,lr as getIconSpriteUrl,Hr as getImageDetails,wr as layerThemes,Wr as mergePartials,_r as normalizeIntentVariant,To as normalizeWeight,yr as parseTheme,so as printThemeFitReport,Vr as releasePreviewUrl,ur as requestHelp,hr as showFlyout,Nr as showToast,Io as themeFitReport,So as themeFitRows,Fr as traverseToClosest,Br as validateThemePair};
@@ -1,4 +1,5 @@
1
- import { type EspalierVariant, EspalierElementBase } from "../shared/esp-element-base.js";
1
+ import { EspalierElementBase } from "../shared/esp-element-base.js";
2
+ import { type EspalierIntentVariant } from "../shared/intent-values.js";
2
3
  export type DestroyEspalierInfo = {
3
4
  toDestroy: EspalierInfo;
4
5
  };
@@ -7,7 +8,7 @@ export type DestroyEspalierInfo = {
7
8
  *
8
9
  * ```html
9
10
  * <esp-info>
10
- * Info defaults to the complementary color.
11
+ * Info defaults to intent="info" and its informational surface treatment.
11
12
  * </esp-info>
12
13
  * ```
13
14
  *
@@ -17,7 +18,7 @@ export type DestroyEspalierInfo = {
17
18
  *
18
19
  * ```html
19
20
  * <esp-info icon="user-circle">
20
- * Info defaults to the complementary color.
21
+ * Info defaults to intent="info" and its informational surface treatment.
21
22
  * </esp-info>
22
23
  * ```
23
24
  *
@@ -52,7 +53,8 @@ export type DestroyEspalierInfo = {
52
53
  *
53
54
  */
54
55
  export declare class EspalierInfo extends EspalierElementBase {
55
- protected variantBacker: EspalierVariant;
56
+ protected intentEmitsTokens: boolean;
57
+ protected intentBacker: EspalierIntentVariant;
56
58
  /**
57
59
  * Optional icon name from the configured Espalier SVG sprite.
58
60
  * Slotted `icon-slot` content remains supported and overrides
@@ -1,26 +1,26 @@
1
- var p=function(s,o,t,i){var n=arguments.length,e=n<3?o:i===null?i=Object.getOwnPropertyDescriptor(o,t):i,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(s,o,t,i);else for(var c=s.length-1;c>=0;c--)(l=s[c])&&(e=(n<3?l(e):n>3?l(o,t,e):l(o,t))||e);return n>3&&e&&Object.defineProperty(o,t,e),e};import{css as v,html as a}from"lit";import{customElement as f,property as d}from"lit/decorators.js";import{EspalierElementBase as m}from"../shared/esp-element-base.js";import{trashSVG as h}from"../shared/svgs/trash.js";import{ref as u}from"lit/directives/ref.js";import{getIconHrefForHost as b}from"../shared/intent-values.js";import{SlottedIconController as y}from"../shared/slotted-icon-controller.js";import{renderSpriteIcon as g}from"../shared/svgs/render-sprite-icon.js";let r=class extends m{constructor(){super(...arguments),this.iconSlot=new y(this),this.variantBacker="complementary",this.icon="",this.destroyable=!1}render(){const o=b(this.icon,this),t=this.iconSlot.hasSlottedIcon('[slot="icon-slot"]');return a`
2
- <section>
1
+ var p=function(r,t,e,s){var i=arguments.length,o=i<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(r,t,e,s);else for(var a=r.length-1;a>=0;a--)(c=r[a])&&(o=(i<3?c(o):i>3?c(t,e,o):c(t,e))||o);return i>3&&o&&Object.defineProperty(t,e,o),o};import{css as f,html as l}from"lit";import{customElement as v,property as d}from"lit/decorators.js";import{EspalierElementBase as m}from"../shared/esp-element-base.js";import{intentSurfaceTokens as h}from"../shared/style-fragments.js";import{classMap as u}from"lit/directives/class-map.js";import{trashSVG as b}from"../shared/svgs/trash.js";import{ref as g}from"lit/directives/ref.js";import{getIconHrefForHost as y}from"../shared/intent-values.js";import{SlottedIconController as S}from"../shared/slotted-icon-controller.js";import{renderSpriteIcon as _}from"../shared/svgs/render-sprite-icon.js";let n=class extends m{constructor(){super(...arguments),this.intentEmitsTokens=!1,this.iconSlot=new S(this),this.intentBacker="info",this.icon="",this.destroyable=!1}render(){const t=y(this.icon,this),e=this.iconSlot.hasSlottedIcon('[slot="icon-slot"]');return l`
2
+ <section class=${u({[`intent-${this.intent}`]:!0})}>
3
3
  <div class="icon">
4
4
  <slot
5
5
  name="icon-slot"
6
- ${u(this.iconSlot.slotRef)}
6
+ ${g(this.iconSlot.slotRef)}
7
7
  @slotchange=${this.iconSlot.handleSlotChange}
8
8
  ></slot>
9
- ${!t&&o?g(o):a``}
9
+ ${!e&&t?_(t):l``}
10
10
  </div>
11
11
  <div class="message">
12
12
  <slot></slot>
13
13
  </div>
14
- ${this.destroyable?a`<esp-button
14
+ ${this.destroyable?l`<esp-button
15
15
  class="destroy-button"
16
- variant="danger"
16
+ intent="danger"
17
17
  icon-only
18
18
  @clicked=${()=>{this.dispatchEvent(new CustomEvent("destroy",{detail:{toDestroy:this}}))}}
19
19
  >
20
- ${h}
21
- </esp-button>`:a``}
20
+ ${b}
21
+ </esp-button>`:l``}
22
22
  </section>
23
- `}};r.styles=[...m.styles,v`
23
+ `}};n.styles=[...m.styles,h,f`
24
24
  :host {
25
25
  display: block;
26
26
  }
@@ -28,18 +28,18 @@ var p=function(s,o,t,i){var n=arguments.length,e=n<3?o:i===null?i=Object.getOwnP
28
28
  section {
29
29
  display: grid;
30
30
  grid-template-columns: min-content auto min-content;
31
- background: var(--esp-info-color-background, var(--esp-color-layer-1));
32
- border: 1px solid var(--esp-info-color-border, var(--esp-color-border));
31
+ background: var(--esp-info-color-background, var(--_esp-intent-background));
32
+ border: 1px solid var(--esp-info-color-border, var(--_esp-intent-border-color));
33
33
  border-radius: var(--esp-size-border-radius);
34
- color: var(--esp-info-color-text, var(--esp-color-text));
34
+ color: var(--esp-info-color-text, var(--_esp-intent-color));
35
35
  font-size: var(--esp-type-small);
36
36
 
37
37
  div.icon {
38
38
  display: grid;
39
39
  place-content: center;
40
40
  padding: var(--esp-size-tiny);
41
- background: var(--esp-info-color-border, var(--esp-color-border));
42
- color: var(--esp-info-color-background, var(--esp-color-layer-1));
41
+ background: var(--esp-info-color-border, var(--_esp-intent-border-color));
42
+ color: var(--esp-info-color-background, var(--_esp-intent-background));
43
43
 
44
44
  .generated-icon,
45
45
  slot::slotted(svg) {
@@ -58,4 +58,4 @@ var p=function(s,o,t,i){var n=arguments.length,e=n<3?o:i===null?i=Object.getOwnP
58
58
  margin: var(--esp-size-tiny);
59
59
  }
60
60
  }
61
- `],p([d({type:String})],r.prototype,"icon",void 0),p([d({type:Boolean})],r.prototype,"destroyable",void 0),r=p([f("esp-info")],r);export{r as EspalierInfo};
61
+ `],p([d({type:String})],n.prototype,"icon",void 0),p([d({type:Boolean})],n.prototype,"destroyable",void 0),n=p([v("esp-info")],n);export{n as EspalierInfo};
@@ -27,11 +27,13 @@ import { EspalierElementBase } from "../shared/esp-element-base.js";
27
27
  * </script>
28
28
  * ```
29
29
  *
30
- * Input can have [color variants](/espalier-guides/). Here are some examples:
30
+ * Inputs pick up zone theming from an ancestor's `context` attribute —
31
+ * see the [theming guide](/espalier-guides/) for theme-defined contexts:
31
32
  *
32
33
  * ```html
33
- * <esp-input variant="split-complementary-left"></esp-input>
34
- * <esp-input variant="analogous-left"></esp-input>
34
+ * <esp-box context="quiet">
35
+ * <esp-input label="Inside the quiet zone"></esp-input>
36
+ * </esp-box>
35
37
  * ```
36
38
  *
37
39
  * ### Email validation
@@ -57,7 +57,7 @@ var c=function(l,e,t,i){var a=arguments.length,s=a<3?e:i===null?i=Object.getOwnP
57
57
  class="close-btn"
58
58
  icon-only
59
59
  collapsed
60
- variant="danger"
60
+ intent="danger"
61
61
  label="Close lightbox"
62
62
  @clicked=${this.close}
63
63
  >
@@ -42,6 +42,7 @@ import "../shared/virtualizer/lit-virtualizer.js";
42
42
  export declare class EspalierPickerMenu extends LitElement {
43
43
  constructor();
44
44
  connectedCallback(): void;
45
+ protected willUpdate(changedProperties: PropertyValues): void;
45
46
  protected updated(changedProperties: PropertyValues): void;
46
47
  /**
47
48
  * An accessible label for the listbox, typically passed from