@brandsync/wc 1.16.0 → 1.17.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 (451) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/REFERENCE.md +231 -0
  3. package/custom-elements.json +3902 -1547
  4. package/dist/brandsync-wc/brandsync-wc.esm.js +1 -1
  5. package/dist/brandsync-wc/{p-0228a584.entry.js → p-044ac86c.entry.js} +1 -1
  6. package/dist/brandsync-wc/p-065c7e7c.entry.js +1 -0
  7. package/dist/brandsync-wc/{p-e9afb553.entry.js → p-07673a48.entry.js} +1 -1
  8. package/dist/brandsync-wc/{p-54f9529f.entry.js → p-08e96f13.entry.js} +1 -1
  9. package/dist/brandsync-wc/{p-f3cc961b.entry.js → p-0bbaef51.entry.js} +1 -1
  10. package/dist/brandsync-wc/p-11d80e17.entry.js +1 -0
  11. package/dist/brandsync-wc/{p-c85fe37b.entry.js → p-1bd99669.entry.js} +1 -1
  12. package/dist/brandsync-wc/{p-f4d1d56e.entry.js → p-225148be.entry.js} +1 -1
  13. package/dist/brandsync-wc/{p-15f4c343.entry.js → p-2bd30709.entry.js} +1 -1
  14. package/dist/brandsync-wc/{p-76748795.entry.js → p-32297416.entry.js} +1 -1
  15. package/dist/brandsync-wc/{p-d165a742.entry.js → p-35f76ea7.entry.js} +1 -1
  16. package/dist/brandsync-wc/{p-4ca40386.entry.js → p-3bad5e1b.entry.js} +1 -1
  17. package/dist/brandsync-wc/{p-ed71eb02.entry.js → p-3bdeeb9d.entry.js} +1 -1
  18. package/dist/brandsync-wc/{p-67629178.entry.js → p-3c6ec5d0.entry.js} +1 -1
  19. package/dist/brandsync-wc/{p-abfa43f5.entry.js → p-3cb79512.entry.js} +1 -1
  20. package/dist/brandsync-wc/p-3d2c62a6.entry.js +1 -0
  21. package/dist/brandsync-wc/{p-23379d7c.entry.js → p-3d7b0708.entry.js} +1 -1
  22. package/dist/brandsync-wc/{p-2e285364.entry.js → p-43d5f708.entry.js} +1 -1
  23. package/dist/brandsync-wc/{p-d81c4f58.entry.js → p-4b460eda.entry.js} +1 -1
  24. package/dist/brandsync-wc/{p-b6081bba.entry.js → p-4eaa9ed4.entry.js} +1 -1
  25. package/dist/brandsync-wc/{p-c25553bc.entry.js → p-4f4c0c68.entry.js} +1 -1
  26. package/dist/brandsync-wc/{p-a56bc608.entry.js → p-5057e4fe.entry.js} +1 -1
  27. package/dist/brandsync-wc/p-54d91ac9.entry.js +1 -0
  28. package/dist/brandsync-wc/{p-65fa1b21.entry.js → p-57ff14ca.entry.js} +1 -1
  29. package/dist/brandsync-wc/{p-538d5b58.entry.js → p-5b933ff4.entry.js} +1 -1
  30. package/dist/brandsync-wc/{p-b67a0c8f.entry.js → p-5c61eb06.entry.js} +1 -1
  31. package/dist/brandsync-wc/{p-86774165.entry.js → p-5eb5795f.entry.js} +1 -1
  32. package/dist/brandsync-wc/{p-b663ee67.entry.js → p-61deb48c.entry.js} +1 -1
  33. package/dist/brandsync-wc/{p-cc4c8c1d.entry.js → p-67f125e8.entry.js} +1 -1
  34. package/dist/brandsync-wc/{p-3488c4fc.entry.js → p-6ea02b98.entry.js} +1 -1
  35. package/dist/brandsync-wc/p-70c650b2.entry.js +1 -0
  36. package/dist/brandsync-wc/{p-949a4270.entry.js → p-79fc849c.entry.js} +1 -1
  37. package/dist/brandsync-wc/{p-5a45ef51.entry.js → p-7ed071fb.entry.js} +1 -1
  38. package/dist/brandsync-wc/{p-298158da.entry.js → p-8134f97c.entry.js} +1 -1
  39. package/dist/brandsync-wc/{p-4ed00786.entry.js → p-844205d9.entry.js} +1 -1
  40. package/dist/brandsync-wc/p-84d6d6eb.entry.js +1 -0
  41. package/dist/brandsync-wc/{p-401b3d3d.entry.js → p-857987f9.entry.js} +1 -1
  42. package/dist/brandsync-wc/{p-b9c9bcba.entry.js → p-8c4dfccb.entry.js} +1 -1
  43. package/dist/brandsync-wc/{p-38ac9aad.entry.js → p-90ba3032.entry.js} +1 -1
  44. package/dist/brandsync-wc/{p-1ca8b01e.entry.js → p-9396c67e.entry.js} +1 -1
  45. package/dist/brandsync-wc/{p-e9b6b30f.entry.js → p-9d740928.entry.js} +1 -1
  46. package/dist/brandsync-wc/{p-baa3d37a.entry.js → p-a7fa839a.entry.js} +1 -1
  47. package/dist/brandsync-wc/{p-f271e1d2.entry.js → p-a7fb0b59.entry.js} +1 -1
  48. package/dist/brandsync-wc/{p-89ea6366.entry.js → p-ab14a07d.entry.js} +1 -1
  49. package/dist/brandsync-wc/{p-912629c6.entry.js → p-aec2dfeb.entry.js} +1 -1
  50. package/dist/brandsync-wc/{p-8390a155.entry.js → p-b02bf1ca.entry.js} +1 -1
  51. package/dist/brandsync-wc/{p-9beeb30c.entry.js → p-b142d8c9.entry.js} +1 -1
  52. package/dist/brandsync-wc/{p-a12691d8.entry.js → p-b4511ad3.entry.js} +1 -1
  53. package/dist/brandsync-wc/{p-5ed1f45e.entry.js → p-b5710db6.entry.js} +1 -1
  54. package/dist/brandsync-wc/{p-34b0c048.entry.js → p-baa39c08.entry.js} +1 -1
  55. package/dist/brandsync-wc/{p-0159f0da.entry.js → p-be7aac52.entry.js} +1 -1
  56. package/dist/brandsync-wc/p-c835afb7.entry.js +1 -0
  57. package/dist/brandsync-wc/{p-45986ad4.entry.js → p-d25adab2.entry.js} +1 -1
  58. package/dist/brandsync-wc/p-d2a15599.entry.js +1 -0
  59. package/dist/brandsync-wc/{p-521d0fc2.entry.js → p-d7956c51.entry.js} +1 -1
  60. package/dist/brandsync-wc/p-d9184940.entry.js +1 -0
  61. package/dist/brandsync-wc/{p-0f97fe35.entry.js → p-dcbeb143.entry.js} +1 -1
  62. package/dist/brandsync-wc/{p-cf287ff1.entry.js → p-debc83cc.entry.js} +1 -1
  63. package/dist/brandsync-wc/{p-dcacee29.entry.js → p-e0a9f2d1.entry.js} +1 -1
  64. package/dist/brandsync-wc/p-e123b391.entry.js +1 -0
  65. package/dist/brandsync-wc/{p-7dc59e0b.entry.js → p-e8ae626d.entry.js} +1 -1
  66. package/dist/brandsync-wc/p-e8e22238.entry.js +1 -0
  67. package/dist/brandsync-wc/{p-6cb21302.entry.js → p-eb0dc5bf.entry.js} +1 -1
  68. package/dist/brandsync-wc/{p-38fe9d07.entry.js → p-f43a7f16.entry.js} +1 -1
  69. package/dist/brandsync-wc/{p-7b3518b8.entry.js → p-f82a9f0d.entry.js} +1 -1
  70. package/dist/brandsync-wc/{p-f0be9125.entry.js → p-f98dfa85.entry.js} +1 -1
  71. package/dist/brandsync-wc/{p-36fe783a.entry.js → p-fdc168ec.entry.js} +1 -1
  72. package/dist/brandsync-wc/{p-42b79d95.entry.js → p-ffccc1ee.entry.js} +1 -1
  73. package/dist/cjs/brandsync-wc.cjs.js +1 -1
  74. package/dist/cjs/bs-accordion-group.cjs.entry.js +1 -1
  75. package/dist/cjs/bs-ai-disclaimer.cjs.entry.js +1 -1
  76. package/dist/cjs/bs-ai-greeting.cjs.entry.js +1 -1
  77. package/dist/cjs/bs-ai-thinking.cjs.entry.js +1 -1
  78. package/dist/cjs/bs-app-shell.cjs.entry.js +1 -1
  79. package/dist/cjs/bs-attachment-list.cjs.entry.js +1 -1
  80. package/dist/cjs/bs-breadcrumbs.cjs.entry.js +1 -1
  81. package/dist/cjs/bs-button-skeleton.cjs.entry.js +1 -1
  82. package/dist/cjs/bs-chatbot-feedback.cjs.entry.js +1 -1
  83. package/dist/cjs/bs-chatbot-header.cjs.entry.js +1 -1
  84. package/dist/cjs/bs-chatbot-response-action.cjs.entry.js +1 -1
  85. package/dist/cjs/bs-chatbot-sources-drawer.cjs.entry.js +1 -1
  86. package/dist/cjs/bs-chatbot-suggestion-button.cjs.entry.js +1 -1
  87. package/dist/cjs/bs-checkbox-skeleton.cjs.entry.js +1 -1
  88. package/dist/cjs/bs-citation-preview.cjs.entry.js +1 -1
  89. package/dist/cjs/bs-command-palette.cjs.entry.js +374 -0
  90. package/dist/cjs/bs-composer-status-banner.cjs.entry.js +1 -1
  91. package/dist/cjs/bs-composer.cjs.entry.js +1 -1
  92. package/dist/cjs/bs-container.cjs.entry.js +1 -1
  93. package/dist/cjs/bs-data-table.cjs.entry.js +2 -2
  94. package/dist/cjs/bs-datepicker.cjs.entry.js +1 -1
  95. package/dist/cjs/bs-divider.cjs.entry.js +1 -1
  96. package/dist/cjs/bs-empty-state.cjs.entry.js +47 -0
  97. package/dist/cjs/bs-error-page.cjs.entry.js +1 -1
  98. package/dist/cjs/bs-file-upload-item.cjs.entry.js +1 -1
  99. package/dist/cjs/bs-file-upload.cjs.entry.js +1 -1
  100. package/dist/cjs/bs-global-search.cjs.entry.js +326 -0
  101. package/dist/cjs/bs-grid.cjs.entry.js +2 -2
  102. package/dist/cjs/bs-icon-button.cjs.entry.js +1 -1
  103. package/dist/cjs/bs-icon-tile.cjs.entry.js +2 -2
  104. package/dist/cjs/bs-inline-tab.cjs.entry.js +1 -1
  105. package/dist/cjs/bs-input_3.cjs.entry.js +4 -4
  106. package/dist/cjs/bs-key-caps.cjs.entry.js +39 -0
  107. package/dist/cjs/bs-key.cjs.entry.js +28 -0
  108. package/dist/cjs/bs-keyboard-shortcuts.cjs.entry.js +112 -0
  109. package/dist/cjs/bs-list-item.cjs.entry.js +1 -1
  110. package/dist/cjs/bs-list.cjs.entry.js +1 -1
  111. package/dist/cjs/bs-message-list.cjs.entry.js +1 -1
  112. package/dist/cjs/bs-message.cjs.entry.js +1 -1
  113. package/dist/cjs/bs-navigation-drawer-item.cjs.entry.js +1 -1
  114. package/dist/cjs/bs-navigation-drawer.cjs.entry.js +2 -2
  115. package/dist/cjs/bs-navigation-header.cjs.entry.js +1 -1
  116. package/dist/cjs/bs-pagination.cjs.entry.js +1 -1
  117. package/dist/cjs/bs-popover.cjs.entry.js +1 -1
  118. package/dist/cjs/bs-progress-linear.cjs.entry.js +2 -2
  119. package/dist/cjs/bs-progress.cjs.entry.js +2 -2
  120. package/dist/cjs/bs-qr-code.cjs.entry.js +1 -1
  121. package/dist/cjs/bs-radio.cjs.entry.js +1 -1
  122. package/dist/cjs/bs-search-item.cjs.entry.js +47 -0
  123. package/dist/cjs/bs-session-timeout.cjs.entry.js +1 -1
  124. package/dist/cjs/bs-shortcut-row.cjs.entry.js +27 -0
  125. package/dist/cjs/bs-skeleton.cjs.entry.js +1 -1
  126. package/dist/cjs/bs-slider.cjs.entry.js +1 -1
  127. package/dist/cjs/bs-snackbar.cjs.entry.js +1 -1
  128. package/dist/cjs/bs-source-link.cjs.entry.js +2 -2
  129. package/dist/cjs/bs-spinner.cjs.entry.js +1 -1
  130. package/dist/cjs/bs-split-pane.cjs.entry.js +1 -1
  131. package/dist/cjs/bs-stack.cjs.entry.js +1 -1
  132. package/dist/cjs/bs-stepper-step.cjs.entry.js +1 -1
  133. package/dist/cjs/bs-stepper.cjs.entry.js +1 -1
  134. package/dist/cjs/bs-switch.cjs.entry.js +1 -1
  135. package/dist/cjs/bs-tab_3.cjs.entry.js +3 -3
  136. package/dist/cjs/bs-timepicker.cjs.entry.js +2 -2
  137. package/dist/cjs/bs-toast.cjs.entry.js +1 -1
  138. package/dist/cjs/bs-tooltip-trigger.cjs.entry.js +1 -1
  139. package/dist/cjs/bs-tooltip.cjs.entry.js +1 -1
  140. package/dist/cjs/bs-tree-item.cjs.entry.js +2 -2
  141. package/dist/cjs/bs-tree.cjs.entry.js +1 -1
  142. package/dist/cjs/loader.cjs.js +1 -1
  143. package/dist/collection/collection-manifest.json +9 -1
  144. package/dist/collection/components/bs-accordion-group/bs-accordion-group.js +1 -1
  145. package/dist/collection/components/bs-ai-disclaimer/bs-ai-disclaimer.js +1 -1
  146. package/dist/collection/components/bs-ai-greeting/bs-ai-greeting.js +1 -1
  147. package/dist/collection/components/bs-ai-thinking/bs-ai-thinking.js +1 -1
  148. package/dist/collection/components/bs-app-shell/bs-app-shell.js +1 -1
  149. package/dist/collection/components/bs-attachment-list/bs-attachment-list.js +1 -1
  150. package/dist/collection/components/bs-breadcrumb/bs-breadcrumbs/bs-breadcrumbs.js +1 -1
  151. package/dist/collection/components/bs-button/bs-icon-button/bs-icon-button.js +1 -1
  152. package/dist/collection/components/bs-button-skeleton/bs-button-skeleton.js +1 -1
  153. package/dist/collection/components/bs-chatbot-feedback/bs-chatbot-feedback.js +1 -1
  154. package/dist/collection/components/bs-chatbot-header/bs-chatbot-header.js +1 -1
  155. package/dist/collection/components/bs-chatbot-response-action/bs-chatbot-response-action.js +1 -1
  156. package/dist/collection/components/bs-chatbot-sources-drawer/bs-chatbot-sources-drawer.js +1 -1
  157. package/dist/collection/components/bs-chatbot-suggestion-button/bs-chatbot-suggestion-button.js +1 -1
  158. package/dist/collection/components/bs-checkbox/bs-checkbox-skeleton/bs-checkbox-skeleton.js +1 -1
  159. package/dist/collection/components/bs-citation-preview/bs-citation-preview.js +1 -1
  160. package/dist/collection/components/bs-command-palette/bs-command-palette.cmp.test.js +207 -0
  161. package/dist/collection/components/bs-command-palette/bs-command-palette.css +214 -0
  162. package/dist/collection/components/bs-command-palette/bs-command-palette.js +1114 -0
  163. package/dist/collection/components/bs-command-palette/bs-command-palette.stories.js +194 -0
  164. package/dist/collection/components/bs-composer/bs-composer.js +1 -1
  165. package/dist/collection/components/bs-composer-status-banner/bs-composer-status-banner.js +1 -1
  166. package/dist/collection/components/bs-container/bs-container.js +1 -1
  167. package/dist/collection/components/bs-data-table/bs-data-table.js +2 -2
  168. package/dist/collection/components/bs-datepicker/bs-datepicker.js +1 -1
  169. package/dist/collection/components/bs-divider/bs-divider.js +1 -1
  170. package/dist/collection/components/bs-empty-state/bs-empty-state.cmp.test.js +102 -0
  171. package/dist/collection/components/bs-empty-state/bs-empty-state.css +45 -0
  172. package/dist/collection/components/bs-empty-state/bs-empty-state.js +175 -0
  173. package/dist/collection/components/bs-empty-state/bs-empty-state.stories.js +52 -0
  174. package/dist/collection/components/bs-error-page/bs-error-page.js +1 -1
  175. package/dist/collection/components/bs-file-upload/bs-file-upload.js +1 -1
  176. package/dist/collection/components/bs-file-upload-item/bs-file-upload-item.js +1 -1
  177. package/dist/collection/components/bs-global-search/bs-global-search.cmp.test.js +491 -0
  178. package/dist/collection/components/bs-global-search/bs-global-search.css +115 -0
  179. package/dist/collection/components/bs-global-search/bs-global-search.js +1024 -0
  180. package/dist/collection/components/bs-global-search/bs-global-search.stories.js +146 -0
  181. package/dist/collection/components/bs-grid/bs-grid.js +2 -2
  182. package/dist/collection/components/bs-icon-tile/bs-icon-tile.js +2 -2
  183. package/dist/collection/components/bs-input/bs-input.js +2 -2
  184. package/dist/collection/components/bs-key/bs-key.cmp.test.js +59 -0
  185. package/dist/collection/components/bs-key/bs-key.css +58 -0
  186. package/dist/collection/components/bs-key/bs-key.js +84 -0
  187. package/dist/collection/components/bs-key/bs-key.stories.js +19 -0
  188. package/dist/collection/components/bs-key-caps/bs-key-caps.cmp.test.js +60 -0
  189. package/dist/collection/components/bs-key-caps/bs-key-caps.css +28 -0
  190. package/dist/collection/components/bs-key-caps/bs-key-caps.js +120 -0
  191. package/dist/collection/components/bs-key-caps/bs-key-caps.stories.js +29 -0
  192. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.cmp.test.js +194 -0
  193. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.css +138 -0
  194. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.js +485 -0
  195. package/dist/collection/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.stories.js +111 -0
  196. package/dist/collection/components/bs-list/bs-list.js +1 -1
  197. package/dist/collection/components/bs-list-item/bs-list-item.js +1 -1
  198. package/dist/collection/components/bs-menu/bs-menu.js +1 -1
  199. package/dist/collection/components/bs-menu-item/bs-menu-item.js +1 -1
  200. package/dist/collection/components/bs-message/bs-message.js +1 -1
  201. package/dist/collection/components/bs-message-list/bs-message-list.js +1 -1
  202. package/dist/collection/components/bs-pagination/bs-pagination.js +1 -1
  203. package/dist/collection/components/bs-popover/bs-popover.js +1 -1
  204. package/dist/collection/components/bs-progress/bs-progress.js +2 -2
  205. package/dist/collection/components/bs-progress-linear/bs-progress-linear.js +2 -2
  206. package/dist/collection/components/bs-qr-code/bs-qr-code.js +1 -1
  207. package/dist/collection/components/bs-radio/bs-radio.js +1 -1
  208. package/dist/collection/components/bs-search-item/bs-search-item.cmp.test.js +147 -0
  209. package/dist/collection/components/bs-search-item/bs-search-item.css +112 -0
  210. package/dist/collection/components/bs-search-item/bs-search-item.js +222 -0
  211. package/dist/collection/components/bs-search-item/bs-search-item.stories.js +31 -0
  212. package/dist/collection/components/bs-session-timeout/bs-session-timeout.js +1 -1
  213. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.cmp.test.js +60 -0
  214. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.css +42 -0
  215. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.js +154 -0
  216. package/dist/collection/components/bs-shortcut-row/bs-shortcut-row.stories.js +24 -0
  217. package/dist/collection/components/bs-skeleton/bs-skeleton.js +1 -1
  218. package/dist/collection/components/bs-slider/bs-slider.js +1 -1
  219. package/dist/collection/components/bs-snackbar/bs-snackbar.js +1 -1
  220. package/dist/collection/components/bs-source-link/bs-source-link.js +2 -2
  221. package/dist/collection/components/bs-spinner/bs-spinner.js +1 -1
  222. package/dist/collection/components/bs-split-pane/bs-split-pane.js +1 -1
  223. package/dist/collection/components/bs-stack/bs-stack.js +1 -1
  224. package/dist/collection/components/bs-stepper/bs-stepper/bs-stepper.js +1 -1
  225. package/dist/collection/components/bs-stepper/bs-stepper-step/bs-stepper-step.js +1 -1
  226. package/dist/collection/components/bs-switch/bs-switch.js +1 -1
  227. package/dist/collection/components/bs-tab/bs-inline-tab/bs-inline-tab.js +1 -1
  228. package/dist/collection/components/bs-tab/bs-tab/bs-tab.js +1 -1
  229. package/dist/collection/components/bs-tab/bs-tabs/bs-tabs.js +1 -1
  230. package/dist/collection/components/bs-timepicker/bs-timepicker.js +2 -2
  231. package/dist/collection/components/bs-toast/bs-toast.js +1 -1
  232. package/dist/collection/components/bs-tooltip/bs-tooltip.js +1 -1
  233. package/dist/collection/components/bs-tooltip-trigger/bs-tooltip-trigger.js +1 -1
  234. package/dist/collection/components/bs-tree/bs-tree.js +1 -1
  235. package/dist/collection/components/bs-tree-item/bs-tree-item.js +2 -2
  236. package/dist/collection/components/bs-whats-new-entry/bs-whats-new-entry.js +1 -1
  237. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer/bs-navigation-drawer.js +2 -2
  238. package/dist/collection/components/ui-shell/bs-navigation-drawer/bs-navigation-drawer-item/bs-navigation-drawer-item.js +1 -1
  239. package/dist/collection/components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header.js +1 -1
  240. package/dist/components/bs-accordion-group.js +1 -1
  241. package/dist/components/bs-ai-disclaimer.js +1 -1
  242. package/dist/components/bs-ai-greeting.js +1 -1
  243. package/dist/components/bs-ai-thinking.js +1 -1
  244. package/dist/components/bs-app-shell.js +1 -1
  245. package/dist/components/bs-attachment-list.js +1 -1
  246. package/dist/components/bs-attachment.js +1 -1
  247. package/dist/components/bs-breadcrumb-overflow.js +1 -1
  248. package/dist/components/bs-breadcrumbs.js +1 -1
  249. package/dist/components/bs-button-skeleton.js +1 -1
  250. package/dist/components/bs-carousel.js +1 -1
  251. package/dist/components/bs-chatbot-feedback.js +1 -1
  252. package/dist/components/bs-chatbot-header.js +1 -1
  253. package/dist/components/bs-chatbot-response-action.js +1 -1
  254. package/dist/components/bs-chatbot-sources-drawer.js +1 -1
  255. package/dist/components/bs-chatbot-suggestion-button.js +1 -1
  256. package/dist/components/bs-checkbox-skeleton.js +1 -1
  257. package/dist/components/bs-citation-preview.js +1 -1
  258. package/dist/components/bs-command-palette.d.ts +11 -0
  259. package/dist/components/bs-command-palette.js +1 -0
  260. package/dist/components/bs-composer-status-banner.js +1 -1
  261. package/dist/components/bs-composer.js +1 -1
  262. package/dist/components/bs-container.js +1 -1
  263. package/dist/components/bs-cookie-consent.js +1 -1
  264. package/dist/components/bs-data-table.js +1 -1
  265. package/dist/components/bs-datepicker.js +1 -1
  266. package/dist/components/bs-dialog.js +1 -1
  267. package/dist/components/bs-divider.js +1 -1
  268. package/dist/components/bs-empty-state.d.ts +11 -0
  269. package/dist/components/bs-empty-state.js +1 -0
  270. package/dist/components/bs-error-page.js +1 -1
  271. package/dist/components/bs-file-upload-item.js +1 -1
  272. package/dist/components/bs-file-upload.js +1 -1
  273. package/dist/components/bs-global-search.d.ts +11 -0
  274. package/dist/components/bs-global-search.js +1 -0
  275. package/dist/components/bs-grid.js +1 -1
  276. package/dist/components/bs-icon-button.js +1 -1
  277. package/dist/components/bs-icon-tile.js +1 -1
  278. package/dist/components/bs-inline-tab.js +1 -1
  279. package/dist/components/bs-input.js +1 -1
  280. package/dist/components/bs-key-caps.d.ts +11 -0
  281. package/dist/components/bs-key-caps.js +1 -0
  282. package/dist/components/bs-key.d.ts +11 -0
  283. package/dist/components/bs-key.js +1 -0
  284. package/dist/components/bs-keyboard-shortcuts.d.ts +11 -0
  285. package/dist/components/bs-keyboard-shortcuts.js +1 -0
  286. package/dist/components/bs-list-item.js +1 -1
  287. package/dist/components/bs-list.js +1 -1
  288. package/dist/components/bs-menu-item.js +1 -1
  289. package/dist/components/bs-menu.js +1 -1
  290. package/dist/components/bs-message-list.js +1 -1
  291. package/dist/components/bs-message.js +1 -1
  292. package/dist/components/bs-navigation-drawer-item.js +1 -1
  293. package/dist/components/bs-navigation-drawer.js +1 -1
  294. package/dist/components/bs-navigation-header.js +1 -1
  295. package/dist/components/bs-onboarding-checklist.js +1 -1
  296. package/dist/components/bs-pagination.js +1 -1
  297. package/dist/components/bs-popover.js +1 -1
  298. package/dist/components/bs-product-tour.js +1 -1
  299. package/dist/components/bs-progress-linear.js +1 -1
  300. package/dist/components/bs-progress.js +1 -1
  301. package/dist/components/bs-qr-code.js +1 -1
  302. package/dist/components/bs-radio.js +1 -1
  303. package/dist/components/bs-search-item.d.ts +11 -0
  304. package/dist/components/bs-search-item.js +1 -0
  305. package/dist/components/bs-session-timeout.js +1 -1
  306. package/dist/components/bs-shortcut-row.d.ts +11 -0
  307. package/dist/components/bs-shortcut-row.js +1 -0
  308. package/dist/components/bs-side-panel.js +1 -1
  309. package/dist/components/bs-skeleton.js +1 -1
  310. package/dist/components/bs-slider.js +1 -1
  311. package/dist/components/bs-snackbar.js +1 -1
  312. package/dist/components/bs-source-link.js +1 -1
  313. package/dist/components/bs-spinner.js +1 -1
  314. package/dist/components/bs-split-pane.js +1 -1
  315. package/dist/components/bs-stack.js +1 -1
  316. package/dist/components/bs-stepper-step.js +1 -1
  317. package/dist/components/bs-stepper.js +1 -1
  318. package/dist/components/bs-switch.js +1 -1
  319. package/dist/components/bs-tab.js +1 -1
  320. package/dist/components/bs-tabs.js +1 -1
  321. package/dist/components/bs-timepicker.js +1 -1
  322. package/dist/components/bs-toast.js +1 -1
  323. package/dist/components/bs-tooltip-trigger.js +1 -1
  324. package/dist/components/bs-tooltip.js +1 -1
  325. package/dist/components/bs-tree-item.js +1 -1
  326. package/dist/components/bs-tree.js +1 -1
  327. package/dist/components/bs-whats-new-entry.js +1 -1
  328. package/dist/components/bs-whats-new.js +1 -1
  329. package/dist/components/{p-GTDI4Ibw.js → p-B32Kl4IB.js} +1 -1
  330. package/dist/components/{p-B128GX8H.js → p-BDnZvjlq.js} +1 -1
  331. package/dist/components/{p-BdkE4auv.js → p-BUpnOUIM.js} +1 -1
  332. package/dist/components/p-BcYNrEOB.js +1 -0
  333. package/dist/components/{p-B80vOwH6.js → p-BcbaiZLh.js} +1 -1
  334. package/dist/components/p-Bp3DIxjT.js +1 -0
  335. package/dist/components/p-CH5atin4.js +1 -0
  336. package/dist/components/{p-kDJsWjTN.js → p-CRM1wIX9.js} +1 -1
  337. package/dist/components/p-CYzBTzzf.js +1 -0
  338. package/dist/components/p-CervX0wH.js +1 -0
  339. package/dist/components/{p-C93ymWm7.js → p-Cpe2k7ZC.js} +1 -1
  340. package/dist/components/{p-Bb1-2M8K.js → p-D7AXo5NT.js} +1 -1
  341. package/dist/components/{p-J9cxcDhY.js → p-D8bvv9QQ.js} +1 -1
  342. package/dist/components/{p-DFKc3lLA.js → p-DG9eT5yi.js} +1 -1
  343. package/dist/components/{p-D0KM1R2i.js → p-DMLfXpva.js} +1 -1
  344. package/dist/components/{p-CQjSDdH7.js → p-DYDk73TF.js} +1 -1
  345. package/dist/components/{p-C7RZ6qZC.js → p-DcjgRtSQ.js} +1 -1
  346. package/dist/components/p-Dt4JNhHT.js +1 -0
  347. package/dist/components/{p-CK7fiES5.js → p-DtYTs9Kh.js} +1 -1
  348. package/dist/components/{p-BsbtyRJV.js → p-TAY9S9yG.js} +1 -1
  349. package/dist/components/{p-ByLUtXxO.js → p-w-DkdA4O.js} +1 -1
  350. package/dist/esm/brandsync-wc.js +1 -1
  351. package/dist/esm/bs-accordion-group.entry.js +1 -1
  352. package/dist/esm/bs-ai-disclaimer.entry.js +1 -1
  353. package/dist/esm/bs-ai-greeting.entry.js +1 -1
  354. package/dist/esm/bs-ai-thinking.entry.js +1 -1
  355. package/dist/esm/bs-app-shell.entry.js +1 -1
  356. package/dist/esm/bs-attachment-list.entry.js +1 -1
  357. package/dist/esm/bs-breadcrumbs.entry.js +1 -1
  358. package/dist/esm/bs-button-skeleton.entry.js +1 -1
  359. package/dist/esm/bs-chatbot-feedback.entry.js +1 -1
  360. package/dist/esm/bs-chatbot-header.entry.js +1 -1
  361. package/dist/esm/bs-chatbot-response-action.entry.js +1 -1
  362. package/dist/esm/bs-chatbot-sources-drawer.entry.js +1 -1
  363. package/dist/esm/bs-chatbot-suggestion-button.entry.js +1 -1
  364. package/dist/esm/bs-checkbox-skeleton.entry.js +1 -1
  365. package/dist/esm/bs-citation-preview.entry.js +1 -1
  366. package/dist/esm/bs-command-palette.entry.js +372 -0
  367. package/dist/esm/bs-composer-status-banner.entry.js +1 -1
  368. package/dist/esm/bs-composer.entry.js +1 -1
  369. package/dist/esm/bs-container.entry.js +1 -1
  370. package/dist/esm/bs-data-table.entry.js +2 -2
  371. package/dist/esm/bs-datepicker.entry.js +1 -1
  372. package/dist/esm/bs-divider.entry.js +1 -1
  373. package/dist/esm/bs-empty-state.entry.js +45 -0
  374. package/dist/esm/bs-error-page.entry.js +1 -1
  375. package/dist/esm/bs-file-upload-item.entry.js +1 -1
  376. package/dist/esm/bs-file-upload.entry.js +1 -1
  377. package/dist/esm/bs-global-search.entry.js +324 -0
  378. package/dist/esm/bs-grid.entry.js +2 -2
  379. package/dist/esm/bs-icon-button.entry.js +1 -1
  380. package/dist/esm/bs-icon-tile.entry.js +2 -2
  381. package/dist/esm/bs-inline-tab.entry.js +1 -1
  382. package/dist/esm/bs-input_3.entry.js +4 -4
  383. package/dist/esm/bs-key-caps.entry.js +37 -0
  384. package/dist/esm/bs-key.entry.js +26 -0
  385. package/dist/esm/bs-keyboard-shortcuts.entry.js +110 -0
  386. package/dist/esm/bs-list-item.entry.js +1 -1
  387. package/dist/esm/bs-list.entry.js +1 -1
  388. package/dist/esm/bs-message-list.entry.js +1 -1
  389. package/dist/esm/bs-message.entry.js +1 -1
  390. package/dist/esm/bs-navigation-drawer-item.entry.js +1 -1
  391. package/dist/esm/bs-navigation-drawer.entry.js +2 -2
  392. package/dist/esm/bs-navigation-header.entry.js +1 -1
  393. package/dist/esm/bs-pagination.entry.js +1 -1
  394. package/dist/esm/bs-popover.entry.js +1 -1
  395. package/dist/esm/bs-progress-linear.entry.js +2 -2
  396. package/dist/esm/bs-progress.entry.js +2 -2
  397. package/dist/esm/bs-qr-code.entry.js +1 -1
  398. package/dist/esm/bs-radio.entry.js +1 -1
  399. package/dist/esm/bs-search-item.entry.js +45 -0
  400. package/dist/esm/bs-session-timeout.entry.js +1 -1
  401. package/dist/esm/bs-shortcut-row.entry.js +25 -0
  402. package/dist/esm/bs-skeleton.entry.js +1 -1
  403. package/dist/esm/bs-slider.entry.js +1 -1
  404. package/dist/esm/bs-snackbar.entry.js +1 -1
  405. package/dist/esm/bs-source-link.entry.js +2 -2
  406. package/dist/esm/bs-spinner.entry.js +1 -1
  407. package/dist/esm/bs-split-pane.entry.js +1 -1
  408. package/dist/esm/bs-stack.entry.js +1 -1
  409. package/dist/esm/bs-stepper-step.entry.js +1 -1
  410. package/dist/esm/bs-stepper.entry.js +1 -1
  411. package/dist/esm/bs-switch.entry.js +1 -1
  412. package/dist/esm/bs-tab_3.entry.js +3 -3
  413. package/dist/esm/bs-timepicker.entry.js +2 -2
  414. package/dist/esm/bs-toast.entry.js +1 -1
  415. package/dist/esm/bs-tooltip-trigger.entry.js +1 -1
  416. package/dist/esm/bs-tooltip.entry.js +1 -1
  417. package/dist/esm/bs-tree-item.entry.js +2 -2
  418. package/dist/esm/bs-tree.entry.js +1 -1
  419. package/dist/esm/loader.js +1 -1
  420. package/dist/types/components/bs-command-palette/bs-command-palette.cmp.test.d.ts +1 -0
  421. package/dist/types/components/bs-command-palette/bs-command-palette.d.ts +172 -0
  422. package/dist/types/components/bs-command-palette/bs-command-palette.stories.d.ts +56 -0
  423. package/dist/types/components/bs-empty-state/bs-empty-state.cmp.test.d.ts +1 -0
  424. package/dist/types/components/bs-empty-state/bs-empty-state.d.ts +50 -0
  425. package/dist/types/components/bs-empty-state/bs-empty-state.stories.d.ts +13 -0
  426. package/dist/types/components/bs-global-search/bs-global-search.cmp.test.d.ts +1 -0
  427. package/dist/types/components/bs-global-search/bs-global-search.d.ts +166 -0
  428. package/dist/types/components/bs-global-search/bs-global-search.stories.d.ts +61 -0
  429. package/dist/types/components/bs-key/bs-key.cmp.test.d.ts +1 -0
  430. package/dist/types/components/bs-key/bs-key.d.ts +36 -0
  431. package/dist/types/components/bs-key/bs-key.stories.d.ts +11 -0
  432. package/dist/types/components/bs-key-caps/bs-key-caps.cmp.test.d.ts +1 -0
  433. package/dist/types/components/bs-key-caps/bs-key-caps.d.ts +31 -0
  434. package/dist/types/components/bs-key-caps/bs-key-caps.stories.d.ts +15 -0
  435. package/dist/types/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.cmp.test.d.ts +1 -0
  436. package/dist/types/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.d.ts +95 -0
  437. package/dist/types/components/bs-keyboard-shortcuts/bs-keyboard-shortcuts.stories.d.ts +43 -0
  438. package/dist/types/components/bs-search-item/bs-search-item.cmp.test.d.ts +1 -0
  439. package/dist/types/components/bs-search-item/bs-search-item.d.ts +61 -0
  440. package/dist/types/components/bs-search-item/bs-search-item.stories.d.ts +13 -0
  441. package/dist/types/components/bs-shortcut-row/bs-shortcut-row.cmp.test.d.ts +1 -0
  442. package/dist/types/components/bs-shortcut-row/bs-shortcut-row.d.ts +38 -0
  443. package/dist/types/components/bs-shortcut-row/bs-shortcut-row.stories.d.ts +13 -0
  444. package/dist/types/components.d.ts +1902 -76
  445. package/package.json +1 -1
  446. package/reference.d.ts +24 -0
  447. package/reference.json +855 -76
  448. package/dist/brandsync-wc/p-769c5b4a.entry.js +0 -1
  449. package/dist/brandsync-wc/p-e5f50e93.entry.js +0 -1
  450. package/dist/brandsync-wc/p-e72dd05e.entry.js +0 -1
  451. package/dist/components/p-BaJEv6rL.js +0 -1
