@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
@@ -85,7 +85,7 @@
85
85
  "name": "xpl-avatar",
86
86
  "description": {
87
87
  "kind": "markdown",
88
- "value": "An Avatar is a visual representation of a user or entity. There are 5 types of avatar Figma component; Avatar Default, Avatar Group, Avatar Profile, Avatar Text, and Avatar Clickable. Each comes in a variety of sizes, faces and placeholder colors. \n\nAvatars typically display a user’s image. When no image is available, use the first and last initial of a user’s name. The avatar can handle up to three letters.\n\nThere are 10 avatar faces and 10 corresponding colors. We suggest randomly generating placeholder colors to show a visual differentiator when multiple avatars or an avatar group is displayed."
88
+ "value": "The **Avatar** component shows a person or entity: a photo, initials on a colored surface, or custom slot content. It aligns with Apollo’s Figma patterns for default avatars, profile layouts, stacked groups, and rows with supporting text."
89
89
  },
90
90
  "attributes": [
91
91
  {
@@ -113,17 +113,21 @@
113
113
  "name": "disabled",
114
114
  "description": "Sets a disabled state on the avatar when set to true"
115
115
  },
116
+ {
117
+ "name": "group-data",
118
+ "description": "When `variant` is `group`, data for each face (max 4 visible + overflow count). Each item: { src?, name?, color? }."
119
+ },
116
120
  {
117
121
  "name": "href",
118
122
  "description": "The URL if the avatar should be hyperlinked"
119
123
  },
120
124
  {
121
125
  "name": "name",
122
- "description": "Alt text for the image if there is an image src"
126
+ "description": "Alt text for the image; also used for initials when no image and no slot."
123
127
  },
124
128
  {
125
129
  "name": "size",
126
- "description": "Size of the avatar",
130
+ "description": "Size of the avatar (and of each avatar in a group).",
127
131
  "values": [
128
132
  {
129
133
  "name": "md"
@@ -139,22 +143,62 @@
139
143
  },
140
144
  {
141
145
  "name": "status",
142
- "description": "Color styles for the dot indicator to indicate varied states",
146
+ "description": "Shown for the default avatar, `profile`, and `with-text`; not shown when `variant` is `group`.\n**Legacy",
143
147
  "values": [
144
148
  {
145
149
  "name": "active"
146
150
  },
151
+ {
152
+ "name": "blue"
153
+ },
154
+ {
155
+ "name": "gray"
156
+ },
157
+ {
158
+ "name": "green"
159
+ },
147
160
  {
148
161
  "name": "inactive"
149
162
  },
163
+ {
164
+ "name": "orange"
165
+ },
166
+ {
167
+ "name": "purple"
168
+ },
169
+ {
170
+ "name": "red"
171
+ },
150
172
  {
151
173
  "name": "warning"
174
+ },
175
+ {
176
+ "name": "yellow"
152
177
  }
153
178
  ]
154
179
  },
180
+ {
181
+ "name": "sub-text",
182
+ "description": "Secondary text shown when `variant` is `with-text` (e.g. email)."
183
+ },
155
184
  {
156
185
  "name": "target",
157
186
  "description": "Where to open the URL chosen for the `href` prop:\n`_self` (default), `_blank`, `_parent`, or `_top`"
187
+ },
188
+ {
189
+ "name": "variant",
190
+ "description": "Optional layout: `profile` (large profile sizes), `group` (stacked faces + `groupData`; `status` not shown),\n`with-text` (avatar with `name` / `subText` beside it). Omit for the default single avatar.",
191
+ "values": [
192
+ {
193
+ "name": "group"
194
+ },
195
+ {
196
+ "name": "profile"
197
+ },
198
+ {
199
+ "name": "with-text"
200
+ }
201
+ ]
158
202
  }
159
203
  ]
160
204
  },
@@ -505,7 +549,7 @@
505
549
  "name": "xpl-calendar",
506
550
  "description": {
507
551
  "kind": "markdown",
508
- "value": "Calendars allow users to view and select dates. Use XPL-Calendar when date picking is needed on a page or in a in a container.\nIf a calendar is needed within a form, use [XPL-Datepicker](https://xplor-apollo.herokuapp.com/?path=/story/components-input--datepicker)."
552
+ "value": "Calendars allow users to view and select dates. Use XPL-Calendar when date picking is needed on a page or in a in a container.\nIf a calendar is needed within a form, use [XPL-Datepicker](https://apollo.xplordocs.com/?path=/story/components-input--datepicker)."
509
553
  },
510
554
  "attributes": [
511
555
  {
@@ -549,6 +593,10 @@
549
593
  "value": "Checkboxes allow users to make selections or choices. Checkboxes can be multi-select, and also act as controls."
550
594
  },
551
595
  "attributes": [
596
+ {
597
+ "name": "aria-label",
598
+ "description": "Accessible name for the native checkbox input (sets `aria-label` on the `input`).\nUse when there is no visible label text in the default slot.\nDefaults to `''`; empty or whitespace-only values omit `aria-label` on the input so a visible `<label>` remains the sole name source."
599
+ },
552
600
  {
553
601
  "name": "checked",
554
602
  "description": "Whether the input is checked"
@@ -745,7 +793,7 @@
745
793
  "name": "xpl-dropdown",
746
794
  "description": {
747
795
  "kind": "markdown",
748
- "value": "A Dropdown is a menu with a list of actions a user can take. Use a dropdown when you want to present a list of actions in a limited space. Dropdowns are single-select ***actions***, can be presented in groups, and can be triggered by other elements such as a button, icon, text etc. \nA selection within a dropdown does not change the parent trigger.\n\n***If you want to present a list of **options** a user can select, or multi-select options, please use [XPL-Select](https://xplor-apollo.herokuapp.com/?path=/story/components-select--select).***"
796
+ "value": "A Dropdown is a menu with a list of actions a user can take. Use a dropdown when you want to present a list of actions in a limited space. Dropdowns are single-select ***actions***, can be presented in groups, and can be triggered by other elements such as a button, icon, text etc. \nA selection within a dropdown does not change the parent trigger.\n\n***If you want to present a list of **options** a user can select, or multi-select options, please use [XPL-Select](https://apollo.xplordocs.com/?path=/story/components-select--select).***"
749
797
  },
750
798
  "attributes": [
751
799
  {
@@ -772,6 +820,48 @@
772
820
  }
773
821
  ]
774
822
  },
823
+ {
824
+ "name": "placement",
825
+ "description": "Floating UI placement when `anchorToTrigger` is true (e.g. `bottom-start`, `top-start`).",
826
+ "values": [
827
+ {
828
+ "name": "bottom"
829
+ },
830
+ {
831
+ "name": "bottom-end"
832
+ },
833
+ {
834
+ "name": "bottom-start"
835
+ },
836
+ {
837
+ "name": "left"
838
+ },
839
+ {
840
+ "name": "left-end"
841
+ },
842
+ {
843
+ "name": "left-start"
844
+ },
845
+ {
846
+ "name": "right"
847
+ },
848
+ {
849
+ "name": "right-end"
850
+ },
851
+ {
852
+ "name": "right-start"
853
+ },
854
+ {
855
+ "name": "top"
856
+ },
857
+ {
858
+ "name": "top-end"
859
+ },
860
+ {
861
+ "name": "top-start"
862
+ }
863
+ ]
864
+ },
775
865
  {
776
866
  "name": "select-on-focus",
777
867
  "description": "whether selection should be made when focusing on interactive element"
@@ -970,7 +1060,7 @@
970
1060
  "name": "xpl-input",
971
1061
  "description": {
972
1062
  "kind": "markdown",
973
- "value": "A flexible form input that supports multiple `type` values: `text`, `number`, `password`, `date`, `time`, `file`, `color`, and `phone`. Each type delegates to a dedicated sub-component (`xpl-input-date`, `xpl-input-time`, `xpl-input-phone`, etc.) while sharing a common label, description, and error-message wrapper.\n\nFor `type=\"phone\"`, the value is always emitted in **E.164** format (e.g. `+14155551234`). See [`xpl-input-phone`](xpl-input-phone) for full phone-input documentation."
1063
+ "value": "A flexible form input that supports multiple `type` values: `text`, `number`, `password`, `date`, `time`, `file`, `color`, `phone`, and `search`. Each type delegates to a dedicated sub-component (`xpl-input-date`, `xpl-input-time`, `xpl-input-phone`, `xpl-input-search`, etc.) while sharing a common label, description, and error-message wrapper.\n\nFor `type=\"phone\"`, the value is always emitted in **E.164** format (e.g. `+14155551234`). See [`xpl-input-phone`](xpl-input-phone) for full phone-input documentation."
974
1064
  },
975
1065
  "attributes": [
976
1066
  {
@@ -985,9 +1075,13 @@
985
1075
  "name": "allow-custom-option",
986
1076
  "description": "For time inputs, whether to allow custom option in the input even if not available in the dropdown.\nExample: A step of 30 minutes will allow 15:03, 15:37, etc.\n\nApplies to time inputs."
987
1077
  },
1078
+ {
1079
+ "name": "aria-label",
1080
+ "description": "Accessible name for search inputs when there is no visible `label` (after trim).\nIgnored for naming when a visible label is shown.\nDefaults 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.\n\nApplies to search inputs (`type=\"search\"`)."
1081
+ },
988
1082
  {
989
1083
  "name": "autocomplete",
990
- "description": "Hint for form autofill feature\n\nApplies to text, password, number."
1084
+ "description": "Hint for form autofill feature\n\nApplies to text, password, number, and search inputs."
991
1085
  },
992
1086
  {
993
1087
  "name": "date-format",
@@ -1071,7 +1165,7 @@
1071
1165
  },
1072
1166
  {
1073
1167
  "name": "placeholder",
1074
- "description": "Placeholder text that appears when the field has no value\n\nApplies to text, password, number, and date inputs."
1168
+ "description": "Placeholder text that appears when the field has no value\n\nApplies to text, password, number, date, and search inputs."
1075
1169
  },
1076
1170
  {
1077
1171
  "name": "post",
@@ -1083,12 +1177,24 @@
1083
1177
  },
1084
1178
  {
1085
1179
  "name": "readonly",
1086
- "description": "Whether the input is editable\n\nApplies to text, password, number, and date inputs."
1180
+ "description": "Whether the input is editable\n\nApplies to text, password, number, date, and search inputs."
1087
1181
  },
1088
1182
  {
1089
1183
  "name": "required",
1090
1184
  "description": "Whether the input is required\n\nApplies to all input types."
1091
1185
  },
1186
+ {
1187
+ "name": "shape",
1188
+ "description": "Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle).\n\nApplies to search inputs (`type=\"search\"`).",
1189
+ "values": [
1190
+ {
1191
+ "name": "box"
1192
+ },
1193
+ {
1194
+ "name": "rounded"
1195
+ }
1196
+ ]
1197
+ },
1092
1198
  {
1093
1199
  "name": "step",
1094
1200
  "description": "The granularity that the value in a `number` input must adhere to when\nincrementing or decrementing. The default stepping value for number\ninputs is 1\n\nApplies to number and time inputs."
@@ -1127,6 +1233,9 @@
1127
1233
  {
1128
1234
  "name": "phone"
1129
1235
  },
1236
+ {
1237
+ "name": "search"
1238
+ },
1130
1239
  {
1131
1240
  "name": "text"
1132
1241
  },
@@ -1137,7 +1246,7 @@
1137
1246
  },
1138
1247
  {
1139
1248
  "name": "value",
1140
- "description": "Including a `value` will pre-populate the input\nwith the given string.\n\nApplies to text, password, number, and date inputs."
1249
+ "description": "Including a `value` will pre-populate the input\nwith the given string.\n\nApplies to text, password, number, date, and search inputs."
1141
1250
  }
1142
1251
  ]
1143
1252
  },
@@ -1325,6 +1434,75 @@
1325
1434
  }
1326
1435
  ]
1327
1436
  },
