@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
@@ -1,58 +1,80 @@
1
1
  # xpl-input
2
2
 
3
- 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.
3
+ 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.
4
4
 
5
5
  For `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.
6
6
 
7
+ ### Delegated types (`search`, `phone`, `date`, `time`, …)
8
+
9
+ `valueChange`, `inputEvent`, `focusEvent`, and `blurEvent` are emitted by the inner component and **bubble** to `<xpl-input>`. For **`type="search"`**, **`focusEvent`** and **`blurEvent`** are **re-emitted from `<xpl-input>`** (parent uses **`onFocusEvent`** / **`onBlurEvent`** on **`<xpl-input-search>`** with **`stopPropagation`**) so **`event.target`** matches **`type="text"`**. For **`valueChange`** and **`inputEvent`** on search, events still **bubble** from **`xpl-input-search`** without parent re-emission; **`event.target`** may be the inner host—prefer **`event.detail`** (the string) or **`event.currentTarget`** when you attach the listener on **`<xpl-input>`**. Other delegated types follow the same **`event.detail`** / **`event.currentTarget`** guidance.
10
+
11
+ For **`type="search"`** commit: **`<xpl-input-search>`** defines a Stencil **`@Event() search`** (trimmed query in **`detail`**). **`<xpl-input>`** listens with **`onSearch`** on the inner tag, **`stopPropagation`s**, then **`this.search.emit(detail)`** so the canonical **`search`** **`@Event`** stays on **`<xpl-input>`** and listeners are not doubled. **`setFocus()`** on **`<xpl-input>`** uses a **`ref`** to the inner component to delegate focus.
12
+
7
13
  <!-- Auto Generated Below -->
8
14
 
9
15
 
10
16
  ## Properties
11
17
 
12
- | Property | Attribute | Description | Type | Default |
13
- | --------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------- |
14
- | `_id` | `_id` | Because `id` is a reserved HTMLElement attribute, we prefix it with an underscore here so that it doesn't get automatically applied to the outer container. Applies to all input types. | `string` | `undefined` |
15
- | `accept` | `accept` | The accepted file types for the file input. Corresponds to the `accept` attribute on the input element. Example: 'image/*' for all image types, '.pdf' for PDF files, etc. Applies to file inputs. | `string` | `''` |
16
- | `allowCustomOption` | `allow-custom-option` | For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs. | `boolean` | `false` |
17
- | `autocomplete` | `autocomplete` | Hint for form autofill feature Applies to text, password, number. | `string` | `undefined` |
18
- | `dateFormat` | `date-format` | The date format to use for the datepicker input. This is used by flatpickr to format the date. Default is 'Y-m-d' (e.g., 2023-10-01). See https://flatpickr.js.org/formatting/ for more details. Applies to date inputs. | `string` | `'Y-m-d'` |
19
- | `defaultCountry` | `default-country` | Default country code (ISO 3166-1 alpha-2) when value is empty, e.g. "US". Applies to phone inputs. | `string` | `'US'` |
20
- | `description` | `description` | Optional text that appears below the input label. Applies to all input types. | `string` | `undefined` |
21
- | `disabled` | `disabled` | Whether the field is disabled Applies to all input types. | `boolean` | `undefined` |
22
- | `error` | `error` | If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message. Applies to all input types. | `string` | `undefined` |
23
- | `hideAcceptText` | `hide-accept-text` | Hides the "Accept" text that indicates the accepted file types This is useful for cases where you want to hide the "Accept" text. Applies to file inputs. | `boolean` | `false` |
24
- | `hideEyeDropper` | `hide-eye-dropper` | Hide eye dropper Applies to color inputs. | `boolean` | `undefined` |
25
- | `hideFileNames` | `hide-file-names` | Hides the file names in the file upload component This is useful for cases where you want to hide the file names after selection. Applies to file inputs. | `boolean` | `false` |
26
- | `hideTriggerOnSelect` | `hide-trigger-on-select` | Hides the trigger element when a file is selected. This is useful for cases where you want to hide the trigger after a file is selected. Applies to file inputs. | `boolean` | `false` |
27
- | `isInternational` | `is-international` | Enables international mode with country selector for phone inputs. When false, the phone input is locked to defaultCountry with no country picker. | `boolean` | `true` |
28
- | `label` | `label` | Label text for the field Applies to all input types. | `string` | `undefined` |
29
- | `max` | `max` | Maximum value for the input. Applies to number, time, and date inputs. If the input is a time input, the value must be in 24 hour format, ex: 18:25 for 6:25 PM | `number \| string` | `undefined` |
30
- | `maxCharacterCount` | `max-character-count` | For multiline inputs, a max. character count will display along with the current character count, and will automatically render as an error if the character count exceeds the max. This is only applicable if `multiline` is `true`. | `number` | `undefined` |
31
- | `min` | `min` | The minimum value for the input. Applies to number, time, and date inputs. If the input is a time input, the value must be in 24 hour format, ex: 05:25 for 5:25 AM | `number \| string` | `undefined` |
32
- | `mode` | `mode` | For datepicker inputs, whether to allow only a single date or a range of dates. (Multiple non-consecutive dates planned to be supported in the future.) Applies to date inputs. | `"range" \| "single"` | `'single'` |
33
- | `multiline` | `multiline` | Whether to render as a singleline text input or as a multiline textarea. (If `true`, `pre` and `post` values will be ignored, if present.) Applies to text inputs. | `boolean` | `false` |
34
- | `multiple` | `multiple` | Whether the user can select multiple files at once. Corresponds to the `multiple` attribute on the input element. Applies to file inputs. | `boolean` | `false` |
35
- | `name` | `name` | Most inputs are used in forms, and should have a `name` associated with the input for handling form data. Applies to all input types. | `string` | `undefined` |
36
- | `placeholder` | `placeholder` | Placeholder text that appears when the field has no value Applies to text, password, number, and date inputs. | `string` | `undefined` |
37
- | `post` | `post` | A string (recommended max 3 characters) that gets shown visually to the left of (before) the input. Applies to text, password, number, and date inputs. Note: This will be ignored if `multiline` is `true`. | `string` | `undefined` |
38
- | `pre` | `pre` | A string (recommended max 8 characters) that gets shown visually to the right of (after) the input. Applies to text, password, number, and date inputs. Note: This will be ignored if `multiline` is `true`. | `string` | `undefined` |
39
- | `preferredCountries` | -- | Country codes to show at the top of the country list, e.g. ["US", "CA", "GB"]. Applies to phone inputs. | `string[]` | `undefined` |
40
- | `readonly` | `readonly` | Whether the input is editable Applies to text, password, number, and date inputs. | `boolean` | `undefined` |
41
- | `required` | `required` | Whether the input is required Applies to all input types. | `boolean` | `undefined` |
42
- | `step` | `step` | The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs. | `number` | `undefined` |
43
- | `timeFormat` | `time-format` | The time format to display for the input. Applies to time inputs. If 12h is selected, the value will be displayed in 12 hour format, ex: 05:25 PM for 17:25 If 24h is selected, the value will be displayed in 24 hour format, ex: 17:25 for 17:25 | `"12h" \| "24h"` | `'24h'` |
44
- | `type` | `type` | The type of form control | `"color" \| "date" \| "file" \| "number" \| "password" \| "phone" \| "text" \| "time"` | `'text'` |
45
- | `value` | `value` | Including a `value` will pre-populate the input with the given string. Applies to text, password, number, and date inputs. | `string` | `undefined` |
18
+ | Property | Attribute | Description | Type | Default |
19
+ | --------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----------- |
20
+ | `_id` | `_id` | Because `id` is a reserved HTMLElement attribute, we prefix it with an underscore here so that it doesn't get automatically applied to the outer container. Applies to all input types. | `string` | `undefined` |
21
+ | `accept` | `accept` | The accepted file types for the file input. Corresponds to the `accept` attribute on the input element. Example: 'image/*' for all image types, '.pdf' for PDF files, etc. Applies to file inputs. | `string` | `''` |
22
+ | `allowCustomOption` | `allow-custom-option` | For time inputs, whether to allow custom option in the input even if not available in the dropdown. Example: A step of 30 minutes will allow 15:03, 15:37, etc. Applies to time inputs. | `boolean` | `false` |
23
+ | `ariaLabel` | `aria-label` | Accessible name for search inputs when there is no visible `label` (after trim). Ignored for naming when a visible label is shown. Defaults to `''`; whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed when there is no visible label. Applies to search inputs (`type="search"`). | `string` | `''` |
24
+ | `autocomplete` | `autocomplete` | Hint for form autofill feature Applies to text, password, number, and search inputs. | `string` | `undefined` |
25
+ | `dateFormat` | `date-format` | The date format to use for the datepicker input. This is used by flatpickr to format the date. Default is 'Y-m-d' (e.g., 2023-10-01). See https://flatpickr.js.org/formatting/ for more details. Applies to date inputs. | `string` | `'Y-m-d'` |
26
+ | `defaultCountry` | `default-country` | Default country code (ISO 3166-1 alpha-2) when value is empty, e.g. "US". Applies to phone inputs. | `string` | `'US'` |
27
+ | `description` | `description` | Optional text that appears below the input label. Applies to all input types. | `string` | `undefined` |
28
+ | `disabled` | `disabled` | Whether the field is disabled Applies to all input types. | `boolean` | `undefined` |
29
+ | `error` | `error` | If an empty string (attribute present with no value), will display visually as an error. If a string is included, will display visually as an error and include the value as an error message. Applies to all input types. | `string` | `undefined` |
30
+ | `hideAcceptText` | `hide-accept-text` | Hides the "Accept" text that indicates the accepted file types This is useful for cases where you want to hide the "Accept" text. Applies to file inputs. | `boolean` | `false` |
31
+ | `hideEyeDropper` | `hide-eye-dropper` | Hide eye dropper Applies to color inputs. | `boolean` | `undefined` |
32
+ | `hideFileNames` | `hide-file-names` | Hides the file names in the file upload component This is useful for cases where you want to hide the file names after selection. Applies to file inputs. | `boolean` | `false` |
33
+ | `hideTriggerOnSelect` | `hide-trigger-on-select` | Hides the trigger element when a file is selected. This is useful for cases where you want to hide the trigger after a file is selected. Applies to file inputs. | `boolean` | `false` |
34
+ | `isInternational` | `is-international` | Enables international mode with country selector for phone inputs. When false, the phone input is locked to defaultCountry with no country picker. | `boolean` | `true` |
35
+ | `label` | `label` | Label text for the field Applies to all input types. | `string` | `undefined` |
36
+ | `max` | `max` | Maximum value for the input. Applies to number, time, and date inputs. If the input is a time input, the value must be in 24 hour format, ex: 18:25 for 6:25 PM | `number \| string` | `undefined` |
37
+ | `maxCharacterCount` | `max-character-count` | For multiline inputs, a max. character count will display along with the current character count, and will automatically render as an error if the character count exceeds the max. This is only applicable if `multiline` is `true`. | `number` | `undefined` |
38
+ | `min` | `min` | The minimum value for the input. Applies to number, time, and date inputs. If the input is a time input, the value must be in 24 hour format, ex: 05:25 for 5:25 AM | `number \| string` | `undefined` |
39
+ | `mode` | `mode` | For datepicker inputs, whether to allow only a single date or a range of dates. (Multiple non-consecutive dates planned to be supported in the future.) Applies to date inputs. | `"range" \| "single"` | `'single'` |
40
+ | `multiline` | `multiline` | Whether to render as a singleline text input or as a multiline textarea. (If `true`, `pre` and `post` values will be ignored, if present.) Applies to text inputs. | `boolean` | `false` |
41
+ | `multiple` | `multiple` | Whether the user can select multiple files at once. Corresponds to the `multiple` attribute on the input element. Applies to file inputs. | `boolean` | `false` |
42
+ | `name` | `name` | Most inputs are used in forms, and should have a `name` associated with the input for handling form data. Applies to all input types. | `string` | `undefined` |
43
+ | `placeholder` | `placeholder` | Placeholder text that appears when the field has no value Applies to text, password, number, date, and search inputs. | `string` | `undefined` |
44
+ | `post` | `post` | A string (recommended max 3 characters) that gets shown visually to the left of (before) the input. Applies to text, password, number, and date inputs. Note: This will be ignored if `multiline` is `true`. | `string` | `undefined` |
45
+ | `pre` | `pre` | A string (recommended max 8 characters) that gets shown visually to the right of (after) the input. Applies to text, password, number, and date inputs. Note: This will be ignored if `multiline` is `true`. | `string` | `undefined` |
46
+ | `preferredCountries` | -- | Country codes to show at the top of the country list, e.g. ["US", "CA", "GB"]. Applies to phone inputs. | `string[]` | `undefined` |
47
+ | `readonly` | `readonly` | Whether the input is editable Applies to text, password, number, date, and search inputs. | `boolean` | `undefined` |
48
+ | `required` | `required` | Whether the input is required Applies to all input types. | `boolean` | `undefined` |
49
+ | `shape` | `shape` | Shell corner radius for search inputs: `rounded` (pill) or `box` (rounded rectangle). Applies to search inputs (`type="search"`). | `"box" \| "rounded"` | `undefined` |
50
+ | `step` | `step` | The granularity that the value in a `number` input must adhere to when incrementing or decrementing. The default stepping value for number inputs is 1 Applies to number and time inputs. | `number` | `undefined` |
51
+ | `timeFormat` | `time-format` | The time format to display for the input. Applies to time inputs. If 12h is selected, the value will be displayed in 12 hour format, ex: 05:25 PM for 17:25 If 24h is selected, the value will be displayed in 24 hour format, ex: 17:25 for 17:25 | `"12h" \| "24h"` | `'24h'` |
52
+ | `type` | `type` | The type of form control | `"color" \| "date" \| "file" \| "number" \| "password" \| "phone" \| "search" \| "text" \| "time"` | `'text'` |
53
+ | `value` | `value` | Including a `value` will pre-populate the input with the given string. Applies to text, password, number, date, and search inputs. | `string` | `undefined` |
46
54
 
47
55
 
48
56
  ## Events
49
57
 
50
- | Event | Description | Type |
51
- | ------------- | ---------------------------------------------------------------------------------- | ------------------------- |
52
- | `blurEvent` | The event handler for the blur event | `CustomEvent<FocusEvent>` |
53
- | `focusEvent` | The event handler for the focus event | `CustomEvent<FocusEvent>` |
54
- | `inputEvent` | Event that emits the current value of the input Applies to text like inputs only. | `CustomEvent<string>` |
55
- | `valueChange` | Event that emits the current value of the input | `CustomEvent<string>` |
58
+ | Event | Description | Type |
59
+ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
60
+ | `blurEvent` | The event handler for the blur event | `CustomEvent<FocusEvent>` |
61
+ | `focusEvent` | The event handler for the focus event | `CustomEvent<FocusEvent>` |
62
+ | `inputEvent` | Event that emits the current value of the input Applies to text-like inputs and search inputs. | `CustomEvent<string>` |
63
+ | `search` | Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the internal search form). `event.detail` is the trimmed query string. Applies to search inputs (`type="search"`). | `CustomEvent<string>` |
64
+ | `valueChange` | Event that emits the current value of the input (including search fields). | `CustomEvent<string>` |
65
+
66
+
67
+ ## Methods
68
+
69
+ ### `setFocus() => Promise<void>`
70
+
71
+ Moves keyboard focus to the native control (text field, textarea, or search inner input).
72
+
73
+ #### Returns
74
+
75
+ Type: `Promise<void>`
76
+
77
+
56
78
 
57
79
 
58
80
  ## Dependencies
@@ -70,6 +92,7 @@ For `type="phone"`, the value is always emitted in **E.164** format (e.g. `+1415
70
92
  - [xpl-input-date](xpl-input-date)
