@spectrum-web-components/icon 1.12.0-snapshot.20260422090428 → 1.12.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spectrum-web-components/icon",
3
- "version": "1.12.0-snapshot.20260422090428",
3
+ "version": "1.12.0",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Adobe",
@@ -77,9 +77,9 @@
77
77
  ],
78
78
  "types": "./src/index.d.ts",
79
79
  "dependencies": {
80
- "@spectrum-web-components/base": "1.12.0-snapshot.20260422090428",
81
- "@spectrum-web-components/iconset": "1.12.0-snapshot.20260422090428",
82
- "@spectrum-web-components/reactive-controllers": "1.12.0-snapshot.20260422090428"
80
+ "@spectrum-web-components/base": "1.12.0",
81
+ "@spectrum-web-components/iconset": "1.12.0",
82
+ "@spectrum-web-components/reactive-controllers": "1.12.0"
83
83
  },
84
84
  "keywords": [
85
85
  "design-system",
package/src/Icon.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  * OF ANY KIND, either express or implied. See the License for the specific language
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
- import { TemplateResult } from '@spectrum-web-components/base';
12
+ import { PropertyValues, TemplateResult } from '@spectrum-web-components/base';
13
13
  import { IconBase } from './IconBase.js';
14
14
  /**
15
15
  * @element sp-icon
@@ -22,6 +22,7 @@ export declare class Icon extends IconBase {
22
22
  connectedCallback(): void;
23
23
  disconnectedCallback(): void;
24
24
  firstUpdated(): void;
25
+ protected updated(changes: PropertyValues): void;
25
26
  attributeChangedCallback(name: string, old: string, value: string): void;
26
27
  private iconsetListener;
27
28
  private announceIconImageSrcError;
package/src/Icon.dev.js CHANGED
@@ -9,7 +9,9 @@ var __decorateClass = (decorators, target, key, kind) => {
9
9
  if (kind && result) __defProp(target, key, result);
10
10
  return result;
11
11
  };
12
- import { html } from "@spectrum-web-components/base";
12
+ import {
13
+ html
14
+ } from "@spectrum-web-components/base";
13
15
  import {
14
16
  property,
15
17
  query
@@ -41,6 +43,27 @@ export class Icon extends IconBase {
41
43
  firstUpdated() {
42
44
  this.updateIconPromise = this.updateIcon();
43
45
  }
46
+ updated(changes) {
47
+ super.updated(changes);
48
+ if (true) {
49
+ if (changes.has("name") && this.name !== void 0) {
50
+ window.__swc.warn(
51
+ this,
52
+ `<${this.localName}> the "name" attribute is deprecated and will be removed in Spectrum 2. Slot an SVG directly or use an icon factory function instead.`,
53
+ "https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs",
54
+ { level: "deprecation" }
55
+ );
56
+ }
57
+ if (changes.has("src") && this.src !== void 0) {
58
+ window.__swc.warn(
59
+ this,
60
+ `<${this.localName}> the "src" attribute is deprecated and will be removed in Spectrum 2. Slot an <svg> or <img> element directly instead.`,
61
+ "https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs",
62
+ { level: "deprecation" }
63
+ );
64
+ }
65
+ }
66
+ }
44
67
  attributeChangedCallback(name, old, value) {
45
68
  super.attributeChangedCallback(name, old, value);
46
69
  this.updateIconPromise = this.updateIcon();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["Icon.ts"],
4
- "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { html, TemplateResult } from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { IconsetRegistry } from '@spectrum-web-components/iconset/src/iconset-registry.js';\n\nimport { IconBase } from './IconBase.dev.js'\n\n/**\n * @element sp-icon\n */\nexport class Icon extends IconBase {\n @property()\n public src?: string;\n\n @property()\n public name?: string;\n\n @query('#container')\n private iconContainer?: HTMLElement;\n\n private updateIconPromise?: Promise<void>;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override firstUpdated(): void {\n this.updateIconPromise = this.updateIcon();\n }\n\n public override attributeChangedCallback(\n name: string,\n old: string,\n value: string\n ): void {\n super.attributeChangedCallback(name, old, value);\n this.updateIconPromise = this.updateIcon(); // any of our attributes change, update our icon\n }\n\n private iconsetListener = (event: CustomEvent): void => {\n if (!this.name) {\n return;\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n if (event.detail.name === icon.iconset) {\n this.updateIconPromise = this.updateIcon();\n }\n };\n\n private announceIconImageSrcError(): void {\n this.dispatchEvent(\n new Event('error', {\n cancelable: false,\n bubbles: false,\n composed: false,\n })\n );\n }\n\n protected override render(): TemplateResult {\n if (this.name) {\n return html`\n <div id=\"container\"></div>\n `;\n } else if (this.src) {\n return html`\n <img\n src=${this.src}\n alt=${ifDefined(this.label)}\n @error=${this.announceIconImageSrcError}\n />\n `;\n }\n return super.render();\n }\n\n private async updateIcon(): Promise<void> {\n if (this.updateIconPromise) {\n await this.updateIconPromise;\n }\n if (!this.name) {\n return Promise.resolve();\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n // try to retrieve the iconset\n const iconset = IconsetRegistry.getInstance().getIconset(icon.iconset);\n if (!iconset) {\n // we can stop here as there's nothing to be done till we get the iconset\n return Promise.resolve();\n }\n if (!this.iconContainer) {\n return Promise.resolve();\n }\n this.iconContainer.innerHTML = '';\n return iconset.applyIconToElement(\n this.iconContainer,\n icon.icon,\n this.size || '',\n this.label ? this.label : ''\n );\n }\n\n private parseIcon(icon: string): { iconset: string; icon: string } {\n const iconParts = icon.split(':');\n let iconsetName = 'default';\n let iconName = icon;\n if (iconParts.length > 1) {\n iconsetName = iconParts[0];\n iconName = iconParts[1];\n }\n return { iconset: iconsetName, icon: iconName };\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.updateIconPromise;\n return complete;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAYA,SAAS,YAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAEhC,SAAS,gBAAgB;AAKlB,aAAM,aAAa,SAAS;AAAA,EAA5B;AAAA;AAmCL,SAAQ,kBAAkB,CAAC,UAA6B;AACtD,UAAI,CAAC,KAAK,MAAM;AACd;AAAA,MACF;AAEA,YAAM,OAAO,KAAK,UAAU,KAAK,IAAI;AACrC,UAAI,MAAM,OAAO,SAAS,KAAK,SAAS;AACtC,aAAK,oBAAoB,KAAK,WAAW;AAAA,MAC3C;AAAA,IACF;AAAA;AAAA,EAhCgB,oBAA0B;AACxC,UAAM,kBAAkB;AACxB,WAAO,iBAAiB,oBAAoB,KAAK,eAAe;AAAA,EAClE;AAAA,EAEgB,uBAA6B;AAC3C,UAAM,qBAAqB;AAC3B,WAAO,oBAAoB,oBAAoB,KAAK,eAAe;AAAA,EACrE;AAAA,EAEgB,eAAqB;AACnC,SAAK,oBAAoB,KAAK,WAAW;AAAA,EAC3C;AAAA,EAEgB,yBACd,MACA,KACA,OACM;AACN,UAAM,yBAAyB,MAAM,KAAK,KAAK;AAC/C,SAAK,oBAAoB,KAAK,WAAW;AAAA,EAC3C;AAAA,EAaQ,4BAAkC;AACxC,SAAK;AAAA,MACH,IAAI,MAAM,SAAS;AAAA,QACjB,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEmB,SAAyB;AAC1C,QAAI,KAAK,MAAM;AACb,aAAO;AAAA;AAAA;AAAA,IAGT,WAAW,KAAK,KAAK;AACnB,aAAO;AAAA;AAAA,gBAEG,KAAK,GAAG;AAAA,gBACR,UAAU,KAAK,KAAK,CAAC;AAAA,mBAClB,KAAK,yBAAyB;AAAA;AAAA;AAAA,IAG7C;AACA,WAAO,MAAM,OAAO;AAAA,EACtB;AAAA,EAEA,MAAc,aAA4B;AACxC,QAAI,KAAK,mBAAmB;AAC1B,YAAM,KAAK;AAAA,IACb;AACA,QAAI,CAAC,KAAK,MAAM;AACd,aAAO,QAAQ,QAAQ;AAAA,IACzB;AAEA,UAAM,OAAO,KAAK,UAAU,KAAK,IAAI;AAErC,UAAM,UAAU,gBAAgB,YAAY,EAAE,WAAW,KAAK,OAAO;AACrE,QAAI,CAAC,SAAS;AAEZ,aAAO,QAAQ,QAAQ;AAAA,IACzB;AACA,QAAI,CAAC,KAAK,eAAe;AACvB,aAAO,QAAQ,QAAQ;AAAA,IACzB;AACA,SAAK,cAAc,YAAY;AAC/B,WAAO,QAAQ;AAAA,MACb,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ,KAAK,QAAQ;AAAA,IAC5B;AAAA,EACF;AAAA,EAEQ,UAAU,MAAiD;AACjE,UAAM,YAAY,KAAK,MAAM,GAAG;AAChC,QAAI,cAAc;AAClB,QAAI,WAAW;AACf,QAAI,UAAU,SAAS,GAAG;AACxB,oBAAc,UAAU,CAAC;AACzB,iBAAW,UAAU,CAAC;AAAA,IACxB;AACA,WAAO,EAAE,SAAS,aAAa,MAAM,SAAS;AAAA,EAChD;AAAA,EAEA,MAAyB,oBAAsC;AAC7D,UAAM,WAAY,MAAM,MAAM,kBAAkB;AAChD,UAAM,KAAK;AACX,WAAO;AAAA,EACT;AACF;AAlHS;AAAA,EADN,SAAS;AAAA,GADC,KAEJ;AAGA;AAAA,EADN,SAAS;AAAA,GAJC,KAKJ;AAGC;AAAA,EADP,MAAM,YAAY;AAAA,GAPR,KAQH;",
4
+ "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n html,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { IconsetRegistry } from '@spectrum-web-components/iconset/src/iconset-registry.js';\n\nimport { IconBase } from './IconBase.dev.js'\n\n/**\n * @element sp-icon\n */\nexport class Icon extends IconBase {\n @property()\n public src?: string;\n\n @property()\n public name?: string;\n\n @query('#container')\n private iconContainer?: HTMLElement;\n\n private updateIconPromise?: Promise<void>;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override firstUpdated(): void {\n this.updateIconPromise = this.updateIcon();\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (window.__swc?.DEBUG) {\n if (changes.has('name') && this.name !== undefined) {\n window.__swc.warn(\n this,\n `<${this.localName}> the \"name\" attribute is deprecated and will be removed in Spectrum 2. Slot an SVG directly or use an icon factory function instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n if (changes.has('src') && this.src !== undefined) {\n window.__swc.warn(\n this,\n `<${this.localName}> the \"src\" attribute is deprecated and will be removed in Spectrum 2. Slot an <svg> or <img> element directly instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n }\n }\n\n public override attributeChangedCallback(\n name: string,\n old: string,\n value: string\n ): void {\n super.attributeChangedCallback(name, old, value);\n this.updateIconPromise = this.updateIcon(); // any of our attributes change, update our icon\n }\n\n private iconsetListener = (event: CustomEvent): void => {\n if (!this.name) {\n return;\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n if (event.detail.name === icon.iconset) {\n this.updateIconPromise = this.updateIcon();\n }\n };\n\n private announceIconImageSrcError(): void {\n this.dispatchEvent(\n new Event('error', {\n cancelable: false,\n bubbles: false,\n composed: false,\n })\n );\n }\n\n protected override render(): TemplateResult {\n if (this.name) {\n return html`\n <div id=\"container\"></div>\n `;\n } else if (this.src) {\n return html`\n <img\n src=${this.src}\n alt=${ifDefined(this.label)}\n @error=${this.announceIconImageSrcError}\n />\n `;\n }\n return super.render();\n }\n\n private async updateIcon(): Promise<void> {\n if (this.updateIconPromise) {\n await this.updateIconPromise;\n }\n if (!this.name) {\n return Promise.resolve();\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n // try to retrieve the iconset\n const iconset = IconsetRegistry.getInstance().getIconset(icon.iconset);\n if (!iconset) {\n // we can stop here as there's nothing to be done till we get the iconset\n return Promise.resolve();\n }\n if (!this.iconContainer) {\n return Promise.resolve();\n }\n this.iconContainer.innerHTML = '';\n return iconset.applyIconToElement(\n this.iconContainer,\n icon.icon,\n this.size || '',\n this.label ? this.label : ''\n );\n }\n\n private parseIcon(icon: string): { iconset: string; icon: string } {\n const iconParts = icon.split(':');\n let iconsetName = 'default';\n let iconName = icon;\n if (iconParts.length > 1) {\n iconsetName = iconParts[0];\n iconName = iconParts[1];\n }\n return { iconset: iconsetName, icon: iconName };\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.updateIconPromise;\n return complete;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/src/Icon.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var o=(s,r,e,t)=>{for(var i=t>1?void 0:t?l(r,e):r,n=s.length-1,a;n>=0;n--)(a=s[n])&&(i=(t?a(r,e,i):a(i))||i);return t&&i&&p(r,e,i),i};import{html as c}from"@spectrum-web-components/base";import{property as d,query as m}from"@spectrum-web-components/base/src/decorators.js";import{ifDefined as u}from"@spectrum-web-components/base/src/directives.js";import{IconsetRegistry as h}from"@spectrum-web-components/iconset/src/iconset-registry.js";import{IconBase as v}from"./IconBase.js";export class Icon extends v{constructor(){super(...arguments);this.iconsetListener=e=>{if(!this.name)return;const t=this.parseIcon(this.name);e.detail.name===t.iconset&&(this.updateIconPromise=this.updateIcon())}}connectedCallback(){super.connectedCallback(),window.addEventListener("sp-iconset-added",this.iconsetListener)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("sp-iconset-added",this.iconsetListener)}firstUpdated(){this.updateIconPromise=this.updateIcon()}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i),this.updateIconPromise=this.updateIcon()}announceIconImageSrcError(){this.dispatchEvent(new Event("error",{cancelable:!1,bubbles:!1,composed:!1}))}render(){return this.name?c`
1
+ "use strict";var p=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var r=(s,o,e,t)=>{for(var i=t>1?void 0:t?l(o,e):o,n=s.length-1,a;n>=0;n--)(a=s[n])&&(i=(t?a(o,e,i):a(i))||i);return t&&i&&p(o,e,i),i};import{html as c}from"@spectrum-web-components/base";import{property as d,query as m}from"@spectrum-web-components/base/src/decorators.js";import{ifDefined as u}from"@spectrum-web-components/base/src/directives.js";import{IconsetRegistry as h}from"@spectrum-web-components/iconset/src/iconset-registry.js";import{IconBase as v}from"./IconBase.js";export class Icon extends v{constructor(){super(...arguments);this.iconsetListener=e=>{if(!this.name)return;const t=this.parseIcon(this.name);e.detail.name===t.iconset&&(this.updateIconPromise=this.updateIcon())}}connectedCallback(){super.connectedCallback(),window.addEventListener("sp-iconset-added",this.iconsetListener)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("sp-iconset-added",this.iconsetListener)}firstUpdated(){this.updateIconPromise=this.updateIcon()}updated(e){super.updated(e)}attributeChangedCallback(e,t,i){super.attributeChangedCallback(e,t,i),this.updateIconPromise=this.updateIcon()}announceIconImageSrcError(){this.dispatchEvent(new Event("error",{cancelable:!1,bubbles:!1,composed:!1}))}render(){return this.name?c`
2
2
  <div id="container"></div>
3
3
  `:this.src?c`
4
4
  <img
@@ -6,5 +6,5 @@
6
6
  alt=${u(this.label)}
7
7
  @error=${this.announceIconImageSrcError}
8
8
  />
9
- `:super.render()}async updateIcon(){if(this.updateIconPromise&&await this.updateIconPromise,!this.name)return Promise.resolve();const e=this.parseIcon(this.name),t=h.getInstance().getIconset(e.iconset);return!t||!this.iconContainer?Promise.resolve():(this.iconContainer.innerHTML="",t.applyIconToElement(this.iconContainer,e.icon,this.size||"",this.label?this.label:""))}parseIcon(e){const t=e.split(":");let i="default",n=e;return t.length>1&&(i=t[0],n=t[1]),{iconset:i,icon:n}}async getUpdateComplete(){const e=await super.getUpdateComplete();return await this.updateIconPromise,e}}o([d()],Icon.prototype,"src",2),o([d()],Icon.prototype,"name",2),o([m("#container")],Icon.prototype,"iconContainer",2);
9
+ `:super.render()}async updateIcon(){if(this.updateIconPromise&&await this.updateIconPromise,!this.name)return Promise.resolve();const e=this.parseIcon(this.name),t=h.getInstance().getIconset(e.iconset);return!t||!this.iconContainer?Promise.resolve():(this.iconContainer.innerHTML="",t.applyIconToElement(this.iconContainer,e.icon,this.size||"",this.label?this.label:""))}parseIcon(e){const t=e.split(":");let i="default",n=e;return t.length>1&&(i=t[0],n=t[1]),{iconset:i,icon:n}}async getUpdateComplete(){const e=await super.getUpdateComplete();return await this.updateIconPromise,e}}r([d()],Icon.prototype,"src",2),r([d()],Icon.prototype,"name",2),r([m("#container")],Icon.prototype,"iconContainer",2);
10
10
  //# sourceMappingURL=Icon.js.map
package/src/Icon.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["Icon.ts"],
4
- "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { html, TemplateResult } from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { IconsetRegistry } from '@spectrum-web-components/iconset/src/iconset-registry.js';\n\nimport { IconBase } from './IconBase.js';\n\n/**\n * @element sp-icon\n */\nexport class Icon extends IconBase {\n @property()\n public src?: string;\n\n @property()\n public name?: string;\n\n @query('#container')\n private iconContainer?: HTMLElement;\n\n private updateIconPromise?: Promise<void>;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override firstUpdated(): void {\n this.updateIconPromise = this.updateIcon();\n }\n\n public override attributeChangedCallback(\n name: string,\n old: string,\n value: string\n ): void {\n super.attributeChangedCallback(name, old, value);\n this.updateIconPromise = this.updateIcon(); // any of our attributes change, update our icon\n }\n\n private iconsetListener = (event: CustomEvent): void => {\n if (!this.name) {\n return;\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n if (event.detail.name === icon.iconset) {\n this.updateIconPromise = this.updateIcon();\n }\n };\n\n private announceIconImageSrcError(): void {\n this.dispatchEvent(\n new Event('error', {\n cancelable: false,\n bubbles: false,\n composed: false,\n })\n );\n }\n\n protected override render(): TemplateResult {\n if (this.name) {\n return html`\n <div id=\"container\"></div>\n `;\n } else if (this.src) {\n return html`\n <img\n src=${this.src}\n alt=${ifDefined(this.label)}\n @error=${this.announceIconImageSrcError}\n />\n `;\n }\n return super.render();\n }\n\n private async updateIcon(): Promise<void> {\n if (this.updateIconPromise) {\n await this.updateIconPromise;\n }\n if (!this.name) {\n return Promise.resolve();\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n // try to retrieve the iconset\n const iconset = IconsetRegistry.getInstance().getIconset(icon.iconset);\n if (!iconset) {\n // we can stop here as there's nothing to be done till we get the iconset\n return Promise.resolve();\n }\n if (!this.iconContainer) {\n return Promise.resolve();\n }\n this.iconContainer.innerHTML = '';\n return iconset.applyIconToElement(\n this.iconContainer,\n icon.icon,\n this.size || '',\n this.label ? this.label : ''\n );\n }\n\n private parseIcon(icon: string): { iconset: string; icon: string } {\n const iconParts = icon.split(':');\n let iconsetName = 'default';\n let iconName = icon;\n if (iconParts.length > 1) {\n iconsetName = iconParts[0];\n iconName = iconParts[1];\n }\n return { iconset: iconsetName, icon: iconName };\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.updateIconPromise;\n return complete;\n }\n}\n"],
5
- "mappings": "qNAYA,OAAS,QAAAA,MAA4B,gCACrC,OACE,YAAAC,EACA,SAAAC,MACK,kDACP,OAAS,aAAAC,MAAiB,kDAC1B,OAAS,mBAAAC,MAAuB,2DAEhC,OAAS,YAAAC,MAAgB,gBAKlB,aAAM,aAAaA,CAAS,CAA5B,kCAmCL,KAAQ,gBAAmBC,GAA6B,CACtD,GAAI,CAAC,KAAK,KACR,OAGF,MAAMC,EAAO,KAAK,UAAU,KAAK,IAAI,EACjCD,EAAM,OAAO,OAASC,EAAK,UAC7B,KAAK,kBAAoB,KAAK,WAAW,EAE7C,EAhCgB,mBAA0B,CACxC,MAAM,kBAAkB,EACxB,OAAO,iBAAiB,mBAAoB,KAAK,eAAe,CAClE,CAEgB,sBAA6B,CAC3C,MAAM,qBAAqB,EAC3B,OAAO,oBAAoB,mBAAoB,KAAK,eAAe,CACrE,CAEgB,cAAqB,CACnC,KAAK,kBAAoB,KAAK,WAAW,CAC3C,CAEgB,yBACdC,EACAC,EACAC,EACM,CACN,MAAM,yBAAyBF,EAAMC,EAAKC,CAAK,EAC/C,KAAK,kBAAoB,KAAK,WAAW,CAC3C,CAaQ,2BAAkC,CACxC,KAAK,cACH,IAAI,MAAM,QAAS,CACjB,WAAY,GACZ,QAAS,GACT,SAAU,EACZ,CAAC,CACH,CACF,CAEmB,QAAyB,CAC1C,OAAI,KAAK,KACAV;AAAA;AAAA,QAGE,KAAK,IACPA;AAAA;AAAA,gBAEG,KAAK,GAAG;AAAA,gBACRG,EAAU,KAAK,KAAK,CAAC;AAAA,mBAClB,KAAK,yBAAyB;AAAA;AAAA,QAItC,MAAM,OAAO,CACtB,CAEA,MAAc,YAA4B,CAIxC,GAHI,KAAK,mBACP,MAAM,KAAK,kBAET,CAAC,KAAK,KACR,OAAO,QAAQ,QAAQ,EAGzB,MAAMI,EAAO,KAAK,UAAU,KAAK,IAAI,EAE/BI,EAAUP,EAAgB,YAAY,EAAE,WAAWG,EAAK,OAAO,EAKrE,MAJI,CAACI,GAID,CAAC,KAAK,cACD,QAAQ,QAAQ,GAEzB,KAAK,cAAc,UAAY,GACxBA,EAAQ,mBACb,KAAK,cACLJ,EAAK,KACL,KAAK,MAAQ,GACb,KAAK,MAAQ,KAAK,MAAQ,EAC5B,EACF,CAEQ,UAAUA,EAAiD,CACjE,MAAMK,EAAYL,EAAK,MAAM,GAAG,EAChC,IAAIM,EAAc,UACdC,EAAWP,EACf,OAAIK,EAAU,OAAS,IACrBC,EAAcD,EAAU,CAAC,EACzBE,EAAWF,EAAU,CAAC,GAEjB,CAAE,QAASC,EAAa,KAAMC,CAAS,CAChD,CAEA,MAAyB,mBAAsC,CAC7D,MAAMC,EAAY,MAAM,MAAM,kBAAkB,EAChD,aAAM,KAAK,kBACJA,CACT,CACF,CAlHSC,EAAA,CADNf,EAAS,GADC,KAEJ,mBAGAe,EAAA,CADNf,EAAS,GAJC,KAKJ,oBAGCe,EAAA,CADPd,EAAM,YAAY,GAPR,KAQH",
6
- "names": ["html", "property", "query", "ifDefined", "IconsetRegistry", "IconBase", "event", "icon", "name", "old", "value", "iconset", "iconParts", "iconsetName", "iconName", "complete", "__decorateClass"]
4
+ "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n html,\n PropertyValues,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n query,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport { ifDefined } from '@spectrum-web-components/base/src/directives.js';\nimport { IconsetRegistry } from '@spectrum-web-components/iconset/src/iconset-registry.js';\n\nimport { IconBase } from './IconBase.js';\n\n/**\n * @element sp-icon\n */\nexport class Icon extends IconBase {\n @property()\n public src?: string;\n\n @property()\n public name?: string;\n\n @query('#container')\n private iconContainer?: HTMLElement;\n\n private updateIconPromise?: Promise<void>;\n\n public override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('sp-iconset-added', this.iconsetListener);\n }\n\n public override firstUpdated(): void {\n this.updateIconPromise = this.updateIcon();\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (window.__swc?.DEBUG) {\n if (changes.has('name') && this.name !== undefined) {\n window.__swc.warn(\n this,\n `<${this.localName}> the \"name\" attribute is deprecated and will be removed in Spectrum 2. Slot an SVG directly or use an icon factory function instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n if (changes.has('src') && this.src !== undefined) {\n window.__swc.warn(\n this,\n `<${this.localName}> the \"src\" attribute is deprecated and will be removed in Spectrum 2. Slot an <svg> or <img> element directly instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n }\n }\n\n public override attributeChangedCallback(\n name: string,\n old: string,\n value: string\n ): void {\n super.attributeChangedCallback(name, old, value);\n this.updateIconPromise = this.updateIcon(); // any of our attributes change, update our icon\n }\n\n private iconsetListener = (event: CustomEvent): void => {\n if (!this.name) {\n return;\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n if (event.detail.name === icon.iconset) {\n this.updateIconPromise = this.updateIcon();\n }\n };\n\n private announceIconImageSrcError(): void {\n this.dispatchEvent(\n new Event('error', {\n cancelable: false,\n bubbles: false,\n composed: false,\n })\n );\n }\n\n protected override render(): TemplateResult {\n if (this.name) {\n return html`\n <div id=\"container\"></div>\n `;\n } else if (this.src) {\n return html`\n <img\n src=${this.src}\n alt=${ifDefined(this.label)}\n @error=${this.announceIconImageSrcError}\n />\n `;\n }\n return super.render();\n }\n\n private async updateIcon(): Promise<void> {\n if (this.updateIconPromise) {\n await this.updateIconPromise;\n }\n if (!this.name) {\n return Promise.resolve();\n }\n // parse the icon name to get iconset name\n const icon = this.parseIcon(this.name);\n // try to retrieve the iconset\n const iconset = IconsetRegistry.getInstance().getIconset(icon.iconset);\n if (!iconset) {\n // we can stop here as there's nothing to be done till we get the iconset\n return Promise.resolve();\n }\n if (!this.iconContainer) {\n return Promise.resolve();\n }\n this.iconContainer.innerHTML = '';\n return iconset.applyIconToElement(\n this.iconContainer,\n icon.icon,\n this.size || '',\n this.label ? this.label : ''\n );\n }\n\n private parseIcon(icon: string): { iconset: string; icon: string } {\n const iconParts = icon.split(':');\n let iconsetName = 'default';\n let iconName = icon;\n if (iconParts.length > 1) {\n iconsetName = iconParts[0];\n iconName = iconParts[1];\n }\n return { iconset: iconsetName, icon: iconName };\n }\n\n protected override async getUpdateComplete(): Promise<boolean> {\n const complete = (await super.getUpdateComplete()) as boolean;\n await this.updateIconPromise;\n return complete;\n }\n}\n"],
5
+ "mappings": "qNAYA,OACE,QAAAA,MAGK,gCACP,OACE,YAAAC,EACA,SAAAC,MACK,kDACP,OAAS,aAAAC,MAAiB,kDAC1B,OAAS,mBAAAC,MAAuB,2DAEhC,OAAS,YAAAC,MAAgB,gBAKlB,aAAM,aAAaA,CAAS,CAA5B,kCAyDL,KAAQ,gBAAmBC,GAA6B,CACtD,GAAI,CAAC,KAAK,KACR,OAGF,MAAMC,EAAO,KAAK,UAAU,KAAK,IAAI,EACjCD,EAAM,OAAO,OAASC,EAAK,UAC7B,KAAK,kBAAoB,KAAK,WAAW,EAE7C,EAtDgB,mBAA0B,CACxC,MAAM,kBAAkB,EACxB,OAAO,iBAAiB,mBAAoB,KAAK,eAAe,CAClE,CAEgB,sBAA6B,CAC3C,MAAM,qBAAqB,EAC3B,OAAO,oBAAoB,mBAAoB,KAAK,eAAe,CACrE,CAEgB,cAAqB,CACnC,KAAK,kBAAoB,KAAK,WAAW,CAC3C,CAEmB,QAAQC,EAA+B,CACxD,MAAM,QAAQA,CAAO,CAmBvB,CAEgB,yBACdC,EACAC,EACAC,EACM,CACN,MAAM,yBAAyBF,EAAMC,EAAKC,CAAK,EAC/C,KAAK,kBAAoB,KAAK,WAAW,CAC3C,CAaQ,2BAAkC,CACxC,KAAK,cACH,IAAI,MAAM,QAAS,CACjB,WAAY,GACZ,QAAS,GACT,SAAU,EACZ,CAAC,CACH,CACF,CAEmB,QAAyB,CAC1C,OAAI,KAAK,KACAX;AAAA;AAAA,QAGE,KAAK,IACPA;AAAA;AAAA,gBAEG,KAAK,GAAG;AAAA,gBACRG,EAAU,KAAK,KAAK,CAAC;AAAA,mBAClB,KAAK,yBAAyB;AAAA;AAAA,QAItC,MAAM,OAAO,CACtB,CAEA,MAAc,YAA4B,CAIxC,GAHI,KAAK,mBACP,MAAM,KAAK,kBAET,CAAC,KAAK,KACR,OAAO,QAAQ,QAAQ,EAGzB,MAAMI,EAAO,KAAK,UAAU,KAAK,IAAI,EAE/BK,EAAUR,EAAgB,YAAY,EAAE,WAAWG,EAAK,OAAO,EAKrE,MAJI,CAACK,GAID,CAAC,KAAK,cACD,QAAQ,QAAQ,GAEzB,KAAK,cAAc,UAAY,GACxBA,EAAQ,mBACb,KAAK,cACLL,EAAK,KACL,KAAK,MAAQ,GACb,KAAK,MAAQ,KAAK,MAAQ,EAC5B,EACF,CAEQ,UAAUA,EAAiD,CACjE,MAAMM,EAAYN,EAAK,MAAM,GAAG,EAChC,IAAIO,EAAc,UACdC,EAAWR,EACf,OAAIM,EAAU,OAAS,IACrBC,EAAcD,EAAU,CAAC,EACzBE,EAAWF,EAAU,CAAC,GAEjB,CAAE,QAASC,EAAa,KAAMC,CAAS,CAChD,CAEA,MAAyB,mBAAsC,CAC7D,MAAMC,EAAY,MAAM,MAAM,kBAAkB,EAChD,aAAM,KAAK,kBACJA,CACT,CACF,CAxISC,EAAA,CADNhB,EAAS,GADC,KAEJ,mBAGAgB,EAAA,CADNhB,EAAS,GAJC,KAKJ,oBAGCgB,EAAA,CADPf,EAAM,YAAY,GAPR,KAQH",
6
+ "names": ["html", "property", "query", "ifDefined", "IconsetRegistry", "IconBase", "event", "icon", "changes", "name", "old", "value", "iconset", "iconParts", "iconsetName", "iconName", "complete", "__decorateClass"]
7
7
  }