@@ -21,6 +21,7 @@ import { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-c
21
21
  import { BsChipFilterSize } from "./components/bs-chip/bs-chip-filter/bs-chip-filter";
22
22
  import { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-chip/bs-chip-informative/bs-chip-informative";
23
23
  import { BsChipInputSize } from "./components/bs-chip/bs-chip-input/bs-chip-input";
24
+ import { BsCommandPaletteInputDetail, BsCommandPaletteSelectDetail, BsCommandPaletteStatus } from "./components/bs-command-palette/bs-command-palette";
24
25
  import { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
25
26
  import { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
26
27
  import { BsContainerSize } from "./components/bs-container/bs-container";
@@ -29,12 +30,15 @@ import { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs
29
30
  import { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
30
31
  import { BsDialogSize } from "./components/bs-dialog/bs-dialog";
31
32
  import { BsDividerInset, BsDividerOrientation, BsDividerVariant } from "./components/bs-divider/bs-divider";
33
+ import { BsIconTileIntent } from "./components/bs-icon-tile/bs-icon-tile";
32
34
  import { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
33
35
  import { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
34
36
  import { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
37
+ import { BsGlobalSearchSelectDetail, BsGlobalSearchStatus } from "./components/bs-global-search/bs-global-search";
35
38
  import { BsGridAlign } from "./components/bs-grid/bs-grid";
36
39
  import { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
37
- import { BsIconTileIntent, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
40
+ import { BsIconTileIntent as BsIconTileIntent1, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
41
+ import { BsShortcutGroup } from "./components/bs-keyboard-shortcuts/bs-keyboard-shortcuts";
38
42
  import { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
39
43
  import { BsMessageRole, BsMessageStatus } from "./components/bs-message/bs-message";
40
44
  import { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
@@ -79,6 +83,7 @@ export { BsCheckboxSize as BsCheckboxSize1 } from "./components/bs-checkbox/bs-c
79
83
  export { BsChipFilterSize } from "./components/bs-chip/bs-chip-filter/bs-chip-filter";
80
84
  export { BsChipInformativeColor, BsChipInformativeSize } from "./components/bs-chip/bs-chip-informative/bs-chip-informative";
81
85
  export { BsChipInputSize } from "./components/bs-chip/bs-chip-input/bs-chip-input";
86
+ export { BsCommandPaletteInputDetail, BsCommandPaletteSelectDetail, BsCommandPaletteStatus } from "./components/bs-command-palette/bs-command-palette";
82
87
  export { BsComposerState, BsComposerVariant } from "./components/bs-composer/bs-composer";
83
88
  export { BsComposerStatusBannerType } from "./components/bs-composer-status-banner/bs-composer-status-banner";
84
89
  export { BsContainerSize } from "./components/bs-container/bs-container";
@@ -87,12 +92,15 @@ export { BsDataTableColumn, BsDataTableRow } from "./components/bs-data-table/bs
87
92
  export { BsDatepickerChange } from "./components/bs-datepicker/bs-datepicker";
88
93
  export { BsDialogSize } from "./components/bs-dialog/bs-dialog";
89
94
  export { BsDividerInset, BsDividerOrientation, BsDividerVariant } from "./components/bs-divider/bs-divider";
95
+ export { BsIconTileIntent } from "./components/bs-icon-tile/bs-icon-tile";
90
96
  export { BsErrorPageType } from "./components/bs-error-page/bs-error-page";
91
97
  export { BsFileUploadDirection } from "./components/bs-file-upload/bs-file-upload";
92
98
  export { BsFileUploadItemState } from "./components/bs-file-upload-item/bs-file-upload-item";
99
+ export { BsGlobalSearchSelectDetail, BsGlobalSearchStatus } from "./components/bs-global-search/bs-global-search";
93
100
  export { BsGridAlign } from "./components/bs-grid/bs-grid";
94
101
  export { BsIconButtonSize, BsIconButtonVariant } from "./components/bs-button/bs-icon-button/bs-icon-button";
95
- export { BsIconTileIntent, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
102
+ export { BsIconTileIntent as BsIconTileIntent1, BsIconTileSize } from "./components/bs-icon-tile/bs-icon-tile";
103
+ export { BsShortcutGroup } from "./components/bs-keyboard-shortcuts/bs-keyboard-shortcuts";
96
104
  export { BsLogoBackground, BsLogoVariant } from "./components/bs-logo/bs-logo";
97
105
  export { BsMessageRole, BsMessageStatus } from "./components/bs-message/bs-message";
98
106
  export { BsNavigationHeaderAlignment } from "./components/ui-shell/bs-navigation-header/bs-navigation-header/bs-navigation-header";
@@ -1307,6 +1315,168 @@ export namespace Components {
1307
1315
  */
1308
1316
  "sourceName"?: string;
1309
1317
  }
1318
+ /**
1319
+ * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
1320
+ * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
1321
+ * recent-items storage are all yours: you slot `bs-search-item`s into the sections and set `status`.
1322
+ * Built from a native `<dialog>` (opened with `showModal()`, so focus is trapped, the page behind is inert
1323
+ * and the backdrop is the scrim), `bs-input` (type="search"), `bs-search-item`, `bs-key` (footer hints and
1324
+ * the Esc cap), `bs-chip-informative` (the scope chip) and `bs-spinner` (loading). Slot a `bs-key-caps` with
1325
+ * `slot="trailing"` inside an item to show a command's shortcut.
1326
+ * ## When to use
1327
+ * - An app-wide "do anything" entry point opened with a hotkey: run commands, navigate, open records.
1328
+ * ## When not to use
1329
+ * - A plain search box with a dropdown -- use `bs-global-search`.
1330
+ * - A small list of actions on one control -- use `bs-menu`.
1331
+ * A `>` as the first character of the field switches to commands-only mode (`commandsOnly`, reflected as
1332
+ * `commands-only`). The component filters nothing: listen to `bsInput`, swap the slotted items, set `status`.
1333
+ * Nested (sub-command) palettes are a consumer pattern: swap the slotted commands and set `scopeLabel`.
1334
+ * @prop --bs-command-palette-width - Panel width. Defaults to `640px` (Figma); capped to the viewport.
1335
+ * @prop --bs-command-palette-top - Distance from the top of the viewport. Defaults to `12vh`.
1336
+ * @prop --bs-command-palette-max-height - Max height of the results area. Defaults to `60vh`.
1337
+ * @prop --bs-command-palette-radius - Aliased to `--bs-border-radius-150`.
1338
+ * @prop --bs-command-palette-bg - Panel background. Aliased to `--bs-surface-base`.
1339
+ * @prop --bs-command-palette-shadow - Figma elevation level 4: `0 8px 16px` in `--bs-elevation-higher` (stronger in dark mode).
1340
+ * @prop --bs-command-palette-overlay - Scrim colour. Aliased to `--bs-surface-overlay`.
1341
+ * @prop --bs-command-palette-footer-bg - Aliased to `--bs-surface-container`.
1342
+ * @prop --bs-command-palette-divider-color - Aliased to `--bs-border-default`.
1343
+ * @prop --bs-command-palette-header-border-color - Aliased to `--bs-border-neutral-container`.
1344
+ * @prop --bs-command-palette-header-color - Aliased to `--bs-text-muted`.
1345
+ * @prop --bs-command-palette-hint-color - Aliased to `--bs-text-secondary`.
1346
+ * @prop --bs-command-palette-z-index - Aliased to `--bs-z-index-modal`.
1347
+ */
1348
+ interface BsCommandPalette {
1349
+ /**
1350
+ * @default 'All results'
1351
+ */
1352
+ "allResultsLabel": string;
1353
+ /**
1354
+ * Closes the palette and restores focus.
1355
+ */
1356
+ "close": () => Promise<void>;
1357
+ /**
1358
+ * @default 'Close'
1359
+ */
1360
+ "closeLabel": string;
1361
+ /**
1362
+ * @default 'Commands'
1363
+ */
1364
+ "commandsLabel": string;
1365
+ /**
1366
+ * Derived from `value` (it starts with `>`). Read-only; set `value` instead.
1367
+ * @default false
1368
+ */
1369
+ "commandsOnly": boolean;
1370
+ /**
1371
+ * @default 'Commands only'
1372
+ */
1373
+ "commandsOnlyLabel": string;
1374
+ /**
1375
+ * A suggested correction; the "Did you mean" line shows while it is set.
1376
+ */
1377
+ "didYouMean"?: string;
1378
+ /**
1379
+ * @default 'Did you mean'
1380
+ */
1381
+ "didYouMeanLabel": string;
1382
+ /**
1383
+ * @default 'Check the spelling, or search records instead.'
1384
+ */
1385
+ "emptyDescription": string;
1386
+ /**
1387
+ * No-results view copy. Include the query in `emptyHeading` yourself.
1388
+ * @default 'No commands or records'
1389
+ */
1390
+ "emptyHeading": string;
1391
+ /**
1392
+ * Global shortcut that toggles the palette, e.g. `mod+k` (`mod` is Cmd on Mac, Ctrl elsewhere). Empty = off.
1393
+ * @default ''
1394
+ */
1395
+ "hotkey": string;
1396
+ /**
1397
+ * Keep the palette open after an item is chosen.
1398
+ * @default false
1399
+ */
1400
+ "keepOpenOnSelect": boolean;
1401
+ /**
1402
+ * Accessible name of the dialog.
1403
+ * @default 'Command palette'
1404
+ */
1405
+ "label": string;
1406
+ /**
1407
+ * Accessible name of the results listbox.
1408
+ * @default 'Results'
1409
+ */
1410
+ "listLabel": string;
1411
+ /**
1412
+ * Text of the loading row.
1413
+ * @default 'Loading…'
1414
+ */
1415
+ "loadingLabel": string;
1416
+ /**
1417
+ * Footer hint texts.
1418
+ * @default 'Navigate'
1419
+ */
1420
+ "navigateLabel": string;
1421
+ /**
1422
+ * @default 'Navigation'
1423
+ */
1424
+ "navigationLabel": string;
1425
+ /**
1426
+ * Whether the palette is open.
1427
+ * @default false
1428
+ */
1429
+ "open": boolean;
1430
+ /**
1431
+ * @default 'Open'
1432
+ */
1433
+ "openLabel": string;
1434
+ /**
1435
+ * Placeholder of the field.
1436
+ * @default 'Type a command or search…'
1437
+ */
1438
+ "placeholder": string;
1439
+ /**
1440
+ * Section headers.
1441
+ * @default 'Recent'
1442
+ */
1443
+ "recentLabel": string;
1444
+ /**
1445
+ * @default 'Records'
1446
+ */
1447
+ "recordsLabel": string;
1448
+ /**
1449
+ * Nested scope: shows this text as a chip before the field. Backspace on an empty field emits `bsScopeExit`.
1450
+ */
1451
+ "scopeLabel"?: string;
1452
+ /**
1453
+ * Opens the palette.
1454
+ */
1455
+ "show": () => Promise<void>;
1456
+ /**
1457
+ * Shows the footer of keyboard hints.
1458
+ * @default true
1459
+ */
1460
+ "showFooter": boolean;
1461
+ /**
1462
+ * Which view to show. You choose it; nothing is inferred from `value`. `default` and `results` render the same; they differ for screen readers only.
1463
+ * @default 'default'
1464
+ */
1465
+ "status": BsCommandPaletteStatus;
1466
+ /**
1467
+ * @default 'Suggested'
1468
+ */
1469
+ "suggestedLabel": string;
1470
+ /**
1471
+ * @default 'Try instead'
1472
+ */
1473
+ "tryInsteadLabel": string;
1474
+ /**
1475
+ * The field value. Two-way. A leading `>` means commands-only mode.
1476
+ * @default ''
1477
+ */
1478
+ "value": string;
1479
+ }
1310
1480
  /**
1311
1481
  * A chat composer input for Genie AI-style conversational interfaces: a text field
1312
1482
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -1850,6 +2020,43 @@ export namespace Components {
1850
2020
  */
1851
2021
  "variant": BsDividerVariant;
1852
2022
  }
2023
+ /**
2024
+ * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
2025
+ * Used for empty lists, "no results" and error states inside a panel, card or page section.
2026
+ * Built from `bs-icon-tile` (and, in your `action` slot, usually a `bs-button`).
2027
+ * The component has no role. Live regions belong on a wrapper you control (e.g. `role="status"` on the
2028
+ * element that stays in the DOM while this block appears and disappears).
2029
+ * ## When to use
2030
+ * - A list, table or search result that has nothing to show, or failed to load.
2031
+ * ## When not to use
2032
+ * - A full-page error with a status code -- use `bs-error-page`.
2033
+ * - A transient message -- use `bs-toast` or `bs-snackbar`.
2034
+ * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
2035
+ * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
2036
+ * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
2037
+ * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
2038
+ * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
2039
+ */
2040
+ interface BsEmptyState {
2041
+ /**
2042
+ * The description text. The default slot overrides it.
2043
+ */
2044
+ "description"?: string;
2045
+ /**
2046
+ * The heading text.
2047
+ */
2048
+ "heading"?: string;
2049
+ /**
2050
+ * Heading level, 2 to 6 (renders `h2`..`h6`). Pick the one that fits the page outline.
2051
+ * @default 3
2052
+ */
2053
+ "headingLevel": 2 | 3 | 4 | 5 | 6;
2054
+ /**
2055
+ * Colour and default glyph of the icon tile. Use `error` for failures.
2056
+ * @default 'default'
2057
+ */
2058
+ "intent": BsIconTileIntent;
2059
+ }
1853
2060
  /**
1854
2061
  * A full-block page for when the user can't get to what they asked for: page not found (404), a server
1855
2062
  * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
@@ -2005,6 +2212,161 @@ export namespace Components {
2005
2212
  */
2006
2213
  "thumbnailSrc"?: string;
2007
2214
  }
2215
+ /**
2216
+ * A global search combobox: a search field with a dropdown panel of suggestions, results, an empty state
2217
+ * or an error state, plus a keyboard-hint footer. The data, the filtering and the recent-search storage
2218
+ * are all yours: you slot `bs-search-item`s into the sections and tell the component which `status` to show.
2219
+ * Built from `bs-input` (type="search"), `bs-search-item`, `bs-empty-state` (and so `bs-icon-tile`),
2220
+ * `bs-button` and `bs-key` (the footer keycaps).
2221
+ * ## When to use
2222
+ * - An app-wide "find anything" field with recent searches, jump-to shortcuts and grouped results.
2223
+ * ## When not to use
2224
+ * - Filtering the list or table that is already on screen -- use `bs-input type="search"`.
2225
+ * - A list of commands or actions -- use `bs-menu`.
2226
+ * - The complete result set -- link to a full search results page ("See all results").
2227
+ * Put `bs-search-item` children in the light DOM with `slot="recent"`, `slot="jump-to"`,
2228
+ * `slot="top-matches"` or `slot="search-in"`. A section (and its header) is only rendered when its slot has
2229
+ * content. Up/Down arrows move a highlight through the visible items; focus never leaves the field.
2230
+ * Known limit: the items are in your light DOM and the combobox in this shadow root, so
2231
+ * `aria-activedescendant` (an id reference) does not resolve across that boundary in every browser; the
2232
+ * highlighted option also gets `aria-selected="true"`.
2233
+ * @prop --bs-global-search-width - Field and panel width. Defaults to `480px` (Figma); capped at 100%.
2234
+ * @prop --bs-global-search-panel-radius - Aliased to `--bs-border-radius-100`.
2235
+ * @prop --bs-global-search-panel-padding - Aliased to `--bs-spacing-100`.
2236
+ * @prop --bs-global-search-gap - Gap between sections, and between the field and the panel. Aliased to `--bs-spacing-100`.
2237
+ * @prop --bs-global-search-panel-bg - Panel background. Aliased to `--bs-surface-base`.
2238
+ * @prop --bs-global-search-shadow - Panel shadow: Figma elevation level 3 (`0 4px 8px` in `--bs-elevation-high`, 10% black in light mode and 30% in dark mode).
2239
+ * @prop --bs-global-search-z-index - Panel stacking. Aliased to `--bs-z-index-dropdown`.
2240
+ * @prop --bs-global-search-divider-color - Footer divider. Aliased to `--bs-border-default`.
2241
+ * @prop --bs-global-search-header-border-color - Section header underline. Aliased to `--bs-border-neutral-container`.
2242
+ * @prop --bs-global-search-header-color - Section header text. Aliased to `--bs-text-muted`.
2243
+ * @prop --bs-global-search-hint-color - Footer hint text. Aliased to `--bs-text-secondary`.
2244
+ */
2245
+ interface BsGlobalSearch {
2246
+ /**
2247
+ * Text of the footer button that clears recent searches.
2248
+ * @default 'Clear recent'
2249
+ */
2250
+ "clearRecentLabel": string;
2251
+ /**
2252
+ * Text of the empty state's action.
2253
+ * @default 'Clear search'
2254
+ */
2255
+ "clearSearchLabel": string;
2256
+ /**
2257
+ * Footer hint text after the Esc key.
2258
+ * @default 'Close'
2259
+ */
2260
+ "closeLabel": string;
2261
+ /**
2262
+ * Disables the field; the panel cannot open.
2263
+ * @default false
2264
+ */
2265
+ "disabled": boolean;
2266
+ /**
2267
+ * Description of the built-in empty state.
2268
+ * @default 'Try a different search.'
2269
+ */
2270
+ "emptyDescription": string;
2271
+ /**
2272
+ * Heading of the built-in empty state.
2273
+ * @default 'No results'
2274
+ */
2275
+ "emptyHeading": string;
2276
+ /**
2277
+ * Description of the built-in error state.
2278
+ * @default 'We couldn’t reach the server. Your query is kept — try again in a moment.'
2279
+ */
2280
+ "errorDescription": string;
2281
+ /**
2282
+ * Heading of the built-in error state.
2283
+ * @default 'Search isn’t available right now'
2284
+ */
2285
+ "errorHeading": string;
2286
+ /**
2287
+ * Footer hint text after the Enter key (results view).
2288
+ * @default 'Full results'
2289
+ */
2290
+ "fullResultsLabel": string;
2291
+ /**
2292
+ * Header of the `jump-to` section.
2293
+ * @default 'Jump to'
2294
+ */
2295
+ "jumpToLabel": string;
2296
+ /**
2297
+ * Accessible name of the search field. Falls back to the placeholder. `bs-input` has no aria-label prop, so this names the combobox wrapper.
2298
+ */
2299
+ "label"?: string;
2300
+ /**
2301
+ * Accessible name of the suggestions listbox.
2302
+ * @default 'Search suggestions'
2303
+ */
2304
+ "listLabel": string;
2305
+ /**
2306
+ * Footer hint text after the arrow keys.
2307
+ * @default 'Navigate'
2308
+ */
2309
+ "navigateLabel": string;
2310
+ /**
2311
+ * Whether the dropdown panel is open. Opens on focus, click and typing; closes on Escape, outside click and selection.
2312
+ * @default false
2313
+ */
2314
+ "open": boolean;
2315
+ /**
2316
+ * Placeholder of the field (also its accessible name unless `label` is set).
2317
+ * @default 'Search customers, orders, products…'
2318
+ */
2319
+ "placeholder": string;
2320
+ /**
2321
+ * Header of the `recent` section.
2322
+ * @default 'Recent searches'
2323
+ */
2324
+ "recentLabel": string;
2325
+ /**
2326
+ * Text of the error state's action.
2327
+ * @default 'Try again'
2328
+ */
2329
+ "retryLabel": string;
2330
+ /**
2331
+ * Header of the `search-in` section.
2332
+ * @default 'Search in'
2333
+ */
2334
+ "searchInLabel": string;
2335
+ /**
2336
+ * Footer hint text after the Enter key (default view).
2337
+ * @default 'Search'
2338
+ */
2339
+ "searchLabel": string;
2340
+ /**
2341
+ * Text of the footer button of the results view, when `totalResults` is not set.
2342
+ * @default 'See all results'
2343
+ */
2344
+ "seeAllLabel": string;
2345
+ /**
2346
+ * Shows the footer (hints and the Clear recent / See all button) for the `default` and `results` views.
2347
+ * @default true
2348
+ */
2349
+ "showFooter": boolean;
2350
+ /**
2351
+ * Which view the panel shows. You choose it; nothing is inferred from `value`.
2352
+ * @default 'default'
2353
+ */
2354
+ "status": BsGlobalSearchStatus;
2355
+ /**
2356
+ * Header of the `top-matches` section.
2357
+ * @default 'Top matches'
2358
+ */
2359
+ "topMatchesLabel": string;
2360
+ /**
2361
+ * Total number of results (status `results`): shown as "See all {n} results" and announced to screen readers.
2362
+ */
2363
+ "totalResults"?: number;
2364
+ /**
2365
+ * The query. Two-way with the field.
2366
+ * @default ''
2367
+ */
2368
+ "value": string;
2369
+ }
2008
2370
  /**
2009
2371
  * A CSS grid layout wrapper. Children are placed in equal-width columns with a token-based gap.
2010
2372
  * `columns` takes either a number (`"3"` becomes `repeat(3, minmax(0, 1fr))`) or any raw
@@ -2116,7 +2478,7 @@ export namespace Components {
2116
2478
  * Colour and default glyph. `brand` uses the brand colours; `information` the info palette.
2117
2479
  * @default 'default'
2118
2480
  */
2119
- "intent": BsIconTileIntent;
2481
+ "intent": BsIconTileIntent1;
2120
2482
  /**
2121
2483
  * Accessible name. When set, the tile is exposed as an image with this name; when empty it is decorative and hidden from assistive tech.
2122
2484
  */
@@ -2309,6 +2671,151 @@ export namespace Components {
2309
2671
  */
2310
2672
  "value": string;
2311
2673
  }
2674
+ /**
2675
+ * One key of a keyboard shortcut, e.g. `Ctrl`, `K` or `Esc` -- rendered as a `<kbd>` keycap.
2676
+ * Shows a text label, or an icon (e.g. a return arrow) via the `icon` slot.
2677
+ * ## When to use
2678
+ * - Showing a keyboard shortcut hint next to a control or inside a search field.
2679
+ * - Alone for a single key, or as the children of `bs-key-caps` for a multi-key shortcut.
2680
+ * ## When not to use
2681
+ * - As a button or any clickable control -- a key is a static hint, not interactive.
2682
+ * @prop --bs-key-bg - Cap background. Aliased to `--bs-surface-base`.
2683
+ * @prop --bs-key-border-color - Cap border colour. Aliased to `--bs-border-default`.
2684
+ * @prop --bs-key-radius - Cap corner radius. Aliased to `--bs-border-radius-50`.
2685
+ * @prop --bs-key-padding-x - Horizontal padding. Aliased to `--bs-spacing-75`.
2686
+ * @prop --bs-key-padding-y - Vertical padding. Aliased to `--bs-spacing-50`.
2687
+ * @prop --bs-key-min-width - Smallest cap width, so single characters keep a keycap shape. Defaults to `25px` (Figma).
2688
+ * @prop --bs-key-color - Label colour. Aliased to `--bs-text-secondary`.
2689
+ * @prop --bs-key-font-size - Label size. Aliased to `--bs-font-size-xs` (12px).
2690
+ * @prop --bs-key-icon-size - Icon size. Defaults to `16px` (Figma).
2691
+ */
2692
+ interface BsKey {
2693
+ /**
2694
+ * The key's text, e.g. `Ctrl`. The default slot overrides it.
2695
+ */
2696
+ "label"?: string;
2697
+ }
2698
+ /**
2699
+ * A keyboard shortcut of one to four keys joined by "+", e.g. `Ctrl + K`. Give it a `keys` string
2700
+ * (`"Ctrl+Shift+K"`) or array (`['Ctrl', '+']` for a literal plus key), or slot your own `bs-key`
2701
+ * elements -- for example when a key is an icon.
2702
+ * ## When to use
2703
+ * - A shortcut hint beside a menu item, button or inside a search field.
2704
+ * ## When not to use
2705
+ * - Instructions that need prose ("press Enter to submit") -- write a sentence and use a single `bs-key` inline.
2706
+ * - Anything interactive -- keys are static hints.
2707
+ * @prop --bs-key-caps-gap - Gap between keys and separators. Aliased to `--bs-spacing-100`.
2708
+ * @prop --bs-key-caps-separator-color - Colour of the "+" separators. Aliased to `--bs-text-muted`.
2709
+ * @prop --bs-key-caps-disabled-opacity - Opacity of the whole shortcut while `disabled`. Defaults to `0.38` (Figma).
2710
+ */
2711
+ interface BsKeyCaps {
2712
+ /**
2713
+ * Dims the whole shortcut and marks it `aria-disabled`.
2714
+ * @default false
2715
+ */
2716
+ "disabled": boolean;
2717
+ /**
2718
+ * The keys as text. A string is split on `+` (`"Ctrl+K"`); use an array to include a literal plus key. Ignored when `bs-key` elements are slotted instead. Figma defines one to four keys.
2719
+ */
2720
+ "keys"?: string | string[];
2721
+ /**
2722
+ * Accessible name of the shortcut, e.g. "Control plus K". Defaults to the keys joined with " plus ".
2723
+ */
2724
+ "label"?: string;
2725
+ }
2726
+ /**
2727
+ * A searchable reference panel of keyboard shortcuts: heading and close button, a search field, an
2728
+ * optional single-key on/off switch, shortcut groups in two columns and a footer hint. It is a
2729
+ * surface, not a modal -- place it inside `bs-dialog` or a popover.
2730
+ * Built from `bs-card`, `bs-icon-button`, `bs-input`, `bs-switch`, `bs-shortcut-row` (and so
2731
+ * `bs-key-caps` / `bs-key`).
2732
+ * ## When to use
2733
+ * - A "press ? to see shortcuts" help overlay for an app with many shortcuts.
2734
+ * ## When not to use
2735
+ * - A long-form help page or documentation -- link to it instead.
2736
+ * - A list of commands the user can run from it -- use `bs-menu`.
2737
+ * @prop --bs-keyboard-shortcuts-width - Panel width and min-width. Defaults to `720px` (Figma).
2738
+ * @prop --bs-keyboard-shortcuts-bg - Panel background. Aliased to `--bs-surface-base`.
2739
+ * @prop --bs-keyboard-shortcuts-radius - Aliased to `--bs-border-radius-150`.
2740
+ * @prop --bs-keyboard-shortcuts-padding - Aliased to `--bs-spacing-200`.
2741
+ * @prop --bs-keyboard-shortcuts-gap - Gap between sections. Aliased to `--bs-spacing-200`.
2742
+ * @prop --bs-keyboard-shortcuts-shadow - Figma elevation level 4 (`0 8px 8px` in `--bs-elevation-higher`, 12% black in light mode and 25% in dark mode).
2743
+ * @prop --bs-keyboard-shortcuts-column-gap - Gap between the two columns. Aliased to `--bs-spacing-600`.
2744
+ * @prop --bs-keyboard-shortcuts-color - Main text colour. Aliased to `--bs-text-default`.
2745
+ * @prop --bs-keyboard-shortcuts-color-secondary - Titles, captions, footer. Aliased to `--bs-text-secondary`.
2746
+ */
2747
+ interface BsKeyboardShortcuts {
2748
+ /**
2749
+ * Accessible name of the close button.
2750
+ * @default 'Close'
2751
+ */
2752
+ "closeLabel": string;
2753
+ /**
2754
+ * The key shown in the footer hint.
2755
+ * @default '?'
2756
+ */
2757
+ "footerKey": string;
2758
+ /**
2759
+ * Text before the footer key.
2760
+ * @default 'Press'
2761
+ */
2762
+ "footerPrefix": string;
2763
+ /**
2764
+ * Footer text after the key.
2765
+ * @default 'anywhere to open this list. On Mac: Cmd instead of Ctrl.'
2766
+ */
2767
+ "footerText": string;
2768
+ /**
2769
+ * Property only: the shortcut groups.
2770
+ * @default []
2771
+ */
2772
+ "groups": BsShortcutGroup[];
2773
+ /**
2774
+ * Heading text. The `heading` slot overrides it.
2775
+ * @default 'Keyboard shortcuts'
2776
+ */
2777
+ "heading": string;
2778
+ /**
2779
+ * Line shown when the query matches nothing.
2780
+ * @default 'No shortcuts match'
2781
+ */
2782
+ "noResultsText": string;
2783
+ /**
2784
+ * Current search text. Filters by action or keys text, case-insensitively.
2785
+ * @default ''
2786
+ */
2787
+ "query": string;
2788
+ /**
2789
+ * Search field placeholder (also its accessible name: `bs-input` has no aria-label prop).
2790
+ * @default 'Search for an action'
2791
+ */
2792
+ "searchPlaceholder": string;
2793
+ /**
2794
+ * Shows the footer hint.
2795
+ * @default true
2796
+ */
2797
+ "showFooterHint": boolean;
2798
+ /**
2799
+ * Shows the single-key switch row.
2800
+ * @default true
2801
+ */
2802
+ "showSingleKeySwitch": boolean;
2803
+ /**
2804
+ * Switch caption.
2805
+ * @default 'Turn off if they clash with a screen reader or other tools.'
2806
+ */
2807
+ "singleKeyDescription": string;
2808
+ /**
2809
+ * Whether single-key shortcuts are on. When off they are shown dimmed.
2810
+ * @default true
2811
+ */
2812
+ "singleKeyEnabled": boolean;
2813
+ /**
2814
+ * Switch title.
2815
+ * @default 'Single-key shortcuts'
2816
+ */
2817
+ "singleKeyLabel": string;
2818
+ }
2312
2819
  /**
2313
2820
  * A vertical list of `bs-list-item` rows, optionally single-select.
2314
2821
  * ## When to use
@@ -3297,6 +3804,55 @@ export namespace Components {
3297
3804
  */
3298
3805
  "value": string;
3299
3806
  }
3807
+ /**
3808
+ * One result or suggestion row of a search dropdown: a leading icon, a primary line, an optional
3809
+ * description line and trailing text. Static, not focusable -- focus stays in the search field and the
3810
+ * parent (`bs-global-search`) marks the highlighted row with `active`.
3811
+ * Standalone it has no role. `bs-global-search` sets `selectionRole="option"` (and an `id`) on its rows,
3812
+ * the same pattern as `bs-list-item` and `bs-shortcut-row`.
3813
+ * ## When to use
3814
+ * - A suggestion, recent search or result inside `bs-global-search`.
3815
+ * ## When not to use
3816
+ * - A row in a generic list -- use `bs-list-item`.
3817
+ * - A command in a popup menu -- use `bs-menu-item`.
3818
+ * @prop --bs-search-item-min-height - Aliased to `--bs-spacing-600` (48px).
3819
+ * @prop --bs-search-item-padding-y - Aliased to `--bs-spacing-100`.
3820
+ * @prop --bs-search-item-padding-x - Aliased to `--bs-spacing-150`.
3821
+ * @prop --bs-search-item-gap - Aliased to `--bs-spacing-100`.
3822
+ * @prop --bs-search-item-radius - Aliased to `--bs-border-radius-100`.
3823
+ * @prop --bs-search-item-bg - Resting background. `transparent`.
3824
+ * @prop --bs-search-item-bg-active - Active (highlighted) and hover background. Aliased to `--bs-surface-hover`.
3825
+ * @prop --bs-search-item-bg-pressed - Aliased to `--bs-surface-pressed`.
3826
+ * @prop --bs-search-item-color - Primary text. Aliased to `--bs-text-default`.
3827
+ * @prop --bs-search-item-color-muted - Description and trailing text. Aliased to `--bs-text-muted`.
3828
+ * @prop --bs-search-item-color-disabled - Aliased to `--bs-text-on-disabled`.
3829
+ * @prop --bs-search-item-icon-color - Aliased to `--bs-icon-default`.
3830
+ */
3831
+ interface BsSearchItem {
3832
+ /**
3833
+ * Highlighted row (keyboard or hover). Set by the parent.
3834
+ * @default false
3835
+ */
3836
+ "active": boolean;
3837
+ /**
3838
+ * Dims the row and ignores clicks.
3839
+ * @default false
3840
+ */
3841
+ "disabled": boolean;
3842
+ /**
3843
+ * Set by the parent (`"option"`). Standalone rows have no role.
3844
+ * @default null
3845
+ */
3846
+ "selectionRole": 'option' | null;
3847
+ /**
3848
+ * Trailing text shorthand. The `trailing` slot overrides it.
3849
+ */
3850
+ "trailing"?: string;
3851
+ /**
3852
+ * Identifies the item; emitted by `bsItemSelect`.
3853
+ */
3854
+ "value"?: string;
3855
+ }
3300
3856
  /**
3301
3857
  * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
3302
3858
  * component's three types:
@@ -3421,6 +3977,46 @@ export namespace Components {
3421
3977
  */
3422
3978
  "type": BsSessionTimeoutType;
3423
3979
  }
3980
+ /**
3981
+ * One row of a shortcut list: an action label on the left and its keyboard shortcut on the right.
3982
+ * Static information, not interactive. Standalone it has no role; `bs-keyboard-shortcuts` sets
3983
+ * `selectionRole="listitem"` on its rows (same pattern as `bs-list-item`).
3984
+ * Built from `bs-key-caps` (and so `bs-key`).
3985
+ * ## When to use
3986
+ * - A line in a keyboard-shortcut reference, usually inside `bs-keyboard-shortcuts`.
3987
+ * ## When not to use
3988
+ * - A clickable command or menu entry -- use `bs-menu-item` (which has its own shortcut slot).
3989
+ * @prop --bs-shortcut-row-height - Row height. Defaults to `36px` (Figma).
3990
+ * @prop --bs-shortcut-row-padding-x - Horizontal padding. Aliased to `--bs-spacing-100`.
3991
+ * @prop --bs-shortcut-row-gap - Gap between label and keys. Aliased to `--bs-spacing-100`.
3992
+ * @prop --bs-shortcut-row-radius - Corner radius. Aliased to `--bs-border-radius-75`.
3993
+ * @prop --bs-shortcut-row-color - Label colour. Aliased to `--bs-text-default`.
3994
+ * @prop --bs-shortcut-row-color-disabled - Label colour while `disabled`. Aliased to `--bs-text-on-disabled`.
3995
+ */
3996
+ interface BsShortcutRow {
3997
+ /**
3998
+ * The action, e.g. "Save". The default slot overrides it.
3999
+ */
4000
+ "action"?: string;
4001
+ /**
4002
+ * Dims the label and the keys.
4003
+ * @default false
4004
+ */
4005
+ "disabled": boolean;
4006
+ /**
4007
+ * The keys, e.g. `"Ctrl+S"`, or an array (`['Ctrl', '+']`) for a literal plus key. See `bs-key-caps`.
4008
+ */
4009
+ "keys"?: string | string[];
4010
+ /**
4011
+ * Accessible name of the key caps, e.g. "Control plus S". Defaults to the keys joined with "plus".
4012
+ */
4013
+ "label"?: string;
4014
+ /**
4015
+ * Set by the parent list (`"listitem"`). Standalone rows have no role.
4016
+ * @default null
4017
+ */
4018
+ "selectionRole": 'listitem' | null;
4019
+ }
3424
4020
  /**
3425
4021
  * A generic slide-in panel (drawer) anchored to the start or end edge, for history, filters, FAQ
3426
4022
  * and similar secondary content. Closes via its close button or Escape and emits `bsClose`.
@@ -4538,6 +5134,10 @@ export interface BsCitationPreviewCustomEvent<T> extends CustomEvent<T> {
4538
5134
  detail: T;
4539
5135
  target: HTMLBsCitationPreviewElement;
4540
5136
  }
5137
+ export interface BsCommandPaletteCustomEvent<T> extends CustomEvent<T> {
5138
+ detail: T;
5139
+ target: HTMLBsCommandPaletteElement;
5140
+ }
4541
5141
  export interface BsComposerCustomEvent<T> extends CustomEvent<T> {
4542
5142
  detail: T;
4543
5143
  target: HTMLBsComposerElement;
@@ -4574,6 +5174,10 @@ export interface BsFileUploadItemCustomEvent<T> extends CustomEvent<T> {
4574
5174
  detail: T;
4575
5175
  target: HTMLBsFileUploadItemElement;
4576
5176
  }
5177
+ export interface BsGlobalSearchCustomEvent<T> extends CustomEvent<T> {
5178
+ detail: T;
5179
+ target: HTMLBsGlobalSearchElement;
5180
+ }
4577
5181
  export interface BsInlineTabCustomEvent<T> extends CustomEvent<T> {
4578
5182
  detail: T;
4579
5183
  target: HTMLBsInlineTabElement;
@@ -4582,6 +5186,10 @@ export interface BsInputCustomEvent<T> extends CustomEvent<T> {
4582
5186
  detail: T;
4583
5187
  target: HTMLBsInputElement;
4584
5188
  }
5189
+ export interface BsKeyboardShortcutsCustomEvent<T> extends CustomEvent<T> {
5190
+ detail: T;
5191
+ target: HTMLBsKeyboardShortcutsElement;
5192
+ }
4585
5193
  export interface BsListCustomEvent<T> extends CustomEvent<T> {
4586
5194
  detail: T;
4587
5195
  target: HTMLBsListElement;
@@ -4630,6 +5238,10 @@ export interface BsRadioCustomEvent<T> extends CustomEvent<T> {
4630
5238
  detail: T;
4631
5239
  target: HTMLBsRadioElement;
4632
5240
  }
5241
+ export interface BsSearchItemCustomEvent<T> extends CustomEvent<T> {
5242
+ detail: T;
5243
+ target: HTMLBsSearchItemElement;
5244
+ }
4633
5245
  export interface BsSessionTimeoutCustomEvent<T> extends CustomEvent<T> {
4634
5246
  detail: T;
4635
5247
  target: HTMLBsSessionTimeoutElement;
@@ -5568,6 +6180,57 @@ declare global {
5568
6180
  prototype: HTMLBsCitationPreviewElement;
5569
6181
  new (): HTMLBsCitationPreviewElement;
5570
6182
  };
6183
+ interface HTMLBsCommandPaletteElementEventMap {
6184
+ "bsInput": BsCommandPaletteInputDetail;
6185
+ "bsSelect": BsCommandPaletteSelectDetail;
6186
+ "bsSuggestion": string;
6187
+ "bsOpenChange": boolean;
6188
+ "bsScopeExit": void;
6189
+ }
6190
+ /**
6191
+ * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
6192
+ * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
6193
+ * recent-items storage are all yours: you slot `bs-search-item`s into the sections and set `status`.
6194
+ * Built from a native `<dialog>` (opened with `showModal()`, so focus is trapped, the page behind is inert
6195
+ * and the backdrop is the scrim), `bs-input` (type="search"), `bs-search-item`, `bs-key` (footer hints and
6196
+ * the Esc cap), `bs-chip-informative` (the scope chip) and `bs-spinner` (loading). Slot a `bs-key-caps` with
6197
+ * `slot="trailing"` inside an item to show a command's shortcut.
6198
+ * ## When to use
6199
+ * - An app-wide "do anything" entry point opened with a hotkey: run commands, navigate, open records.
6200
+ * ## When not to use
6201
+ * - A plain search box with a dropdown -- use `bs-global-search`.
6202
+ * - A small list of actions on one control -- use `bs-menu`.
6203
+ * A `>` as the first character of the field switches to commands-only mode (`commandsOnly`, reflected as
6204
+ * `commands-only`). The component filters nothing: listen to `bsInput`, swap the slotted items, set `status`.
6205
+ * Nested (sub-command) palettes are a consumer pattern: swap the slotted commands and set `scopeLabel`.
6206
+ * @prop --bs-command-palette-width - Panel width. Defaults to `640px` (Figma); capped to the viewport.
6207
+ * @prop --bs-command-palette-top - Distance from the top of the viewport. Defaults to `12vh`.
6208
+ * @prop --bs-command-palette-max-height - Max height of the results area. Defaults to `60vh`.
6209
+ * @prop --bs-command-palette-radius - Aliased to `--bs-border-radius-150`.
6210
+ * @prop --bs-command-palette-bg - Panel background. Aliased to `--bs-surface-base`.
6211
+ * @prop --bs-command-palette-shadow - Figma elevation level 4: `0 8px 16px` in `--bs-elevation-higher` (stronger in dark mode).
6212
+ * @prop --bs-command-palette-overlay - Scrim colour. Aliased to `--bs-surface-overlay`.
6213
+ * @prop --bs-command-palette-footer-bg - Aliased to `--bs-surface-container`.
6214
+ * @prop --bs-command-palette-divider-color - Aliased to `--bs-border-default`.
6215
+ * @prop --bs-command-palette-header-border-color - Aliased to `--bs-border-neutral-container`.
6216
+ * @prop --bs-command-palette-header-color - Aliased to `--bs-text-muted`.
6217
+ * @prop --bs-command-palette-hint-color - Aliased to `--bs-text-secondary`.
6218
+ * @prop --bs-command-palette-z-index - Aliased to `--bs-z-index-modal`.
6219
+ */
6220
+ interface HTMLBsCommandPaletteElement extends Components.BsCommandPalette, HTMLStencilElement {
6221
+ addEventListener<K extends keyof HTMLBsCommandPaletteElementEventMap>(type: K, listener: (this: HTMLBsCommandPaletteElement, ev: BsCommandPaletteCustomEvent<HTMLBsCommandPaletteElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
6222
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6223
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6224
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6225
+ removeEventListener<K extends keyof HTMLBsCommandPaletteElementEventMap>(type: K, listener: (this: HTMLBsCommandPaletteElement, ev: BsCommandPaletteCustomEvent<HTMLBsCommandPaletteElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
6226
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6227
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6228
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6229
+ }
6230
+ var HTMLBsCommandPaletteElement: {
6231
+ prototype: HTMLBsCommandPaletteElement;
6232
+ new (): HTMLBsCommandPaletteElement;
6233
+ };
5571
6234
  interface HTMLBsComposerElementEventMap {
5572
6235
  "bsInput": string;
5573
6236
  "bsSubmit": void;
@@ -5883,6 +6546,29 @@ declare global {
5883
6546
  prototype: HTMLBsDividerElement;
5884
6547
  new (): HTMLBsDividerElement;
5885
6548
  };
6549
+ /**
6550
+ * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
6551
+ * Used for empty lists, "no results" and error states inside a panel, card or page section.
6552
+ * Built from `bs-icon-tile` (and, in your `action` slot, usually a `bs-button`).
6553
+ * The component has no role. Live regions belong on a wrapper you control (e.g. `role="status"` on the
6554
+ * element that stays in the DOM while this block appears and disappears).
6555
+ * ## When to use
6556
+ * - A list, table or search result that has nothing to show, or failed to load.
6557
+ * ## When not to use
6558
+ * - A full-page error with a status code -- use `bs-error-page`.
6559
+ * - A transient message -- use `bs-toast` or `bs-snackbar`.
6560
+ * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
6561
+ * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
6562
+ * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
6563
+ * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
6564
+ * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
6565
+ */
6566
+ interface HTMLBsEmptyStateElement extends Components.BsEmptyState, HTMLStencilElement {
6567
+ }
6568
+ var HTMLBsEmptyStateElement: {
6569
+ prototype: HTMLBsEmptyStateElement;
6570
+ new (): HTMLBsEmptyStateElement;
6571
+ };
5886
6572
  interface HTMLBsErrorPageElementEventMap {
5887
6573
  "bsPrimary": void;
5888
6574
  "bsSecondary": void;
@@ -5973,6 +6659,60 @@ declare global {
5973
6659
  prototype: HTMLBsFileUploadItemElement;
5974
6660
  new (): HTMLBsFileUploadItemElement;
5975
6661
  };
6662
+ interface HTMLBsGlobalSearchElementEventMap {
6663
+ "bsInput": string;
6664
+ "bsSearch": string;
6665
+ "bsSelect": BsGlobalSearchSelectDetail;
6666
+ "bsOpenChange": boolean;
6667
+ "bsClearRecent": void;
6668
+ "bsClearSearch": void;
6669
+ "bsSeeAll": void;
6670
+ "bsRetry": void;
6671
+ }
6672
+ /**
6673
+ * A global search combobox: a search field with a dropdown panel of suggestions, results, an empty state
6674
+ * or an error state, plus a keyboard-hint footer. The data, the filtering and the recent-search storage
6675
+ * are all yours: you slot `bs-search-item`s into the sections and tell the component which `status` to show.
6676
+ * Built from `bs-input` (type="search"), `bs-search-item`, `bs-empty-state` (and so `bs-icon-tile`),
6677
+ * `bs-button` and `bs-key` (the footer keycaps).
6678
+ * ## When to use
6679
+ * - An app-wide "find anything" field with recent searches, jump-to shortcuts and grouped results.
6680
+ * ## When not to use
6681
+ * - Filtering the list or table that is already on screen -- use `bs-input type="search"`.
6682
+ * - A list of commands or actions -- use `bs-menu`.
6683
+ * - The complete result set -- link to a full search results page ("See all results").
6684
+ * Put `bs-search-item` children in the light DOM with `slot="recent"`, `slot="jump-to"`,
6685
+ * `slot="top-matches"` or `slot="search-in"`. A section (and its header) is only rendered when its slot has
6686
+ * content. Up/Down arrows move a highlight through the visible items; focus never leaves the field.
6687
+ * Known limit: the items are in your light DOM and the combobox in this shadow root, so
6688
+ * `aria-activedescendant` (an id reference) does not resolve across that boundary in every browser; the
6689
+ * highlighted option also gets `aria-selected="true"`.
6690
+ * @prop --bs-global-search-width - Field and panel width. Defaults to `480px` (Figma); capped at 100%.
6691
+ * @prop --bs-global-search-panel-radius - Aliased to `--bs-border-radius-100`.
6692
+ * @prop --bs-global-search-panel-padding - Aliased to `--bs-spacing-100`.
6693
+ * @prop --bs-global-search-gap - Gap between sections, and between the field and the panel. Aliased to `--bs-spacing-100`.
6694
+ * @prop --bs-global-search-panel-bg - Panel background. Aliased to `--bs-surface-base`.
6695
+ * @prop --bs-global-search-shadow - Panel shadow: Figma elevation level 3 (`0 4px 8px` in `--bs-elevation-high`, 10% black in light mode and 30% in dark mode).
6696
+ * @prop --bs-global-search-z-index - Panel stacking. Aliased to `--bs-z-index-dropdown`.
6697
+ * @prop --bs-global-search-divider-color - Footer divider. Aliased to `--bs-border-default`.
6698
+ * @prop --bs-global-search-header-border-color - Section header underline. Aliased to `--bs-border-neutral-container`.
6699
+ * @prop --bs-global-search-header-color - Section header text. Aliased to `--bs-text-muted`.
6700
+ * @prop --bs-global-search-hint-color - Footer hint text. Aliased to `--bs-text-secondary`.
6701
+ */
6702
+ interface HTMLBsGlobalSearchElement extends Components.BsGlobalSearch, HTMLStencilElement {
6703
+ addEventListener<K extends keyof HTMLBsGlobalSearchElementEventMap>(type: K, listener: (this: HTMLBsGlobalSearchElement, ev: BsGlobalSearchCustomEvent<HTMLBsGlobalSearchElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
6704
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6705
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6706
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6707
+ removeEventListener<K extends keyof HTMLBsGlobalSearchElementEventMap>(type: K, listener: (this: HTMLBsGlobalSearchElement, ev: BsGlobalSearchCustomEvent<HTMLBsGlobalSearchElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
6708
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6709
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6710
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6711
+ }
6712
+ var HTMLBsGlobalSearchElement: {
6713
+ prototype: HTMLBsGlobalSearchElement;
6714
+ new (): HTMLBsGlobalSearchElement;
6715
+ };
5976
6716
  /**
5977
6717
  * A CSS grid layout wrapper. Children are placed in equal-width columns with a token-based gap.
5978
6718
  * `columns` takes either a number (`"3"` becomes `repeat(3, minmax(0, 1fr))`) or any raw
@@ -6120,6 +6860,89 @@ declare global {
6120
6860
  prototype: HTMLBsInputElement;
6121
6861
  new (): HTMLBsInputElement;
6122
6862
  };
6863
+ /**
6864
+ * One key of a keyboard shortcut, e.g. `Ctrl`, `K` or `Esc` -- rendered as a `<kbd>` keycap.
6865
+ * Shows a text label, or an icon (e.g. a return arrow) via the `icon` slot.
6866
+ * ## When to use
6867
+ * - Showing a keyboard shortcut hint next to a control or inside a search field.
6868
+ * - Alone for a single key, or as the children of `bs-key-caps` for a multi-key shortcut.
6869
+ * ## When not to use
6870
+ * - As a button or any clickable control -- a key is a static hint, not interactive.
6871
+ * @prop --bs-key-bg - Cap background. Aliased to `--bs-surface-base`.
6872
+ * @prop --bs-key-border-color - Cap border colour. Aliased to `--bs-border-default`.
6873
+ * @prop --bs-key-radius - Cap corner radius. Aliased to `--bs-border-radius-50`.
6874
+ * @prop --bs-key-padding-x - Horizontal padding. Aliased to `--bs-spacing-75`.
6875
+ * @prop --bs-key-padding-y - Vertical padding. Aliased to `--bs-spacing-50`.
6876
+ * @prop --bs-key-min-width - Smallest cap width, so single characters keep a keycap shape. Defaults to `25px` (Figma).
6877
+ * @prop --bs-key-color - Label colour. Aliased to `--bs-text-secondary`.
6878
+ * @prop --bs-key-font-size - Label size. Aliased to `--bs-font-size-xs` (12px).
6879
+ * @prop --bs-key-icon-size - Icon size. Defaults to `16px` (Figma).
6880
+ */
6881
+ interface HTMLBsKeyElement extends Components.BsKey, HTMLStencilElement {
6882
+ }
6883
+ var HTMLBsKeyElement: {
6884
+ prototype: HTMLBsKeyElement;
6885
+ new (): HTMLBsKeyElement;
6886
+ };
6887
+ /**
6888
+ * A keyboard shortcut of one to four keys joined by "+", e.g. `Ctrl + K`. Give it a `keys` string
6889
+ * (`"Ctrl+Shift+K"`) or array (`['Ctrl', '+']` for a literal plus key), or slot your own `bs-key`
6890
+ * elements -- for example when a key is an icon.
6891
+ * ## When to use
6892
+ * - A shortcut hint beside a menu item, button or inside a search field.
6893
+ * ## When not to use
6894
+ * - Instructions that need prose ("press Enter to submit") -- write a sentence and use a single `bs-key` inline.
6895
+ * - Anything interactive -- keys are static hints.
6896
+ * @prop --bs-key-caps-gap - Gap between keys and separators. Aliased to `--bs-spacing-100`.
6897
+ * @prop --bs-key-caps-separator-color - Colour of the "+" separators. Aliased to `--bs-text-muted`.
6898
+ * @prop --bs-key-caps-disabled-opacity - Opacity of the whole shortcut while `disabled`. Defaults to `0.38` (Figma).
6899
+ */
6900
+ interface HTMLBsKeyCapsElement extends Components.BsKeyCaps, HTMLStencilElement {
6901
+ }
6902
+ var HTMLBsKeyCapsElement: {
6903
+ prototype: HTMLBsKeyCapsElement;
6904
+ new (): HTMLBsKeyCapsElement;
6905
+ };
6906
+ interface HTMLBsKeyboardShortcutsElementEventMap {
6907
+ "bsClose": void;
6908
+ "bsQueryChange": string;
6909
+ "bsSingleKeyChange": boolean;
6910
+ }
6911
+ /**
6912
+ * A searchable reference panel of keyboard shortcuts: heading and close button, a search field, an
6913
+ * optional single-key on/off switch, shortcut groups in two columns and a footer hint. It is a
6914
+ * surface, not a modal -- place it inside `bs-dialog` or a popover.
6915
+ * Built from `bs-card`, `bs-icon-button`, `bs-input`, `bs-switch`, `bs-shortcut-row` (and so
6916
+ * `bs-key-caps` / `bs-key`).
6917
+ * ## When to use
6918
+ * - A "press ? to see shortcuts" help overlay for an app with many shortcuts.
6919
+ * ## When not to use
6920
+ * - A long-form help page or documentation -- link to it instead.
6921
+ * - A list of commands the user can run from it -- use `bs-menu`.
6922
+ * @prop --bs-keyboard-shortcuts-width - Panel width and min-width. Defaults to `720px` (Figma).
6923
+ * @prop --bs-keyboard-shortcuts-bg - Panel background. Aliased to `--bs-surface-base`.
6924
+ * @prop --bs-keyboard-shortcuts-radius - Aliased to `--bs-border-radius-150`.
6925
+ * @prop --bs-keyboard-shortcuts-padding - Aliased to `--bs-spacing-200`.
6926
+ * @prop --bs-keyboard-shortcuts-gap - Gap between sections. Aliased to `--bs-spacing-200`.
6927
+ * @prop --bs-keyboard-shortcuts-shadow - Figma elevation level 4 (`0 8px 8px` in `--bs-elevation-higher`, 12% black in light mode and 25% in dark mode).
6928
+ * @prop --bs-keyboard-shortcuts-column-gap - Gap between the two columns. Aliased to `--bs-spacing-600`.
6929
+ * @prop --bs-keyboard-shortcuts-color - Main text colour. Aliased to `--bs-text-default`.
6930
+ * @prop --bs-keyboard-shortcuts-color-secondary - Titles, captions, footer. Aliased to `--bs-text-secondary`.
6931
+ */
6932
+ interface HTMLBsKeyboardShortcutsElement extends Components.BsKeyboardShortcuts, HTMLStencilElement {
6933
+ addEventListener<K extends keyof HTMLBsKeyboardShortcutsElementEventMap>(type: K, listener: (this: HTMLBsKeyboardShortcutsElement, ev: BsKeyboardShortcutsCustomEvent<HTMLBsKeyboardShortcutsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
6934
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6935
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6936
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6937
+ removeEventListener<K extends keyof HTMLBsKeyboardShortcutsElementEventMap>(type: K, listener: (this: HTMLBsKeyboardShortcutsElement, ev: BsKeyboardShortcutsCustomEvent<HTMLBsKeyboardShortcutsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
6938
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6939
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6940
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6941
+ }
6942
+ var HTMLBsKeyboardShortcutsElement: {
6943
+ prototype: HTMLBsKeyboardShortcutsElement;
6944
+ new (): HTMLBsKeyboardShortcutsElement;
6945
+ };
6123
6946
  interface HTMLBsListElementEventMap {
6124
6947
  "bsChange": string | null;
6125
6948
  }
@@ -6725,19 +7548,60 @@ declare global {
6725
7548
  * use `bs-checkbox` instead.
6726
7549
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
6727
7550
  */
6728
- interface HTMLBsRadioElement extends Components.BsRadio, HTMLStencilElement {
6729
- addEventListener<K extends keyof HTMLBsRadioElementEventMap>(type: K, listener: (this: HTMLBsRadioElement, ev: BsRadioCustomEvent<HTMLBsRadioElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7551
+ interface HTMLBsRadioElement extends Components.BsRadio, HTMLStencilElement {
7552
+ addEventListener<K extends keyof HTMLBsRadioElementEventMap>(type: K, listener: (this: HTMLBsRadioElement, ev: BsRadioCustomEvent<HTMLBsRadioElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
7553
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7554
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
7555
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
7556
+ removeEventListener<K extends keyof HTMLBsRadioElementEventMap>(type: K, listener: (this: HTMLBsRadioElement, ev: BsRadioCustomEvent<HTMLBsRadioElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7557
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7558
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
7559
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
7560
+ }
7561
+ var HTMLBsRadioElement: {
7562
+ prototype: HTMLBsRadioElement;
7563
+ new (): HTMLBsRadioElement;
7564
+ };
7565
+ interface HTMLBsSearchItemElementEventMap {
7566
+ "bsItemSelect": string | undefined;
7567
+ }
7568
+ /**
7569
+ * One result or suggestion row of a search dropdown: a leading icon, a primary line, an optional
7570
+ * description line and trailing text. Static, not focusable -- focus stays in the search field and the
7571
+ * parent (`bs-global-search`) marks the highlighted row with `active`.
7572
+ * Standalone it has no role. `bs-global-search` sets `selectionRole="option"` (and an `id`) on its rows,
7573
+ * the same pattern as `bs-list-item` and `bs-shortcut-row`.
7574
+ * ## When to use
7575
+ * - A suggestion, recent search or result inside `bs-global-search`.
7576
+ * ## When not to use
7577
+ * - A row in a generic list -- use `bs-list-item`.
7578
+ * - A command in a popup menu -- use `bs-menu-item`.
7579
+ * @prop --bs-search-item-min-height - Aliased to `--bs-spacing-600` (48px).
7580
+ * @prop --bs-search-item-padding-y - Aliased to `--bs-spacing-100`.
7581
+ * @prop --bs-search-item-padding-x - Aliased to `--bs-spacing-150`.
7582
+ * @prop --bs-search-item-gap - Aliased to `--bs-spacing-100`.
7583
+ * @prop --bs-search-item-radius - Aliased to `--bs-border-radius-100`.
7584
+ * @prop --bs-search-item-bg - Resting background. `transparent`.
7585
+ * @prop --bs-search-item-bg-active - Active (highlighted) and hover background. Aliased to `--bs-surface-hover`.
7586
+ * @prop --bs-search-item-bg-pressed - Aliased to `--bs-surface-pressed`.
7587
+ * @prop --bs-search-item-color - Primary text. Aliased to `--bs-text-default`.
7588
+ * @prop --bs-search-item-color-muted - Description and trailing text. Aliased to `--bs-text-muted`.
7589
+ * @prop --bs-search-item-color-disabled - Aliased to `--bs-text-on-disabled`.
7590
+ * @prop --bs-search-item-icon-color - Aliased to `--bs-icon-default`.
7591
+ */
7592
+ interface HTMLBsSearchItemElement extends Components.BsSearchItem, HTMLStencilElement {
7593
+ addEventListener<K extends keyof HTMLBsSearchItemElementEventMap>(type: K, listener: (this: HTMLBsSearchItemElement, ev: BsSearchItemCustomEvent<HTMLBsSearchItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
6730
7594
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6731
7595
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
6732
7596
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
6733
- removeEventListener<K extends keyof HTMLBsRadioElementEventMap>(type: K, listener: (this: HTMLBsRadioElement, ev: BsRadioCustomEvent<HTMLBsRadioElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
7597
+ removeEventListener<K extends keyof HTMLBsSearchItemElementEventMap>(type: K, listener: (this: HTMLBsSearchItemElement, ev: BsSearchItemCustomEvent<HTMLBsSearchItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
6734
7598
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6735
7599
  removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
6736
7600
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
6737
7601
  }
6738
- var HTMLBsRadioElement: {
6739
- prototype: HTMLBsRadioElement;
6740
- new (): HTMLBsRadioElement;
7602
+ var HTMLBsSearchItemElement: {
7603
+ prototype: HTMLBsSearchItemElement;
7604
+ new (): HTMLBsSearchItemElement;
6741
7605
  };
6742
7606
  interface HTMLBsSessionTimeoutElementEventMap {
6743
7607
  "bsPrimary": { password?: string } | void;
@@ -6786,6 +7650,28 @@ declare global {
6786
7650
  prototype: HTMLBsSessionTimeoutElement;
6787
7651
  new (): HTMLBsSessionTimeoutElement;
6788
7652
  };
7653
+ /**
7654
+ * One row of a shortcut list: an action label on the left and its keyboard shortcut on the right.
7655
+ * Static information, not interactive. Standalone it has no role; `bs-keyboard-shortcuts` sets
7656
+ * `selectionRole="listitem"` on its rows (same pattern as `bs-list-item`).
7657
+ * Built from `bs-key-caps` (and so `bs-key`).
7658
+ * ## When to use
7659
+ * - A line in a keyboard-shortcut reference, usually inside `bs-keyboard-shortcuts`.
7660
+ * ## When not to use
7661
+ * - A clickable command or menu entry -- use `bs-menu-item` (which has its own shortcut slot).
7662
+ * @prop --bs-shortcut-row-height - Row height. Defaults to `36px` (Figma).
7663
+ * @prop --bs-shortcut-row-padding-x - Horizontal padding. Aliased to `--bs-spacing-100`.
7664
+ * @prop --bs-shortcut-row-gap - Gap between label and keys. Aliased to `--bs-spacing-100`.
7665
+ * @prop --bs-shortcut-row-radius - Corner radius. Aliased to `--bs-border-radius-75`.
7666
+ * @prop --bs-shortcut-row-color - Label colour. Aliased to `--bs-text-default`.
7667
+ * @prop --bs-shortcut-row-color-disabled - Label colour while `disabled`. Aliased to `--bs-text-on-disabled`.
7668
+ */
7669
+ interface HTMLBsShortcutRowElement extends Components.BsShortcutRow, HTMLStencilElement {
7670
+ }
7671
+ var HTMLBsShortcutRowElement: {
7672
+ prototype: HTMLBsShortcutRowElement;
7673
+ new (): HTMLBsShortcutRowElement;
7674
+ };
6789
7675
  interface HTMLBsSidePanelElementEventMap {
6790
7676
  "bsClose": void;
6791
7677
  }
@@ -7458,6 +8344,7 @@ declare global {
7458
8344
  "bs-chip-informative": HTMLBsChipInformativeElement;
7459
8345
  "bs-chip-input": HTMLBsChipInputElement;
7460
8346
  "bs-citation-preview": HTMLBsCitationPreviewElement;
8347
+ "bs-command-palette": HTMLBsCommandPaletteElement;
7461
8348
  "bs-composer": HTMLBsComposerElement;
7462
8349
  "bs-composer-status-banner": HTMLBsComposerStatusBannerElement;
7463
8350
  "bs-container": HTMLBsContainerElement;
@@ -7466,14 +8353,19 @@ declare global {
7466
8353
  "bs-datepicker": HTMLBsDatepickerElement;
7467
8354
  "bs-dialog": HTMLBsDialogElement;
7468
8355
  "bs-divider": HTMLBsDividerElement;
8356
+ "bs-empty-state": HTMLBsEmptyStateElement;
7469
8357
  "bs-error-page": HTMLBsErrorPageElement;
7470
8358
  "bs-file-upload": HTMLBsFileUploadElement;
7471
8359
  "bs-file-upload-item": HTMLBsFileUploadItemElement;
8360
+ "bs-global-search": HTMLBsGlobalSearchElement;
7472
8361
  "bs-grid": HTMLBsGridElement;
7473
8362
  "bs-icon-button": HTMLBsIconButtonElement;
7474
8363
  "bs-icon-tile": HTMLBsIconTileElement;
7475
8364
  "bs-inline-tab": HTMLBsInlineTabElement;
7476
8365
  "bs-input": HTMLBsInputElement;
8366
+ "bs-key": HTMLBsKeyElement;
8367
+ "bs-key-caps": HTMLBsKeyCapsElement;
8368
+ "bs-keyboard-shortcuts": HTMLBsKeyboardShortcutsElement;
7477
8369
  "bs-list": HTMLBsListElement;
7478
8370
  "bs-list-item": HTMLBsListItemElement;
7479
8371
  "bs-logo": HTMLBsLogoElement;
@@ -7492,7 +8384,9 @@ declare global {
7492
8384
  "bs-progress-linear": HTMLBsProgressLinearElement;
7493
8385
  "bs-qr-code": HTMLBsQrCodeElement;
7494
8386
  "bs-radio": HTMLBsRadioElement;
8387
+ "bs-search-item": HTMLBsSearchItemElement;
7495
8388
  "bs-session-timeout": HTMLBsSessionTimeoutElement;
8389
+ "bs-shortcut-row": HTMLBsShortcutRowElement;
7496
8390
  "bs-side-panel": HTMLBsSidePanelElement;
7497
8391
  "bs-skeleton": HTMLBsSkeletonElement;
7498
8392
  "bs-slider": HTMLBsSliderElement;
@@ -8826,6 +9720,180 @@ declare namespace LocalJSX {
8826
9720
  */
8827
9721
  "sourceName"?: string;
8828
9722
  }
9723
+ /**
9724
+ * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
9725
+ * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
9726
+ * recent-items storage are all yours: you slot `bs-search-item`s into the sections and set `status`.
9727
+ * Built from a native `<dialog>` (opened with `showModal()`, so focus is trapped, the page behind is inert
9728
+ * and the backdrop is the scrim), `bs-input` (type="search"), `bs-search-item`, `bs-key` (footer hints and
9729
+ * the Esc cap), `bs-chip-informative` (the scope chip) and `bs-spinner` (loading). Slot a `bs-key-caps` with
9730
+ * `slot="trailing"` inside an item to show a command's shortcut.
9731
+ * ## When to use
9732
+ * - An app-wide "do anything" entry point opened with a hotkey: run commands, navigate, open records.
9733
+ * ## When not to use
9734
+ * - A plain search box with a dropdown -- use `bs-global-search`.
9735
+ * - A small list of actions on one control -- use `bs-menu`.
9736
+ * A `>` as the first character of the field switches to commands-only mode (`commandsOnly`, reflected as
9737
+ * `commands-only`). The component filters nothing: listen to `bsInput`, swap the slotted items, set `status`.
9738
+ * Nested (sub-command) palettes are a consumer pattern: swap the slotted commands and set `scopeLabel`.
9739
+ * @prop --bs-command-palette-width - Panel width. Defaults to `640px` (Figma); capped to the viewport.
9740
+ * @prop --bs-command-palette-top - Distance from the top of the viewport. Defaults to `12vh`.
9741
+ * @prop --bs-command-palette-max-height - Max height of the results area. Defaults to `60vh`.
9742
+ * @prop --bs-command-palette-radius - Aliased to `--bs-border-radius-150`.
9743
+ * @prop --bs-command-palette-bg - Panel background. Aliased to `--bs-surface-base`.
9744
+ * @prop --bs-command-palette-shadow - Figma elevation level 4: `0 8px 16px` in `--bs-elevation-higher` (stronger in dark mode).
9745
+ * @prop --bs-command-palette-overlay - Scrim colour. Aliased to `--bs-surface-overlay`.
9746
+ * @prop --bs-command-palette-footer-bg - Aliased to `--bs-surface-container`.
9747
+ * @prop --bs-command-palette-divider-color - Aliased to `--bs-border-default`.
9748
+ * @prop --bs-command-palette-header-border-color - Aliased to `--bs-border-neutral-container`.
9749
+ * @prop --bs-command-palette-header-color - Aliased to `--bs-text-muted`.
9750
+ * @prop --bs-command-palette-hint-color - Aliased to `--bs-text-secondary`.
9751
+ * @prop --bs-command-palette-z-index - Aliased to `--bs-z-index-modal`.
9752
+ */
9753
+ interface BsCommandPalette {
9754
+ /**
9755
+ * @default 'All results'
9756
+ */
9757
+ "allResultsLabel"?: string;
9758
+ /**
9759
+ * @default 'Close'
9760
+ */
9761
+ "closeLabel"?: string;
9762
+ /**
9763
+ * @default 'Commands'
9764
+ */
9765
+ "commandsLabel"?: string;
9766
+ /**
9767
+ * Derived from `value` (it starts with `>`). Read-only; set `value` instead.
9768
+ * @default false
9769
+ */
9770
+ "commandsOnly"?: boolean;
9771
+ /**
9772
+ * @default 'Commands only'
9773
+ */
9774
+ "commandsOnlyLabel"?: string;
9775
+ /**
9776
+ * A suggested correction; the "Did you mean" line shows while it is set.
9777
+ */
9778
+ "didYouMean"?: string;
9779
+ /**
9780
+ * @default 'Did you mean'
9781
+ */
9782
+ "didYouMeanLabel"?: string;
9783
+ /**
9784
+ * @default 'Check the spelling, or search records instead.'
9785
+ */
9786
+ "emptyDescription"?: string;
9787
+ /**
9788
+ * No-results view copy. Include the query in `emptyHeading` yourself.
9789
+ * @default 'No commands or records'
9790
+ */
9791
+ "emptyHeading"?: string;
9792
+ /**
9793
+ * Global shortcut that toggles the palette, e.g. `mod+k` (`mod` is Cmd on Mac, Ctrl elsewhere). Empty = off.
9794
+ * @default ''
9795
+ */
9796
+ "hotkey"?: string;
9797
+ /**
9798
+ * Keep the palette open after an item is chosen.
9799
+ * @default false
9800
+ */
9801
+ "keepOpenOnSelect"?: boolean;
9802
+ /**
9803
+ * Accessible name of the dialog.
9804
+ * @default 'Command palette'
9805
+ */
9806
+ "label"?: string;
9807
+ /**
9808
+ * Accessible name of the results listbox.
9809
+ * @default 'Results'
9810
+ */
9811
+ "listLabel"?: string;
9812
+ /**
9813
+ * Text of the loading row.
9814
+ * @default 'Loading…'
9815
+ */
9816
+ "loadingLabel"?: string;
9817
+ /**
9818
+ * Footer hint texts.
9819
+ * @default 'Navigate'
9820
+ */
9821
+ "navigateLabel"?: string;
9822
+ /**
9823
+ * @default 'Navigation'
9824
+ */
9825
+ "navigationLabel"?: string;
9826
+ /**
9827
+ * Fires on every keystroke with `{ value, query, commandsOnly }`.
9828
+ */
9829
+ "onBsInput"?: (event: BsCommandPaletteCustomEvent<BsCommandPaletteInputDetail>) => void;
9830
+ /**
9831
+ * Fires when the palette opens or closes through user interaction (hotkey, Esc, scrim, selection).
9832
+ */
9833
+ "onBsOpenChange"?: (event: BsCommandPaletteCustomEvent<boolean>) => void;
9834
+ /**
9835
+ * Fires on Backspace in an empty field while `scopeLabel` is set.
9836
+ */
9837
+ "onBsScopeExit"?: (event: BsCommandPaletteCustomEvent<void>) => void;
9838
+ /**
9839
+ * Fires when an item is chosen (click or Enter) with `{ value, section, commandsOnly }`.
9840
+ */
9841
+ "onBsSelect"?: (event: BsCommandPaletteCustomEvent<BsCommandPaletteSelectDetail>) => void;
9842
+ /**
9843
+ * Fires when the "Did you mean" suggestion is pressed, with its text.
9844
+ */
9845
+ "onBsSuggestion"?: (event: BsCommandPaletteCustomEvent<string>) => void;
9846
+ /**
9847
+ * Whether the palette is open.
9848
+ * @default false
9849
+ */
9850
+ "open"?: boolean;
9851
+ /**
9852
+ * @default 'Open'
9853
+ */
9854
+ "openLabel"?: string;
9855
+ /**
9856
+ * Placeholder of the field.
9857
+ * @default 'Type a command or search…'
9858
+ */
9859
+ "placeholder"?: string;
9860
+ /**
9861
+ * Section headers.
9862
+ * @default 'Recent'
9863
+ */
9864
+ "recentLabel"?: string;
9865
+ /**
9866
+ * @default 'Records'
9867
+ */
9868
+ "recordsLabel"?: string;
9869
+ /**
9870
+ * Nested scope: shows this text as a chip before the field. Backspace on an empty field emits `bsScopeExit`.
9871
+ */
9872
+ "scopeLabel"?: string;
9873
+ /**
9874
+ * Shows the footer of keyboard hints.
9875
+ * @default true
9876
+ */
9877
+ "showFooter"?: boolean;
9878
+ /**
9879
+ * Which view to show. You choose it; nothing is inferred from `value`. `default` and `results` render the same; they differ for screen readers only.
9880
+ * @default 'default'
9881
+ */
9882
+ "status"?: BsCommandPaletteStatus;
9883
+ /**
9884
+ * @default 'Suggested'
9885
+ */
9886
+ "suggestedLabel"?: string;
9887
+ /**
9888
+ * @default 'Try instead'
9889
+ */
9890
+ "tryInsteadLabel"?: string;
9891
+ /**
9892
+ * The field value. Two-way. A leading `>` means commands-only mode.
9893
+ * @default ''
9894
+ */
9895
+ "value"?: string;
9896
+ }
8829
9897
  /**
8830
9898
  * A chat composer input for Genie AI-style conversational interfaces: a text field
8831
9899
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -9440,6 +10508,43 @@ declare namespace LocalJSX {
9440
10508
  */
9441
10509
  "variant"?: BsDividerVariant;
9442
10510
  }
10511
+ /**
10512
+ * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
10513
+ * Used for empty lists, "no results" and error states inside a panel, card or page section.
10514
+ * Built from `bs-icon-tile` (and, in your `action` slot, usually a `bs-button`).
10515
+ * The component has no role. Live regions belong on a wrapper you control (e.g. `role="status"` on the
10516
+ * element that stays in the DOM while this block appears and disappears).
10517
+ * ## When to use
10518
+ * - A list, table or search result that has nothing to show, or failed to load.
10519
+ * ## When not to use
10520
+ * - A full-page error with a status code -- use `bs-error-page`.
10521
+ * - A transient message -- use `bs-toast` or `bs-snackbar`.
10522
+ * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
10523
+ * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
10524
+ * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
10525
+ * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
10526
+ * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
10527
+ */
10528
+ interface BsEmptyState {
10529
+ /**
10530
+ * The description text. The default slot overrides it.
10531
+ */
10532
+ "description"?: string;
10533
+ /**
10534
+ * The heading text.
10535
+ */
10536
+ "heading"?: string;
10537
+ /**
10538
+ * Heading level, 2 to 6 (renders `h2`..`h6`). Pick the one that fits the page outline.
10539
+ * @default 3
10540
+ */
10541
+ "headingLevel"?: 2 | 3 | 4 | 5 | 6;
10542
+ /**
10543
+ * Colour and default glyph of the icon tile. Use `error` for failures.
10544
+ * @default 'default'
10545
+ */
10546
+ "intent"?: BsIconTileIntent;
10547
+ }
9443
10548
  /**
9444
10549
  * A full-block page for when the user can't get to what they asked for: page not found (404), a server
9445
10550
  * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
@@ -9511,113 +10616,300 @@ declare namespace LocalJSX {
9511
10616
  */
9512
10617
  interface BsFileUpload {
9513
10618
  /**
9514
- * Which files are accepted, same syntax as the native `accept` attribute: comma-separated extensions (`.pdf`), MIME types (`image/png`) or wildcards (`image/*`). Applied to the picker and also to dropped files, which the browser does not filter.
10619
+ * Which files are accepted, same syntax as the native `accept` attribute: comma-separated extensions (`.pdf`), MIME types (`image/png`) or wildcards (`image/*`). Applied to the picker and also to dropped files, which the browser does not filter.
10620
+ */
10621
+ "accept"?: string;
10622
+ /**
10623
+ * Label of the browse button. Override for localisation.
10624
+ * @default 'Browse file'
10625
+ */
10626
+ "buttonLabel"?: string;
10627
+ /**
10628
+ * Guidelines under the heading (e.g. "PDF or JPG, up to 8MB").
10629
+ */
10630
+ "description"?: string;
10631
+ /**
10632
+ * Layout: icon beside the text (`horizontal`) or stacked above it, centered (`vertical`).
10633
+ * @default 'horizontal'
10634
+ */
10635
+ "direction"?: BsFileUploadDirection;
10636
+ /**
10637
+ * Disables the browse button and ignores drops.
10638
+ * @default false
10639
+ */
10640
+ "disabled"?: boolean;
10641
+ /**
10642
+ * Whether a file is currently being dragged over the dropzone (the Figma "Drop" state). Set by the component during a drag; mutable and reflected so it can also be set to show the state statically.
10643
+ * @default false
10644
+ */
10645
+ "dragging"?: boolean;
10646
+ /**
10647
+ * Heading text (e.g. "Upload your documents").
10648
+ */
10649
+ "heading"?: string;
10650
+ /**
10651
+ * Allows selecting/dropping more than one file. Without it only the first file is taken.
10652
+ * @default false
10653
+ */
10654
+ "multiple"?: boolean;
10655
+ /**
10656
+ * Fires with files that were not taken: they didn't match `accept`, or were extra files dropped while `multiple` is off.
10657
+ */
10658
+ "onBsFilesReject"?: (event: BsFileUploadCustomEvent<File[]>) => void;
10659
+ /**
10660
+ * Fires with the accepted files, after the picker closes or files are dropped.
10661
+ */
10662
+ "onBsFilesSelect"?: (event: BsFileUploadCustomEvent<File[]>) => void;
10663
+ }
10664
+ /**
10665
+ * One file in an upload list: a thumbnail, the file name and size, a status line (a progress bar
10666
+ * while uploading, or a success / error message) and an action button (cancel while uploading or
10667
+ * after an error, remove once uploaded).
10668
+ * Presentational only -- the consuming app owns the upload and drives `state`, `progress` and
10669
+ * `message` from it. Pair with `bs-file-upload` (the dropzone that picks the files).
10670
+ * ## When to use
10671
+ * - Showing the status of each file the user has added, in a list under a `bs-file-upload`.
10672
+ * ## When not to use
10673
+ * - Attaching files to a chat message -- use `bs-attachment`.
10674
+ */
10675
+ interface BsFileUploadItem {
10676
+ /**
10677
+ * Accessible name of the cancel button (`loading`, `in-progress`, `error`).
10678
+ * @default 'Cancel upload'
10679
+ */
10680
+ "cancelLabel"?: string;
10681
+ /**
10682
+ * The file name.
10683
+ * @default ''
10684
+ */
10685
+ "fileName"?: string;
10686
+ /**
10687
+ * The file size, already formatted (e.g. "8MB").
10688
+ */
10689
+ "fileSize"?: string;
10690
+ /**
10691
+ * The status text. Defaults per state: "Loading..." (`loading`), "{progress}% uploaded" (`in-progress`), "Upload failed" (`error`), "File uploaded successfully" (`success`). Provide your own for localisation or a specific error.
10692
+ */
10693
+ "message"?: string;
10694
+ /**
10695
+ * Fires when the cancel button is clicked (`loading`, `in-progress`, `error`). The consumer stops the upload and removes the item.
10696
+ */
10697
+ "onBsCancel"?: (event: BsFileUploadItemCustomEvent<void>) => void;
10698
+ /**
10699
+ * Fires when the remove button is clicked (`success`). The consumer removes the file.
10700
+ */
10701
+ "onBsRemove"?: (event: BsFileUploadItemCustomEvent<void>) => void;
10702
+ /**
10703
+ * Upload progress, 0-100. Only used when `state="in-progress"`.
10704
+ * @default 0
10705
+ */
10706
+ "progress"?: number;
10707
+ /**
10708
+ * Accessible name of the remove button (`success`).
10709
+ * @default 'Remove file'
10710
+ */
10711
+ "removeLabel"?: string;
10712
+ /**
10713
+ * Where the upload is. `loading` = working with no known percentage (indeterminate bar); `in-progress` = uploading with a known `progress`; `error` and `success` are final.
10714
+ * @default 'loading'
10715
+ */
10716
+ "state"?: BsFileUploadItemState;
10717
+ /**
10718
+ * Alt text for `thumbnailSrc`. Leave empty when the file name already says it all.
10719
+ * @default ''
10720
+ */
10721
+ "thumbnailAlt"?: string;
10722
+ /**
10723
+ * A preview image of the file. Shown instead of the placeholder icon when set.
10724
+ */
10725
+ "thumbnailSrc"?: string;
10726
+ }
10727
+ /**
10728
+ * A global search combobox: a search field with a dropdown panel of suggestions, results, an empty state
10729
+ * or an error state, plus a keyboard-hint footer. The data, the filtering and the recent-search storage
10730
+ * are all yours: you slot `bs-search-item`s into the sections and tell the component which `status` to show.
10731
+ * Built from `bs-input` (type="search"), `bs-search-item`, `bs-empty-state` (and so `bs-icon-tile`),
10732
+ * `bs-button` and `bs-key` (the footer keycaps).
10733
+ * ## When to use
10734
+ * - An app-wide "find anything" field with recent searches, jump-to shortcuts and grouped results.
10735
+ * ## When not to use
10736
+ * - Filtering the list or table that is already on screen -- use `bs-input type="search"`.
10737
+ * - A list of commands or actions -- use `bs-menu`.
10738
+ * - The complete result set -- link to a full search results page ("See all results").
10739
+ * Put `bs-search-item` children in the light DOM with `slot="recent"`, `slot="jump-to"`,
10740
+ * `slot="top-matches"` or `slot="search-in"`. A section (and its header) is only rendered when its slot has
10741
+ * content. Up/Down arrows move a highlight through the visible items; focus never leaves the field.
10742
+ * Known limit: the items are in your light DOM and the combobox in this shadow root, so
10743
+ * `aria-activedescendant` (an id reference) does not resolve across that boundary in every browser; the
10744
+ * highlighted option also gets `aria-selected="true"`.
10745
+ * @prop --bs-global-search-width - Field and panel width. Defaults to `480px` (Figma); capped at 100%.
10746
+ * @prop --bs-global-search-panel-radius - Aliased to `--bs-border-radius-100`.
10747
+ * @prop --bs-global-search-panel-padding - Aliased to `--bs-spacing-100`.
10748
+ * @prop --bs-global-search-gap - Gap between sections, and between the field and the panel. Aliased to `--bs-spacing-100`.
10749
+ * @prop --bs-global-search-panel-bg - Panel background. Aliased to `--bs-surface-base`.
10750
+ * @prop --bs-global-search-shadow - Panel shadow: Figma elevation level 3 (`0 4px 8px` in `--bs-elevation-high`, 10% black in light mode and 30% in dark mode).
10751
+ * @prop --bs-global-search-z-index - Panel stacking. Aliased to `--bs-z-index-dropdown`.
10752
+ * @prop --bs-global-search-divider-color - Footer divider. Aliased to `--bs-border-default`.
10753
+ * @prop --bs-global-search-header-border-color - Section header underline. Aliased to `--bs-border-neutral-container`.
10754
+ * @prop --bs-global-search-header-color - Section header text. Aliased to `--bs-text-muted`.
10755
+ * @prop --bs-global-search-hint-color - Footer hint text. Aliased to `--bs-text-secondary`.
10756
+ */
10757
+ interface BsGlobalSearch {
10758
+ /**
10759
+ * Text of the footer button that clears recent searches.
10760
+ * @default 'Clear recent'
10761
+ */
10762
+ "clearRecentLabel"?: string;
10763
+ /**
10764
+ * Text of the empty state's action.
10765
+ * @default 'Clear search'
10766
+ */
10767
+ "clearSearchLabel"?: string;
10768
+ /**
10769
+ * Footer hint text after the Esc key.
10770
+ * @default 'Close'
10771
+ */
10772
+ "closeLabel"?: string;
10773
+ /**
10774
+ * Disables the field; the panel cannot open.
10775
+ * @default false
10776
+ */
10777
+ "disabled"?: boolean;
10778
+ /**
10779
+ * Description of the built-in empty state.
10780
+ * @default 'Try a different search.'
10781
+ */
10782
+ "emptyDescription"?: string;
10783
+ /**
10784
+ * Heading of the built-in empty state.
10785
+ * @default 'No results'
10786
+ */
10787
+ "emptyHeading"?: string;
10788
+ /**
10789
+ * Description of the built-in error state.
10790
+ * @default 'We couldn’t reach the server. Your query is kept — try again in a moment.'
10791
+ */
10792
+ "errorDescription"?: string;
10793
+ /**
10794
+ * Heading of the built-in error state.
10795
+ * @default 'Search isn’t available right now'
10796
+ */
10797
+ "errorHeading"?: string;
10798
+ /**
10799
+ * Footer hint text after the Enter key (results view).
10800
+ * @default 'Full results'
10801
+ */
10802
+ "fullResultsLabel"?: string;
10803
+ /**
10804
+ * Header of the `jump-to` section.
10805
+ * @default 'Jump to'
10806
+ */
10807
+ "jumpToLabel"?: string;
10808
+ /**
10809
+ * Accessible name of the search field. Falls back to the placeholder. `bs-input` has no aria-label prop, so this names the combobox wrapper.
10810
+ */
10811
+ "label"?: string;
10812
+ /**
10813
+ * Accessible name of the suggestions listbox.
10814
+ * @default 'Search suggestions'
10815
+ */
10816
+ "listLabel"?: string;
10817
+ /**
10818
+ * Footer hint text after the arrow keys.
10819
+ * @default 'Navigate'
9515
10820
  */
9516
- "accept"?: string;
10821
+ "navigateLabel"?: string;
9517
10822
  /**
9518
- * Label of the browse button. Override for localisation.
9519
- * @default 'Browse file'
10823
+ * Fires when "Clear recent" is pressed.
9520
10824
  */
9521
- "buttonLabel"?: string;
10825
+ "onBsClearRecent"?: (event: BsGlobalSearchCustomEvent<void>) => void;
9522
10826
  /**
9523
- * Guidelines under the heading (e.g. "PDF or JPG, up to 8MB").
10827
+ * Fires when the empty state's "Clear search" is pressed; the value is also cleared.
9524
10828
  */
9525
- "description"?: string;
10829
+ "onBsClearSearch"?: (event: BsGlobalSearchCustomEvent<void>) => void;
9526
10830
  /**
9527
- * Layout: icon beside the text (`horizontal`) or stacked above it, centered (`vertical`).
9528
- * @default 'horizontal'
10831
+ * Fires on every keystroke with the query. The component filters nothing itself.
9529
10832
  */
9530
- "direction"?: BsFileUploadDirection;
10833
+ "onBsInput"?: (event: BsGlobalSearchCustomEvent<string>) => void;
9531
10834
  /**
9532
- * Disables the browse button and ignores drops.
9533
- * @default false
10835
+ * Fires when the panel opens or closes through user interaction, with the new state.
9534
10836
  */
9535
- "disabled"?: boolean;
10837
+ "onBsOpenChange"?: (event: BsGlobalSearchCustomEvent<boolean>) => void;
9536
10838
  /**
9537
- * Whether a file is currently being dragged over the dropzone (the Figma "Drop" state). Set by the component during a drag; mutable and reflected so it can also be set to show the state statically.
9538
- * @default false
10839
+ * Fires when the error state's "Try again" is pressed.
9539
10840
  */
9540
- "dragging"?: boolean;
10841
+ "onBsRetry"?: (event: BsGlobalSearchCustomEvent<void>) => void;
9541
10842
  /**
9542
- * Heading text (e.g. "Upload your documents").
10843
+ * Fires on Enter with no highlighted item, with the query.
9543
10844
  */
9544
- "heading"?: string;
10845
+ "onBsSearch"?: (event: BsGlobalSearchCustomEvent<string>) => void;
9545
10846
  /**
9546
- * Allows selecting/dropping more than one file. Without it only the first file is taken.
9547
- * @default false
10847
+ * Fires when "See all results" is pressed.
9548
10848
  */
9549
- "multiple"?: boolean;
10849
+ "onBsSeeAll"?: (event: BsGlobalSearchCustomEvent<void>) => void;
9550
10850
  /**
9551
- * Fires with files that were not taken: they didn't match `accept`, or were extra files dropped while `multiple` is off.
10851
+ * Fires when an item is chosen (click or Enter), with its `value` and section (slot name).
9552
10852
  */
9553
- "onBsFilesReject"?: (event: BsFileUploadCustomEvent<File[]>) => void;
10853
+ "onBsSelect"?: (event: BsGlobalSearchCustomEvent<BsGlobalSearchSelectDetail>) => void;
9554
10854
  /**
9555
- * Fires with the accepted files, after the picker closes or files are dropped.
10855
+ * Whether the dropdown panel is open. Opens on focus, click and typing; closes on Escape, outside click and selection.
10856
+ * @default false
9556
10857
  */
9557
- "onBsFilesSelect"?: (event: BsFileUploadCustomEvent<File[]>) => void;
9558
- }
9559
- /**
9560
- * One file in an upload list: a thumbnail, the file name and size, a status line (a progress bar
9561
- * while uploading, or a success / error message) and an action button (cancel while uploading or
9562
- * after an error, remove once uploaded).
9563
- * Presentational only -- the consuming app owns the upload and drives `state`, `progress` and
9564
- * `message` from it. Pair with `bs-file-upload` (the dropzone that picks the files).
9565
- * ## When to use
9566
- * - Showing the status of each file the user has added, in a list under a `bs-file-upload`.
9567
- * ## When not to use
9568
- * - Attaching files to a chat message -- use `bs-attachment`.
9569
- */
9570
- interface BsFileUploadItem {
10858
+ "open"?: boolean;
9571
10859
  /**
9572
- * Accessible name of the cancel button (`loading`, `in-progress`, `error`).
9573
- * @default 'Cancel upload'
10860
+ * Placeholder of the field (also its accessible name unless `label` is set).
10861
+ * @default 'Search customers, orders, products…'
9574
10862
  */
9575
- "cancelLabel"?: string;
10863
+ "placeholder"?: string;
9576
10864
  /**
9577
- * The file name.
9578
- * @default ''
10865
+ * Header of the `recent` section.
10866
+ * @default 'Recent searches'
9579
10867
  */
9580
- "fileName"?: string;
10868
+ "recentLabel"?: string;
9581
10869
  /**
9582
- * The file size, already formatted (e.g. "8MB").
10870
+ * Text of the error state's action.
10871
+ * @default 'Try again'
9583
10872
  */
9584
- "fileSize"?: string;
10873
+ "retryLabel"?: string;
9585
10874
  /**
9586
- * The status text. Defaults per state: "Loading..." (`loading`), "{progress}% uploaded" (`in-progress`), "Upload failed" (`error`), "File uploaded successfully" (`success`). Provide your own for localisation or a specific error.
10875
+ * Header of the `search-in` section.
10876
+ * @default 'Search in'
9587
10877
  */
9588
- "message"?: string;
10878
+ "searchInLabel"?: string;
9589
10879
  /**
9590
- * Fires when the cancel button is clicked (`loading`, `in-progress`, `error`). The consumer stops the upload and removes the item.
10880
+ * Footer hint text after the Enter key (default view).
10881
+ * @default 'Search'
9591
10882
  */
9592
- "onBsCancel"?: (event: BsFileUploadItemCustomEvent<void>) => void;
10883
+ "searchLabel"?: string;
9593
10884
  /**
9594
- * Fires when the remove button is clicked (`success`). The consumer removes the file.
10885
+ * Text of the footer button of the results view, when `totalResults` is not set.
10886
+ * @default 'See all results'
9595
10887
  */
9596
- "onBsRemove"?: (event: BsFileUploadItemCustomEvent<void>) => void;
10888
+ "seeAllLabel"?: string;
9597
10889
  /**
9598
- * Upload progress, 0-100. Only used when `state="in-progress"`.
9599
- * @default 0
10890
+ * Shows the footer (hints and the Clear recent / See all button) for the `default` and `results` views.
10891
+ * @default true
9600
10892
  */
9601
- "progress"?: number;
10893
+ "showFooter"?: boolean;
9602
10894
  /**
9603
- * Accessible name of the remove button (`success`).
9604
- * @default 'Remove file'
10895
+ * Which view the panel shows. You choose it; nothing is inferred from `value`.
10896
+ * @default 'default'
9605
10897
  */
9606
- "removeLabel"?: string;
10898
+ "status"?: BsGlobalSearchStatus;
9607
10899
  /**
9608
- * Where the upload is. `loading` = working with no known percentage (indeterminate bar); `in-progress` = uploading with a known `progress`; `error` and `success` are final.
9609
- * @default 'loading'
10900
+ * Header of the `top-matches` section.
10901
+ * @default 'Top matches'
9610
10902
  */
9611
- "state"?: BsFileUploadItemState;
10903
+ "topMatchesLabel"?: string;
9612
10904
  /**
9613
- * Alt text for `thumbnailSrc`. Leave empty when the file name already says it all.
9614
- * @default ''
10905
+ * Total number of results (status `results`): shown as "See all {n} results" and announced to screen readers.
9615
10906
  */
9616
- "thumbnailAlt"?: string;
10907
+ "totalResults"?: number;
9617
10908
  /**
9618
- * A preview image of the file. Shown instead of the placeholder icon when set.
10909
+ * The query. Two-way with the field.
10910
+ * @default ''
9619
10911
  */
9620
- "thumbnailSrc"?: string;
10912
+ "value"?: string;
9621
10913
  }
9622
10914
  /**
9623
10915
  * A CSS grid layout wrapper. Children are placed in equal-width columns with a token-based gap.
@@ -9738,7 +11030,7 @@ declare namespace LocalJSX {
9738
11030
  * Colour and default glyph. `brand` uses the brand colours; `information` the info palette.
9739
11031
  * @default 'default'
9740
11032
  */
9741
- "intent"?: BsIconTileIntent;
11033
+ "intent"?: BsIconTileIntent1;
9742
11034
  /**
9743
11035
  * Accessible name. When set, the tile is exposed as an image with this name; when empty it is decorative and hidden from assistive tech.
9744
11036
  */
@@ -9961,6 +11253,163 @@ declare namespace LocalJSX {
9961
11253
  */
9962
11254
  "value"?: string;
9963
11255
  }
11256
+ /**
11257
+ * One key of a keyboard shortcut, e.g. `Ctrl`, `K` or `Esc` -- rendered as a `<kbd>` keycap.
11258
+ * Shows a text label, or an icon (e.g. a return arrow) via the `icon` slot.
11259
+ * ## When to use
11260
+ * - Showing a keyboard shortcut hint next to a control or inside a search field.
11261
+ * - Alone for a single key, or as the children of `bs-key-caps` for a multi-key shortcut.
11262
+ * ## When not to use
11263
+ * - As a button or any clickable control -- a key is a static hint, not interactive.
11264
+ * @prop --bs-key-bg - Cap background. Aliased to `--bs-surface-base`.
11265
+ * @prop --bs-key-border-color - Cap border colour. Aliased to `--bs-border-default`.
11266
+ * @prop --bs-key-radius - Cap corner radius. Aliased to `--bs-border-radius-50`.
11267
+ * @prop --bs-key-padding-x - Horizontal padding. Aliased to `--bs-spacing-75`.
11268
+ * @prop --bs-key-padding-y - Vertical padding. Aliased to `--bs-spacing-50`.
11269
+ * @prop --bs-key-min-width - Smallest cap width, so single characters keep a keycap shape. Defaults to `25px` (Figma).
11270
+ * @prop --bs-key-color - Label colour. Aliased to `--bs-text-secondary`.
11271
+ * @prop --bs-key-font-size - Label size. Aliased to `--bs-font-size-xs` (12px).
11272
+ * @prop --bs-key-icon-size - Icon size. Defaults to `16px` (Figma).
11273
+ */
11274
+ interface BsKey {
11275
+ /**
11276
+ * The key's text, e.g. `Ctrl`. The default slot overrides it.
11277
+ */
11278
+ "label"?: string;
11279
+ }
11280
+ /**
11281
+ * A keyboard shortcut of one to four keys joined by "+", e.g. `Ctrl + K`. Give it a `keys` string
11282
+ * (`"Ctrl+Shift+K"`) or array (`['Ctrl', '+']` for a literal plus key), or slot your own `bs-key`
11283
+ * elements -- for example when a key is an icon.
11284
+ * ## When to use
11285
+ * - A shortcut hint beside a menu item, button or inside a search field.
11286
+ * ## When not to use
11287
+ * - Instructions that need prose ("press Enter to submit") -- write a sentence and use a single `bs-key` inline.
11288
+ * - Anything interactive -- keys are static hints.
11289
+ * @prop --bs-key-caps-gap - Gap between keys and separators. Aliased to `--bs-spacing-100`.
11290
+ * @prop --bs-key-caps-separator-color - Colour of the "+" separators. Aliased to `--bs-text-muted`.
11291
+ * @prop --bs-key-caps-disabled-opacity - Opacity of the whole shortcut while `disabled`. Defaults to `0.38` (Figma).
11292
+ */
11293
+ interface BsKeyCaps {
11294
+ /**
11295
+ * Dims the whole shortcut and marks it `aria-disabled`.
11296
+ * @default false
11297
+ */
11298
+ "disabled"?: boolean;
11299
+ /**
11300
+ * The keys as text. A string is split on `+` (`"Ctrl+K"`); use an array to include a literal plus key. Ignored when `bs-key` elements are slotted instead. Figma defines one to four keys.
11301
+ */
11302
+ "keys"?: string | string[];
11303
+ /**
11304
+ * Accessible name of the shortcut, e.g. "Control plus K". Defaults to the keys joined with " plus ".
11305
+ */
11306
+ "label"?: string;
11307
+ }
11308
+ /**
11309
+ * A searchable reference panel of keyboard shortcuts: heading and close button, a search field, an
11310
+ * optional single-key on/off switch, shortcut groups in two columns and a footer hint. It is a
11311
+ * surface, not a modal -- place it inside `bs-dialog` or a popover.
11312
+ * Built from `bs-card`, `bs-icon-button`, `bs-input`, `bs-switch`, `bs-shortcut-row` (and so
11313
+ * `bs-key-caps` / `bs-key`).
11314
+ * ## When to use
11315
+ * - A "press ? to see shortcuts" help overlay for an app with many shortcuts.
11316
+ * ## When not to use
11317
+ * - A long-form help page or documentation -- link to it instead.
11318
+ * - A list of commands the user can run from it -- use `bs-menu`.
11319
+ * @prop --bs-keyboard-shortcuts-width - Panel width and min-width. Defaults to `720px` (Figma).
11320
+ * @prop --bs-keyboard-shortcuts-bg - Panel background. Aliased to `--bs-surface-base`.
11321
+ * @prop --bs-keyboard-shortcuts-radius - Aliased to `--bs-border-radius-150`.
11322
+ * @prop --bs-keyboard-shortcuts-padding - Aliased to `--bs-spacing-200`.
11323
+ * @prop --bs-keyboard-shortcuts-gap - Gap between sections. Aliased to `--bs-spacing-200`.
11324
+ * @prop --bs-keyboard-shortcuts-shadow - Figma elevation level 4 (`0 8px 8px` in `--bs-elevation-higher`, 12% black in light mode and 25% in dark mode).
11325
+ * @prop --bs-keyboard-shortcuts-column-gap - Gap between the two columns. Aliased to `--bs-spacing-600`.
11326
+ * @prop --bs-keyboard-shortcuts-color - Main text colour. Aliased to `--bs-text-default`.
11327
+ * @prop --bs-keyboard-shortcuts-color-secondary - Titles, captions, footer. Aliased to `--bs-text-secondary`.
11328
+ */
11329
+ interface BsKeyboardShortcuts {
11330
+ /**
11331
+ * Accessible name of the close button.
11332
+ * @default 'Close'
11333
+ */
11334
+ "closeLabel"?: string;
11335
+ /**
11336
+ * The key shown in the footer hint.
11337
+ * @default '?'
11338
+ */
11339
+ "footerKey"?: string;
11340
+ /**
11341
+ * Text before the footer key.
11342
+ * @default 'Press'
11343
+ */
11344
+ "footerPrefix"?: string;
11345
+ /**
11346
+ * Footer text after the key.
11347
+ * @default 'anywhere to open this list. On Mac: Cmd instead of Ctrl.'
11348
+ */
11349
+ "footerText"?: string;
11350
+ /**
11351
+ * Property only: the shortcut groups.
11352
+ * @default []
11353
+ */
11354
+ "groups"?: BsShortcutGroup[];
11355
+ /**
11356
+ * Heading text. The `heading` slot overrides it.
11357
+ * @default 'Keyboard shortcuts'
11358
+ */
11359
+ "heading"?: string;
11360
+ /**
11361
+ * Line shown when the query matches nothing.
11362
+ * @default 'No shortcuts match'
11363
+ */
11364
+ "noResultsText"?: string;
11365
+ /**
11366
+ * Emitted by the close button and by Escape.
11367
+ */
11368
+ "onBsClose"?: (event: BsKeyboardShortcutsCustomEvent<void>) => void;
11369
+ /**
11370
+ * Emitted when the search text changes, with the new text.
11371
+ */
11372
+ "onBsQueryChange"?: (event: BsKeyboardShortcutsCustomEvent<string>) => void;
11373
+ /**
11374
+ * Emitted when the single-key switch changes, with the new value.
11375
+ */
11376
+ "onBsSingleKeyChange"?: (event: BsKeyboardShortcutsCustomEvent<boolean>) => void;
11377
+ /**
11378
+ * Current search text. Filters by action or keys text, case-insensitively.
11379
+ * @default ''
11380
+ */
11381
+ "query"?: string;
11382
+ /**
11383
+ * Search field placeholder (also its accessible name: `bs-input` has no aria-label prop).
11384
+ * @default 'Search for an action'
11385
+ */
11386
+ "searchPlaceholder"?: string;
11387
+ /**
11388
+ * Shows the footer hint.
11389
+ * @default true
11390
+ */
11391
+ "showFooterHint"?: boolean;
11392
+ /**
11393
+ * Shows the single-key switch row.
11394
+ * @default true
11395
+ */
11396
+ "showSingleKeySwitch"?: boolean;
11397
+ /**
11398
+ * Switch caption.
11399
+ * @default 'Turn off if they clash with a screen reader or other tools.'
11400
+ */
11401
+ "singleKeyDescription"?: string;
11402
+ /**
11403
+ * Whether single-key shortcuts are on. When off they are shown dimmed.
11404
+ * @default true
11405
+ */
11406
+ "singleKeyEnabled"?: boolean;
11407
+ /**
11408
+ * Switch title.
11409
+ * @default 'Single-key shortcuts'
11410
+ */
11411
+ "singleKeyLabel"?: string;
11412
+ }
9964
11413
  /**
9965
11414
  * A vertical list of `bs-list-item` rows, optionally single-select.
9966
11415
  * ## When to use
@@ -11053,6 +12502,59 @@ declare namespace LocalJSX {
11053
12502
  */
11054
12503
  "value"?: string;
11055
12504
  }
12505
+ /**
12506
+ * One result or suggestion row of a search dropdown: a leading icon, a primary line, an optional
12507
+ * description line and trailing text. Static, not focusable -- focus stays in the search field and the
12508
+ * parent (`bs-global-search`) marks the highlighted row with `active`.
12509
+ * Standalone it has no role. `bs-global-search` sets `selectionRole="option"` (and an `id`) on its rows,
12510
+ * the same pattern as `bs-list-item` and `bs-shortcut-row`.
12511
+ * ## When to use
12512
+ * - A suggestion, recent search or result inside `bs-global-search`.
12513
+ * ## When not to use
12514
+ * - A row in a generic list -- use `bs-list-item`.
12515
+ * - A command in a popup menu -- use `bs-menu-item`.
12516
+ * @prop --bs-search-item-min-height - Aliased to `--bs-spacing-600` (48px).
12517
+ * @prop --bs-search-item-padding-y - Aliased to `--bs-spacing-100`.
12518
+ * @prop --bs-search-item-padding-x - Aliased to `--bs-spacing-150`.
12519
+ * @prop --bs-search-item-gap - Aliased to `--bs-spacing-100`.
12520
+ * @prop --bs-search-item-radius - Aliased to `--bs-border-radius-100`.
12521
+ * @prop --bs-search-item-bg - Resting background. `transparent`.
12522
+ * @prop --bs-search-item-bg-active - Active (highlighted) and hover background. Aliased to `--bs-surface-hover`.
12523
+ * @prop --bs-search-item-bg-pressed - Aliased to `--bs-surface-pressed`.
12524
+ * @prop --bs-search-item-color - Primary text. Aliased to `--bs-text-default`.
12525
+ * @prop --bs-search-item-color-muted - Description and trailing text. Aliased to `--bs-text-muted`.
12526
+ * @prop --bs-search-item-color-disabled - Aliased to `--bs-text-on-disabled`.
12527
+ * @prop --bs-search-item-icon-color - Aliased to `--bs-icon-default`.
12528
+ */
12529
+ interface BsSearchItem {
12530
+ /**
12531
+ * Highlighted row (keyboard or hover). Set by the parent.
12532
+ * @default false
12533
+ */
12534
+ "active"?: boolean;
12535
+ /**
12536
+ * Dims the row and ignores clicks.
12537
+ * @default false
12538
+ */
12539
+ "disabled"?: boolean;
12540
+ /**
12541
+ * Fires with `value` when the row is clicked, or when the parent selects it with Enter.
12542
+ */
12543
+ "onBsItemSelect"?: (event: BsSearchItemCustomEvent<string | undefined>) => void;
12544
+ /**
12545
+ * Set by the parent (`"option"`). Standalone rows have no role.
12546
+ * @default null
12547
+ */
12548
+ "selectionRole"?: 'option' | null;
12549
+ /**
12550
+ * Trailing text shorthand. The `trailing` slot overrides it.
12551
+ */
12552
+ "trailing"?: string;
12553
+ /**
12554
+ * Identifies the item; emitted by `bsItemSelect`.
12555
+ */
12556
+ "value"?: string;
12557
+ }
11056
12558
  /**
11057
12559
  * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
11058
12560
  * component's three types:
@@ -11197,6 +12699,46 @@ declare namespace LocalJSX {
11197
12699
  */
11198
12700
  "type"?: BsSessionTimeoutType;
11199
12701
  }
12702
+ /**
12703
+ * One row of a shortcut list: an action label on the left and its keyboard shortcut on the right.
12704
+ * Static information, not interactive. Standalone it has no role; `bs-keyboard-shortcuts` sets
12705
+ * `selectionRole="listitem"` on its rows (same pattern as `bs-list-item`).
12706
+ * Built from `bs-key-caps` (and so `bs-key`).
12707
+ * ## When to use
12708
+ * - A line in a keyboard-shortcut reference, usually inside `bs-keyboard-shortcuts`.
12709
+ * ## When not to use
12710
+ * - A clickable command or menu entry -- use `bs-menu-item` (which has its own shortcut slot).
12711
+ * @prop --bs-shortcut-row-height - Row height. Defaults to `36px` (Figma).
12712
+ * @prop --bs-shortcut-row-padding-x - Horizontal padding. Aliased to `--bs-spacing-100`.
12713
+ * @prop --bs-shortcut-row-gap - Gap between label and keys. Aliased to `--bs-spacing-100`.
12714
+ * @prop --bs-shortcut-row-radius - Corner radius. Aliased to `--bs-border-radius-75`.
12715
+ * @prop --bs-shortcut-row-color - Label colour. Aliased to `--bs-text-default`.
12716
+ * @prop --bs-shortcut-row-color-disabled - Label colour while `disabled`. Aliased to `--bs-text-on-disabled`.
12717
+ */
12718
+ interface BsShortcutRow {
12719
+ /**
12720
+ * The action, e.g. "Save". The default slot overrides it.
12721
+ */
12722
+ "action"?: string;
12723
+ /**
12724
+ * Dims the label and the keys.
12725
+ * @default false
12726
+ */
12727
+ "disabled"?: boolean;
12728
+ /**
12729
+ * The keys, e.g. `"Ctrl+S"`, or an array (`['Ctrl', '+']`) for a literal plus key. See `bs-key-caps`.
12730
+ */
12731
+ "keys"?: string | string[];
12732
+ /**
12733
+ * Accessible name of the key caps, e.g. "Control plus S". Defaults to the keys joined with "plus".
12734
+ */
12735
+ "label"?: string;
12736
+ /**
12737
+ * Set by the parent list (`"listitem"`). Standalone rows have no role.
12738
+ * @default null
12739
+ */
12740
+ "selectionRole"?: 'listitem' | null;
12741
+ }
11200
12742
  /**
11201
12743
  * A generic slide-in panel (drawer) anchored to the start or end edge, for history, filters, FAQ
11202
12744
  * and similar secondary content. Closes via its close button or Escape and emits `bsClose`.
@@ -12532,6 +14074,35 @@ declare namespace LocalJSX {
12532
14074
  "page": string;
12533
14075
  "href": string;
12534
14076
  }
14077
+ interface BsCommandPaletteAttributes {
14078
+ "value": string;
14079
+ "open": boolean;
14080
+ "commandsOnly": boolean;
14081
+ "status": BsCommandPaletteStatus;
14082
+ "label": string;
14083
+ "placeholder": string;
14084
+ "keepOpenOnSelect": boolean;
14085
+ "showFooter": boolean;
14086
+ "hotkey": string;
14087
+ "scopeLabel": string;
14088
+ "recentLabel": string;
14089
+ "suggestedLabel": string;
14090
+ "commandsLabel": string;
14091
+ "navigationLabel": string;
14092
+ "recordsLabel": string;
14093
+ "tryInsteadLabel": string;
14094
+ "navigateLabel": string;
14095
+ "openLabel": string;
14096
+ "closeLabel": string;
14097
+ "commandsOnlyLabel": string;
14098
+ "allResultsLabel": string;
14099
+ "emptyHeading": string;
14100
+ "emptyDescription": string;
14101
+ "didYouMean": string;
14102
+ "didYouMeanLabel": string;
14103
+ "loadingLabel": string;
14104
+ "listLabel": string;
14105
+ }
12535
14106
  interface BsComposerAttributes {
12536
14107
  "variant": BsComposerVariant;
12537
14108
  "placeholder": string;
@@ -12615,6 +14186,12 @@ declare namespace LocalJSX {
12615
14186
  "inset": BsDividerInset;
12616
14187
  "decorative": boolean;
12617
14188
  }
14189
+ interface BsEmptyStateAttributes {
14190
+ "heading": string;
14191
+ "description": string;
14192
+ "intent": BsIconTileIntent;
14193
+ "headingLevel": 2 | 3 | 4 | 5 | 6;
14194
+ }
12618
14195
  interface BsErrorPageAttributes {
12619
14196
  "type": BsErrorPageType;
12620
14197
  "code": string;
@@ -12646,6 +14223,33 @@ declare namespace LocalJSX {
12646
14223
  "cancelLabel": string;
12647
14224
  "removeLabel": string;
12648
14225
  }
14226
+ interface BsGlobalSearchAttributes {
14227
+ "value": string;
14228
+ "placeholder": string;
14229
+ "label": string;
14230
+ "disabled": boolean;
14231
+ "open": boolean;
14232
+ "status": BsGlobalSearchStatus;
14233
+ "totalResults": number;
14234
+ "showFooter": boolean;
14235
+ "listLabel": string;
14236
+ "recentLabel": string;
14237
+ "jumpToLabel": string;
14238
+ "topMatchesLabel": string;
14239
+ "searchInLabel": string;
14240
+ "navigateLabel": string;
14241
+ "searchLabel": string;
14242
+ "closeLabel": string;
14243
+ "fullResultsLabel": string;
14244
+ "clearRecentLabel": string;
14245
+ "seeAllLabel": string;
14246
+ "emptyHeading": string;
14247
+ "emptyDescription": string;
14248
+ "clearSearchLabel": string;
14249
+ "errorHeading": string;
14250
+ "errorDescription": string;
14251
+ "retryLabel": string;
14252
+ }
12649
14253
  interface BsGridAttributes {
12650
14254
  "columns": string;
12651
14255
  "gap": string;
@@ -12708,6 +14312,29 @@ declare namespace LocalJSX {
12708
14312
  "length": number;
12709
14313
  "open": boolean;
12710
14314
  }
14315
+ interface BsKeyAttributes {
14316
+ "label": string;
14317
+ }
14318
+ interface BsKeyCapsAttributes {
14319
+ "keys": string | string[];
14320
+ "disabled": boolean;
14321
+ "label": string;
14322
+ }
14323
+ interface BsKeyboardShortcutsAttributes {
14324
+ "heading": string;
14325
+ "closeLabel": string;
14326
+ "searchPlaceholder": string;
14327
+ "query": string;
14328
+ "showSingleKeySwitch": boolean;
14329
+ "singleKeyEnabled": boolean;
14330
+ "singleKeyLabel": string;
14331
+ "singleKeyDescription": string;
14332
+ "showFooterHint": boolean;
14333
+ "footerKey": string;
14334
+ "footerText": string;
14335
+ "footerPrefix": string;
14336
+ "noResultsText": string;
14337
+ }
12711
14338
  interface BsListAttributes {
12712
14339
  "selectable": boolean;
12713
14340
  "value": string | null;
@@ -12860,6 +14487,13 @@ declare namespace LocalJSX {
12860
14487
  "checked": boolean;
12861
14488
  "disabled": boolean;
12862
14489
  }
14490
+ interface BsSearchItemAttributes {
14491
+ "value": string;
14492
+ "active": boolean;
14493
+ "disabled": boolean;
14494
+ "trailing": string;
14495
+ "selectionRole": 'option' | null;
14496
+ }
12863
14497
  interface BsSessionTimeoutAttributes {
12864
14498
  "type": BsSessionTimeoutType;
12865
14499
  "heading": string;
@@ -12882,6 +14516,13 @@ declare namespace LocalJSX {
12882
14516
  "dividerLabel": string;
12883
14517
  "cancelLabel": string;
12884
14518
  }
14519
+ interface BsShortcutRowAttributes {
14520
+ "action": string;
14521
+ "keys": string | string[];
14522
+ "label": string;
14523
+ "disabled": boolean;
14524
+ "selectionRole": 'listitem' | null;
14525
+ }
12885
14526
  interface BsSidePanelAttributes {
12886
14527
  "open": boolean;
12887
14528
  "heading": string;
@@ -13087,6 +14728,7 @@ declare namespace LocalJSX {
13087
14728
  "bs-chip-informative": Omit<BsChipInformative, keyof BsChipInformativeAttributes> & { [K in keyof BsChipInformative & keyof BsChipInformativeAttributes]?: BsChipInformative[K] } & { [K in keyof BsChipInformative & keyof BsChipInformativeAttributes as `attr:${K}`]?: BsChipInformativeAttributes[K] } & { [K in keyof BsChipInformative & keyof BsChipInformativeAttributes as `prop:${K}`]?: BsChipInformative[K] };
13088
14729
  "bs-chip-input": Omit<BsChipInput, keyof BsChipInputAttributes> & { [K in keyof BsChipInput & keyof BsChipInputAttributes]?: BsChipInput[K] } & { [K in keyof BsChipInput & keyof BsChipInputAttributes as `attr:${K}`]?: BsChipInputAttributes[K] } & { [K in keyof BsChipInput & keyof BsChipInputAttributes as `prop:${K}`]?: BsChipInput[K] };
13089
14730
  "bs-citation-preview": Omit<BsCitationPreview, keyof BsCitationPreviewAttributes> & { [K in keyof BsCitationPreview & keyof BsCitationPreviewAttributes]?: BsCitationPreview[K] } & { [K in keyof BsCitationPreview & keyof BsCitationPreviewAttributes as `attr:${K}`]?: BsCitationPreviewAttributes[K] } & { [K in keyof BsCitationPreview & keyof BsCitationPreviewAttributes as `prop:${K}`]?: BsCitationPreview[K] };
14731
+ "bs-command-palette": Omit<BsCommandPalette, keyof BsCommandPaletteAttributes> & { [K in keyof BsCommandPalette & keyof BsCommandPaletteAttributes]?: BsCommandPalette[K] } & { [K in keyof BsCommandPalette & keyof BsCommandPaletteAttributes as `attr:${K}`]?: BsCommandPaletteAttributes[K] } & { [K in keyof BsCommandPalette & keyof BsCommandPaletteAttributes as `prop:${K}`]?: BsCommandPalette[K] };
13090
14732
  "bs-composer": Omit<BsComposer, keyof BsComposerAttributes> & { [K in keyof BsComposer & keyof BsComposerAttributes]?: BsComposer[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `attr:${K}`]?: BsComposerAttributes[K] } & { [K in keyof BsComposer & keyof BsComposerAttributes as `prop:${K}`]?: BsComposer[K] };
13091
14733
  "bs-composer-status-banner": Omit<BsComposerStatusBanner, keyof BsComposerStatusBannerAttributes> & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes]?: BsComposerStatusBanner[K] } & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes as `attr:${K}`]?: BsComposerStatusBannerAttributes[K] } & { [K in keyof BsComposerStatusBanner & keyof BsComposerStatusBannerAttributes as `prop:${K}`]?: BsComposerStatusBanner[K] };
13092
14734
  "bs-container": Omit<BsContainer, keyof BsContainerAttributes> & { [K in keyof BsContainer & keyof BsContainerAttributes]?: BsContainer[K] } & { [K in keyof BsContainer & keyof BsContainerAttributes as `attr:${K}`]?: BsContainerAttributes[K] } & { [K in keyof BsContainer & keyof BsContainerAttributes as `prop:${K}`]?: BsContainer[K] };
@@ -13095,14 +14737,19 @@ declare namespace LocalJSX {
13095
14737
  "bs-datepicker": Omit<BsDatepicker, keyof BsDatepickerAttributes> & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes]?: BsDatepicker[K] } & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes as `attr:${K}`]?: BsDatepickerAttributes[K] } & { [K in keyof BsDatepicker & keyof BsDatepickerAttributes as `prop:${K}`]?: BsDatepicker[K] };
13096
14738
  "bs-dialog": Omit<BsDialog, keyof BsDialogAttributes> & { [K in keyof BsDialog & keyof BsDialogAttributes]?: BsDialog[K] } & { [K in keyof BsDialog & keyof BsDialogAttributes as `attr:${K}`]?: BsDialogAttributes[K] } & { [K in keyof BsDialog & keyof BsDialogAttributes as `prop:${K}`]?: BsDialog[K] };
13097
14739
  "bs-divider": Omit<BsDivider, keyof BsDividerAttributes> & { [K in keyof BsDivider & keyof BsDividerAttributes]?: BsDivider[K] } & { [K in keyof BsDivider & keyof BsDividerAttributes as `attr:${K}`]?: BsDividerAttributes[K] } & { [K in keyof BsDivider & keyof BsDividerAttributes as `prop:${K}`]?: BsDivider[K] };
14740
+ "bs-empty-state": Omit<BsEmptyState, keyof BsEmptyStateAttributes> & { [K in keyof BsEmptyState & keyof BsEmptyStateAttributes]?: BsEmptyState[K] } & { [K in keyof BsEmptyState & keyof BsEmptyStateAttributes as `attr:${K}`]?: BsEmptyStateAttributes[K] } & { [K in keyof BsEmptyState & keyof BsEmptyStateAttributes as `prop:${K}`]?: BsEmptyState[K] };
13098
14741
  "bs-error-page": Omit<BsErrorPage, keyof BsErrorPageAttributes> & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes]?: BsErrorPage[K] } & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes as `attr:${K}`]?: BsErrorPageAttributes[K] } & { [K in keyof BsErrorPage & keyof BsErrorPageAttributes as `prop:${K}`]?: BsErrorPage[K] };
13099
14742
  "bs-file-upload": Omit<BsFileUpload, keyof BsFileUploadAttributes> & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes]?: BsFileUpload[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `attr:${K}`]?: BsFileUploadAttributes[K] } & { [K in keyof BsFileUpload & keyof BsFileUploadAttributes as `prop:${K}`]?: BsFileUpload[K] };
13100
14743
  "bs-file-upload-item": Omit<BsFileUploadItem, keyof BsFileUploadItemAttributes> & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes]?: BsFileUploadItem[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `attr:${K}`]?: BsFileUploadItemAttributes[K] } & { [K in keyof BsFileUploadItem & keyof BsFileUploadItemAttributes as `prop:${K}`]?: BsFileUploadItem[K] };
14744
+ "bs-global-search": Omit<BsGlobalSearch, keyof BsGlobalSearchAttributes> & { [K in keyof BsGlobalSearch & keyof BsGlobalSearchAttributes]?: BsGlobalSearch[K] } & { [K in keyof BsGlobalSearch & keyof BsGlobalSearchAttributes as `attr:${K}`]?: BsGlobalSearchAttributes[K] } & { [K in keyof BsGlobalSearch & keyof BsGlobalSearchAttributes as `prop:${K}`]?: BsGlobalSearch[K] };
13101
14745
  "bs-grid": Omit<BsGrid, keyof BsGridAttributes> & { [K in keyof BsGrid & keyof BsGridAttributes]?: BsGrid[K] } & { [K in keyof BsGrid & keyof BsGridAttributes as `attr:${K}`]?: BsGridAttributes[K] } & { [K in keyof BsGrid & keyof BsGridAttributes as `prop:${K}`]?: BsGrid[K] };
13102
14746
  "bs-icon-button": Omit<BsIconButton, keyof BsIconButtonAttributes> & { [K in keyof BsIconButton & keyof BsIconButtonAttributes]?: BsIconButton[K] } & { [K in keyof BsIconButton & keyof BsIconButtonAttributes as `attr:${K}`]?: BsIconButtonAttributes[K] } & { [K in keyof BsIconButton & keyof BsIconButtonAttributes as `prop:${K}`]?: BsIconButton[K] };
13103
14747
  "bs-icon-tile": Omit<BsIconTile, keyof BsIconTileAttributes> & { [K in keyof BsIconTile & keyof BsIconTileAttributes]?: BsIconTile[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `attr:${K}`]?: BsIconTileAttributes[K] } & { [K in keyof BsIconTile & keyof BsIconTileAttributes as `prop:${K}`]?: BsIconTile[K] };
13104
14748
  "bs-inline-tab": Omit<BsInlineTab, keyof BsInlineTabAttributes> & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes]?: BsInlineTab[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `attr:${K}`]?: BsInlineTabAttributes[K] } & { [K in keyof BsInlineTab & keyof BsInlineTabAttributes as `prop:${K}`]?: BsInlineTab[K] };
13105
14749
  "bs-input": Omit<BsInput, keyof BsInputAttributes> & { [K in keyof BsInput & keyof BsInputAttributes]?: BsInput[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `attr:${K}`]?: BsInputAttributes[K] } & { [K in keyof BsInput & keyof BsInputAttributes as `prop:${K}`]?: BsInput[K] };
14750
+ "bs-key": Omit<BsKey, keyof BsKeyAttributes> & { [K in keyof BsKey & keyof BsKeyAttributes]?: BsKey[K] } & { [K in keyof BsKey & keyof BsKeyAttributes as `attr:${K}`]?: BsKeyAttributes[K] } & { [K in keyof BsKey & keyof BsKeyAttributes as `prop:${K}`]?: BsKey[K] };
14751
+ "bs-key-caps": Omit<BsKeyCaps, keyof BsKeyCapsAttributes> & { [K in keyof BsKeyCaps & keyof BsKeyCapsAttributes]?: BsKeyCaps[K] } & { [K in keyof BsKeyCaps & keyof BsKeyCapsAttributes as `attr:${K}`]?: BsKeyCapsAttributes[K] } & { [K in keyof BsKeyCaps & keyof BsKeyCapsAttributes as `prop:${K}`]?: BsKeyCaps[K] };
14752
+ "bs-keyboard-shortcuts": Omit<BsKeyboardShortcuts, keyof BsKeyboardShortcutsAttributes> & { [K in keyof BsKeyboardShortcuts & keyof BsKeyboardShortcutsAttributes]?: BsKeyboardShortcuts[K] } & { [K in keyof BsKeyboardShortcuts & keyof BsKeyboardShortcutsAttributes as `attr:${K}`]?: BsKeyboardShortcutsAttributes[K] } & { [K in keyof BsKeyboardShortcuts & keyof BsKeyboardShortcutsAttributes as `prop:${K}`]?: BsKeyboardShortcuts[K] };
13106
14753
  "bs-list": Omit<BsList, keyof BsListAttributes> & { [K in keyof BsList & keyof BsListAttributes]?: BsList[K] } & { [K in keyof BsList & keyof BsListAttributes as `attr:${K}`]?: BsListAttributes[K] } & { [K in keyof BsList & keyof BsListAttributes as `prop:${K}`]?: BsList[K] };
13107
14754
  "bs-list-item": Omit<BsListItem, keyof BsListItemAttributes> & { [K in keyof BsListItem & keyof BsListItemAttributes]?: BsListItem[K] } & { [K in keyof BsListItem & keyof BsListItemAttributes as `attr:${K}`]?: BsListItemAttributes[K] } & { [K in keyof BsListItem & keyof BsListItemAttributes as `prop:${K}`]?: BsListItem[K] };
13108
14755
  "bs-logo": Omit<BsLogo, keyof BsLogoAttributes> & { [K in keyof BsLogo & keyof BsLogoAttributes]?: BsLogo[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `attr:${K}`]?: BsLogoAttributes[K] } & { [K in keyof BsLogo & keyof BsLogoAttributes as `prop:${K}`]?: BsLogo[K] };
@@ -13121,7 +14768,9 @@ declare namespace LocalJSX {
13121
14768
  "bs-progress-linear": Omit<BsProgressLinear, keyof BsProgressLinearAttributes> & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes]?: BsProgressLinear[K] } & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes as `attr:${K}`]?: BsProgressLinearAttributes[K] } & { [K in keyof BsProgressLinear & keyof BsProgressLinearAttributes as `prop:${K}`]?: BsProgressLinear[K] };
13122
14769
  "bs-qr-code": Omit<BsQrCode, keyof BsQrCodeAttributes> & { [K in keyof BsQrCode & keyof BsQrCodeAttributes]?: BsQrCode[K] } & { [K in keyof BsQrCode & keyof BsQrCodeAttributes as `attr:${K}`]?: BsQrCodeAttributes[K] } & { [K in keyof BsQrCode & keyof BsQrCodeAttributes as `prop:${K}`]?: BsQrCode[K] };
13123
14770
  "bs-radio": Omit<BsRadio, keyof BsRadioAttributes> & { [K in keyof BsRadio & keyof BsRadioAttributes]?: BsRadio[K] } & { [K in keyof BsRadio & keyof BsRadioAttributes as `attr:${K}`]?: BsRadioAttributes[K] } & { [K in keyof BsRadio & keyof BsRadioAttributes as `prop:${K}`]?: BsRadio[K] };
14771
+ "bs-search-item": Omit<BsSearchItem, keyof BsSearchItemAttributes> & { [K in keyof BsSearchItem & keyof BsSearchItemAttributes]?: BsSearchItem[K] } & { [K in keyof BsSearchItem & keyof BsSearchItemAttributes as `attr:${K}`]?: BsSearchItemAttributes[K] } & { [K in keyof BsSearchItem & keyof BsSearchItemAttributes as `prop:${K}`]?: BsSearchItem[K] };
13124
14772
  "bs-session-timeout": Omit<BsSessionTimeout, keyof BsSessionTimeoutAttributes> & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes]?: BsSessionTimeout[K] } & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes as `attr:${K}`]?: BsSessionTimeoutAttributes[K] } & { [K in keyof BsSessionTimeout & keyof BsSessionTimeoutAttributes as `prop:${K}`]?: BsSessionTimeout[K] };
14773
+ "bs-shortcut-row": Omit<BsShortcutRow, keyof BsShortcutRowAttributes> & { [K in keyof BsShortcutRow & keyof BsShortcutRowAttributes]?: BsShortcutRow[K] } & { [K in keyof BsShortcutRow & keyof BsShortcutRowAttributes as `attr:${K}`]?: BsShortcutRowAttributes[K] } & { [K in keyof BsShortcutRow & keyof BsShortcutRowAttributes as `prop:${K}`]?: BsShortcutRow[K] };
13125
14774
  "bs-side-panel": Omit<BsSidePanel, keyof BsSidePanelAttributes> & { [K in keyof BsSidePanel & keyof BsSidePanelAttributes]?: BsSidePanel[K] } & { [K in keyof BsSidePanel & keyof BsSidePanelAttributes as `attr:${K}`]?: BsSidePanelAttributes[K] } & { [K in keyof BsSidePanel & keyof BsSidePanelAttributes as `prop:${K}`]?: BsSidePanel[K] };
13126
14775
  "bs-skeleton": Omit<BsSkeleton, keyof BsSkeletonAttributes> & { [K in keyof BsSkeleton & keyof BsSkeletonAttributes]?: BsSkeleton[K] } & { [K in keyof BsSkeleton & keyof BsSkeletonAttributes as `attr:${K}`]?: BsSkeletonAttributes[K] } & { [K in keyof BsSkeleton & keyof BsSkeletonAttributes as `prop:${K}`]?: BsSkeleton[K] };
13127
14776
  "bs-slider": Omit<BsSlider, keyof BsSliderAttributes> & { [K in keyof BsSlider & keyof BsSliderAttributes]?: BsSlider[K] } & { [K in keyof BsSlider & keyof BsSliderAttributes as `attr:${K}`]?: BsSliderAttributes[K] } & { [K in keyof BsSlider & keyof BsSliderAttributes as `prop:${K}`]?: BsSlider[K] };
@@ -13718,6 +15367,37 @@ declare module "@stencil/core" {
13718
15367
  * @prop --bs-citation-preview-page-color - Page label color. Aliased to `--bs-text-secondary`.
13719
15368
  */
13720
15369
  "bs-citation-preview": LocalJSX.IntrinsicElements["bs-citation-preview"] & JSXBase.HTMLAttributes<HTMLBsCitationPreviewElement>;
15370
+ /**
15371
+ * A Ctrl+K command palette: a modal with a search field, grouped commands, navigation and records, a
15372
+ * no-results view and a keyboard-hint footer. The data, the filtering, the command registry and the
15373
+ * recent-items storage are all yours: you slot `bs-search-item`s into the sections and set `status`.
15374
+ * Built from a native `<dialog>` (opened with `showModal()`, so focus is trapped, the page behind is inert
15375
+ * and the backdrop is the scrim), `bs-input` (type="search"), `bs-search-item`, `bs-key` (footer hints and
15376
+ * the Esc cap), `bs-chip-informative` (the scope chip) and `bs-spinner` (loading). Slot a `bs-key-caps` with
15377
+ * `slot="trailing"` inside an item to show a command's shortcut.
15378
+ * ## When to use
15379
+ * - An app-wide "do anything" entry point opened with a hotkey: run commands, navigate, open records.
15380
+ * ## When not to use
15381
+ * - A plain search box with a dropdown -- use `bs-global-search`.
15382
+ * - A small list of actions on one control -- use `bs-menu`.
15383
+ * A `>` as the first character of the field switches to commands-only mode (`commandsOnly`, reflected as
15384
+ * `commands-only`). The component filters nothing: listen to `bsInput`, swap the slotted items, set `status`.
15385
+ * Nested (sub-command) palettes are a consumer pattern: swap the slotted commands and set `scopeLabel`.
15386
+ * @prop --bs-command-palette-width - Panel width. Defaults to `640px` (Figma); capped to the viewport.
15387
+ * @prop --bs-command-palette-top - Distance from the top of the viewport. Defaults to `12vh`.
15388
+ * @prop --bs-command-palette-max-height - Max height of the results area. Defaults to `60vh`.
15389
+ * @prop --bs-command-palette-radius - Aliased to `--bs-border-radius-150`.
15390
+ * @prop --bs-command-palette-bg - Panel background. Aliased to `--bs-surface-base`.
15391
+ * @prop --bs-command-palette-shadow - Figma elevation level 4: `0 8px 16px` in `--bs-elevation-higher` (stronger in dark mode).
15392
+ * @prop --bs-command-palette-overlay - Scrim colour. Aliased to `--bs-surface-overlay`.
15393
+ * @prop --bs-command-palette-footer-bg - Aliased to `--bs-surface-container`.
15394
+ * @prop --bs-command-palette-divider-color - Aliased to `--bs-border-default`.
15395
+ * @prop --bs-command-palette-header-border-color - Aliased to `--bs-border-neutral-container`.
15396
+ * @prop --bs-command-palette-header-color - Aliased to `--bs-text-muted`.
15397
+ * @prop --bs-command-palette-hint-color - Aliased to `--bs-text-secondary`.
15398
+ * @prop --bs-command-palette-z-index - Aliased to `--bs-z-index-modal`.
15399
+ */
15400
+ "bs-command-palette": LocalJSX.IntrinsicElements["bs-command-palette"] & JSXBase.HTMLAttributes<HTMLBsCommandPaletteElement>;
13721
15401
  /**
13722
15402
  * A chat composer input for Genie AI-style conversational interfaces: a text field
13723
15403
  * plus an attach button, a mic/voice-recording toggle, and a single primary action button whose
@@ -13914,6 +15594,24 @@ declare module "@stencil/core" {
13914
15594
  * @prop --bs-divider-inset - Indent applied by `inset`. Aliased to `--bs-spacing-300`.
13915
15595
  */
13916
15596
  "bs-divider": LocalJSX.IntrinsicElements["bs-divider"] & JSXBase.HTMLAttributes<HTMLBsDividerElement>;
15597
+ /**
15598
+ * A centered "nothing to show" block: an icon tile, a heading, a description and an optional action.
15599
+ * Used for empty lists, "no results" and error states inside a panel, card or page section.
15600
+ * Built from `bs-icon-tile` (and, in your `action` slot, usually a `bs-button`).
15601
+ * The component has no role. Live regions belong on a wrapper you control (e.g. `role="status"` on the
15602
+ * element that stays in the DOM while this block appears and disappears).
15603
+ * ## When to use
15604
+ * - A list, table or search result that has nothing to show, or failed to load.
15605
+ * ## When not to use
15606
+ * - A full-page error with a status code -- use `bs-error-page`.
15607
+ * - A transient message -- use `bs-toast` or `bs-snackbar`.
15608
+ * @prop --bs-empty-state-padding-y - Vertical padding. Aliased to `--bs-spacing-700` (56px).
15609
+ * @prop --bs-empty-state-padding-x - Horizontal padding. Aliased to `--bs-spacing-300` (24px).
15610
+ * @prop --bs-empty-state-gap - Gap between tile, heading, description and action. Aliased to `--bs-spacing-150`.
15611
+ * @prop --bs-empty-state-heading-color - Aliased to `--bs-text-default`.
15612
+ * @prop --bs-empty-state-description-color - Aliased to `--bs-text-secondary`.
15613
+ */
15614
+ "bs-empty-state": LocalJSX.IntrinsicElements["bs-empty-state"] & JSXBase.HTMLAttributes<HTMLBsEmptyStateElement>;
13917
15615
  /**
13918
15616
  * A full-block page for when the user can't get to what they asked for: page not found (404), a server
13919
15617
  * error (500), no access (403), planned maintenance, or no internet connection. Matches the Figma
@@ -13953,6 +15651,37 @@ declare module "@stencil/core" {
13953
15651
  * - Attaching files to a chat message -- use `bs-attachment`.
13954
15652
  */
13955
15653
  "bs-file-upload-item": LocalJSX.IntrinsicElements["bs-file-upload-item"] & JSXBase.HTMLAttributes<HTMLBsFileUploadItemElement>;
15654
+ /**
15655
+ * A global search combobox: a search field with a dropdown panel of suggestions, results, an empty state
15656
+ * or an error state, plus a keyboard-hint footer. The data, the filtering and the recent-search storage
15657
+ * are all yours: you slot `bs-search-item`s into the sections and tell the component which `status` to show.
15658
+ * Built from `bs-input` (type="search"), `bs-search-item`, `bs-empty-state` (and so `bs-icon-tile`),
15659
+ * `bs-button` and `bs-key` (the footer keycaps).
15660
+ * ## When to use
15661
+ * - An app-wide "find anything" field with recent searches, jump-to shortcuts and grouped results.
15662
+ * ## When not to use
15663
+ * - Filtering the list or table that is already on screen -- use `bs-input type="search"`.
15664
+ * - A list of commands or actions -- use `bs-menu`.
15665
+ * - The complete result set -- link to a full search results page ("See all results").
15666
+ * Put `bs-search-item` children in the light DOM with `slot="recent"`, `slot="jump-to"`,
15667
+ * `slot="top-matches"` or `slot="search-in"`. A section (and its header) is only rendered when its slot has
15668
+ * content. Up/Down arrows move a highlight through the visible items; focus never leaves the field.
15669
+ * Known limit: the items are in your light DOM and the combobox in this shadow root, so
15670
+ * `aria-activedescendant` (an id reference) does not resolve across that boundary in every browser; the
15671
+ * highlighted option also gets `aria-selected="true"`.
15672
+ * @prop --bs-global-search-width - Field and panel width. Defaults to `480px` (Figma); capped at 100%.
15673
+ * @prop --bs-global-search-panel-radius - Aliased to `--bs-border-radius-100`.
15674
+ * @prop --bs-global-search-panel-padding - Aliased to `--bs-spacing-100`.
15675
+ * @prop --bs-global-search-gap - Gap between sections, and between the field and the panel. Aliased to `--bs-spacing-100`.
15676
+ * @prop --bs-global-search-panel-bg - Panel background. Aliased to `--bs-surface-base`.
15677
+ * @prop --bs-global-search-shadow - Panel shadow: Figma elevation level 3 (`0 4px 8px` in `--bs-elevation-high`, 10% black in light mode and 30% in dark mode).
15678
+ * @prop --bs-global-search-z-index - Panel stacking. Aliased to `--bs-z-index-dropdown`.
15679
+ * @prop --bs-global-search-divider-color - Footer divider. Aliased to `--bs-border-default`.
15680
+ * @prop --bs-global-search-header-border-color - Section header underline. Aliased to `--bs-border-neutral-container`.
15681
+ * @prop --bs-global-search-header-color - Section header text. Aliased to `--bs-text-muted`.
15682
+ * @prop --bs-global-search-hint-color - Footer hint text. Aliased to `--bs-text-secondary`.
15683
+ */
15684
+ "bs-global-search": LocalJSX.IntrinsicElements["bs-global-search"] & JSXBase.HTMLAttributes<HTMLBsGlobalSearchElement>;
13956
15685
  /**
13957
15686
  * A CSS grid layout wrapper. Children are placed in equal-width columns with a token-based gap.
13958
15687
  * `columns` takes either a number (`"3"` becomes `repeat(3, minmax(0, 1fr))`) or any raw
@@ -14047,6 +15776,61 @@ declare module "@stencil/core" {
14047
15776
  * options list at all (freeform chip entry).
14048
15777
  */
14049
15778
  "bs-input": LocalJSX.IntrinsicElements["bs-input"] & JSXBase.HTMLAttributes<HTMLBsInputElement>;
15779
+ /**
15780
+ * One key of a keyboard shortcut, e.g. `Ctrl`, `K` or `Esc` -- rendered as a `<kbd>` keycap.
15781
+ * Shows a text label, or an icon (e.g. a return arrow) via the `icon` slot.
15782
+ * ## When to use
15783
+ * - Showing a keyboard shortcut hint next to a control or inside a search field.
15784
+ * - Alone for a single key, or as the children of `bs-key-caps` for a multi-key shortcut.
15785
+ * ## When not to use
15786
+ * - As a button or any clickable control -- a key is a static hint, not interactive.
15787
+ * @prop --bs-key-bg - Cap background. Aliased to `--bs-surface-base`.
15788
+ * @prop --bs-key-border-color - Cap border colour. Aliased to `--bs-border-default`.
15789
+ * @prop --bs-key-radius - Cap corner radius. Aliased to `--bs-border-radius-50`.
15790
+ * @prop --bs-key-padding-x - Horizontal padding. Aliased to `--bs-spacing-75`.
15791
+ * @prop --bs-key-padding-y - Vertical padding. Aliased to `--bs-spacing-50`.
15792
+ * @prop --bs-key-min-width - Smallest cap width, so single characters keep a keycap shape. Defaults to `25px` (Figma).
15793
+ * @prop --bs-key-color - Label colour. Aliased to `--bs-text-secondary`.
15794
+ * @prop --bs-key-font-size - Label size. Aliased to `--bs-font-size-xs` (12px).
15795
+ * @prop --bs-key-icon-size - Icon size. Defaults to `16px` (Figma).
15796
+ */
15797
+ "bs-key": LocalJSX.IntrinsicElements["bs-key"] & JSXBase.HTMLAttributes<HTMLBsKeyElement>;
15798
+ /**
15799
+ * A keyboard shortcut of one to four keys joined by "+", e.g. `Ctrl + K`. Give it a `keys` string
15800
+ * (`"Ctrl+Shift+K"`) or array (`['Ctrl', '+']` for a literal plus key), or slot your own `bs-key`
15801
+ * elements -- for example when a key is an icon.
15802
+ * ## When to use
15803
+ * - A shortcut hint beside a menu item, button or inside a search field.
15804
+ * ## When not to use
15805
+ * - Instructions that need prose ("press Enter to submit") -- write a sentence and use a single `bs-key` inline.
15806
+ * - Anything interactive -- keys are static hints.
15807
+ * @prop --bs-key-caps-gap - Gap between keys and separators. Aliased to `--bs-spacing-100`.
15808
+ * @prop --bs-key-caps-separator-color - Colour of the "+" separators. Aliased to `--bs-text-muted`.
15809
+ * @prop --bs-key-caps-disabled-opacity - Opacity of the whole shortcut while `disabled`. Defaults to `0.38` (Figma).
15810
+ */
15811
+ "bs-key-caps": LocalJSX.IntrinsicElements["bs-key-caps"] & JSXBase.HTMLAttributes<HTMLBsKeyCapsElement>;
15812
+ /**
15813
+ * A searchable reference panel of keyboard shortcuts: heading and close button, a search field, an
15814
+ * optional single-key on/off switch, shortcut groups in two columns and a footer hint. It is a
15815
+ * surface, not a modal -- place it inside `bs-dialog` or a popover.
15816
+ * Built from `bs-card`, `bs-icon-button`, `bs-input`, `bs-switch`, `bs-shortcut-row` (and so
15817
+ * `bs-key-caps` / `bs-key`).
15818
+ * ## When to use
15819
+ * - A "press ? to see shortcuts" help overlay for an app with many shortcuts.
15820
+ * ## When not to use
15821
+ * - A long-form help page or documentation -- link to it instead.
15822
+ * - A list of commands the user can run from it -- use `bs-menu`.
15823
+ * @prop --bs-keyboard-shortcuts-width - Panel width and min-width. Defaults to `720px` (Figma).
15824
+ * @prop --bs-keyboard-shortcuts-bg - Panel background. Aliased to `--bs-surface-base`.
15825
+ * @prop --bs-keyboard-shortcuts-radius - Aliased to `--bs-border-radius-150`.
15826
+ * @prop --bs-keyboard-shortcuts-padding - Aliased to `--bs-spacing-200`.
15827
+ * @prop --bs-keyboard-shortcuts-gap - Gap between sections. Aliased to `--bs-spacing-200`.
15828
+ * @prop --bs-keyboard-shortcuts-shadow - Figma elevation level 4 (`0 8px 8px` in `--bs-elevation-higher`, 12% black in light mode and 25% in dark mode).
15829
+ * @prop --bs-keyboard-shortcuts-column-gap - Gap between the two columns. Aliased to `--bs-spacing-600`.
15830
+ * @prop --bs-keyboard-shortcuts-color - Main text colour. Aliased to `--bs-text-default`.
15831
+ * @prop --bs-keyboard-shortcuts-color-secondary - Titles, captions, footer. Aliased to `--bs-text-secondary`.
15832
+ */
15833
+ "bs-keyboard-shortcuts": LocalJSX.IntrinsicElements["bs-keyboard-shortcuts"] & JSXBase.HTMLAttributes<HTMLBsKeyboardShortcutsElement>;
14050
15834
  /**
14051
15835
  * A vertical list of `bs-list-item` rows, optionally single-select.
14052
15836
  * ## When to use
@@ -14430,6 +16214,31 @@ declare module "@stencil/core" {
14430
16214
  * - An on/off setting that takes effect immediately (no explicit form submission) -- use `bs-switch`.
14431
16215
  */
14432
16216
  "bs-radio": LocalJSX.IntrinsicElements["bs-radio"] & JSXBase.HTMLAttributes<HTMLBsRadioElement>;
16217
+ /**
16218
+ * One result or suggestion row of a search dropdown: a leading icon, a primary line, an optional
16219
+ * description line and trailing text. Static, not focusable -- focus stays in the search field and the
16220
+ * parent (`bs-global-search`) marks the highlighted row with `active`.
16221
+ * Standalone it has no role. `bs-global-search` sets `selectionRole="option"` (and an `id`) on its rows,
16222
+ * the same pattern as `bs-list-item` and `bs-shortcut-row`.
16223
+ * ## When to use
16224
+ * - A suggestion, recent search or result inside `bs-global-search`.
16225
+ * ## When not to use
16226
+ * - A row in a generic list -- use `bs-list-item`.
16227
+ * - A command in a popup menu -- use `bs-menu-item`.
16228
+ * @prop --bs-search-item-min-height - Aliased to `--bs-spacing-600` (48px).
16229
+ * @prop --bs-search-item-padding-y - Aliased to `--bs-spacing-100`.
16230
+ * @prop --bs-search-item-padding-x - Aliased to `--bs-spacing-150`.
16231
+ * @prop --bs-search-item-gap - Aliased to `--bs-spacing-100`.
16232
+ * @prop --bs-search-item-radius - Aliased to `--bs-border-radius-100`.
16233
+ * @prop --bs-search-item-bg - Resting background. `transparent`.
16234
+ * @prop --bs-search-item-bg-active - Active (highlighted) and hover background. Aliased to `--bs-surface-hover`.
16235
+ * @prop --bs-search-item-bg-pressed - Aliased to `--bs-surface-pressed`.
16236
+ * @prop --bs-search-item-color - Primary text. Aliased to `--bs-text-default`.
16237
+ * @prop --bs-search-item-color-muted - Description and trailing text. Aliased to `--bs-text-muted`.
16238
+ * @prop --bs-search-item-color-disabled - Aliased to `--bs-text-on-disabled`.
16239
+ * @prop --bs-search-item-icon-color - Aliased to `--bs-icon-default`.
16240
+ */
16241
+ "bs-search-item": LocalJSX.IntrinsicElements["bs-search-item"] & JSXBase.HTMLAttributes<HTMLBsSearchItemElement>;
14433
16242
  /**
14434
16243
  * The three moments around an expiring session, as one card. Matches the Figma "Session timeout"
14435
16244
  * component's three types:
@@ -14457,6 +16266,23 @@ declare module "@stencil/core" {
14457
16266
  * (`bs-dialog`) if the warning must trap focus.
14458
16267
  */
14459
16268
  "bs-session-timeout": LocalJSX.IntrinsicElements["bs-session-timeout"] & JSXBase.HTMLAttributes<HTMLBsSessionTimeoutElement>;
16269
+ /**
16270
+ * One row of a shortcut list: an action label on the left and its keyboard shortcut on the right.
16271
+ * Static information, not interactive. Standalone it has no role; `bs-keyboard-shortcuts` sets
16272
+ * `selectionRole="listitem"` on its rows (same pattern as `bs-list-item`).
16273
+ * Built from `bs-key-caps` (and so `bs-key`).
16274
+ * ## When to use
16275
+ * - A line in a keyboard-shortcut reference, usually inside `bs-keyboard-shortcuts`.
16276
+ * ## When not to use
16277
+ * - A clickable command or menu entry -- use `bs-menu-item` (which has its own shortcut slot).
16278
+ * @prop --bs-shortcut-row-height - Row height. Defaults to `36px` (Figma).
16279
+ * @prop --bs-shortcut-row-padding-x - Horizontal padding. Aliased to `--bs-spacing-100`.
16280
+ * @prop --bs-shortcut-row-gap - Gap between label and keys. Aliased to `--bs-spacing-100`.
16281
+ * @prop --bs-shortcut-row-radius - Corner radius. Aliased to `--bs-border-radius-75`.
16282
+ * @prop --bs-shortcut-row-color - Label colour. Aliased to `--bs-text-default`.
16283
+ * @prop --bs-shortcut-row-color-disabled - Label colour while `disabled`. Aliased to `--bs-text-on-disabled`.
16284
+ */
16285
+ "bs-shortcut-row": LocalJSX.IntrinsicElements["bs-shortcut-row"] & JSXBase.HTMLAttributes<HTMLBsShortcutRowElement>;
14460
16286
  /**
14461
16287
  * A generic slide-in panel (drawer) anchored to the start or end edge, for history, filters, FAQ
14462
16288
  * and similar secondary content. Closes via its close button or Escape and emits `bsClose`.