@xplortech/apollo-core 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/.typings/apollo-components.html-data.json +737 -63
  2. package/build/style.css +5415 -1805
  3. package/dist/apollo-core/apollo-core.css +62 -22
  4. package/dist/apollo-core/apollo-core.esm.js +1 -1
  5. package/dist/apollo-core/{p-8a1affce.entry.js → p-084d26ed.entry.js} +1 -1
  6. package/dist/apollo-core/p-146d5d55.entry.js +1 -0
  7. package/dist/apollo-core/p-16742606.entry.js +1 -0
  8. package/dist/apollo-core/{p-42016063.entry.js → p-28d12fd3.entry.js} +1 -1
  9. package/dist/apollo-core/p-3eb5eb7c.entry.js +1 -0
  10. package/dist/apollo-core/p-4882f0bd.entry.js +1 -0
  11. package/dist/apollo-core/p-64b34268.entry.js +1 -0
  12. package/dist/apollo-core/p-6c956d4e.entry.js +1 -0
  13. package/dist/apollo-core/p-71b75f36.entry.js +1 -0
  14. package/dist/apollo-core/{p-02167464.entry.js → p-7eb86c63.entry.js} +1 -1
  15. package/dist/apollo-core/{p-1fd3dc87.entry.js → p-84254a24.entry.js} +1 -1
  16. package/dist/apollo-core/p-9f2a0321.entry.js +1 -0
  17. package/dist/apollo-core/{p-C_Z2nG0p.js → p-C7bgJs6C.js} +2 -2
  18. package/dist/apollo-core/p-cde83ab0.entry.js +1 -0
  19. package/dist/apollo-core/p-e7363036.entry.js +1 -0
  20. package/dist/cjs/apollo-core.cjs.js +3 -3
  21. package/dist/cjs/{index-DH6pgWru.js → index-BQ97-AWw.js} +18 -15
  22. package/dist/cjs/loader.cjs.js +2 -2
  23. package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
  24. package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
  25. package/dist/cjs/{xpl-avatar_47.cjs.entry.js → xpl-avatar_61.cjs.entry.js} +6096 -1461
  26. package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
  27. package/dist/cjs/xpl-calendar.cjs.entry.js +2 -2
  28. package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
  29. package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
  30. package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
  31. package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
  32. package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
  33. package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
  34. package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
  35. package/dist/cjs/xpl-toggle.cjs.entry.js +4 -4
  36. package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
  37. package/dist/collection/collection-manifest.json +18 -7
  38. package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
  39. package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
  40. package/dist/collection/components/xpl-avatar/avatar.stories.js +122 -107
  41. package/dist/collection/components/xpl-avatar/xpl-avatar.js +249 -15
  42. package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
  43. package/dist/collection/components/xpl-badge/badge.stories.js +1 -33
  44. package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
  45. package/dist/collection/components/xpl-banner/xpl-banner.js +4 -3
  46. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
  47. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
  48. package/dist/collection/components/xpl-button/xpl-button.js +21 -3
  49. package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
  50. package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
  51. package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +47 -25
  52. package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
  53. package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
  54. package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
  55. package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
  56. package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
  57. package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
  58. package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
  59. package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
  60. package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +2 -2
  61. package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
  62. package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
  63. package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
  64. package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
  65. package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
  66. package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +46 -53
  67. package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
  68. package/dist/collection/components/xpl-input/input.stories.js +96 -1
  69. package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
  70. package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
  71. package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
  72. package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +5 -5
  73. package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +485 -0
  74. package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
  75. package/dist/collection/components/xpl-input/xpl-input.js +130 -18
  76. package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
  77. package/dist/collection/components/xpl-list/list.stories.js +300 -63
  78. package/dist/collection/components/xpl-list/xpl-list-item/xpl-list-item.js +818 -0
  79. package/dist/collection/components/xpl-list/xpl-list.js +579 -21
  80. package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
  81. package/dist/collection/components/xpl-modal/xpl-modal.js +1 -1
  82. package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
  83. package/dist/collection/components/xpl-pagination/xpl-pagination.js +3 -3
  84. package/dist/collection/components/xpl-panel/panel.stories.js +5 -3
  85. package/dist/collection/components/xpl-panel/xpl-panel.js +3 -3
  86. package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
  87. package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
  88. package/dist/collection/components/xpl-progress-indicator/progress-indicator.stories.js +118 -0
  89. package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +171 -0
  90. package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
  91. package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
  92. package/dist/collection/components/xpl-select/xpl-select.js +6 -6
  93. package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +2 -2
  94. package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +2 -2
  95. package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
  96. package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
  97. package/dist/collection/components/xpl-spotlight/spotlight.stories.js +385 -0
  98. package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +1085 -0
  99. package/dist/collection/components/xpl-tab/xpl-tab.js +261 -8
  100. package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +22 -15
  101. package/dist/collection/components/xpl-table/table.stories.js +319 -67
  102. package/dist/collection/components/xpl-table/utils/move-row-dom.js +50 -0
  103. package/dist/collection/components/xpl-table/utils/table-internal.js +58 -0
  104. package/dist/collection/components/xpl-table/xpl-table-body/xpl-table-body.js +7 -0
  105. package/dist/collection/components/xpl-table/xpl-table-cell/xpl-table-cell.js +155 -0
  106. package/dist/collection/components/xpl-table/xpl-table-footer/xpl-table-footer.js +7 -0
  107. package/dist/collection/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.js +37 -0
  108. package/dist/collection/components/xpl-table/xpl-table-header/table-header.stories.js +131 -0
  109. package/dist/collection/components/xpl-table/xpl-table-header/xpl-table-header.js +7 -0
  110. package/dist/collection/components/xpl-table/xpl-table-header-cell/table-header-cell.stories.js +105 -0
  111. package/dist/collection/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.js +402 -0
  112. package/dist/collection/components/xpl-table/xpl-table-row/xpl-table-row.js +121 -0
  113. package/dist/collection/components/xpl-table/xpl-table.js +1448 -143
  114. package/dist/collection/components/xpl-tabs/segment-control.stories.js +31 -0
  115. package/dist/collection/components/xpl-tabs/tabs.shared.js +156 -0
  116. package/dist/collection/components/xpl-tabs/tabs.stories.js +10 -60
  117. package/dist/collection/components/xpl-tabs/xpl-tabs.js +338 -62
  118. package/dist/collection/components/xpl-tag/tag.stories.js +153 -0
  119. package/dist/collection/components/xpl-tag/xpl-tag.js +312 -9
  120. package/dist/collection/components/xpl-toast/xpl-toast.js +2 -2
  121. package/dist/collection/components/xpl-toggle/xpl-toggle.js +3 -3
  122. package/dist/collection/components/xpl-toolbar/xpl-toolbar.js +2 -2
  123. package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
  124. package/dist/collection/components/xpl-top-nav/top-nav.stories.js +625 -0
  125. package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +122 -0
  126. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +481 -0
  127. package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +433 -0
  128. package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
  129. package/dist/collection/utils/lifecycle.js +79 -0
  130. package/dist/collection/utils/tab-a11y-ids.js +22 -0
  131. package/dist/components/floating-ui.dom.js +1 -0
  132. package/dist/components/index.js +1 -1
  133. package/dist/components/lifecycle.js +1 -0
  134. package/dist/components/tab-a11y-ids.js +1 -0
  135. package/dist/components/xpl-accordion.js +1 -1
  136. package/dist/components/xpl-application-shell.js +1 -1
  137. package/dist/components/xpl-avatar2.js +1 -1
  138. package/dist/components/xpl-backdrop2.js +1 -1
  139. package/dist/components/xpl-badge2.js +1 -1
  140. package/dist/components/xpl-banner.js +1 -1
  141. package/dist/components/xpl-breadcrumb-item.js +1 -1
  142. package/dist/components/xpl-breadcrumbs.js +1 -1
  143. package/dist/components/xpl-button-row.js +1 -1
  144. package/dist/components/xpl-button2.js +1 -1
  145. package/dist/components/xpl-calendar.js +1 -1
  146. package/dist/components/xpl-checkbox2.js +1 -1
  147. package/dist/components/xpl-choicelist.js +1 -1
  148. package/dist/components/xpl-content-area.js +1 -1
  149. package/dist/components/xpl-dashboard.js +1 -1
  150. package/dist/components/xpl-data-card.js +1 -1
  151. package/dist/components/xpl-divider2.js +1 -1
  152. package/dist/components/xpl-dropdown-group2.js +1 -1
  153. package/dist/components/xpl-dropdown-heading2.js +1 -1
  154. package/dist/components/xpl-dropdown-option2.js +1 -1
  155. package/dist/components/xpl-dropdown2.js +1 -1
  156. package/dist/components/xpl-dynamic-table-cell.js +1 -1
  157. package/dist/components/xpl-dynamic-table-row.js +1 -1
  158. package/dist/components/xpl-dynamic-table.js +1 -1
  159. package/dist/components/xpl-grid-item.js +1 -1
  160. package/dist/components/xpl-grid.js +1 -1
  161. package/dist/components/xpl-header-accordion.js +1 -1
  162. package/dist/components/xpl-icon2.js +1 -1
  163. package/dist/components/xpl-input-date2.js +1 -1
  164. package/dist/components/xpl-input-file2.js +1 -1
  165. package/dist/components/xpl-input-search.d.ts +11 -0
  166. package/dist/components/xpl-input-search.js +1 -0
  167. package/dist/components/xpl-input-search2.js +1 -0
  168. package/dist/components/xpl-input2.js +1 -1
  169. package/dist/components/xpl-large-card.js +1 -1
  170. package/dist/components/{xpl-progress.d.ts → xpl-list-item.d.ts} +4 -4
  171. package/dist/components/xpl-list-item.js +1 -0
  172. package/dist/components/xpl-list-item2.js +1 -0
  173. package/dist/components/xpl-list.js +1 -1
  174. package/dist/components/xpl-main-nav.js +1 -1
  175. package/dist/components/xpl-modal.js +1 -1
  176. package/dist/components/xpl-nav-header-menu.d.ts +11 -0
  177. package/dist/components/xpl-nav-header-menu.js +1 -0
  178. package/dist/components/xpl-nav-item.js +1 -1
  179. package/dist/components/xpl-pagination.js +1 -1
  180. package/dist/components/xpl-panel.js +1 -1
  181. package/dist/components/xpl-popover2.js +1 -1
  182. package/dist/components/xpl-progress-bar.js +1 -1
  183. package/dist/components/xpl-progress-indicator.d.ts +11 -0
  184. package/dist/components/xpl-progress-indicator.js +1 -0
  185. package/dist/components/xpl-radio2.js +1 -1
  186. package/dist/components/xpl-secondary-nav.js +1 -1
  187. package/dist/components/xpl-select2.js +1 -1
  188. package/dist/components/xpl-side-nav-item.js +1 -1
  189. package/dist/components/xpl-side-nav.js +1 -1
  190. package/dist/components/xpl-skeleton.js +1 -1
  191. package/dist/components/xpl-slideout.js +1 -1
  192. package/dist/components/xpl-spotlight.d.ts +11 -0
  193. package/dist/components/xpl-spotlight.js +1 -0
  194. package/dist/components/xpl-tab-panel.js +1 -1
  195. package/dist/components/xpl-tab.js +1 -1
  196. package/dist/components/xpl-table-body.d.ts +11 -0
  197. package/dist/components/xpl-table-body.js +1 -0
  198. package/dist/components/xpl-table-cell.d.ts +11 -0
  199. package/dist/components/xpl-table-cell.js +1 -0
  200. package/dist/components/xpl-table-cell2.js +1 -0
  201. package/dist/components/xpl-table-footer-cell.d.ts +11 -0
  202. package/dist/components/xpl-table-footer-cell.js +1 -0
  203. package/dist/components/xpl-table-footer-cell2.js +1 -0
  204. package/dist/components/xpl-table-footer.d.ts +11 -0
  205. package/dist/components/xpl-table-footer.js +1 -0
  206. package/dist/components/xpl-table-header-cell.js +1 -1
  207. package/dist/components/xpl-table-header-cell2.js +1 -0
  208. package/dist/components/xpl-table-header.js +1 -1
  209. package/dist/components/xpl-table-row.d.ts +11 -0
  210. package/dist/components/xpl-table-row.js +1 -0
  211. package/dist/components/xpl-table.js +1 -1
  212. package/dist/components/xpl-tabs.js +1 -1
  213. package/dist/components/xpl-tag2.js +1 -1
  214. package/dist/components/xpl-toast.js +1 -1
  215. package/dist/components/xpl-toggle.js +1 -1
  216. package/dist/components/xpl-toolbar.js +1 -1
  217. package/dist/components/xpl-tooltip2.js +1 -1
  218. package/dist/components/xpl-top-nav-item.d.ts +11 -0
  219. package/dist/components/xpl-top-nav-item.js +1 -0
  220. package/dist/components/xpl-top-nav-item2.js +1 -0
  221. package/dist/components/xpl-top-nav.d.ts +11 -0
  222. package/dist/components/xpl-top-nav.js +1 -0
  223. package/dist/components/xpl-utility-bar.js +1 -1
  224. package/dist/docs/xpl-avatar/readme.md +289 -15
  225. package/dist/docs/xpl-badge/readme.md +14 -9
  226. package/dist/docs/xpl-banner/readme.md +48 -11
  227. package/dist/docs/xpl-button/readme.md +28 -18
  228. package/dist/docs/xpl-calendar/readme.md +1 -1
  229. package/dist/docs/xpl-checkbox/readme.md +19 -16
  230. package/dist/docs/xpl-divider/readme.md +6 -4
  231. package/dist/docs/xpl-dropdown/readme.md +1 -1
  232. package/dist/docs/xpl-dynamic-table/readme.md +22 -19
  233. package/dist/docs/xpl-dynamic-table-cell/readme.md +20 -18
  234. package/dist/docs/xpl-dynamic-table-row/readme.md +21 -19
  235. package/dist/docs/xpl-icon/readme.md +15 -3
  236. package/dist/docs/xpl-input/readme.md +66 -41
  237. package/dist/docs/xpl-input/xpl-input-color/readme.md +1 -0
  238. package/dist/docs/xpl-input/xpl-input-phone/readme.md +1 -0
  239. package/dist/docs/xpl-input/xpl-input-search/readme.md +175 -0
  240. package/dist/docs/xpl-input/xpl-input-time/readme.md +1 -0
  241. package/dist/docs/xpl-list/readme.md +320 -10
  242. package/dist/docs/xpl-list/xpl-list-item/readme.md +99 -0
  243. package/dist/docs/xpl-pagination/readme.md +1 -0
  244. package/dist/docs/xpl-panel/readme.md +108 -17
  245. package/dist/docs/xpl-popover/readme.md +2 -0
  246. package/dist/docs/xpl-progress-indicator/readme.md +234 -0
  247. package/dist/docs/xpl-radio/readme.md +6 -4
  248. package/dist/docs/xpl-select/readme.md +2 -1
  249. package/dist/docs/xpl-side-nav/readme.md +2 -2
  250. package/dist/docs/xpl-slideout/readme.md +1 -1
  251. package/dist/docs/xpl-spotlight/readme.md +235 -0
  252. package/dist/docs/xpl-tab/readme.md +43 -7
  253. package/dist/docs/xpl-tab-panel/readme.md +42 -0
  254. package/dist/docs/xpl-table/readme.md +110 -46
  255. package/dist/docs/xpl-table/xpl-table-body/readme.md +10 -0
  256. package/dist/docs/xpl-table/xpl-table-cell/readme.md +33 -0
  257. package/dist/docs/xpl-table/xpl-table-footer/readme.md +10 -0
  258. package/dist/docs/xpl-table/xpl-table-footer-cell/readme.md +30 -0
  259. package/dist/docs/{xpl-table-header → xpl-table/xpl-table-header}/readme.md +13 -13
  260. package/dist/docs/xpl-table/xpl-table-header-cell/readme.md +66 -0
  261. package/dist/docs/xpl-table/xpl-table-row/readme.md +19 -0
  262. package/dist/docs/xpl-tabs/readme.md +62 -8
  263. package/dist/docs/xpl-tag/readme.md +379 -4
  264. package/dist/docs/xpl-toast/readme.md +1 -1
  265. package/dist/docs/xpl-top-nav/readme.md +179 -0
  266. package/dist/docs/xpl-top-nav/xpl-nav-header-menu/readme.md +81 -0
  267. package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +87 -0
  268. package/dist/esm/apollo-core.js +4 -4
  269. package/dist/esm/{index-C_Z2nG0p.js → index-C7bgJs6C.js} +18 -16
  270. package/dist/esm/loader.js +3 -3
  271. package/dist/esm/xpl-accordion.entry.js +3 -3
  272. package/dist/esm/xpl-application-shell.entry.js +2 -2
  273. package/dist/esm/{xpl-avatar_47.entry.js → xpl-avatar_61.entry.js} +6082 -1461
  274. package/dist/esm/xpl-button-row.entry.js +2 -2
  275. package/dist/esm/xpl-calendar.entry.js +2 -2
  276. package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
  277. package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
  278. package/dist/esm/xpl-dynamic-table.entry.js +2 -2
  279. package/dist/esm/xpl-grid-item.entry.js +2 -2
  280. package/dist/esm/xpl-grid.entry.js +2 -2
  281. package/dist/esm/xpl-large-card.entry.js +2 -2
  282. package/dist/esm/xpl-main-nav.entry.js +2 -2
  283. package/dist/esm/xpl-toggle.entry.js +4 -4
  284. package/dist/esm/xpl-toolbar.entry.js +3 -3
  285. package/dist/types/components/xpl-avatar/avatar.stories.d.ts +88 -29
  286. package/dist/types/components/xpl-avatar/xpl-avatar.d.ts +29 -2
  287. package/dist/types/components/xpl-badge/badge.stories.d.ts +0 -19
  288. package/dist/types/components/xpl-button/xpl-button.d.ts +7 -0
  289. package/dist/types/components/xpl-checkbox/xpl-checkbox.d.ts +4 -3
  290. package/dist/types/components/xpl-header-accordion/xpl-header-accordion.d.ts +9 -10
  291. package/dist/types/components/xpl-input/input.stories.d.ts +1 -0
  292. package/dist/types/components/xpl-input/xpl-input-search/xpl-input-search.d.ts +39 -0
  293. package/dist/types/components/xpl-input/xpl-input.d.ts +13 -5
  294. package/dist/types/components/xpl-list/list.stories.d.ts +299 -13
  295. package/dist/types/components/xpl-list/listitem.d.ts +13 -0
  296. package/dist/types/components/xpl-list/xpl-list-item/xpl-list-item.d.ts +71 -0
  297. package/dist/types/components/xpl-list/xpl-list.d.ts +55 -2
  298. package/dist/types/components/xpl-panel/panel.stories.d.ts +2 -0
  299. package/dist/types/components/xpl-progress-indicator/progress-indicator.stories.d.ts +62 -0
  300. package/dist/types/components/xpl-progress-indicator/xpl-progress-indicator.d.ts +11 -0
  301. package/dist/types/components/xpl-spotlight/spotlight.stories.d.ts +197 -0
  302. package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +101 -0
  303. package/dist/types/components/xpl-tab/xpl-tab.d.ts +14 -1
  304. package/dist/types/components/xpl-tab-panel/xpl-tab-panel.d.ts +2 -1
  305. package/dist/types/components/xpl-table/table.stories.d.ts +161 -19
  306. package/dist/types/components/xpl-table/utils/move-row-dom.d.ts +3 -0
  307. package/dist/types/components/xpl-table/utils/table-internal.d.ts +8 -0
  308. package/dist/types/components/xpl-table/xpl-table-body/xpl-table-body.d.ts +3 -0
  309. package/dist/types/components/xpl-table/xpl-table-cell/xpl-table-cell.d.ts +11 -0
  310. package/dist/types/components/xpl-table/xpl-table-footer/xpl-table-footer.d.ts +3 -0
  311. package/dist/types/components/xpl-table/xpl-table-footer-cell/xpl-table-footer-cell.d.ts +4 -0
  312. package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/table-header.stories.d.ts +13 -16
  313. package/dist/types/components/{xpl-table-header-cell → xpl-table/xpl-table-header-cell}/table-header-cell.stories.d.ts +24 -20
  314. package/dist/types/components/xpl-table/xpl-table-header-cell/xpl-table-header-cell.d.ts +32 -0
  315. package/dist/types/components/xpl-table/xpl-table-row/xpl-table-row.d.ts +13 -0
  316. package/dist/types/components/xpl-table/xpl-table.d.ts +123 -21
  317. package/dist/types/components/xpl-tabs/segment-control.stories.d.ts +112 -0
  318. package/dist/types/components/xpl-tabs/tabs.shared.d.ts +156 -0
  319. package/dist/types/components/xpl-tabs/tabs.stories.d.ts +65 -12
  320. package/dist/types/components/xpl-tabs/xpl-tabs.d.ts +37 -18
  321. package/dist/types/components/xpl-tag/tag.stories.d.ts +65 -0
  322. package/dist/types/components/xpl-tag/xpl-tag.d.ts +36 -1
  323. package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +471 -0
  324. package/dist/types/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.d.ts +18 -0
  325. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +48 -0
  326. package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +51 -0
  327. package/dist/types/components.d.ts +1888 -148
  328. package/dist/types/utils/lifecycle.d.ts +16 -0
  329. package/dist/types/utils/tab-a11y-ids.d.ts +4 -0
  330. package/package.json +3 -3
  331. package/dist/apollo-core/p-0bce3874.entry.js +0 -1
  332. package/dist/apollo-core/p-5549756c.entry.js +0 -1
  333. package/dist/apollo-core/p-56fa4941.entry.js +0 -1
  334. package/dist/apollo-core/p-76c324da.entry.js +0 -1
  335. package/dist/apollo-core/p-7a3224b4.entry.js +0 -1
  336. package/dist/apollo-core/p-7e924697.entry.js +0 -1
  337. package/dist/apollo-core/p-9efca9e1.entry.js +0 -1
  338. package/dist/apollo-core/p-b252b380.entry.js +0 -1
  339. package/dist/apollo-core/p-c91daac1.entry.js +0 -1
  340. package/dist/apollo-core/p-d9b62508.entry.js +0 -1
  341. package/dist/apollo-core/p-eaea16d1.entry.js +0 -1
  342. package/dist/apollo-core/p-eed13bca.entry.js +0 -1
  343. package/dist/apollo-core/p-f5af9539.entry.js +0 -1
  344. package/dist/cjs/xpl-list.cjs.entry.js +0 -32
  345. package/dist/cjs/xpl-table-header-cell.cjs.entry.js +0 -57
  346. package/dist/cjs/xpl-table-header.cjs.entry.js +0 -14
  347. package/dist/collection/components/xpl-progress/progress.stories.js +0 -106
  348. package/dist/collection/components/xpl-progress/xpl-progress.js +0 -60
  349. package/dist/collection/components/xpl-table-header/table-header.stories.js +0 -126
  350. package/dist/collection/components/xpl-table-header/xpl-table-header.js +0 -7
  351. package/dist/collection/components/xpl-table-header-cell/table-header-cell.stories.js +0 -75
  352. package/dist/collection/components/xpl-table-header-cell/xpl-table-header-cell.js +0 -188
  353. package/dist/components/xpl-progress.js +0 -1
  354. package/dist/docs/xpl-progress/readme.md +0 -22
  355. package/dist/docs/xpl-table-header-cell/readme.md +0 -47
  356. package/dist/esm/xpl-list.entry.js +0 -30
  357. package/dist/esm/xpl-table-header-cell.entry.js +0 -55
  358. package/dist/esm/xpl-table-header.entry.js +0 -12
  359. package/dist/types/components/xpl-progress/progress.stories.d.ts +0 -38
  360. package/dist/types/components/xpl-progress/xpl-progress.d.ts +0 -6
  361. package/dist/types/components/xpl-table-header-cell/xpl-table-header-cell.d.ts +0 -13
  362. /package/dist/types/components/{xpl-table-header → xpl-table/xpl-table-header}/xpl-table-header.d.ts +0 -0
