@adobe/spectrum-wc-core 0.4.0-snapshot-test.20260714143259

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 (269) hide show
  1. package/README.md +39 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.124.0/helpers/decorate.js +9 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.124.0/helpers/defineProperty.js +12 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.124.0/helpers/toPrimitive.js +14 -0
  5. package/dist/_virtual/_@oxc-project_runtime@0.124.0/helpers/toPropertyKey.js +9 -0
  6. package/dist/_virtual/_@oxc-project_runtime@0.124.0/helpers/typeof.js +11 -0
  7. package/dist/components/accordion/Accordion.base.d.ts +61 -0
  8. package/dist/components/accordion/Accordion.base.js +71 -0
  9. package/dist/components/accordion/Accordion.base.js.map +1 -0
  10. package/dist/components/accordion/Accordion.types.d.ts +22 -0
  11. package/dist/components/accordion/Accordion.types.js +21 -0
  12. package/dist/components/accordion/Accordion.types.js.map +1 -0
  13. package/dist/components/accordion/AccordionItem.base.d.ts +86 -0
  14. package/dist/components/accordion/AccordionItem.base.js +90 -0
  15. package/dist/components/accordion/AccordionItem.base.js.map +1 -0
  16. package/dist/components/accordion/index.d.ts +14 -0
  17. package/dist/components/accordion/index.js +4 -0
  18. package/dist/components/action-button/ActionButton.types.d.ts +15 -0
  19. package/dist/components/action-button/ActionButton.types.js +12 -0
  20. package/dist/components/action-button/ActionButton.types.js.map +1 -0
  21. package/dist/components/action-button/index.d.ts +12 -0
  22. package/dist/components/action-button/index.js +2 -0
  23. package/dist/components/alert-banner/AlertBanner.base.d.ts +36 -0
  24. package/dist/components/alert-banner/AlertBanner.base.js +56 -0
  25. package/dist/components/alert-banner/AlertBanner.base.js.map +1 -0
  26. package/dist/components/alert-banner/AlertBanner.types.d.ts +13 -0
  27. package/dist/components/alert-banner/AlertBanner.types.js +10 -0
  28. package/dist/components/alert-banner/AlertBanner.types.js.map +1 -0
  29. package/dist/components/alert-banner/index.d.ts +13 -0
  30. package/dist/components/alert-banner/index.js +3 -0
  31. package/dist/components/asset/Asset.base.d.ts +22 -0
  32. package/dist/components/asset/Asset.base.js +25 -0
  33. package/dist/components/asset/Asset.base.js.map +1 -0
  34. package/dist/components/asset/Asset.types.d.ts +13 -0
  35. package/dist/components/asset/Asset.types.js +6 -0
  36. package/dist/components/asset/Asset.types.js.map +1 -0
  37. package/dist/components/asset/index.d.ts +13 -0
  38. package/dist/components/asset/index.js +3 -0
  39. package/dist/components/avatar/Avatar.base.d.ts +53 -0
  40. package/dist/components/avatar/Avatar.base.js +56 -0
  41. package/dist/components/avatar/Avatar.base.js.map +1 -0
  42. package/dist/components/avatar/Avatar.types.d.ts +19 -0
  43. package/dist/components/avatar/Avatar.types.js +24 -0
  44. package/dist/components/avatar/Avatar.types.js.map +1 -0
  45. package/dist/components/avatar/index.d.ts +13 -0
  46. package/dist/components/avatar/index.js +3 -0
  47. package/dist/components/badge/Badge.base.d.ts +98 -0
  48. package/dist/components/badge/Badge.base.js +44 -0
  49. package/dist/components/badge/Badge.base.js.map +1 -0
  50. package/dist/components/badge/Badge.types.d.ts +21 -0
  51. package/dist/components/badge/Badge.types.js +43 -0
  52. package/dist/components/badge/Badge.types.js.map +1 -0
  53. package/dist/components/badge/index.d.ts +13 -0
  54. package/dist/components/badge/index.js +3 -0
  55. package/dist/components/button/Button.base.d.ts +99 -0
  56. package/dist/components/button/Button.base.js +75 -0
  57. package/dist/components/button/Button.base.js.map +1 -0
  58. package/dist/components/button/Button.types.d.ts +19 -0
  59. package/dist/components/button/Button.types.js +16 -0
  60. package/dist/components/button/Button.types.js.map +1 -0
  61. package/dist/components/button/index.d.ts +13 -0
  62. package/dist/components/button/index.js +3 -0
  63. package/dist/components/button-group/ButtonGroup.base.d.ts +89 -0
  64. package/dist/components/button-group/ButtonGroup.base.js +53 -0
  65. package/dist/components/button-group/ButtonGroup.base.js.map +1 -0
  66. package/dist/components/button-group/ButtonGroup.types.d.ts +17 -0
  67. package/dist/components/button-group/ButtonGroup.types.js +15 -0
  68. package/dist/components/button-group/ButtonGroup.types.js.map +1 -0
  69. package/dist/components/button-group/index.d.ts +13 -0
  70. package/dist/components/button-group/index.js +3 -0
  71. package/dist/components/card/Card.base.d.ts +123 -0
  72. package/dist/components/card/Card.base.js +75 -0
  73. package/dist/components/card/Card.base.js.map +1 -0
  74. package/dist/components/card/Card.types.d.ts +17 -0
  75. package/dist/components/card/Card.types.js +21 -0
  76. package/dist/components/card/Card.types.js.map +1 -0
  77. package/dist/components/card/index.d.ts +13 -0
  78. package/dist/components/card/index.js +3 -0
  79. package/dist/components/color-handle/ColorHandle.base.d.ts +51 -0
  80. package/dist/components/color-handle/ColorHandle.base.js +39 -0
  81. package/dist/components/color-handle/ColorHandle.base.js.map +1 -0
  82. package/dist/components/color-handle/ColorHandle.types.d.ts +30 -0
  83. package/dist/components/color-handle/color-contrast.d.ts +55 -0
  84. package/dist/components/color-handle/color-contrast.js +49 -0
  85. package/dist/components/color-handle/color-contrast.js.map +1 -0
  86. package/dist/components/color-handle/index.d.ts +14 -0
  87. package/dist/components/color-handle/index.js +3 -0
  88. package/dist/components/color-loupe/ColorLoupe.base.d.ts +26 -0
  89. package/dist/components/color-loupe/ColorLoupe.base.js +17 -0
  90. package/dist/components/color-loupe/ColorLoupe.base.js.map +1 -0
  91. package/dist/components/color-loupe/index.d.ts +12 -0
  92. package/dist/components/color-loupe/index.js +2 -0
  93. package/dist/components/divider/Divider.base.d.ts +43 -0
  94. package/dist/components/divider/Divider.base.js +37 -0
  95. package/dist/components/divider/Divider.base.js.map +1 -0
  96. package/dist/components/divider/Divider.types.d.ts +15 -0
  97. package/dist/components/divider/Divider.types.js +10 -0
  98. package/dist/components/divider/Divider.types.js.map +1 -0
  99. package/dist/components/divider/index.d.ts +13 -0
  100. package/dist/components/divider/index.js +3 -0
  101. package/dist/components/icon/Icon.base.d.ts +32 -0
  102. package/dist/components/icon/Icon.base.js +35 -0
  103. package/dist/components/icon/Icon.base.js.map +1 -0
  104. package/dist/components/icon/Icon.types.d.ts +13 -0
  105. package/dist/components/icon/Icon.types.js +12 -0
  106. package/dist/components/icon/Icon.types.js.map +1 -0
  107. package/dist/components/icon/index.d.ts +13 -0
  108. package/dist/components/icon/index.js +3 -0
  109. package/dist/components/illustrated-message/IllustratedMessage.base.d.ts +46 -0
  110. package/dist/components/illustrated-message/IllustratedMessage.base.js +46 -0
  111. package/dist/components/illustrated-message/IllustratedMessage.base.js.map +1 -0
  112. package/dist/components/illustrated-message/IllustratedMessage.types.d.ts +15 -0
  113. package/dist/components/illustrated-message/IllustratedMessage.types.js +10 -0
  114. package/dist/components/illustrated-message/IllustratedMessage.types.js.map +1 -0
  115. package/dist/components/illustrated-message/index.d.ts +13 -0
  116. package/dist/components/illustrated-message/index.js +3 -0
  117. package/dist/components/meter/Meter.base.d.ts +40 -0
  118. package/dist/components/meter/Meter.base.js +30 -0
  119. package/dist/components/meter/Meter.base.js.map +1 -0
  120. package/dist/components/meter/Meter.types.d.ts +13 -0
  121. package/dist/components/meter/Meter.types.js +11 -0
  122. package/dist/components/meter/Meter.types.js.map +1 -0
  123. package/dist/components/meter/index.d.ts +13 -0
  124. package/dist/components/meter/index.js +3 -0
  125. package/dist/components/popover/Popover.base.d.ts +223 -0
  126. package/dist/components/popover/Popover.base.js +270 -0
  127. package/dist/components/popover/Popover.base.js.map +1 -0
  128. package/dist/components/popover/Popover.types.d.ts +39 -0
  129. package/dist/components/popover/Popover.types.js +24 -0
  130. package/dist/components/popover/Popover.types.js.map +1 -0
  131. package/dist/components/popover/index.d.ts +13 -0
  132. package/dist/components/popover/index.js +3 -0
  133. package/dist/components/progress-circle/ProgressCircle.base.d.ts +91 -0
  134. package/dist/components/progress-circle/ProgressCircle.base.js +73 -0
  135. package/dist/components/progress-circle/ProgressCircle.base.js.map +1 -0
  136. package/dist/components/progress-circle/ProgressCircle.types.d.ts +15 -0
  137. package/dist/components/progress-circle/ProgressCircle.types.js +10 -0
  138. package/dist/components/progress-circle/ProgressCircle.types.js.map +1 -0
  139. package/dist/components/progress-circle/index.d.ts +13 -0
  140. package/dist/components/progress-circle/index.js +3 -0
  141. package/dist/components/status-light/StatusLight.base.d.ts +65 -0
  142. package/dist/components/status-light/StatusLight.base.js +29 -0
  143. package/dist/components/status-light/StatusLight.base.js.map +1 -0
  144. package/dist/components/status-light/StatusLight.types.d.ts +19 -0
  145. package/dist/components/status-light/StatusLight.types.js +32 -0
  146. package/dist/components/status-light/StatusLight.types.js.map +1 -0
  147. package/dist/components/status-light/index.d.ts +13 -0
  148. package/dist/components/status-light/index.js +3 -0
  149. package/dist/components/tabs/Tab.base.d.ts +49 -0
  150. package/dist/components/tabs/Tab.base.js +39 -0
  151. package/dist/components/tabs/Tab.base.js.map +1 -0
  152. package/dist/components/tabs/Tab.types.d.ts +17 -0
  153. package/dist/components/tabs/TabPanel.base.d.ts +49 -0
  154. package/dist/components/tabs/TabPanel.base.js +36 -0
  155. package/dist/components/tabs/TabPanel.base.js.map +1 -0
  156. package/dist/components/tabs/TabPanel.types.d.ts +17 -0
  157. package/dist/components/tabs/Tabs.base.d.ts +235 -0
  158. package/dist/components/tabs/Tabs.base.js +225 -0
  159. package/dist/components/tabs/Tabs.base.js.map +1 -0
  160. package/dist/components/tabs/Tabs.types.d.ts +55 -0
  161. package/dist/components/tabs/Tabs.types.js +6 -0
  162. package/dist/components/tabs/Tabs.types.js.map +1 -0
  163. package/dist/components/tabs/index.d.ts +17 -0
  164. package/dist/components/tabs/index.js +5 -0
  165. package/dist/components/tooltip/Tooltip.base.d.ts +154 -0
  166. package/dist/components/tooltip/Tooltip.base.js +163 -0
  167. package/dist/components/tooltip/Tooltip.base.js.map +1 -0
  168. package/dist/components/tooltip/Tooltip.types.d.ts +18 -0
  169. package/dist/components/tooltip/Tooltip.types.js +15 -0
  170. package/dist/components/tooltip/Tooltip.types.js.map +1 -0
  171. package/dist/components/tooltip/index.d.ts +13 -0
  172. package/dist/components/tooltip/index.js +3 -0
  173. package/dist/controllers/color-controller/index.d.ts +12 -0
  174. package/dist/controllers/color-controller/index.js +1 -0
  175. package/dist/controllers/color-controller/src/color-controller.d.ts +226 -0
  176. package/dist/controllers/color-controller/src/color-controller.js +252 -0
  177. package/dist/controllers/color-controller/src/color-controller.js.map +1 -0
  178. package/dist/controllers/focusgroup-navigation-controller/index.d.ts +12 -0
  179. package/dist/controllers/focusgroup-navigation-controller/src/focusgroup-navigation-controller.d.ts +477 -0
  180. package/dist/controllers/focusgroup-navigation-controller/src/focusgroup-navigation-controller.js +342 -0
  181. package/dist/controllers/focusgroup-navigation-controller/src/focusgroup-navigation-controller.js.map +1 -0
  182. package/dist/controllers/hover-controller/index.d.ts +12 -0
  183. package/dist/controllers/hover-controller/src/hover-controller.d.ts +118 -0
  184. package/dist/controllers/hover-controller/src/hover-controller.js +90 -0
  185. package/dist/controllers/hover-controller/src/hover-controller.js.map +1 -0
  186. package/dist/controllers/index.d.ts +20 -0
  187. package/dist/controllers/index.js +11 -0
  188. package/dist/controllers/language-resolution.d.ts +87 -0
  189. package/dist/controllers/language-resolution.js +56 -0
  190. package/dist/controllers/language-resolution.js.map +1 -0
  191. package/dist/controllers/page-scroll-lock.d.ts +20 -0
  192. package/dist/controllers/page-scroll-lock.js +30 -0
  193. package/dist/controllers/page-scroll-lock.js.map +1 -0
  194. package/dist/controllers/placement-controller/index.d.ts +12 -0
  195. package/dist/controllers/placement-controller/index.js +3 -0
  196. package/dist/controllers/placement-controller/src/fallback-placements.d.ts +9 -0
  197. package/dist/controllers/placement-controller/src/fallback-placements.js +71 -0
  198. package/dist/controllers/placement-controller/src/fallback-placements.js.map +1 -0
  199. package/dist/controllers/placement-controller/src/placement-controller.d.ts +152 -0
  200. package/dist/controllers/placement-controller/src/placement-controller.js +129 -0
  201. package/dist/controllers/placement-controller/src/placement-controller.js.map +1 -0
  202. package/dist/controllers/placement-controller/src/placement-conversion.d.ts +35 -0
  203. package/dist/controllers/placement-controller/src/placement-conversion.js +54 -0
  204. package/dist/controllers/placement-controller/src/placement-conversion.js.map +1 -0
  205. package/dist/controllers/placement-controller/src/types.d.ts +128 -0
  206. package/dist/controllers/placement-controller/src/types.js +29 -0
  207. package/dist/controllers/placement-controller/src/types.js.map +1 -0
  208. package/dist/controllers/slot-attribute-propagation/index.d.ts +12 -0
  209. package/dist/controllers/slot-attribute-propagation/src/slot-attribute-propagation-controller.d.ts +55 -0
  210. package/dist/controllers/slot-attribute-propagation/src/slot-attribute-propagation-controller.js +32 -0
  211. package/dist/controllers/slot-attribute-propagation/src/slot-attribute-propagation-controller.js.map +1 -0
  212. package/dist/element/define-element.d.ts +16 -0
  213. package/dist/element/define-element.js +8 -0
  214. package/dist/element/define-element.js.map +1 -0
  215. package/dist/element/index.d.ts +14 -0
  216. package/dist/element/index.js +4 -0
  217. package/dist/element/spectrum-element.d.ts +26 -0
  218. package/dist/element/spectrum-element.js +66 -0
  219. package/dist/element/spectrum-element.js.map +1 -0
  220. package/dist/element/version.d.ts +19 -0
  221. package/dist/element/version.js +6 -0
  222. package/dist/element/version.js.map +1 -0
  223. package/dist/mixins/disabled-mixin.d.ts +30 -0
  224. package/dist/mixins/disabled-mixin.js +27 -0
  225. package/dist/mixins/disabled-mixin.js.map +1 -0
  226. package/dist/mixins/index.d.ts +17 -0
  227. package/dist/mixins/index.js +6 -0
  228. package/dist/mixins/linear-progress-mixin.d.ts +42 -0
  229. package/dist/mixins/linear-progress-mixin.js +111 -0
  230. package/dist/mixins/linear-progress-mixin.js.map +1 -0
  231. package/dist/mixins/observe-slot-presence.d.ts +12 -0
  232. package/dist/mixins/observe-slot-presence.js +40 -0
  233. package/dist/mixins/observe-slot-presence.js.map +1 -0
  234. package/dist/mixins/observe-slot-text.d.ts +11 -0
  235. package/dist/mixins/observe-slot-text.js +60 -0
  236. package/dist/mixins/observe-slot-text.js.map +1 -0
  237. package/dist/mixins/sized-mixin.d.ts +21 -0
  238. package/dist/mixins/sized-mixin.js +42 -0
  239. package/dist/mixins/sized-mixin.js.map +1 -0
  240. package/dist/utils/actual-placement.d.ts +10 -0
  241. package/dist/utils/actual-placement.js +8 -0
  242. package/dist/utils/actual-placement.js.map +1 -0
  243. package/dist/utils/capitalize.d.ts +26 -0
  244. package/dist/utils/capitalize.js +8 -0
  245. package/dist/utils/capitalize.js.map +1 -0
  246. package/dist/utils/deep-contains.d.ts +26 -0
  247. package/dist/utils/deep-contains.js +14 -0
  248. package/dist/utils/deep-contains.js.map +1 -0
  249. package/dist/utils/dismissible-stack.d.ts +26 -0
  250. package/dist/utils/dismissible-stack.js +16 -0
  251. package/dist/utils/dismissible-stack.js.map +1 -0
  252. package/dist/utils/focusable-selectors.d.ts +43 -0
  253. package/dist/utils/focusable-selectors.js +18 -0
  254. package/dist/utils/focusable-selectors.js.map +1 -0
  255. package/dist/utils/get-active-element.d.ts +31 -0
  256. package/dist/utils/get-active-element.js +11 -0
  257. package/dist/utils/get-active-element.js.map +1 -0
  258. package/dist/utils/get-label-from-slot.d.ts +12 -0
  259. package/dist/utils/get-label-from-slot.js +10 -0
  260. package/dist/utils/get-label-from-slot.js.map +1 -0
  261. package/dist/utils/index.d.ts +20 -0
  262. package/dist/utils/index.js +10 -0
  263. package/dist/utils/resolve-trigger.d.ts +42 -0
  264. package/dist/utils/resolve-trigger.js +23 -0
  265. package/dist/utils/resolve-trigger.js.map +1 -0
  266. package/dist/utils/transition.d.ts +53 -0
  267. package/dist/utils/transition.js +26 -0
  268. package/dist/utils/transition.js.map +1 -0
  269. package/package.json +400 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.types.js","names":[],"sources":["../../../components/popover/Popover.types.ts"],"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 ALL_PLACEMENTS,\n type Placement,\n} from '@adobe/spectrum-wc-core/controllers/index.js';\n\n// ─────────────────────────\n// PLACEMENT\n// ─────────────────────────\n\n/**\n * The placement of the popover relative to its trigger, re-exported from the\n * `PlacementController` (the full union the controller can resolve).\n */\nexport type { Placement };\nexport { ALL_PLACEMENTS };\n\n/**\n * The placement values `<swc-popover>` supports: the block sides (`top`,\n * `bottom`) and the logical inline sides (`start`, `end`), each with its two\n * alignments. Logical sides resolve against the writing direction (`start` is the\n * left in LTR, the right in RTL), matching the Spectrum design API. The controller\n * can resolve physical `left`/`right` too, but the popover narrows to the logical\n * set per the proxy pattern so placements stay correct under RTL.\n */\nexport const POPOVER_VALID_PLACEMENTS = [\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'start',\n 'start-top',\n 'start-bottom',\n 'end',\n 'end-top',\n 'end-bottom',\n] as const satisfies readonly Placement[];\n\n// ─────────────────────────\n// SIZE\n// ─────────────────────────\n\n/**\n * Optional fixed sizes for the popover. When unset, the popover fits its\n * contents. Each size pins a fixed inline size (`s` → 336px, `m` → 416px,\n * `l` → 576px).\n */\nexport const POPOVER_VALID_SIZES = ['s', 'm', 'l'] as const;\n\nexport type PopoverSize = (typeof POPOVER_VALID_SIZES)[number];\n\n// ─────────────────────────\n// EVENTS\n// ─────────────────────────\n\n/**\n * The cause of a popover close, carried on `swc-close.detail.source`.\n *\n * - `'escape'`: the Escape key dismissed the popover.\n * - `'outside'`: a click outside the popover (light-dismiss in default mode,\n * wired backdrop-click in modal mode) dismissed it.\n * - `'programmatic'`: `open` was set to `false` in code.\n */\nexport type PopoverCloseSource = 'escape' | 'outside' | 'programmatic';\n\n/**\n * Detail payload carried on the `swc-close` event.\n */\nexport interface PopoverCloseEventDetail {\n /** What triggered the close. */\n source: PopoverCloseSource;\n}\n"],"mappings":";;AAoCA,IAAa,IAA2B;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,EAWY,IAAsB;CAAC;CAAK;CAAK;CAAI"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ export * from './Popover.base.js';
