@adobe/spectrum-wc-core 0.0.0-snapshot.20260922095923

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 (335) 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/components/accordion/Accordion.base.d.ts +59 -0
  4. package/dist/components/accordion/Accordion.base.js +69 -0
  5. package/dist/components/accordion/Accordion.base.js.map +1 -0
  6. package/dist/components/accordion/Accordion.types.d.ts +22 -0
  7. package/dist/components/accordion/Accordion.types.js +21 -0
  8. package/dist/components/accordion/Accordion.types.js.map +1 -0
  9. package/dist/components/accordion/AccordionItem.base.d.ts +96 -0
  10. package/dist/components/accordion/AccordionItem.base.js +93 -0
  11. package/dist/components/accordion/AccordionItem.base.js.map +1 -0
  12. package/dist/components/accordion/index.d.ts +14 -0
  13. package/dist/components/accordion/index.js +4 -0
  14. package/dist/components/action-button/ActionButton.types.d.ts +15 -0
  15. package/dist/components/action-button/ActionButton.types.js +12 -0
  16. package/dist/components/action-button/ActionButton.types.js.map +1 -0
  17. package/dist/components/action-button/index.d.ts +12 -0
  18. package/dist/components/action-button/index.js +2 -0
  19. package/dist/components/action-group/ActionGroup.base.d.ts +108 -0
  20. package/dist/components/action-group/ActionGroup.base.js +53 -0
  21. package/dist/components/action-group/ActionGroup.base.js.map +1 -0
  22. package/dist/components/action-group/ActionGroup.types.d.ts +17 -0
  23. package/dist/components/action-group/ActionGroup.types.js +12 -0
  24. package/dist/components/action-group/ActionGroup.types.js.map +1 -0
  25. package/dist/components/action-group/index.d.ts +13 -0
  26. package/dist/components/action-group/index.js +3 -0
  27. package/dist/components/alert-banner/AlertBanner.base.d.ts +36 -0
  28. package/dist/components/alert-banner/AlertBanner.base.js +57 -0
  29. package/dist/components/alert-banner/AlertBanner.base.js.map +1 -0
  30. package/dist/components/alert-banner/AlertBanner.types.d.ts +13 -0
  31. package/dist/components/alert-banner/AlertBanner.types.js +10 -0
  32. package/dist/components/alert-banner/AlertBanner.types.js.map +1 -0
  33. package/dist/components/alert-banner/index.d.ts +13 -0
  34. package/dist/components/alert-banner/index.js +3 -0
  35. package/dist/components/asset/Asset.base.d.ts +101 -0
  36. package/dist/components/asset/Asset.base.js +130 -0
  37. package/dist/components/asset/Asset.base.js.map +1 -0
  38. package/dist/components/asset/Asset.types.d.ts +31 -0
  39. package/dist/components/asset/Asset.types.js +14 -0
  40. package/dist/components/asset/Asset.types.js.map +1 -0
  41. package/dist/components/asset/index.d.ts +13 -0
  42. package/dist/components/asset/index.js +3 -0
  43. package/dist/components/avatar/Avatar.base.d.ts +53 -0
  44. package/dist/components/avatar/Avatar.base.js +52 -0
  45. package/dist/components/avatar/Avatar.base.js.map +1 -0
  46. package/dist/components/avatar/Avatar.types.d.ts +19 -0
  47. package/dist/components/avatar/Avatar.types.js +24 -0
  48. package/dist/components/avatar/Avatar.types.js.map +1 -0
  49. package/dist/components/avatar/index.d.ts +13 -0
  50. package/dist/components/avatar/index.js +3 -0
  51. package/dist/components/badge/Badge.base.d.ts +114 -0
  52. package/dist/components/badge/Badge.base.js +49 -0
  53. package/dist/components/badge/Badge.base.js.map +1 -0
  54. package/dist/components/badge/Badge.types.d.ts +21 -0
  55. package/dist/components/badge/Badge.types.js +43 -0
  56. package/dist/components/badge/Badge.types.js.map +1 -0
  57. package/dist/components/badge/index.d.ts +13 -0
  58. package/dist/components/badge/index.js +3 -0
  59. package/dist/components/button/Button.base.d.ts +78 -0
  60. package/dist/components/button/Button.base.js +51 -0
  61. package/dist/components/button/Button.base.js.map +1 -0
  62. package/dist/components/button/Button.types.d.ts +19 -0
  63. package/dist/components/button/Button.types.js +16 -0
  64. package/dist/components/button/Button.types.js.map +1 -0
  65. package/dist/components/button/index.d.ts +13 -0
  66. package/dist/components/button/index.js +3 -0
  67. package/dist/components/button-group/ButtonGroup.base.d.ts +89 -0
  68. package/dist/components/button-group/ButtonGroup.base.js +60 -0
  69. package/dist/components/button-group/ButtonGroup.base.js.map +1 -0
  70. package/dist/components/button-group/ButtonGroup.types.d.ts +17 -0
  71. package/dist/components/button-group/ButtonGroup.types.js +15 -0
  72. package/dist/components/button-group/ButtonGroup.types.js.map +1 -0
  73. package/dist/components/button-group/index.d.ts +13 -0
  74. package/dist/components/button-group/index.js +3 -0
  75. package/dist/components/card/Card.base.d.ts +172 -0
  76. package/dist/components/card/Card.base.js +123 -0
  77. package/dist/components/card/Card.base.js.map +1 -0
  78. package/dist/components/card/Card.types.d.ts +18 -0
  79. package/dist/components/card/Card.types.js +21 -0
  80. package/dist/components/card/Card.types.js.map +1 -0
  81. package/dist/components/card/index.d.ts +13 -0
  82. package/dist/components/card/index.js +3 -0
  83. package/dist/components/color-handle/ColorHandle.base.d.ts +51 -0
  84. package/dist/components/color-handle/ColorHandle.base.js +39 -0
  85. package/dist/components/color-handle/ColorHandle.base.js.map +1 -0
  86. package/dist/components/color-handle/ColorHandle.types.d.ts +30 -0
  87. package/dist/components/color-handle/color-contrast.d.ts +55 -0
  88. package/dist/components/color-handle/color-contrast.js +49 -0
  89. package/dist/components/color-handle/color-contrast.js.map +1 -0
  90. package/dist/components/color-handle/index.d.ts +14 -0
  91. package/dist/components/color-handle/index.js +3 -0
  92. package/dist/components/color-loupe/ColorLoupe.base.d.ts +41 -0
  93. package/dist/components/color-loupe/ColorLoupe.base.js +21 -0
  94. package/dist/components/color-loupe/ColorLoupe.base.js.map +1 -0
  95. package/dist/components/color-loupe/index.d.ts +12 -0
  96. package/dist/components/color-loupe/index.js +2 -0
  97. package/dist/components/divider/Divider.base.d.ts +43 -0
  98. package/dist/components/divider/Divider.base.js +42 -0
  99. package/dist/components/divider/Divider.base.js.map +1 -0
  100. package/dist/components/divider/Divider.types.d.ts +15 -0
  101. package/dist/components/divider/Divider.types.js +10 -0
  102. package/dist/components/divider/Divider.types.js.map +1 -0
  103. package/dist/components/divider/index.d.ts +13 -0
  104. package/dist/components/divider/index.js +3 -0
  105. package/dist/components/dropzone/Dropzone.base.d.ts +74 -0
  106. package/dist/components/dropzone/Dropzone.base.js +82 -0
  107. package/dist/components/dropzone/Dropzone.base.js.map +1 -0
  108. package/dist/components/dropzone/Dropzone.types.d.ts +43 -0
  109. package/dist/components/dropzone/Dropzone.types.js +15 -0
  110. package/dist/components/dropzone/Dropzone.types.js.map +1 -0
  111. package/dist/components/dropzone/index.d.ts +13 -0
  112. package/dist/components/dropzone/index.js +3 -0
  113. package/dist/components/icon/Icon.base.d.ts +36 -0
  114. package/dist/components/icon/Icon.base.js +28 -0
  115. package/dist/components/icon/Icon.base.js.map +1 -0
  116. package/dist/components/icon/Icon.types.d.ts +13 -0
  117. package/dist/components/icon/Icon.types.js +12 -0
  118. package/dist/components/icon/Icon.types.js.map +1 -0
  119. package/dist/components/icon/index.d.ts +13 -0
  120. package/dist/components/icon/index.js +3 -0
  121. package/dist/components/illustrated-message/IllustratedMessage.base.d.ts +60 -0
  122. package/dist/components/illustrated-message/IllustratedMessage.base.js +59 -0
  123. package/dist/components/illustrated-message/IllustratedMessage.base.js.map +1 -0
  124. package/dist/components/illustrated-message/IllustratedMessage.types.d.ts +15 -0
  125. package/dist/components/illustrated-message/IllustratedMessage.types.js +10 -0
  126. package/dist/components/illustrated-message/IllustratedMessage.types.js.map +1 -0
  127. package/dist/components/illustrated-message/index.d.ts +13 -0
  128. package/dist/components/illustrated-message/index.js +3 -0
  129. package/dist/components/infield-button/InfieldButton.base.d.ts +28 -0
  130. package/dist/components/infield-button/InfieldButton.base.js +22 -0
  131. package/dist/components/infield-button/InfieldButton.base.js.map +1 -0
  132. package/dist/components/infield-button/InfieldButton.types.d.ts +13 -0
  133. package/dist/components/infield-button/InfieldButton.types.js +11 -0
  134. package/dist/components/infield-button/InfieldButton.types.js.map +1 -0
  135. package/dist/components/infield-button/index.d.ts +13 -0
  136. package/dist/components/infield-button/index.js +3 -0
  137. package/dist/components/meter/Meter.base.d.ts +40 -0
  138. package/dist/components/meter/Meter.base.js +32 -0
  139. package/dist/components/meter/Meter.base.js.map +1 -0
  140. package/dist/components/meter/Meter.types.d.ts +13 -0
  141. package/dist/components/meter/Meter.types.js +11 -0
  142. package/dist/components/meter/Meter.types.js.map +1 -0
  143. package/dist/components/meter/index.d.ts +13 -0
  144. package/dist/components/meter/index.js +3 -0
  145. package/dist/components/popover/Popover.base.d.ts +226 -0
  146. package/dist/components/popover/Popover.base.js +287 -0
  147. package/dist/components/popover/Popover.base.js.map +1 -0
  148. package/dist/components/popover/Popover.types.d.ts +39 -0
  149. package/dist/components/popover/Popover.types.js +24 -0
  150. package/dist/components/popover/Popover.types.js.map +1 -0
  151. package/dist/components/popover/index.d.ts +13 -0
  152. package/dist/components/popover/index.js +3 -0
  153. package/dist/components/progress-bar/ProgressBar.base.d.ts +34 -0
  154. package/dist/components/progress-bar/ProgressBar.base.js +21 -0
  155. package/dist/components/progress-bar/ProgressBar.base.js.map +1 -0
  156. package/dist/components/progress-bar/ProgressBar.types.d.ts +12 -0
  157. package/dist/components/progress-bar/index.d.ts +13 -0
  158. package/dist/components/progress-bar/index.js +2 -0
  159. package/dist/components/progress-circle/ProgressCircle.base.d.ts +83 -0
  160. package/dist/components/progress-circle/ProgressCircle.base.js +77 -0
  161. package/dist/components/progress-circle/ProgressCircle.base.js.map +1 -0
  162. package/dist/components/progress-circle/ProgressCircle.types.d.ts +15 -0
  163. package/dist/components/progress-circle/ProgressCircle.types.js +10 -0
  164. package/dist/components/progress-circle/ProgressCircle.types.js.map +1 -0
  165. package/dist/components/progress-circle/index.d.ts +13 -0
  166. package/dist/components/progress-circle/index.js +3 -0
  167. package/dist/components/status-light/StatusLight.base.d.ts +69 -0
  168. package/dist/components/status-light/StatusLight.base.js +32 -0
  169. package/dist/components/status-light/StatusLight.base.js.map +1 -0
  170. package/dist/components/status-light/StatusLight.types.d.ts +19 -0
  171. package/dist/components/status-light/StatusLight.types.js +32 -0
  172. package/dist/components/status-light/StatusLight.types.js.map +1 -0
  173. package/dist/components/status-light/index.d.ts +13 -0
  174. package/dist/components/status-light/index.js +3 -0
  175. package/dist/components/tabs/Tab.base.d.ts +49 -0
  176. package/dist/components/tabs/Tab.base.js +39 -0
  177. package/dist/components/tabs/Tab.base.js.map +1 -0
  178. package/dist/components/tabs/Tab.types.d.ts +17 -0
  179. package/dist/components/tabs/TabPanel.base.d.ts +49 -0
  180. package/dist/components/tabs/TabPanel.base.js +36 -0
  181. package/dist/components/tabs/TabPanel.base.js.map +1 -0
  182. package/dist/components/tabs/TabPanel.types.d.ts +17 -0
  183. package/dist/components/tabs/Tabs.base.d.ts +221 -0
  184. package/dist/components/tabs/Tabs.base.js +213 -0
  185. package/dist/components/tabs/Tabs.base.js.map +1 -0
  186. package/dist/components/tabs/Tabs.types.d.ts +55 -0
  187. package/dist/components/tabs/Tabs.types.js +6 -0
  188. package/dist/components/tabs/Tabs.types.js.map +1 -0
  189. package/dist/components/tabs/index.d.ts +17 -0
  190. package/dist/components/tabs/index.js +5 -0
  191. package/dist/components/tooltip/Tooltip.base.d.ts +159 -0
  192. package/dist/components/tooltip/Tooltip.base.js +198 -0
  193. package/dist/components/tooltip/Tooltip.base.js.map +1 -0
  194. package/dist/components/tooltip/Tooltip.types.d.ts +18 -0
  195. package/dist/components/tooltip/Tooltip.types.js +15 -0
  196. package/dist/components/tooltip/Tooltip.types.js.map +1 -0
  197. package/dist/components/tooltip/index.d.ts +13 -0
  198. package/dist/components/tooltip/index.js +3 -0
  199. package/dist/controllers/color-controller/index.d.ts +12 -0
  200. package/dist/controllers/color-controller/index.js +2 -0
  201. package/dist/controllers/color-controller/src/color-controller.d.ts +226 -0
  202. package/dist/controllers/color-controller/src/color-controller.js +253 -0
  203. package/dist/controllers/color-controller/src/color-controller.js.map +1 -0
  204. package/dist/controllers/drag-and-drop-controller/index.d.ts +12 -0
  205. package/dist/controllers/drag-and-drop-controller/index.js +2 -0
  206. package/dist/controllers/drag-and-drop-controller/src/drag-and-drop-controller.d.ts +68 -0
  207. package/dist/controllers/drag-and-drop-controller/src/drag-and-drop-controller.js +56 -0
  208. package/dist/controllers/drag-and-drop-controller/src/drag-and-drop-controller.js.map +1 -0
  209. package/dist/controllers/focusgroup-navigation-controller/index.d.ts +12 -0
  210. package/dist/controllers/focusgroup-navigation-controller/index.js +2 -0
  211. package/dist/controllers/focusgroup-navigation-controller/src/focusgroup-navigation-controller.d.ts +496 -0
  212. package/dist/controllers/focusgroup-navigation-controller/src/focusgroup-navigation-controller.js +345 -0
  213. package/dist/controllers/focusgroup-navigation-controller/src/focusgroup-navigation-controller.js.map +1 -0
  214. package/dist/controllers/hover-controller/index.d.ts +12 -0
  215. package/dist/controllers/hover-controller/index.js +2 -0
  216. package/dist/controllers/hover-controller/src/hover-controller.d.ts +118 -0
  217. package/dist/controllers/hover-controller/src/hover-controller.js +90 -0
  218. package/dist/controllers/hover-controller/src/hover-controller.js.map +1 -0
  219. package/dist/controllers/index.d.ts +26 -0
  220. package/dist/controllers/index.js +18 -0
  221. package/dist/controllers/language-resolution.d.ts +87 -0
  222. package/dist/controllers/language-resolution.js +56 -0
  223. package/dist/controllers/language-resolution.js.map +1 -0
  224. package/dist/controllers/live-selection-controller/index.d.ts +12 -0
  225. package/dist/controllers/live-selection-controller/index.js +2 -0
  226. package/dist/controllers/live-selection-controller/src/live-selection-controller.d.ts +144 -0
  227. package/dist/controllers/live-selection-controller/src/live-selection-controller.js +36 -0
  228. package/dist/controllers/live-selection-controller/src/live-selection-controller.js.map +1 -0
  229. package/dist/controllers/page-scroll-lock-controller/index.d.ts +12 -0
  230. package/dist/controllers/page-scroll-lock-controller/index.js +2 -0
  231. package/dist/controllers/page-scroll-lock-controller/src/page-scroll-lock.d.ts +20 -0
  232. package/dist/controllers/page-scroll-lock-controller/src/page-scroll-lock.js +30 -0
  233. package/dist/controllers/page-scroll-lock-controller/src/page-scroll-lock.js.map +1 -0
  234. package/dist/controllers/pending-controller/index.d.ts +12 -0
  235. package/dist/controllers/pending-controller/index.js +2 -0
  236. package/dist/controllers/pending-controller/src/pending-controller.d.ts +95 -0
  237. package/dist/controllers/pending-controller/src/pending-controller.js +55 -0
  238. package/dist/controllers/pending-controller/src/pending-controller.js.map +1 -0
  239. package/dist/controllers/placement-controller/index.d.ts +12 -0
  240. package/dist/controllers/placement-controller/index.js +4 -0
  241. package/dist/controllers/placement-controller/src/fallback-placements.d.ts +9 -0
  242. package/dist/controllers/placement-controller/src/fallback-placements.js +71 -0
  243. package/dist/controllers/placement-controller/src/fallback-placements.js.map +1 -0
  244. package/dist/controllers/placement-controller/src/placement-controller.d.ts +152 -0
  245. package/dist/controllers/placement-controller/src/placement-controller.js +129 -0
  246. package/dist/controllers/placement-controller/src/placement-controller.js.map +1 -0
  247. package/dist/controllers/placement-controller/src/placement-conversion.d.ts +35 -0
  248. package/dist/controllers/placement-controller/src/placement-conversion.js +54 -0
  249. package/dist/controllers/placement-controller/src/placement-conversion.js.map +1 -0
  250. package/dist/controllers/placement-controller/src/types.d.ts +128 -0
  251. package/dist/controllers/placement-controller/src/types.js +29 -0
  252. package/dist/controllers/placement-controller/src/types.js.map +1 -0
  253. package/dist/controllers/slot-attribute-propagation-controller/index.d.ts +12 -0
  254. package/dist/controllers/slot-attribute-propagation-controller/index.js +2 -0
  255. package/dist/controllers/slot-attribute-propagation-controller/src/slot-attribute-propagation-controller.d.ts +65 -0
  256. package/dist/controllers/slot-attribute-propagation-controller/src/slot-attribute-propagation-controller.js +33 -0
  257. package/dist/controllers/slot-attribute-propagation-controller/src/slot-attribute-propagation-controller.js.map +1 -0
  258. package/dist/controllers/slot-presence-controller/index.d.ts +12 -0
  259. package/dist/controllers/slot-presence-controller/index.js +2 -0
  260. package/dist/controllers/slot-presence-controller/src/slot-presence-controller.d.ts +57 -0
  261. package/dist/controllers/slot-presence-controller/src/slot-presence-controller.js +44 -0
  262. package/dist/controllers/slot-presence-controller/src/slot-presence-controller.js.map +1 -0
  263. package/dist/controllers/slot-text-controller/index.d.ts +12 -0
  264. package/dist/controllers/slot-text-controller/index.js +2 -0
  265. package/dist/controllers/slot-text-controller/src/slot-text-controller.d.ts +92 -0
  266. package/dist/controllers/slot-text-controller/src/slot-text-controller.js +53 -0
  267. package/dist/controllers/slot-text-controller/src/slot-text-controller.js.map +1 -0
  268. package/dist/directives/index.d.ts +15 -0
  269. package/dist/directives/index.js +3 -0
  270. package/dist/directives/pending-spinner/index.d.ts +12 -0
  271. package/dist/directives/pending-spinner/index.js +1 -0
  272. package/dist/directives/pending-spinner/src/pending-spinner.d.ts +22 -0
  273. package/dist/directives/pending-spinner/src/pending-spinner.js +39 -0
  274. package/dist/directives/pending-spinner/src/pending-spinner.js.map +1 -0
  275. package/dist/element/define-element.d.ts +16 -0
  276. package/dist/element/define-element.js +8 -0
  277. package/dist/element/define-element.js.map +1 -0
  278. package/dist/element/index.d.ts +14 -0
  279. package/dist/element/index.js +4 -0
  280. package/dist/element/spectrum-element.d.ts +69 -0
  281. package/dist/element/spectrum-element.js +85 -0
  282. package/dist/element/spectrum-element.js.map +1 -0
  283. package/dist/element/version.d.ts +19 -0
  284. package/dist/element/version.js +6 -0
  285. package/dist/element/version.js.map +1 -0
  286. package/dist/mixins/disabled-mixin.d.ts +30 -0
  287. package/dist/mixins/disabled-mixin.js +27 -0
  288. package/dist/mixins/disabled-mixin.js.map +1 -0
  289. package/dist/mixins/index.d.ts +16 -0
  290. package/dist/mixins/index.js +5 -0
  291. package/dist/mixins/linear-progress-mixin.d.ts +41 -0
  292. package/dist/mixins/linear-progress-mixin.js +115 -0
  293. package/dist/mixins/linear-progress-mixin.js.map +1 -0
  294. package/dist/mixins/pending-mixin.d.ts +45 -0
  295. package/dist/mixins/pending-mixin.js +50 -0
  296. package/dist/mixins/pending-mixin.js.map +1 -0
  297. package/dist/mixins/sized-mixin.d.ts +49 -0
  298. package/dist/mixins/sized-mixin.js +42 -0
  299. package/dist/mixins/sized-mixin.js.map +1 -0
  300. package/dist/utils/actual-placement.d.ts +10 -0
  301. package/dist/utils/actual-placement.js +8 -0
  302. package/dist/utils/actual-placement.js.map +1 -0
  303. package/dist/utils/capitalize.d.ts +26 -0
  304. package/dist/utils/capitalize.js +8 -0
  305. package/dist/utils/capitalize.js.map +1 -0
  306. package/dist/utils/deep-contains.d.ts +26 -0
  307. package/dist/utils/deep-contains.js +14 -0
  308. package/dist/utils/deep-contains.js.map +1 -0
  309. package/dist/utils/dev-validation.d.ts +88 -0
  310. package/dist/utils/dev-validation.js +33 -0
  311. package/dist/utils/dev-validation.js.map +1 -0
  312. package/dist/utils/dismissible-stack.d.ts +26 -0
  313. package/dist/utils/dismissible-stack.js +16 -0
  314. package/dist/utils/dismissible-stack.js.map +1 -0
  315. package/dist/utils/focusable-selectors.d.ts +43 -0
  316. package/dist/utils/focusable-selectors.js +18 -0
  317. package/dist/utils/focusable-selectors.js.map +1 -0
  318. package/dist/utils/get-active-element.d.ts +31 -0
  319. package/dist/utils/get-active-element.js +11 -0
  320. package/dist/utils/get-active-element.js.map +1 -0
  321. package/dist/utils/get-label-from-slot.d.ts +12 -0
  322. package/dist/utils/get-label-from-slot.js +10 -0
  323. package/dist/utils/get-label-from-slot.js.map +1 -0
  324. package/dist/utils/index.d.ts +22 -0
  325. package/dist/utils/index.js +12 -0
  326. package/dist/utils/is-focus-visible-in-tree.d.ts +33 -0
  327. package/dist/utils/is-focus-visible-in-tree.js +11 -0
  328. package/dist/utils/is-focus-visible-in-tree.js.map +1 -0
  329. package/dist/utils/resolve-trigger.d.ts +42 -0
  330. package/dist/utils/resolve-trigger.js +23 -0
  331. package/dist/utils/resolve-trigger.js.map +1 -0
  332. package/dist/utils/transition.d.ts +53 -0
  333. package/dist/utils/transition.js +26 -0
  334. package/dist/utils/transition.js.map +1 -0
  335. package/package.json +644 -0