@@ -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
  {
@@ -546,9 +590,13 @@
546
590
  "name": "xpl-checkbox",
547
591
  "description": {
548
592
  "kind": "markdown",
549
- "value": "Checkboxes allow users to make selections or choices. Checkboxes can be multi-select, and also act as controls."
593
+ "value": "Checkboxes allow users to make selections or choices. Checkboxes can be multi-select, and also act as controls.\r\n\r\nProvide visible label text in the default slot, or set `aria-label` when the checkbox has no adjacent label (for example, icon-only toolbars or table selection cells)."
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
  {
@@ -849,7 +897,7 @@
849
897
  "name": "xpl-dynamic-table",
850
898
  "description": {
851
899
  "kind": "markdown",
852
- "value": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe Dynamic Table is a rich content table that can accommodate multiple types of data."
900
+ "value": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\r\n\r\nThe Dynamic Table is a rich content table that can accommodate multiple types of data."
853
901
  },
854
902
  "attributes": []
855
903
  },
@@ -970,7 +1018,7 @@
970
1018
  "name": "xpl-input",
971
1019
  "description": {
972
1020
  "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."
1021
+ "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
1022
  },
975
1023
  "attributes": [
976
1024
  {
@@ -985,9 +1033,13 @@
985
1033
  "name": "allow-custom-option",
986
1034
  "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
1035
  },
1036
+ {
1037
+ "name": "aria-label",
1038
+ "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\"`)."
1039
+ },
988
1040
  {
989
1041
  "name": "autocomplete",
990
- "description": "Hint for form autofill feature\n\nApplies to text, password, number."
1042
+ "description": "Hint for form autofill feature\n\nApplies to text, password, number, and search inputs."
991
1043
  },
992
1044
  {
993
1045
  "name": "date-format",
@@ -1071,7 +1123,7 @@
1071
1123
  },
1072
1124
  {
1073
1125
  "name": "placeholder",
1074
- "description": "Placeholder text that appears when the field has no value\n\nApplies to text, password, number, and date inputs."
1126
+ "description": "Placeholder text that appears when the field has no value\n\nApplies to text, password, number, date, and search inputs."
1075
1127
  },
1076
1128
  {
1077
1129
  "name": "post",
@@ -1083,12 +1135,24 @@
1083
1135
  },
1084
1136
  {
1085
1137
  "name": "readonly",
1086
- "description": "Whether the input is editable\n\nApplies to text, password, number, and date inputs."
1138
+ "description": "Whether the input is editable\n\nApplies to text, password, number, date, and search inputs."
1087
1139
  },
1088
1140
  {
1089
1141
  "name": "required",
1090
1142
  "description": "Whether the input is required\n\nApplies to all input types."
1091
1143
  },
1144
+ {
1145
+ "name": "shape",
1146
+ "description": "Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle).\n\nApplies to search inputs (`type=\"search\"`).",
1147
+ "values": [
1148
+ {
1149
+ "name": "box"
1150
+ },
1151
+ {
1152
+ "name": "rounded"
1153
+ }
1154
+ ]
1155
+ },
1092
1156
  {
1093
1157
  "name": "step",
1094
1158
  "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 +1191,9 @@
1127
1191
  {
1128
1192
  "name": "phone"
1129
1193
  },
1194
+ {
1195
+ "name": "search"
1196
+ },
1130
1197
  {
1131
1198
  "name": "text"
1132
1199
  },
@@ -1137,7 +1204,7 @@
1137
1204
  },
1138
1205
  {
1139
1206
  "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."
1207
+ "description": "Including a `value` will pre-populate the input\nwith the given string.\n\nApplies to text, password, number, date, and search inputs."
1141
1208
  }
1142
1209
  ]
1143
1210
  },
@@ -1325,6 +1392,75 @@
1325
1392
  }
