@xplortech/apollo-core 2.9.0 → 2.11.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 (331) hide show
  1. package/.typings/apollo-components.html-data.json +55 -14
  2. package/build/style.css +2338 -1902
  3. package/dist/apollo-core/apollo-core.css +26 -24
  4. package/dist/apollo-core/apollo-core.esm.js +1 -1
  5. package/dist/apollo-core/{p-6a15f1e0.entry.js → p-048fdde0.entry.js} +1 -1
  6. package/dist/apollo-core/{p-34438721.entry.js → p-0abc496e.entry.js} +1 -1
  7. package/dist/apollo-core/p-1442c052.entry.js +1 -0
  8. package/dist/apollo-core/{p-3bb14840.entry.js → p-1e498763.entry.js} +1 -1
  9. package/dist/apollo-core/p-26c3a508.entry.js +1 -0
  10. package/dist/apollo-core/{p-36ba29da.entry.js → p-3b8639b7.entry.js} +1 -1
  11. package/dist/apollo-core/p-4ce52107.entry.js +1 -0
  12. package/dist/apollo-core/p-6710fb29.entry.js +1 -0
  13. package/dist/apollo-core/p-7e622809.entry.js +1 -0
  14. package/dist/apollo-core/p-87068144.entry.js +1 -0
  15. package/dist/apollo-core/p-BUgtURvw.js +1 -0
  16. package/dist/apollo-core/p-CK3_k8jD.js +1 -0
  17. package/dist/apollo-core/p-CXkZUm1c.js +2 -0
  18. package/dist/apollo-core/p-a3b4820a.entry.js +1 -0
  19. package/dist/apollo-core/p-b2d6dd0e.entry.js +1 -0
  20. package/dist/apollo-core/{p-ca127ee8.entry.js → p-bd2249ef.entry.js} +1 -1
  21. package/dist/apollo-core/p-c96b7957.entry.js +1 -0
  22. package/dist/apollo-core/p-d6be63cd.entry.js +1 -0
  23. package/dist/apollo-core/{p-b61d7952.entry.js → p-ddf76cee.entry.js} +1 -1
  24. package/dist/apollo-core/p-f0554edd.entry.js +1 -0
  25. package/dist/cjs/apollo-core.cjs.js +3 -3
  26. package/dist/cjs/{index-BQ97-AWw.js → index-BaXVr8ux.js} +40 -9
  27. package/dist/cjs/lifecycle-Bf3QwiVa.js +70 -0
  28. package/dist/cjs/loader.cjs.js +2 -2
  29. package/dist/cjs/package.json +3 -0
  30. package/dist/cjs/v4-_2BfiRUa.js +52 -0
  31. package/dist/cjs/xpl-accordion.cjs.entry.js +3 -3
  32. package/dist/cjs/xpl-application-shell.cjs.entry.js +2 -2
  33. package/dist/cjs/xpl-avatar_54.cjs.entry.js +879 -306
  34. package/dist/cjs/xpl-button-row.cjs.entry.js +2 -2
  35. package/dist/cjs/xpl-calendar.cjs.entry.js +3 -3
  36. package/dist/cjs/xpl-dynamic-table-cell.cjs.entry.js +3 -3
  37. package/dist/cjs/xpl-dynamic-table-row.cjs.entry.js +3 -3
  38. package/dist/cjs/xpl-dynamic-table.cjs.entry.js +2 -2
  39. package/dist/cjs/xpl-grid-item.cjs.entry.js +2 -2
  40. package/dist/cjs/xpl-grid.cjs.entry.js +2 -2
  41. package/dist/cjs/xpl-large-card.cjs.entry.js +2 -2
  42. package/dist/cjs/xpl-main-nav.cjs.entry.js +2 -2
  43. package/dist/cjs/xpl-table-header-cell.cjs.entry.js +1 -1
  44. package/dist/cjs/xpl-table-header.cjs.entry.js +2 -2
  45. package/dist/cjs/xpl-toggle.cjs.entry.js +5 -5
  46. package/dist/cjs/xpl-toolbar.cjs.entry.js +3 -3
  47. package/dist/cjs/xpl-top-nav-menu.cjs.entry.js +97 -0
  48. package/dist/collection/collection-manifest.json +7 -6
  49. package/dist/collection/components/xpl-accordion/xpl-accordion.js +2 -2
  50. package/dist/collection/components/xpl-application-shell/xpl-application-shell.js +1 -1
  51. package/dist/collection/components/xpl-backdrop/xpl-backdrop.js +1 -1
  52. package/dist/collection/components/xpl-badge/xpl-badge.js +1 -1
  53. package/dist/collection/components/xpl-banner/banner.stories.js +5 -0
  54. package/dist/collection/components/xpl-banner/xpl-banner.js +2 -2
  55. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumb-item/xpl-breadcrumb-item.js +1 -1
  56. package/dist/collection/components/xpl-breadcrumbs/xpl-breadcrumbs/xpl-breadcrumbs.js +1 -1
  57. package/dist/collection/components/xpl-button/button.stories.js +5 -0
  58. package/dist/collection/components/xpl-button/xpl-button.js +1 -1
  59. package/dist/collection/components/xpl-button-row/button-row.stories.js +1 -11
  60. package/dist/collection/components/xpl-button-row/xpl-button-row.js +1 -1
  61. package/dist/collection/components/xpl-calendar/xpl-calendar.js +1 -1
  62. package/dist/collection/components/xpl-checkbox/xpl-checkbox.js +4 -4
  63. package/dist/collection/components/xpl-choicelist/xpl-choicelist.js +1 -1
  64. package/dist/collection/components/xpl-content-area/xpl-content-area.js +1 -1
  65. package/dist/collection/components/xpl-dashboard/xpl-dashboard.js +1 -1
  66. package/dist/collection/components/xpl-data-card/xpl-data-card.js +2 -2
  67. package/dist/collection/components/xpl-divider/xpl-divider.js +1 -1
  68. package/dist/collection/components/xpl-dropdown/xpl-dropdown-group/xpl-dropdown-group.js +1 -1
  69. package/dist/collection/components/xpl-dropdown/xpl-dropdown-heading/xpl-dropdown-heading.js +1 -1
  70. package/dist/collection/components/xpl-dropdown/xpl-dropdown-option/xpl-dropdown-option.js +2 -2
  71. package/dist/collection/components/xpl-dropdown/xpl-dropdown.js +208 -31
  72. package/dist/collection/components/xpl-dynamic-table/xpl-dynamic-table.js +1 -1
  73. package/dist/collection/components/xpl-dynamic-table-cell/xpl-dynamic-table-cell.js +2 -2
  74. package/dist/collection/components/xpl-dynamic-table-row/xpl-dynamic-table-row.js +2 -2
  75. package/dist/collection/components/xpl-grid/xpl-grid.js +1 -1
  76. package/dist/collection/components/xpl-grid-item/xpl-grid-item.js +1 -1
  77. package/dist/collection/components/xpl-header-accordion/xpl-header-accordion.js +1 -1
  78. package/dist/collection/components/xpl-icon/xpl-icon.js +2 -2
  79. package/dist/collection/components/xpl-input/input.stories.js +1 -1
  80. package/dist/collection/components/xpl-input/xpl-input-color/xpl-input-color.js +8 -8
  81. package/dist/collection/components/xpl-input/xpl-input-date/xpl-input-date.js +3 -3
  82. package/dist/collection/components/xpl-input/xpl-input-file/xpl-input-file.js +4 -4
  83. package/dist/collection/components/xpl-input/xpl-input-phone/xpl-input-phone.js +25 -6
  84. package/dist/collection/components/xpl-input/xpl-input-search/xpl-input-search.js +1 -1
  85. package/dist/collection/components/xpl-input/xpl-input-time/xpl-input-time.js +2 -2
  86. package/dist/collection/components/xpl-input/xpl-input.js +3 -3
  87. package/dist/collection/components/xpl-large-card/xpl-large-card.js +1 -1
  88. package/dist/collection/components/xpl-list/xpl-list.js +2 -2
  89. package/dist/collection/components/xpl-main-nav/xpl-main-nav.js +1 -1
  90. package/dist/collection/components/xpl-modal/xpl-modal.js +4 -1
  91. package/dist/collection/components/xpl-nav-item/xpl-nav-item.js +2 -2
  92. package/dist/collection/components/xpl-pagination/xpl-pagination.js +26 -8
  93. package/dist/collection/components/xpl-panel/xpl-panel.js +2 -2
  94. package/dist/collection/components/xpl-popover/popover.stories.js +3 -7
  95. package/dist/collection/components/xpl-popover/xpl-popover.js +4 -4
  96. package/dist/collection/components/xpl-progress-bar/xpl-progress-bar.js +2 -2
  97. package/dist/collection/components/xpl-progress-indicator/xpl-progress-indicator.js +1 -1
  98. package/dist/collection/components/xpl-radio/radio.stories.js +19 -17
  99. package/dist/collection/components/xpl-radio/xpl-radio.js +3 -3
  100. package/dist/collection/components/xpl-secondary-nav/xpl-secondary-nav.js +1 -1
  101. package/dist/collection/components/xpl-select/xpl-select.js +16 -11
  102. package/dist/collection/components/xpl-side-nav/side-nav-constants.js +2 -0
  103. package/dist/collection/components/xpl-side-nav/side-nav.stories.js +301 -186
  104. package/dist/collection/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.js +80 -14
  105. package/dist/collection/components/xpl-side-nav/xpl-side-nav.js +284 -3
  106. package/dist/collection/components/xpl-skeleton/xpl-skeleton.js +1 -1
  107. package/dist/collection/components/xpl-slideout/xpl-slideout.js +1 -1
  108. package/dist/collection/components/xpl-spotlight/xpl-spotlight.js +14 -4
  109. package/dist/collection/components/xpl-tab-panel/xpl-tab-panel.js +2 -2
  110. package/dist/collection/components/xpl-table/xpl-table.js +13 -22
  111. package/dist/collection/components/xpl-table-header/xpl-table-header.js +1 -1
  112. package/dist/collection/components/xpl-tabs/xpl-tabs.js +5 -5
  113. package/dist/collection/components/xpl-tag/xpl-tag.js +2 -2
  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/tooltip-arrow.js +1 -1
  118. package/dist/collection/components/xpl-tooltip/tooltip.stories.js +6 -37
  119. package/dist/collection/components/xpl-tooltip/xpl-tooltip.js +1 -1
  120. package/dist/collection/components/xpl-top-nav/top-nav-constants.js +1 -0
  121. package/dist/collection/components/xpl-top-nav/top-nav.stories.js +131 -11
  122. package/dist/collection/components/xpl-top-nav/xpl-nav-header-menu/xpl-nav-header-menu.js +2 -2
  123. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/top-nav-item-constants.js +2 -0
  124. package/dist/collection/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.js +305 -85
  125. package/dist/collection/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.js +119 -0
  126. package/dist/collection/components/xpl-top-nav/xpl-top-nav.js +11 -5
  127. package/dist/collection/components/xpl-utility-bar/xpl-utility-bar.js +1 -1
  128. package/dist/collection/utils/lifecycle.js +18 -0
  129. package/dist/components/index.d.ts +143 -12
  130. package/dist/components/index.js +1 -1
  131. package/dist/components/p-2xGSxBGa.js +1 -0
  132. package/dist/components/p-B8RYNiz-.js +1 -0
  133. package/dist/components/p-BDWXBWGE.js +1 -0
  134. package/dist/components/p-BJqNuBZr.js +1 -0
  135. package/dist/components/p-BT_Lq3Vd.js +1 -0
  136. package/dist/components/p-BUgtURvw.js +1 -0
  137. package/dist/components/{xpl-input-search2.js → p-B_sq_SAX.js} +1 -1
  138. package/dist/components/p-Bsy-VVS5.js +1 -0
  139. package/dist/components/p-BxHFEnPN.js +1 -0
  140. package/dist/components/p-ByJRw26d.js +1 -0
  141. package/dist/components/p-C5_Yo0ZP.js +1 -0
  142. package/dist/components/p-C8rmEAx6.js +1 -0
  143. package/dist/components/p-CF_YTx16.js +1 -0
  144. package/dist/components/{floating-ui.dom.js → p-CFpsSZyr.js} +1 -1
  145. package/dist/components/p-CK3_k8jD.js +1 -0
  146. package/dist/components/p-CUYkG-PB.js +1 -0
  147. package/dist/components/p-CaW0fL0P.js +1 -0
  148. package/dist/components/p-CuisR8WP.js +1 -0
  149. package/dist/components/p-CzwViN3U.js +1 -0
  150. package/dist/components/p-D2SFagIb.js +1 -0
  151. package/dist/components/p-DKUNbsb0.js +1 -0
  152. package/dist/components/p-DcXL24UI.js +1 -0
  153. package/dist/components/p-Dp3H99Yc.js +1 -0
  154. package/dist/components/p-M900WO1C.js +1 -0
  155. package/dist/components/{xpl-tag2.js → p-ZTFt9sBy.js} +1 -1
  156. package/dist/components/p-gfb3l9Pr.js +1 -0
  157. package/dist/components/{xpl-input-file2.js → p-h1Gbk5lO.js} +1 -1
  158. package/dist/components/xpl-accordion.js +1 -1
  159. package/dist/components/xpl-application-shell.js +1 -1
  160. package/dist/components/xpl-avatar.js +1 -1
  161. package/dist/components/xpl-backdrop.js +1 -1
  162. package/dist/components/xpl-badge.js +1 -1
  163. package/dist/components/xpl-banner.js +1 -1
  164. package/dist/components/xpl-breadcrumb-item.js +1 -1
  165. package/dist/components/xpl-breadcrumbs.js +1 -1
  166. package/dist/components/xpl-button-row.js +1 -1
  167. package/dist/components/xpl-button.js +1 -1
  168. package/dist/components/xpl-calendar.js +1 -1
  169. package/dist/components/xpl-checkbox.js +1 -1
  170. package/dist/components/xpl-choicelist.js +1 -1
  171. package/dist/components/xpl-content-area.js +1 -1
  172. package/dist/components/xpl-dashboard.js +1 -1
  173. package/dist/components/xpl-data-card.js +1 -1
  174. package/dist/components/xpl-divider.js +1 -1
  175. package/dist/components/xpl-dropdown-group.js +1 -1
  176. package/dist/components/xpl-dropdown-heading.js +1 -1
  177. package/dist/components/xpl-dropdown-option.js +1 -1
  178. package/dist/components/xpl-dropdown.js +1 -1
  179. package/dist/components/xpl-dynamic-table-cell.js +1 -1
  180. package/dist/components/xpl-dynamic-table-row.js +1 -1
  181. package/dist/components/xpl-dynamic-table.js +1 -1
  182. package/dist/components/xpl-grid-item.js +1 -1
  183. package/dist/components/xpl-grid.js +1 -1
  184. package/dist/components/xpl-header-accordion.js +1 -1
  185. package/dist/components/xpl-icon.js +1 -1
  186. package/dist/components/xpl-input-color.js +1 -1
  187. package/dist/components/xpl-input-date.js +1 -1
  188. package/dist/components/xpl-input-file.js +1 -1
  189. package/dist/components/xpl-input-phone.js +1 -1
  190. package/dist/components/xpl-input-search.js +1 -1
  191. package/dist/components/xpl-input-time.js +1 -1
  192. package/dist/components/xpl-input.js +1 -1
  193. package/dist/components/xpl-large-card.js +1 -1
  194. package/dist/components/xpl-list-item.js +1 -1
  195. package/dist/components/xpl-list.js +1 -1
  196. package/dist/components/xpl-main-nav.js +1 -1
  197. package/dist/components/xpl-modal.js +1 -1
  198. package/dist/components/xpl-nav-header-menu.js +1 -1
  199. package/dist/components/xpl-nav-item.js +1 -1
  200. package/dist/components/xpl-pagination.js +1 -1
  201. package/dist/components/xpl-panel.js +1 -1
  202. package/dist/components/xpl-popover.js +1 -1
  203. package/dist/components/xpl-progress-bar.js +1 -1
  204. package/dist/components/xpl-progress-indicator.js +1 -1
  205. package/dist/components/xpl-radio.js +1 -1
  206. package/dist/components/xpl-secondary-nav.js +1 -1
  207. package/dist/components/xpl-select.js +1 -1
  208. package/dist/components/xpl-side-nav-item.js +1 -1
  209. package/dist/components/xpl-side-nav.js +1 -1
  210. package/dist/components/xpl-skeleton.js +1 -1
  211. package/dist/components/xpl-slideout.js +1 -1
  212. package/dist/components/xpl-spotlight.js +1 -1
  213. package/dist/components/xpl-tab-panel.js +1 -1
  214. package/dist/components/xpl-tab.js +1 -1
  215. package/dist/components/xpl-table-header-cell.js +1 -1
  216. package/dist/components/xpl-table-header.js +1 -1
  217. package/dist/components/xpl-table.js +1 -1
  218. package/dist/components/xpl-tabs.js +1 -1
  219. package/dist/components/xpl-tag.js +1 -1
  220. package/dist/components/xpl-toast.js +1 -1
  221. package/dist/components/xpl-toggle.js +1 -1
  222. package/dist/components/xpl-toolbar.js +1 -1
  223. package/dist/components/xpl-tooltip.js +1 -1
  224. package/dist/components/xpl-top-nav-item.js +1 -1
  225. package/dist/components/xpl-top-nav-menu.d.ts +11 -0
  226. package/dist/components/xpl-top-nav-menu.js +1 -0
  227. package/dist/components/xpl-top-nav.js +1 -1
  228. package/dist/components/xpl-utility-bar.js +1 -1
  229. package/dist/docs/xpl-backdrop/readme.md +2 -0
  230. package/dist/docs/xpl-badge/readme.md +34 -0
  231. package/dist/docs/xpl-button/readme.md +2 -0
  232. package/dist/docs/xpl-button-row/readme.md +13 -0
  233. package/dist/docs/xpl-checkbox/readme.md +23 -1
  234. package/dist/docs/xpl-divider/readme.md +22 -4
  235. package/dist/docs/xpl-icon/readme.md +2 -0
  236. package/dist/docs/xpl-input/readme.md +51 -0
  237. package/dist/docs/xpl-input/xpl-input-date/readme.md +7 -0
  238. package/dist/docs/xpl-input/xpl-input-phone/readme.md +21 -0
  239. package/dist/docs/xpl-popover/readme.md +24 -0
  240. package/dist/docs/xpl-radio/readme.md +21 -4
  241. package/dist/docs/xpl-side-nav/readme.md +153 -5
  242. package/dist/docs/xpl-side-nav/xpl-side-nav-item/readme.md +165 -32
  243. package/dist/docs/xpl-table/readme.md +2 -0
  244. package/dist/docs/xpl-tooltip/readme.md +29 -1
  245. package/dist/docs/xpl-top-nav/readme.md +3 -0
  246. package/dist/docs/xpl-top-nav/xpl-top-nav-item/readme.md +79 -20
  247. package/dist/docs/xpl-top-nav/xpl-top-nav-menu/readme.md +96 -0
  248. package/dist/esm/apollo-core.js +4 -4
  249. package/dist/esm/{index-C7bgJs6C.js → index-CXkZUm1c.js} +40 -9
  250. package/dist/esm/lifecycle-BUgtURvw.js +68 -0
  251. package/dist/esm/loader.js +3 -3
  252. package/dist/esm/v4-CK3_k8jD.js +50 -0
  253. package/dist/esm/xpl-accordion.entry.js +3 -3
  254. package/dist/esm/xpl-application-shell.entry.js +2 -2
  255. package/dist/esm/xpl-avatar_54.entry.js +878 -305
  256. package/dist/esm/xpl-button-row.entry.js +2 -2
  257. package/dist/esm/xpl-calendar.entry.js +3 -3
  258. package/dist/esm/xpl-dynamic-table-cell.entry.js +3 -3
  259. package/dist/esm/xpl-dynamic-table-row.entry.js +3 -3
  260. package/dist/esm/xpl-dynamic-table.entry.js +2 -2
  261. package/dist/esm/xpl-grid-item.entry.js +2 -2
  262. package/dist/esm/xpl-grid.entry.js +2 -2
  263. package/dist/esm/xpl-large-card.entry.js +2 -2
  264. package/dist/esm/xpl-main-nav.entry.js +2 -2
  265. package/dist/esm/xpl-table-header-cell.entry.js +1 -1
  266. package/dist/esm/xpl-table-header.entry.js +2 -2
  267. package/dist/esm/xpl-toggle.entry.js +5 -5
  268. package/dist/esm/xpl-toolbar.entry.js +3 -3
  269. package/dist/esm/xpl-top-nav-menu.entry.js +95 -0
  270. package/dist/types/components/xpl-banner/banner.stories.d.ts +2 -0
  271. package/dist/types/components/xpl-button/button.stories.d.ts +2 -0
  272. package/dist/types/components/xpl-dropdown/xpl-dropdown.d.ts +16 -0
  273. package/dist/types/components/xpl-input/xpl-input-phone/xpl-input-phone.d.ts +1 -0
  274. package/dist/types/components/xpl-pagination/xpl-pagination.d.ts +4 -0
  275. package/dist/types/components/xpl-radio/radio.stories.d.ts +11 -10
  276. package/dist/types/components/xpl-side-nav/side-nav-constants.d.ts +2 -0
  277. package/dist/types/components/xpl-side-nav/side-nav.stories.d.ts +53 -32
  278. package/dist/types/components/xpl-side-nav/xpl-side-nav-item/xpl-side-nav-item.d.ts +10 -0
  279. package/dist/types/components/xpl-side-nav/xpl-side-nav.d.ts +31 -0
  280. package/dist/types/components/xpl-spotlight/xpl-spotlight.d.ts +1 -0
  281. package/dist/types/components/xpl-top-nav/top-nav-constants.d.ts +1 -0
  282. package/dist/types/components/xpl-top-nav/top-nav.stories.d.ts +70 -1
  283. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/top-nav-item-constants.d.ts +2 -0
  284. package/dist/types/components/xpl-top-nav/xpl-top-nav-item/xpl-top-nav-item.d.ts +23 -4
  285. package/dist/types/components/xpl-top-nav/xpl-top-nav-menu/xpl-top-nav-menu.d.ts +18 -0
  286. package/dist/types/components/xpl-top-nav/xpl-top-nav.d.ts +1 -0
  287. package/dist/types/components.d.ts +402 -39
  288. package/dist/types/stencil-public-runtime.d.ts +1 -0
  289. package/dist/types/utils/lifecycle.d.ts +3 -0
  290. package/package.json +53 -34
  291. package/dist/apollo-core/p-0bf50890.entry.js +0 -1
  292. package/dist/apollo-core/p-1947e7a8.entry.js +0 -1
  293. package/dist/apollo-core/p-27928cb0.entry.js +0 -1
  294. package/dist/apollo-core/p-35c2f72d.entry.js +0 -1
  295. package/dist/apollo-core/p-368c81f1.entry.js +0 -1
  296. package/dist/apollo-core/p-406b27a8.entry.js +0 -1
  297. package/dist/apollo-core/p-5d63b4ce.entry.js +0 -1
  298. package/dist/apollo-core/p-8d692d05.entry.js +0 -1
  299. package/dist/apollo-core/p-C7bgJs6C.js +0 -2
  300. package/dist/apollo-core/p-Cqlsd6nf.js +0 -1
  301. package/dist/apollo-core/p-cd56a3d5.entry.js +0 -1
  302. package/dist/apollo-core/p-dc205893.entry.js +0 -1
  303. package/dist/cjs/v4-D4KzFnn8.js +0 -67
  304. package/dist/components/index3.js +0 -1
  305. package/dist/components/v4.js +0 -1
  306. package/dist/components/xpl-avatar2.js +0 -1
  307. package/dist/components/xpl-backdrop2.js +0 -1
  308. package/dist/components/xpl-badge2.js +0 -1
  309. package/dist/components/xpl-button2.js +0 -1
  310. package/dist/components/xpl-checkbox2.js +0 -1
  311. package/dist/components/xpl-divider2.js +0 -1
  312. package/dist/components/xpl-dropdown-group2.js +0 -1
  313. package/dist/components/xpl-dropdown-heading2.js +0 -1
  314. package/dist/components/xpl-dropdown-option2.js +0 -1
  315. package/dist/components/xpl-dropdown2.js +0 -1
  316. package/dist/components/xpl-icon2.js +0 -1
  317. package/dist/components/xpl-input-date2.js +0 -1
  318. package/dist/components/xpl-input2.js +0 -1
  319. package/dist/components/xpl-list-item2.js +0 -1
  320. package/dist/components/xpl-popover2.js +0 -1
  321. package/dist/components/xpl-radio2.js +0 -1
  322. package/dist/components/xpl-select2.js +0 -1
  323. package/dist/components/xpl-tooltip2.js +0 -1
  324. package/dist/components/xpl-top-nav-item2.js +0 -1
  325. package/dist/esm/v4-Cqlsd6nf.js +0 -65
  326. /package/dist/components/{_commonjsHelpers.js → p-BFTU3MAI.js} +0 -0
  327. /package/dist/components/{index2.js → p-CH4yJ6Qx.js} +0 -0
  328. /package/dist/components/{tab-a11y-ids.js → p-Yj_QFaRn.js} +0 -0
  329. /package/dist/{index.cjs.js → index.cjs} +0 -0
  330. /package/loader/{cdn.js → cdn.cjs} +0 -0
  331. /package/loader/{index.cjs.js → index.cjs} +0 -0