@@ -0,0 +1,5 @@
1
+ import { TabBase as e } from "./Tab.base.js";
2
+ import { TabPanelBase as t } from "./TabPanel.base.js";
3
+ import { KEYBOARD_ACTIVATIONS as n, KEYBOARD_ACTIVATION_DEFAULT as r, TABS_DEFAULT_DIRECTION as i, TABS_DIRECTIONS as a, TAB_DENSITIES as o, TAB_DENSITY_DEFAULT as s } from "./Tabs.types.js";
4
+ import { TabsBase as c } from "./Tabs.base.js";
5
+ export { n as KEYBOARD_ACTIVATIONS, r as KEYBOARD_ACTIVATION_DEFAULT, i as TABS_DEFAULT_DIRECTION, a as TABS_DIRECTIONS, o as TAB_DENSITIES, s as TAB_DENSITY_DEFAULT, e as TabBase, t as TabPanelBase, c as TabsBase };
@@ -0,0 +1,159 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { SpectrumElement } from '../../element/index.js';
3
+ import { HoverControllerHost } from '../../controllers/hover-controller/index.js';
4
+ import { TooltipPlacement, TooltipVariant } from './Tooltip.types.js';
5
+ /**
6
+ * Abstract base class for the Tooltip component.
7
+ * Handles all non-rendering logic: property declarations, popover lifecycle,
8
+ * event dispatch, trigger resolution, ARIA wiring, `HoverController` integration
9
+ * (hover/focus open/close), and `PlacementController` integration (pixel positioning).
10
+ *
11
+ * @slot - Text label displayed in the tooltip.
12
+ *
13
+ * @fires swc-open - Dispatched when the tooltip begins to open, before the transition plays.
14
+ * @fires swc-close - Dispatched when the tooltip begins to close, before the transition plays.
15
+ * @fires swc-after-open - Dispatched after the tooltip finishes opening, once the transition completes.
16
+ * @fires swc-after-close - Dispatched after the tooltip finishes closing, once the transition completes.
17
+ */
18
+ export declare abstract class TooltipBase extends SpectrumElement implements HoverControllerHost {
19
+ /**
20
+ * @internal
21
+ *
22
+ * All valid variants for the tooltip.
23
+ */
24
+ static readonly VARIANTS: readonly string[];
25
+ /**
26
+ * @internal
27
+ *
28
+ * All valid placement values: physical cardinals (`top`, `bottom`, `left`, `right`)
29
+ * and logical inline values (`start`, `end`).
30
+ */
31
+ static readonly PLACEMENTS: readonly string[];
32
+ /**
33
+ * The semantic variant of the tooltip.
34
+ *
35
+ * @default 'neutral'
36
+ */
37
+ variant: TooltipVariant;
38
+ /**
39
+ * Preferred placement of the tooltip relative to its trigger. This is always
40
+ * the consumer's requested side; the resolved physical side (after any
41
+ * viewport-driven flip) is reflected as `actual-placement`.
42
+ *
43
+ * @default 'top'
44
+ */
45
+ placement: TooltipPlacement;
46
+ /**
47
+ * Whether the tooltip is visible.
48
+ *
49
+ * @default false
50
+ */
51
+ open: boolean;
52
+ /**
53
+ * The `id` of the trigger element in the same document tree root.
54
+ */
55
+ for: string | undefined;
56
+ /**
57
+ * Explicit trigger element reference; overrides `for` when set.
58
+ * Use when `getElementById` cannot reach the trigger, such as across a shadow boundary.
59
+ *
60
+ * @default null
61
+ */
62
+ triggerElement: HTMLElement | null;
63
+ /**
64
+ * Warm-up delay in milliseconds before the tooltip opens on pointer hover.
65
+ * Set to `0` to open immediately. Keyboard focus always opens immediately.
66
+ *
67
+ * @default 1500
68
+ */
69
+ delay: number;
70
+ /**
71
+ * When set, the tooltip does not respond to hover or focus events and cannot
72
+ * be opened. `disabled` takes priority over `open`: setting `open` to `true`
73
+ * while disabled is a no-op, and disabling an open tooltip closes it. Applies
74
+ * in `manual` mode as well.
75
+ *
76
+ * @default false
77
+ */
78
+ disabled: boolean;
79
+ /**
80
+ * Suppresses automatic hover and focus wiring.
81
+ * The consumer manages visibility via the `open` property or the popover API.
82
+ *
83
+ * @default false
84
+ */
85
+ manual: boolean;
86
+ /**
87
+ * Pixel gap along the placement axis between the trigger and the tooltip bubble.
88
+ *
89
+ * @default 4
90
+ */
91
+ offset: number;
92
+ /**
93
+ * Slide along the trigger edge perpendicular to the placement direction, in pixels.
94
+ *
95
+ * @default 0
96
+ */
97
+ crossOffset: number;
98
+ /**
99
+ * Minimum inset from the viewport edge, in pixels, for collision detection.
100
+ *
101
+ * @default 12
102
+ */
103
+ containerPadding: number;
104
+ /**
105
+ * Whether the tooltip may reposition to the opposite side when the requested
106
+ * placement does not fit within the viewport.
107
+ *
108
+ * @default true
109
+ */
110
+ shouldFlip: boolean;
111
+ /**
112
+ * When set, the tooltip acts as the trigger's accessible name rather than its description.
113
+ * Use for icon-only triggers where the tooltip text is the sole accessible name.
114
+ *
115
+ * @default false
116
+ */
117
+ labeling: boolean;
118
+ private readonly hoverController;
119
+ private readonly placementController;
120
+ private afterEventPending;
121
+ private afterEventFallbackTimer;
122
+ private _lastWiredTrigger;
123
+ /**
124
+ * Returns the tip arrow element to pass to `PlacementController` so the
125
+ * `arrow` middleware keeps the tip aligned with the trigger when the bubble
126
+ * is shifted (e.g. via `crossOffset` or viewport `shift`).
127
+ *
128
+ * Returns `null` in the base class; the SWC rendering layer overrides this
129
+ * to return the actual `.swc-Tooltip-tip` element from the shadow DOM.
130
+ */
131
+ protected get tipElement(): HTMLElement | null;
132
+ private get isPopoverOpen();
133
+ /**
134
+ * {@link HoverControllerHost} contract. `open` is the single source of truth
135
+ * for visibility; the controller asks to open via this method rather than
136
+ * driving the Popover API directly. `updated()` then reconciles the popover.
137
+ */
138
+ requestOpen(): void;
139
+ /**
140
+ * {@link HoverControllerHost} contract. Asks the tooltip to close by setting
141
+ * `open`; `updated()` reconciles the popover.
142
+ */
143
+ requestClose(): void;
144
+ private setDeclaredActualPlacement;
145
+ private startPlacement;
146
+ private resolveTrigger;
147
+ private clearAriaRelationship;
148
+ private syncAriaRelationship;
149
+ private clearPositioningState;
150
+ private dispatchAfterEvent;
151
+ private readonly handleBeforeToggle;
152
+ private readonly handleToggle;
153
+ private readonly handleTransitionEnd;
154
+ private readonly handleKeyDown;
155
+ protected willUpdate(changedProperties: PropertyValues): void;
156
+ protected updated(changedProperties: PropertyValues): void;
157
+ connectedCallback(): void;
158
+ disconnectedCallback(): void;
159
+ }
@@ -0,0 +1,198 @@
1
+ import { __decorate as e } from "../../_virtual/_@oxc-project_runtime@0.124.0/helpers/decorate.js";
2
+ import { HoverController as t } from "../../controllers/hover-controller/src/hover-controller.js";
3
+ import { fromFloatingPlacement as n, toFloatingPlacement as r } from "../../controllers/placement-controller/src/placement-conversion.js";
4
+ import { PlacementController as i } from "../../controllers/placement-controller/src/placement-controller.js";
5
+ import "../../controllers/placement-controller/index.js";
6
+ import { TOOLTIP_PLACEMENTS as a, TOOLTIP_VARIANTS as o } from "./Tooltip.types.js";
7
+ import { property as s } from "lit/decorators.js";
8
+ import { SpectrumElement as c } from "@adobe/spectrum-wc-core/element/index.js";
9
+ import { isTopDismissible as l, registerDismissible as u, unregisterDismissible as d, validateEnum as f, warnIf as p } from "@adobe/spectrum-wc-core/utils/index.js";
10
+ //#region components/tooltip/Tooltip.base.ts
11
+ var m, h = null, g = class extends c {
12
+ constructor(...e) {
13
+ super(...e), this.variant = "neutral", this.placement = "top", this.open = !1, this.triggerElement = null, this.delay = 1500, this.disabled = !1, this.manual = !1, this.offset = 4, this.crossOffset = 0, this.containerPadding = 12, this.shouldFlip = !0, this.labeling = !1, this.hoverController = new t(this, { warmStateKey: "swc-tooltip" }), this.placementController = new i(this), this.afterEventPending = !1, this.afterEventFallbackTimer = null, this._lastWiredTrigger = null, this.handleBeforeToggle = (e) => {
14
+ let { newState: t } = e, n = t === "open" ? "swc-open" : "swc-close";
15
+ this.dispatchEvent(new CustomEvent(n, {
16
+ bubbles: !0,
17
+ composed: !0
18
+ })), this.afterEventPending = !0;
19
+ }, this.handleToggle = (e) => {
20
+ this.afterEventFallbackTimer !== null && (clearTimeout(this.afterEventFallbackTimer), this.afterEventFallbackTimer = null);
21
+ let { newState: t } = e, n = t === "open";
22
+ n !== this.open && (this.open = n);
23
+ let r = getComputedStyle(this).transitionDuration.split(",");
24
+ if (r.every((e) => e.trim() === "0s")) this.afterEventPending = !1, this.dispatchAfterEvent(n);
25
+ else if (!n) {
26
+ let e = Math.max(0, ...r.map((e) => {
27
+ let t = e.trim(), n = parseFloat(t);
28
+ return t.endsWith("ms") ? n : n * 1e3;
29
+ }));
30
+ this.afterEventFallbackTimer = setTimeout(() => {
31
+ this.afterEventFallbackTimer = null, this.afterEventPending && (this.afterEventPending = !1, this.dispatchAfterEvent(!1));
32
+ }, e + 100);
33
+ }
34
+ }, this.handleTransitionEnd = (e) => {
35
+ e.target !== this || !this.afterEventPending || (this.afterEventFallbackTimer !== null && (clearTimeout(this.afterEventFallbackTimer), this.afterEventFallbackTimer = null), this.afterEventPending = !1, this.dispatchAfterEvent(this.open));
36
+ }, this.handleKeyDown = (e) => {
37
+ e.key !== "Escape" || !this.open || l(this) && (e.preventDefault(), this.open = !1);
38
+ };
39
+ }
40
+ get tipElement() {
41
+ return null;
42
+ }
43
+ get isPopoverOpen() {
44
+ return this.matches(":popover-open");
45
+ }
46
+ requestOpen() {
47
+ this.open = !0;
48
+ }
49
+ requestClose() {
50
+ this.open = !1;
51
+ }
52
+ setDeclaredActualPlacement() {
53
+ let e = this.resolveTrigger(), t = e && getComputedStyle(e).direction === "rtl" ? "rtl" : "ltr", i = n(r(this.placement, t)).split("-")[0];
54
+ this.setAttribute("actual-placement", i);
55
+ }
56
+ startPlacement() {
57
+ var e;
58
+ let t = this.resolveTrigger();
59
+ t && this.placementController.start(t, this, {
60
+ placement: this.placement,
61
+ offset: this.offset,
62
+ crossOffset: this.crossOffset,
63
+ containerPadding: this.containerPadding,
64
+ shouldFlip: this.shouldFlip,
65
+ tipElement: (e = this.tipElement) == null ? void 0 : e,
66
+ onPlacementChange: (e) => {
67
+ this.setAttribute("actual-placement", e.split("-")[0]);
68
+ }
69
+ });
70
+ }
71
+ resolveTrigger() {
72
+ if (this.triggerElement) return this.triggerElement;
73
+ if (this.for) {
74
+ let e = this.getRootNode().getElementById(this.for);
75
+ return p(this, !e, `<${this.localName}> for="${this.for}" did not resolve to an element in the current tree root. Check that the referenced id exists in the same document tree root.`, "https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs", { level: "high" }), e;
76
+ }
77
+ return null;
78
+ }
79
+ clearAriaRelationship() {
80
+ var e, t;
81
+ if (!this._lastWiredTrigger) return;
82
+ let n = this._lastWiredTrigger;
83
+ n.ariaDescribedByElements = ((e = n.ariaDescribedByElements) == null ? [] : e).filter((e) => e !== this), n.ariaLabelledByElements = ((t = n.ariaLabelledByElements) == null ? [] : t).filter((e) => e !== this), this._lastWiredTrigger = null;
84
+ }
85
+ syncAriaRelationship() {
86
+ var e, t;
87
+ this.clearAriaRelationship();
88
+ let n = this.resolveTrigger();
89
+ if (!n) return;
90
+ let r = (e = (t = n.shadowRoot) == null ? void 0 : t.querySelector("button")) == null ? n : e;
91
+ if (this.labeling) {
92
+ var i, a;
93
+ r.ariaDescribedByElements = ((i = r.ariaDescribedByElements) == null ? [] : i).filter((e) => e !== this);
94
+ let e = (a = r.ariaLabelledByElements) == null ? [] : a;
95
+ r.ariaLabelledByElements = this.open ? [...e.filter((e) => e !== this), this] : e.filter((e) => e !== this);
96
+ } else {
97
+ var o, s;
98
+ r.ariaLabelledByElements = ((o = r.ariaLabelledByElements) == null ? [] : o).filter((e) => e !== this);
99
+ let e = (s = r.ariaDescribedByElements) == null ? [] : s;
100
+ r.ariaDescribedByElements = this.open ? [...e.filter((e) => e !== this), this] : e.filter((e) => e !== this);
101
+ }
102
+ this.open && (this._lastWiredTrigger = r);
103
+ }
104
+ clearPositioningState() {
105
+ this.removeAttribute("actual-placement"), this.style.removeProperty("translate"), this.style.removeProperty("top"), this.style.removeProperty("left"), this.style.removeProperty("--swc-placement-available-width"), this.style.removeProperty("--swc-placement-available-height"), this.tipElement && (this.tipElement.style.removeProperty("translate"), this.tipElement.style.removeProperty("top"), this.tipElement.style.removeProperty("left"));
106
+ }
107
+ dispatchAfterEvent(e) {
108
+ this.dispatchEvent(new CustomEvent(e ? "swc-after-open" : "swc-after-close", {
109
+ bubbles: !0,
110
+ composed: !0
111
+ })), e || this.clearPositioningState();
112
+ }
113
+ willUpdate(e) {
114
+ if (super.willUpdate(e), this.disabled && this.open && (this.open = !1), e.has("variant")) {
115
+ let e = this.constructor;
116
+ f(this, {
117
+ prop: "variant",
118
+ value: this.variant,
119
+ valid: e.VARIANTS,
120
+ url: "https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs"
121
+ });
122
+ }
123
+ if (e.has("placement")) {
124
+ let e = this.constructor;
125
+ f(this, {
126
+ prop: "placement",
127
+ value: this.placement,
128
+ valid: e.PLACEMENTS,
129
+ url: "https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs"
130
+ });
131
+ }
132
+ }
133
+ updated(e) {
134
+ if (super.updated(e), e.has("variant")) {
135
+ let e = this.constructor;
136
+ f(this, {
137
+ prop: "variant",
138
+ value: this.variant,
139
+ valid: e.VARIANTS,
140
+ url: "https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs"
141
+ });
142
+ }
143
+ if (e.has("placement")) {
144
+ let e = this.constructor;
145
+ f(this, {
146
+ prop: "placement",
147
+ value: this.placement,
148
+ valid: e.PLACEMENTS,
149
+ url: "https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs"
150
+ });
151
+ }
152
+ e.has("offset") && this.style.setProperty("--_swc-tooltip-animation-distance", `${this.offset}px`), (e.has("open") || e.has("labeling") || e.has("for") || e.has("triggerElement")) && this.syncAriaRelationship(), (e.has("for") || e.has("triggerElement")) && this.hoverController.setTarget(this.resolveTrigger()), e.has("open") ? this.open ? (this.manual || (h && h !== this && h.requestClose(), h = this), u(this), document.addEventListener("keydown", this.handleKeyDown, { capture: !0 }), this.setDeclaredActualPlacement(), this.startPlacement(), this.open !== this.isPopoverOpen && this.showPopover()) : (h === this && (h = null), d(this), document.removeEventListener("keydown", this.handleKeyDown, { capture: !0 }), this.open !== this.isPopoverOpen && this.hidePopover(), this.placementController.stop()) : this.open && (e.has("placement") || e.has("offset") || e.has("crossOffset") || e.has("containerPadding") || e.has("shouldFlip") || e.has("for") || e.has("triggerElement")) && this.startPlacement();
153
+ }
154
+ connectedCallback() {
155
+ super.connectedCallback(), this.setAttribute("role", "tooltip"), this.setAttribute("popover", "manual"), this.addEventListener("beforetoggle", this.handleBeforeToggle), this.addEventListener("toggle", this.handleToggle), this.addEventListener("transitionend", this.handleTransitionEnd);
156
+ }
157
+ disconnectedCallback() {
158
+ super.disconnectedCallback(), h === this && (h = null), this.removeEventListener("beforetoggle", this.handleBeforeToggle), this.removeEventListener("toggle", this.handleToggle), this.removeEventListener("transitionend", this.handleTransitionEnd), d(this), document.removeEventListener("keydown", this.handleKeyDown, { capture: !0 }), this.afterEventFallbackTimer !== null && (clearTimeout(this.afterEventFallbackTimer), this.afterEventFallbackTimer = null), this.clearAriaRelationship();
159
+ }
160
+ };
161
+ m = g, m.VARIANTS = o, m.PLACEMENTS = a, e([s({
162
+ type: String,
163
+ reflect: !0
164
+ })], g.prototype, "variant", void 0), e([s({
165
+ type: String,
166
+ reflect: !0
167
+ })], g.prototype, "placement", void 0), e([s({
168
+ type: Boolean,
169
+ reflect: !0
170
+ })], g.prototype, "open", void 0), e([s({
171
+ attribute: "for",
172
+ type: String
173
+ })], g.prototype, "for", void 0), e([s({ attribute: !1 })], g.prototype, "triggerElement", void 0), e([s({
174
+ type: Number,
175
+ reflect: !0
176
+ })], g.prototype, "delay", void 0), e([s({
177
+ type: Boolean,
178
+ reflect: !0
179
+ })], g.prototype, "disabled", void 0), e([s({
180
+ type: Boolean,
181
+ reflect: !0
182
+ })], g.prototype, "manual", void 0), e([s({ type: Number })], g.prototype, "offset", void 0), e([s({
183
+ type: Number,
184
+ attribute: "cross-offset"
185
+ })], g.prototype, "crossOffset", void 0), e([s({
186
+ type: Number,
187
+ attribute: "container-padding"
188
+ })], g.prototype, "containerPadding", void 0), e([s({
189
+ type: Boolean,
190
+ attribute: "should-flip"
191
+ })], g.prototype, "shouldFlip", void 0), e([s({
192
+ type: Boolean,
193
+ reflect: !0
194
+ })], g.prototype, "labeling", void 0);
195
+ //#endregion
196
+ export { g as TooltipBase };
197
+
198
+ //# sourceMappingURL=Tooltip.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.base.js","names":[],"sources":["../../../components/tooltip/Tooltip.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 {\n isTopDismissible,\n registerDismissible,\n unregisterDismissible,\n validateEnum,\n warnIf,\n} from '@adobe/spectrum-wc-core/utils/index.js';\n\nimport {\n HoverController,\n type HoverControllerHost,\n} from '../../controllers/hover-controller/index.js';\nimport {\n fromFloatingPlacement,\n type Placement as ControllerPlacement,\n PlacementController,\n toFloatingPlacement,\n} from '../../controllers/placement-controller/index.js';\nimport {\n TOOLTIP_PLACEMENTS,\n TOOLTIP_VARIANTS,\n type TooltipPlacement,\n type TooltipVariant,\n} from './Tooltip.types.js';\n\n// Currently shown tooltip. `popover=\"manual\"` drops the native auto singleton, so\n// restore it explicitly: one tooltip open at a time across all instances.\nlet openTooltip: TooltipBase | null = null;\n\n/**\n * Abstract base class for the Tooltip component.\n * Handles all non-rendering logic: property declarations, popover lifecycle,\n * event dispatch, trigger resolution, ARIA wiring, `HoverController` integration\n * (hover/focus open/close), and `PlacementController` integration (pixel positioning).\n *\n * @slot - Text label displayed in the tooltip.\n *\n * @fires swc-open - Dispatched when the tooltip begins to open, before the transition plays.\n * @fires swc-close - Dispatched when the tooltip begins to close, before the transition plays.\n * @fires swc-after-open - Dispatched after the tooltip finishes opening, once the transition completes.\n * @fires swc-after-close - Dispatched after the tooltip finishes closing, once the transition completes.\n */\nexport abstract class TooltipBase\n extends SpectrumElement\n implements HoverControllerHost\n{\n // ──────────────────\n // SHARED API\n // ──────────────────\n\n /**\n * @internal\n *\n * All valid variants for the tooltip.\n */\n static readonly VARIANTS: readonly string[] = TOOLTIP_VARIANTS;\n\n /**\n * @internal\n *\n * All valid placement values: physical cardinals (`top`, `bottom`, `left`, `right`)\n * and logical inline values (`start`, `end`).\n */\n static readonly PLACEMENTS: readonly string[] = TOOLTIP_PLACEMENTS;\n\n /**\n * The semantic variant of the tooltip.\n *\n * @default 'neutral'\n */\n @property({ type: String, reflect: true })\n public variant: TooltipVariant = 'neutral';\n\n /**\n * Preferred placement of the tooltip relative to its trigger. This is always\n * the consumer's requested side; the resolved physical side (after any\n * viewport-driven flip) is reflected as `actual-placement`.\n *\n * @default 'top'\n */\n @property({ type: String, reflect: true })\n public placement: TooltipPlacement = 'top';\n\n /**\n * Whether the tooltip is visible.\n *\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public open: boolean = false;\n\n /**\n * The `id` of the trigger element in the same document tree root.\n */\n @property({ attribute: 'for', type: String })\n public for: string | undefined;\n\n /**\n * Explicit trigger element reference; overrides `for` when set.\n * Use when `getElementById` cannot reach the trigger, such as across a shadow boundary.\n *\n * @default null\n */\n @property({ attribute: false })\n public triggerElement: HTMLElement | null = null;\n\n /**\n * Warm-up delay in milliseconds before the tooltip opens on pointer hover.\n * Set to `0` to open immediately. Keyboard focus always opens immediately.\n *\n * @default 1500\n */\n @property({ type: Number, reflect: true })\n public delay: number = 1500;\n\n /**\n * When set, the tooltip does not respond to hover or focus events and cannot\n * be opened. `disabled` takes priority over `open`: setting `open` to `true`\n * while disabled is a no-op, and disabling an open tooltip closes it. Applies\n * in `manual` mode as well.\n *\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public disabled: boolean = false;\n\n /**\n * Suppresses automatic hover and focus wiring.\n * The consumer manages visibility via the `open` property or the popover API.\n *\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public manual: boolean = false;\n\n /**\n * Pixel gap along the placement axis between the trigger and the tooltip bubble.\n *\n * @default 4\n */\n @property({ type: Number })\n public offset: number = 4;\n\n /**\n * Slide along the trigger edge perpendicular to the placement direction, in pixels.\n *\n * @default 0\n */\n @property({ type: Number, attribute: 'cross-offset' })\n public crossOffset: number = 0;\n\n /**\n * Minimum inset from the viewport edge, in pixels, for collision detection.\n *\n * @default 12\n */\n @property({ type: Number, attribute: 'container-padding' })\n public containerPadding: number = 12;\n\n /**\n * Whether the tooltip may reposition to the opposite side when the requested\n * placement does not fit within the viewport.\n *\n * @default true\n */\n @property({ type: Boolean, attribute: 'should-flip' })\n public shouldFlip: boolean = true;\n\n /**\n * When set, the tooltip acts as the trigger's accessible name rather than its description.\n * Use for icon-only triggers where the tooltip text is the sole accessible name.\n *\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public labeling: boolean = false;\n\n // ──────────────────────\n // IMPLEMENTATION\n // ──────────────────────\n\n private readonly hoverController = new HoverController(this, {\n warmStateKey: 'swc-tooltip',\n });\n\n private readonly placementController = new PlacementController(this);\n\n // Guards dispatchAfterEvent so only the first transitionend per open/close cycle fires,\n // preventing one after event from firing for each CSS property that transitions.\n private afterEventPending = false;\n\n // Fallback timer for browsers that do not fire transitionend for\n // transition-behavior:allow-discrete discrete properties (e.g. Firefox in CI).\n // Cleared when transitionend fires or a new toggle starts.\n private afterEventFallbackTimer: ReturnType<typeof setTimeout> | null = null;\n\n // Tracks the most recently ARIA-wired target so syncAriaRelationship can\n // remove stale references when for or triggerElement changes while open.\n private _lastWiredTrigger:\n | (Element & {\n ariaDescribedByElements: Element[] | null;\n ariaLabelledByElements: Element[] | null;\n })\n | null = null;\n\n /**\n * Returns the tip arrow element to pass to `PlacementController` so the\n * `arrow` middleware keeps the tip aligned with the trigger when the bubble\n * is shifted (e.g. via `crossOffset` or viewport `shift`).\n *\n * Returns `null` in the base class; the SWC rendering layer overrides this\n * to return the actual `.swc-Tooltip-tip` element from the shadow DOM.\n */\n protected get tipElement(): HTMLElement | null {\n return null;\n }\n\n // Reflects the browser's actual popover state. Used in updated() to reconcile\n // `open` against the native popover state: when a `toggle` event syncs `open`\n // (the toggle listener sets it without re-invoking the Popover API), this\n // guard prevents a redundant showPopover()/hidePopover() call in the following\n // update (hidePopover() would throw on an already-closed popover). Under\n // `popover=\"manual\"` the browser never closes the tooltip on its own, so the\n // only driver is the component itself, but the guard is still needed to keep\n // the `open`-driven and toggle-driven paths from double-invoking the API.\n private get isPopoverOpen(): boolean {\n return this.matches(':popover-open');\n }\n\n /**\n * {@link HoverControllerHost} contract. `open` is the single source of truth\n * for visibility; the controller asks to open via this method rather than\n * driving the Popover API directly. `updated()` then reconciles the popover.\n */\n public requestOpen(): void {\n this.open = true;\n }\n\n /**\n * {@link HoverControllerHost} contract. Asks the tooltip to close by setting\n * `open`; `updated()` reconciles the popover.\n */\n public requestClose(): void {\n this.open = false;\n }\n\n // Writes actual-placement to the physical side of the declared `placement`,\n // resolving logical start/end against the trigger's writing direction. Used\n // synchronously before showPopover() so @starting-style has a direction; the\n // PlacementController overwrites it with the flip-resolved side afterwards.\n private setDeclaredActualPlacement(): void {\n const trigger = this.resolveTrigger();\n const direction =\n trigger && getComputedStyle(trigger).direction === 'rtl' ? 'rtl' : 'ltr';\n const side = fromFloatingPlacement(\n toFloatingPlacement(this.placement as ControllerPlacement, direction)\n ).split('-')[0];\n this.setAttribute('actual-placement', side);\n }\n\n private startPlacement(): void {\n const trigger = this.resolveTrigger();\n if (!trigger) {\n return;\n }\n this.placementController.start(trigger, this, {\n placement: this.placement as ControllerPlacement,\n offset: this.offset,\n crossOffset: this.crossOffset,\n containerPadding: this.containerPadding,\n shouldFlip: this.shouldFlip,\n tipElement: this.tipElement ?? undefined,\n onPlacementChange: (resolvedPlacement: ControllerPlacement) => {\n this.setAttribute('actual-placement', resolvedPlacement.split('-')[0]);\n },\n });\n }\n\n private resolveTrigger(): HTMLElement | null {\n if (this.triggerElement) {\n return this.triggerElement;\n }\n if (this.for) {\n const root = this.getRootNode() as Document | ShadowRoot;\n const trigger = root.getElementById(this.for);\n warnIf(\n this,\n !trigger,\n `<${this.localName}> for=\"${this.for}\" did not resolve to an element in the current tree root. Check that the referenced id exists in the same document tree root.`,\n 'https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs',\n { level: 'high' }\n );\n return trigger;\n }\n return null;\n }\n\n // Removes this tooltip from the previously wired target's ARIA element arrays\n // and forgets the reference. Called before re-wiring and on disconnect so a\n // trigger never retains a reference to a detached tooltip node.\n private clearAriaRelationship(): void {\n if (!this._lastWiredTrigger) {\n return;\n }\n const stale = this._lastWiredTrigger;\n stale.ariaDescribedByElements = (\n stale.ariaDescribedByElements ?? []\n ).filter((el) => el !== this);\n stale.ariaLabelledByElements = (stale.ariaLabelledByElements ?? []).filter(\n (el) => el !== this\n );\n this._lastWiredTrigger = null;\n }\n\n private syncAriaRelationship(): void {\n // Remove stale references from the previously wired target before resolving\n // the new one. Handles for/triggerElement changes while the tooltip is open.\n this.clearAriaRelationship();\n\n const trigger = this.resolveTrigger();\n if (!trigger) {\n return;\n }\n const target = (trigger.shadowRoot?.querySelector('button') ??\n trigger) as Element & {\n ariaDescribedByElements: Element[] | null;\n ariaLabelledByElements: Element[] | null;\n };\n\n if (this.labeling) {\n // Remove any stale describedby reference (e.g. if labeling changed while open).\n const described = target.ariaDescribedByElements ?? [];\n target.ariaDescribedByElements = described.filter((el) => el !== this);\n\n const labelled = target.ariaLabelledByElements ?? [];\n target.ariaLabelledByElements = this.open\n ? [...labelled.filter((el) => el !== this), this]\n : labelled.filter((el) => el !== this);\n } else {\n // Remove any stale labelledby reference (e.g. if labeling changed while open).\n const labelled = target.ariaLabelledByElements ?? [];\n target.ariaLabelledByElements = labelled.filter((el) => el !== this);\n\n const described = target.ariaDescribedByElements ?? [];\n target.ariaDescribedByElements = this.open\n ? [...described.filter((el) => el !== this), this]\n : described.filter((el) => el !== this);\n }\n\n if (this.open) {\n this._lastWiredTrigger = target;\n }\n }\n\n private clearPositioningState(): void {\n // Called after the exit transition. Clearing earlier would displace the\n // tooltip to 0,0 while still visible and fading out.\n this.removeAttribute('actual-placement');\n this.style.removeProperty('translate');\n this.style.removeProperty('top');\n this.style.removeProperty('left');\n this.style.removeProperty('--swc-placement-available-width');\n this.style.removeProperty('--swc-placement-available-height');\n if (this.tipElement) {\n this.tipElement.style.removeProperty('translate');\n this.tipElement.style.removeProperty('top');\n this.tipElement.style.removeProperty('left');\n }\n }\n\n private dispatchAfterEvent(isOpen: boolean): void {\n this.dispatchEvent(\n new CustomEvent(isOpen ? 'swc-after-open' : 'swc-after-close', {\n bubbles: true,\n composed: true,\n })\n );\n if (!isOpen) {\n this.clearPositioningState();\n }\n }\n\n private readonly handleBeforeToggle = (event: Event): void => {\n const { newState } = event as ToggleEvent;\n const eventName = newState === 'open' ? 'swc-open' : 'swc-close';\n this.dispatchEvent(\n new CustomEvent(eventName, { bubbles: true, composed: true })\n );\n // Set here so the flag is set regardless of whether this.open already matches\n // newState. handleToggle exits early when open was set externally, which would\n // otherwise leave the flag unset and suppress swc-after-open / swc-after-close.\n this.afterEventPending = true;\n };\n\n private readonly handleToggle = (event: Event): void => {\n // Cancel any in-flight close fallback; a new toggle resets the cycle.\n if (this.afterEventFallbackTimer !== null) {\n clearTimeout(this.afterEventFallbackTimer);\n this.afterEventFallbackTimer = null;\n }\n const { newState } = event as ToggleEvent;\n const isOpen = newState === 'open';\n if (isOpen !== this.open) {\n this.open = isOpen;\n }\n // When no CSS transition is active, dispatch after-* immediately since transitionend will not fire.\n // transitionDuration is comma-separated when multiple properties transition (\"0s, 0s, …\"),\n // so check that every value in the list is zero rather than comparing the full string.\n const durations = getComputedStyle(this).transitionDuration.split(',');\n if (durations.every((d) => d.trim() === '0s')) {\n this.afterEventPending = false;\n this.dispatchAfterEvent(isOpen);\n } else if (!isOpen) {\n // Some browsers (e.g. Firefox in CI) do not fire transitionend for\n // transition-behavior:allow-discrete discrete properties. Start a fallback\n // so positioning is always cleared after the exit transition window.\n const maxMs = Math.max(\n 0,\n ...durations.map((d) => {\n const trimmed = d.trim();\n const value = parseFloat(trimmed);\n return trimmed.endsWith('ms') ? value : value * 1000;\n })\n );\n this.afterEventFallbackTimer = setTimeout(() => {\n this.afterEventFallbackTimer = null;\n if (this.afterEventPending) {\n this.afterEventPending = false;\n this.dispatchAfterEvent(false);\n }\n }, maxMs + 100);\n }\n };\n\n private readonly handleTransitionEnd = (event: TransitionEvent): void => {\n if (event.target !== this || !this.afterEventPending) {\n return;\n }\n if (this.afterEventFallbackTimer !== null) {\n clearTimeout(this.afterEventFallbackTimer);\n this.afterEventFallbackTimer = null;\n }\n this.afterEventPending = false;\n this.dispatchAfterEvent(this.open);\n };\n\n // Escape-to-close. Registered on `document` (capture) only while open (see\n // updated()); `popover=\"manual\"` gets no native light-dismiss, so this is the\n // sole Escape mechanism.\n private readonly handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== 'Escape' || !this.open) {\n return;\n }\n // Only the topmost dismissible handles Escape; a surface above us gets it first.\n if (!isTopDismissible(this)) {\n return;\n }\n // A `manual` tooltip is outside the browser's auto-popover stack, so cancel\n // the native default (capture phase, before it runs) to keep an `auto`\n // popover underneath open; a later Escape, once we are gone, closes it.\n event.preventDefault();\n this.open = false;\n };\n\n protected override willUpdate(changedProperties: PropertyValues): void {\n super.willUpdate(changedProperties);\n // `disabled` takes priority over `open`: a disabled tooltip cannot be shown,\n // regardless of how `open` became true (set programmatically, or `disabled`\n // toggled on while already open). Normalizing here — before render and\n // before updated() acts on `open` — keeps `open` and visibility consistent\n // and prevents the `open` attribute from briefly reflecting `true`. Hover\n // and focus opening are separately blocked by HoverController's guards.\n if (this.disabled && this.open) {\n this.open = false;\n }\n\n if (changedProperties.has('variant')) {\n const constructor = this.constructor as typeof TooltipBase;\n validateEnum(this, {\n prop: 'variant',\n value: this.variant,\n valid: constructor.VARIANTS,\n url: 'https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs',\n });\n }\n if (changedProperties.has('placement')) {\n const constructor = this.constructor as typeof TooltipBase;\n validateEnum(this, {\n prop: 'placement',\n value: this.placement,\n valid: constructor.PLACEMENTS,\n url: 'https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs',\n });\n }\n }\n\n protected override updated(changedProperties: PropertyValues): void {\n super.updated(changedProperties);\n if (changedProperties.has('variant')) {\n const constructor = this.constructor as typeof TooltipBase;\n validateEnum(this, {\n prop: 'variant',\n value: this.variant,\n valid: constructor.VARIANTS,\n url: 'https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs',\n });\n }\n if (changedProperties.has('placement')) {\n const constructor = this.constructor as typeof TooltipBase;\n validateEnum(this, {\n prop: 'placement',\n value: this.placement,\n valid: constructor.PLACEMENTS,\n url: 'https://spectrum-web-components.adobe.com/?path=/docs/components-tooltip--docs',\n });\n }\n if (changedProperties.has('offset')) {\n this.style.setProperty(\n '--_swc-tooltip-animation-distance',\n `${this.offset}px`\n );\n }\n if (\n changedProperties.has('open') ||\n changedProperties.has('labeling') ||\n changedProperties.has('for') ||\n changedProperties.has('triggerElement')\n ) {\n this.syncAriaRelationship();\n }\n if (\n changedProperties.has('for') ||\n changedProperties.has('triggerElement')\n ) {\n this.hoverController.setTarget(this.resolveTrigger());\n }\n\n // Placement controller: start when opening, stop when closing, restart\n // when positioning options or the trigger change while already open.\n const openChanged = changedProperties.has('open');\n if (openChanged) {\n if (this.open) {\n // The single-open singleton restores popover=\"auto\"'s \"one open at a\n // time\" for automatic (hover/focus) tooltips. A `manual` tooltip is\n // consumer-managed and opts out, so several can coexist (e.g. a coach-mark\n // tour that points at multiple controls at once); it neither closes others\n // nor claims the singleton slot.\n if (!this.manual) {\n // Close any other open tooltip first. Assign after requestClose() so\n // the other's updated() (else branch) does not clear the reference we take.\n if (openTooltip && openTooltip !== this) {\n openTooltip.requestClose();\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- singleton registration, not a closure capture\n openTooltip = this;\n }\n // Join the dismissible stack and Escape handling while open (both torn\n // down on close below). Capture phase so preventDefault() beats the\n // native popover light-dismiss (see handleKeyDown).\n registerDismissible(this);\n document.addEventListener('keydown', this.handleKeyDown, {\n capture: true,\n });\n // Set actual-placement to the declared side synchronously, before\n // showPopover(). @starting-style is evaluated by the browser the moment\n // the popover enters the top layer, so the direction-bearing attribute\n // must already be present or the entrance animation has no direction to\n // animate from. PlacementController writes actual-placement again from\n // onPlacementChange, but that is async (it awaits document.fonts.ready),\n // so it lands after showPopover() — too late for @starting-style. The\n // popover is display:none until shown and therefore unmeasurable, so a\n // viewport flip cannot be known here; on a flip the resolved side\n // arrives from onPlacementChange and the slide direction corrects then.\n this.setDeclaredActualPlacement();\n this.startPlacement();\n if (this.open !== this.isPopoverOpen) {\n this.showPopover();\n }\n } else {\n if (openTooltip === this) {\n openTooltip = null;\n }\n unregisterDismissible(this);\n document.removeEventListener('keydown', this.handleKeyDown, {\n capture: true,\n });\n if (this.open !== this.isPopoverOpen) {\n this.hidePopover();\n }\n // Stop autoUpdate immediately so positioning stops tracking the trigger\n // during the exit transition. clearPositioningState() runs after the\n // transition completes via dispatchAfterEvent.\n this.placementController.stop();\n }\n } else if (this.open) {\n const placementOptsChanged =\n changedProperties.has('placement') ||\n changedProperties.has('offset') ||\n changedProperties.has('crossOffset') ||\n changedProperties.has('containerPadding') ||\n changedProperties.has('shouldFlip') ||\n changedProperties.has('for') ||\n changedProperties.has('triggerElement');\n if (placementOptsChanged) {\n this.startPlacement();\n }\n }\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tooltip');\n // `manual`, not `auto`: a tooltip must coexist with an open `swc-popover`\n // (or menu/picker/select). Under `popover=\"auto\"` the native light-dismiss\n // group closes every other open auto popover the moment a tooltip opens on\n // hover, tearing down an open popover the user is still working in. `manual`\n // takes the tooltip out of that group. The behaviors `manual` drops are\n // already handled internally: Escape via handleKeyDown (registered while\n // open) and close-on-leave via HoverController; show/hide is driven\n // explicitly through showPopover()/hidePopover() in updated().\n this.setAttribute('popover', 'manual');\n this.addEventListener('beforetoggle', this.handleBeforeToggle);\n this.addEventListener('toggle', this.handleToggle);\n this.addEventListener('transitionend', this.handleTransitionEnd);\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n // Release the singleton so a detached node is not retained.\n if (openTooltip === this) {\n openTooltip = null;\n }\n this.removeEventListener('beforetoggle', this.handleBeforeToggle);\n this.removeEventListener('toggle', this.handleToggle);\n this.removeEventListener('transitionend', this.handleTransitionEnd);\n // Defensive: clear the stack entry and keydown listener in case the tooltip\n // is disconnected while still open (normally cleared on close).\n unregisterDismissible(this);\n document.removeEventListener('keydown', this.handleKeyDown, {\n capture: true,\n });\n if (this.afterEventFallbackTimer !== null) {\n clearTimeout(this.afterEventFallbackTimer);\n this.afterEventFallbackTimer = null;\n }\n // If the tooltip is removed while open, the trigger would otherwise retain a\n // reference to this now-detached node in its ARIA element arrays.\n this.clearAriaRelationship();\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
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 TOOLTIP_VARIANTS: readonly ["neutral", "informative", "negative"];
13
+ export declare const TOOLTIP_PHYSICAL_PLACEMENTS: readonly ["top", "bottom", "left", "right"];
14
+ export declare const TOOLTIP_LOGICAL_PLACEMENTS: readonly ["start", "end"];
15
+ export declare const TOOLTIP_PLACEMENTS: readonly ["top", "bottom", "left", "right", "start", "end"];
16
+ export type TooltipVariant = (typeof TOOLTIP_VARIANTS)[number];
17
+ export type TooltipPlacement = (typeof TOOLTIP_PLACEMENTS)[number];
18
+ export type TooltipActualPlacement = (typeof TOOLTIP_PHYSICAL_PLACEMENTS)[number];
@@ -0,0 +1,15 @@
1
+ //#region components/tooltip/Tooltip.types.ts
2
+ var e = [
3
+ "neutral",
4
+ "informative",
5
+ "negative"
6
+ ], t = [
7
+ "top",
8
+ "bottom",
9
+ "left",
10
+ "right"
11
+ ], n = ["start", "end"], r = [...t, ...n];
12
+ //#endregion
13
+ export { n as TOOLTIP_LOGICAL_PLACEMENTS, t as TOOLTIP_PHYSICAL_PLACEMENTS, r as TOOLTIP_PLACEMENTS, e as TOOLTIP_VARIANTS };
14
+
15
+ //# sourceMappingURL=Tooltip.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.types.js","names":[],"sources":["../../../components/tooltip/Tooltip.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\n// ──────────────────────────\n// VARIANTS\n// ──────────────────────────\n\nexport const TOOLTIP_VARIANTS = ['neutral', 'informative', 'negative'] as const;\n\n// ──────────────────────────\n// PLACEMENTS\n// ──────────────────────────\n\n// Physical cardinal placements\nexport const TOOLTIP_PHYSICAL_PLACEMENTS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n] as const;\n\n// Logical inline placements (RTL-aware equivalents of left/right)\nexport const TOOLTIP_LOGICAL_PLACEMENTS = ['start', 'end'] as const;\n\nexport const TOOLTIP_PLACEMENTS = [\n ...TOOLTIP_PHYSICAL_PLACEMENTS,\n ...TOOLTIP_LOGICAL_PLACEMENTS,\n] as const;\n\n// ──────────────────────────\n// TYPES\n// ──────────────────────────\n\nexport type TooltipVariant = (typeof TOOLTIP_VARIANTS)[number];\nexport type TooltipPlacement = (typeof TOOLTIP_PLACEMENTS)[number];\nexport type TooltipActualPlacement =\n (typeof TOOLTIP_PHYSICAL_PLACEMENTS)[number];\n"],"mappings":";AAgBA,IAAa,IAAmB;CAAC;CAAW;CAAe;CAAW,EAOzD,IAA8B;CACzC;CACA;CACA;CACA;CACD,EAGY,IAA6B,CAAC,SAAS,MAAM,EAE7C,IAAqB,CAChC,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 './Tooltip.base.js';
13
+ export * from './Tooltip.types.js';
@@ -0,0 +1,3 @@
1
+ import { TOOLTIP_LOGICAL_PLACEMENTS as e, TOOLTIP_PHYSICAL_PLACEMENTS as t, TOOLTIP_PLACEMENTS as n, TOOLTIP_VARIANTS as r } from "./Tooltip.types.js";
2
+ import { TooltipBase as i } from "./Tooltip.base.js";
3
+ export { e as TOOLTIP_LOGICAL_PLACEMENTS, t as TOOLTIP_PHYSICAL_PLACEMENTS, n as TOOLTIP_PLACEMENTS, r as TOOLTIP_VARIANTS, i as TooltipBase };
@@ -0,0 +1,12 @@
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 { ColorController, type Color, type ColorTypes, } from './src/color-controller.js';
@@ -0,0 +1,2 @@
1
+ import { ColorController as e } from "./src/color-controller.js";
2
+ export { e as ColorController };