1326
1393
  ]
1327
1394
  },
1395
+ {
1396
+ "name": "xpl-input-search",
1397
+ "description": {
1398
+ "kind": "markdown",
1399
+ "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."
1400
+ },
1401
+ "attributes": [
1402
+ {
1403
+ "name": "aria-label",
1404
+ "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."
1405
+ },
1406
+ {
1407
+ "name": "autocomplete",
1408
+ "description": "Passed to the native input (`autocomplete` attribute). Default `off` matches common\ninline-search UX; browsers may still apply heuristics."
1409
+ },
1410
+ {
1411
+ "name": "disabled",
1412
+ "description": "Disables the field and clear control."
1413
+ },
1414
+ {
1415
+ "name": "error-message-id",
1416
+ "description": "Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`)."
1417
+ },
1418
+ {
1419
+ "name": "has-error",
1420
+ "description": "Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`."
1421
+ },
1422
+ {
1423
+ "name": "has-visible-label",
1424
+ "description": "When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input."
1425
+ },
1426
+ {
1427
+ "name": "input-id",
1428
+ "description": "Associates the control with the parent `xpl-input` label (`for` / `id`)."
1429
+ },
1430
+ {
1431
+ "name": "name",
1432
+ "description": "Form field `name` on the native input."
1433
+ },
1434
+ {
1435
+ "name": "placeholder",
1436
+ "description": "Placeholder shown when the value is empty."
1437
+ },
1438
+ {
1439
+ "name": "readonly",
1440
+ "description": "Whether the input is editable."
1441
+ },
1442
+ {
1443
+ "name": "required",
1444
+ "description": "Whether the input is required."
1445
+ },
1446
+ {
1447
+ "name": "shape",
1448
+ "description": "Shell corner radius: `rounded` (pill) or `box` (rounded rectangle).",
1449
+ "values": [
1450
+ {
1451
+ "name": "box"
1452
+ },
1453
+ {
1454
+ "name": "rounded"
1455
+ }
1456
+ ]
1457
+ },
1458
+ {
1459
+ "name": "value",
1460
+ "description": "Current value (controlled-friendly)."
1461
+ }
1462
+ ]
1463
+ },
1328
1464
  {
1329
1465
  "name": "xpl-input-time",
1330
1466
  "description": {
@@ -1427,9 +1563,118 @@
1427
1563
  "name": "xpl-list",
1428
1564
  "description": {
1429
1565
  "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."
1566
+ "value": ""
1431
1567
  },
1432
- "attributes": []
1568
+ "attributes": [
1569
+ {
1570
+ "name": "label",
1571
+ "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)."
1572
+ },
1573
+ {
1574
+ "name": "labelled-by",
1575
+ "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."
1576
+ },
1577
+ {
1578
+ "name": "reorderable",
1579
+ "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."
1580
+ },
1581
+ {
1582
+ "name": "selectable",
1583
+ "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()`)."
1584
+ }
1585
+ ]
1586
+ },
1587
+ {
1588
+ "name": "xpl-list-item",
1589
+ "description": {
1590
+ "kind": "markdown",
1591
+ "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."
1592
+ },
1593
+ "attributes": [
1594
+ {
1595
+ "name": "disabled",
1596
+ "description": "Whether the item is disabled."
1597
+ },
1598
+ {
1599
+ "name": "error",
1600
+ "description": "Whether to show the item in an error state."
1601
+ },
1602
+ {
1603
+ "name": "hidden",
1604
+ "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."
1605
+ },
1606
+ {
1607
+ "name": "href",
1608
+ "description": "URL for link behavior. When provided, the entire row becomes clickable.\nClicks on `actions` or `avatar` slots are prevented from triggering navigation."
1609
+ },
1610
+ {
1611
+ "name": "item-id",
1612
+ "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."
1613
+ },
1614
+ {
1615
+ "name": "keyboard-active",
1616
+ "description": "When set by the parent, indicates this item is the active keyboard reorder item."
1617
+ },
1618
+ {
1619
+ "name": "radio-name",
1620
+ "description": "Name attribute for radio inputs (shared across selectable items in a list)."
1621
+ },
1622
+ {
1623
+ "name": "reorderable",
1624
+ "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."
1625
+ },
1626
+ {
1627
+ "name": "selectable",
1628
+ "description": "Whether this item is selectable (shows `xpl-radio` in a shared group)."
1629
+ },
1630
+ {
1631
+ "name": "selected",
1632
+ "description": "Whether this item is selected (radio checked state)."
1633
+ },
1634
+ {
1635
+ "name": "show-divider",
1636
+ "description": "Whether to show a divider below the item."
1637
+ },
1638
+ {
1639
+ "name": "title-badge-variant",
1640
+ "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).",
1641
+ "values": [
1642
+ {
1643
+ "name": "blue"
1644
+ },
1645
+ {
1646
+ "name": "error"
1647
+ },
1648
+ {
1649
+ "name": "gray"
1650
+ },
1651
+ {
1652
+ "name": "green"
1653
+ },
1654
+ {
1655
+ "name": "inactive"
1656
+ },
1657
+ {
1658
+ "name": "orange"
1659
+ },
1660
+ {
1661
+ "name": "purple"
1662
+ },
1663
+ {
1664
+ "name": "red"
1665
+ },
1666
+ {
1667
+ "name": "success"
1668
+ },
1669
+ {
1670
+ "name": "warning"
1671
+ },
1672
+ {
1673
+ "name": "yellow"
1674
+ }
1675
+ ]
1676
+ }
1677
+ ]
1433
1678
  },
1434
1679
  {
1435
1680
  "name": "xpl-main-nav",
@@ -1495,6 +1740,23 @@
1495
1740
  }
1496
1741
  ]