@@ -54,6 +54,16 @@ export class IconBase extends SpectrumElement {
54
54
  if (changes.has(systemResolverUpdatedSymbol)) {
55
55
  this.spectrumVersion = this.systemResolver.system === "spectrum-two" ? 2 : 1;
56
56
  }
57
+ if (true) {
58
+ if (changes.has("size") && (this.size === "xxs" || this.size === "xxl")) {
59
+ window.__swc.warn(
60
+ this,
61
+ `<${this.localName}> the "${this.size}" size value is deprecated and will be removed in Spectrum 2. Use "${this.size === "xxs" ? "xs" : "xl"}" instead.`,
62
+ "https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs",
63
+ { level: "deprecation" }
64
+ );
65
+ }
66
+ }
57
67
  super.update(changes);
58
68
  }
59
69
  render() {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["IconBase.ts"],
4
- "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n SystemResolutionController,\n systemResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/SystemContextResolution.js';\n\nimport iconStyles from './icon.css.js';\n\nexport class IconBase extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [iconStyles];\n }\n\n private unsubscribeSystemContext: (() => void) | null = null;\n\n @state()\n public spectrumVersion = 1;\n\n @property({ reflect: true })\n public label = '';\n\n @property({ reflect: true })\n public size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n public override connectedCallback(): void {\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.unsubscribeSystemContext) {\n this.unsubscribeSystemContext();\n this.unsubscribeSystemContext = null;\n }\n }\n\n private systemResolver = new SystemResolutionController(this);\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('label')) {\n if (this.label) {\n this.removeAttribute('aria-hidden');\n } else {\n this.setAttribute('aria-hidden', 'true');\n }\n }\n\n if (changes.has(systemResolverUpdatedSymbol)) {\n this.spectrumVersion =\n this.systemResolver.system === 'spectrum-two' ? 2 : 1;\n }\n\n super.update(changes);\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;AAYA;AAAA,EAEE;AAAA,EAEA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,OAAO,gBAAgB;AAEhB,aAAM,iBAAiB,gBAAgB;AAAA,EAAvC;AAAA;AAKL,SAAQ,2BAAgD;AAGxD,SAAO,kBAAkB;AAGzB,SAAO,QAAQ;AAiBf,SAAQ,iBAAiB,IAAI,2BAA2B,IAAI;AAAA;AAAA,EA3B5D,WAA2B,SAAyB;AAClD,WAAO,CAAC,UAAU;AAAA,EACpB;AAAA,EAagB,oBAA0B;AACxC,UAAM,kBAAkB;AAAA,EAC1B;AAAA,EAEgB,uBAA6B;AAC3C,UAAM,qBAAqB;AAC3B,QAAI,KAAK,0BAA0B;AACjC,WAAK,yBAAyB;AAC9B,WAAK,2BAA2B;AAAA,IAClC;AAAA,EACF;AAAA,EAImB,OAAO,SAA+B;AACvD,QAAI,QAAQ,IAAI,OAAO,GAAG;AACxB,UAAI,KAAK,OAAO;AACd,aAAK,gBAAgB,aAAa;AAAA,MACpC,OAAO;AACL,aAAK,aAAa,eAAe,MAAM;AAAA,MACzC;AAAA,IACF;AAEA,QAAI,QAAQ,IAAI,2BAA2B,GAAG;AAC5C,WAAK,kBACH,KAAK,eAAe,WAAW,iBAAiB,IAAI;AAAA,IACxD;AAEA,UAAM,OAAO,OAAO;AAAA,EACtB;AAAA,EAEmB,SAAyB;AAC1C,WAAO;AAAA;AAAA;AAAA,EAGT;AACF;AA5CS;AAAA,EADN,MAAM;AAAA,GAPI,SAQJ;AAGA;AAAA,EADN,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAVhB,SAWJ;AAGA;AAAA,EADN,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAbhB,SAcJ;",
4
+ "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n SystemResolutionController,\n systemResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/SystemContextResolution.js';\n\nimport iconStyles from './icon.css.js';\n\nexport class IconBase extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [iconStyles];\n }\n\n private unsubscribeSystemContext: (() => void) | null = null;\n\n @state()\n public spectrumVersion = 1;\n\n @property({ reflect: true })\n public label = '';\n\n @property({ reflect: true })\n public size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n public override connectedCallback(): void {\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.unsubscribeSystemContext) {\n this.unsubscribeSystemContext();\n this.unsubscribeSystemContext = null;\n }\n }\n\n private systemResolver = new SystemResolutionController(this);\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('label')) {\n if (this.label) {\n this.removeAttribute('aria-hidden');\n } else {\n this.setAttribute('aria-hidden', 'true');\n }\n }\n\n if (changes.has(systemResolverUpdatedSymbol)) {\n this.spectrumVersion =\n this.systemResolver.system === 'spectrum-two' ? 2 : 1;\n }\n\n if (window.__swc?.DEBUG) {\n if (changes.has('size') && (this.size === 'xxs' || this.size === 'xxl')) {\n window.__swc.warn(\n this,\n `<${this.localName}> the \"${this.size}\" size value is deprecated and will be removed in Spectrum 2. Use \"${this.size === 'xxs' ? 'xs' : 'xl'}\" instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n }\n\n super.update(changes);\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAYA;AAAA,EAEE;AAAA,EAEA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,OAAO,gBAAgB;AAEhB,aAAM,iBAAiB,gBAAgB;AAAA,EAAvC;AAAA;AAKL,SAAQ,2BAAgD;AAGxD,SAAO,kBAAkB;AAGzB,SAAO,QAAQ;AAiBf,SAAQ,iBAAiB,IAAI,2BAA2B,IAAI;AAAA;AAAA,EA3B5D,WAA2B,SAAyB;AAClD,WAAO,CAAC,UAAU;AAAA,EACpB;AAAA,EAagB,oBAA0B;AACxC,UAAM,kBAAkB;AAAA,EAC1B;AAAA,EAEgB,uBAA6B;AAC3C,UAAM,qBAAqB;AAC3B,QAAI,KAAK,0BAA0B;AACjC,WAAK,yBAAyB;AAC9B,WAAK,2BAA2B;AAAA,IAClC;AAAA,EACF;AAAA,EAImB,OAAO,SAA+B;AACvD,QAAI,QAAQ,IAAI,OAAO,GAAG;AACxB,UAAI,KAAK,OAAO;AACd,aAAK,gBAAgB,aAAa;AAAA,MACpC,OAAO;AACL,aAAK,aAAa,eAAe,MAAM;AAAA,MACzC;AAAA,IACF;AAEA,QAAI,QAAQ,IAAI,2BAA2B,GAAG;AAC5C,WAAK,kBACH,KAAK,eAAe,WAAW,iBAAiB,IAAI;AAAA,IACxD;AAEA,QAAI,MAAqB;AACvB,UAAI,QAAQ,IAAI,MAAM,MAAM,KAAK,SAAS,SAAS,KAAK,SAAS,QAAQ;AACvE,eAAO,MAAM;AAAA,UACX;AAAA,UACA,IAAI,KAAK,SAAS,UAAU,KAAK,IAAI,sEAAsE,KAAK,SAAS,QAAQ,OAAO,IAAI;AAAA,UAC5I;AAAA,UACA,EAAE,OAAO,cAAc;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,OAAO,OAAO;AAAA,EACtB;AAAA,EAEmB,SAAyB;AAC1C,WAAO;AAAA;AAAA;AAAA,EAGT;AACF;AAvDS;AAAA,EADN,MAAM;AAAA,GAPI,SAQJ;AAGA;AAAA,EADN,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAVhB,SAWJ;AAGA;AAAA,EADN,SAAS,EAAE,SAAS,KAAK,CAAC;AAAA,GAbhB,SAcJ;",
6
6
  "names": []
7
7
  }
