@xplortech/apollo-core 2.6.0 → 2.7.1

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 (310) hide show
  1. package/.typings/apollo-components.html-data.json +626 -35
  2. package/build/style.css +5949 -3070
  3. package/dist/apollo-core/apollo-core.css +29 -19
  4. package/dist/apollo-core/apollo-core.esm.js +1 -1
  5. package/dist/apollo-core/p-0bf50890.entry.js +1 -0
  6. package/dist/apollo-core/p-1947e7a8.entry.js +1 -0
  7. package/dist/apollo-core/p-27928cb0.entry.js +1 -0
  8. package/dist/apollo-core/{p-5549756c.entry.js → p-34438721.entry.js} +1 -1
  9. package/dist/apollo-core/p-35c2f72d.entry.js +1 -0
  10. package/dist/apollo-core/p-368c81f1.entry.js +1 -0
  11. package/dist/apollo-core/{p-f5af9539.entry.js → p-36ba29da.entry.js} +1 -1
  12. package/dist/apollo-core/p-406b27a8.entry.js +1 -0
  13. package/dist/apollo-core/p-5d63b4ce.entry.js +1 -0
  14. package/dist/apollo-core/{p-02167464.entry.js → p-6a15f1e0.entry.js} +1 -1
  15. package/dist/apollo-core/p-8d692d05.entry.js +1 -0
  16. package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
  17. package/dist/apollo-core/{p-42016063.entry.js → p-b61d7952.entry.js} +1 -1
  18. package/dist/apollo-core/{p-8a1affce.entry.js → p-ca127ee8.entry.js} +1 -1
  19. package/dist/apollo-core/p-d1c9c233.entry.js +1 -0
  20. package/dist/apollo-core/p-dc205893.entry.js +1 -0
  21. package/dist/apollo-core/p-e2a5d41c.entry.js +1 -0
  22. package/dist/cjs/apollo-core.cjs.js +3 -3
  23. package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -7
  24. package/dist/cjs/loader.cjs.js +2 -2
  25. package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
  26. package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
  27. package/dist/cjs/{xpl-avatar_47.cjs.entry.js → xpl-avatar_54.cjs.entry.js} +3726 -536
  28. package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
  29. package/dist/cjs/xpl-calendar.cjs.entry.js +2 -2
  30. package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
  31. package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
  32. package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
  33. package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
  34. package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
  35. package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
  36. package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
  37. package/dist/cjs/xpl-table-header-cell.cjs.entry.js +1 -1
  38. package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
  39. package/dist/cjs/xpl-toggle.cjs.entry.js +4 -4
  40. package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
  41. package/dist/collection/collection-manifest.json +11 -5
  42. package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
  43. package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
  44. package/dist/collection/components/xpl-avatar/avatar.stories.js +122 -107
  45. package/dist/collection/components/xpl-avatar/xpl-avatar.js +249 -15
  46. package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
  47. package/dist/collection/components/xpl-badge/badge.stories.js +1 -33
  48. package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
  49. package/dist/collection/components/xpl-banner/xpl-banner.js +4 -3
  50. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
  51. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
  52. package/dist/collection/components/xpl-button/xpl-button.js +21 -3
  53. package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
  54. package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
  55. package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +25 -3
  56. package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
  57. package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
  58. package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
  59. package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
  60. package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
  61. package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
  62. package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
  63. package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
  64. package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +77 -7
  65. package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
  66. package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
  67. package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
  68. package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
  69. package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
  70. package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
  71. package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
  72. package/dist/collection/components/xpl-input/input.stories.js +96 -1
  73. package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
  74. package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
  75. package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
  76. package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +5 -5
  77. package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +485 -0
  78. package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
  79. package/dist/collection/components/xpl-input/xpl-input.js +130 -18
  80. package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
  81. package/dist/collection/components/xpl-list/list.stories.js +300 -63
  82. package/dist/collection/components/xpl-list/xpl-list-item/xpl-list-item.js +818 -0
  83. package/dist/collection/components/xpl-list/xpl-list.js +579 -21
  84. package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
  85. package/dist/collection/components/xpl-modal/xpl-modal.js +1 -1
  86. package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
  87. package/dist/collection/components/xpl-pagination/pagination.stories.js +18 -0
  88. package/dist/collection/components/xpl-pagination/xpl-pagination.js +7 -3
  89. package/dist/collection/components/xpl-panel/panel.stories.js +5 -3
  90. package/dist/collection/components/xpl-panel/xpl-panel.js +3 -3
  91. package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
  92. package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
  93. package/dist/collection/components/xpl-progress-indicator/progress-indicator.stories.js +118 -0
  94. package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +171 -0
  95. package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
  96. package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
  97. package/dist/collection/components/xpl-select/xpl-select.js +58 -6
  98. package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +2 -2
  99. package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +2 -2
  100. package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
  101. package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
  102. package/dist/collection/components/xpl-spotlight/spotlight.stories.js +385 -0
  103. package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +1085 -0
  104. package/dist/collection/components/xpl-tab/xpl-tab.js +261 -8
  105. package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +22 -15
  106. package/dist/collection/components/xpl-table/xpl-table.js +5 -5
  107. package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
  108. package/dist/collection/components/xpl-tabs/segment-control.stories.js +31 -0
  109. package/dist/collection/components/xpl-tabs/tabs.shared.js +156 -0
  110. package/dist/collection/components/xpl-tabs/tabs.stories.js +10 -60
  111. package/dist/collection/components/xpl-tabs/xpl-tabs.js +338 -62
  112. package/dist/collection/components/xpl-tag/tag.stories.js +153 -0
  113. package/dist/collection/components/xpl-tag/xpl-tag.js +312 -9
  114. package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
  115. package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
  116. package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
  117. package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
  118. package/dist/collection/components/xpl-top-nav/top-nav.stories.js +625 -0
  119. package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +122 -0
  120. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +481 -0
  121. package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +433 -0
  122. package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
  123. package/dist/collection/utils/lifecycle.js +79 -0
  124. package/dist/collection/utils/tab-a11y-ids.js +22 -0
  125. package/dist/components/floating-ui.dom.js +1 -0
  126. package/dist/components/index.js +1 -1
  127. package/dist/components/tab-a11y-ids.js +1 -0
  128. package/dist/components/xpl-accordion.js +1 -1
  129. package/dist/components/xpl-application-shell.js +1 -1
  130. package/dist/components/xpl-avatar2.js +1 -1
  131. package/dist/components/xpl-backdrop2.js +1 -1
  132. package/dist/components/xpl-badge2.js +1 -1
  133. package/dist/components/xpl-banner.js +1 -1
  134. package/dist/components/xpl-breadcrumb-item.js +1 -1
  135. package/dist/components/xpl-breadcrumbs.js +1 -1
  136. package/dist/components/xpl-button-row.js +1 -1
  137. package/dist/components/xpl-button2.js +1 -1
  138. package/dist/components/xpl-calendar.js +1 -1
  139. package/dist/components/xpl-checkbox2.js +1 -1
  140. package/dist/components/xpl-choicelist.js +1 -1
  141. package/dist/components/xpl-content-area.js +1 -1
  142. package/dist/components/xpl-dashboard.js +1 -1
  143. package/dist/components/xpl-data-card.js +1 -1
  144. package/dist/components/xpl-divider2.js +1 -1
  145. package/dist/components/xpl-dropdown-group2.js +1 -1
  146. package/dist/components/xpl-dropdown-heading2.js +1 -1
  147. package/dist/components/xpl-dropdown-option2.js +1 -1
  148. package/dist/components/xpl-dropdown2.js +1 -1
  149. package/dist/components/xpl-dynamic-table-cell.js +1 -1
  150. package/dist/components/xpl-dynamic-table-row.js +1 -1
  151. package/dist/components/xpl-dynamic-table.js +1 -1
  152. package/dist/components/xpl-grid-item.js +1 -1
  153. package/dist/components/xpl-grid.js +1 -1
  154. package/dist/components/xpl-header-accordion.js +1 -1
  155. package/dist/components/xpl-icon2.js +1 -1
  156. package/dist/components/xpl-input-date2.js +1 -1
  157. package/dist/components/xpl-input-file2.js +1 -1
  158. package/dist/components/xpl-input-search.d.ts +11 -0
  159. package/dist/components/xpl-input-search.js +1 -0
  160. package/dist/components/xpl-input-search2.js +1 -0
  161. package/dist/components/xpl-input2.js +1 -1
  162. package/dist/components/xpl-large-card.js +1 -1
  163. package/dist/components/{xpl-progress.d.ts → xpl-list-item.d.ts} +4 -4
  164. package/dist/components/xpl-list-item.js +1 -0
  165. package/dist/components/xpl-list-item2.js +1 -0
  166. package/dist/components/xpl-list.js +1 -1
  167. package/dist/components/xpl-main-nav.js +1 -1
  168. package/dist/components/xpl-modal.js +1 -1
  169. package/dist/components/xpl-nav-header-menu.d.ts +11 -0
  170. package/dist/components/xpl-nav-header-menu.js +1 -0
  171. package/dist/components/xpl-nav-item.js +1 -1
  172. package/dist/components/xpl-pagination.js +1 -1
  173. package/dist/components/xpl-panel.js +1 -1
  174. package/dist/components/xpl-popover2.js +1 -1
  175. package/dist/components/xpl-progress-bar.js +1 -1
  176. package/dist/components/xpl-progress-indicator.d.ts +11 -0
  177. package/dist/components/xpl-progress-indicator.js +1 -0
  178. package/dist/components/xpl-radio2.js +1 -1
  179. package/dist/components/xpl-secondary-nav.js +1 -1
  180. package/dist/components/xpl-select2.js +1 -1
  181. package/dist/components/xpl-side-nav-item.js +1 -1
  182. package/dist/components/xpl-side-nav.js +1 -1
  183. package/dist/components/xpl-skeleton.js +1 -1
  184. package/dist/components/xpl-slideout.js +1 -1
  185. package/dist/components/xpl-spotlight.d.ts +11 -0
  186. package/dist/components/xpl-spotlight.js +1 -0
  187. package/dist/components/xpl-tab-panel.js +1 -1
  188. package/dist/components/xpl-tab.js +1 -1
  189. package/dist/components/xpl-table-header.js +1 -1
  190. package/dist/components/xpl-table.js +1 -1
  191. package/dist/components/xpl-tabs.js +1 -1
  192. package/dist/components/xpl-tag2.js +1 -1
  193. package/dist/components/xpl-toast.js +1 -1
  194. package/dist/components/xpl-toggle.js +1 -1
  195. package/dist/components/xpl-toolbar.js +1 -1
  196. package/dist/components/xpl-tooltip2.js +1 -1
  197. package/dist/components/xpl-top-nav-item.d.ts +11 -0
  198. package/dist/components/xpl-top-nav-item.js +1 -0
  199. package/dist/components/xpl-top-nav-item2.js +1 -0
  200. package/dist/components/xpl-top-nav.d.ts +11 -0
  201. package/dist/components/xpl-top-nav.js +1 -0
  202. package/dist/components/xpl-utility-bar.js +1 -1
  203. package/dist/docs/xpl-avatar/readme.md +289 -15
  204. package/dist/docs/xpl-badge/readme.md +14 -9
  205. package/dist/docs/xpl-banner/readme.md +48 -11
  206. package/dist/docs/xpl-button/readme.md +28 -18
  207. package/dist/docs/xpl-calendar/readme.md +1 -1
  208. package/dist/docs/xpl-checkbox/readme.md +12 -11
  209. package/dist/docs/xpl-divider/readme.md +6 -4
  210. package/dist/docs/xpl-dropdown/readme.md +14 -12
  211. package/dist/docs/xpl-icon/readme.md +14 -2
  212. package/dist/docs/xpl-input/readme.md +66 -41
  213. package/dist/docs/xpl-input/xpl-input-color/readme.md +1 -0
  214. package/dist/docs/xpl-input/xpl-input-phone/readme.md +1 -0
  215. package/dist/docs/xpl-input/xpl-input-search/readme.md +175 -0
  216. package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -0
  217. package/dist/docs/xpl-list/readme.md +320 -10
  218. package/dist/docs/xpl-list/xpl-list-item/readme.md +99 -0
  219. package/dist/docs/xpl-pagination/readme.md +1 -0
  220. package/dist/docs/xpl-panel/readme.md +108 -17
  221. package/dist/docs/xpl-popover/readme.md +2 -0
  222. package/dist/docs/xpl-progress-indicator/readme.md +234 -0
  223. package/dist/docs/xpl-radio/readme.md +6 -4
  224. package/dist/docs/xpl-select/readme.md +19 -16
  225. package/dist/docs/xpl-side-nav/readme.md +2 -2
  226. package/dist/docs/xpl-slideout/readme.md +1 -1
  227. package/dist/docs/xpl-spotlight/readme.md +235 -0
  228. package/dist/docs/xpl-tab/readme.md +43 -7
  229. package/dist/docs/xpl-tab-panel/readme.md +42 -0
  230. package/dist/docs/xpl-tabs/readme.md +62 -8
  231. package/dist/docs/xpl-tag/readme.md +379 -4
  232. package/dist/docs/xpl-toast/readme.md +1 -1
  233. package/dist/docs/xpl-top-nav/readme.md +179 -0
  234. package/dist/docs/xpl-top-nav/xpl-nav-header-menu/readme.md +81 -0
  235. package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +87 -0
  236. package/dist/esm/apollo-core.js +4 -4
  237. package/dist/esm/{index-C_Z2nG0p.js → index-C7bgJs6C.js} +18 -8
  238. package/dist/esm/loader.js +3 -3
  239. package/dist/esm/xpl-accordion.entry.js +3 -3
  240. package/dist/esm/xpl-application-shell.entry.js +2 -2
  241. package/dist/esm/{xpl-avatar_47.entry.js → xpl-avatar_54.entry.js} +3719 -536
  242. package/dist/esm/xpl-button-row.entry.js +2 -2
  243. package/dist/esm/xpl-calendar.entry.js +2 -2
  244. package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
  245. package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
  246. package/dist/esm/xpl-dynamic-table.entry.js +2 -2
  247. package/dist/esm/xpl-grid-item.entry.js +2 -2
  248. package/dist/esm/xpl-grid.entry.js +2 -2
  249. package/dist/esm/xpl-large-card.entry.js +2 -2
  250. package/dist/esm/xpl-main-nav.entry.js +2 -2
  251. package/dist/esm/xpl-table-header-cell.entry.js +1 -1
  252. package/dist/esm/xpl-table-header.entry.js +2 -2
  253. package/dist/esm/xpl-toggle.entry.js +4 -4
  254. package/dist/esm/xpl-toolbar.entry.js +3 -3
  255. package/dist/types/components/xpl-avatar/avatar.stories.d.ts +88 -29
  256. package/dist/types/components/xpl-avatar/xpl-avatar.d.ts +29 -2
  257. package/dist/types/components/xpl-badge/badge.stories.d.ts +0 -19
  258. package/dist/types/components/xpl-button/xpl-button.d.ts +7 -0
  259. package/dist/types/components/xpl-checkbox/xpl-checkbox.d.ts +2 -1
  260. package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +5 -0
  261. package/dist/types/components/xpl-input/input.stories.d.ts +1 -0
  262. package/dist/types/components/xpl-input/xpl-input-search/xpl-input-search.d.ts +39 -0
  263. package/dist/types/components/xpl-input/xpl-input.d.ts +13 -5
  264. package/dist/types/components/xpl-list/list.stories.d.ts +299 -13
  265. package/dist/types/components/xpl-list/listitem.d.ts +13 -0
  266. package/dist/types/components/xpl-list/xpl-list-item/xpl-list-item.d.ts +71 -0
  267. package/dist/types/components/xpl-list/xpl-list.d.ts +55 -2
  268. package/dist/types/components/xpl-pagination/pagination.stories.d.ts +13 -0
  269. package/dist/types/components/xpl-panel/panel.stories.d.ts +2 -0
  270. package/dist/types/components/xpl-progress-indicator/progress-indicator.stories.d.ts +62 -0
  271. package/dist/types/components/xpl-progress-indicator/xpl-progress-indicator.d.ts +11 -0
  272. package/dist/types/components/xpl-select/xpl-select.d.ts +3 -0
  273. package/dist/types/components/xpl-spotlight/spotlight.stories.d.ts +197 -0
  274. package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +101 -0
  275. package/dist/types/components/xpl-tab/xpl-tab.d.ts +14 -1
  276. package/dist/types/components/xpl-tab-panel/xpl-tab-panel.d.ts +2 -1
  277. package/dist/types/components/xpl-tabs/segment-control.stories.d.ts +112 -0
  278. package/dist/types/components/xpl-tabs/tabs.shared.d.ts +156 -0
  279. package/dist/types/components/xpl-tabs/tabs.stories.d.ts +65 -12
  280. package/dist/types/components/xpl-tabs/xpl-tabs.d.ts +37 -18
  281. package/dist/types/components/xpl-tag/tag.stories.d.ts +65 -0
  282. package/dist/types/components/xpl-tag/xpl-tag.d.ts +36 -1
  283. package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +471 -0
  284. package/dist/types/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.d.ts +18 -0
  285. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +48 -0
  286. package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +51 -0
  287. package/dist/types/components.d.ts +1521 -83
  288. package/dist/types/utils/lifecycle.d.ts +16 -0
  289. package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
  290. package/package.json +12 -3
  291. package/dist/apollo-core/p-0bce3874.entry.js +0 -1
  292. package/dist/apollo-core/p-1fd3dc87.entry.js +0 -1
  293. package/dist/apollo-core/p-56fa4941.entry.js +0 -1
  294. package/dist/apollo-core/p-76c324da.entry.js +0 -1
  295. package/dist/apollo-core/p-7a3224b4.entry.js +0 -1
  296. package/dist/apollo-core/p-7e924697.entry.js +0 -1
  297. package/dist/apollo-core/p-9efca9e1.entry.js +0 -1
  298. package/dist/apollo-core/p-b252b380.entry.js +0 -1
  299. package/dist/apollo-core/p-c91daac1.entry.js +0 -1
  300. package/dist/apollo-core/p-d9b62508.entry.js +0 -1
  301. package/dist/apollo-core/p-eaea16d1.entry.js +0 -1
  302. package/dist/apollo-core/p-eed13bca.entry.js +0 -1
  303. package/dist/cjs/xpl-list.cjs.entry.js +0 -32
  304. package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
  305. package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
  306. package/dist/components/xpl-progress.js +0 -1
  307. package/dist/docs/xpl-progress/readme.md +0 -22
  308. package/dist/esm/xpl-list.entry.js +0 -30
  309. package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
  310. package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