1497
1742
  },
1743
+ {
1744
+ "name": "xpl-nav-header-menu",
1745
+ "description": {
1746
+ "kind": "markdown",
1747
+ "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`**)."
1748
+ },
1749
+ "attributes": [
1750
+ {
1751
+ "name": "email",
1752
+ "description": "Email address shown below the username."
1753
+ },
1754
+ {
1755
+ "name": "username",
1756
+ "description": "Display name shown in the profile block."
1757
+ }
1758
+ ]
1759
+ },
1498
1760
  {
1499
1761
  "name": "xpl-nav-item",
1500
1762
  "description": {
@@ -1570,7 +1832,7 @@
1570
1832
  },
1571
1833
  {
1572
1834
  "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",
1835
+ "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
1836
  "values": [
1575
1837
  {
1576
1838
  "name": "default"
@@ -1656,19 +1918,6 @@
1656
1918
  }
1657
1919
  ]
1658
1920
  },
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
1921
  {
1673
1922
  "name": "xpl-progress-bar",
1674
1923
  "description": {
@@ -1724,6 +1973,39 @@
1724
1973
  }
1725
1974
  ]
1726
1975
  },
1976
+ {
1977
+ "name": "xpl-progress-indicator",
1978
+ "description": {
1979
+ "kind": "markdown",
1980
+ "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."
1981
+ },
1982
+ "attributes": [
1983
+ {
1984
+ "name": "current-step",
1985
+ "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]."
1986
+ },
1987
+ {
1988
+ "name": "layout",
1989
+ "description": "Layout direction - 'horizontal' or 'vertical'",
1990
+ "values": [
1991
+ {
1992
+ "name": "horizontal"
1993
+ },
1994
+ {
1995
+ "name": "vertical"
1996
+ }
1997
+ ]
1998
+ },
1999
+ {
2000
+ "name": "show-labels",
2001
+ "description": "Whether to show step labels"
2002
+ },
2003
+ {
2004
+ "name": "show-numbers",
2005
+ "description": "Whether to show step numbers inside circles"
2006
+ }
2007
+ ]
2008
+ },
1727
2009
  {
1728
2010
  "name": "xpl-radio",
1729
2011
  "description": {
@@ -1773,7 +2055,7 @@
1773
2055
  "name": "xpl-select",
1774
2056
  "description": {
1775
2057
  "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---"
2058
+ "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
2059
  },
1778
2060
  "attributes": [
1779
2061
  {
@@ -1966,7 +2248,7 @@
1966
2248
  "name": "xpl-slideout",
1967
2249
  "description": {
1968
2250
  "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."
2251
+ "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
2252
  },
1971
2253
  "attributes": [
1972
2254
  {
@@ -1996,30 +2278,144 @@
1996
2278
  ]
1997
2279
  },
1998
2280
  {
1999
- "name": "xpl-tab",
2281
+ "name": "xpl-spotlight",
2000
2282
  "description": {
2001
2283
  "kind": "markdown",
2002
- "value": ""
2284
+ "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."
2003
2285
  },
2004
2286
  "attributes": [
2005
2287
  {
2006
- "name": "selected",
2007
- "description": "Whether the tab is selected"
2288
+ "name": "action-layout",
2289
+ "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`.",
2290
+ "values": [
2291
+ {
2292
+ "name": "default"
2293
+ },
2294
+ {
2295
+ "name": "dual"
2296
+ },
2297
+ {
2298
+ "name": "single"
2299
+ }
2300
+ ]
2008
2301
  },
2009
2302
  {
2010
- "name": "target",
2011
- "description": "The target of the tab, required for the tab to be selected"
2012
- }
2013
- ]
2014
- },
2015
- {
2016
- "name": "xpl-tab-panel",
2017
- "description": {
2018
- "kind": "markdown",
2019
- "value": ""
2020
- },
2021
- "attributes": [
2022
- {
2303
+ "name": "anchor-position",
2304
+ "description": "Which corner of the card the anchor dot uses when not using `target`, or as the preferred side for Floating UI.",
2305
+ "values": [
2306
+ {
2307
+ "name": "bottom-left"
2308
+ },
2309
+ {
2310
+ "name": "bottom-right"
2311
+ },
2312
+ {
2313
+ "name": "top-left"
2314
+ },
2315
+ {
2316
+ "name": "top-right"
2317
+ }
2318
+ ]
2319
+ },
2320
+ {
2321
+ "name": "body",
2322
+ "description": "Body copy when the `body` slot has no slotted content. Whitespace-only values are treated as empty (no fallback paragraph)."
2323
+ },
2324
+ {
2325
+ "name": "current-step",
2326
+ "description": "Current step index (1-based). Used with `totalSteps` for the step label and for disabling\ndefault Back/Next when `showSteps` is true."
2327
+ },
2328
+ {
2329
+ "name": "heading",
2330
+ "description": "Heading when the `title` slot has no slotted content. Whitespace-only values are treated as empty (no fallback title span)."
2331
+ },
2332
+ {
2333
+ "name": "is-dismissible",
2334
+ "description": "Whether to show the dismiss (close) control."
2335
+ },
2336
+ {
2337
+ "name": "is-open",
2338
+ "description": "Controls whether the spotlight is rendered. When false, the host remains in the DOM but the spotlight UI is hidden."
2339
+ },
2340
+ {
2341
+ "name": "primary-action-label",
2342
+ "description": "Label used for the default primary action button. Only applies when `showActions` is `true`."
2343
+ },
2344
+ {
2345
+ "name": "secondary-action-label",
2346
+ "description": "Label used for the default secondary action button. Only applies when `showActions` is `true`."
2347
+ },
2348
+ {
2349
+ "name": "show-actions",
2350
+ "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."
2351
+ },
2352
+ {
2353
+ "name": "show-image",
2354
+ "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."
2355
+ },
2356
+ {
2357
+ "name": "show-steps",
2358
+ "description": "Whether to show the step counter between actions (`currentStep` of `totalSteps`) and whether\ndefault Back/Next use step-based disabled state."
2359
+ },
2360
+ {
2361
+ "name": "target",
2362
+ "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`."
2363
+ },
2364
+ {
2365
+ "name": "total-steps",
2366
+ "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."
2367
+ }
2368
+ ]
2369
+ },
2370
+ {
2371
+ "name": "xpl-tab",
2372
+ "description": {
2373
+ "kind": "markdown",
2374
+ "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."
2375
+ },
2376
+ "attributes": [
2377
+ {
2378
+ "name": "disabled",
2379
+ "description": "Disables this tab (pill or underline)."
2380
+ },
2381
+ {
2382
+ "name": "data-group-disabled",
2383
+ "description": "Set when the parent `xpl-tabs` has `disabled` (group-disabled)."
2384
+ },
2385
+ {
2386
+ "name": "icon",
2387
+ "description": "Optional icon name for segment-style pills (`type=\"segment\"` on parent `xpl-tabs`). Ignored for default tabs."
2388
+ },
2389
+ {
2390
+ "name": "icon-position",
2391
+ "description": "Icon position for segment-style pills.",
2392
+ "values": [
2393
+ {
2394
+ "name": "end"
2395
+ },
2396
+ {
2397
+ "name": "start"
2398
+ }
2399
+ ]
2400
+ },
2401
+ {
2402
+ "name": "selected",
2403
+ "description": "Whether the tab is selected"
2404
+ },
2405
+ {
2406
+ "name": "target",
2407
+ "description": "The target of the tab, required for the tab to be selected"
2408
+ }
2409
+ ]
2410
+ },
2411
+ {
2412
+ "name": "xpl-tab-panel",
2413
+ "description": {
2414
+ "kind": "markdown",
2415
+ "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."
2416
+ },
2417
+ "attributes": [
2418
+ {
2023
2419
  "name": "selected",
2024
2420
  "description": "Whether the panel is selected"
2025
2421
  },
@@ -2033,24 +2429,120 @@
2033
2429
  "name": "xpl-table",
2034
2430
  "description": {
2035
2431
  "kind": "markdown",
2036
- "value": "Tables are used to organize and display information from a data set."
2432
+ "value": "Compositional tables use CSS grid on the host (`role=\"grid\"`). Legacy mode uses a `<table>`."
2037
2433
  },
2038
2434
  "attributes": [
2039
2435
  {
2040
2436
  "name": "freeze",
2041
- "description": "When true, the first column of the table is sticky and will cover the leftmost rows in a horizontally scrollable container."
2437
+ "description": "When true, the first **data** column (per row) is sticky during horizontal scroll.\nLeading compositional columns are skipped: `selectable` (checkbox) and/or `row-reorderable`\n(grip) are not frozen so they scroll with the grid; the next column stays pinned at `left: 0`."
2042
2438
  },
2043
2439
  {
2044
2440
  "name": "is-sortable",
2045
- "description": "Toggles to show the sort button on each table head"
2441
+ "description": ""
2442
+ },
2443
+ {
2444
+ "name": "label",
2445
+ "description": "Accessible label for the table. Maps to `aria-label` in compositional mode."
2046
2446
  },
2047
2447
  {
2048
2448
  "name": "multiselect",
2049
- "description": "Toggles a selectable checkbox for each row in the table"
2449
+ "description": ""
2450
+ },
2451
+ {
2452
+ "name": "reorder-handle-icon",
2453
+ "description": "Icon name for the optional `xpl-icon` inside each **managed** reorder grip when the row is **not** in\nkeyboard reorder mode (pointer / idle). Set to `\"\"` to omit the icon so you can style the button or author a\nfully custom reorder column in markup. When omitted, defaults to `grip-dots-vertical`."
2454
+ },
2455
+ {
2456
+ "name": "reorder-handle-icon-keyboard",
2457
+ "description": "Icon name for the managed reorder grip **while that row is in keyboard reorder mode** (after the user\nactivates the grip with Enter or Space). Use a different icon than `reorder-handle-icon` so users can see\nthey should use arrow keys. When omitted, defaults to `caret-expand-y` (same as `xpl-list` keyboard reorder).\nSet to `\"\"` to show no icon in keyboard mode only (combine with CSS on\n`.xpl-table__row-drag-handle--keyboard-mode` if needed)."
2458
+ },
2459
+ {
2460
+ "name": "row-reorderable",
2461
+ "description": "When true (compositional mode only), **prepends** a managed reorder column as the **first** grid\ncolumn (empty header + grip button per body row) and enables HTML5 drag-and-drop row reordering\n(same interaction model as `xpl-list`). With `selectable`, DOM order is **reorder | selection |\ndata** unless you author a custom reorder column. The table updates the DOM and emits\n`rowOrderChange`; consumers should persist order if needed. Ignored in legacy `columns`/`data` mode."
2462
+ },
2463
+ {
2464
+ "name": "selectable",
2465
+ "description": "When true (compositional mode only), enables row selection state, the selection toolbar\n(“N Selected”), and `rowSelectionChange`. **You must add the selection column in your\nmarkup:** a header cell with `type=\"checkbox\"`, a body cell containing `xpl-checkbox` per row\n(aligned with that column), and matching `xpl-table-footer-cell` cells when you use a footer.\nEach body row should use `row-id` on `xpl-table-row` (or accept auto-generated ids) so\n`rowSelectionChange` can report `selectedRowIds`.\n\nThe toolbar uses the same layout as `xpl-toolbar` and is visible only while at least one row\nis selected. Use `toolbar-actions-left` / `toolbar-actions-right` slots on this host for bulk\nactions."
2050
2466
  },
2051
2467
  {
2052
2468
  "name": "striped",
2053
- "description": "Toggles an optional styling of the background of each even row of the table body."
2469
+ "description": "Toggles an optional styling of the background of each even row of the\ntable body."
2470
+ }
2471
+ ]
2472
+ },
2473
+ {
2474
+ "name": "xpl-table-body",
2475
+ "description": {
2476
+ "kind": "markdown",
2477
+ "value": ""
2478
+ },
2479
+ "attributes": []
2480
+ },
2481
+ {
2482
+ "name": "xpl-table-cell",
2483
+ "description": {
2484
+ "kind": "markdown",
2485
+ "value": "Body cell for compositional [`xpl-table`](../readme.md). Place content in the default slot; use `align`, `bold`, and `underline` for typography. Interactive controls inside the cell inherit `disabled` when the parent [`xpl-table-row`](../xpl-table-row) is disabled."
2486
+ },
2487
+ "attributes": [
2488
+ {
2489
+ "name": "align",
2490
+ "description": "Horizontal text alignment within the cell.",
2491
+ "values": [
2492
+ {
2493
+ "name": "center"
2494
+ },
2495
+ {
2496
+ "name": "left"
2497
+ },
2498
+ {
2499
+ "name": "right"
2500
+ }
2501
+ ]
2502
+ },
2503
+ {
2504
+ "name": "bold",
2505
+ "description": "Renders cell text in bold (--xpl-font-weight-semibold)."
2506
+ },
2507
+ {
2508
+ "name": "disabled",
2509
+ "description": "Whether the cell and its interactive children are disabled. Set automatically by xpl-table-row."
2510
+ },
2511
+ {
2512
+ "name": "underline",
2513
+ "description": "Adds an underline to cell text."
2514
+ }
2515
+ ]
2516
+ },
2517
+ {
2518
+ "name": "xpl-table-footer",
2519
+ "description": {
2520
+ "kind": "markdown",
2521
+ "value": ""
2522
+ },
2523
+ "attributes": []
2524
+ },
2525
+ {
2526
+ "name": "xpl-table-footer-cell",
2527
+ "description": {
2528
+ "kind": "markdown",
2529
+ "value": ""
2530
+ },
2531
+ "attributes": [
2532
+ {
2533
+ "name": "align",
2534
+ "description": "Horizontal text alignment within the cell.",
2535
+ "values": [
2536
+ {
2537
+ "name": "center"
2538
+ },
2539
+ {
2540
+ "name": "left"
2541
+ },
2542
+ {
2543
+ "name": "right"
2544
+ }
2545
+ ]
2054
2546
  }
2055
2547
  ]
2056
2548
  },
@@ -2058,7 +2550,7 @@
2058
2550
  "name": "xpl-table-header",
2059
2551
  "description": {
2060
2552
  "kind": "markdown",
2061
- "value": "Component parts used to assemble the Dynamic Table.\n\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases."
2553
+ "value": "Semantic wrapper for the header **row group** in a compositional `xpl-table` (`role=\"rowgroup\"`). Place one `xpl-table-row` (with `xpl-table-header-cell` children) inside.\r\n\r\n> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases."
2062
2554
  },
2063
2555
  "attributes": []
2064
2556
  },
@@ -2066,28 +2558,78 @@
2066
2558
  "name": "xpl-table-header-cell",
2067
2559
  "description": {
2068
2560
  "kind": "markdown",
2069
- "value": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\n\nThe `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\n\n---"
2561
+ "value": "> **Note:** This component is currently in beta. Use with caution as it may have breaking changes in future releases.\r\n\r\nThe `icon` property accepts icon names as strings. See [xpl-icon available icons](../xpl-icon/ICONS.md) for the complete list.\r\n\r\nWhen this cell is used inside a compositional [`xpl-table`](../xpl-table) with `selectable`, **you** add a `type=\"checkbox\"` header cell for select-all; `xpl-table` keeps `checked` and `indeterminate` in sync with row selection.\r\n\r\nFor **sortable** columns (`type=\"label\"`), set **`sortable`** and optionally **`sort-key`**; the parent table emits **`sortChanged`** (see [`xpl-table` events](../xpl-table#events)).\r\n\r\n**Column width (compositional grid):** Each header cell defines one grid column on the parent `xpl-table`. By default the track is **`auto`** (sizes from content). Set **`width`** for a fixed pixel width (minimum 48px), or **`column-width`** for any CSS grid track string (`1fr`, `minmax(120px, 1fr)`, etc.). When both are set, **`column-width` wins**.\r\n\r\n---"
2070
2562
  },
2071
2563
  "attributes": [
2564
+ {
2565
+ "name": "align",
2566
+ "description": "Horizontal text alignment within the header cell.",
2567
+ "values": [
2568
+ {
2569
+ "name": "center"
2570
+ },
2571
+ {
2572
+ "name": "left"
2573
+ },
2574
+ {
2575
+ "name": "right"
2576
+ }
2577
+ ]
2578
+ },
2579
+ {
2580
+ "name": "checkbox-aria-label",
2581
+ "description": "Accessible name for the header checkbox (native `aria-label`).\nDefaults to “Select all rows” when `type` is `checkbox`."
2582
+ },
2583
+ {
2584
+ "name": "checked",
2585
+ "description": "Whether the header checkbox is checked"
2586
+ },
2587
+ {
2588
+ "name": "column-width",
2589
+ "description": "CSS grid track size for this column (e.g. `1fr`, `minmax(120px, 1fr)`, `auto`). When set, overrides `width`.\nUse this when you need flexible columns; default layout uses `auto` per column unless you set a track here."
2590
+ },
2072
2591
  {
2073
2592
  "name": "icon",
2074
2593
  "description": "Icon to display in the cell.\n\nSee [xpl-icon available icons](../xpl-icon/ICONS.md) for valid icon names."
2075
2594
  },
2595
+ {
2596
+ "name": "indeterminate",
2597
+ "description": "Whether the checkbox is in indeterminate (partially selected) state"
2598
+ },
2076
2599
  {
2077
2600
  "name": "label",
2078
- "description": ""
2601
+ "description": "Text to display in the cell."
2602
+ },
2603
+ {
2604
+ "name": "sort-direction",
2605
+ "description": "Active sort direction for this column when `sortable`. Set by `xpl-table` when used inside\na compositional table; may be set by the app for controlled updates.",
2606
+ "values": [
2607
+ {
2608
+ "name": "asc"
2609
+ },
2610
+ {
2611
+ "name": "desc"
2612
+ }
2613
+ ]
2614
+ },
2615
+ {
2616
+ "name": "sort-key",
2617
+ "description": "When `sortable` is true, optional stable id used as the key in `sortChanged`’s detail object.\nFalls back to a slug of `label` when omitted."
2079
2618
  },
2080
2619
  {
2081
2620
  "name": "sortable",
2082
- "description": ""
2621
+ "description": "When true (and `type` is `label`), renders a sort control (button + affordance icon)."
2083
2622
  },
2084
2623
  {
2085
2624
  "name": "type",
2086
- "description": "",
2625
+ "description": "The type of cell to render.",
2087
2626
  "values": [
2088
2627
  {
2089
2628
  "name": "checkbox"
2090
2629
  },
2630
+ {
2631
+ "name": "empty"
2632
+ },
2091
2633
  {
2092
2634
  "name": "icon"
2093
2635
  },
@@ -2098,7 +2640,28 @@
2098
2640
  },
2099
2641
  {
2100
2642
  "name": "width",
2101
- "description": ""
2643
+ "description": "Fixed width for this column in pixels (minimum 48px). Sets the grid track to `Npx`.\nIgnored when `columnWidth` is set. When omitted, the column track defaults to `auto` (content-sized)."
2644
+ }
2645
+ ]
2646
+ },
2647
+ {
2648
+ "name": "xpl-table-row",
2649
+ "description": {
2650
+ "kind": "markdown",
2651
+ "value": ""
2652
+ },
2653
+ "attributes": [
2654
+ {
2655
+ "name": "disabled",
2656
+ "description": "Whether the row and its cells are disabled."
2657
+ },
2658
+ {
2659
+ "name": "row-id",
2660
+ "description": "Stable identifier for this row when used with a selectable compositional\n`xpl-table`. If omitted, the parent table assigns a unique id."
2661
+ },
2662
+ {
2663
+ "name": "selected",
2664
+ "description": "Whether the row is visually selected."
2102
2665
  }
2103
2666
  ]
2104
2667
  },
@@ -2106,13 +2669,29 @@
2106
2669
  "name": "xpl-tabs",
2107
2670
  "description": {
2108
2671
  "kind": "markdown",
2109
- "value": "Tabs organize content across different screens, data sets, and other interactions."
2672
+ "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
2673
  },
2111
2674
  "attributes": [
2675
+ {
2676
+ "name": "disabled",
2677
+ "description": "Disables the whole tab group (headings, mobile select, and segment pills)."
2678
+ },
2112
2679
  {
2113
2680
  "name": "full-width",
2114
2681
  "description": "Whether to make the tabs full width"
2115
2682
  },
2683
+ {
2684
+ "name": "type",
2685
+ "description": "Visual and layout variant: classic underline tabs or segment (pill) controls.",
2686
+ "values": [
2687
+ {
2688
+ "name": "segment"
2689
+ },
2690
+ {
2691
+ "name": "tabs"
2692
+ }
2693
+ ]
2694
+ },
2116
2695
  {
2117
2696
  "name": "value",
2118
2697
  "description": "The selected tab target value, defaults to the first tab"
@@ -2123,15 +2702,44 @@
2123
2702
  "name": "xpl-tag",
2124
2703
  "description": {
2125
2704
  "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.."
2705
+ "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
2706
  },
2128
- "attributes": []
2707
+ "attributes": [
2708
+ {
2709
+ "name": "disabled",
2710
+ "description": "Whether the tag is disabled"
2711
+ },
2712
+ {
2713
+ "name": "dismissible",
2714
+ "description": "Whether the tag shows a dismiss button"
2715
+ },
2716
+ {
2717
+ "name": "is-draggable",
2718
+ "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."
2719
+ },
2720
+ {
2721
+ "name": "size",
2722
+ "description": "The size of the tag",
2723
+ "values": [
2724
+ {
2725
+ "name": "default"
2726
+ },
2727
+ {
2728
+ "name": "sm"
2729
+ }
2730
+ ]
2731
+ },
2732
+ {
2733
+ "name": "tag-id",
2734
+ "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`."
2735
+ }
2736
+ ]
2129
2737
  },
2130
2738
  {
2131
2739
  "name": "xpl-toast",
2132
2740
  "description": {
2133
2741
  "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."
2742
+ "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
2743
  },
2136
2744
  "attributes": [
2137
2745
  {
@@ -2272,6 +2880,72 @@
2272
2880
  }
2273
2881
  ]
2274
2882
  },
2883
+ {
2884
+ "name": "xpl-top-nav",
2885
+ "description": {
2886
+ "kind": "markdown",
2887
+ "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."
2888
+ },
2889
+ "attributes": [
2890
+ {
2891
+ "name": "brand-href",
2892
+ "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."
2893
+ },
2894
+ {
2895
+ "name": "brand-logo",
2896
+ "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."
2897
+ },
2898
+ {
2899
+ "name": "brand-name",
2900
+ "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)."
2901
+ },
2902
+ {
2903
+ "name": "child-account-label",
2904
+ "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."
2905
+ },
2906
+ {
2907
+ "name": "label",
2908
+ "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`."
2909
+ },
2910
+ {
2911
+ "name": "nav-control",
2912
+ "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."
2913
+ }
2914
+ ]
2915
+ },
2916
+ {
2917
+ "name": "xpl-top-nav-item",
2918
+ "description": {
2919
+ "kind": "markdown",
2920
+ "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`**)."
2921
+ },
2922
+ "attributes": [
2923
+ {
2924
+ "name": "active",
2925
+ "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."
2926
+ },
2927
+ {
2928
+ "name": "href",
2929
+ "description": "If set without **`slot=\"dropdown\"`**, the inner control renders as a native **`<a href>`** (link mode)."
2930
+ },
2931
+ {
2932
+ "name": "icon",
2933
+ "description": "Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set)."
2934
+ },
2935
+ {
2936
+ "name": "item-aria-label",
2937
+ "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."
2938
+ },
2939
+ {
2940
+ "name": "label",
2941
+ "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."
2942
+ },
2943
+ {
2944
+ "name": "selected",
2945
+ "description": "When true, sets **`aria-current=\"page\"`** and selected styling."
2946
+ }
2947
+ ]
2948
+ },
2275
2949
  {
2276
2950
  "name": "xpl-utility-bar",
2277
2951
  "description": {