1437
+ {
1438
+ "name": "xpl-input-search",
1439
+ "description": {
1440
+ "kind": "markdown",
1441
+ "value": "Inner search field used by [`xpl-input`](../readme.md) when `type=\"search\"`. It provides a leading magnifier, a native text field with `role=\"searchbox\"`, an optional clear control, and a `shape` shell (`rounded` pill vs `box`). You normally consume search through **`xpl-input`**; use `xpl-input-search` only when composing a custom shell that still matches Apollo search visuals."
1442
+ },
1443
+ "attributes": [
1444
+ {
1445
+ "name": "aria-label",
1446
+ "description": "Accessible name when there is no visible label from the parent; maps to `aria-label` on the input.\nWhen the parent provides a visible label, the input is named by `<label for=\"…\">` — this prop is ignored for naming.\nEmpty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed."
1447
+ },
1448
+ {
1449
+ "name": "autocomplete",
1450
+ "description": "Passed to the native input (`autocomplete` attribute). Default `off` matches common\ninline-search UX; browsers may still apply heuristics."
1451
+ },
1452
+ {
1453
+ "name": "disabled",
1454
+ "description": "Disables the field and clear control."
1455
+ },
1456
+ {
1457
+ "name": "error-message-id",
1458
+ "description": "Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`)."
1459
+ },
1460
+ {
1461
+ "name": "has-error",
1462
+ "description": "Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`."
1463
+ },
1464
+ {
1465
+ "name": "has-visible-label",
1466
+ "description": "When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input."
1467
+ },
1468
+ {
1469
+ "name": "input-id",
1470
+ "description": "Associates the control with the parent `xpl-input` label (`for` / `id`)."
1471
+ },
1472
+ {
1473
+ "name": "name",
1474
+ "description": "Form field `name` on the native input."
1475
+ },
1476
+ {
1477
+ "name": "placeholder",
1478
+ "description": "Placeholder shown when the value is empty."
1479
+ },
1480
+ {
1481
+ "name": "readonly",
1482
+ "description": "Whether the input is editable."
1483
+ },
1484
+ {
1485
+ "name": "required",
1486
+ "description": "Whether the input is required."
1487
+ },
1488
+ {
1489
+ "name": "shape",
1490
+ "description": "Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).",
1491
+ "values": [
1492
+ {
1493
+ "name": "box"
1494
+ },
1495
+ {
1496
+ "name": "rounded"
1497
+ }
1498
+ ]
1499
+ },
1500
+ {
1501
+ "name": "value",
1502
+ "description": "Current value (controlled-friendly)."
1503
+ }
1504
+ ]
1505
+ },
1328
1506
  {
1329
1507
  "name": "xpl-input-time",
1330
1508
  "description": {
@@ -1427,9 +1605,118 @@
1427
1605
  "name": "xpl-list",
1428
1606
  "description": {
1429
1607
  "kind": "markdown",
1430
- "value": "A list item is a card with interactive states. List items allow users to select items from a list of items and view more information or make edits."
1608
+ "value": ""
1431
1609
  },
1432
- "attributes": []
1610
+ "attributes": [
1611
+ {
1612
+ "name": "label",
1613
+ "description": "Accessible name for the list, exposed as `aria-label` on the host when set.\nUse when the list has no visible heading.\nIgnored when `labelledBy` is set (see `labelledBy` for precedence)."
1614
+ },
1615
+ {
1616
+ "name": "labelled-by",
1617
+ "description": "Element id(s) that label this list (space-separated), exposed as `aria-labelledby` when set.\nWhen set, `label` is not applied as `aria-label` so the list has a single naming source."
1618
+ },
1619
+ {
1620
+ "name": "reorderable",
1621
+ "description": "When true, enables reorder UI and behavior for **slot-based** child rows (drag handle + keyboard).\nLegacy rows rendered from the deprecated `items` prop do **not** show a drag handle; migrate to slots if reorder is required."
1622
+ },
1623
+ {
1624
+ "name": "selectable",
1625
+ "description": "Determines if this list is selectable (shows `xpl-radio` per row in a shared group).\nPress Escape while focus is on the **selected** row to clear selection (same as `clearSelection()`)."
1626
+ }
1627
+ ]
1628
+ },
1629
+ {
1630
+ "name": "xpl-list-item",
1631
+ "description": {
1632
+ "kind": "markdown",
1633
+ "value": "Single row for [`xpl-list`](../xpl-list/readme.md). **Slot-based** rows expose `role=\"listitem\"` on the inner row surface (`.xpl-list-item__wrapper` or `.xpl-list-item__listitem-shell` when `href` is set); **legacy** `item` rows use `role=\"listitem\"` on the host. Hand-written integration notes for slots, attributes, and events live in the [list readme](../xpl-list/readme.md); the section below is Stencil-generated API for this component.\n\n**Reorder handle (slot mode):** When `reorderable` is enabled and the row uses **slot-based** content, the handle is an **`xpl-button`** wrapping a native **`<button>`**. Reorder logic is wired on the **`xpl-button` host** (`mousedown` / `keydown`); those events originate on the inner `<button>` and **bubble** to the host, which is how the list item receives them today. If `xpl-button` ever stopped bubbling for those events, reorder handlers would need to attach directly to the inner button (similar to `componentDidRender` syncing `aria-*` on that element).\n\n**Legacy `item` prop:** Prop-driven rows **do not** render the reorder handle, radios, or keyboard reorder affordances. Parent `xpl-list` **does not** set `selectable`, `radio-name`, or `reorderable` on those rows (those attributes are removed so they are not mistaken for supported behavior). Use slots if you need selection, drag, or keyboard reorder."
1634
+ },
1635
+ "attributes": [
1636
+ {
1637
+ "name": "disabled",
1638
+ "description": "Whether the item is disabled."
1639
+ },
1640
+ {
1641
+ "name": "error",
1642
+ "description": "Whether to show the item in an error state."
1643
+ },
1644
+ {
1645
+ "name": "hidden",
1646
+ "description": "When true, the row is not shown and does not participate in visible-only list behavior\n(e.g. `orderChange` / `orderedItemIds`, reorder targets). Use for filtering, conditional\ndisplay, or keeping stable `item-id` while the row is off-screen. See `xpl-list` readme\n“Hidden rows”.\n\n**Accessibility:** Renders an empty host with the native `hidden` attribute only (no\n`role=\"listitem\"`), consistent with the row not participating as a list item while hidden."
1647
+ },
1648
+ {
1649
+ "name": "href",
1650
+ "description": "URL for link behavior. When provided, the entire row becomes clickable.\nClicks on `actions` or `avatar` slots are prevented from triggering navigation."
1651
+ },
1652
+ {
1653
+ "name": "item-id",
1654
+ "description": "Unique identifier for this item. Used for selection and drag/drop.\nMutable so the host can sync from `item-id` / `id` in `componentWillLoad` without breaking one-way data flow."
1655
+ },
1656
+ {
1657
+ "name": "keyboard-active",
1658
+ "description": "When set by the parent, indicates this item is the active keyboard reorder item."
1659
+ },
1660
+ {
1661
+ "name": "radio-name",
1662
+ "description": "Name attribute for radio inputs (shared across selectable items in a list)."
1663
+ },
1664
+ {
1665
+ "name": "reorderable",
1666
+ "description": "Whether this item is reorderable (shows a drag handle in **slot-based** layout).\nWhen the deprecated `item` prop is used, legacy markup has **no** reorder handle even if this is true."
1667
+ },
1668
+ {
1669
+ "name": "selectable",
1670
+ "description": "Whether this item is selectable (shows `xpl-radio` in a shared group)."
1671
+ },
1672
+ {
1673
+ "name": "selected",
1674
+ "description": "Whether this item is selected (radio checked state)."
1675
+ },
1676
+ {
1677
+ "name": "show-divider",
1678
+ "description": "Whether to show a divider below the item."
1679
+ },
1680
+ {
1681
+ "name": "title-badge-variant",
1682
+ "description": "Optional badge to display next to the title (dot badge).\nOnly used when `item` prop is not provided (slot mode).\nMatches `xpl-badge` variant values (e.g. purple, green, red).",
1683
+ "values": [
1684
+ {
1685
+ "name": "blue"
1686
+ },
1687
+ {
1688
+ "name": "error"
1689
+ },
1690
+ {
1691
+ "name": "gray"
1692
+ },
1693
+ {
1694
+ "name": "green"
1695
+ },
1696
+ {
1697
+ "name": "inactive"
1698
+ },
1699
+ {
1700
+ "name": "orange"
1701
+ },
1702
+ {
1703
+ "name": "purple"
1704
+ },
1705
+ {
1706
+ "name": "red"
1707
+ },
1708
+ {
1709
+ "name": "success"
1710
+ },
1711
+ {
1712
+ "name": "warning"
1713
+ },
1714
+ {
1715
+ "name": "yellow"
1716
+ }
1717
+ ]
1718
+ }
1719
+ ]
1433
1720
  },
1434
1721
  {
1435
1722
  "name": "xpl-main-nav",
@@ -1495,6 +1782,23 @@
1495
1782
  }
1496
1783
  ]