@@ -5,16 +5,26 @@
5
5
  * It contains typing information for all components that exist in this project.
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
+ import { AvatarColor, AvatarGroupItem, AvatarStatus, AvatarVariant } from "./components/xpl-avatar/xpl-avatar";
8
9
  import { BadgeVariantProp } from "./components/xpl-badge/xpl-badge";
9
10
  import { Choice } from "./components/xpl-choicelist/choice";
10
11
  import { DropdownItem, DropdownOptionGroup } from "./components/xpl-dropdown/dropdown-option";
11
- import { ListItem } from "./components/xpl-list/listitem";
12
+ import { Placement } from "@floating-ui/dom";
13
+ import { ListItem, XplListOrderChangeDetail } from "./components/xpl-list/listitem";
14
+ import { BadgeVariantProp as BadgeVariantProp1 } from "./components/xpl-badge/xpl-badge";
12
15
  import { PopoverPosition } from "./components/xpl-popover/xpl-popover";
16
+ import { SpotlightActionLayout, SpotlightAnchorPosition } from "./components/xpl-spotlight/xpl-spotlight";
17
+ import { TagDragEndDetail, TagDragStartDetail } from "./components/xpl-tag/xpl-tag";
18
+ export { AvatarColor, AvatarGroupItem, AvatarStatus, AvatarVariant } from "./components/xpl-avatar/xpl-avatar";
13
19
  export { BadgeVariantProp } from "./components/xpl-badge/xpl-badge";
14
20
  export { Choice } from "./components/xpl-choicelist/choice";
15
21
  export { DropdownItem, DropdownOptionGroup } from "./components/xpl-dropdown/dropdown-option";
16
- export { ListItem } from "./components/xpl-list/listitem";
22
+ export { Placement } from "@floating-ui/dom";
23
+ export { ListItem, XplListOrderChangeDetail } from "./components/xpl-list/listitem";
24
+ export { BadgeVariantProp as BadgeVariantProp1 } from "./components/xpl-badge/xpl-badge";
17
25
  export { PopoverPosition } from "./components/xpl-popover/xpl-popover";