71
93
  - [xpl-input-time](xpl-input-time)
72
94
  - [xpl-input-phone](xpl-input-phone)
95
+ - [xpl-input-search](xpl-input-search)
73
96
  - [xpl-icon](../xpl-icon)
74
97
 
75
98
  ### Graph
@@ -80,6 +103,7 @@ graph TD;
80
103
  xpl-input --> xpl-input-date
81
104
  xpl-input --> xpl-input-time
82
105
  xpl-input --> xpl-input-phone
106
+ xpl-input --> xpl-input-search
83
107
  xpl-input --> xpl-icon
84
108
  xpl-input-file --> xpl-icon
85
109
  xpl-input-color --> xpl-input
@@ -92,6 +116,7 @@ graph TD;
92
116
  xpl-dropdown-group --> xpl-dropdown-heading
93
117
  xpl-dropdown-option --> xpl-icon
94
118
  xpl-input-phone --> xpl-input
119
+ xpl-input-search --> xpl-icon
95
120
  style xpl-input fill:#f9f,stroke:#333,stroke-width:4px
96
121
  ```
97
122
 
@@ -57,6 +57,7 @@ graph TD;
57
57
  xpl-input-phone --> xpl-icon
58
58
  xpl-input-phone --> xpl-dropdown
59
59
  xpl-input-phone --> xpl-input
60
+ xpl-input-search --> xpl-icon
60
61
  style xpl-input-color fill:#f9f,stroke:#333,stroke-width:4px
61
62
  ```