1497
1784
  },
1785
+ {
1786
+ "name": "xpl-nav-header-menu",
1787
+ "description": {
1788
+ "kind": "markdown",
1789
+ "value": "Profile / account block (username, email, default slot for **`xpl-top-nav-item`** / **`xpl-divider`**).\nTag **`xpl-nav-header-menu`**; implementation folder **`xpl-nav-header-menu`**. **`.xpl-nav-header-menu__slot`** is\n**`role=\"list\"`** for slotted **`xpl-top-nav-item`** (**`role=\"listitem\"`**).\n\n**Slotted content:** do not add **`xpl-nav-header-menu__*`** BEM classes on nodes you pass into the default slot —\nprofile, list shell, and **`xpl-top-nav-item`** **`role=\"listitem\"`** are handled by the component. Use\n**`xpl-top-nav-item`** (or plain elements that are not Apollo **`xpl-*`** BEM hooks) in the slot only.\n\n**`slot=\"right-aside-mobile\"`** — optional block **between** the profile header and the default-slot list (e.g. narrow-only\nduplicate of **every** **`slot=\"right-aside\"`** control per Figma when **`xpl-top-nav`** hides **`right-aside`** on narrow viewports (always)).\nNot **`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.\nLight-DOM **`slotchange`** is unreliable; a host **`MutationObserver`** (child / subtree / **`slot`** attribute) keeps\n**`xpl-nav-header-menu--has-right-aside-mobile`** in sync when nodes are added or retargeted after mount (same pattern as **`xpl-top-nav`**).\nStencil **`newSpecPage`** / mock-doc does not define **`MutationObserver`**; slot presence still updates on the next\ndeferred flush (**`setTimeout(0)`** coalesced with **`componentDidRender`**). In real browsers the observer handles child /\n**`slot`** mutations without stacking uncancellable microtasks.\n\n**Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode\nvalues even when the page root is light (same contract as **`xpl-top-nav`** / **`xpl-top-nav-item`**)."
1790
+ },
1791
+ "attributes": [
1792
+ {
1793
+ "name": "email",
1794
+ "description": "Email address shown below the username."
1795
+ },
1796
+ {
1797
+ "name": "username",
1798
+ "description": "Display name shown in the profile block."
1799
+ }
1800
+ ]
1801
+ },
1498
1802
  {
1499
1803
  "name": "xpl-nav-item",
1500
1804
  "description": {
@@ -1570,7 +1874,7 @@
1570
1874
  },
1571
1875
  {
1572
1876
  "name": "padding",
1573
- "description": "Padding density applied to the content area.\nResponsive: scales down at tablet and mobile breakpoints.\n\n- `default` – 24 px desktop / 16 px tablet+mobile\n- `tight` – 16 px desktop / 8 px tablet+mobile\n- `loose` – 40 px desktop / 32 px tablet / 24 px mobile",
1877
+ "description": "Padding density applied to the content area.\n(default and tight keep desktop padding through tablet; mobile ≤480px).\n\n- `default` – 24 px desktop & tablet / 16 px mobile\n- `tight` – 16 px desktop & tablet / 8 px mobile\n- `loose` – 40 px desktop / 32 px tablet / 24 px mobile",
1574
1878
  "values": [
1575
1879
  {
1576
1880
  "name": "default"
@@ -1656,19 +1960,6 @@
1656
1960
  }
1657
1961
  ]
1658
1962
  },
1659
- {
1660
- "name": "xpl-progress",
1661
- "description": {
1662
- "kind": "markdown",
1663
- "value": "A progress indicator guides users through any linear, multi-step task by showing the user their completed, current, and future steps.\n\nProgress indicators help manage a user’s expectations when completing a multistep process. They show which step the user is currently on, the total number of steps, and overall progress in completing a task.\n\nHorizontal Progress Indicator is used in most desktop applications where a stepped process is required to finish a task and it is beneficial to the user to see their progress. This creates confidence in the user and sets expectations for the length and complexity of the process."
1664
- },
1665
- "attributes": [
1666
- {
1667
- "name": "current-step",
1668
- "description": "Current step, is the index of the current active step"
1669
- }
1670
- ]
1671
- },
1672
1963
  {
1673
1964
  "name": "xpl-progress-bar",
1674
1965
  "description": {
@@ -1724,6 +2015,39 @@
1724
2015
  }
1725
2016
  ]
1726
2017
  },