package/src/IconBase.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=(i,r,e,s)=>{for(var t=s>1?void 0:s?m(r,e):r,o=i.length-1,u;o>=0;o--)(u=i[o])&&(t=(s?u(r,e,t):u(t))||t);return s&&t&&c(r,e,t),t};import{html as n,SpectrumElement as a}from"@spectrum-web-components/base";import{property as p,state as d}from"@spectrum-web-components/base/src/decorators.js";import{SystemResolutionController as b,systemResolverUpdatedSymbol as y}from"@spectrum-web-components/reactive-controllers/src/SystemContextResolution.js";import v from"./icon.css.js";export class IconBase extends a{constructor(){super(...arguments);this.unsubscribeSystemContext=null;this.spectrumVersion=1;this.label="";this.systemResolver=new b(this)}static get styles(){return[v]}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this.unsubscribeSystemContext&&(this.unsubscribeSystemContext(),this.unsubscribeSystemContext=null)}update(e){e.has("label")&&(this.label?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true")),e.has(y)&&(this.spectrumVersion=this.systemResolver.system==="spectrum-two"?2:1),super.update(e)}render(){return n`
1
+ "use strict";var n=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var r=(l,s,e,i)=>{for(var t=i>1?void 0:i?a(s,e):s,o=l.length-1,u;o>=0;o--)(u=l[o])&&(t=(i?u(s,e,t):u(t))||t);return i&&t&&n(s,e,t),t};import{html as d,SpectrumElement as p}from"@spectrum-web-components/base";import{property as c,state as m}from"@spectrum-web-components/base/src/decorators.js";import{SystemResolutionController as b,systemResolverUpdatedSymbol as h}from"@spectrum-web-components/reactive-controllers/src/SystemContextResolution.js";import x from"./icon.css.js";export class IconBase extends p{constructor(){super(...arguments);this.unsubscribeSystemContext=null;this.spectrumVersion=1;this.label="";this.systemResolver=new b(this)}static get styles(){return[x]}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback(),this.unsubscribeSystemContext&&(this.unsubscribeSystemContext(),this.unsubscribeSystemContext=null)}update(e){e.has("label")&&(this.label?this.removeAttribute("aria-hidden"):this.setAttribute("aria-hidden","true")),e.has(h)&&(this.spectrumVersion=this.systemResolver.system==="spectrum-two"?2:1),super.update(e)}render(){return d`
2
2
  <slot></slot>
3
- `}}l([d()],IconBase.prototype,"spectrumVersion",2),l([p({reflect:!0})],IconBase.prototype,"label",2),l([p({reflect:!0})],IconBase.prototype,"size",2);
3
+ `}}r([m()],IconBase.prototype,"spectrumVersion",2),r([c({reflect:!0})],IconBase.prototype,"label",2),r([c({reflect:!0})],IconBase.prototype,"size",2);
4
4
  //# sourceMappingURL=IconBase.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["IconBase.ts"],
4
- "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n SystemResolutionController,\n systemResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/SystemContextResolution.js';\n\nimport iconStyles from './icon.css.js';\n\nexport class IconBase extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [iconStyles];\n }\n\n private unsubscribeSystemContext: (() => void) | null = null;\n\n @state()\n public spectrumVersion = 1;\n\n @property({ reflect: true })\n public label = '';\n\n @property({ reflect: true })\n public size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n public override connectedCallback(): void {\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.unsubscribeSystemContext) {\n this.unsubscribeSystemContext();\n this.unsubscribeSystemContext = null;\n }\n }\n\n private systemResolver = new SystemResolutionController(this);\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('label')) {\n if (this.label) {\n this.removeAttribute('aria-hidden');\n } else {\n this.setAttribute('aria-hidden', 'true');\n }\n }\n\n if (changes.has(systemResolverUpdatedSymbol)) {\n this.spectrumVersion =\n this.systemResolver.system === 'spectrum-two' ? 2 : 1;\n }\n\n super.update(changes);\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
5
- "mappings": "qNAYA,OAEE,QAAAA,EAEA,mBAAAC,MAEK,gCACP,OACE,YAAAC,EACA,SAAAC,MACK,kDACP,OACE,8BAAAC,EACA,+BAAAC,MACK,+EAEP,OAAOC,MAAgB,gBAEhB,aAAM,iBAAiBL,CAAgB,CAAvC,kCAKL,KAAQ,yBAAgD,KAGxD,KAAO,gBAAkB,EAGzB,KAAO,MAAQ,GAiBf,KAAQ,eAAiB,IAAIG,EAA2B,IAAI,EA3B5D,WAA2B,QAAyB,CAClD,MAAO,CAACE,CAAU,CACpB,CAagB,mBAA0B,CACxC,MAAM,kBAAkB,CAC1B,CAEgB,sBAA6B,CAC3C,MAAM,qBAAqB,EACvB,KAAK,2BACP,KAAK,yBAAyB,EAC9B,KAAK,yBAA2B,KAEpC,CAImB,OAAOC,EAA+B,CACnDA,EAAQ,IAAI,OAAO,IACjB,KAAK,MACP,KAAK,gBAAgB,aAAa,EAElC,KAAK,aAAa,cAAe,MAAM,GAIvCA,EAAQ,IAAIF,CAA2B,IACzC,KAAK,gBACH,KAAK,eAAe,SAAW,eAAiB,EAAI,GAGxD,MAAM,OAAOE,CAAO,CACtB,CAEmB,QAAyB,CAC1C,OAAOP;AAAA;AAAA,KAGT,CACF,CA5CSQ,EAAA,CADNL,EAAM,GAPI,SAQJ,+BAGAK,EAAA,CADNN,EAAS,CAAE,QAAS,EAAK,CAAC,GAVhB,SAWJ,qBAGAM,EAAA,CADNN,EAAS,CAAE,QAAS,EAAK,CAAC,GAbhB,SAcJ",
4
+ "sourcesContent": ["/**\n * Copyright 2026 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n CSSResultArray,\n html,\n PropertyValues,\n SpectrumElement,\n TemplateResult,\n} from '@spectrum-web-components/base';\nimport {\n property,\n state,\n} from '@spectrum-web-components/base/src/decorators.js';\nimport {\n SystemResolutionController,\n systemResolverUpdatedSymbol,\n} from '@spectrum-web-components/reactive-controllers/src/SystemContextResolution.js';\n\nimport iconStyles from './icon.css.js';\n\nexport class IconBase extends SpectrumElement {\n public static override get styles(): CSSResultArray {\n return [iconStyles];\n }\n\n private unsubscribeSystemContext: (() => void) | null = null;\n\n @state()\n public spectrumVersion = 1;\n\n @property({ reflect: true })\n public label = '';\n\n @property({ reflect: true })\n public size?: 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n public override connectedCallback(): void {\n super.connectedCallback();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.unsubscribeSystemContext) {\n this.unsubscribeSystemContext();\n this.unsubscribeSystemContext = null;\n }\n }\n\n private systemResolver = new SystemResolutionController(this);\n\n protected override update(changes: PropertyValues): void {\n if (changes.has('label')) {\n if (this.label) {\n this.removeAttribute('aria-hidden');\n } else {\n this.setAttribute('aria-hidden', 'true');\n }\n }\n\n if (changes.has(systemResolverUpdatedSymbol)) {\n this.spectrumVersion =\n this.systemResolver.system === 'spectrum-two' ? 2 : 1;\n }\n\n if (window.__swc?.DEBUG) {\n if (changes.has('size') && (this.size === 'xxs' || this.size === 'xxl')) {\n window.__swc.warn(\n this,\n `<${this.localName}> the \"${this.size}\" size value is deprecated and will be removed in Spectrum 2. Use \"${this.size === 'xxs' ? 'xs' : 'xl'}\" instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/icon-consumer-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n }\n\n super.update(changes);\n }\n\n protected override render(): TemplateResult {\n return html`\n <slot></slot>\n `;\n }\n}\n"],
5
+ "mappings": "qNAYA,OAEE,QAAAA,EAEA,mBAAAC,MAEK,gCACP,OACE,YAAAC,EACA,SAAAC,MACK,kDACP,OACE,8BAAAC,EACA,+BAAAC,MACK,+EAEP,OAAOC,MAAgB,gBAEhB,aAAM,iBAAiBL,CAAgB,CAAvC,kCAKL,KAAQ,yBAAgD,KAGxD,KAAO,gBAAkB,EAGzB,KAAO,MAAQ,GAiBf,KAAQ,eAAiB,IAAIG,EAA2B,IAAI,EA3B5D,WAA2B,QAAyB,CAClD,MAAO,CAACE,CAAU,CACpB,CAagB,mBAA0B,CACxC,MAAM,kBAAkB,CAC1B,CAEgB,sBAA6B,CAC3C,MAAM,qBAAqB,EACvB,KAAK,2BACP,KAAK,yBAAyB,EAC9B,KAAK,yBAA2B,KAEpC,CAImB,OAAOC,EAA+B,CACnDA,EAAQ,IAAI,OAAO,IACjB,KAAK,MACP,KAAK,gBAAgB,aAAa,EAElC,KAAK,aAAa,cAAe,MAAM,GAIvCA,EAAQ,IAAIF,CAA2B,IACzC,KAAK,gBACH,KAAK,eAAe,SAAW,eAAiB,EAAI,GAcxD,MAAM,OAAOE,CAAO,CACtB,CAEmB,QAAyB,CAC1C,OAAOP;AAAA;AAAA,KAGT,CACF,CAvDSQ,EAAA,CADNL,EAAM,GAPI,SAQJ,+BAGAK,EAAA,CADNN,EAAS,CAAE,QAAS,EAAK,CAAC,GAVhB,SAWJ,qBAGAM,EAAA,CADNN,EAAS,CAAE,QAAS,EAAK,CAAC,GAbhB,SAcJ",
6
6
  "names": ["html", "SpectrumElement", "property", "state", "SystemResolutionController", "systemResolverUpdatedSymbol", "iconStyles", "changes", "__decorateClass"]
7
7
  }