13
+ export * from './Popover.types.js';
@@ -0,0 +1,3 @@
1
+ import { ALL_PLACEMENTS as e, POPOVER_VALID_PLACEMENTS as t, POPOVER_VALID_SIZES as n } from "./Popover.types.js";
2
+ import { PopoverBase as r } from "./Popover.base.js";
3
+ export { e as ALL_PLACEMENTS, t as POPOVER_VALID_PLACEMENTS, n as POPOVER_VALID_SIZES, r as PopoverBase };
@@ -0,0 +1,91 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { SpectrumElement } from '../../element/index.js';
3
+ import { PROGRESS_CIRCLE_VALID_SIZES, ProgressCircleStaticColor } from './ProgressCircle.types.js';
4
+ declare const ProgressCircleBase_base: typeof SpectrumElement & {
5
+ new (...args: any[]): import('../../mixins/index.js').SizedElementInterface;
6
+ prototype: import('../../mixins/index.js').SizedElementInterface;
7
+ } & import('../../mixins/index.js').SizedElementConstructor;
8
+ /**
9
+ * @todo SWC-2037 Extract shared progress logic (ARIA, label, clamping, formatting,
10
+ * indeterminate derivation) into a `ProgressBase` mixin or abstract class in
11
+ * `core/components/progress/` so that both `ProgressCircleBase` and a future
12
+ * `ProgressBarBase` can extend it. Also add `formatOptions` support for
13
+ * progress-bar's custom value labels (e.g. "3 of 10", "45 MB / 100 MB").
14
+ */
15
+ /**
16
+ * A progress circle component that visually represents the completion progress of a task.
17
+ * Can be used in both determinate (with specific progress value) and indeterminate (loading) states.
18
+ *
19
+ * @attribute {ElementSize} size - The size of the progress circle.
20
+ */
21
+ export declare abstract class ProgressCircleBase extends ProgressCircleBase_base {
22
+ /**
23
+ * The size of the progress circle.
24
+ *
25
+ * @default m
26
+ */
27
+ size: (typeof PROGRESS_CIRCLE_VALID_SIZES)[number];
28
+ /**
29
+ * @internal
30
+ *
31
+ * A readonly array of the valid static colors for the progress circle.
32
+ *
33
+ * This is an actual internal property, intended not for customer use
34
+ * but for use in internal validation logic, stories, tests, etc.
35
+ *
36
+ * Because S1 and S2 support different static colors, the value of this
37
+ * property must be set in each subclass.
38
+ */
39
+ static readonly STATIC_COLORS: readonly string[];
40
+ /**
41
+ * @internal
42
+ *
43
+ * Static color variant for use on different backgrounds.
44
+ *
45
+ * This is a public property, but its valid values vary between S1 and S2,
46
+ * so the property (and its docs) need to be redefined in each subclass.
47
+ *
48
+ * The type declared here is a union of the valid values for S1 and S2,
49
+ * and should be narrowed in each subclass.
50
+ */
51
+ staticColor?: ProgressCircleStaticColor;
52
+ /**
53
+ * Accessible label for the progress circle.
54
+ *
55
+ * Used to provide context about what is loading or progressing.
56
+ * When no accessible name is provided (no label, aria-label, or
57
+ * aria-labelledby), a default "Loading" label is applied.
58
+ *
59
+ * @todo Localize the default "Loading" fallback via LanguageResolutionController
60
+ * once a runtime i18n system for static strings is available.
61
+ */
62
+ label: string;
63
+ /**
64
+ * Progress value from 0 to 100.
65
+ *
66
+ * When `null` (indeterminate), the component shows a loading animation.
67
+ * Setting a number switches to determinate mode. Removing the `progress`
68
+ * attribute or setting this property to `null` returns to indeterminate.
69
+ * Values outside 0–100 or non-finite numbers are clamped (non-finite becomes 0).
70
+ *
71
+ * Reflected to the `progress` attribute when set; the attribute is omitted when indeterminate.
72
+ */
73
+ progress: number | null;
74
+ private languageResolver;
75
+ /**
76
+ * @todo Localize via LanguageResolutionController once a runtime i18n
77
+ * system for static strings is available.
78
+ */
79
+ private static readonly DEFAULT_LABEL;
80
+ /** True when light DOM has element nodes or non-whitespace text (no default slot). */
81
+ private static hasMeaningfulLightDomChildren;
82
+ private hasAccessibleName;
83
+ private static clampProgress;
84
+ private formatProgress;
85
+ private warnDeprecatedLightDomChildren;
86
+ private warnMissingAccessibleName;
87
+ protected willUpdate(changes: PropertyValues): void;
88
+ protected firstUpdated(changes: PropertyValues): void;
89
+ protected updated(changes: PropertyValues): void;
90
+ }
91
+ export {};
@@ -0,0 +1,73 @@
1
+ import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.124.0/helpers/decorate.js";
2
+ import { PROGRESS_CIRCLE_VALID_SIZES as t } from "./ProgressCircle.types.js";
3
+ import { property as n } from "lit/decorators.js";
4
+ import { SpectrumElement as r } from "@adobe/spectrum-wc-core/element/index.js";
5
+ import { SizedMixin as i } from "@adobe/spectrum-wc-core/mixins/index.js";
6
+ import { LanguageResolutionController as a, languageResolverUpdatedSymbol as o } from "@adobe/spectrum-wc-core/controllers/language-resolution.js";
7
+ //#region components/progress-circle/ProgressCircle.base.ts
8
+ var s, c = class e extends i(r, { validSizes: t }) {
9
+ constructor(...e) {
10
+ super(...e), this.label = "", this.progress = null, this.languageResolver = new a(this);
11
+ }
12
+ static hasMeaningfulLightDomChildren(e) {
13
+ for (let n of e.childNodes) {
14
+ var t;
15
+ if (n.nodeType === Node.ELEMENT_NODE || n.nodeType === Node.TEXT_NODE && (t = n.textContent) != null && t.trim()) return !0;
16
+ }
17
+ return !1;
18
+ }
19
+ hasAccessibleName() {
20
+ return !!(this.label || this.getAttribute("aria-label") || this.getAttribute("aria-labelledby"));
21
+ }
22
+ static clampProgress(e) {
23
+ return Number.isFinite(e) ? Math.min(100, Math.max(0, e)) : 0;
24
+ }
25
+ formatProgress() {
26
+ var e;
27
+ return new Intl.NumberFormat(this.languageResolver.language, {
28
+ style: "percent",
29
+ unitDisplay: "narrow"
30
+ }).format(((e = this.progress) == null ? 0 : e) / 100);
31
+ }
32
+ warnDeprecatedLightDomChildren() {
33
+ var t;
34
+ (t = window.__swc) != null && t.DEBUG && e.hasMeaningfulLightDomChildren(this) && window.__swc.warn(this, `<${this.localName}> no longer has a default slot. Light DOM children are not rendered and are not used for an accessible name. Use the "label" attribute or property, or "aria-label" / "aria-labelledby" on the host instead.`, "https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/components-progress-circle--docs", { level: "deprecation" });
35
+ }
36
+ warnMissingAccessibleName() {
37
+ var t, n;
38
+ (t = window.__swc) != null && t.DEBUG && ((n = window.__swc) == null || n.warn(this, `<${this.localName}> requires an accessible name. A default label of "${e.DEFAULT_LABEL}" has been applied, but a more specific label should be provided via:`, "https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/components-progress-circle--docs", {
39
+ type: "accessibility",
40
+ issues: [
41
+ "value supplied to the \"label\" attribute, which will be displayed visually as part of the element, or",
42
+ "value supplied to the \"aria-label\" attribute, which will only be provided to screen readers, or",
43
+ "an element ID reference supplied to the \"aria-labelledby\" attribute, which will be provided by screen readers and will need to be managed manually by the parent application."
44
+ ]
45
+ }));
46
+ }
47
+ willUpdate(t) {
48
+ if (t.has("progress") && this.progress !== null) {
49
+ let t = e.clampProgress(this.progress);
50
+ t !== this.progress && (this.progress = t);
51
+ }
52
+ super.willUpdate(t);
53
+ }
54
+ firstUpdated(e) {
55
+ super.firstUpdated(e), this.setAttribute("role", "progressbar");
56
+ }
57
+ updated(t) {
58
+ var n;
59
+ super.updated(t), t.has("progress") && (this.progress !== null && this.progress >= 0 ? (this.setAttribute("aria-valuemin", "0"), this.setAttribute("aria-valuemax", "100"), this.setAttribute("aria-valuenow", String(this.progress)), this.setAttribute("aria-valuetext", this.formatProgress())) : (this.removeAttribute("aria-valuemin"), this.removeAttribute("aria-valuemax"), this.removeAttribute("aria-valuenow"), this.removeAttribute("aria-valuetext"))), this.progress !== null && t.has(o) && this.setAttribute("aria-valuetext", this.formatProgress()), t.has("label") && (this.label.length ? this.setAttribute("aria-label", this.label) : t.get("label") === this.getAttribute("aria-label") && this.removeAttribute("aria-label")), t.has("label") && !this.hasAccessibleName() && (this.setAttribute("aria-label", e.DEFAULT_LABEL), this.warnMissingAccessibleName()), (n = window.__swc) != null && n.DEBUG && this.warnDeprecatedLightDomChildren();
60
+ }
61
+ };
62
+ s = c, s.DEFAULT_LABEL = "Loading", e([n({
63
+ type: String,
64
+ reflect: !0,
65
+ attribute: "static-color"
66
+ })], c.prototype, "staticColor", void 0), e([n({ type: String })], c.prototype, "label", void 0), e([n({
67
+ type: Number,
68
+ reflect: !0
69
+ })], c.prototype, "progress", void 0);
70
+ //#endregion
71
+ export { c as ProgressCircleBase };
72
+
73
+ //# sourceMappingURL=ProgressCircle.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressCircle.base.js","names":[],"sources":["../../../components/progress-circle/ProgressCircle.base.ts"],"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 { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport {\n LanguageResolutionController,\n languageResolverUpdatedSymbol,\n} from '@adobe/spectrum-wc-core/controllers/language-resolution.js';\nimport { SpectrumElement } from '@adobe/spectrum-wc-core/element/index.js';\nimport { SizedMixin } from '@adobe/spectrum-wc-core/mixins/index.js';\n\nimport {\n PROGRESS_CIRCLE_VALID_SIZES,\n ProgressCircleStaticColor,\n} from './ProgressCircle.types.js';\n\n/**\n * @todo SWC-2037 Extract shared progress logic (ARIA, label, clamping, formatting,\n * indeterminate derivation) into a `ProgressBase` mixin or abstract class in\n * `core/components/progress/` so that both `ProgressCircleBase` and a future\n * `ProgressBarBase` can extend it. Also add `formatOptions` support for\n * progress-bar's custom value labels (e.g. \"3 of 10\", \"45 MB / 100 MB\").\n */\n\n/**\n * A progress circle component that visually represents the completion progress of a task.\n * Can be used in both determinate (with specific progress value) and indeterminate (loading) states.\n *\n * @attribute {ElementSize} size - The size of the progress circle.\n */\nexport abstract class ProgressCircleBase extends SizedMixin(SpectrumElement, {\n validSizes: PROGRESS_CIRCLE_VALID_SIZES,\n}) {\n /**\n * The size of the progress circle.\n *\n * @default m\n */\n declare public size: (typeof PROGRESS_CIRCLE_VALID_SIZES)[number];\n\n // ─────────────────────────\n // API TO OVERRIDE\n // ─────────────────────────\n\n /**\n * @internal\n *\n * A readonly array of the valid static colors for the progress circle.\n *\n * This is an actual internal property, intended not for customer use\n * but for use in internal validation logic, stories, tests, etc.\n *\n * Because S1 and S2 support different static colors, the value of this\n * property must be set in each subclass.\n */\n static readonly STATIC_COLORS: readonly string[];\n\n /**\n * @internal\n *\n * Static color variant for use on different backgrounds.\n *\n * This is a public property, but its valid values vary between S1 and S2,\n * so the property (and its docs) need to be redefined in each subclass.\n *\n * The type declared here is a union of the valid values for S1 and S2,\n * and should be narrowed in each subclass.\n */\n @property({ type: String, reflect: true, attribute: 'static-color' })\n public staticColor?: ProgressCircleStaticColor;\n\n // ──────────────────\n // SHARED API\n // ──────────────────\n\n /**\n * Accessible label for the progress circle.\n *\n * Used to provide context about what is loading or progressing.\n * When no accessible name is provided (no label, aria-label, or\n * aria-labelledby), a default \"Loading\" label is applied.\n *\n * @todo Localize the default \"Loading\" fallback via LanguageResolutionController\n * once a runtime i18n system for static strings is available.\n */\n @property({ type: String })\n public label = '';\n\n /**\n * Progress value from 0 to 100.\n *\n * When `null` (indeterminate), the component shows a loading animation.\n * Setting a number switches to determinate mode. Removing the `progress`\n * attribute or setting this property to `null` returns to indeterminate.\n * Values outside 0–100 or non-finite numbers are clamped (non-finite becomes 0).\n *\n * Reflected to the `progress` attribute when set; the attribute is omitted when indeterminate.\n */\n @property({ type: Number, reflect: true })\n public progress: number | null = null;\n\n private languageResolver = new LanguageResolutionController(this);\n\n // ──────────────────────\n // IMPLEMENTATION\n // ──────────────────────\n\n /**\n * @todo Localize via LanguageResolutionController once a runtime i18n\n * system for static strings is available.\n */\n private static readonly DEFAULT_LABEL = 'Loading';\n\n /** True when light DOM has element nodes or non-whitespace text (no default slot). */\n private static hasMeaningfulLightDomChildren(host: HTMLElement): boolean {\n for (const node of host.childNodes) {\n if (\n node.nodeType === Node.ELEMENT_NODE ||\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim())\n ) {\n return true;\n }\n }\n return false;\n }\n\n private hasAccessibleName(): boolean {\n return Boolean(\n this.label ||\n this.getAttribute('aria-label') ||\n this.getAttribute('aria-labelledby')\n );\n }\n\n private static clampProgress(value: number): number {\n if (!Number.isFinite(value)) {\n return 0;\n }\n return Math.min(100, Math.max(0, value));\n }\n\n private formatProgress(): string {\n return new Intl.NumberFormat(this.languageResolver.language, {\n style: 'percent',\n unitDisplay: 'narrow',\n }).format((this.progress ?? 0) / 100);\n }\n\n private warnDeprecatedLightDomChildren(): void {\n if (!window.__swc?.DEBUG) {\n return;\n }\n if (!ProgressCircleBase.hasMeaningfulLightDomChildren(this)) {\n return;\n }\n window.__swc.warn(\n this,\n `<${this.localName}> no longer has a default slot. Light DOM children are not rendered and are not used for an accessible name. Use the \"label\" attribute or property, or \"aria-label\" / \"aria-labelledby\" on the host instead.`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/components-progress-circle--docs',\n { level: 'deprecation' }\n );\n }\n\n private warnMissingAccessibleName(): void {\n if (!window.__swc?.DEBUG) {\n return;\n }\n window.__swc?.warn(\n this,\n `<${this.localName}> requires an accessible name. A default label of \"${ProgressCircleBase.DEFAULT_LABEL}\" has been applied, but a more specific label should be provided via:`,\n 'https://opensource.adobe.com/spectrum-web-components/second-gen/?path=/docs/components-progress-circle--docs',\n {\n type: 'accessibility',\n issues: [\n 'value supplied to the \"label\" attribute, which will be displayed visually as part of the element, or',\n 'value supplied to the \"aria-label\" attribute, which will only be provided to screen readers, or',\n 'an element ID reference supplied to the \"aria-labelledby\" attribute, which will be provided by screen readers and will need to be managed manually by the parent application.',\n ],\n }\n );\n }\n\n protected override willUpdate(changes: PropertyValues): void {\n if (changes.has('progress') && this.progress !== null) {\n const clamped = ProgressCircleBase.clampProgress(this.progress);\n if (clamped !== this.progress) {\n this.progress = clamped;\n }\n }\n super.willUpdate(changes);\n }\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n this.setAttribute('role', 'progressbar');\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n\n if (changes.has('progress')) {\n if (this.progress !== null && this.progress >= 0) {\n this.setAttribute('aria-valuemin', '0');\n this.setAttribute('aria-valuemax', '100');\n this.setAttribute('aria-valuenow', String(this.progress));\n this.setAttribute('aria-valuetext', this.formatProgress());\n } else {\n this.removeAttribute('aria-valuemin');\n this.removeAttribute('aria-valuemax');\n this.removeAttribute('aria-valuenow');\n this.removeAttribute('aria-valuetext');\n }\n }\n\n if (this.progress !== null && changes.has(languageResolverUpdatedSymbol)) {\n this.setAttribute('aria-valuetext', this.formatProgress());\n }\n\n if (changes.has('label')) {\n if (this.label.length) {\n this.setAttribute('aria-label', this.label);\n } else if (changes.get('label') === this.getAttribute('aria-label')) {\n this.removeAttribute('aria-label');\n }\n }\n\n // Apply default accessible name fallback after handling explicit label changes.\n if (changes.has('label') && !this.hasAccessibleName()) {\n this.setAttribute('aria-label', ProgressCircleBase.DEFAULT_LABEL);\n this.warnMissingAccessibleName();\n }\n\n if (window.__swc?.DEBUG) {\n this.warnDeprecatedLightDomChildren();\n }\n }\n}\n"],"mappings":";;;;;;;OAyCsB,IAAtB,MAAsB,UAA2B,EAAW,GAAiB,EAC3E,YAAY,GACb,CAAC,CAAC;;4BAsDc,oBAakB,8BAEN,IAAI,EAA6B,KAAK;;CAajE,OAAe,8BAA8B,GAA4B;AACvE,OAAK,IAAM,KAAQ,EAAK,YAAY;;AAClC,OACE,EAAK,aAAa,KAAK,gBACtB,EAAK,aAAa,KAAK,cAAA,IAAa,EAAK,gBAAA,QAAA,EAAa,MAAM,CAE7D,QAAO;;AAGX,SAAO;;CAGT,oBAAqC;AACnC,SAAO,GACL,KAAK,SACL,KAAK,aAAa,aAAa,IAC/B,KAAK,aAAa,kBAAkB;;CAIxC,OAAe,cAAc,GAAuB;AAIlD,SAHK,OAAO,SAAS,EAAM,GAGpB,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,EAAM,CAAC,GAF/B;;CAKX,iBAAiC;;AAC/B,SAAO,IAAI,KAAK,aAAa,KAAK,iBAAiB,UAAU;GAC3D,OAAO;GACP,aAAa;GACd,CAAC,CAAC,SAAA,IAAQ,KAAK,aAAA,OAAY,IAAZ,KAAiB,IAAI;;CAGvC,iCAA+C;;AACzC,GAAA,IAAC,OAAO,UAAA,QAAA,EAAO,SAGd,EAAmB,8BAA8B,KAAK,IAG3D,OAAO,MAAM,KACX,MACA,IAAI,KAAK,UAAU,+MACnB,gHACA,EAAE,OAAO,eAAe,CACzB;;CAGH,4BAA0C;;AACpC,GAAA,IAAC,OAAO,UAAA,QAAA,EAAO,WAGnB,IAAA,OAAO,UAAA,QAAA,EAAO,KACZ,MACA,IAAI,KAAK,UAAU,qDAAqD,EAAmB,cAAc,wEACzG,gHACA;GACE,MAAM;GACN,QAAQ;IACN;IACA;IACA;IACD;GACF,CACF;;CAGH,WAA8B,GAA+B;AAC3D,MAAI,EAAQ,IAAI,WAAW,IAAI,KAAK,aAAa,MAAM;GACrD,IAAM,IAAU,EAAmB,cAAc,KAAK,SAAS;AAC/D,GAAI,MAAY,KAAK,aACnB,KAAK,WAAW;;AAGpB,QAAM,WAAW,EAAQ;;CAG3B,aAAgC,GAA+B;AAE7D,EADA,MAAM,aAAa,EAAQ,EAC3B,KAAK,aAAa,QAAQ,cAAc;;CAG1C,QAA2B,GAA+B;;AAmCxD,EAlCA,MAAM,QAAQ,EAAQ,EAElB,EAAQ,IAAI,WAAW,KACrB,KAAK,aAAa,QAAQ,KAAK,YAAY,KAC7C,KAAK,aAAa,iBAAiB,IAAI,EACvC,KAAK,aAAa,iBAAiB,MAAM,EACzC,KAAK,aAAa,iBAAiB,OAAO,KAAK,SAAS,CAAC,EACzD,KAAK,aAAa,kBAAkB,KAAK,gBAAgB,CAAC,KAE1D,KAAK,gBAAgB,gBAAgB,EACrC,KAAK,gBAAgB,gBAAgB,EACrC,KAAK,gBAAgB,gBAAgB,EACrC,KAAK,gBAAgB,iBAAiB,IAItC,KAAK,aAAa,QAAQ,EAAQ,IAAI,EAA8B,IACtE,KAAK,aAAa,kBAAkB,KAAK,gBAAgB,CAAC,EAGxD,EAAQ,IAAI,QAAQ,KAClB,KAAK,MAAM,SACb,KAAK,aAAa,cAAc,KAAK,MAAM,GAClC,EAAQ,IAAI,QAAQ,KAAK,KAAK,aAAa,aAAa,IACjE,KAAK,gBAAgB,aAAa,GAKlC,EAAQ,IAAI,QAAQ,IAAI,CAAC,KAAK,mBAAmB,KACnD,KAAK,aAAa,cAAc,EAAmB,cAAc,EACjE,KAAK,2BAA2B,IAGlC,IAAI,OAAO,UAAA,QAAA,EAAO,SAChB,KAAK,gCAAgC;;;yBA1HD,cA3CvC,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,WAAW;CAAgB,CAAC,CAAA,EAAA,EAAA,WAAA,eAAA,KAAA,EAAA,KAiBpE,EAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,EAAA,WAAA,SAAA,KAAA,EAAA,KAa1B,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ export declare const PROGRESS_CIRCLE_VALID_SIZES: readonly ["s", "m", "l"];
13
+ export declare const PROGRESS_CIRCLE_STATIC_COLORS: readonly ["white", "black"];
14
+ export type ProgressCircleStaticColor = (typeof PROGRESS_CIRCLE_STATIC_COLORS)[number];
15
+ export type ProgressCircleSize = (typeof PROGRESS_CIRCLE_VALID_SIZES)[number];
@@ -0,0 +1,10 @@
1
+ //#region components/progress-circle/ProgressCircle.types.ts
2
+ var e = [
3
+ "s",
4
+ "m",
5
+ "l"
6
+ ], t = ["white", "black"];
7
+ //#endregion
8
+ export { t as PROGRESS_CIRCLE_STATIC_COLORS, e as PROGRESS_CIRCLE_VALID_SIZES };
9
+
10
+ //# sourceMappingURL=ProgressCircle.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressCircle.types.js","names":[],"sources":["../../../components/progress-circle/ProgressCircle.types.ts"],"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 type { ElementSize } from '@adobe/spectrum-wc-core/mixins/index.js';\n\nexport const PROGRESS_CIRCLE_VALID_SIZES = [\n 's',\n 'm',\n 'l',\n] as const satisfies readonly ElementSize[];\nexport const PROGRESS_CIRCLE_STATIC_COLORS = ['white', 'black'] as const;\n\nexport type ProgressCircleStaticColor =\n (typeof PROGRESS_CIRCLE_STATIC_COLORS)[number];\nexport type ProgressCircleSize = (typeof PROGRESS_CIRCLE_VALID_SIZES)[number];\n"],"mappings":";AAcA,IAAa,IAA8B;CACzC;CACA;CACA;CACD,EACY,IAAgC,CAAC,SAAS,QAAQ"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ export * from './ProgressCircle.base.js';
13
+ export * from './ProgressCircle.types.js';
@@ -0,0 +1,3 @@
1
+ import { PROGRESS_CIRCLE_STATIC_COLORS as e, PROGRESS_CIRCLE_VALID_SIZES as t } from "./ProgressCircle.types.js";
2
+ import { ProgressCircleBase as n } from "./ProgressCircle.base.js";
3
+ export { e as PROGRESS_CIRCLE_STATIC_COLORS, t as PROGRESS_CIRCLE_VALID_SIZES, n as ProgressCircleBase };
@@ -0,0 +1,65 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { SpectrumElement } from '../../element/index.js';
3
+ import { StatusLightVariant } from './StatusLight.types.js';
4
+ declare const StatusLightBase_base: typeof SpectrumElement & {
5
+ new (...args: any[]): import('../../mixins/index.js').SizedElementInterface;
6
+ prototype: import('../../mixins/index.js').SizedElementInterface;
7
+ } & import('../../mixins/index.js').SizedElementConstructor;
8
+ /**
9
+ * A status light is a great way to convey semantic meaning and the condition of an entity, such as statuses and categories. It provides visual indicators through colored dots accompanied by descriptive text.
10
+ *
11
+ * @slot - The text label of the status light.
12
+ * @attribute {ElementSize} size - The size of the status light.
13
+ */
14
+ export declare abstract class StatusLightBase extends StatusLightBase_base {
15
+ /**
16
+ * @internal
17
+ *
18
+ * A readonly array of the valid color variants for the status light.
19
+ *
20
+ * This is an actual internal property, intended not for customer use
21
+ * but for use in internal validation logic, stories, tests, etc.
22
+ *
23
+ * Because S1 and S2 support different color variants, the value of this
24
+ * property must be set in each subclass.
25
+ */
26
+ static readonly VARIANTS_COLOR: readonly string[];
27
+ /**
28
+ * @internal
29
+ *
30
+ * A readonly array of the valid semantic variants for the status light.
31
+ *
32
+ * This is an actual internal property, intended not for customer use
33
+ * but for use in internal validation logic, stories, tests, etc.
34
+ *
35
+ * Because S1 and S2 support different semantic variants, the value of this
36
+ * property must be set in each subclass.
37
+ */
38
+ static readonly VARIANTS_SEMANTIC: readonly string[];
39
+ /**
40
+ * @internal
41
+ *
42
+ * A readonly array of all valid variants for the status light.
43
+ *
44
+ * This is an actual internal property, intended not for customer use
45
+ * but for use in internal validation logic, stories, tests, etc.
46
+ *
47
+ * Because S1 and S2 support different variants, the value of this
48
+ * property must be set in each subclass.
49
+ */
50
+ static readonly VARIANTS: readonly string[];
51
+ /**
52
+ * @internal
53
+ *
54
+ * The variant of the status light.
55
+ *
56
+ * This is a public property, but its valid values vary between S1 and S2,
57
+ * so the property (and its docs) need to be redefined in each subclass.
58
+ *
59
+ * The type declared here is a union of the valid values for S1 and S2,
60
+ * and should be narrowed in each subclass.
61
+ */
62
+ variant: StatusLightVariant;
63
+ protected updated(changes: PropertyValues): void;
64
+ }
65
+ export {};
@@ -0,0 +1,29 @@
1
+ import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.124.0/helpers/decorate.js";
2
+ import { STATUS_LIGHT_VALID_SIZES as t } from "./StatusLight.types.js";
3
+ import { property as n } from "lit/decorators.js";
4
+ import { SpectrumElement as r } from "@adobe/spectrum-wc-core/element/index.js";
5
+ import { SizedMixin as i } from "@adobe/spectrum-wc-core/mixins/index.js";
6
+ //#region components/status-light/StatusLight.base.ts
7
+ var a = class extends i(r, {
8
+ validSizes: t,
9
+ noDefaultSize: !0
10
+ }) {
11
+ constructor(...e) {
12
+ super(...e), this.variant = "neutral";
13
+ }
14
+ updated(e) {
15
+ var t;
16
+ if (super.updated(e), (t = window.__swc) != null && t.DEBUG) {
17
+ let e = this.constructor;
18
+ this.variant === "accent" ? window.__swc.warn(this, `<${this.localName}> does not support the "accent" variant in Spectrum 2. Use "neutral" or "info" depending on intent.`, "https://spectrum-web-components.adobe.com/?path=/docs/status-light-migration-guide--docs", { level: "deprecation" }) : e.VARIANTS.includes(this.variant) || window.__swc.warn(this, `<${this.localName}> element expects the "variant" attribute to be one of the following:`, "https://opensource.adobe.com/spectrum-web-components/components/status-light/#variants", { issues: [...e.VARIANTS] }), this.hasAttribute("disabled") && window.__swc.warn(this, `<${this.localName}> does not support the "disabled" attribute. It was deprecated in Spectrum 1 and has been removed in Spectrum 2.`, "https://spectrum-web-components.adobe.com/?path=/docs/status-light-migration-guide--docs", { level: "deprecation" });
19
+ }
20
+ }
21
+ };
22
+ e([n({
23
+ type: String,
24
+ reflect: !0
25
+ })], a.prototype, "variant", void 0);
26
+ //#endregion
27
+ export { a as StatusLightBase };
28
+
29
+ //# sourceMappingURL=StatusLight.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusLight.base.js","names":[],"sources":["../../../components/status-light/StatusLight.base.ts"],"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 */\nimport { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { SpectrumElement } from '@adobe/spectrum-wc-core/element/index.js';\nimport { SizedMixin } from '@adobe/spectrum-wc-core/mixins/index.js';\n\nimport {\n STATUS_LIGHT_VALID_SIZES,\n type StatusLightVariant,\n} from './StatusLight.types.js';\n\n/**\n * A status light is a great way to convey semantic meaning and the condition of an entity, such as statuses and categories. It provides visual indicators through colored dots accompanied by descriptive text.\n *\n * @slot - The text label of the status light.\n * @attribute {ElementSize} size - The size of the status light.\n */\nexport abstract class StatusLightBase extends SizedMixin(SpectrumElement, {\n validSizes: STATUS_LIGHT_VALID_SIZES,\n noDefaultSize: true,\n}) {\n // ─────────────────────────\n // API TO OVERRIDE\n // ─────────────────────────\n\n /**\n * @internal\n *\n * A readonly array of the valid color variants for the status light.\n *\n * This is an actual internal property, intended not for customer use\n * but for use in internal validation logic, stories, tests, etc.\n *\n * Because S1 and S2 support different color variants, the value of this\n * property must be set in each subclass.\n */\n static readonly VARIANTS_COLOR: readonly string[];\n\n /**\n * @internal\n *\n * A readonly array of the valid semantic variants for the status light.\n *\n * This is an actual internal property, intended not for customer use\n * but for use in internal validation logic, stories, tests, etc.\n *\n * Because S1 and S2 support different semantic variants, the value of this\n * property must be set in each subclass.\n */\n static readonly VARIANTS_SEMANTIC: readonly string[];\n\n /**\n * @internal\n *\n * A readonly array of all valid variants for the status light.\n *\n * This is an actual internal property, intended not for customer use\n * but for use in internal validation logic, stories, tests, etc.\n *\n * Because S1 and S2 support different variants, the value of this\n * property must be set in each subclass.\n */\n static readonly VARIANTS: readonly string[];\n\n /**\n * @internal\n *\n * The variant of the status light.\n *\n * This is a public property, but its valid values vary between S1 and S2,\n * so the property (and its docs) need to be redefined in each subclass.\n *\n * The type declared here is a union of the valid values for S1 and S2,\n * and should be narrowed in each subclass.\n */\n @property({ type: String, reflect: true })\n public variant: StatusLightVariant = 'neutral';\n\n // ──────────────────────\n // IMPLEMENTATION\n // ──────────────────────\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n if (window.__swc?.DEBUG) {\n const constructor = this.constructor as typeof StatusLightBase;\n // @ts-expect-error -- intentional runtime guard: 1st-gen consumers may pass 'accent'\n if (this.variant === 'accent') {\n window.__swc.warn(\n this,\n `<${this.localName}> does not support the \"accent\" variant in Spectrum 2. Use \"neutral\" or \"info\" depending on intent.`,\n 'https://spectrum-web-components.adobe.com/?path=/docs/status-light-migration-guide--docs',\n { level: 'deprecation' }\n );\n } else if (!constructor.VARIANTS.includes(this.variant)) {\n window.__swc.warn(\n this,\n `<${this.localName}> element expects the \"variant\" attribute to be one of the following:`,\n 'https://opensource.adobe.com/spectrum-web-components/components/status-light/#variants',\n {\n issues: [...constructor.VARIANTS],\n }\n );\n }\n if (this.hasAttribute('disabled')) {\n window.__swc.warn(\n this,\n `<${this.localName}> does not support the \"disabled\" attribute. It was deprecated in Spectrum 1 and has been removed in Spectrum 2.`,\n 'https://spectrum-web-components.adobe.com/?path=/docs/status-light-migration-guide--docs',\n { level: 'deprecation' }\n );\n }\n }\n }\n}\n"],"mappings":";;;;;;AA4BA,IAAsB,IAAtB,cAA8C,EAAW,GAAiB;CACxE,YAAY;CACZ,eAAe;CAChB,CAAC,CAAC;;8BAwDoC;;CAMrC,QAA2B,GAA+B;;AAExD,MADA,MAAM,QAAQ,EAAQ,GACtB,IAAI,OAAO,UAAA,QAAA,EAAO,OAAO;GACvB,IAAM,IAAc,KAAK;AAmBzB,GAjBI,KAAK,YAAY,WACnB,OAAO,MAAM,KACX,MACA,IAAI,KAAK,UAAU,sGACnB,4FACA,EAAE,OAAO,eAAe,CACzB,GACS,EAAY,SAAS,SAAS,KAAK,QAAQ,IACrD,OAAO,MAAM,KACX,MACA,IAAI,KAAK,UAAU,wEACnB,0FACA,EACE,QAAQ,CAAC,GAAG,EAAY,SAAS,EAClC,CACF,EAEC,KAAK,aAAa,WAAW,IAC/B,OAAO,MAAM,KACX,MACA,IAAI,KAAK,UAAU,mHACnB,4FACA,EAAE,OAAO,eAAe,CACzB;;;;GAnCN,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,WAAA,KAAA,EAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ export declare const STATUS_LIGHT_VALID_SIZES: readonly ["s", "m", "l", "xl"];
13
+ export declare const STATUS_LIGHT_VARIANTS_SEMANTIC: readonly ["neutral", "info", "positive", "negative", "notice"];
14
+ export declare const STATUS_LIGHT_VARIANTS_COLOR: readonly ["fuchsia", "indigo", "magenta", "purple", "seafoam", "yellow", "chartreuse", "celery", "cyan", "pink", "turquoise", "brown", "cinnamon", "silver"];
15
+ export declare const STATUS_LIGHT_VARIANTS: readonly ["neutral", "info", "positive", "negative", "notice", "fuchsia", "indigo", "magenta", "purple", "seafoam", "yellow", "chartreuse", "celery", "cyan", "pink", "turquoise", "brown", "cinnamon", "silver"];
16
+ export type StatusLightSemanticVariant = (typeof STATUS_LIGHT_VARIANTS_SEMANTIC)[number];
17
+ export type StatusLightColorVariant = (typeof STATUS_LIGHT_VARIANTS_COLOR)[number];
18
+ export type StatusLightVariant = (typeof STATUS_LIGHT_VARIANTS)[number];
19
+ export type StatusLightSize = (typeof STATUS_LIGHT_VALID_SIZES)[number];
@@ -0,0 +1,32 @@
1
+ //#region components/status-light/StatusLight.types.ts
2
+ var e = [
3
+ "s",
4
+ "m",
5
+ "l",
6
+ "xl"
7
+ ], t = [
8
+ "neutral",
9
+ "info",
10
+ "positive",
11
+ "negative",
12
+ "notice"
13
+ ], n = [
14
+ "fuchsia",
15
+ "indigo",
16
+ "magenta",
17
+ "purple",
18
+ "seafoam",
19
+ "yellow",
20
+ "chartreuse",
21
+ "celery",
22
+ "cyan",
23
+ "pink",
24
+ "turquoise",
25
+ "brown",
26
+ "cinnamon",
27
+ "silver"
28
+ ], r = [...t, ...n];
29
+ //#endregion
30
+ export { e as STATUS_LIGHT_VALID_SIZES, r as STATUS_LIGHT_VARIANTS, n as STATUS_LIGHT_VARIANTS_COLOR, t as STATUS_LIGHT_VARIANTS_SEMANTIC };
31
+
32
+ //# sourceMappingURL=StatusLight.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusLight.types.js","names":[],"sources":["../../../components/status-light/StatusLight.types.ts"],"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 type { ElementSize } from '@adobe/spectrum-wc-core/mixins/index.js';\n\nexport const STATUS_LIGHT_VALID_SIZES = [\n 's',\n 'm',\n 'l',\n 'xl',\n] as const satisfies readonly ElementSize[];\n\nexport const STATUS_LIGHT_VARIANTS_SEMANTIC = [\n 'neutral',\n 'info',\n 'positive',\n 'negative',\n 'notice',\n] as const;\n\nexport const STATUS_LIGHT_VARIANTS_COLOR = [\n 'fuchsia',\n 'indigo',\n 'magenta',\n 'purple',\n 'seafoam',\n 'yellow',\n 'chartreuse',\n 'celery',\n 'cyan',\n 'pink',\n 'turquoise',\n 'brown',\n 'cinnamon',\n 'silver',\n] as const;\n\nexport const STATUS_LIGHT_VARIANTS = [\n ...STATUS_LIGHT_VARIANTS_SEMANTIC,\n ...STATUS_LIGHT_VARIANTS_COLOR,\n] as const;\n\nexport type StatusLightSemanticVariant =\n (typeof STATUS_LIGHT_VARIANTS_SEMANTIC)[number];\n\nexport type StatusLightColorVariant =\n (typeof STATUS_LIGHT_VARIANTS_COLOR)[number];\n\nexport type StatusLightVariant = (typeof STATUS_LIGHT_VARIANTS)[number];\n\nexport type StatusLightSize = (typeof STATUS_LIGHT_VALID_SIZES)[number];\n"],"mappings":";AAcA,IAAa,IAA2B;CACtC;CACA;CACA;CACA;CACD,EAEY,IAAiC;CAC5C;CACA;CACA;CACA;CACA;CACD,EAEY,IAA8B;CACzC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,EAEY,IAAwB,CACnC,GAAG,GACH,GAAG,EACJ"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ export * from './StatusLight.base.js';
13
+ export * from './StatusLight.types.js';
@@ -0,0 +1,3 @@
1
+ import { STATUS_LIGHT_VALID_SIZES as e, STATUS_LIGHT_VARIANTS as t, STATUS_LIGHT_VARIANTS_COLOR as n, STATUS_LIGHT_VARIANTS_SEMANTIC as r } from "./StatusLight.types.js";
2
+ import { StatusLightBase as i } from "./StatusLight.base.js";
3
+ export { e as STATUS_LIGHT_VALID_SIZES, t as STATUS_LIGHT_VARIANTS, n as STATUS_LIGHT_VARIANTS_COLOR, r as STATUS_LIGHT_VARIANTS_SEMANTIC, i as StatusLightBase };
@@ -0,0 +1,49 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { SpectrumElement } from '../../element/index.js';
3
+ /**
4
+ * Base class for an individual tab within a tabbed interface.
5
+ *
6
+ * Manages the tab's selection state, disabled behavior, ARIA
7
+ * attributes, and roving tabindex. Concrete classes supply the
8
+ * stylesheet and render template.
9
+ *
10
+ * Disabled tabs use `aria-disabled="true"` and remain focusable via
11
+ * arrow keys per the ARIA Authoring Practices Guide, but are not
12
+ * activatable (Enter, Space, and click are guarded).
13
+ *
14
+ * @slot - Text label of the tab
15
+ * @slot icon - Optional icon displayed before the label
16
+ */
17
+ export declare abstract class TabBase extends SpectrumElement {
18
+ /**
19
+ * Whether this tab is disabled. Disabled tabs are announced as
20
+ * unavailable by assistive technology and cannot be activated,
21
+ * but remain focusable via arrow keys within the tablist.
22
+ */
23
+ disabled: boolean;
24
+ /**
25
+ * Whether this tab is currently selected. Managed by the parent
26
+ * `swc-tabs` container — consumers should not set this directly.
27
+ * Use `swc-tabs[selected]` instead.
28
+ */
29
+ selected: boolean;
30
+ /**
31
+ * Whether the tab is displayed in vertical orientation.
32
+ *
33
+ * Orientation is primarily driven by the parent `swc-tabs` `direction`
34
+ * attribute; this property remains for styling and any consumers that read
35
+ * it explicitly. We can remove it in a future major once vertical layout is
36
+ * fully parent-driven only—track that cleanup in the component backlog if
37
+ * it becomes redundant in practice.
38
+ */
39
+ vertical: boolean;
40
+ /**
41
+ * Unique identifier for this tab. Used by the parent `swc-tabs`
42
+ * to match this tab to its corresponding `swc-tab-panel`.
43
+ */
44
+ tabId: string;
45
+ protected firstUpdated(changes: PropertyValues): void;
46
+ protected updated(changes: PropertyValues): void;
47
+ private syncAriaSelected;
48
+ private syncAriaDisabled;
49
+ }
@@ -0,0 +1,39 @@
1
+ import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.124.0/helpers/decorate.js";
2
+ import { property as t } from "lit/decorators.js";
3
+ import { SpectrumElement as n } from "@adobe/spectrum-wc-core/element/index.js";
4
+ //#region components/tabs/Tab.base.ts
5
+ var r = 0, i = class extends n {
6
+ constructor(...e) {
7
+ super(...e), this.disabled = !1, this.selected = !1, this.vertical = !1, this.tabId = "";
8
+ }
9
+ firstUpdated(e) {
10
+ super.firstUpdated(e), this.setAttribute("role", "tab"), this.hasAttribute("id") || (this.id = `swc-tab-${r++}`), this.syncAriaSelected(), this.syncAriaDisabled(), this.hasAttribute("tabindex") || (this.tabIndex = -1);
11
+ }
12
+ updated(e) {
13
+ super.updated(e), e.has("selected") && this.syncAriaSelected(), e.has("disabled") && this.syncAriaDisabled();
14
+ }
15
+ syncAriaSelected() {
16
+ this.setAttribute("aria-selected", String(this.selected));
17
+ }
18
+ syncAriaDisabled() {
19
+ this.disabled ? this.setAttribute("aria-disabled", "true") : this.removeAttribute("aria-disabled");
20
+ }
21
+ };
22
+ e([t({
23
+ type: Boolean,
24
+ reflect: !0
25
+ })], i.prototype, "disabled", void 0), e([t({
26
+ type: Boolean,
27
+ reflect: !0
28
+ })], i.prototype, "selected", void 0), e([t({
29
+ type: Boolean,
30
+ reflect: !0
31
+ })], i.prototype, "vertical", void 0), e([t({
32
+ type: String,
33
+ reflect: !0,
34
+ attribute: "tab-id"
35
+ })], i.prototype, "tabId", void 0);
36
+ //#endregion
37
+ export { i as TabBase };
38
+
39
+ //# sourceMappingURL=Tab.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tab.base.js","names":[],"sources":["../../../components/tabs/Tab.base.ts"],"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 */\nimport { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { SpectrumElement } from '@adobe/spectrum-wc-core/element/index.js';\n\nlet tabIdCounter = 0;\n\n/**\n * Base class for an individual tab within a tabbed interface.\n *\n * Manages the tab's selection state, disabled behavior, ARIA\n * attributes, and roving tabindex. Concrete classes supply the\n * stylesheet and render template.\n *\n * Disabled tabs use `aria-disabled=\"true\"` and remain focusable via\n * arrow keys per the ARIA Authoring Practices Guide, but are not\n * activatable (Enter, Space, and click are guarded).\n *\n * @slot - Text label of the tab\n * @slot icon - Optional icon displayed before the label\n */\nexport abstract class TabBase extends SpectrumElement {\n // ──────────────────\n // SHARED API\n // ──────────────────\n\n /**\n * Whether this tab is disabled. Disabled tabs are announced as\n * unavailable by assistive technology and cannot be activated,\n * but remain focusable via arrow keys within the tablist.\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Whether this tab is currently selected. Managed by the parent\n * `swc-tabs` container — consumers should not set this directly.\n * Use `swc-tabs[selected]` instead.\n */\n @property({ type: Boolean, reflect: true })\n public selected = false;\n\n /**\n * Whether the tab is displayed in vertical orientation.\n *\n * Orientation is primarily driven by the parent `swc-tabs` `direction`\n * attribute; this property remains for styling and any consumers that read\n * it explicitly. We can remove it in a future major once vertical layout is\n * fully parent-driven only—track that cleanup in the component backlog if\n * it becomes redundant in practice.\n */\n @property({ type: Boolean, reflect: true })\n public vertical = false;\n\n /**\n * Unique identifier for this tab. Used by the parent `swc-tabs`\n * to match this tab to its corresponding `swc-tab-panel`.\n */\n @property({ type: String, reflect: true, attribute: 'tab-id' })\n public tabId = '';\n\n // ──────────────────────\n // IMPLEMENTATION\n // ──────────────────────\n\n protected override firstUpdated(changes: PropertyValues): void {\n super.firstUpdated(changes);\n\n this.setAttribute('role', 'tab');\n\n if (!this.hasAttribute('id')) {\n this.id = `swc-tab-${tabIdCounter++}`;\n }\n\n this.syncAriaSelected();\n this.syncAriaDisabled();\n\n // Initial tabindex: -1 by default. The parent TabsBase\n // manages roving tabindex via setRovingTabindex() /\n // updateCheckedState() to ensure exactly one tab has\n // tabindex=\"0\" at all times.\n if (!this.hasAttribute('tabindex')) {\n this.tabIndex = -1;\n }\n }\n\n protected override updated(changes: PropertyValues): void {\n super.updated(changes);\n\n if (changes.has('selected')) {\n this.syncAriaSelected();\n }\n\n if (changes.has('disabled')) {\n this.syncAriaDisabled();\n }\n }\n\n private syncAriaSelected(): void {\n this.setAttribute('aria-selected', String(this.selected));\n }\n\n private syncAriaDisabled(): void {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n}\n"],"mappings":";;;;AAgBA,IAAI,IAAe,GAgBG,IAAtB,cAAsC,EAAgB;;+BAWlC,oBAQA,oBAYA,iBAOH;;CAMf,aAAgC,GAA+B;AAgB7D,EAfA,MAAM,aAAa,EAAQ,EAE3B,KAAK,aAAa,QAAQ,MAAM,EAE3B,KAAK,aAAa,KAAK,KAC1B,KAAK,KAAK,WAAW,QAGvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAMlB,KAAK,aAAa,WAAW,KAChC,KAAK,WAAW;;CAIpB,QAA2B,GAA+B;AAOxD,EANA,MAAM,QAAQ,EAAQ,EAElB,EAAQ,IAAI,WAAW,IACzB,KAAK,kBAAkB,EAGrB,EAAQ,IAAI,WAAW,IACzB,KAAK,kBAAkB;;CAI3B,mBAAiC;AAC/B,OAAK,aAAa,iBAAiB,OAAO,KAAK,SAAS,CAAC;;CAG3D,mBAAiC;AAC/B,EAAI,KAAK,WACP,KAAK,aAAa,iBAAiB,OAAO,GAE1C,KAAK,gBAAgB,gBAAgB;;;GA3ExC,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAQ1C,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAY1C,EAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,EAAA,WAAA,YAAA,KAAA,EAAA,KAO1C,EAAS;CAAE,MAAM;CAAQ,SAAS;CAAM,WAAW;CAAU,CAAC,CAAA,EAAA,EAAA,WAAA,SAAA,KAAA,EAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright 2026 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ /**
13
+ * Reserved for future tab-specific type definitions (e.g., icon placement,
14
+ * badge configuration). The file is scaffolded now so imports are stable
15
+ * when implementation work begins.
16
+ */
17
+ export {};