2018
+ {
2019
+ "name": "xpl-progress-indicator",
2020
+ "description": {
2021
+ "kind": "markdown",
2022
+ "value": "A progress indicator that guides users through linear, multi-step tasks by displaying completed, current, and future steps. Progress indicators help manage user expectations by showing their position in a multi-step process, the total number of steps, and overall progress toward task completion."
2023
+ },
2024
+ "attributes": [
2025
+ {
2026
+ "name": "current-step",
2027
+ "description": "Current step index. Steps with index < currentStep are \"finished\",\nthe step at currentStep is \"active\", and steps beyond are \"waiting\".\nSet to steps.length to mark all steps as finished.\nAutomatically clamped to [0, steps.length]."
2028
+ },
2029
+ {
2030
+ "name": "layout",
2031
+ "description": "Layout direction - 'horizontal' or 'vertical'",
2032
+ "values": [
2033
+ {
2034
+ "name": "horizontal"
2035
+ },
2036
+ {
2037
+ "name": "vertical"
2038
+ }
2039
+ ]
2040
+ },
2041
+ {
2042
+ "name": "show-labels",
2043
+ "description": "Whether to show step labels"
2044
+ },
2045
+ {
2046
+ "name": "show-numbers",
2047
+ "description": "Whether to show step numbers inside circles"
2048
+ }
2049
+ ]
2050
+ },
1727
2051
  {
1728
2052
  "name": "xpl-radio",
1729
2053
  "description": {
@@ -1773,7 +2097,7 @@
1773
2097
  "name": "xpl-select",
1774
2098
  "description": {
1775
2099
  "kind": "markdown",
1776
- "value": "Select allows users to make a single selection or multiple selections from a list of options. Items can be a simple list, grouped, simple multi-select. User selections typically appear within the Select Box once created unless multiple selections are made, where truncation or another method of showing these selections is required.\n\n***When the list of options contains “Actions”, use a ***[Dropdown component](https://xplor-apollo.herokuapp.com/?path=/story/components-dropdown--simple). \n\nThe `selectIcon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n---"
2100
+ "value": "Select allows users to make a single selection or multiple selections from a list of options. Items can be a simple list, grouped, simple multi-select. User selections typically appear within the Select Box once created unless multiple selections are made, where truncation or another method of showing these selections is required.\n\n***When the list of options contains “Actions”, use a ***[Dropdown component](https://apollo.xplordocs.com/?path=/story/components-dropdown--simple).\n\nThe `selectIcon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n---"
1777
2101
  },
1778
2102
  "attributes": [
1779
2103
  {
@@ -1792,6 +2116,48 @@
1792
2116
  "name": "disabled",
1793
2117
  "description": "Whether the field is disabled"
1794
2118
  },
2119
+ {
2120
+ "name": "dropdown-placement",
2121
+ "description": "Initial Floating UI placement for the options panel (e.g. `top-start`, `bottom-start`).\nForwarded to the inner `xpl-dropdown` when the menu is open.",
2122
+ "values": [
2123
+ {
2124
+ "name": "bottom"
2125
+ },
2126
+ {
2127
+ "name": "bottom-end"
2128
+ },
2129
+ {
2130
+ "name": "bottom-start"
2131
+ },
2132
+ {
2133
+ "name": "left"
2134
+ },
2135
+ {
2136
+ "name": "left-end"
2137
+ },
2138
+ {
2139
+ "name": "left-start"
2140
+ },
2141
+ {
2142
+ "name": "right"
2143
+ },
2144
+ {
2145
+ "name": "right-end"
2146
+ },
2147
+ {
2148
+ "name": "right-start"
2149
+ },
2150
+ {
2151
+ "name": "top"
2152
+ },
2153
+ {
2154
+ "name": "top-end"
2155
+ },
2156
+ {
2157
+ "name": "top-start"
2158
+ }
2159
+ ]
2160
+ },
1795
2161
  {
1796
2162
  "name": "error",
1797
2163
  "description": "If an empty string (attribute present with no value),\nwill display visually as an error. If a string is\nincluded, will display visually as an error and include\nthe value as an error message."
@@ -1966,7 +2332,7 @@
1966
2332
  "name": "xpl-slideout",
1967
2333
  "description": {
1968
2334
  "kind": "markdown",
1969
- "value": "Content and Footer subcomponents are optional and can be hidden. Slideout always has a header with an X close button upper right. Slide Out Panel OPTIONALLY uses the [<xpl-backdrop>](https://xplor-apollo.herokuapp.com/?path=/story/components-backdrop--backdrop) component to overlay content and create focus on the Slide Out Panel content."
2335
+ "value": "Content and Footer subcomponents are optional and can be hidden. Slideout always has a header with an X close button upper right. Slide Out Panel OPTIONALLY uses the [<xpl-backdrop>](https://apollo.xplordocs.com/?path=/story/components-backdrop--backdrop) component to overlay content and create focus on the Slide Out Panel content."
1970
2336
  },
1971
2337
  "attributes": [
1972
2338
  {
@@ -1995,13 +2361,127 @@
1995
2361
  }
1996
2362
  ]
1997
2363
  },
2364
+ {
2365
+ "name": "xpl-spotlight",
2366
+ "description": {
2367
+ "kind": "markdown",
2368
+ "value": "`xpl-spotlight` renders a guided-tour callout with an anchor dot, optional media, step messaging, and prop-driven footer actions. It can either render inline using the requested `anchorPosition` or attach to a target element with Floating UI when `target` is provided."
2369
+ },
2370
+ "attributes": [
2371
+ {
2372
+ "name": "action-layout",
2373
+ "description": "Footer action layout. `default` and `dual` both render the standard Back/Next layout, while\n`single` renders a single acknowledgement CTA (e.g. \"Got it!\").\nOnly applies when `showActions` is `true`.",
2374
+ "values": [
2375
+ {
2376
+ "name": "default"
2377
+ },
2378
+ {
2379
+ "name": "dual"
2380
+ },
2381
+ {
2382
+ "name": "single"
2383
+ }
2384
+ ]
2385
+ },
2386
+ {
2387
+ "name": "anchor-position",
2388
+ "description": "Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.",
2389
+ "values": [
2390
+ {
2391
+ "name": "bottom-left"
2392
+ },
2393
+ {
2394
+ "name": "bottom-right"
2395
+ },
2396
+ {
2397
+ "name": "top-left"
2398
+ },
2399
+ {
2400
+ "name": "top-right"
2401
+ }
2402
+ ]
2403
+ },
2404
+ {
2405
+ "name": "body",
2406
+ "description": "Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph)."
2407
+ },
2408
+ {
2409
+ "name": "current-step",
2410
+ "description": "Current step index (1-based). Used with `totalSteps` for the step label and for disabling\ndefault Back/Next when `showSteps` is true."
2411
+ },
2412
+ {
2413
+ "name": "heading",
2414
+ "description": "Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span)."
2415
+ },
2416
+ {
2417
+ "name": "is-dismissible",
2418
+ "description": "Whether to show the dismiss (close) control."
2419
+ },
2420
+ {
2421
+ "name": "is-open",
2422
+ "description": "Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden."
2423
+ },
2424
+ {
2425
+ "name": "primary-action-label",
2426
+ "description": "Label used for the default primary action button. Only applies when `showActions` is `true`."
2427
+ },
2428
+ {
2429
+ "name": "secondary-action-label",
2430
+ "description": "Label used for the default secondary action button. Only applies when `showActions` is `true`."
2431
+ },
2432
+ {
2433
+ "name": "show-actions",
2434
+ "description": "Whether to show the actions row (primary / secondary and optional step counter).\nWhen `false`, the spotlight has no action buttons — useful for single-step\ninformational callouts that rely solely on the dismiss control."
2435
+ },
2436
+ {
2437
+ "name": "show-image",
2438
+ "description": "When true, the media region is shown. Slotted `image` content is rendered when present;\notherwise the built-in placeholder UI is shown. When false, the entire media block is hidden."
2439
+ },
2440
+ {
2441
+ "name": "show-steps",
2442
+ "description": "Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether\ndefault Back/Next use step-based disabled state."
2443
+ },
2444
+ {
2445
+ "name": "target",
2446
+ "description": "CSS selector for the element this spotlight anchors to. When set, placement uses Floating UI\n(`computePosition` with `strategy: 'fixed'`, plus `flip`, `shift`, `offset`) and `autoUpdate`\nfor scroll/resize. The host receives `left` / `top` and the `xpl-spotlight--anchored` class.\nInvalid selectors are ignored; layout falls back to `anchor-position`."
2447
+ },
2448
+ {
2449
+ "name": "total-steps",
2450
+ "description": "Total number of steps (1-based upper bound). Used with `currentStep` for the step label and\nfor disabling default Back/Next when `showSteps` is true."
2451
+ }
2452
+ ]
2453
+ },
1998
2454
  {
1999
2455
  "name": "xpl-tab",
2000
2456
  "description": {
2001
2457
  "kind": "markdown",
2002
- "value": ""
2458
+ "value": "`xpl-tab` is the **label / trigger** for one tab in an `xpl-tabs` group. Place each instance in the **`heading`** slot of `xpl-tabs`. The **`target`** string links this tab to the matching **`xpl-tab-panel`** (same `target` value). The parent sets **`selected`** and syncs **`value`**; you normally do not set `selected` by hand.\n\nUnderline tabs render a native **`<button role=\"tab\">`**; segment tabs render **`xpl-button`** with the same tab semantics on the inner control. For variant-specific examples, icon usage, and token tables, see the matching section on the **Tabs** or **Segment control** Storybook page.\n\n**`group-disabled`** is applied by `xpl-tabs` when the group has **`disabled`**; it keeps pills and underline buttons in a disabled state together with the parent."
2003
2459
  },
2004
2460
  "attributes": [
2461
+ {
2462
+ "name": "disabled",
2463
+ "description": "Disables this tab (pill or underline)."
2464
+ },
2465
+ {
2466
+ "name": "data-group-disabled",
2467
+ "description": "Set when the parent `xpl-tabs` has `disabled` (group-disabled)."
2468
+ },
2469
+ {
2470
+ "name": "icon",
2471
+ "description": "Optional icon name for segment-style pills (`type=\"segment\"` on parent `xpl-tabs`). Ignored for default tabs."
2472
+ },
2473
+ {
2474
+ "name": "icon-position",
2475
+ "description": "Icon position for segment-style pills.",
2476
+ "values": [
2477
+ {
2478
+ "name": "end"
2479
+ },
2480
+ {
2481
+ "name": "start"
2482
+ }
2483
+ ]
2484
+ },
2005
2485
  {
2006
2486
  "name": "selected",
2007
2487
  "description": "Whether the tab is selected"
@@ -2016,7 +2496,7 @@
2016
2496
  "name": "xpl-tab-panel",
2017
2497
  "description": {
2018
2498
  "kind": "markdown",
2019
- "value": ""
2499
+ "value": "`xpl-tab-panel` is the **content region** for one tab. Place each panel in the **`panel`** slot of `xpl-tabs` and set **`target`** to the same string as its paired **`xpl-tab`**. Only the panel whose `target` matches the group’s selection is visible; others stay hidden via CSS until selected."
2020
2500
  },
2021
2501
  "attributes": [
2022
2502
  {
@@ -2106,13 +2586,29 @@
2106
2586
  "name": "xpl-tabs",
2107
2587
  "description": {
2108
2588
  "kind": "markdown",
2109
- "value": "Tabs organize content across different screens, data sets, and other interactions."
2589
+ "value": "`xpl-tabs` groups related views into a single surface: users pick a **tab** to show the matching **panel**. It implements the WAI-ARIA tabs pattern with a horizontal tab list, optional full-width layout, and two visual styles—**underline** (`type=\"tabs\"`, default) and **segment** (`type=\"segment\"`, pill controls in a bordered track)—selected with the **`type`** prop. On narrow viewports the heading row is replaced by an `xpl-select` so the same targets and keyboard behavior stay consistent.\n\nThe **Tabs** and **Segment control** Storybook entries document this **one component** with different defaults and Figma references. Each page adds variant-specific guidance (when to use, examples, tokens); the sections below describe behavior that is **the same for both** styles.\n\nPair **`xpl-tab` (slot `heading`)** with **`xpl-tab-panel` (slot `panel`)** and use the same **`target`** string on each pair so selection stays in sync."
2110
2590
  },
2111
2591
  "attributes": [
2592
+ {
2593
+ "name": "disabled",
2594
+ "description": "Disables the whole tab group (headings, mobile select, and segment pills)."
2595
+ },
2112
2596
  {
2113
2597
  "name": "full-width",
2114
2598
  "description": "Whether to make the tabs full width"
2115
2599
  },
2600
+ {
2601
+ "name": "type",
2602
+ "description": "Visual and layout variant: classic underline tabs or segment (pill) controls.",
2603
+ "values": [
2604
+ {
2605
+ "name": "segment"
2606
+ },
2607
+ {
2608
+ "name": "tabs"
2609
+ }
2610
+ ]
2611
+ },
2116
2612
  {
2117
2613
  "name": "value",
2118
2614
  "description": "The selected tab target value, defaults to the first tab"
@@ -2123,15 +2619,44 @@
2123
2619
  "name": "xpl-tag",
2124
2620
  "description": {
2125
2621
  "kind": "markdown",
2126
- "value": "Tags represent a set of interactive keywords that help label, organize, and categorize objects. Tags can be added or removed from an object by the user. Unlike Badges, Tags are clickable, draggable, used in dropdowns, multi-select, search bars, etc.."
2622
+ "value": "Tags represent a set of interactive keywords that help label, organize, and categorize objects. Tags can be added or removed from an object by the user. Unlike Badges, Tags are clickable, used in dropdowns, multi-select, search bars, etc."
2127
2623
  },
2128
- "attributes": []
2624
+ "attributes": [
2625
+ {
2626
+ "name": "disabled",
2627
+ "description": "Whether the tag is disabled"
2628
+ },
2629
+ {
2630
+ "name": "dismissible",
2631
+ "description": "Whether the tag shows a dismiss button"
2632
+ },
2633
+ {
2634
+ "name": "is-draggable",
2635
+ "description": "When true, the tag label uses native HTML5 drag (the inner label is the drag source).\nNamed `isDraggable` so the Stencil prop does not collide with the native `HTMLElement.draggable`\nAPI. `reflect: false` avoids syncing a `draggable` attribute onto the host; the inner label\nremains the drag source. Host `onDragStart` still suppresses stray native drags from host chrome."
2636
+ },
2637
+ {
2638
+ "name": "size",
2639
+ "description": "The size of the tag",
2640
+ "values": [
2641
+ {
2642
+ "name": "default"
2643
+ },
2644
+ {
2645
+ "name": "sm"
2646
+ }
2647
+ ]
2648
+ },
2649
+ {
2650
+ "name": "tag-id",
2651
+ "description": "Optional stable id for the tag. When set, it is included in `tagDragStart` / `tagDragEnd` detail\nand written to `dataTransfer` as `application/x-tag-id`."
2652
+ }
2653
+ ]
2129
2654
  },
2130
2655
  {
2131
2656
  "name": "xpl-toast",
2132
2657
  "description": {
2133
2658
  "kind": "markdown",
2134
- "value": "Toasts are brief, non-disruptive messages that provide quick, at-a-glance feedback. They can have 3 sentiments; neutral, positive and negative and contain actions such as a button or link, or a close button. Messaging can include a title and caption limited to 85 characters. Keep your toast messaging short and to the point and tone in line with the sentiment of the Toast. \n\nThe Toast component is configurable by Sentiment plus show/hide properties for Icon, Caption, Button and Dismissible. Use the nested component’s properties to customize further as needed. \n\nWhen possible, Toasts should auto-dismiss after 8 seconds. When an action is present, it may not be desirable to time out the Toast depending on your specific context. \n\nMatch your messaging with the sentiment of the toast. Most messages will have a neutral sentiment. Reserve negative sentiments for when an explicit failure has occurred. Give users the information they need to correct the issue. \n\nToasts only support a single action and up to 85 characters. If multiple actions can be taken, or the message is longer than a few words, use a [Modal component](https://xplor-apollo.herokuapp.com/?path=/story/components-modal--modal) instead."
2659
+ "value": "Toasts are brief, non-disruptive messages that provide quick, at-a-glance feedback. They can have 3 sentiments; neutral, positive and negative and contain actions such as a button or link, or a close button. Messaging can include a title and caption limited to 85 characters. Keep your toast messaging short and to the point and tone in line with the sentiment of the Toast. \n\nThe Toast component is configurable by Sentiment plus show/hide properties for Icon, Caption, Button and Dismissible. Use the nested component’s properties to customize further as needed. \n\nWhen possible, Toasts should auto-dismiss after 8 seconds. When an action is present, it may not be desirable to time out the Toast depending on your specific context. \n\nMatch your messaging with the sentiment of the toast. Most messages will have a neutral sentiment. Reserve negative sentiments for when an explicit failure has occurred. Give users the information they need to correct the issue. \n\nToasts only support a single action and up to 85 characters. If multiple actions can be taken, or the message is longer than a few words, use a [Modal component](https://apollo.xplordocs.com/?path=/story/components-modal--modal) instead."
2135
2660
  },
2136
2661
  "attributes": [
2137
2662
  {
@@ -2272,6 +2797,72 @@
2272
2797
  }
2273
2798
  ]
2274
2799
  },
2800
+ {
2801
+ "name": "xpl-top-nav",
2802
+ "description": {
2803
+ "kind": "markdown",
2804
+ "value": "Horizontal top navigation with **`left-aside`** and a **right rail**: **`right-aside`** then **user menu**\n(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`**).\nOptional **`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.\n\n**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).\n**`xpl-top-nav-item`** **`slot=\"dropdown\"`** uses document **capture** for **Escape** first; the shell uses **bubble**\non **`ownerDocument`** so nested dropdowns close before the drawer.\n\n**Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens under this subtree\nresolve to dark-mode values even when the page root is light. Floating overlays (e.g. **`xpl-popover`** / **`xpl-dropdown`**\ncontent teleported outside the host) do not inherit this scope — add **`dark`** on those panels if they should match.\n\n**Layout:** **`right-aside`** and the user-menu region are wrapped internally (**`.xpl-top-nav__right-lead`**, etc.).\nConsumers should not add those BEM classes — slot content only.\n\n**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.\n\n**Narrow / mobile** (same breakpoint as above): **`slot=\"left-aside\"`** is **hidden** in the bar until **`nav-control`**\nis set **and** the drawer is open (floating panel per Figma). **Without **`nav-control`**, there is no mobile drawer** —\nprimary links remain hidden below **`md`** until the viewport is wide enough for the horizontal bar. The built-in **brand**\nstays in the top bar (**hamburger → brand** when **`nav-control`** is set). **`right-aside`** is hidden in the bar on narrow\nviewports (**`top-nav.css`**, one pixel below Tailwind **`md`**); duplicate those actions into **`xpl-nav-header-menu`**\n**`slot=\"right-aside-mobile\"`** (below profile, above the list; narrow-only CSS in **`top-nav.css`**) per Figma.\n\n**Account menu vs drawer:** Opening the built-in account **`xpl-popover`** while the mobile drawer is open **closes the drawer**\nand emits **`navOpen(false)`** so the two layers do not stack."
2805
+ },
2806
+ "attributes": [
2807
+ {
2808
+ "name": "brand-href",
2809
+ "description": "Destination URL for the brand control when using native navigation (**`<a href>`**). When unset, the brand is a\n**`role=\"button\"`** control and **`brandClick`** fires on activation instead."
2810
+ },
2811
+ {
2812
+ "name": "brand-logo",
2813
+ "description": "Optional image URL for the brand mark (leading the brand row, before **`brand-name`** text). When set, renders\n**`<img class=\"xpl-top-nav__brand-logo\">`** and ignores **`slot=\"brand-logo\"`** for the mark. When unset, use\n**`slot=\"brand-logo\"`** for custom logo content."
2814
+ },
2815
+ {
2816
+ "name": "brand-name",
2817
+ "description": "Visible product / app name next to **`brand-logo`**. Omit for logo-only; provide **`brand-logo`** and/or this\nstring to show the built-in brand row (**`left-aside`** is then primary nav links only)."
2818
+ },
2819
+ {
2820
+ "name": "child-account-label",
2821
+ "description": "Label text for the built-in account menu trigger (shown **before** the **`chevron-down`** icon) when **`slot=\"user-menu\"`**\nis present and **`slot=\"user-menu-trigger\"`** is not used. When empty or whitespace-only, the trigger shows only the\nchevron and uses **`aria-label=\"Open account menu\"`** on the button."
2822
+ },
2823
+ {
2824
+ "name": "label",
2825
+ "description": "Accessible name for the `<nav>` landmark (maps to `aria-label`).\nUse a unique label when the page has multiple navigation regions (e.g. side nav + top nav).\nWhen unset, defaults to `top-navigation-bar`."
2826
+ },
2827
+ {
2828
+ "name": "nav-control",
2829
+ "description": "When true, renders the navigation control (hamburger) for toggling the left slot on small viewports.\nThe 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`**).\nReflected to the **`nav-control`** attribute so host updates (framework props) re-run **`@Watch`**: drawer state and\ndocument **Escape** handling stay in sync, the host **`xpl-top-nav--nav-control`** class toggles for **`top-nav.css`**, and\n**`navOpen(false)`** is emitted if **`nav-control`** is cleared while the drawer was open."
2830
+ }
2831
+ ]
2832
+ },
2833
+ {
2834
+ "name": "xpl-top-nav-item",
2835
+ "description": {
2836
+ "kind": "markdown",
2837
+ "value": "Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role=\"listitem\"`** when the row\nparticipates in a list: a **`role=\"list\"`** parent, **`slot=\"left-aside\"`** on **`xpl-top-nav`** (list host is\n**`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows\nunder **`xpl-nav-header-menu`**. That flag is\nkept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and\non **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot=\"left-aside\"`** under **`xpl-top-nav`**) so DOM context changes\nwithout a full reconnect still re-sync. The internal\n**`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),\nas do **`slot=\"right-aside-mobile\"`** rows (not a list). **`slot=\"dropdown\"`** uses a local **`.xpl-top-nav-item__dropdown`**\npanel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.\n\n**Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on\ncustom trigger content — the component renders the inner wrapper and BEM elements.\n\n**Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode\nvalues even when the page root is light (consistent with **`xpl-top-nav`**)."
2838
+ },
2839
+ "attributes": [
2840
+ {
2841
+ "name": "active",
2842
+ "description": "When true, adds **`xpl-top-nav-item--active`** for persistent accent styling (e.g. link color on the bar, or\nchrome inside **`xpl-nav-header-menu`**). Separate from **`selected`**, which sets **`aria-current=\"page\"`** and\n**`--selected`**. Use both when the design needs “current page” semantics plus the active visual treatment."
2843
+ },
2844
+ {
2845
+ "name": "href",
2846
+ "description": "If set without **`slot=\"dropdown\"`**, the inner control renders as a native **`<a href>`** (link mode)."
2847
+ },
2848
+ {
2849
+ "name": "icon",
2850
+ "description": "Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set)."
2851
+ },
2852
+ {
2853
+ "name": "item-aria-label",
2854
+ "description": "Accessible name for the inner control when there is no **`label`** and no default-slot text (e.g. icon-only).\nIf omitted in that case, **`aria-label`** defaults to **`Navigation item`**. Ignored when **`label`** or default-slot\ncontent supplies a visible name."
2855
+ },
2856
+ {
2857
+ "name": "label",
2858
+ "description": "Text label. If omitted, use the default slot for custom trigger content. Long labels use **`text-ellipsis`**\non **`.xpl-top-nav-item__label`** (see `top-nav.css`); **`title`** is set to the full string for hover tooltips\nwhen the visual line clips."
2859
+ },
2860
+ {
2861
+ "name": "selected",
2862
+ "description": "When true, sets **`aria-current=\"page\"`** and selected styling."
2863
+ }
2864
+ ]
2865
+ },
2275
2866
  {
2276
2867
  "name": "xpl-utility-bar",
2277
2868
  "description": {