62
63
 
@@ -159,6 +159,7 @@ graph TD;
159
159
  xpl-input-time --> xpl-input
160
160
  xpl-input-time --> xpl-icon
161
161
  xpl-input-time --> xpl-dropdown
162
+ xpl-input-search --> xpl-icon
162
163
  style xpl-input-phone fill:#f9f,stroke:#333,stroke-width:4px
163
164
  ```
164
165
 
@@ -0,0 +1,175 @@
1
+ # xpl-input-search
2
+
3
+ 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.
4
+
5
+ ## Usage
6
+
7
+ ### Recommended: `xpl-input` with `type="search"`
8
+
9
+ Default pill shell (`shape` defaults to `rounded`), placeholder, and optional `name` for forms:
10
+
11
+ ```html
12
+ <xpl-input type="search" name="q" placeholder="Search products"></xpl-input>
13
+ ```
14
+
15
+ Visible label, description, `box` shape, and `autocomplete`:
16
+
17
+ ```html
18
+ <xpl-input
19
+ type="search"
20
+ label="Search catalog"
21
+ description="SKU or product name"
22
+ name="q"
23
+ placeholder="SKU or name"
24
+ shape="box"
25
+ autocomplete="search"
26
+ ></xpl-input>
27
+ ```
28
+
29
+ When there is no visible label, set `aria-label` on `xpl-input` (forwarded to the inner field for assistive naming):
30
+
31
+ ```html
32
+ <xpl-input type="search" aria-label="Search help topics" placeholder="Search…"></xpl-input>
33
+ ```
34
+
35
+ Error state (border, `aria-invalid`, and error text on the parent) and an initial value (clear control appears when there is text):
36
+
37
+ ```html
38
+ <xpl-input type="search" shape="box" error="Invalid query" value="abc"></xpl-input>
39
+ ```
40
+
41
+ Listening for submit and live updates (vanilla JS):
42
+
43
+ ```html
44
+ <xpl-input id="search" type="search" placeholder="Search"></xpl-input>
45
+ <script type="module">
46
+ const el = document.getElementById('search');
47
+ el.addEventListener('search', (e) => {
48
+ console.log('submit', e.detail); // trimmed string
49
+ });
50
+ el.addEventListener('valueChange', (e) => {
51
+ console.log('value', e.detail); // raw string
52
+ });
53
+ </script>
54
+ ```
55
+
56
+ ### Events on `<xpl-input type="search">`
57
+
58
+ `valueChange`, `inputEvent`, `focusEvent`, and `blurEvent` are Stencil **`@Event`s** on **`xpl-input-search`** and **bubble** to the **`<xpl-input>`** host. **`focusEvent`** / **`blurEvent`** are also **re-emitted from `<xpl-input>`** so **`event.target`** matches **`type="text"`** (see **`xpl-input`** readme). **`valueChange`** / **`inputEvent`** are **not** re-emitted by the parent; use **`event.detail`** for the string if you do not want to depend on **`event.target`**.
59
+
60
+ The **commit** signal is a Stencil **`search`** **`@Event`** on **`xpl-input-search`** (trimmed query in **`detail`**). **`xpl-input`** wires **`onSearch`** on the inner tag, **`stopPropagation`s**, and **`this.search.emit(detail)`** so the public **`search`** **`@Event`** remains on **`<xpl-input>`**. **`setFocus()`** on **`<xpl-input>`** uses a **`ref`** to call the inner **`setFocus()`** only.
61
+
62
+ For advanced composition you can render `<xpl-input-search>` directly. You must pass **`input-id`** (matches a `<label for="…">` when used with a visible label). Set **`disabled`** and **`has-error`** (plus **`error-message-id`** when invalid) for both accessibility and visuals: the host adds `xpl-input-search--disabled` / `xpl-input-search--error` so disabled and error chrome match the wrapped `xpl-input` case. When nested under `xpl-input type="search"`, those props are set for you from the parent.
63
+
64
+ ```html
65
+ <label class="xpl-input-label" for="sid">Search</label>
66
+ <xpl-input-search input-id="sid" name="q" placeholder="Search…"></xpl-input-search>
67
+ ```
68
+
69
+ ## Design tokens
70
+
71
+ | Part | Token |
72
+ | ---- | ----- |
73
+ | Host text (input inherits) | `--xpl-text-default` |
74
+ | Shell layout | `gap`: `--xpl-space-12`; horizontal padding: `--xpl-space-12`; `min-height` / `max-height`: `--xpl-size-250` |
75
+ | Shell fill (resting) | `--xpl-background-surface-default` |
76
+ | Shell `border-radius` (pill, default `shape="rounded"`) | `--xpl-border-radius-button` |
77
+ | Shell `border-radius` (`shape="box"`) | `--xpl-border-radius-small` |
78
+ | Shell border (resting) | `--xpl-border-default` |
79
+ | Shell border (input focus, empty) | `--xpl-border-active` |
80
+ | Shell border (input focus, with value) | `--xpl-border-focus` |
81
+ | Shell border (error, from parent `xpl-input`) | `--xpl-border-negative` |
82
+ | Disabled shell (parent) | `--xpl-background-action-disabled` |
83
+ | Input typography | `--xpl-font-family-default`, `--xpl-font-size-body`, `--xpl-font-weight-normal` |
84
+ | Placeholder | `--xpl-text-subdued` |
85
+ | Disabled text / placeholder (parent) | `--xpl-text-disabled` |
86
+ | Leading icon | `--xpl-icon-default` / `--xpl-icon-disabled` |
87
+ | Clear icon | `--xpl-icon-subtle` |
88
+ | Caret (focus, with value) | `--xpl-border-focus` |
89
+ | Caret (focus, error, parent) | `--xpl-border-negative` |
90
+
91
+ Light and dark mode use Foundation purpose-specific tokens only (no component `.dark` overrides).
92
+
93
+ ## Icon mapping
94
+
95
+ | Role | When | `xpl-icon` name | `size` |
96
+ | ---- | ---- | ----------------- | ------ |
97
+ | Leading search | Always (when the control renders) | `magnifier` | 20 |
98
+ | Clear | Value non-empty and not `disabled` | `circle-xmark` | 16 |
99
+
100
+ ## Accessibility
101
+
102
+ - **Role and naming:** The field uses a native `<input type="text">` with `role="searchbox"`. `type="text"` avoids browser search-field chrome that would clash with the design-system clear control. When the parent does not render a visible label, `aria-label` on the inner input defaults to `"Search"` unless `ariaLabel` / parent `aria-label` overrides it. With a visible label, the input is named via `<label for="…">` and redundant `aria-label` on the input is omitted.
103
+ - **`autocomplete`:** Default `off` is typical for inline search; set `autocomplete` on `xpl-input` for search fields when you need a specific token.
104
+ - **Errors:** With `xpl-input`, non-empty `error` sets `aria-invalid`, links the message with `aria-describedby`, and styles the shell from the parent host.
105
+ - **Keyboard — standalone `xpl-input-search`:** An inner `<form>` wraps the shell when the host is not already inside a `<form>`. **Enter** submits that inner form (default prevented); the host emits a Stencil **`search`** event (trimmed value in **`detail`**). Listen with **`addEventListener('search', …)`** on **`xpl-input-search`**. **Tab** visits the input and the clear control when visible.
106
+ - **Keyboard — inside a parent `<form>`:** The inner `<form>` is omitted. **Enter** uses native form submission; listen on the parent form’s **`submit`**. Use **`valueChange`** / **`inputEvent`** for live typing.
107
+ - **Clear control:** The clear button exposes **`aria-label="Clear search"`**. Activating it clears the value, emits **`valueChange`** / **`inputEvent`** with `''`, and refocuses the input. When **`disabled`** or **`readonly`** is true, the clear control is hidden and inert (no value mutation).
108
+
109
+ <!-- Auto Generated Below -->
110
+
111
+
112
+ ## Properties
113
+
114
+ | Property | Attribute | Description | Type | Default |
115
+ | ---------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ----------- |
116
+ | `ariaLabel` | `aria-label` | Accessible name when there is no visible label from the parent; maps to `aria-label` on the input. When the parent provides a visible label, the input is named by `<label for="…">` — this prop is ignored for naming. Empty or whitespace-only values are treated as missing and fall back to `'Search'` so the field is never unnamed. | `string` | `'Search'` |
117
+ | `autocomplete` | `autocomplete` | Passed to the native input (`autocomplete` attribute). Default `off` matches common inline-search UX; browsers may still apply heuristics. | `string` | `'off'` |
118
+ | `disabled` | `disabled` | Disables the field and clear control. | `boolean` | `false` |
119
+ | `errorMessageId` | `error-message-id` | Element id for `aria-describedby` when `hasError` (error message lives on `xpl-input`). | `string` | `undefined` |
120
+ | `hasError` | `has-error` | Set by `xpl-input` when `error` is shown — drives `aria-invalid` / `aria-describedby`. | `boolean` | `false` |
121
+ | `hasVisibleLabel` | `has-visible-label` | When true, parent `xpl-input` renders a visible label — omit `aria-label` on the input. | `boolean` | `false` |
122
+ | `inputId` _(required)_ | `input-id` | Associates the control with the parent `xpl-input` label (`for` / `id`). | `string` | `undefined` |
123
+ | `name` | `name` | Form field `name` on the native input. | `string` | `undefined` |
124
+ | `placeholder` | `placeholder` | Placeholder shown when the value is empty. | `string` | `'Search'` |
125
+ | `readonly` | `readonly` | Whether the input is editable. | `boolean` | `false` |
126
+ | `required` | `required` | Whether the input is required. | `boolean` | `false` |
127
+ | `shape` | `shape` | Shell corner radius: `rounded` (pill) or `box` (rounded rectangle). | `"box" \| "rounded"` | `'rounded'` |
128
+ | `value` | `value` | Current value (controlled-friendly). | `string` | `''` |
129
+
130
+
131
+ ## Events
132
+
133
+ | Event | Description | Type |
134
+ | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
135
+ | `blurEvent` | Emitted when the inner control loses focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types). | `CustomEvent<FocusEvent>` |
136
+ | `focusEvent` | Emitted when the inner control receives focus. When nested under `xpl-input type="search"`, this event bubbles to the `xpl-input` host (same event name as other input types). | `CustomEvent<FocusEvent>` |
137
+ | `inputEvent` | Fired on every input change (typing, paste) and when the value is cleared — mirrors `xpl-input` text fields. When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host. | `CustomEvent<string>` |
138
+ | `search` | Emitted when the user commits a search (Enter with no enclosing form owner, or submit of the inner search form). `event.detail` is the trimmed query string. When nested under `xpl-input type="search"`, the parent listens with `onSearch` and re-emits so the canonical `search` `@Event` stays on `xpl-input`. | `CustomEvent<string>` |
139
+ | `valueChange` | Fired on every input change (typing, paste) and when the value is cleared. `event.detail` is the raw `value` string (not trimmed). When nested under `xpl-input type="search"`, bubbles to the `xpl-input` host. | `CustomEvent<string>` |
140
+
141
+
142
+ ## Methods
143
+
144
+ ### `setFocus() => Promise<void>`
145
+
146
+ Moves keyboard focus to the search field.
147
+
148
+ #### Returns
149
+
150
+ Type: `Promise<void>`
151
+
152
+
153
+
154
+
155
+ ## Dependencies
156
+
157
+ ### Used by
158
+
159
+ - [xpl-input](..)
160
+
161
+ ### Depends on
162
+
163
+ - [xpl-icon](../../xpl-icon)
164
+
165
+ ### Graph
166
+ ```mermaid
167
+ graph TD;
168
+ xpl-input-search --> xpl-icon
169
+ xpl-input --> xpl-input-search
170
+ style xpl-input-search fill:#f9f,stroke:#333,stroke-width:4px
171
+ ```
172
+
173
+ ----------------------------------------------
174
+
175
+ *Built with [StencilJS](https://stenciljs.com/)*
@@ -65,6 +65,7 @@ graph TD;
65
65
  xpl-dropdown-group --> xpl-dropdown-option
66
66
  xpl-dropdown-group --> xpl-dropdown-heading
67
67
  xpl-dropdown-option --> xpl-icon
68
+ xpl-input-search --> xpl-icon
68
69
  style xpl-input-time fill:#f9f,stroke:#333,stroke-width:4px
69
70
  ```
70
71