@@ -382,7 +382,7 @@ export namespace Components {
382
382
  */
383
383
  "styled"?: boolean;
384
384
  /**
385
- * The value attribute for the checkbox input. (submittted in form as name/value pair)
385
+ * The value attribute for the checkbox input. (submitted in form as name/value pair)
386
386
  */
387
387
  "value"?: string;
388
388
  }
@@ -969,6 +969,10 @@ export namespace Components {
969
969
  * Whether the field is disabled
970
970
  */
971
971
  "disabled"?: boolean;
972
+ /**
973
+ * Whether the field is in an error state. When true, the input renders with the error border styling. The error message itself is owned by the parent `xpl-input` wrapper.
974
+ */
975
+ "error"?: boolean;
972
976
  /**
973
977
  * The `inputId` is used to associate the input with a label.
974
978
  */
@@ -1523,48 +1527,100 @@ export namespace Components {
1523
1527
  */
1524
1528
  "truncate"?: boolean;
1525
1529
  }
1530
+ /**
1531
+ * Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
1532
+ * `nav-footer`. Compose with `xpl-side-nav-item` for rows.
1533
+ * **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
1534
+ * ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
1535
+ * Activating the toggle opens a drawer containing the `section` + `nav-footer`
1536
+ * content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
1537
+ * Escape or a backdrop click closes it and returns focus to the toggle. Above
1538
+ * `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
1539
+ * The toggle is always rendered (no gating prop) and hidden above the breakpoint
1540
+ * in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
1541
+ * the `openChange` event, and the `toggle()` / `setOpen()` methods.
1542
+ * **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
1543
+ * around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
1544
+ */
1526
1545
  interface XplSideNav {
1527
1546
  /**
1528
1547
  * Accessible label for the navigation landmark. Maps to `aria-label` on the `<nav>` element. Recommended when multiple navigation landmarks exist on a page (e.g., side nav + top nav + breadcrumbs) to help screen readers distinguish them.
1529
1548
  */
1530
1549
  "label"?: string;
1550
+ /**
1551
+ * Whether the mobile drawer is open. Reflected to the `open` attribute so CSS and host state stay in sync. Controlled (consumer owns `open`) or uncontrolled (built-in toggle flips it). Has no visible effect above the `md` breakpoint, where the sidebar always renders inline.
1552
+ * @default false
1553
+ */
1554
+ "open": boolean;
1555
+ /**
1556
+ * Programmatically set the mobile drawer open state. Emits `openChange` when it changes.
1557
+ */
1558
+ "setOpen": (open: boolean) => Promise<void>;
1559
+ /**
1560
+ * Programmatically toggle the mobile drawer open/closed. Emits `openChange`.
1561
+ */
1562
+ "toggle": () => Promise<void>;
1531
1563
  }
1564
+ /**
1565
+ * Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
1566
+ * anchor container (`link` mode). Three slot positions are available:
1567
+ * - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
1568
+ * The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
1569
+ * when no slotted `leading` content is present.
1570
+ * - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
1571
+ * When `has-children` is true and no `trailing` slot content is provided, an
1572
+ * auto chevron is rendered automatically in this position: `chevron-down` when
1573
+ * collapsed, `chevron-up` when expanded.
1574
+ * - default slot — nested `xpl-side-nav-item` children (expandable parents only).
1575
+ * **v2 breaking changes (beta):**
1576
+ * - `slot="icon"` renamed to `slot="leading"` — no alias kept.
1577
+ * - Parent rows (`has-children`) now render the leading icon alongside the chevron.
1578
+ * Previously parents showed chevron + label only (no leading icon).
1579
+ * - The chevron has moved from the leading position to the trailing position.
1580
+ * - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
1581
+ * **Migration:**
1582
+ * | Before (v1) | After (v2) | Action |
1583
+ * |---|---|---|
1584
+ * | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
1585
+ * | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
1586
+ * | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
1587
+ */
1532
1588
  interface XplSideNavItem {
1533
1589
  /**
1534
- * Whether the component is disabled
1590
+ * Whether the item is currently disabled.
1535
1591
  * @default false
1536
1592
  */
1537
1593
  "disabled": boolean;
1538
1594
  /**
1539
- * Whether the item is currently expanded (only applies when hasChildren is true)
1595
+ * Whether the item is currently expanded (only applies when `has-children` is true).
1540
1596
  * @default false
1541
1597
  */
1542
1598
  "expanded": boolean;
1543
1599
  /**
1544
- * Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with <code>link</code>. If <code>link</code> is already true, setting <code>has-children</code> is reverted (<code>@Watch('hasChildren')</code>, <code>@Watch('link')</code>, <code>componentWillLoad</code>, and <code>componentWillRender</code>) so reflected attributes match CSS.
1600
+ * Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with `link`. If `link` is already true, setting `has-children` is reverted.
1545
1601
  * @default false
1546
1602
  */
1547
1603
  "hasChildren": boolean;
1548
1604
  /**
1549
- * Whether the component is hidden
1605
+ * Whether the component is hidden.
1550
1606
  * @default false
1551
1607
  */
1552
1608
  "hidden": boolean;
1553
1609
  /**
1554
- * Optional icon name; default content for <code>slot="icon"</code> (leaf and footer rows only). Expandable parents (<code>has-children</code>) do not show an icon column only the chevron and label. Omit for nested children under a <code>has-children</code> parent — the icon column is hidden for sub-items.
1610
+ * Optional icon name; renders as the default content for `slot="leading"`. When `slot="leading"` content is present, this prop is ignored. In v2, this prop applies to all item types including parent rows (`has-children`).
1555
1611
  */
1556
1612
  "icon"?: string;
1557
1613
  /**
1558
- * The display label for the navigation item (button / expandable rows; omit in <code>link</code> mode).
1614
+ * The display label for the navigation item (button / expandable rows; omit in `link` mode).
1559
1615
  */
1560
1616
  "label"?: string;
1561
1617
  /**
1562
- * When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode, <code>label</code> and <code>icon</code> props should not be used. Link mode does not support <code>has-children</code>; use the default button mode for expandable items. When <code>link</code> is true, <code>hasChildren</code> is always false (enforced by <code>@Watch('link')</code>, <code>@Watch('hasChildren')</code>, <code>componentWillLoad</code>, and <code>componentWillRender</code>).
1618
+ * When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode, `label` and `icon` props should not be used. Link mode does not support `has-children`; use the default button mode for expandable items. When `link` is true, `hasChildren` is always false.
1563
1619
  * @default false
1564
1620
  */
1565
1621
  "link": boolean;
1566
1622
  /**
1567
- * Whether the item is currently in a selected state
1623
+ * Whether the item is currently in a selected state.
1568
1624
  * @default false
1569
1625
  */
1570
1626
  "selected": boolean;
@@ -2013,16 +2069,19 @@ export namespace Components {
2013
2069
  "navControl"?: boolean;
2014
2070
  }
2015
2071
  /**
2016
- * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
2017
- * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
2018
- * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
2019
- * under **`xpl-nav-header-menu`**. That flag is
2072
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
2073
+ * **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
2074
+ * **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
2075
+ * **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
2020
2076
  * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
2021
2077
  * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
2022
2078
  * without a full reconnect still re-sync. The internal
2023
2079
  * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
2024
2080
  * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
2025
2081
  * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
2082
+ * **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
2083
+ * dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
2084
+ * only applies in the row context — bar items and triggers do not show it in Figma.
2026
2085
  * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
2027
2086
  * custom trigger content — the component renders the inner wrapper and BEM elements.
2028
2087
  * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
@@ -2034,12 +2093,20 @@ export namespace Components {
2034
2093
  * @default false
2035
2094
  */
2036
2095
  "active": boolean;
2096
+ /**
2097
+ * No-op when there is no **`slot="dropdown"`** panel to open.
2098
+ */
2099
+ "closeMenu": () => Promise<void>;
2100
+ /**
2101
+ * Optional description line shown below **`label`** (row context only, e.g. inside **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**). Ignored when **`label`** is not set.
2102
+ */
2103
+ "description"?: string;
2037
2104
  /**
2038
2105
  * If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
2039
2106
  */
2040
2107
  "href"?: string;
2041
2108
  /**
2042
- * Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
2109
+ * Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set). Ignored when **`slot="leading-icon"`** content is present.
2043
2110
  * @default ''
2044
2111
  */
2045
2112
  "icon": string;
@@ -2051,11 +2118,54 @@ export namespace Components {
2051
2118
  * Text label. If omitted, use the default slot for custom trigger content. Long labels use **`text-ellipsis`** on **`.xpl-top-nav-item__label`** (see `top-nav.css`); **`title`** is set to the full string for hover tooltips when the visual line clips.
2052
2119
  */
2053
2120
  "label"?: string;
2121
+ /**
2122
+ * Whether the **`slot="dropdown"`** panel is open. Reflected to the **`open`** attribute so consumers can drive it (controlled) or read it back (uncontrolled, toggled internally on click / hover / keyboard activation). Prefer **`openMenu()`** / **`closeMenu()`** / **`toggleMenu()`** over setting this directly from event handlers.
2123
+ * @default false
2124
+ */
2125
+ "open": boolean;
2126
+ /**
2127
+ * No-op when there is no **`slot="dropdown"`** panel to open.
2128
+ */
2129
+ "openMenu": () => Promise<void>;
2130
+ /**
2131
+ * How the **`slot="dropdown"`** panel opens. **`hover`** is gated on **`TOP_NAV_ITEM_HOVER_OPEN_MQ`** (hover-capable, fine pointer, **`md`** and up) — below that, or on touch / coarse-pointer devices, **`hover`** falls back to click/tap. Keyboard activation (Enter / Space) always toggles regardless of **`openMode`**.
2132
+ * @default 'click'
2133
+ */
2134
+ "openMode": 'click' | 'hover';
2054
2135
  /**
2055
2136
  * When true, sets **`aria-current="page"`** and selected styling.
2056
2137
  * @default false
2057
2138
  */
2058
2139
  "selected": boolean;
2140
+ /**
2141
+ * No-op when there is no **`slot="dropdown"`** panel to open.
2142
+ */
2143
+ "toggleMenu": () => Promise<void>;
2144
+ }
2145
+ /**
2146
+ * Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
2147
+ * (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
2148
+ * cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
2149
+ * row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
2150
+ * row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
2151
+ * focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
2152
+ * links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
2153
+ * **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
2154
+ * from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
2155
+ * flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
2156
+ * **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
2157
+ * (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
2158
+ * same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
2159
+ * visual family.
2160
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
2161
+ * resolve to dark-mode values even when the page root is light (consistent with the rest of the
2162
+ * **`xpl-top-nav`** family).
2163
+ */
2164
+ interface XplTopNavMenu {
2165
+ /**
2166
+ * Accessible name for the list (**`aria-label`** on the host) and the label shown in the mobile cascade back row when drilling back out of this group.
2167
+ */
2168
+ "label"?: string;
2059
2169
  }
2060
2170
  interface XplUtilityBar {
2061
2171
  /**
@@ -2160,6 +2270,10 @@ export interface XplSelectCustomEvent<T> extends CustomEvent<T> {
2160
2270
  detail: T;
2161
2271
  target: HTMLXplSelectElement;
2162
2272
  }
2273
+ export interface XplSideNavCustomEvent<T> extends CustomEvent<T> {
2274
+ detail: T;
2275
+ target: HTMLXplSideNavElement;
2276
+ }
2163
2277
  export interface XplSideNavItemCustomEvent<T> extends CustomEvent<T> {
2164
2278
  detail: T;
2165
2279
  target: HTMLXplSideNavItemElement;
@@ -2819,7 +2933,33 @@ declare global {
2819
2933
  prototype: HTMLXplSelectElement;
2820
2934
  new (): HTMLXplSelectElement;
2821
2935
  };
2936
+ interface HTMLXplSideNavElementEventMap {
2937
+ "openChange": boolean;
2938
+ }
2939
+ /**
2940
+ * Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
2941
+ * `nav-footer`. Compose with `xpl-side-nav-item` for rows.
2942
+ * **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
2943
+ * ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
2944
+ * Activating the toggle opens a drawer containing the `section` + `nav-footer`
2945
+ * content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
2946
+ * Escape or a backdrop click closes it and returns focus to the toggle. Above
2947
+ * `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
2948
+ * The toggle is always rendered (no gating prop) and hidden above the breakpoint
2949
+ * in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
2950
+ * the `openChange` event, and the `toggle()` / `setOpen()` methods.
2951
+ * **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
2952
+ * around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
2953
+ */
2822
2954
  interface HTMLXplSideNavElement extends Components.XplSideNav, HTMLStencilElement {
2955
+ addEventListener<K extends keyof HTMLXplSideNavElementEventMap>(type: K, listener: (this: HTMLXplSideNavElement, ev: XplSideNavCustomEvent<HTMLXplSideNavElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2956
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2957
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2958
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2959
+ removeEventListener<K extends keyof HTMLXplSideNavElementEventMap>(type: K, listener: (this: HTMLXplSideNavElement, ev: XplSideNavCustomEvent<HTMLXplSideNavElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2960
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2961
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2962
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2823
2963
  }
2824
2964
  var HTMLXplSideNavElement: {
2825
2965
  prototype: HTMLXplSideNavElement;
@@ -2829,6 +2969,30 @@ declare global {
2829
2969
  "expandedChange": boolean;
2830
2970
  "navClick": void;
2831
2971
  }
2972
+ /**
2973
+ * Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
2974
+ * anchor container (`link` mode). Three slot positions are available:
2975
+ * - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
2976
+ * The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
2977
+ * when no slotted `leading` content is present.
2978
+ * - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
2979
+ * When `has-children` is true and no `trailing` slot content is provided, an
2980
+ * auto chevron is rendered automatically in this position: `chevron-down` when
2981
+ * collapsed, `chevron-up` when expanded.
2982
+ * - default slot — nested `xpl-side-nav-item` children (expandable parents only).
2983
+ * **v2 breaking changes (beta):**
2984
+ * - `slot="icon"` renamed to `slot="leading"` — no alias kept.
2985
+ * - Parent rows (`has-children`) now render the leading icon alongside the chevron.
2986
+ * Previously parents showed chevron + label only (no leading icon).
2987
+ * - The chevron has moved from the leading position to the trailing position.
2988
+ * - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
2989
+ * **Migration:**
2990
+ * | Before (v1) | After (v2) | Action |
2991
+ * |---|---|---|
2992
+ * | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
2993
+ * | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
2994
+ * | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
2995
+ */
2832
2996
  interface HTMLXplSideNavItemElement extends Components.XplSideNavItem, HTMLStencilElement {
2833
2997
  addEventListener<K extends keyof HTMLXplSideNavItemElementEventMap>(type: K, listener: (this: HTMLXplSideNavItemElement, ev: XplSideNavItemCustomEvent<HTMLXplSideNavItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2834
2998
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
@@ -3068,18 +3232,22 @@ declare global {
3068
3232
  };
3069
3233
  interface HTMLXplTopNavItemElementEventMap {
3070
3234
  "navItemClick": MouseEvent;
3235
+ "openChange": boolean;
3071
3236
  }
3072
3237
  /**
3073
- * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
3074
- * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
3075
- * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
3076
- * under **`xpl-nav-header-menu`**. That flag is
3238
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
3239
+ * **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
3240
+ * **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
3241
+ * **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
3077
3242
  * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
3078
3243
  * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
3079
3244
  * without a full reconnect still re-sync. The internal
3080
3245
  * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
3081
3246
  * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
3082
3247
  * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
3248
+ * **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
3249
+ * dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
3250
+ * only applies in the row context — bar items and triggers do not show it in Figma.
3083
3251
  * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
3084
3252
  * custom trigger content — the component renders the inner wrapper and BEM elements.
3085
3253
  * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
@@ -3099,6 +3267,31 @@ declare global {
3099
3267
  prototype: HTMLXplTopNavItemElement;
3100
3268
  new (): HTMLXplTopNavItemElement;
3101
3269
  };
3270
+ /**
3271
+ * Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
3272
+ * (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
3273
+ * cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
3274
+ * row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
3275
+ * row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
3276
+ * focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
3277
+ * links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
3278
+ * **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
3279
+ * from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
3280
+ * flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
3281
+ * **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
3282
+ * (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
3283
+ * same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
3284
+ * visual family.
3285
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
3286
+ * resolve to dark-mode values even when the page root is light (consistent with the rest of the
3287
+ * **`xpl-top-nav`** family).
3288
+ */
3289
+ interface HTMLXplTopNavMenuElement extends Components.XplTopNavMenu, HTMLStencilElement {
3290
+ }
3291
+ var HTMLXplTopNavMenuElement: {
3292
+ prototype: HTMLXplTopNavMenuElement;
3293
+ new (): HTMLXplTopNavMenuElement;
3294
+ };
3102
3295
  interface HTMLXplUtilityBarElementEventMap {
3103
3296
  "navOpen": boolean;
3104
3297
  }
@@ -3185,6 +3378,7 @@ declare global {
3185
3378
  "xpl-tooltip": HTMLXplTooltipElement;
3186
3379
  "xpl-top-nav": HTMLXplTopNavElement;
3187
3380
  "xpl-top-nav-item": HTMLXplTopNavItemElement;
3381
+ "xpl-top-nav-menu": HTMLXplTopNavMenuElement;
3188
3382
  "xpl-utility-bar": HTMLXplUtilityBarElement;
3189
3383
  }
3190
3384
  }
@@ -3570,7 +3764,7 @@ declare namespace LocalJSX {
3570
3764
  */
3571
3765
  "styled"?: boolean;
3572
3766
  /**
3573
- * The value attribute for the checkbox input. (submittted in form as name/value pair)
3767
+ * The value attribute for the checkbox input. (submitted in form as name/value pair)
3574
3768
  */
3575
3769
  "value"?: string;
3576
3770
  }
@@ -4207,6 +4401,10 @@ declare namespace LocalJSX {
4207
4401
  * Whether the field is disabled
4208
4402
  */
4209
4403
  "disabled"?: boolean;
4404
+ /**
4405
+ * Whether the field is in an error state. When true, the input renders with the error border styling. The error message itself is owned by the parent `xpl-input` wrapper.
4406
+ */
4407
+ "error"?: boolean;
4210
4408
  /**
4211
4409
  * The `inputId` is used to associate the input with a label.
4212
4410
  */
@@ -4856,56 +5054,104 @@ declare namespace LocalJSX {
4856
5054
  */
4857
5055
  "truncate"?: boolean;
4858
5056
  }
5057
+ /**
5058
+ * Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
5059
+ * `nav-footer`. Compose with `xpl-side-nav-item` for rows.
5060
+ * **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
5061
+ * ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
5062
+ * Activating the toggle opens a drawer containing the `section` + `nav-footer`
5063
+ * content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
5064
+ * Escape or a backdrop click closes it and returns focus to the toggle. Above
5065
+ * `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
5066
+ * The toggle is always rendered (no gating prop) and hidden above the breakpoint
5067
+ * in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
5068
+ * the `openChange` event, and the `toggle()` / `setOpen()` methods.
5069
+ * **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
5070
+ * around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
5071
+ */
4859
5072
  interface XplSideNav {
4860
5073
  /**
4861
5074
  * Accessible label for the navigation landmark. Maps to `aria-label` on the `<nav>` element. Recommended when multiple navigation landmarks exist on a page (e.g., side nav + top nav + breadcrumbs) to help screen readers distinguish them.
4862
5075
  */
4863
5076
  "label"?: string;
5077
+ /**
5078
+ * Emitted when the mobile drawer open state changes: toggle activation, Escape, or a backdrop click. Detail is the new open state (`true` = open, `false` = closed).
5079
+ */
5080
+ "onOpenChange"?: (event: XplSideNavCustomEvent<boolean>) => void;
5081
+ /**
5082
+ * Whether the mobile drawer is open. Reflected to the `open` attribute so CSS and host state stay in sync. Controlled (consumer owns `open`) or uncontrolled (built-in toggle flips it). Has no visible effect above the `md` breakpoint, where the sidebar always renders inline.
5083
+ * @default false
5084
+ */
5085
+ "open"?: boolean;
4864
5086
  }
5087
+ /**
5088
+ * Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
5089
+ * anchor container (`link` mode). Three slot positions are available:
5090
+ * - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
5091
+ * The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
5092
+ * when no slotted `leading` content is present.
5093
+ * - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
5094
+ * When `has-children` is true and no `trailing` slot content is provided, an
5095
+ * auto chevron is rendered automatically in this position: `chevron-down` when
5096
+ * collapsed, `chevron-up` when expanded.
5097
+ * - default slot — nested `xpl-side-nav-item` children (expandable parents only).
5098
+ * **v2 breaking changes (beta):**
5099
+ * - `slot="icon"` renamed to `slot="leading"` — no alias kept.
5100
+ * - Parent rows (`has-children`) now render the leading icon alongside the chevron.
5101
+ * Previously parents showed chevron + label only (no leading icon).
5102
+ * - The chevron has moved from the leading position to the trailing position.
5103
+ * - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
5104
+ * **Migration:**
5105
+ * | Before (v1) | After (v2) | Action |
5106
+ * |---|---|---|
5107
+ * | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
5108
+ * | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
5109
+ * | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
5110
+ */
4865
5111
  interface XplSideNavItem {
4866
5112
  /**
4867
- * Whether the component is disabled
5113
+ * Whether the item is currently disabled.
4868
5114
  * @default false
4869
5115
  */
4870
5116
  "disabled"?: boolean;
4871
5117
  /**
4872
- * Whether the item is currently expanded (only applies when hasChildren is true)
5118
+ * Whether the item is currently expanded (only applies when `has-children` is true).
4873
5119
  * @default false
4874
5120
  */
4875
5121
  "expanded"?: boolean;
4876
5122
  /**
4877
- * Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with <code>link</code>. If <code>link</code> is already true, setting <code>has-children</code> is reverted (<code>@Watch('hasChildren')</code>, <code>@Watch('link')</code>, <code>componentWillLoad</code>, and <code>componentWillRender</code>) so reflected attributes match CSS.
5123
+ * Whether the item has child items; when true, shows expand/collapse and a default slot for nested items. Mutually exclusive with `link`. If `link` is already true, setting `has-children` is reverted.
4878
5124
  * @default false
4879
5125
  */
4880
5126
  "hasChildren"?: boolean;
4881
5127
  /**
4882
- * Whether the component is hidden
5128
+ * Whether the component is hidden.
4883
5129
  * @default false
4884
5130
  */
4885
5131
  "hidden"?: boolean;
4886
5132
  /**
4887
- * Optional icon name; default content for <code>slot="icon"</code> (leaf and footer rows only). Expandable parents (<code>has-children</code>) do not show an icon column only the chevron and label. Omit for nested children under a <code>has-children</code> parent — the icon column is hidden for sub-items.
5133
+ * Optional icon name; renders as the default content for `slot="leading"`. When `slot="leading"` content is present, this prop is ignored. In v2, this prop applies to all item types including parent rows (`has-children`).
4888
5134
  */
4889
5135
  "icon"?: string;
4890
5136
  /**
4891
- * The display label for the navigation item (button / expandable rows; omit in <code>link</code> mode).
5137
+ * The display label for the navigation item (button / expandable rows; omit in `link` mode).
4892
5138
  */
4893
5139
  "label"?: string;
4894
5140
  /**
4895
- * When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode, <code>label</code> and <code>icon</code> props should not be used. Link mode does not support <code>has-children</code>; use the default button mode for expandable items. When <code>link</code> is true, <code>hasChildren</code> is always false (enforced by <code>@Watch('link')</code>, <code>@Watch('hasChildren')</code>, <code>componentWillLoad</code>, and <code>componentWillRender</code>).
5141
+ * When true, the row becomes a slot-only container for consumer-provided links. The consumer provides the full anchor element (or router link) via the default slot. In link mode, `label` and `icon` props should not be used. Link mode does not support `has-children`; use the default button mode for expandable items. When `link` is true, `hasChildren` is always false.
4896
5142
  * @default false
4897
5143
  */
4898
5144
  "link"?: boolean;
4899
5145
  /**
4900
- * Emitted when the expanded state changes (hasChildren items only). Detail is the new expanded value.
5146
+ * Emitted when the expanded state changes (`has-children` items only). Detail is the new expanded value.
4901
5147
  */
4902
5148
  "onExpandedChange"?: (event: XplSideNavItemCustomEvent<boolean>) => void;
4903
5149
  /**
4904
- * Emitted when a leaf item is clicked. Expandable parents use expandedChange instead.
5150
+ * Emitted when a leaf item is clicked. Expandable parents use `expandedChange` instead.
4905
5151
  */
4906
5152
  "onNavClick"?: (event: XplSideNavItemCustomEvent<void>) => void;
4907
5153
  /**
4908
- * Whether the item is currently in a selected state
5154
+ * Whether the item is currently in a selected state.
4909
5155
  * @default false
4910
5156
  */
4911
5157
  "selected"?: boolean;
@@ -5405,16 +5651,19 @@ declare namespace LocalJSX {
5405
5651
  "onNavOpen"?: (event: XplTopNavCustomEvent<boolean>) => void;
5406
5652
  }
5407
5653
  /**
5408
- * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
5409
- * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
5410
- * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
5411
- * under **`xpl-nav-header-menu`**. That flag is
5654
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
5655
+ * **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
5656
+ * **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
5657
+ * **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
5412
5658
  * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
5413
5659
  * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
5414
5660
  * without a full reconnect still re-sync. The internal
5415
5661
  * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
5416
5662
  * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
5417
5663
  * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
5664
+ * **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
5665
+ * dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
5666
+ * only applies in the row context — bar items and triggers do not show it in Figma.
5418
5667
  * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
5419
5668
  * custom trigger content — the component renders the inner wrapper and BEM elements.
5420
5669
  * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
@@ -5426,12 +5675,16 @@ declare namespace LocalJSX {
5426
5675
  * @default false
5427
5676
  */
5428
5677
  "active"?: boolean;
5678
+ /**
5679
+ * Optional description line shown below **`label`** (row context only, e.g. inside **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**). Ignored when **`label`** is not set.
5680
+ */
5681
+ "description"?: string;
5429
5682
  /**
5430
5683
  * If set without **`slot="dropdown"`**, the inner control renders as a native **`<a href>`** (link mode).
5431
5684
  */
5432
5685
  "href"?: string;
5433
5686
  /**
5434
- * Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set).
5687
+ * Icon name from **`@xplortech/apollo-icons`** (shown before the label when **`label`** is set). Ignored when **`slot="leading-icon"`** content is present.
5435
5688
  * @default ''
5436
5689
  */
5437
5690
  "icon"?: string;
@@ -5444,15 +5697,54 @@ declare namespace LocalJSX {
5444
5697
  */
5445
5698
  "label"?: string;
5446
5699
  /**
5447
- * Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`** (native for **Enter** on **`<a href>`**, or programmatic **`.click()`** for **Space** on links). **`detail`** is the **`MouseEvent`** from that activation (synthetic only for **`<div role="button">`** via **Enter** / **Space**). Not emitted when **`slot="dropdown"`** is used.
5700
+ * Emitted for plain items (button or link) on pointer **click**, or when keyboard activation produces a **`click`**: the native **`<button>`** fires a real **`click`** on **Enter** / **Space**, a native **`<a href>`** on **Enter**, and **Space** on a link maps to a programmatic **`.click()`**. **`detail`** is always the real **`MouseEvent`** from that activation (keyboard-driven clicks have **`detail === 0`**). Not emitted when **`slot="dropdown"`** is used.
5448
5701
  */
5449
5702
  "onNavItemClick"?: (event: XplTopNavItemCustomEvent<MouseEvent>) => void;
5703
+ /**
5704
+ * Emitted whenever **`open`** changes (click, hover, keyboard, Escape, outside click, or programmatic).
5705
+ */
5706
+ "onOpenChange"?: (event: XplTopNavItemCustomEvent<boolean>) => void;
5707
+ /**
5708
+ * Whether the **`slot="dropdown"`** panel is open. Reflected to the **`open`** attribute so consumers can drive it (controlled) or read it back (uncontrolled, toggled internally on click / hover / keyboard activation). Prefer **`openMenu()`** / **`closeMenu()`** / **`toggleMenu()`** over setting this directly from event handlers.
5709
+ * @default false
5710
+ */
5711
+ "open"?: boolean;
5712
+ /**
5713
+ * How the **`slot="dropdown"`** panel opens. **`hover`** is gated on **`TOP_NAV_ITEM_HOVER_OPEN_MQ`** (hover-capable, fine pointer, **`md`** and up) — below that, or on touch / coarse-pointer devices, **`hover`** falls back to click/tap. Keyboard activation (Enter / Space) always toggles regardless of **`openMode`**.
5714
+ * @default 'click'
5715
+ */
5716
+ "openMode"?: 'click' | 'hover';
5450
5717
  /**
5451
5718
  * When true, sets **`aria-current="page"`** and selected styling.
5452
5719
  * @default false
5453
5720
  */
5454
5721
  "selected"?: boolean;
5455
5722
  }
5723
+ /**
5724
+ * Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
5725
+ * (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
5726
+ * cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
5727
+ * row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
5728
+ * row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
5729
+ * focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
5730
+ * links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
5731
+ * **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
5732
+ * from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
5733
+ * flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
5734
+ * **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
5735
+ * (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
5736
+ * same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
5737
+ * visual family.
5738
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
5739
+ * resolve to dark-mode values even when the page root is light (consistent with the rest of the
5740
+ * **`xpl-top-nav`** family).
5741
+ */
5742
+ interface XplTopNavMenu {
5743
+ /**
5744
+ * Accessible name for the list (**`aria-label`** on the host) and the label shown in the mobile cascade back row when drilling back out of this group.
5745
+ */
5746
+ "label"?: string;
5747
+ }
5456
5748
  interface XplUtilityBar {
5457
5749
  /**
5458
5750
  * @property {boolean} - Optional property that defines whether or not the main nav is open at startup.
@@ -5714,6 +6006,7 @@ declare namespace LocalJSX {
5714
6006
  interface XplInputPhoneAttributes {
5715
6007
  "defaultCountry": string;
5716
6008
  "disabled": boolean;
6009
+ "error": boolean;
5717
6010
  "inputId": string;
5718
6011
  "isInternational": boolean;
5719
6012
  "name": string;
@@ -5850,6 +6143,7 @@ declare namespace LocalJSX {
5850
6143
  }
5851
6144
  interface XplSideNavAttributes {
5852
6145
  "label": string;
6146
+ "open": boolean;
5853
6147
  }
5854
6148
  interface XplSideNavItemAttributes {
5855
6149
  "disabled": boolean;
@@ -5978,12 +6272,18 @@ declare namespace LocalJSX {
5978
6272
  }
5979
6273
  interface XplTopNavItemAttributes {
5980
6274
  "active": boolean;
6275
+ "description": string;
5981
6276
  "href": string;
5982
6277
  "icon": string;
5983
6278
  "itemAriaLabel": string;
5984
6279
  "label": string;
6280
+ "open": boolean;
6281
+ "openMode": 'click' | 'hover';
5985
6282
  "selected": boolean;
5986
6283
  }
6284
+ interface XplTopNavMenuAttributes {
6285
+ "label": string;
6286
+ }
5987
6287
  interface XplUtilityBarAttributes {
5988
6288
  "navControl": boolean;
5989
6289
  "isNavOpenAtStartup": boolean;
@@ -6058,6 +6358,7 @@ declare namespace LocalJSX {
6058
6358
  "xpl-tooltip": Omit<XplTooltip, keyof XplTooltipAttributes> & { [K in keyof XplTooltip & keyof XplTooltipAttributes]?: XplTooltip[K] } & { [K in keyof XplTooltip & keyof XplTooltipAttributes as `attr:${K}`]?: XplTooltipAttributes[K] } & { [K in keyof XplTooltip & keyof XplTooltipAttributes as `prop:${K}`]?: XplTooltip[K] };
6059
6359
  "xpl-top-nav": Omit<XplTopNav, keyof XplTopNavAttributes> & { [K in keyof XplTopNav & keyof XplTopNavAttributes]?: XplTopNav[K] } & { [K in keyof XplTopNav & keyof XplTopNavAttributes as `attr:${K}`]?: XplTopNavAttributes[K] } & { [K in keyof XplTopNav & keyof XplTopNavAttributes as `prop:${K}`]?: XplTopNav[K] };
6060
6360
  "xpl-top-nav-item": Omit<XplTopNavItem, keyof XplTopNavItemAttributes> & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes]?: XplTopNavItem[K] } & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes as `attr:${K}`]?: XplTopNavItemAttributes[K] } & { [K in keyof XplTopNavItem & keyof XplTopNavItemAttributes as `prop:${K}`]?: XplTopNavItem[K] };
6361
+ "xpl-top-nav-menu": Omit<XplTopNavMenu, keyof XplTopNavMenuAttributes> & { [K in keyof XplTopNavMenu & keyof XplTopNavMenuAttributes]?: XplTopNavMenu[K] } & { [K in keyof XplTopNavMenu & keyof XplTopNavMenuAttributes as `attr:${K}`]?: XplTopNavMenuAttributes[K] } & { [K in keyof XplTopNavMenu & keyof XplTopNavMenuAttributes as `prop:${K}`]?: XplTopNavMenu[K] };
6061
6362
  "xpl-utility-bar": Omit<XplUtilityBar, keyof XplUtilityBarAttributes> & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes]?: XplUtilityBar[K] } & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes as `attr:${K}`]?: XplUtilityBarAttributes[K] } & { [K in keyof XplUtilityBar & keyof XplUtilityBarAttributes as `prop:${K}`]?: XplUtilityBar[K] };
6062
6363
  }
6063
6364
  }
@@ -6140,7 +6441,46 @@ declare module "@stencil/core" {
6140
6441
  "xpl-radio": LocalJSX.IntrinsicElements["xpl-radio"] & JSXBase.HTMLAttributes<HTMLXplRadioElement>;
6141
6442
  "xpl-secondary-nav": LocalJSX.IntrinsicElements["xpl-secondary-nav"] & JSXBase.HTMLAttributes<HTMLXplSecondaryNavElement>;
6142
6443
  "xpl-select": LocalJSX.IntrinsicElements["xpl-select"] & JSXBase.HTMLAttributes<HTMLXplSelectElement>;
6444
+ /**
6445
+ * Slot-based sidebar for app navigation: a scrollable main `section` and a fixed
6446
+ * `nav-footer`. Compose with `xpl-side-nav-item` for rows.
6447
+ * **Mobile (v2):** below the Tailwind `md` breakpoint, the sidebar collapses to a
6448
+ * ~56px top bar with a toggle button (`sidebar-left-show` / `sidebar-left-hide`).
6449
+ * Activating the toggle opens a drawer containing the `section` + `nav-footer`
6450
+ * content behind an `xpl-backdrop` scrim. The drawer traps focus while open;
6451
+ * Escape or a backdrop click closes it and returns focus to the toggle. Above
6452
+ * `md` the toggle and backdrop are hidden via CSS and the sidebar renders inline.
6453
+ * The toggle is always rendered (no gating prop) and hidden above the breakpoint
6454
+ * in CSS. Open state is exposed via the `open` prop (controlled or uncontrolled),
6455
+ * the `openChange` event, and the `toggle()` / `setOpen()` methods.
6456
+ * **v2 breaking change (beta):** consumers who wrapped their own mobile toggle
6457
+ * around `xpl-side-nav` should remove it — the toggle and drawer are now built in.
6458
+ */
6143
6459
  "xpl-side-nav": LocalJSX.IntrinsicElements["xpl-side-nav"] & JSXBase.HTMLAttributes<HTMLXplSideNavElement>;
6460
+ /**
6461
+ * Navigation row for `xpl-side-nav`. Renders a button (default) or a slot-only
6462
+ * anchor container (`link` mode). Three slot positions are available:
6463
+ * - `slot="leading"` — leading icon column (renamed from `slot="icon"` in v2).
6464
+ * The `icon` prop is a convenience shorthand that renders an `xpl-icon` here
6465
+ * when no slotted `leading` content is present.
6466
+ * - `slot="trailing"` — trailing content (e.g. `xpl-icon icon="external-link"`).
6467
+ * When `has-children` is true and no `trailing` slot content is provided, an
6468
+ * auto chevron is rendered automatically in this position: `chevron-down` when
6469
+ * collapsed, `chevron-up` when expanded.
6470
+ * - default slot — nested `xpl-side-nav-item` children (expandable parents only).
6471
+ * **v2 breaking changes (beta):**
6472
+ * - `slot="icon"` renamed to `slot="leading"` — no alias kept.
6473
+ * - Parent rows (`has-children`) now render the leading icon alongside the chevron.
6474
+ * Previously parents showed chevron + label only (no leading icon).
6475
+ * - The chevron has moved from the leading position to the trailing position.
6476
+ * - A slotted `slot="trailing"` replaces the auto chevron on parent rows.
6477
+ * **Migration:**
6478
+ * | Before (v1) | After (v2) | Action |
6479
+ * |---|---|---|
6480
+ * | `slot="icon"` | `slot="leading"` | Rename the slot attribute |
6481
+ * | Parent row: chevron only (no leading) | Parent row: leading icon + chevron | Pass `icon` prop or `slot="leading"` |
6482
+ * | (no trailing slot) | `slot="trailing"` | Add for custom trailing content |
6483
+ */
6144
6484
  "xpl-side-nav-item": LocalJSX.IntrinsicElements["xpl-side-nav-item"] & JSXBase.HTMLAttributes<HTMLXplSideNavItemElement>;
6145
6485
  "xpl-skeleton": LocalJSX.IntrinsicElements["xpl-skeleton"] & JSXBase.HTMLAttributes<HTMLXplSkeletonElement>;
6146
6486
  "xpl-slideout": LocalJSX.IntrinsicElements["xpl-slideout"] & JSXBase.HTMLAttributes<HTMLXplSlideoutElement>;
@@ -6180,22 +6520,45 @@ declare module "@stencil/core" {
6180
6520
  */
6181
6521
  "xpl-top-nav": LocalJSX.IntrinsicElements["xpl-top-nav"] & JSXBase.HTMLAttributes<HTMLXplTopNavElement>;
6182
6522
  /**
6183
- * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`**. The host uses **`role="listitem"`** when the row
6184
- * participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on **`xpl-top-nav`** (list host is
6185
- * **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of **`xpl-top-nav`**), or default-slot rows
6186
- * under **`xpl-nav-header-menu`**. That flag is
6523
+ * Single nav row for **`xpl-top-nav`** / **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. The host uses
6524
+ * **`role="listitem"`** when the row participates in a list: a **`role="list"`** parent, **`slot="left-aside"`** on
6525
+ * **`xpl-top-nav`** (list host is **`.xpl-top-nav__left-primary`** while slotted nodes stay light-DOM children of
6526
+ * **`xpl-top-nav`**), or default-slot rows under **`xpl-nav-header-menu`** / **`xpl-top-nav-menu`**. That flag is
6187
6527
  * kept in **`@State`** and refreshed after render plus via **`MutationObserver`** on the host (**`class`**, **`slot`**) and
6188
6528
  * on **`parentElement`** (**`role`**) or on **`.xpl-top-nav__left-primary`** (**`role`**) for **`slot="left-aside"`** under **`xpl-top-nav`**) so DOM context changes
6189
6529
  * without a full reconnect still re-sync. The internal
6190
6530
  * **`xpl-top-nav__brand`** row omits **`listitem`** (it sits in **`.xpl-top-nav__brand-bar`**, not **`.xpl-top-nav__left-primary`**),
6191
6531
  * as do **`slot="right-aside-mobile"`** rows (not a list). **`slot="dropdown"`** uses a local **`.xpl-top-nav-item__dropdown`**
6192
6532
  * panel (not **`xpl-dropdown`**); see **`TECH_DEBT.md`**.
6533
+ * **This component does triple duty:** a plain bar item, a dropdown trigger (**`slot="dropdown"`** present), and a
6534
+ * dropdown/menu **row** (nested inside **`xpl-nav-header-menu`** or **`xpl-top-nav-menu`**). The **`description`** prop
6535
+ * only applies in the row context — bar items and triggers do not show it in Figma.
6193
6536
  * **Default slot (no `label`):** do not put **`xpl-top-nav-item__inner`** or other **`xpl-top-nav-item__*`** classes on
6194
6537
  * custom trigger content — the component renders the inner wrapper and BEM elements.
6195
6538
  * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens resolve to dark-mode
6196
6539
  * values even when the page root is light (consistent with **`xpl-top-nav`**).
6197
6540
  */
6198
6541
  "xpl-top-nav-item": LocalJSX.IntrinsicElements["xpl-top-nav-item"] & JSXBase.HTMLAttributes<HTMLXplTopNavItemElement>;
6542
+ /**
6543
+ * Thin grouping container for **`xpl-top-nav-item`** rows — the panel content for a desktop flyout
6544
+ * (**`slot="dropdown"`** on the parent **`xpl-top-nav-item`**) and, on small screens, the **mobile
6545
+ * cascade**: the same markup drills in to a **Level 2** view in place, with an auto-rendered **back
6546
+ * row** (leading **`chevron-left`** + this component's **`label`**) as the first row. Tapping the back
6547
+ * row closes the parent trigger's dropdown (**`closeMenu()`**), returning to **Level 1** and restoring
6548
+ * focus to the parent trigger. No item logic otherwise lives here — row behavior (icons, description,
6549
+ * links, nested dropdowns) is entirely **`xpl-top-nav-item`**.
6550
+ * **One authoring markup, two renderings:** consumers write this once; **`isMobileCascade`** (synced
6551
+ * from **`TOP_NAV_MOBILE_MQ`**) decides whether the back row renders. Desktop never sees it — the
6552
+ * flyout is a single level of links (see `xpl-top-nav-item`'s cascade-depth notes).
6553
+ * **Panel chrome** is shared with **`xpl-nav-header-menu`** (the account menu): width
6554
+ * (**`--xpl-top-nav-panel-width`**), surface, shadow, radius, and vertical padding all come from the
6555
+ * same selector in `top-nav.css` so the desktop flyout, mobile cascade, and account menu read as one
6556
+ * visual family.
6557
+ * **Theming:** The host always includes Foundation’s **`dark`** class so **`--xpl-*`** purpose tokens
6558
+ * resolve to dark-mode values even when the page root is light (consistent with the rest of the
6559
+ * **`xpl-top-nav`** family).
6560
+ */
6561
+ "xpl-top-nav-menu": LocalJSX.IntrinsicElements["xpl-top-nav-menu"] & JSXBase.HTMLAttributes<HTMLXplTopNavMenuElement>;
6199
6562
  "xpl-utility-bar": LocalJSX.IntrinsicElements["xpl-utility-bar"] & JSXBase.HTMLAttributes<HTMLXplUtilityBarElement>;
6200
6563
  }
6201
6564
  }