26
+ export { SpotlightActionLayout, SpotlightAnchorPosition } from "./components/xpl-spotlight/xpl-spotlight";
27
+ export { TagDragEndDetail, TagDragStartDetail } from "./components/xpl-tag/xpl-tag";
18
28
  export namespace Components {
19
29
  interface XplAccordion {
20
30
  /**
@@ -76,22 +86,26 @@ export namespace Components {
76
86
  /**
77
87
  * Background color when there is no image src
78
88
  */
79
- "color"?: 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';
89
+ "color"?: AvatarColor;
80
90
  /**
81
91
  * Sets a disabled state on the avatar when set to true
82
92
  * @default false
83
93
  */
84
94
  "disabled"?: boolean;
95
+ /**
96
+ * When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }.
97
+ */
98
+ "groupData"?: AvatarGroupItem[] | string;
85
99
  /**
86
100
  * The URL if the avatar should be hyperlinked
87
101
  */
88
102
  "href"?: string;
89
103
  /**
90
- * Alt text for the image if there is an image src
104
+ * Alt text for the image; also used for initials when no image and no slot.
91
105
  */
92
106
  "name"?: string;
93
107
  /**
94
- * Size of the avatar
108
+ * Size of the avatar (and of each avatar in a group).
95
109
  */
96
110
  "size"?: 'md' | 'sm';
97
111
  /**
@@ -99,13 +113,22 @@ export namespace Components {
99
113
  */
100
114
  "src"?: string;
101
115
  /**
102
- * Color styles for the dot indicator to indicate varied states
116
+ * Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`. **Legacy
117
+ * @deprecated :** `active`, `warning`, and `inactive` still map to `green`, `red`, and `gray` for existing consumers. Prefer palette names; legacy values are scheduled for removal in the next **major** release.
118
+ */
119
+ "status"?: AvatarStatus;
120
+ /**
121
+ * Secondary text shown when `variant` is `with-text` (e.g. email).
103
122
  */
104
- "status"?: 'active' | 'warning' | 'inactive';
123
+ "subText"?: string;
105
124
  /**
106
125
  * Where to open the URL chosen for the `href` prop: `_self` (default), `_blank`, `_parent`, or `_top`
107
126
  */
108
127
  "target"?: string;
128
+ /**
129
+ * Optional layout: `profile` (large profile sizes), `group` (stacked faces + `groupData`; `status` not shown), `with-text` (avatar with `name` / `subText` beside it). Omit for the default single avatar.
130
+ */
131
+ "variant"?: AvatarVariant;
109
132
  }
110
133
  interface XplBackdrop {
111
134
  /**
@@ -193,6 +216,16 @@ export namespace Components {
193
216
  interface XplBreadcrumbs {
194
217
  }
195
218
  interface XplButton {
219
+ /**
220
+ * Attributes to apply to the inner native `<button>` (e.g., tab a11y wiring). Use this instead of setting `id` / `role` / `aria-*` on the host when the inner control is the element that needs them (e.g., WAI-ARIA composite widgets).
221
+ */
222
+ "controlAttrs"?: {
223
+ id?: string;
224
+ role?: string;
225
+ 'aria-controls'?: string;
226
+ 'aria-selected'?: 'true' | 'false';
227
+ 'aria-current'?: string;
228
+ };
196
229
  /**
197
230
  * Whether button should be disabled
198
231
  * @default false
@@ -311,6 +344,11 @@ export namespace Components {
311
344
  "setDate": (date: string | string[]) => Promise<void>;
312
345
  }
313
346
  interface XplCheckbox {
347
+ /**
348
+ * Accessible name for the native checkbox input (sets `aria-label` on the `input`). Use when there is no visible label text in the default slot. Defaults to `''`; empty or whitespace-only values omit `aria-label` on the input so a visible `<label>` remains the sole name source.
349
+ * @default ''
350
+ */
351
+ "ariaLabel": string;
314
352
  /**
315
353
  * Whether the input is checked
316
354
  */
@@ -458,6 +496,10 @@ export namespace Components {
458
496
  * @default true
459
497
  */
460
498
  "closeOnSelect": boolean;
499
+ /**
500
+ * When `anchorToTrigger` is true, additional placements to try when the default `placement` does not fit (passed to Floating UI `flip`).
501
+ */
502
+ "flipFallbackPlacements"?: Placement[];
461
503
  /**
462
504
  * called on dropdown option click and keydown events to update isSelected states
463
505
  */
@@ -476,6 +518,11 @@ export namespace Components {
476
518
  * options that are listed
477
519
  */
478
520
  "options"?: DropdownItem[];
521
+ /**
522
+ * Floating UI placement when `anchorToTrigger` is true (e.g. `bottom-start`, `top-start`).
523
+ * @default 'bottom-start'
524
+ */
525
+ "placement": Placement;
479
526
  /**
480
527
  * whether selection should be made when focusing on interactive element
481
528
  * @default false
@@ -638,7 +685,12 @@ export namespace Components {
638
685
  */
639
686
  "allowCustomOption"?: boolean;
640
687
  /**
641
- * Hint for form autofill feature Applies to text, password, number.
688
+ * Accessible name for search inputs when there is no visible `label` (after trim). Ignored for naming when a visible label is shown. Defaults to `''`; whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed when there is no visible label. Applies to search inputs (`type="search"`).
689
+ * @default ''
690
+ */
691
+ "ariaLabel": string;
692
+ /**
693
+ * Hint for form autofill feature Applies to text, password, number, and search inputs.
642
694
  */
643
695
  "autocomplete"?: string;
644
696
  /**
@@ -723,7 +775,7 @@ export namespace Components {
723
775
  */
724
776
  "name"?: string;
725
777
  /**
726
- * Placeholder text that appears when the field has no value Applies to text, password, number, and date inputs.
778
+ * Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs.
727
779
  */
728
780
  "placeholder"?: string;
729
781
  /**
@@ -739,13 +791,21 @@ export namespace Components {
739
791
  */
740
792
  "preferredCountries"?: string[];
741
793
  /**
742
- * Whether the input is editable Applies to text, password, number, and date inputs.
794
+ * Whether the input is editable Applies to text, password, number, date, and search inputs.
743
795
  */
744
796
  "readonly"?: boolean;
745
797
  /**
746
798
  * Whether the input is required Applies to all input types.
747
799
  */
748
800
  "required"?: boolean;
801
+ /**
802
+ * Moves keyboard focus to the native control (text field, textarea, or search inner input).
803
+ */
804
+ "setFocus": () => Promise<void>;
805
+ /**
806
+ * Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`).
807
+ */
808
+ "shape"?: 'rounded' | 'box';
749
809
  /**
750
810
  * The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs.
751
811
  */
@@ -759,9 +819,17 @@ export namespace Components {
759
819
  * The type of form control
760
820
  * @default 'text'
761
821
  */
762
- "type"?: 'date' | 'time' | 'text' | 'number' | 'password' | 'file' | 'color' | 'phone';
822
+ "type"?: | 'date'
823
+ | 'time'
824
+ | 'text'
825
+ | 'number'
826
+ | 'password'
827
+ | 'file'
828
+ | 'color'
829
+ | 'phone'
830
+ | 'search';
763
831
  /**
764
- * Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and date inputs.
832
+ * Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs.
765
833
  */
766
834
  "value"?: string;
767
835
  }
@@ -935,6 +1003,74 @@ export namespace Components {
935
1003
  */
936
1004
  "value"?: string;
937
1005
  }
1006
+ interface XplInputSearch {
1007
+ /**
1008
+ * Accessible name when there is no visible label from the parent; maps to `aria-label` on the input. When the parent provides a visible label, the input is named by `<label for="…">` — this prop is ignored for naming. Empty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed.
1009
+ * @default 'Search'
1010
+ */
1011
+ "ariaLabel": string;
1012
+ /**
1013
+ * Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics.
1014
+ * @default 'off'
1015
+ */
1016
+ "autocomplete": string;
1017
+ /**
1018
+ * Disables the field and clear control.
1019
+ * @default false
1020
+ */
1021
+ "disabled": boolean;
1022
+ /**
1023
+ * Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`).
1024
+ */
1025
+ "errorMessageId"?: string;
1026
+ /**
1027
+ * Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`.
1028
+ * @default false
1029
+ */
1030
+ "hasError": boolean;
1031
+ /**
1032
+ * When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input.
1033
+ * @default false
1034
+ */
1035
+ "hasVisibleLabel": boolean;
1036
+ /**
1037
+ * Associates the control with the parent `xpl-input` label (`for` / `id`).
1038
+ */
1039
+ "inputId": string;
1040
+ /**
1041
+ * Form field `name` on the native input.
1042
+ */
1043
+ "name"?: string;
1044
+ /**
1045
+ * Placeholder shown when the value is empty.
1046
+ * @default 'Search'
1047
+ */
1048
+ "placeholder": string;
1049
+ /**
1050
+ * Whether the input is editable.
1051
+ * @default false
1052
+ */
1053
+ "readonly": boolean;
1054
+ /**
1055
+ * Whether the input is required.
1056
+ * @default false
1057
+ */
1058
+ "required": boolean;
1059
+ /**
1060
+ * Moves keyboard focus to the search field.
1061
+ */
1062
+ "setFocus": () => Promise<void>;
1063
+ /**
1064
+ * Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).
1065
+ * @default 'rounded'
1066
+ */
1067
+ "shape": 'rounded' | 'box';
1068
+ /**
1069
+ * Current value (controlled-friendly).
1070
+ * @default ''
1071
+ */
1072
+ "value": string;
1073
+ }
938
1074
  interface XplInputTime {
939
1075
  /**
940
1076
  * For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs.
@@ -1011,10 +1147,94 @@ export namespace Components {
1011
1147
  }
1012
1148
  interface XplList {
1013
1149
  /**
1014
- * `items` should be an array of objects with the following signature: { avatar?: string; // The URL of the avatar, or the placeholder initials (ex. "SPD"). avatars?: string[]; // The URLs of multiple avatars to be displayed in a group on the right. badges?: string[] | { // An array of strings or badge-like objects to be displayed as badges dot?: boolean; // in a group on the right. See <xpl-badge> for more details. text: string; variant?: string; }[]; href?: string; // A URL, if this list item is meant to link somewhere. title: string; // The text to be displayed for the list item. metadata?: string[] | { // An array of strings or strings with icons (reference the allowed icon: string; // Apollo icons) to be displayed as metadata below the title. text: string; }[]; subtext?: string; // Subtext to be displayed on the right. } - Note that you should *only use one of* `avatars`, `badges`, or `subtext`, to avoid cluttering the right-hand side of the list item.
1150
+ * Clears all radio selections in the list. Also runs when `selectable` is true, the user presses Escape, and focus is on the selected row. Emits `itemSelect` once per row that was selected (checked radio or `selected` prop), typically one.
1151
+ */
1152
+ "clearSelection": () => Promise<void>;
1153
+ /**
1154
+ * Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead.
1015
1155
  * @default []
1016
1156
  */
1017
- "items"?: ListItem[];
1157
+ "items": ListItem[];
1158
+ /**
1159
+ * Accessible name for the list, exposed as `aria-label` on the host when set. Use when the list has no visible heading. Ignored when `labelledBy` is set (see `labelledBy` for precedence).
1160
+ */
1161
+ "label"?: string;
1162
+ /**
1163
+ * Element id(s) that label this list (space-separated), exposed as `aria-labelledby` when set. When set, `label` is not applied as `aria-label` so the list has a single naming source.
1164
+ */
1165
+ "labelledBy"?: string;
1166
+ /**
1167
+ * When true, enables reorder UI and behavior for **slot-based** child rows (drag handle + keyboard). Legacy rows rendered from the deprecated `items` prop do **not** show a drag handle; migrate to slots if reorder is required.
1168
+ * @default false
1169
+ */
1170
+ "reorderable": boolean;
1171
+ /**
1172
+ * Determines if this list is selectable (shows `xpl-radio` per row in a shared group). Press Escape while focus is on the **selected** row to clear selection (same as `clearSelection()`).
1173
+ * @default false
1174
+ */
1175
+ "selectable": boolean;
1176
+ }
1177
+ interface XplListItem {
1178
+ /**
1179
+ * Whether the item is disabled.
1180
+ * @default false
1181
+ */
1182
+ "disabled"?: boolean;
1183
+ /**
1184
+ * Whether to show the item in an error state.
1185
+ * @default false
1186
+ */
1187
+ "error"?: boolean;
1188
+ /**
1189
+ * When true, the row is not shown and does not participate in visible-only list behavior (e.g. `orderChange` / `orderedItemIds`, reorder targets). Use for filtering, conditional display, or keeping stable `item-id` while the row is off-screen. See `xpl-list` readme “Hidden rows”. **Accessibility:** Renders an empty host with the native `hidden` attribute only (no `role="listitem"`), consistent with the row not participating as a list item while hidden.
1190
+ * @default false
1191
+ */
1192
+ "hidden": boolean;
1193
+ /**
1194
+ * URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation.
1195
+ */
1196
+ "href"?: string;
1197
+ /**
1198
+ * Optional item data for prop-based rendering. When provided, this takes precedence over slotted content and renders using the legacy ListItem interface. **Deprecated.** Prefer slot-based composition (named slots on `xpl-list-item`).
1199
+ */
1200
+ "item"?: ListItem;
1201
+ /**
1202
+ * Unique identifier for this item. Used for selection and drag/drop. Mutable so the host can sync from `item-id` / `id` in `componentWillLoad` without breaking one-way data flow.
1203
+ */
1204
+ "itemId"?: string;
1205
+ /**
1206
+ * When set by the parent, indicates this item is the active keyboard reorder item.
1207
+ * @default false
1208
+ */
1209
+ "keyboardActive"?: boolean;
1210
+ /**
1211
+ * Name attribute for radio inputs (shared across selectable items in a list).
1212
+ */
1213
+ "radioName"?: string;
1214
+ /**
1215
+ * Whether this item is reorderable (shows a drag handle in **slot-based** layout). When the deprecated `item` prop is used, legacy markup has **no** reorder handle even if this is true.
1216
+ * @default false
1217
+ */
1218
+ "reorderable"?: boolean;
1219
+ /**
1220
+ * Whether this item is selectable (shows `xpl-radio` in a shared group).
1221
+ * @default false
1222
+ */
1223
+ "selectable"?: boolean;
1224
+ /**
1225
+ * Whether this item is selected (radio checked state).
1226
+ * @default false
1227
+ */
1228
+ "selected"?: boolean;
1229
+ /**
1230
+ * Whether to show a divider below the item.
1231
+ * @default false
1232
+ */
1233
+ "showDivider"?: boolean;
1234
+ /**
1235
+ * Optional badge to display next to the title (dot badge). Only used when `item` prop is not provided (slot mode). Matches `xpl-badge` variant values (e.g. purple, green, red).
1236
+ */
1237
+ "titleBadgeVariant"?: BadgeVariantProp1;
1018
1238
  }
1019
1239
  interface XplMainNav {
1020
1240
  /**
@@ -1040,6 +1260,34 @@ export namespace Components {
1040
1260
  */
1041
1261
  "variant": 'default' | 'warning';
1042
1262
  }
1263
+ /**
1264
+ * Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
1265
+ * Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
1266
+ * **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
1267
+ * **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
1268
+ * profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
1269
+ * **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
1270
+ * **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
1271
+ * duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
1272
+ * Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
1273
+ * Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
1274
+ * **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
1275
+ * Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
1276
+ * deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
1277
+ * **`slot`** mutations without stacking uncancellable microtasks.
1278
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
1279
+ * values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
1280
+ */
1281
+ interface XplNavHeaderMenu {
1282
+ /**
1283
+ * Email address shown below the username.
1284
+ */
1285
+ "email"?: string;
1286
+ /**
1287
+ * Display name shown in the profile block.
1288
+ */
1289
+ "username"?: string;
1290
+ }
1043
1291
  interface XplNavItem {
1044
1292
  /**
1045
1293
  * @property {boolean} - Whether or not the item should control the main nav state on click
@@ -1085,7 +1333,7 @@ export namespace Components {
1085
1333
  */
1086
1334
  "accent": 'none' | 'primary' | 'secondary' | 'positive' | 'negative' | 'highlight';
1087
1335
  /**
1088
- * Padding density applied to the content area. Responsive: scales down at tablet and mobile breakpoints. - `default` – 24 px desktop / 16 px tablet+mobile - `tight` – 16 px desktop / 8 px tablet+mobile - `loose` – 40 px desktop / 32 px tablet / 24 px mobile
1336
+ * Padding density applied to the content area. (default and tight keep desktop padding through tablet; mobile ≤480px). - `default` – 24 px desktop & tablet / 16 px mobile - `tight` – 16 px desktop & tablet / 8 px mobile - `loose` – 40 px desktop / 32 px tablet / 24 px mobile
1089
1337
  * @default 'default'
1090
1338
  */
1091
1339
  "padding": 'default' | 'tight' | 'loose';
@@ -1112,17 +1360,6 @@ export namespace Components {
1112
1360
  */
1113
1361
  "position": PopoverPosition;
1114
1362
  }
1115
- interface XplProgress {
1116
- /**
1117
- * Current step, is the index of the current active step
1118
- * @default 0
1119
- */
1120
- "currentStep": number;
1121
- /**
1122
- * The steps is an array of the steps name.
1123
- */
1124
- "steps"?: string[];
1125
- }
1126
1363
  interface XplProgressBar {
1127
1364
  /**
1128
1365
  * The helper text displayed below the progress bar (recommended for error state)
@@ -1153,6 +1390,32 @@ export namespace Components {
1153
1390
  */
1154
1391
  "variant": 'default' | 'success' | 'error' | 'indeterminate';
1155
1392
  }
1393
+ interface XplProgressIndicator {
1394
+ /**
1395
+ * Current step index. Steps with index < currentStep are "finished", the step at currentStep is "active", and steps beyond are "waiting". Set to steps.length to mark all steps as finished. Automatically clamped to [0, steps.length].
1396
+ * @default 0
1397
+ */
1398
+ "currentStep": number;
1399
+ /**
1400
+ * Layout direction - 'horizontal' or 'vertical'
1401
+ * @default 'horizontal'
1402
+ */
1403
+ "layout": 'horizontal' | 'vertical';
1404
+ /**
1405
+ * Whether to show step labels
1406
+ * @default true
1407
+ */
1408
+ "showLabels": boolean;
1409
+ /**
1410
+ * Whether to show step numbers inside circles
1411
+ * @default true
1412
+ */
1413
+ "showNumbers": boolean;
1414
+ /**
1415
+ * The steps is an array of the steps name.
1416
+ */
1417
+ "steps"?: string[];
1418
+ }
1156
1419
  interface XplRadio {
1157
1420
  /**
1158
1421
  * Whether the input is "on"
@@ -1207,6 +1470,15 @@ export namespace Components {
1207
1470
  * Whether the field is disabled
1208
1471
  */
1209
1472
  "disabled"?: boolean;
1473
+ /**
1474
+ * Additional placements to try for the options panel when the default `dropdownPlacement` does not fit. Passed to `xpl-dropdown` / Floating UI `flip`.
1475
+ */
1476
+ "dropdownFlipFallbackPlacements"?: Placement[];
1477
+ /**
1478
+ * Initial Floating UI placement for the options panel (e.g. `top-start`, `bottom-start`). Forwarded to the inner `xpl-dropdown` when the menu is open.
1479
+ * @default 'bottom-start'
1480
+ */
1481
+ "dropdownPlacement": Placement;
1210
1482
  /**
1211
1483
  * If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message.
1212
1484
  */
@@ -1354,16 +1626,126 @@ export namespace Components {
1354
1626
  */
1355
1627
  "variant": 'default' | 'warning';
1356
1628
  }
1629
+ interface XplSpotlight {
1630
+ /**
1631
+ * Footer action layout. `default` and `dual` both render the standard Back/Next layout, while `single` renders a single acknowledgement CTA (e.g. "Got it!"). Only applies when `showActions` is `true`.
1632
+ * @default 'default'
1633
+ */
1634
+ "actionLayout": SpotlightActionLayout;
1635
+ /**
1636
+ * Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.
1637
+ * @default 'top-left'
1638
+ */
1639
+ "anchorPosition": SpotlightAnchorPosition;
1640
+ /**
1641
+ * Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph).
1642
+ */
1643
+ "body"?: string;
1644
+ /**
1645
+ * Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true.
1646
+ * @default 1
1647
+ */
1648
+ "currentStep": number;
1649
+ /**
1650
+ * Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span).
1651
+ */
1652
+ "heading"?: string;
1653
+ /**
1654
+ * Whether to show the dismiss (close) control.
1655
+ * @default true
1656
+ */
1657
+ "isDismissible": boolean;
1658
+ /**
1659
+ * Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden.
1660
+ * @default true
1661
+ */
1662
+ "isOpen": boolean;
1663
+ /**
1664
+ * Label used for the default primary action button. Only applies when `showActions` is `true`.
1665
+ * @default 'Next'
1666
+ */
1667
+ "primaryActionLabel": string;
1668
+ /**
1669
+ * Label used for the default secondary action button. Only applies when `showActions` is `true`.
1670
+ * @default 'Back'
1671
+ */
1672
+ "secondaryActionLabel": string;
1673
+ /**
1674
+ * Whether to show the actions row (primary / secondary and optional step counter). When `false`, the spotlight has no action buttons — useful for single-step informational callouts that rely solely on the dismiss control.
1675
+ * @default true
1676
+ */
1677
+ "showActions": boolean;
1678
+ /**
1679
+ * When true, the media region is shown. Slotted `image` content is rendered when present; otherwise the built-in placeholder UI is shown. When false, the entire media block is hidden.
1680
+ * @default true
1681
+ */
1682
+ "showImage": boolean;
1683
+ /**
1684
+ * Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state.
1685
+ * @default true
1686
+ */
1687
+ "showSteps": boolean;
1688
+ /**
1689
+ * CSS selector for the element this spotlight anchors to. When set, placement uses Floating UI (`computePosition` with `strategy: 'fixed'`, plus `flip`, `shift`, `offset`) and `autoUpdate` for scroll/resize. The host receives `left` / `top` and the `xpl-spotlight--anchored` class. Invalid selectors are ignored; layout falls back to `anchor-position`.
1690
+ */
1691
+ "target"?: string;
1692
+ /**
1693
+ * Total number of steps (1-based upper bound). Used with `currentStep` for the step label and for disabling default Back/Next when `showSteps` is true.
1694
+ * @default 1
1695
+ */
1696
+ "totalSteps": number;
1697
+ }
1357
1698
  interface XplTab {
1699
+ /**
1700
+ * Disables this tab (pill or underline).
1701
+ * @default false
1702
+ */
1703
+ "disabled": boolean;
1704
+ /**
1705
+ * Focuses the tab's trigger button.
1706
+ */
1707
+ "focusTrigger": () => Promise<void>;
1708
+ /**
1709
+ * Whether the tab should take full width (set by parent `xpl-tabs` when fullWidth is true).
1710
+ * @default false
1711
+ */
1712
+ "fullWidth": boolean;
1713
+ /**
1714
+ * Returns the focusable button element for this tab (underline `<button>` or segment `xpl-button` inner button).
1715
+ */
1716
+ "getFocusableElement": () => Promise<HTMLButtonElement | null>;
1717
+ /**
1718
+ * Set when the parent `xpl-tabs` has `disabled` (group-disabled).
1719
+ * @default false
1720
+ */
1721
+ "groupDisabled": boolean;
1722
+ /**
1723
+ * Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs.
1724
+ */
1725
+ "icon"?: string;
1726
+ /**
1727
+ * Icon position for segment-style pills.
1728
+ * @default 'start'
1729
+ */
1730
+ "iconPosition": 'start' | 'end';
1358
1731
  /**
1359
1732
  * Whether the tab is selected
1360
1733
  * @default false
1361
1734
  */
1362
1735
  "selected": boolean;
1736
+ /**
1737
+ * Sets the tabindex on the focusable button element.
1738
+ */
1739
+ "setTabIndex": (value: number) => Promise<void>;
1363
1740
  /**
1364
1741
  * The target of the tab, required for the tab to be selected
1365
1742
  */
1366
1743
  "target": string;
1744
+ /**
1745
+ * Visual variant: 'tabs' for underline tabs, 'segment' for pill controls. Set by the parent `xpl-tabs` component based on its `type` prop.
1746
+ * @default 'tabs'
1747
+ */
1748
+ "variant": 'tabs' | 'segment';
1367
1749
  }
1368
1750
  interface XplTabPanel {
1369
1751
  /**
@@ -1445,17 +1827,51 @@ export namespace Components {
1445
1827
  "width"?: number;
1446
1828
  }
1447
1829
  interface XplTabs {
1830
+ /**
1831
+ * Disables the whole tab group (headings, mobile select, and segment pills).
1832
+ * @default false
1833
+ */
1834
+ "disabled": boolean;
1448
1835
  /**
1449
1836
  * Whether to make the tabs full width
1450
1837
  * @default false
1451
1838
  */
1452
1839
  "fullWidth": boolean;
1840
+ /**
1841
+ * Visual and layout variant: classic underline tabs or segment (pill) controls.
1842
+ * @default 'tabs'
1843
+ */
1844
+ "type": 'tabs' | 'segment';
1453
1845
  /**
1454
1846
  * The selected tab target value, defaults to the first tab
1455
1847
  */
1456
1848
  "value": string;
1457
1849
  }
1458
1850
  interface XplTag {
1851
+ /**
1852
+ * Whether the tag is disabled
1853
+ * @default false
1854
+ */
1855
+ "disabled": boolean;
1856
+ /**
1857
+ * Whether the tag shows a dismiss button
1858
+ * @default true
1859
+ */
1860
+ "dismissible": boolean;
1861
+ /**
1862
+ * When true, the tag label uses native HTML5 drag (the inner label is the drag source). Named `isDraggable` so the Stencil prop does not collide with the native `HTMLElement.draggable` API. `reflect: false` avoids syncing a `draggable` attribute onto the host; the inner label remains the drag source. Host `onDragStart` still suppresses stray native drags from host chrome.
1863
+ * @default false
1864
+ */
1865
+ "isDraggable": boolean;
1866
+ /**
1867
+ * The size of the tag
1868
+ * @default 'default'
1869
+ */
1870
+ "size": 'default' | 'sm';
1871
+ /**
1872
+ * Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail and written to `dataTransfer` as `application/x-tag-id`.
1873
+ */
1874
+ "tagId"?: string;
1459
1875
  }
1460
1876
  interface XplToast {
1461
1877
  /**
@@ -1544,17 +1960,110 @@ export namespace Components {
1544
1960
  */
1545
1961
  "text": string;
1546
1962
  }
1547
- interface XplUtilityBar {
1963
+ /**
1964
+ * Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
1965
+ * (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
1966
+ * Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
1967
+ * **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
1968
+ * **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
1969
+ * on **`ownerDocument`** so nested dropdowns close before the drawer.
1970
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
1971
+ * resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
1972
+ * content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
1973
+ * **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
1974
+ * Consumers should not add those BEM classes — slot content only.
1975
+ * **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
1976
+ * **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
1977
+ * is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
1978
+ * primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
1979
+ * stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
1980
+ * viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
1981
+ * **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
1982
+ * **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
1983
+ * and emits **`navOpen(false)`** so the two layers do not stack.
1984
+ */
1985
+ interface XplTopNav {
1548
1986
  /**
1549
- * @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
1987
+ * Destination URL for the brand control when using native navigation (**`<a href>`**). When unset, the brand is a **`role="button"`** control and **`brandClick`** fires on activation instead.
1550
1988
  */
1551
- "isNavOpenAtStartup"?: boolean;
1989
+ "brandHref"?: string;
1552
1990
  /**
1553
- * @property {boolean} - whether or not to show the bars to control the state of the navigation bar (open/close)
1991
+ * Optional image URL for the brand mark (leading the brand row, before **`brand-name`** text). When set, renders **`<img class="xpl-top-nav__brand-logo">`** and ignores **`slot="brand-logo"`** for the mark. When unset, use **`slot="brand-logo"`** for custom logo content.
1554
1992
  */
1555
- "navControl"?: boolean;
1556
- }
1557
- }
1993
+ "brandLogo"?: string;
1994
+ /**
1995
+ * Visible product / app name next to **`brand-logo`**. Omit for logo-only; provide **`brand-logo`** and/or this string to show the built-in brand row (**`left-aside`** is then primary nav links only).
1996
+ */
1997
+ "brandName"?: string;
1998
+ /**
1999
+ * Label text for the built-in account menu trigger (shown **before** the **`chevron-down`** icon) when **`slot="user-menu"`** is present and **`slot="user-menu-trigger"`** is not used. When empty or whitespace-only, the trigger shows only the chevron and uses **`aria-label="Open account menu"`** on the button.
2000
+ */
2001
+ "childAccountLabel"?: string;
2002
+ /**
2003
+ * Accessible name for the `<nav>` landmark (maps to `aria-label`). Use a unique label when the page has multiple navigation regions (e.g. side nav + top nav). When unset, defaults to `top-navigation-bar`.
2004
+ */
2005
+ "label"?: string;
2006
+ /**
2007
+ * When true, renders the navigation control (hamburger) for toggling the left slot on small viewports. The control is **hidden from the Tailwind `md` breakpoint up**; collapse/show for **`left-aside`** uses **`max-width: calc(theme('screens.md') - 1px)`** in **`top-nav.css`** (Figma’s 767px at a 16px root and default **`screens.md`**). Reflected to the **`nav-control`** attribute so host updates (framework props) re-run **`@Watch`**: drawer state and document **Escape** handling stay in sync, the host **`xpl-top-nav--nav-control`** class toggles for **`top-nav.css`**, and **`navOpen(false)`** is emitted if **`nav-control`** is cleared while the drawer was open.
2008
+ */
2009
+ "navControl"?: boolean;
2010
+ }
2011
+ /**
2012
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
2013
+ * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
2014
+ * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
2015
+ * under **`xpl-nav-header-menu`**. That flag is
2016
+ * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
2017
+ * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
2018
+ * without a full reconnect still re-sync. The internal
2019
+ * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
2020
+ * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
2021
+ * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
2022
+ * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
2023
+ * custom trigger content — the component renders the inner wrapper and BEM elements.
2024
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
2025
+ * values even when the page root is light (consistent with **`xpl-top-nav`**).
2026
+ */
2027
+ interface XplTopNavItem {
2028
+ /**
2029
+ * When true, adds **`xpl-top-nav-item--active`** for persistent accent styling (e.g. link color on the bar, or chrome inside **`xpl-nav-header-menu`**). Separate from **`selected`**, which sets **`aria-current="page"`** and **`--selected`**. Use both when the design needs “current page” semantics plus the active visual treatment.
2030
+ * @default false
2031
+ */
2032
+ "active": boolean;
2033
+ /**
2034
+ * If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
2035
+ */
2036
+ "href"?: string;
2037
+ /**
2038
+ * Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
2039
+ * @default ''
2040
+ */
2041
+ "icon": string;
2042
+ /**
2043
+ * Accessible name for the inner control when there is no **`label`** and no default-slot text (e.g. icon-only). If omitted in that case, **`aria-label`** defaults to **`Navigation item`**. Ignored when **`label`** or default-slot content supplies a visible name.
2044
+ */
2045
+ "itemAriaLabel"?: string;
2046
+ /**
2047
+ * Text label. If omitted, use the default slot for custom trigger content. Long labels use **`text-ellipsis`** on **`.xpl-top-nav-item__label`** (see `top-nav.css`); **`title`** is set to the full string for hover tooltips when the visual line clips.
2048
+ */
2049
+ "label"?: string;
2050
+ /**
2051
+ * When true, sets **`aria-current="page"`** and selected styling.
2052
+ * @default false
2053
+ */
2054
+ "selected": boolean;
2055
+ }
2056
+ interface XplUtilityBar {
2057
+ /**
2058
+ * @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
2059
+ */
2060
+ "isNavOpenAtStartup"?: boolean;
2061
+ /**
2062
+ * @property {boolean} - whether or not to show the bars to control the state of the navigation bar (open/close)
2063
+ */
2064
+ "navControl"?: boolean;
2065
+ }
2066
+ }
1558
2067
  export interface XplBannerCustomEvent<T> extends CustomEvent<T> {
1559
2068
  detail: T;
1560
2069
  target: HTMLXplBannerElement;
@@ -1603,10 +2112,22 @@ export interface XplInputPhoneCustomEvent<T> extends CustomEvent<T> {
1603
2112
  detail: T;
1604
2113
  target: HTMLXplInputPhoneElement;
1605
2114
  }
2115
+ export interface XplInputSearchCustomEvent<T> extends CustomEvent<T> {
2116
+ detail: T;
2117
+ target: HTMLXplInputSearchElement;
2118
+ }
1606
2119
  export interface XplInputTimeCustomEvent<T> extends CustomEvent<T> {
1607
2120
  detail: T;
1608
2121
  target: HTMLXplInputTimeElement;
1609
2122
  }
2123
+ export interface XplListCustomEvent<T> extends CustomEvent<T> {
2124
+ detail: T;
2125
+ target: HTMLXplListElement;
2126
+ }
2127
+ export interface XplListItemCustomEvent<T> extends CustomEvent<T> {
2128
+ detail: T;
2129
+ target: HTMLXplListItemElement;
2130
+ }
1610
2131
  export interface XplMainNavCustomEvent<T> extends CustomEvent<T> {
1611
2132
  detail: T;
1612
2133
  target: HTMLXplMainNavElement;
@@ -1643,6 +2164,10 @@ export interface XplSlideoutCustomEvent<T> extends CustomEvent<T> {
1643
2164
  detail: T;
1644
2165
  target: HTMLXplSlideoutElement;
1645
2166
  }
2167
+ export interface XplSpotlightCustomEvent<T> extends CustomEvent<T> {
2168
+ detail: T;
2169
+ target: HTMLXplSpotlightElement;
2170
+ }
1646
2171
  export interface XplTabCustomEvent<T> extends CustomEvent<T> {
1647
2172
  detail: T;
1648
2173
  target: HTMLXplTabElement;
@@ -1663,6 +2188,14 @@ export interface XplTagCustomEvent<T> extends CustomEvent<T> {
1663
2188
  detail: T;
1664
2189
  target: HTMLXplTagElement;
1665
2190
  }
2191
+ export interface XplTopNavCustomEvent<T> extends CustomEvent<T> {
2192
+ detail: T;
2193
+ target: HTMLXplTopNavElement;
2194
+ }
2195
+ export interface XplTopNavItemCustomEvent<T> extends CustomEvent<T> {
2196
+ detail: T;
2197
+ target: HTMLXplTopNavItemElement;
2198
+ }
1666
2199
  export interface XplUtilityBarCustomEvent<T> extends CustomEvent<T> {
1667
2200
  detail: T;
1668
2201
  target: HTMLXplUtilityBarElement;
@@ -1923,6 +2456,7 @@ declare global {
1923
2456
  "blurEvent": FocusEvent;
1924
2457
  "valueChange": string;
1925
2458
  "inputEvent": string;
2459
+ "search": string;
1926
2460
  }
1927
2461
  interface HTMLXplInputElement extends Components.XplInput, HTMLStencilElement {
1928
2462
  addEventListener<K extends keyof HTMLXplInputElementEventMap>(type: K, listener: (this: HTMLXplInputElement, ev: XplInputCustomEvent<HTMLXplInputElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -2016,6 +2550,27 @@ declare global {
2016
2550
  prototype: HTMLXplInputPhoneElement;
2017
2551
  new (): HTMLXplInputPhoneElement;
2018
2552
  };
2553
+ interface HTMLXplInputSearchElementEventMap {
2554
+ "blurEvent": FocusEvent;
2555
+ "focusEvent": FocusEvent;
2556
+ "inputEvent": string;
2557
+ "search": string;
2558
+ "valueChange": string;
2559
+ }
2560
+ interface HTMLXplInputSearchElement extends Components.XplInputSearch, HTMLStencilElement {
2561
+ addEventListener<K extends keyof HTMLXplInputSearchElementEventMap>(type: K, listener: (this: HTMLXplInputSearchElement, ev: XplInputSearchCustomEvent<HTMLXplInputSearchElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2562
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2563
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2564
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2565
+ removeEventListener<K extends keyof HTMLXplInputSearchElementEventMap>(type: K, listener: (this: HTMLXplInputSearchElement, ev: XplInputSearchCustomEvent<HTMLXplInputSearchElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2566
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2567
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2568
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2569
+ }
2570
+ var HTMLXplInputSearchElement: {
2571
+ prototype: HTMLXplInputSearchElement;
2572
+ new (): HTMLXplInputSearchElement;
2573
+ };
2019
2574
  interface HTMLXplInputTimeElementEventMap {
2020
2575
  "valueChange": string;
2021
2576
  "hasErrorStateChanged": string | null;
@@ -2040,12 +2595,44 @@ declare global {
2040
2595
  prototype: HTMLXplLargeCardElement;
2041
2596
  new (): HTMLXplLargeCardElement;
2042
2597
  };
2598
+ interface HTMLXplListElementEventMap {
2599
+ "itemSelect": { itemId?: string };
2600
+ "orderChange": XplListOrderChangeDetail;
2601
+ }
2043
2602
  interface HTMLXplListElement extends Components.XplList, HTMLStencilElement {
2603
+ addEventListener<K extends keyof HTMLXplListElementEventMap>(type: K, listener: (this: HTMLXplListElement, ev: XplListCustomEvent<HTMLXplListElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2604
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2605
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2606
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2607
+ removeEventListener<K extends keyof HTMLXplListElementEventMap>(type: K, listener: (this: HTMLXplListElement, ev: XplListCustomEvent<HTMLXplListElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2608
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2609
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2610
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2044
2611
  }
2045
2612
  var HTMLXplListElement: {
2046
2613
  prototype: HTMLXplListElement;
2047
2614
  new (): HTMLXplListElement;
2048
2615
  };
2616
+ interface HTMLXplListItemElementEventMap {
2617
+ "itemDragEnd": { itemId?: string; item: HTMLElement };
2618
+ "itemDragStart": { itemId?: string; item: HTMLElement };
2619
+ "itemDrop": { itemId?: string; item: HTMLElement };
2620
+ "itemSelect": { itemId?: string };
2621
+ }
2622
+ interface HTMLXplListItemElement extends Components.XplListItem, HTMLStencilElement {
2623
+ addEventListener<K extends keyof HTMLXplListItemElementEventMap>(type: K, listener: (this: HTMLXplListItemElement, ev: XplListItemCustomEvent<HTMLXplListItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2624
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2625
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2626
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2627
+ removeEventListener<K extends keyof HTMLXplListItemElementEventMap>(type: K, listener: (this: HTMLXplListItemElement, ev: XplListItemCustomEvent<HTMLXplListItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2628
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2629
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2630
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2631
+ }
2632
+ var HTMLXplListItemElement: {
2633
+ prototype: HTMLXplListItemElement;
2634
+ new (): HTMLXplListItemElement;
2635
+ };
2049
2636
  interface HTMLXplMainNavElementEventMap {
2050
2637
  "navWidth": string;
2051
2638
  }
@@ -2080,6 +2667,30 @@ declare global {
2080
2667
  prototype: HTMLXplModalElement;
2081
2668
  new (): HTMLXplModalElement;
2082
2669
  };
2670
+ /**
2671
+ * Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
2672
+ * Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
2673
+ * **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
2674
+ * **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
2675
+ * profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
2676
+ * **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
2677
+ * **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
2678
+ * duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
2679
+ * Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
2680
+ * Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
2681
+ * **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
2682
+ * Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
2683
+ * deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
2684
+ * **`slot`** mutations without stacking uncancellable microtasks.
2685
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
2686
+ * values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
2687
+ */
2688
+ interface HTMLXplNavHeaderMenuElement extends Components.XplNavHeaderMenu, HTMLStencilElement {
2689
+ }
2690
+ var HTMLXplNavHeaderMenuElement: {
2691
+ prototype: HTMLXplNavHeaderMenuElement;
2692
+ new (): HTMLXplNavHeaderMenuElement;
2693
+ };
2083
2694
  interface HTMLXplNavItemElementEventMap {
2084
2695
  "navOpen": boolean;
2085
2696
  }
@@ -2142,18 +2753,18 @@ declare global {
2142
2753
  prototype: HTMLXplPopoverElement;
2143
2754
  new (): HTMLXplPopoverElement;
2144
2755
  };
2145
- interface HTMLXplProgressElement extends Components.XplProgress, HTMLStencilElement {
2146
- }
2147
- var HTMLXplProgressElement: {
2148
- prototype: HTMLXplProgressElement;
2149
- new (): HTMLXplProgressElement;
2150
- };
2151
2756
  interface HTMLXplProgressBarElement extends Components.XplProgressBar, HTMLStencilElement {
2152
2757
  }
2153
2758
  var HTMLXplProgressBarElement: {
2154
2759
  prototype: HTMLXplProgressBarElement;
2155
2760
  new (): HTMLXplProgressBarElement;
2156
2761
  };
2762
+ interface HTMLXplProgressIndicatorElement extends Components.XplProgressIndicator, HTMLStencilElement {
2763
+ }
2764
+ var HTMLXplProgressIndicatorElement: {
2765
+ prototype: HTMLXplProgressIndicatorElement;
2766
+ new (): HTMLXplProgressIndicatorElement;
2767
+ };
2157
2768
  interface HTMLXplRadioElementEventMap {
2158
2769
  "radioChange": string | boolean;
2159
2770
  }
@@ -2247,6 +2858,26 @@ declare global {
2247
2858
  prototype: HTMLXplSlideoutElement;
2248
2859
  new (): HTMLXplSlideoutElement;
2249
2860
  };
2861
+ interface HTMLXplSpotlightElementEventMap {
2862
+ "dismiss": void;
2863
+ "primaryAction": void;
2864
+ "secondaryAction": void;
2865
+ "targetClick": void;
2866
+ }
2867
+ interface HTMLXplSpotlightElement extends Components.XplSpotlight, HTMLStencilElement {
2868
+ addEventListener<K extends keyof HTMLXplSpotlightElementEventMap>(type: K, listener: (this: HTMLXplSpotlightElement, ev: XplSpotlightCustomEvent<HTMLXplSpotlightElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2869
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2870
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2871
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2872
+ removeEventListener<K extends keyof HTMLXplSpotlightElementEventMap>(type: K, listener: (this: HTMLXplSpotlightElement, ev: XplSpotlightCustomEvent<HTMLXplSpotlightElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2873
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2874
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2875
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2876
+ }
2877
+ var HTMLXplSpotlightElement: {
2878
+ prototype: HTMLXplSpotlightElement;
2879
+ new (): HTMLXplSpotlightElement;
2880
+ };
2250
2881
  interface HTMLXplTabElementEventMap {
2251
2882
  "tabChange": string;
2252
2883
  }
@@ -2333,7 +2964,10 @@ declare global {
2333
2964
  new (): HTMLXplTabsElement;
2334
2965
  };
2335
2966
  interface HTMLXplTagElementEventMap {
2336
- "close": any;
2967
+ "close": void;
2968
+ "tagDragEnd": TagDragEndDetail;
2969
+ "tagDragStart": TagDragStartDetail;
2970
+ "tagRemove": void;
2337
2971
  }
2338
2972
  interface HTMLXplTagElement extends Components.XplTag, HTMLStencilElement {
2339
2973
  addEventListener<K extends keyof HTMLXplTagElementEventMap>(type: K, listener: (this: HTMLXplTagElement, ev: XplTagCustomEvent<HTMLXplTagElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -2373,6 +3007,79 @@ declare global {
2373
3007
  prototype: HTMLXplTooltipElement;
2374
3008
  new (): HTMLXplTooltipElement;
2375
3009
  };
3010
+ interface HTMLXplTopNavElementEventMap {
3011
+ "brandClick": MouseEvent;
3012
+ "navOpen": boolean;
3013
+ }
3014
+ /**
3015
+ * Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
3016
+ * (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
3017
+ * Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
3018
+ * **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
3019
+ * **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
3020
+ * on **`ownerDocument`** so nested dropdowns close before the drawer.
3021
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
3022
+ * resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
3023
+ * content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
3024
+ * **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
3025
+ * Consumers should not add those BEM classes — slot content only.
3026
+ * **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
3027
+ * **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
3028
+ * is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
3029
+ * primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
3030
+ * stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
3031
+ * viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
3032
+ * **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
3033
+ * **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
3034
+ * and emits **`navOpen(false)`** so the two layers do not stack.
3035
+ */
3036
+ interface HTMLXplTopNavElement extends Components.XplTopNav, HTMLStencilElement {
3037
+ addEventListener<K extends keyof HTMLXplTopNavElementEventMap>(type: K, listener: (this: HTMLXplTopNavElement, ev: XplTopNavCustomEvent<HTMLXplTopNavElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3038
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3039
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3040
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3041
+ removeEventListener<K extends keyof HTMLXplTopNavElementEventMap>(type: K, listener: (this: HTMLXplTopNavElement, ev: XplTopNavCustomEvent<HTMLXplTopNavElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3042
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3043
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3044
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3045
+ }
3046
+ var HTMLXplTopNavElement: {
3047
+ prototype: HTMLXplTopNavElement;
3048
+ new (): HTMLXplTopNavElement;
3049
+ };
3050
+ interface HTMLXplTopNavItemElementEventMap {
3051
+ "navItemClick": MouseEvent;
3052
+ }
3053
+ /**
3054
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
3055
+ * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
3056
+ * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
3057
+ * under **`xpl-nav-header-menu`**. That flag is
3058
+ * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
3059
+ * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
3060
+ * without a full reconnect still re-sync. The internal
3061
+ * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
3062
+ * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
3063
+ * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
3064
+ * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
3065
+ * custom trigger content — the component renders the inner wrapper and BEM elements.
3066
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
3067
+ * values even when the page root is light (consistent with **`xpl-top-nav`**).
3068
+ */
3069
+ interface HTMLXplTopNavItemElement extends Components.XplTopNavItem, HTMLStencilElement {
3070
+ addEventListener<K extends keyof HTMLXplTopNavItemElementEventMap>(type: K, listener: (this: HTMLXplTopNavItemElement, ev: XplTopNavItemCustomEvent<HTMLXplTopNavItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3071
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3072
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3073
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3074
+ removeEventListener<K extends keyof HTMLXplTopNavItemElementEventMap>(type: K, listener: (this: HTMLXplTopNavItemElement, ev: XplTopNavItemCustomEvent<HTMLXplTopNavItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3075
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3076
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3077
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3078
+ }
3079
+ var HTMLXplTopNavItemElement: {
3080
+ prototype: HTMLXplTopNavItemElement;
3081
+ new (): HTMLXplTopNavItemElement;
3082
+ };
2376
3083
  interface HTMLXplUtilityBarElementEventMap {
2377
3084
  "navOpen": boolean;
2378
3085
  }
@@ -2424,17 +3131,20 @@ declare global {
2424
3131
  "xpl-input-date": HTMLXplInputDateElement;
2425
3132
  "xpl-input-file": HTMLXplInputFileElement;
2426
3133
  "xpl-input-phone": HTMLXplInputPhoneElement;
3134
+ "xpl-input-search": HTMLXplInputSearchElement;
2427
3135
  "xpl-input-time": HTMLXplInputTimeElement;
2428
3136
  "xpl-large-card": HTMLXplLargeCardElement;
2429
3137
  "xpl-list": HTMLXplListElement;
3138
+ "xpl-list-item": HTMLXplListItemElement;
2430
3139
  "xpl-main-nav": HTMLXplMainNavElement;
2431
3140
  "xpl-modal": HTMLXplModalElement;
3141
+ "xpl-nav-header-menu": HTMLXplNavHeaderMenuElement;
2432
3142
  "xpl-nav-item": HTMLXplNavItemElement;
2433
3143
  "xpl-pagination": HTMLXplPaginationElement;
2434
3144
  "xpl-panel": HTMLXplPanelElement;
2435
3145
  "xpl-popover": HTMLXplPopoverElement;
2436
- "xpl-progress": HTMLXplProgressElement;
2437
3146
  "xpl-progress-bar": HTMLXplProgressBarElement;
3147
+ "xpl-progress-indicator": HTMLXplProgressIndicatorElement;
2438
3148
  "xpl-radio": HTMLXplRadioElement;
2439
3149
  "xpl-secondary-nav": HTMLXplSecondaryNavElement;
2440
3150
  "xpl-select": HTMLXplSelectElement;
@@ -2442,6 +3152,7 @@ declare global {
2442
3152
  "xpl-side-nav-item": HTMLXplSideNavItemElement;
2443
3153
  "xpl-skeleton": HTMLXplSkeletonElement;
2444
3154
  "xpl-slideout": HTMLXplSlideoutElement;
3155
+ "xpl-spotlight": HTMLXplSpotlightElement;
2445
3156
  "xpl-tab": HTMLXplTabElement;
2446
3157
  "xpl-tab-panel": HTMLXplTabPanelElement;
2447
3158
  "xpl-table": HTMLXplTableElement;
@@ -2453,6 +3164,8 @@ declare global {
2453
3164
  "xpl-toggle": HTMLXplToggleElement;
2454
3165
  "xpl-toolbar": HTMLXplToolbarElement;
2455
3166
  "xpl-tooltip": HTMLXplTooltipElement;
3167
+ "xpl-top-nav": HTMLXplTopNavElement;
3168
+ "xpl-top-nav-item": HTMLXplTopNavItemElement;
2456
3169
  "xpl-utility-bar": HTMLXplUtilityBarElement;
2457
3170
  }
2458
3171
  }
@@ -2514,22 +3227,26 @@ declare namespace LocalJSX {
2514
3227
  /**
2515
3228
  * Background color when there is no image src
2516
3229
  */
2517
- "color"?: 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';
3230
+ "color"?: AvatarColor;
2518
3231
  /**
2519
3232
  * Sets a disabled state on the avatar when set to true
2520
3233
  * @default false
2521
3234
  */
2522
3235
  "disabled"?: boolean;
3236
+ /**
3237
+ * When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }.
3238
+ */
3239
+ "groupData"?: AvatarGroupItem[] | string;
2523
3240
  /**
2524
3241
  * The URL if the avatar should be hyperlinked
2525
3242
  */
2526
3243
  "href"?: string;
2527
3244
  /**
2528
- * Alt text for the image if there is an image src
3245
+ * Alt text for the image; also used for initials when no image and no slot.
2529
3246
  */
2530
3247
  "name"?: string;
2531
3248
  /**
2532
- * Size of the avatar
3249
+ * Size of the avatar (and of each avatar in a group).
2533
3250
  */
2534
3251
  "size"?: 'md' | 'sm';
2535
3252
  /**
@@ -2537,13 +3254,22 @@ declare namespace LocalJSX {
2537
3254
  */
2538
3255
  "src"?: string;
2539
3256
  /**
2540
- * Color styles for the dot indicator to indicate varied states
3257
+ * Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`. **Legacy
3258
+ * @deprecated :** `active`, `warning`, and `inactive` still map to `green`, `red`, and `gray` for existing consumers. Prefer palette names; legacy values are scheduled for removal in the next **major** release.
3259
+ */
3260
+ "status"?: AvatarStatus;
3261
+ /**
3262
+ * Secondary text shown when `variant` is `with-text` (e.g. email).
2541
3263
  */
2542
- "status"?: 'active' | 'warning' | 'inactive';
3264
+ "subText"?: string;
2543
3265
  /**
2544
3266
  * Where to open the URL chosen for the `href` prop: `_self` (default), `_blank`, `_parent`, or `_top`
2545
3267
  */
2546
3268
  "target"?: string;
3269
+ /**
3270
+ * Optional layout: `profile` (large profile sizes), `group` (stacked faces + `groupData`; `status` not shown), `with-text` (avatar with `name` / `subText` beside it). Omit for the default single avatar.
3271
+ */
3272
+ "variant"?: AvatarVariant;
2547
3273
  }
2548
3274
  interface XplBackdrop {
2549
3275
  /**
@@ -2643,6 +3369,16 @@ declare namespace LocalJSX {
2643
3369
  interface XplBreadcrumbs {
2644
3370
  }
2645
3371
  interface XplButton {
3372
+ /**
3373
+ * Attributes to apply to the inner native `<button>` (e.g., tab a11y wiring). Use this instead of setting `id` / `role` / `aria-*` on the host when the inner control is the element that needs them (e.g., WAI-ARIA composite widgets).
3374
+ */
3375
+ "controlAttrs"?: {
3376
+ id?: string;
3377
+ role?: string;
3378
+ 'aria-controls'?: string;
3379
+ 'aria-selected'?: 'true' | 'false';
3380
+ 'aria-current'?: string;
3381
+ };
2646
3382
  /**
2647
3383
  * Whether button should be disabled
2648
3384
  * @default false
@@ -2773,6 +3509,11 @@ declare namespace LocalJSX {
2773
3509
  "onDateSelected"?: (event: XplCalendarCustomEvent<string | string[]>) => void;
2774
3510
  }
2775
3511
  interface XplCheckbox {
3512
+ /**
3513
+ * Accessible name for the native checkbox input (sets `aria-label` on the `input`). Use when there is no visible label text in the default slot. Defaults to `''`; empty or whitespace-only values omit `aria-label` on the input so a visible `<label>` remains the sole name source.
3514
+ * @default ''
3515
+ */
3516
+ "ariaLabel"?: string;
2776
3517
  /**
2777
3518
  * Whether the input is checked
2778
3519
  */
@@ -2932,6 +3673,10 @@ declare namespace LocalJSX {
2932
3673
  * @default true
2933
3674
  */
2934
3675
  "closeOnSelect"?: boolean;
3676
+ /**
3677
+ * When `anchorToTrigger` is true, additional placements to try when the default `placement` does not fit (passed to Floating UI `flip`).
3678
+ */
3679
+ "flipFallbackPlacements"?: Placement[];
2935
3680
  /**
2936
3681
  * text to display as heading
2937
3682
  * @default false
@@ -2950,6 +3695,11 @@ declare namespace LocalJSX {
2950
3695
  * options that are listed
2951
3696
  */
2952
3697
  "options"?: DropdownItem[];
3698
+ /**
3699
+ * Floating UI placement when `anchorToTrigger` is true (e.g. `bottom-start`, `top-start`).
3700
+ * @default 'bottom-start'
3701
+ */
3702
+ "placement"?: Placement;
2953
3703
  /**
2954
3704
  * whether selection should be made when focusing on interactive element
2955
3705
  * @default false
@@ -3116,7 +3866,12 @@ declare namespace LocalJSX {
3116
3866
  */
3117
3867
  "allowCustomOption"?: boolean;
3118
3868
  /**
3119
- * Hint for form autofill feature Applies to text, password, number.
3869
+ * Accessible name for search inputs when there is no visible `label` (after trim). Ignored for naming when a visible label is shown. Defaults to `''`; whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed when there is no visible label. Applies to search inputs (`type="search"`).
3870
+ * @default ''
3871
+ */
3872
+ "ariaLabel"?: string;
3873
+ /**
3874
+ * Hint for form autofill feature Applies to text, password, number, and search inputs.
3120
3875
  */
3121
3876
  "autocomplete"?: string;
3122
3877
  /**
@@ -3209,15 +3964,19 @@ declare namespace LocalJSX {
3209
3964
  */
3210
3965
  "onFocusEvent"?: (event: XplInputCustomEvent<FocusEvent>) => void;
3211
3966
  /**
3212
- * Event that emits the current value of the input Applies to text like inputs only.
3967
+ * Event that emits the current value of the input Applies to text-like inputs and search inputs.
3213
3968
  */
3214
3969
  "onInputEvent"?: (event: XplInputCustomEvent<string>) => void;
3215
3970
  /**
3216
- * Event that emits the current value of the input
3971
+ * Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the internal search form). `event.detail` is the trimmed query string. Applies to search inputs (`type="search"`).
3972
+ */
3973
+ "onSearch"?: (event: XplInputCustomEvent<string>) => void;
3974
+ /**
3975
+ * Event that emits the current value of the input (including search fields).
3217
3976
  */
3218
3977
  "onValueChange"?: (event: XplInputCustomEvent<string>) => void;
3219
3978
  /**
3220
- * Placeholder text that appears when the field has no value Applies to text, password, number, and date inputs.
3979
+ * Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs.
3221
3980
  */
3222
3981
  "placeholder"?: string;
3223
3982
  /**
@@ -3233,13 +3992,17 @@ declare namespace LocalJSX {
3233
3992
  */
3234
3993
  "preferredCountries"?: string[];
3235
3994
  /**
3236
- * Whether the input is editable Applies to text, password, number, and date inputs.
3995
+ * Whether the input is editable Applies to text, password, number, date, and search inputs.
3237
3996
  */
3238
3997
  "readonly"?: boolean;
3239
3998
  /**
3240
3999
  * Whether the input is required Applies to all input types.
3241
4000
  */
3242
4001
  "required"?: boolean;
4002
+ /**
4003
+ * Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`).
4004
+ */
4005
+ "shape"?: 'rounded' | 'box';
3243
4006
  /**
3244
4007
  * The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs.
3245
4008
  */
@@ -3253,9 +4016,17 @@ declare namespace LocalJSX {
3253
4016
  * The type of form control
3254
4017
  * @default 'text'
3255
4018
  */
3256
- "type"?: 'date' | 'time' | 'text' | 'number' | 'password' | 'file' | 'color' | 'phone';
4019
+ "type"?: | 'date'
4020
+ | 'time'
4021
+ | 'text'
4022
+ | 'number'
4023
+ | 'password'
4024
+ | 'file'
4025
+ | 'color'
4026
+ | 'phone'
4027
+ | 'search';
3257
4028
  /**
3258
- * Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and date inputs.
4029
+ * Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs.
3259
4030
  */
3260
4031
  "value"?: string;
3261
4032
  }
@@ -3459,6 +4230,90 @@ declare namespace LocalJSX {
3459
4230
  */
3460
4231
  "value"?: string;
3461
4232
  }
4233
+ interface XplInputSearch {
4234
+ /**
4235
+ * Accessible name when there is no visible label from the parent; maps to `aria-label` on the input. When the parent provides a visible label, the input is named by `<label for="…">` — this prop is ignored for naming. Empty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed.
4236
+ * @default 'Search'
4237
+ */
4238
+ "ariaLabel"?: string;
4239
+ /**
4240
+ * Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics.
4241
+ * @default 'off'
4242
+ */
4243
+ "autocomplete"?: string;
4244
+ /**
4245
+ * Disables the field and clear control.
4246
+ * @default false
4247
+ */
4248
+ "disabled"?: boolean;
4249
+ /**
4250
+ * Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`).
4251
+ */
4252
+ "errorMessageId"?: string;
4253
+ /**
4254
+ * Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`.
4255
+ * @default false
4256
+ */
4257
+ "hasError"?: boolean;
4258
+ /**
4259
+ * When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input.
4260
+ * @default false
4261
+ */
4262
+ "hasVisibleLabel"?: boolean;
4263
+ /**
4264
+ * Associates the control with the parent `xpl-input` label (`for` / `id`).
4265
+ */
4266
+ "inputId": string;
4267
+ /**
4268
+ * Form field `name` on the native input.
4269
+ */
4270
+ "name"?: string;
4271
+ /**
4272
+ * Emitted when the inner control loses focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types).
4273
+ */
4274
+ "onBlurEvent"?: (event: XplInputSearchCustomEvent<FocusEvent>) => void;
4275
+ /**
4276
+ * Emitted when the inner control receives focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types).
4277
+ */
4278
+ "onFocusEvent"?: (event: XplInputSearchCustomEvent<FocusEvent>) => void;
4279
+ /**
4280
+ * Fired on every input change (typing, paste) and when the value is cleared — mirrors `xpl-input` text fields. When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host.
4281
+ */
4282
+ "onInputEvent"?: (event: XplInputSearchCustomEvent<string>) => void;
4283
+ /**
4284
+ * Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the inner search form). `event.detail` is the trimmed query string. When nested under `xpl-input type="search"`, the parent listens with `onSearch` and re-emits so the canonical `search` `@Event` stays on `xpl-input`.
4285
+ */
4286
+ "onSearch"?: (event: XplInputSearchCustomEvent<string>) => void;
4287
+ /**
4288
+ * Fired on every input change (typing, paste) and when the value is cleared. `event.detail` is the raw `value` string (not trimmed). When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host.
4289
+ */
4290
+ "onValueChange"?: (event: XplInputSearchCustomEvent<string>) => void;
4291
+ /**
4292
+ * Placeholder shown when the value is empty.
4293
+ * @default 'Search'
4294
+ */
4295
+ "placeholder"?: string;
4296
+ /**
4297
+ * Whether the input is editable.
4298
+ * @default false
4299
+ */
4300
+ "readonly"?: boolean;
4301
+ /**
4302
+ * Whether the input is required.
4303
+ * @default false
4304
+ */
4305
+ "required"?: boolean;
4306
+ /**
4307
+ * Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).
4308
+ * @default 'rounded'
4309
+ */
4310
+ "shape"?: 'rounded' | 'box';
4311
+ /**
4312
+ * Current value (controlled-friendly).
4313
+ * @default ''
4314
+ */
4315
+ "value"?: string;
4316
+ }
3462
4317
  interface XplInputTime {
3463
4318
  /**
3464
4319
  * For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs.
@@ -3543,10 +4398,114 @@ declare namespace LocalJSX {
3543
4398
  }
3544
4399
  interface XplList {
3545
4400
  /**
3546
- * `items` should be an array of objects with the following signature: { avatar?: string; // The URL of the avatar, or the placeholder initials (ex. "SPD"). avatars?: string[]; // The URLs of multiple avatars to be displayed in a group on the right. badges?: string[] | { // An array of strings or badge-like objects to be displayed as badges dot?: boolean; // in a group on the right. See <xpl-badge> for more details. text: string; variant?: string; }[]; href?: string; // A URL, if this list item is meant to link somewhere. title: string; // The text to be displayed for the list item. metadata?: string[] | { // An array of strings or strings with icons (reference the allowed icon: string; // Apollo icons) to be displayed as metadata below the title. text: string; }[]; subtext?: string; // Subtext to be displayed on the right. } - Note that you should *only use one of* `avatars`, `badges`, or `subtext`, to avoid cluttering the right-hand side of the list item.
4401
+ * Array of list items to render. Each item should follow the ListItem interface. **Deprecated.** Use slot-based xpl-list-item children instead.
3547
4402
  * @default []
3548
4403
  */
3549
4404
  "items"?: ListItem[];
4405
+ /**
4406
+ * Accessible name for the list, exposed as `aria-label` on the host when set. Use when the list has no visible heading. Ignored when `labelledBy` is set (see `labelledBy` for precedence).
4407
+ */
4408
+ "label"?: string;
4409
+ /**
4410
+ * Element id(s) that label this list (space-separated), exposed as `aria-labelledby` when set. When set, `label` is not applied as `aria-label` so the list has a single naming source.
4411
+ */
4412
+ "labelledBy"?: string;
4413
+ /**
4414
+ * Emitted when an item is selected.
4415
+ */
4416
+ "onItemSelect"?: (event: XplListCustomEvent<{ itemId?: string }>) => void;
4417
+ /**
4418
+ * Emitted when the order of items changes (after the DOM has been updated). `orderedItemIds` lists **visible** row ids only (hidden rows excluded).
4419
+ */
4420
+ "onOrderChange"?: (event: XplListCustomEvent<XplListOrderChangeDetail>) => void;
4421
+ /**
4422
+ * When true, enables reorder UI and behavior for **slot-based** child rows (drag handle + keyboard). Legacy rows rendered from the deprecated `items` prop do **not** show a drag handle; migrate to slots if reorder is required.
4423
+ * @default false
4424
+ */
4425
+ "reorderable"?: boolean;
4426
+ /**
4427
+ * Determines if this list is selectable (shows `xpl-radio` per row in a shared group). Press Escape while focus is on the **selected** row to clear selection (same as `clearSelection()`).
4428
+ * @default false
4429
+ */
4430
+ "selectable"?: boolean;
4431
+ }
4432
+ interface XplListItem {
4433
+ /**
4434
+ * Whether the item is disabled.
4435
+ * @default false
4436
+ */
4437
+ "disabled"?: boolean;
4438
+ /**
4439
+ * Whether to show the item in an error state.
4440
+ * @default false
4441
+ */
4442
+ "error"?: boolean;
4443
+ /**
4444
+ * When true, the row is not shown and does not participate in visible-only list behavior (e.g. `orderChange` / `orderedItemIds`, reorder targets). Use for filtering, conditional display, or keeping stable `item-id` while the row is off-screen. See `xpl-list` readme “Hidden rows”. **Accessibility:** Renders an empty host with the native `hidden` attribute only (no `role="listitem"`), consistent with the row not participating as a list item while hidden.
4445
+ * @default false
4446
+ */
4447
+ "hidden"?: boolean;
4448
+ /**
4449
+ * URL for link behavior. When provided, the entire row becomes clickable. Clicks on `actions` or `avatar` slots are prevented from triggering navigation.
4450
+ */
4451
+ "href"?: string;
4452
+ /**
4453
+ * Optional item data for prop-based rendering. When provided, this takes precedence over slotted content and renders using the legacy ListItem interface. **Deprecated.** Prefer slot-based composition (named slots on `xpl-list-item`).
4454
+ */
4455
+ "item"?: ListItem;
4456
+ /**
4457
+ * Unique identifier for this item. Used for selection and drag/drop. Mutable so the host can sync from `item-id` / `id` in `componentWillLoad` without breaking one-way data flow.
4458
+ */
4459
+ "itemId"?: string;
4460
+ /**
4461
+ * When set by the parent, indicates this item is the active keyboard reorder item.
4462
+ * @default false
4463
+ */
4464
+ "keyboardActive"?: boolean;
4465
+ /**
4466
+ * Emitted when a drag operation ends on this item (after drop or cancel).
4467
+ */
4468
+ "onItemDragEnd"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
4469
+ /**
4470
+ * Emitted when drag starts on this item.
4471
+ */
4472
+ "onItemDragStart"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
4473
+ /**
4474
+ * Emitted when an item is dropped on this item.
4475
+ */
4476
+ "onItemDrop"?: (event: XplListItemCustomEvent<{ itemId?: string; item: HTMLElement }>) => void;
4477
+ /**
4478
+ * Emitted when the item is selected (radio change).
4479
+ */
4480
+ "onItemSelect"?: (event: XplListItemCustomEvent<{ itemId?: string }>) => void;
4481
+ /**
4482
+ * Name attribute for radio inputs (shared across selectable items in a list).
4483
+ */
4484
+ "radioName"?: string;
4485
+ /**
4486
+ * Whether this item is reorderable (shows a drag handle in **slot-based** layout). When the deprecated `item` prop is used, legacy markup has **no** reorder handle even if this is true.
4487
+ * @default false
4488
+ */
4489
+ "reorderable"?: boolean;
4490
+ /**
4491
+ * Whether this item is selectable (shows `xpl-radio` in a shared group).
4492
+ * @default false
4493
+ */
4494
+ "selectable"?: boolean;
4495
+ /**
4496
+ * Whether this item is selected (radio checked state).
4497
+ * @default false
4498
+ */
4499
+ "selected"?: boolean;
4500
+ /**
4501
+ * Whether to show a divider below the item.
4502
+ * @default false
4503
+ */
4504
+ "showDivider"?: boolean;
4505
+ /**
4506
+ * Optional badge to display next to the title (dot badge). Only used when `item` prop is not provided (slot mode). Matches `xpl-badge` variant values (e.g. purple, green, red).
4507
+ */
4508
+ "titleBadgeVariant"?: BadgeVariantProp1;
3550
4509
  }
3551
4510
  interface XplMainNav {
3552
4511
  /**
@@ -3580,6 +4539,34 @@ declare namespace LocalJSX {
3580
4539
  */
3581
4540
  "variant"?: 'default' | 'warning';
3582
4541
  }
4542
+ /**
4543
+ * Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
4544
+ * Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
4545
+ * **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
4546
+ * **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
4547
+ * profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
4548
+ * **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
4549
+ * **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
4550
+ * duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
4551
+ * Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
4552
+ * Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
4553
+ * **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
4554
+ * Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
4555
+ * deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
4556
+ * **`slot`** mutations without stacking uncancellable microtasks.
4557
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
4558
+ * values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
4559
+ */
4560
+ interface XplNavHeaderMenu {
4561
+ /**
4562
+ * Email address shown below the username.
4563
+ */
4564
+ "email"?: string;
4565
+ /**
4566
+ * Display name shown in the profile block.
4567
+ */
4568
+ "username"?: string;
4569
+ }
3583
4570
  interface XplNavItem {
3584
4571
  /**
3585
4572
  * @property {boolean} - Whether or not the item should control the main nav state on click
@@ -3637,7 +4624,7 @@ declare namespace LocalJSX {
3637
4624
  */
3638
4625
  "accent"?: 'none' | 'primary' | 'secondary' | 'positive' | 'negative' | 'highlight';
3639
4626
  /**
3640
- * Padding density applied to the content area. Responsive: scales down at tablet and mobile breakpoints. - `default` – 24 px desktop / 16 px tablet+mobile - `tight` – 16 px desktop / 8 px tablet+mobile - `loose` – 40 px desktop / 32 px tablet / 24 px mobile
4627
+ * Padding density applied to the content area. (default and tight keep desktop padding through tablet; mobile ≤480px). - `default` – 24 px desktop & tablet / 16 px mobile - `tight` – 16 px desktop & tablet / 8 px mobile - `loose` – 40 px desktop / 32 px tablet / 24 px mobile
3641
4628
  * @default 'default'
3642
4629
  */
3643
4630
  "padding"?: 'default' | 'tight' | 'loose';
@@ -3668,17 +4655,6 @@ declare namespace LocalJSX {
3668
4655
  */
3669
4656
  "position"?: PopoverPosition;
3670
4657
  }
3671
- interface XplProgress {
3672
- /**
3673
- * Current step, is the index of the current active step
3674
- * @default 0
3675
- */
3676
- "currentStep"?: number;
3677
- /**
3678
- * The steps is an array of the steps name.
3679
- */
3680
- "steps"?: string[];
3681
- }
3682
4658
  interface XplProgressBar {
3683
4659
  /**
3684
4660
  * The helper text displayed below the progress bar (recommended for error state)
@@ -3709,6 +4685,32 @@ declare namespace LocalJSX {
3709
4685
  */
3710
4686
  "variant"?: 'default' | 'success' | 'error' | 'indeterminate';
3711
4687
  }
4688
+ interface XplProgressIndicator {
4689
+ /**
4690
+ * Current step index. Steps with index < currentStep are "finished", the step at currentStep is "active", and steps beyond are "waiting". Set to steps.length to mark all steps as finished. Automatically clamped to [0, steps.length].
4691
+ * @default 0
4692
+ */
4693
+ "currentStep"?: number;
4694
+ /**
4695
+ * Layout direction - 'horizontal' or 'vertical'
4696
+ * @default 'horizontal'
4697
+ */
4698
+ "layout"?: 'horizontal' | 'vertical';
4699
+ /**
4700
+ * Whether to show step labels
4701
+ * @default true
4702
+ */
4703
+ "showLabels"?: boolean;
4704
+ /**
4705
+ * Whether to show step numbers inside circles
4706
+ * @default true
4707
+ */
4708
+ "showNumbers"?: boolean;
4709
+ /**
4710
+ * The steps is an array of the steps name.
4711
+ */
4712
+ "steps"?: string[];
4713
+ }
3712
4714
  interface XplRadio {
3713
4715
  /**
3714
4716
  * Whether the input is "on"
@@ -3767,6 +4769,15 @@ declare namespace LocalJSX {
3767
4769
  * Whether the field is disabled
3768
4770
  */
3769
4771
  "disabled"?: boolean;
4772
+ /**
4773
+ * Additional placements to try for the options panel when the default `dropdownPlacement` does not fit. Passed to `xpl-dropdown` / Floating UI `flip`.
4774
+ */
4775
+ "dropdownFlipFallbackPlacements"?: Placement[];
4776
+ /**
4777
+ * Initial Floating UI placement for the options panel (e.g. `top-start`, `bottom-start`). Forwarded to the inner `xpl-dropdown` when the menu is open.
4778
+ * @default 'bottom-start'
4779
+ */
4780
+ "dropdownPlacement"?: Placement;
3770
4781
  /**
3771
4782
  * If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message.
3772
4783
  */
@@ -3941,9 +4952,113 @@ declare namespace LocalJSX {
3941
4952
  */
3942
4953
  "variant"?: 'default' | 'warning';
3943
4954
  }
4955
+ interface XplSpotlight {
4956
+ /**
4957
+ * Footer action layout. `default` and `dual` both render the standard Back/Next layout, while `single` renders a single acknowledgement CTA (e.g. "Got it!"). Only applies when `showActions` is `true`.
4958
+ * @default 'default'
4959
+ */
4960
+ "actionLayout"?: SpotlightActionLayout;
4961
+ /**
4962
+ * Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.
4963
+ * @default 'top-left'
4964
+ */
4965
+ "anchorPosition"?: SpotlightAnchorPosition;
4966
+ /**
4967
+ * Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph).
4968
+ */
4969
+ "body"?: string;
4970
+ /**
4971
+ * Current step index (1-based). Used with `totalSteps` for the step label and for disabling default Back/Next when `showSteps` is true.
4972
+ * @default 1
4973
+ */
4974
+ "currentStep"?: number;
4975
+ /**
4976
+ * Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span).
4977
+ */
4978
+ "heading"?: string;
4979
+ /**
4980
+ * Whether to show the dismiss (close) control.
4981
+ * @default true
4982
+ */
4983
+ "isDismissible"?: boolean;
4984
+ /**
4985
+ * Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden.
4986
+ * @default true
4987
+ */
4988
+ "isOpen"?: boolean;
4989
+ /**
4990
+ * Emitted when the dismiss control is activated or Escape is pressed (when dismissible).
4991
+ */
4992
+ "onDismiss"?: (event: XplSpotlightCustomEvent<void>) => void;
4993
+ /**
4994
+ * Emitted when the primary action control is activated (default: Next).
4995
+ */
4996
+ "onPrimaryAction"?: (event: XplSpotlightCustomEvent<void>) => void;
4997
+ /**
4998
+ * Emitted when the secondary action control is activated (default: Back).
4999
+ */
5000
+ "onSecondaryAction"?: (event: XplSpotlightCustomEvent<void>) => void;
5001
+ /**
5002
+ * Emitted when the target indicator is clicked. Consumers typically toggle `isOpen` in response.
5003
+ */
5004
+ "onTargetClick"?: (event: XplSpotlightCustomEvent<void>) => void;
5005
+ /**
5006
+ * Label used for the default primary action button. Only applies when `showActions` is `true`.
5007
+ * @default 'Next'
5008
+ */
5009
+ "primaryActionLabel"?: string;
5010
+ /**
5011
+ * Label used for the default secondary action button. Only applies when `showActions` is `true`.
5012
+ * @default 'Back'
5013
+ */
5014
+ "secondaryActionLabel"?: string;
5015
+ /**
5016
+ * Whether to show the actions row (primary / secondary and optional step counter). When `false`, the spotlight has no action buttons — useful for single-step informational callouts that rely solely on the dismiss control.
5017
+ * @default true
5018
+ */
5019
+ "showActions"?: boolean;
5020
+ /**
5021
+ * When true, the media region is shown. Slotted `image` content is rendered when present; otherwise the built-in placeholder UI is shown. When false, the entire media block is hidden.
5022
+ * @default true
5023
+ */
5024
+ "showImage"?: boolean;
5025
+ /**
5026
+ * Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether default Back/Next use step-based disabled state.
5027
+ * @default true
5028
+ */
5029
+ "showSteps"?: boolean;
5030
+ /**
5031
+ * CSS selector for the element this spotlight anchors to. When set, placement uses Floating UI (`computePosition` with `strategy: 'fixed'`, plus `flip`, `shift`, `offset`) and `autoUpdate` for scroll/resize. The host receives `left` / `top` and the `xpl-spotlight--anchored` class. Invalid selectors are ignored; layout falls back to `anchor-position`.
5032
+ */
5033
+ "target"?: string;
5034
+ /**
5035
+ * Total number of steps (1-based upper bound). Used with `currentStep` for the step label and for disabling default Back/Next when `showSteps` is true.
5036
+ * @default 1
5037
+ */
5038
+ "totalSteps"?: number;
5039
+ }
3944
5040
  interface XplTab {
3945
5041
  /**
3946
- * Event that emits the target of the selected tab
5042
+ * Disables this tab (pill or underline).
5043
+ * @default false
5044
+ */
5045
+ "disabled"?: boolean;
5046
+ /**
5047
+ * Set when the parent `xpl-tabs` has `disabled` (group-disabled).
5048
+ * @default false
5049
+ */
5050
+ "groupDisabled"?: boolean;
5051
+ /**
5052
+ * Optional icon name for segment-style pills (`type="segment"` on parent `xpl-tabs`). Ignored for default tabs.
5053
+ */
5054
+ "icon"?: string;
5055
+ /**
5056
+ * Icon position for segment-style pills.
5057
+ * @default 'start'
5058
+ */
5059
+ "iconPosition"?: 'start' | 'end';
5060
+ /**
5061
+ * Emitted when this tab is activated (if not disabled). The event `detail` is this tab’s `target` string. Parent `xpl-tabs` listens and updates selection; use `tabChange` on `xpl-tabs` for the group-level event.
3947
5062
  */
3948
5063
  "onTabChange"?: (event: XplTabCustomEvent<string>) => void;
3949
5064
  /**
@@ -4052,15 +5167,25 @@ declare namespace LocalJSX {
4052
5167
  "width"?: number;
4053
5168
  }
4054
5169
  interface XplTabs {
5170
+ /**
5171
+ * Disables the whole tab group (headings, mobile select, and segment pills).
5172
+ * @default false
5173
+ */
5174
+ "disabled"?: boolean;
4055
5175
  /**
4056
5176
  * Whether to make the tabs full width
4057
5177
  * @default false
4058
5178
  */
4059
5179
  "fullWidth"?: boolean;
4060
5180
  /**
4061
- * Event that emits the target of the selected tab
5181
+ * Emitted when the selected tab changes (click, keyboard, or mobile `xpl-select`). The event `detail` is the selected tab’s `target` string. Always dispatched from this host (including after heading clicks) so `event.target` is consistent for listeners on `xpl-tabs` or bubbling ancestors.
4062
5182
  */
4063
5183
  "onTabChange"?: (event: XplTabsCustomEvent<string>) => void;
5184
+ /**
5185
+ * Visual and layout variant: classic underline tabs or segment (pill) controls.
5186
+ * @default 'tabs'
5187
+ */
5188
+ "type"?: 'tabs' | 'segment';
4064
5189
  /**
4065
5190
  * The selected tab target value, defaults to the first tab
4066
5191
  */
@@ -4068,9 +5193,46 @@ declare namespace LocalJSX {
4068
5193
  }
4069
5194
  interface XplTag {
4070
5195
  /**
4071
- * Callback function that is called when tag text or `x` icon is clicked
5196
+ * Whether the tag is disabled
5197
+ * @default false
5198
+ */
5199
+ "disabled"?: boolean;
5200
+ /**
5201
+ * Whether the tag shows a dismiss button
5202
+ * @default true
5203
+ */
5204
+ "dismissible"?: boolean;
5205
+ /**
5206
+ * When true, the tag label uses native HTML5 drag (the inner label is the drag source). Named `isDraggable` so the Stencil prop does not collide with the native `HTMLElement.draggable` API. `reflect: false` avoids syncing a `draggable` attribute onto the host; the inner label remains the drag source. Host `onDragStart` still suppresses stray native drags from host chrome.
5207
+ * @default false
5208
+ */
5209
+ "isDraggable"?: boolean;
5210
+ /**
5211
+ * Emitted when the tag is dismissed (content click when `isDraggable` is false, or dismiss button click).
5212
+ * @deprecated Use `tagRemove` for dismiss button clicks only. The `close` event will be removed in a future major version.
5213
+ */
5214
+ "onClose"?: (event: XplTagCustomEvent<void>) => void;
5215
+ /**
5216
+ * Emitted when a drag operation ends. `event.detail`: `{ tagId?, dropped, originalEvent }`. `dropped` is `true` when `dataTransfer.dropEffect === 'move'`. `originalEvent` is the native `DragEvent`; browsers may clear `dataTransfer` after the synchronous handler runs — do not read `originalEvent.dataTransfer.getData(...)` asynchronously.
4072
5217
  */
4073
- "onClose"?: (event: XplTagCustomEvent<any>) => void;
5218
+ "onTagDragEnd"?: (event: XplTagCustomEvent<TagDragEndDetail>) => void;
5219
+ /**
5220
+ * Emitted when a drag operation starts (native `dragstart` on the inner label). `event.detail`: `{ tagId?, content, originalEvent }`. `originalEvent` is the native `DragEvent`; browsers may clear `dataTransfer` after the synchronous handler runs — do not read `originalEvent.dataTransfer.getData(...)` asynchronously.
5221
+ */
5222
+ "onTagDragStart"?: (event: XplTagCustomEvent<TagDragStartDetail>) => void;
5223
+ /**
5224
+ * Emitted when the tag dismiss (×) button is clicked
5225
+ */
5226
+ "onTagRemove"?: (event: XplTagCustomEvent<void>) => void;
5227
+ /**
5228
+ * The size of the tag
5229
+ * @default 'default'
5230
+ */
5231
+ "size"?: 'default' | 'sm';
5232
+ /**
5233
+ * Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail and written to `dataTransfer` as `application/x-tag-id`.
5234
+ */
5235
+ "tagId"?: string;
4074
5236
  }
4075
5237
  interface XplToast {
4076
5238
  /**
@@ -4159,6 +5321,111 @@ declare namespace LocalJSX {
4159
5321
  */
4160
5322
  "text"?: string;
4161
5323
  }
5324
+ /**
5325
+ * Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
5326
+ * (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
5327
+ * Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
5328
+ * **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
5329
+ * **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
5330
+ * on **`ownerDocument`** so nested dropdowns close before the drawer.
5331
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
5332
+ * resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
5333
+ * content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
5334
+ * **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
5335
+ * Consumers should not add those BEM classes — slot content only.
5336
+ * **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
5337
+ * **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
5338
+ * is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
5339
+ * primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
5340
+ * stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
5341
+ * viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
5342
+ * **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
5343
+ * **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
5344
+ * and emits **`navOpen(false)`** so the two layers do not stack.
5345
+ */
5346
+ interface XplTopNav {
5347
+ /**
5348
+ * Destination URL for the brand control when using native navigation (**`<a href>`**). When unset, the brand is a **`role="button"`** control and **`brandClick`** fires on activation instead.
5349
+ */
5350
+ "brandHref"?: string;
5351
+ /**
5352
+ * Optional image URL for the brand mark (leading the brand row, before **`brand-name`** text). When set, renders **`<img class="xpl-top-nav__brand-logo">`** and ignores **`slot="brand-logo"`** for the mark. When unset, use **`slot="brand-logo"`** for custom logo content.
5353
+ */
5354
+ "brandLogo"?: string;
5355
+ /**
5356
+ * Visible product / app name next to **`brand-logo`**. Omit for logo-only; provide **`brand-logo`** and/or this string to show the built-in brand row (**`left-aside`** is then primary nav links only).
5357
+ */
5358
+ "brandName"?: string;
5359
+ /**
5360
+ * Label text for the built-in account menu trigger (shown **before** the **`chevron-down`** icon) when **`slot="user-menu"`** is present and **`slot="user-menu-trigger"`** is not used. When empty or whitespace-only, the trigger shows only the chevron and uses **`aria-label="Open account menu"`** on the button.
5361
+ */
5362
+ "childAccountLabel"?: string;
5363
+ /**
5364
+ * Accessible name for the `<nav>` landmark (maps to `aria-label`). Use a unique label when the page has multiple navigation regions (e.g. side nav + top nav). When unset, defaults to `top-navigation-bar`.
5365
+ */
5366
+ "label"?: string;
5367
+ /**
5368
+ * When true, renders the navigation control (hamburger) for toggling the left slot on small viewports. The control is **hidden from the Tailwind `md` breakpoint up**; collapse/show for **`left-aside`** uses **`max-width: calc(theme('screens.md') - 1px)`** in **`top-nav.css`** (Figma’s 767px at a 16px root and default **`screens.md`**). Reflected to the **`nav-control`** attribute so host updates (framework props) re-run **`@Watch`**: drawer state and document **Escape** handling stay in sync, the host **`xpl-top-nav--nav-control`** class toggles for **`top-nav.css`**, and **`navOpen(false)`** is emitted if **`nav-control`** is cleared while the drawer was open.
5369
+ */
5370
+ "navControl"?: boolean;
5371
+ /**
5372
+ * Emitted when the brand control is activated and **`brandHref`** is **not** set (SPA / in-app navigation). **`detail`** is the **`MouseEvent`** from **`xpl-top-nav-item`** **`navItemClick`**. Not emitted when **`brandHref`** is set (use native link navigation).
5373
+ */
5374
+ "onBrandClick"?: (event: XplTopNavCustomEvent<MouseEvent>) => void;
5375
+ /**
5376
+ * Emitted when the mobile nav open state changes: hamburger toggle, or **Escape** closing the drawer (when **`nav-control`** is set and the bar was open). Detail is the new open state (**`true`** = open, **`false`** = closed).
5377
+ */
5378
+ "onNavOpen"?: (event: XplTopNavCustomEvent<boolean>) => void;
5379
+ }
5380
+ /**
5381
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
5382
+ * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
5383
+ * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
5384
+ * under **`xpl-nav-header-menu`**. That flag is
5385
+ * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
5386
+ * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
5387
+ * without a full reconnect still re-sync. The internal
5388
+ * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
5389
+ * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
5390
+ * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
5391
+ * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
5392
+ * custom trigger content — the component renders the inner wrapper and BEM elements.
5393
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
5394
+ * values even when the page root is light (consistent with **`xpl-top-nav`**).
5395
+ */
5396
+ interface XplTopNavItem {
5397
+ /**
5398
+ * When true, adds **`xpl-top-nav-item--active`** for persistent accent styling (e.g. link color on the bar, or chrome inside **`xpl-nav-header-menu`**). Separate from **`selected`**, which sets **`aria-current="page"`** and **`--selected`**. Use both when the design needs “current page” semantics plus the active visual treatment.
5399
+ * @default false
5400
+ */
5401
+ "active"?: boolean;
5402
+ /**
5403
+ * If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
5404
+ */
5405
+ "href"?: string;
5406
+ /**
5407
+ * Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
5408
+ * @default ''
5409
+ */
5410
+ "icon"?: string;
5411
+ /**
5412
+ * Accessible name for the inner control when there is no **`label`** and no default-slot text (e.g. icon-only). If omitted in that case, **`aria-label`** defaults to **`Navigation item`**. Ignored when **`label`** or default-slot content supplies a visible name.
5413
+ */
5414
+ "itemAriaLabel"?: string;
5415
+ /**
5416
+ * Text label. If omitted, use the default slot for custom trigger content. Long labels use **`text-ellipsis`** on **`.xpl-top-nav-item__label`** (see `top-nav.css`); **`title`** is set to the full string for hover tooltips when the visual line clips.
5417
+ */
5418
+ "label"?: string;
5419
+ /**
5420
+ * Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`** (native for **Enter** on **`<a href>`**, or programmatic **`.click()`** for **Space** on links). **`detail`** is the **`MouseEvent`** from that activation (synthetic only for **`<div role="button">`** via **Enter** / **Space**). Not emitted when **`slot="dropdown"`** is used.
5421
+ */
5422
+ "onNavItemClick"?: (event: XplTopNavItemCustomEvent<MouseEvent>) => void;
5423
+ /**
5424
+ * When true, sets **`aria-current="page"`** and selected styling.
5425
+ * @default false
5426
+ */
5427
+ "selected"?: boolean;
5428
+ }
4162
5429
  interface XplUtilityBar {
4163
5430
  /**
4164
5431
  * @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
@@ -4189,14 +5456,17 @@ declare namespace LocalJSX {
4189
5456
  "isNavOpenAtStartup": boolean;
4190
5457
  }
4191
5458
  interface XplAvatarAttributes {
4192
- "color": 'green' | 'yellow' | 'pink' | 'primary' | 'secondary';
5459
+ "color": AvatarColor;
4193
5460
  "disabled": boolean;
5461
+ "groupData": AvatarGroupItem[] | string;
4194
5462
  "href": string;
4195
5463
  "name": string;
4196
5464
  "size": 'md' | 'sm';
4197
5465
  "src": string;
4198
- "status": 'active' | 'warning' | 'inactive';
5466
+ "status": AvatarStatus;
5467
+ "subText": string;
4199
5468
  "target": string;
5469
+ "variant": AvatarVariant;
4200
5470
  }
4201
5471
  interface XplBackdropAttributes {
4202
5472
  "relative": boolean;
@@ -4251,6 +5521,7 @@ declare namespace LocalJSX {
4251
5521
  "defaultDate": string;
4252
5522
  }
4253
5523
  interface XplCheckboxAttributes {
5524
+ "ariaLabel": string;
4254
5525
  "checked": boolean;
4255
5526
  "description": string;
4256
5527
  "disabled": boolean;
@@ -4294,6 +5565,7 @@ declare namespace LocalJSX {
4294
5565
  "closeOnSelect": boolean;
4295
5566
  "mode": 'single' | 'multi';
4296
5567
  "anchorToTrigger": boolean;
5568
+ "placement": Placement;
4297
5569
  "selectedValues": string | string[];
4298
5570
  "selectOnFocus": boolean;
4299
5571
  "triggerId": string;
@@ -4368,7 +5640,17 @@ declare namespace LocalJSX {
4368
5640
  "hideEyeDropper": boolean;
4369
5641
  "defaultCountry": string;
4370
5642
  "isInternational": boolean;
4371
- "type": 'date' | 'time' | 'text' | 'number' | 'password' | 'file' | 'color' | 'phone';
5643
+ "ariaLabel": string;
5644
+ "shape": 'rounded' | 'box';
5645
+ "type": | 'date'
5646
+ | 'time'
5647
+ | 'text'
5648
+ | 'number'
5649
+ | 'password'
5650
+ | 'file'
5651
+ | 'color'
5652
+ | 'phone'
5653
+ | 'search';
4372
5654
  }
4373
5655
  interface XplInputColorAttributes {
4374
5656
  "value": string;
@@ -4413,6 +5695,21 @@ declare namespace LocalJSX {
4413
5695
  "required": boolean;
4414
5696
  "value": string;
4415
5697
  }
5698
+ interface XplInputSearchAttributes {
5699
+ "ariaLabel": string;
5700
+ "autocomplete": string;
5701
+ "disabled": boolean;
5702
+ "errorMessageId": string;
5703
+ "hasError": boolean;
5704
+ "hasVisibleLabel": boolean;
5705
+ "inputId": string;
5706
+ "name": string;
5707
+ "placeholder": string;
5708
+ "readonly": boolean;
5709
+ "required": boolean;
5710
+ "shape": 'rounded' | 'box';
5711
+ "value": string;
5712
+ }
4416
5713
  interface XplInputTimeAttributes {
4417
5714
  "inputId": string;
4418
5715
  "disabled": boolean;
@@ -4433,6 +5730,26 @@ declare namespace LocalJSX {
4433
5730
  "name": string;
4434
5731
  "description": string;
4435
5732
  }
5733
+ interface XplListAttributes {
5734
+ "label": string;
5735
+ "labelledBy": string;
5736
+ "reorderable": boolean;
5737
+ "selectable": boolean;
5738
+ }
5739
+ interface XplListItemAttributes {
5740
+ "disabled": boolean;
5741
+ "error": boolean;
5742
+ "hidden": boolean;
5743
+ "href": string;
5744
+ "itemId": string;
5745
+ "keyboardActive": boolean;
5746
+ "radioName": string;
5747
+ "reorderable": boolean;
5748
+ "selectable": boolean;
5749
+ "selected": boolean;
5750
+ "showDivider": boolean;
5751
+ "titleBadgeVariant": BadgeVariantProp;
5752
+ }
4436
5753
  interface XplMainNavAttributes {
4437
5754
  "width": 'default' | 'md' | 'sm';
4438
5755
  }
@@ -4441,6 +5758,10 @@ declare namespace LocalJSX {
4441
5758
  "size": 'large' | 'medium' | 'small';
4442
5759
  "variant": 'default' | 'warning';
4443
5760
  }
5761
+ interface XplNavHeaderMenuAttributes {
5762
+ "email": string;
5763
+ "username": string;
5764
+ }
4444
5765
  interface XplNavItemAttributes {
4445
5766
  "navControl": boolean;
4446
5767
  }
@@ -4461,9 +5782,6 @@ declare namespace LocalJSX {
4461
5782
  "position": PopoverPosition;
4462
5783
  "display": 'arrow' | 'menu';
4463
5784
  }
4464
- interface XplProgressAttributes {
4465
- "currentStep": number;
4466
- }
4467
5785
  interface XplProgressBarAttributes {
4468
5786
  "helperText": string;
4469
5787
  "label": string;
@@ -4472,6 +5790,12 @@ declare namespace LocalJSX {
4472
5790
  "value": number;
4473
5791
  "variant": 'default' | 'success' | 'error' | 'indeterminate';
4474
5792
  }
5793
+ interface XplProgressIndicatorAttributes {
5794
+ "currentStep": number;
5795
+ "layout": 'horizontal' | 'vertical';
5796
+ "showLabels": boolean;
5797
+ "showNumbers": boolean;
5798
+ }
4475
5799
  interface XplRadioAttributes {
4476
5800
  "checked": boolean;
4477
5801
  "description": string;
@@ -4485,6 +5809,7 @@ declare namespace LocalJSX {
4485
5809
  "selectIcon": string;
4486
5810
  "description": string;
4487
5811
  "disabled": boolean;
5812
+ "dropdownPlacement": Placement;
4488
5813
  "error": string;
4489
5814
  "label": string;
4490
5815
  "mode": 'single' | 'multi';
@@ -4530,13 +5855,33 @@ declare namespace LocalJSX {
4530
5855
  "variant": 'default' | 'warning';
4531
5856
  "showFooter": boolean;
4532
5857
  }
4533
- interface XplTabAttributes {
5858
+ interface XplSpotlightAttributes {
5859
+ "actionLayout": SpotlightActionLayout;
5860
+ "anchorPosition": SpotlightAnchorPosition;
5861
+ "body": string;
5862
+ "currentStep": number;
5863
+ "heading": string;
5864
+ "isDismissible": boolean;
5865
+ "isOpen": boolean;
5866
+ "primaryActionLabel": string;
5867
+ "secondaryActionLabel": string;
5868
+ "showActions": boolean;
5869
+ "showImage": boolean;
5870
+ "showSteps": boolean;
4534
5871
  "target": string;
5872
+ "totalSteps": number;
5873
+ }
5874
+ interface XplTabAttributes {
5875
+ "disabled": boolean;
5876
+ "groupDisabled": boolean;
5877
+ "icon": string;
5878
+ "iconPosition": 'start' | 'end';
4535
5879
  "selected": boolean;
5880
+ "target": string;
4536
5881
  }
4537
5882
  interface XplTabPanelAttributes {
4538
- "target": string;
4539
5883
  "selected": boolean;
5884
+ "target": string;
4540
5885
  }
4541
5886
  interface XplTableAttributes {
4542
5887
  "freeze": boolean;
@@ -4552,8 +5897,17 @@ declare namespace LocalJSX {
4552
5897
  "width": number;
4553
5898
  }
4554
5899
  interface XplTabsAttributes {
4555
- "value": string;
5900
+ "disabled": boolean;
4556
5901
  "fullWidth": boolean;
5902
+ "type": 'tabs' | 'segment';
5903
+ "value": string;
5904
+ }
5905
+ interface XplTagAttributes {
5906
+ "disabled": boolean;
5907
+ "dismissible": boolean;
5908
+ "isDraggable": boolean;
5909
+ "size": 'default' | 'sm';
5910
+ "tagId": string;
4557
5911
  }
4558
5912
  interface XplToastAttributes {
4559
5913
  "variant": 'neutral' | 'warning' | 'success';
@@ -4586,6 +5940,22 @@ declare namespace LocalJSX {
4586
5940
  | 'bottom-right';
4587
5941
  "hideArrow": boolean;
4588
5942
  }
5943
+ interface XplTopNavAttributes {
5944
+ "brandHref": string;
5945
+ "brandLogo": string;
5946
+ "brandName": string;
5947
+ "childAccountLabel": string;
5948
+ "label": string;
5949
+ "navControl": boolean;
5950
+ }
5951
+ interface XplTopNavItemAttributes {
5952
+ "active": boolean;
5953
+ "href": string;
5954
+ "icon": string;
5955
+ "itemAriaLabel": string;
5956
+ "label": string;
5957
+ "selected": boolean;
5958
+ }
4589
5959
  interface XplUtilityBarAttributes {
4590
5960
  "navControl": boolean;
4591
5961
  "isNavOpenAtStartup": boolean;
@@ -4625,17 +5995,20 @@ declare namespace LocalJSX {
4625
5995
  "xpl-input-date": Omit<XplInputDate, keyof XplInputDateAttributes> & { [K in keyof XplInputDate & keyof XplInputDateAttributes]?: XplInputDate[K] } & { [K in keyof XplInputDate & keyof XplInputDateAttributes as `attr:${K}`]?: XplInputDateAttributes[K] } & { [K in keyof XplInputDate & keyof XplInputDateAttributes as `prop:${K}`]?: XplInputDate[K] };
4626
5996
  "xpl-input-file": Omit<XplInputFile, keyof XplInputFileAttributes> & { [K in keyof XplInputFile & keyof XplInputFileAttributes]?: XplInputFile[K] } & { [K in keyof XplInputFile & keyof XplInputFileAttributes as `attr:${K}`]?: XplInputFileAttributes[K] } & { [K in keyof XplInputFile & keyof XplInputFileAttributes as `prop:${K}`]?: XplInputFile[K] };
4627
5997
  "xpl-input-phone": Omit<XplInputPhone, keyof XplInputPhoneAttributes> & { [K in keyof XplInputPhone & keyof XplInputPhoneAttributes]?: XplInputPhone[K] } & { [K in keyof XplInputPhone & keyof XplInputPhoneAttributes as `attr:${K}`]?: XplInputPhoneAttributes[K] } & { [K in keyof XplInputPhone & keyof XplInputPhoneAttributes as `prop:${K}`]?: XplInputPhone[K] };
5998
+ "xpl-input-search": Omit<XplInputSearch, keyof XplInputSearchAttributes> & { [K in keyof XplInputSearch & keyof XplInputSearchAttributes]?: XplInputSearch[K] } & { [K in keyof XplInputSearch & keyof XplInputSearchAttributes as `attr:${K}`]?: XplInputSearchAttributes[K] } & { [K in keyof XplInputSearch & keyof XplInputSearchAttributes as `prop:${K}`]?: XplInputSearch[K] } & OneOf<"inputId", XplInputSearch["inputId"], XplInputSearchAttributes["inputId"]>;
4628
5999
  "xpl-input-time": Omit<XplInputTime, keyof XplInputTimeAttributes> & { [K in keyof XplInputTime & keyof XplInputTimeAttributes]?: XplInputTime[K] } & { [K in keyof XplInputTime & keyof XplInputTimeAttributes as `attr:${K}`]?: XplInputTimeAttributes[K] } & { [K in keyof XplInputTime & keyof XplInputTimeAttributes as `prop:${K}`]?: XplInputTime[K] };
4629
6000
  "xpl-large-card": Omit<XplLargeCard, keyof XplLargeCardAttributes> & { [K in keyof XplLargeCard & keyof XplLargeCardAttributes]?: XplLargeCard[K] } & { [K in keyof XplLargeCard & keyof XplLargeCardAttributes as `attr:${K}`]?: XplLargeCardAttributes[K] } & { [K in keyof XplLargeCard & keyof XplLargeCardAttributes as `prop:${K}`]?: XplLargeCard[K] };
4630
- "xpl-list": XplList;
6001
+ "xpl-list": Omit<XplList, keyof XplListAttributes> & { [K in keyof XplList & keyof XplListAttributes]?: XplList[K] } & { [K in keyof XplList & keyof XplListAttributes as `attr:${K}`]?: XplListAttributes[K] } & { [K in keyof XplList & keyof XplListAttributes as `prop:${K}`]?: XplList[K] };
6002
+ "xpl-list-item": Omit<XplListItem, keyof XplListItemAttributes> & { [K in keyof XplListItem & keyof XplListItemAttributes]?: XplListItem[K] } & { [K in keyof XplListItem & keyof XplListItemAttributes as `attr:${K}`]?: XplListItemAttributes[K] } & { [K in keyof XplListItem & keyof XplListItemAttributes as `prop:${K}`]?: XplListItem[K] };
4631
6003
  "xpl-main-nav": Omit<XplMainNav, keyof XplMainNavAttributes> & { [K in keyof XplMainNav & keyof XplMainNavAttributes]?: XplMainNav[K] } & { [K in keyof XplMainNav & keyof XplMainNavAttributes as `attr:${K}`]?: XplMainNavAttributes[K] } & { [K in keyof XplMainNav & keyof XplMainNavAttributes as `prop:${K}`]?: XplMainNav[K] };
4632
6004
  "xpl-modal": Omit<XplModal, keyof XplModalAttributes> & { [K in keyof XplModal & keyof XplModalAttributes]?: XplModal[K] } & { [K in keyof XplModal & keyof XplModalAttributes as `attr:${K}`]?: XplModalAttributes[K] } & { [K in keyof XplModal & keyof XplModalAttributes as `prop:${K}`]?: XplModal[K] };
6005
+ "xpl-nav-header-menu": Omit<XplNavHeaderMenu, keyof XplNavHeaderMenuAttributes> & { [K in keyof XplNavHeaderMenu & keyof XplNavHeaderMenuAttributes]?: XplNavHeaderMenu[K] } & { [K in keyof XplNavHeaderMenu & keyof XplNavHeaderMenuAttributes as `attr:${K}`]?: XplNavHeaderMenuAttributes[K] } & { [K in keyof XplNavHeaderMenu & keyof XplNavHeaderMenuAttributes as `prop:${K}`]?: XplNavHeaderMenu[K] };
4633
6006
  "xpl-nav-item": Omit<XplNavItem, keyof XplNavItemAttributes> & { [K in keyof XplNavItem & keyof XplNavItemAttributes]?: XplNavItem[K] } & { [K in keyof XplNavItem & keyof XplNavItemAttributes as `attr:${K}`]?: XplNavItemAttributes[K] } & { [K in keyof XplNavItem & keyof XplNavItemAttributes as `prop:${K}`]?: XplNavItem[K] };
4634
6007
  "xpl-pagination": Omit<XplPagination, keyof XplPaginationAttributes> & { [K in keyof XplPagination & keyof XplPaginationAttributes]?: XplPagination[K] } & { [K in keyof XplPagination & keyof XplPaginationAttributes as `attr:${K}`]?: XplPaginationAttributes[K] } & { [K in keyof XplPagination & keyof XplPaginationAttributes as `prop:${K}`]?: XplPagination[K] };
4635
6008
  "xpl-panel": Omit<XplPanel, keyof XplPanelAttributes> & { [K in keyof XplPanel & keyof XplPanelAttributes]?: XplPanel[K] } & { [K in keyof XplPanel & keyof XplPanelAttributes as `attr:${K}`]?: XplPanelAttributes[K] } & { [K in keyof XplPanel & keyof XplPanelAttributes as `prop:${K}`]?: XplPanel[K] };
4636
6009
  "xpl-popover": Omit<XplPopover, keyof XplPopoverAttributes> & { [K in keyof XplPopover & keyof XplPopoverAttributes]?: XplPopover[K] } & { [K in keyof XplPopover & keyof XplPopoverAttributes as `attr:${K}`]?: XplPopoverAttributes[K] } & { [K in keyof XplPopover & keyof XplPopoverAttributes as `prop:${K}`]?: XplPopover[K] };
4637
- "xpl-progress": Omit<XplProgress, keyof XplProgressAttributes> & { [K in keyof XplProgress & keyof XplProgressAttributes]?: XplProgress[K] } & { [K in keyof XplProgress & keyof XplProgressAttributes as `attr:${K}`]?: XplProgressAttributes[K] } & { [K in keyof XplProgress & keyof XplProgressAttributes as `prop:${K}`]?: XplProgress[K] };
4638
6010
  "xpl-progress-bar": Omit<XplProgressBar, keyof XplProgressBarAttributes> & { [K in keyof XplProgressBar & keyof XplProgressBarAttributes]?: XplProgressBar[K] } & { [K in keyof XplProgressBar & keyof XplProgressBarAttributes as `attr:${K}`]?: XplProgressBarAttributes[K] } & { [K in keyof XplProgressBar & keyof XplProgressBarAttributes as `prop:${K}`]?: XplProgressBar[K] };
6011
+ "xpl-progress-indicator": Omit<XplProgressIndicator, keyof XplProgressIndicatorAttributes> & { [K in keyof XplProgressIndicator & keyof XplProgressIndicatorAttributes]?: XplProgressIndicator[K] } & { [K in keyof XplProgressIndicator & keyof XplProgressIndicatorAttributes as `attr:${K}`]?: XplProgressIndicatorAttributes[K] } & { [K in keyof XplProgressIndicator & keyof XplProgressIndicatorAttributes as `prop:${K}`]?: XplProgressIndicator[K] };
4639
6012
  "xpl-radio": Omit<XplRadio, keyof XplRadioAttributes> & { [K in keyof XplRadio & keyof XplRadioAttributes]?: XplRadio[K] } & { [K in keyof XplRadio & keyof XplRadioAttributes as `attr:${K}`]?: XplRadioAttributes[K] } & { [K in keyof XplRadio & keyof XplRadioAttributes as `prop:${K}`]?: XplRadio[K] };
4640
6013
  "xpl-secondary-nav": XplSecondaryNav;
4641
6014
  "xpl-select": Omit<XplSelect, keyof XplSelectAttributes> & { [K in keyof XplSelect & keyof XplSelectAttributes]?: XplSelect[K] } & { [K in keyof XplSelect & keyof XplSelectAttributes as `attr:${K}`]?: XplSelectAttributes[K] } & { [K in keyof XplSelect & keyof XplSelectAttributes as `prop:${K}`]?: XplSelect[K] };
@@ -4643,17 +6016,20 @@ declare namespace LocalJSX {
4643
6016
  "xpl-side-nav-item": Omit<XplSideNavItem, keyof XplSideNavItemAttributes> & { [K in keyof XplSideNavItem & keyof XplSideNavItemAttributes]?: XplSideNavItem[K] } & { [K in keyof XplSideNavItem & keyof XplSideNavItemAttributes as `attr:${K}`]?: XplSideNavItemAttributes[K] } & { [K in keyof XplSideNavItem & keyof XplSideNavItemAttributes as `prop:${K}`]?: XplSideNavItem[K] };
4644
6017
  "xpl-skeleton": Omit<XplSkeleton, keyof XplSkeletonAttributes> & { [K in keyof XplSkeleton & keyof XplSkeletonAttributes]?: XplSkeleton[K] } & { [K in keyof XplSkeleton & keyof XplSkeletonAttributes as `attr:${K}`]?: XplSkeletonAttributes[K] } & { [K in keyof XplSkeleton & keyof XplSkeletonAttributes as `prop:${K}`]?: XplSkeleton[K] };
4645
6018
  "xpl-slideout": Omit<XplSlideout, keyof XplSlideoutAttributes> & { [K in keyof XplSlideout & keyof XplSlideoutAttributes]?: XplSlideout[K] } & { [K in keyof XplSlideout & keyof XplSlideoutAttributes as `attr:${K}`]?: XplSlideoutAttributes[K] } & { [K in keyof XplSlideout & keyof XplSlideoutAttributes as `prop:${K}`]?: XplSlideout[K] };
6019
+ "xpl-spotlight": Omit<XplSpotlight, keyof XplSpotlightAttributes> & { [K in keyof XplSpotlight & keyof XplSpotlightAttributes]?: XplSpotlight[K] } & { [K in keyof XplSpotlight & keyof XplSpotlightAttributes as `attr:${K}`]?: XplSpotlightAttributes[K] } & { [K in keyof XplSpotlight & keyof XplSpotlightAttributes as `prop:${K}`]?: XplSpotlight[K] };
4646
6020
  "xpl-tab": Omit<XplTab, keyof XplTabAttributes> & { [K in keyof XplTab & keyof XplTabAttributes]?: XplTab[K] } & { [K in keyof XplTab & keyof XplTabAttributes as `attr:${K}`]?: XplTabAttributes[K] } & { [K in keyof XplTab & keyof XplTabAttributes as `prop:${K}`]?: XplTab[K] };
4647
6021
  "xpl-tab-panel": Omit<XplTabPanel, keyof XplTabPanelAttributes> & { [K in keyof XplTabPanel & keyof XplTabPanelAttributes]?: XplTabPanel[K] } & { [K in keyof XplTabPanel & keyof XplTabPanelAttributes as `attr:${K}`]?: XplTabPanelAttributes[K] } & { [K in keyof XplTabPanel & keyof XplTabPanelAttributes as `prop:${K}`]?: XplTabPanel[K] };
4648
6022
  "xpl-table": Omit<XplTable, keyof XplTableAttributes> & { [K in keyof XplTable & keyof XplTableAttributes]?: XplTable[K] } & { [K in keyof XplTable & keyof XplTableAttributes as `attr:${K}`]?: XplTableAttributes[K] } & { [K in keyof XplTable & keyof XplTableAttributes as `prop:${K}`]?: XplTable[K] };
4649
6023
  "xpl-table-header": XplTableHeader;
4650
6024
  "xpl-table-header-cell": Omit<XplTableHeaderCell, keyof XplTableHeaderCellAttributes> & { [K in keyof XplTableHeaderCell & keyof XplTableHeaderCellAttributes]?: XplTableHeaderCell[K] } & { [K in keyof XplTableHeaderCell & keyof XplTableHeaderCellAttributes as `attr:${K}`]?: XplTableHeaderCellAttributes[K] } & { [K in keyof XplTableHeaderCell & keyof XplTableHeaderCellAttributes as `prop:${K}`]?: XplTableHeaderCell[K] };
4651
6025
  "xpl-tabs": Omit<XplTabs, keyof XplTabsAttributes> & { [K in keyof XplTabs & keyof XplTabsAttributes]?: XplTabs[K] } & { [K in keyof XplTabs & keyof XplTabsAttributes as `attr:${K}`]?: XplTabsAttributes[K] } & { [K in keyof XplTabs & keyof XplTabsAttributes as `prop:${K}`]?: XplTabs[K] };
4652
- "xpl-tag": XplTag;
6026
+ "xpl-tag": Omit<XplTag, keyof XplTagAttributes> & { [K in keyof XplTag & keyof XplTagAttributes]?: XplTag[K] } & { [K in keyof XplTag & keyof XplTagAttributes as `attr:${K}`]?: XplTagAttributes[K] } & { [K in keyof XplTag & keyof XplTagAttributes as `prop:${K}`]?: XplTag[K] };
4653
6027
  "xpl-toast": Omit<XplToast, keyof XplToastAttributes> & { [K in keyof XplToast & keyof XplToastAttributes]?: XplToast[K] } & { [K in keyof XplToast & keyof XplToastAttributes as `attr:${K}`]?: XplToastAttributes[K] } & { [K in keyof XplToast & keyof XplToastAttributes as `prop:${K}`]?: XplToast[K] };
4654
6028
  "xpl-toggle": Omit<XplToggle, keyof XplToggleAttributes> & { [K in keyof XplToggle & keyof XplToggleAttributes]?: XplToggle[K] } & { [K in keyof XplToggle & keyof XplToggleAttributes as `attr:${K}`]?: XplToggleAttributes[K] } & { [K in keyof XplToggle & keyof XplToggleAttributes as `prop:${K}`]?: XplToggle[K] };
4655
6029
  "xpl-toolbar": Omit<XplToolbar, keyof XplToolbarAttributes> & { [K in keyof XplToolbar & keyof XplToolbarAttributes]?: XplToolbar[K] } & { [K in keyof XplToolbar & keyof XplToolbarAttributes as `attr:${K}`]?: XplToolbarAttributes[K] } & { [K in keyof XplToolbar & keyof XplToolbarAttributes as `prop:${K}`]?: XplToolbar[K] };
4656
6030
  "xpl-tooltip": Omit<XplTooltip, keyof XplTooltipAttributes> & { [K in keyof XplTooltip & keyof XplTooltipAttributes]?: XplTooltip[K] } & { [K in keyof XplTooltip & keyof XplTooltipAttributes as `attr:${K}`]?: XplTooltipAttributes[K] } & { [K in keyof XplTooltip & keyof XplTooltipAttributes as `prop:${K}`]?: XplTooltip[K] };
6031
+ "xpl-top-nav": Omit<XplTopNav, keyof XplTopNavAttributes> & { [K in keyof XplTopNav & keyof XplTopNavAttributes]?: XplTopNav[K] } & { [K in keyof XplTopNav & keyof XplTopNavAttributes as `attr:${K}`]?: XplTopNavAttributes[K] } & { [K in keyof XplTopNav & keyof XplTopNavAttributes as `prop:${K}`]?: XplTopNav[K] };
6032
+ "xpl-top-nav-item": Omit<XplTopNavItem, keyof XplTopNavItemAttributes> & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes]?: XplTopNavItem[K] } & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes as `attr:${K}`]?: XplTopNavItemAttributes[K] } & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes as `prop:${K}`]?: XplTopNavItem[K] };
4657
6033
  "xpl-utility-bar": Omit<XplUtilityBar, keyof XplUtilityBarAttributes> & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes]?: XplUtilityBar[K] } & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes as `attr:${K}`]?: XplUtilityBarAttributes[K] } & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes as `prop:${K}`]?: XplUtilityBar[K] };
4658
6034
  }
4659
6035
  }
@@ -4697,11 +6073,32 @@ declare module "@stencil/core" {
4697
6073
  */
4698
6074
  "xpl-input-file": LocalJSX.IntrinsicElements["xpl-input-file"] & JSXBase.HTMLAttributes<HTMLXplInputFileElement>;
4699
6075
  "xpl-input-phone": LocalJSX.IntrinsicElements["xpl-input-phone"] & JSXBase.HTMLAttributes<HTMLXplInputPhoneElement>;
6076
+ "xpl-input-search": LocalJSX.IntrinsicElements["xpl-input-search"] & JSXBase.HTMLAttributes<HTMLXplInputSearchElement>;
4700
6077
  "xpl-input-time": LocalJSX.IntrinsicElements["xpl-input-time"] & JSXBase.HTMLAttributes<HTMLXplInputTimeElement>;
4701
6078
  "xpl-large-card": LocalJSX.IntrinsicElements["xpl-large-card"] & JSXBase.HTMLAttributes<HTMLXplLargeCardElement>;
4702
6079
  "xpl-list": LocalJSX.IntrinsicElements["xpl-list"] & JSXBase.HTMLAttributes<HTMLXplListElement>;
6080
+ "xpl-list-item": LocalJSX.IntrinsicElements["xpl-list-item"] & JSXBase.HTMLAttributes<HTMLXplListItemElement>;
4703
6081
  "xpl-main-nav": LocalJSX.IntrinsicElements["xpl-main-nav"] & JSXBase.HTMLAttributes<HTMLXplMainNavElement>;
4704
6082
  "xpl-modal": LocalJSX.IntrinsicElements["xpl-modal"] & JSXBase.HTMLAttributes<HTMLXplModalElement>;
6083
+ /**
6084
+ * Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).
6085
+ * Tag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is
6086
+ * **`role="list"`** for slotted **`xpl-top-nav-item`** (**`role="listitem"`**).
6087
+ * **Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —
6088
+ * profile, list shell, and **`xpl-top-nav-item`** **`role="listitem"`** are handled by the component. Use
6089
+ * **`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.
6090
+ * **`slot="right-aside-mobile"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only
6091
+ * duplicate of **every** **`slot="right-aside"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).
6092
+ * Not **`role="list"`**; use **`xpl-button`** / **`xpl-top-nav-item`** as needed. Shown only on **narrow viewports** (one pixel below Tailwind **`md`** — **`top-nav.css`**) so bar actions stay in **`slot="right-aside"`** on wider viewports.
6093
+ * Light-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps
6094
+ * **`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).
6095
+ * Stencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next
6096
+ * deferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /
6097
+ * **`slot`** mutations without stacking uncancellable microtasks.
6098
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
6099
+ * values even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**).
6100
+ */
6101
+ "xpl-nav-header-menu": LocalJSX.IntrinsicElements["xpl-nav-header-menu"] & JSXBase.HTMLAttributes<HTMLXplNavHeaderMenuElement>;
4705
6102
  "xpl-nav-item": LocalJSX.IntrinsicElements["xpl-nav-item"] & JSXBase.HTMLAttributes<HTMLXplNavItemElement>;
4706
6103
  "xpl-pagination": LocalJSX.IntrinsicElements["xpl-pagination"] & JSXBase.HTMLAttributes<HTMLXplPaginationElement>;
4707
6104
  /**
@@ -4710,8 +6107,8 @@ declare module "@stencil/core" {
4710
6107
  */
4711
6108
  "xpl-panel": LocalJSX.IntrinsicElements["xpl-panel"] & JSXBase.HTMLAttributes<HTMLXplPanelElement>;
4712
6109
  "xpl-popover": LocalJSX.IntrinsicElements["xpl-popover"] & JSXBase.HTMLAttributes<HTMLXplPopoverElement>;
4713
- "xpl-progress": LocalJSX.IntrinsicElements["xpl-progress"] & JSXBase.HTMLAttributes<HTMLXplProgressElement>;
4714
6110
  "xpl-progress-bar": LocalJSX.IntrinsicElements["xpl-progress-bar"] & JSXBase.HTMLAttributes<HTMLXplProgressBarElement>;
6111
+ "xpl-progress-indicator": LocalJSX.IntrinsicElements["xpl-progress-indicator"] & JSXBase.HTMLAttributes<HTMLXplProgressIndicatorElement>;
4715
6112
  "xpl-radio": LocalJSX.IntrinsicElements["xpl-radio"] & JSXBase.HTMLAttributes<HTMLXplRadioElement>;
4716
6113
  "xpl-secondary-nav": LocalJSX.IntrinsicElements["xpl-secondary-nav"] & JSXBase.HTMLAttributes<HTMLXplSecondaryNavElement>;
4717
6114
  "xpl-select": LocalJSX.IntrinsicElements["xpl-select"] & JSXBase.HTMLAttributes<HTMLXplSelectElement>;
@@ -4719,6 +6116,7 @@ declare module "@stencil/core" {
4719
6116
  "xpl-side-nav-item": LocalJSX.IntrinsicElements["xpl-side-nav-item"] & JSXBase.HTMLAttributes<HTMLXplSideNavItemElement>;
4720
6117
  "xpl-skeleton": LocalJSX.IntrinsicElements["xpl-skeleton"] & JSXBase.HTMLAttributes<HTMLXplSkeletonElement>;
4721
6118
  "xpl-slideout": LocalJSX.IntrinsicElements["xpl-slideout"] & JSXBase.HTMLAttributes<HTMLXplSlideoutElement>;
6119
+ "xpl-spotlight": LocalJSX.IntrinsicElements["xpl-spotlight"] & JSXBase.HTMLAttributes<HTMLXplSpotlightElement>;
4722
6120
  "xpl-tab": LocalJSX.IntrinsicElements["xpl-tab"] & JSXBase.HTMLAttributes<HTMLXplTabElement>;
4723
6121
  "xpl-tab-panel": LocalJSX.IntrinsicElements["xpl-tab-panel"] & JSXBase.HTMLAttributes<HTMLXplTabPanelElement>;
4724
6122
  "xpl-table": LocalJSX.IntrinsicElements["xpl-table"] & JSXBase.HTMLAttributes<HTMLXplTableElement>;
@@ -4730,6 +6128,46 @@ declare module "@stencil/core" {
4730
6128
  "xpl-toggle": LocalJSX.IntrinsicElements["xpl-toggle"] & JSXBase.HTMLAttributes<HTMLXplToggleElement>;
4731
6129
  "xpl-toolbar": LocalJSX.IntrinsicElements["xpl-toolbar"] & JSXBase.HTMLAttributes<HTMLXplToolbarElement>;
4732
6130
  "xpl-tooltip": LocalJSX.IntrinsicElements["xpl-tooltip"] & JSXBase.HTMLAttributes<HTMLXplTooltipElement>;
6131
+ /**
6132
+ * Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**
6133
+ * (see **`.xpl-top-nav__right-rail`** in `render()`). The account menu uses an internal **`xpl-popover`** (**`bottom-end`**, **`display="menu"`**): built-in trigger uses **`child-account-label`** (prop / attribute) as the label beside a trailing **`chevron-down`** on **`xpl-button`** (**`icon`** / **`iconPosition="end"`**), or **`slot="user-menu-trigger"`** for a custom trigger; panel from **`slot="user-menu"`** (e.g. **`xpl-nav-header-menu`**).
6134
+ * Optional **`nav-control`** and **`navOpen`**. **`left-aside`** uses **`role="list"`** for primary **`xpl-top-nav-item`** rows (**`role="listitem"`** on each item host). The built-in **`xpl-top-nav__brand`** item omits **`listitem`** (it is not a child of that list). **`label`** maps to **`nav`** **`aria-label`**. Opening state is internal (not a prop) — use **`navOpen`** and host **`xpl-top-nav--open`** for styling.
6135
+ * **Escape:** With **`nav-control`**, **Escape** closes the mobile drawer and emits **`navOpen`** **`false`** (skips while **any** descendant **`xpl-popover`** is open — detected from each popover’s inner **`.xpl-popover--is-open`** marker — or when a **`xpl-top-nav-item`** dropdown is open — capture/bubble order). Focus returns to the nav toggle after the drawer closes (**Escape** or second toggle click).
6136
+ * **`xpl-top-nav-item`** **`slot="dropdown"`** uses document **capture** for **Escape** first; the shell uses **bubble**
6137
+ * on **`ownerDocument`** so nested dropdowns close before the drawer.
6138
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree
6139
+ * resolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**
6140
+ * content teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.
6141
+ * **Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).
6142
+ * Consumers should not add those BEM classes — slot content only.
6143
+ * **Brand logo:** use **`brand-logo`** (URL) for a built-in **`<img>`**, or **`slot="brand-logo"`** for custom markup (e.g. **`xpl-icon`**, SVG). When the URL prop is set, it takes precedence and the slot is not used for the image. On **narrow viewports** (one pixel below Tailwind **`md`** — see **`top-nav.css`**), **`brand-name`** text is hidden in the bar (logo / slot mark only); keep a meaningful **`alt`** on **`brand-logo`** or accessible slotted mark for context.
6144
+ * **Narrow / mobile** (same breakpoint as above): **`slot="left-aside"`** is **hidden** in the bar until **`nav-control`**
6145
+ * is set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —
6146
+ * primary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**
6147
+ * stays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow
6148
+ * viewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**
6149
+ * **`slot="right-aside-mobile"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.
6150
+ * **Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**
6151
+ * and emits **`navOpen(false)`** so the two layers do not stack.
6152
+ */
6153
+ "xpl-top-nav": LocalJSX.IntrinsicElements["xpl-top-nav"] & JSXBase.HTMLAttributes<HTMLXplTopNavElement>;
6154
+ /**
6155
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
6156
+ * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
6157
+ * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
6158
+ * under **`xpl-nav-header-menu`**. That flag is
6159
+ * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
6160
+ * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
6161
+ * without a full reconnect still re-sync. The internal
6162
+ * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
6163
+ * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
6164
+ * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
6165
+ * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
6166
+ * custom trigger content — the component renders the inner wrapper and BEM elements.
6167
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
6168
+ * values even when the page root is light (consistent with **`xpl-top-nav`**).
6169
+ */
6170
+ "xpl-top-nav-item": LocalJSX.IntrinsicElements["xpl-top-nav-item"] & JSXBase.HTMLAttributes<HTMLXplTopNavItemElement>;
4733
6171
  "xpl-utility-bar": LocalJSX.IntrinsicElements["xpl-utility-bar"] & JSXBase.HTMLAttributes<HTMLXplUtilityBarElement>;
4734
6172
  }
4735
6173
  }