@sableui/react 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +315 -0
  3. package/CONTRIBUTING.md +16 -10
  4. package/DESIGN.md +3 -3
  5. package/README.md +3 -3
  6. package/bin/sable-lint.mjs +18 -0
  7. package/bin/sable.mjs +470 -62
  8. package/dist/blocks/api-keys-block.js +44 -0
  9. package/dist/blocks/api-keys-block.meta.js +21 -0
  10. package/dist/blocks/chat-thread-block.js +17 -0
  11. package/dist/blocks/chat-thread-block.meta.js +20 -0
  12. package/dist/blocks/command-palette-block.js +24 -0
  13. package/dist/blocks/command-palette-block.meta.js +21 -0
  14. package/dist/blocks/cta-band-block.js +27 -0
  15. package/dist/blocks/cta-band-block.meta.js +20 -0
  16. package/dist/blocks/danger-zone-block.js +39 -0
  17. package/dist/blocks/danger-zone-block.meta.js +21 -0
  18. package/dist/blocks/device-comparison-block.js +69 -0
  19. package/dist/blocks/device-comparison-block.meta.js +21 -0
  20. package/dist/blocks/event-card-block.js +40 -0
  21. package/dist/blocks/event-card-block.meta.js +21 -0
  22. package/dist/blocks/faq-block.js +38 -0
  23. package/dist/blocks/faq-block.meta.js +20 -0
  24. package/dist/blocks/feature-grid-block.js +38 -0
  25. package/dist/blocks/feature-grid-block.meta.js +21 -0
  26. package/dist/blocks/feedback-form-block.js +30 -0
  27. package/dist/blocks/feedback-form-block.meta.js +21 -0
  28. package/dist/blocks/goal-progress-block.js +24 -0
  29. package/dist/blocks/goal-progress-block.meta.js +21 -0
  30. package/dist/blocks/hero-block.js +33 -0
  31. package/dist/blocks/hero-block.meta.js +21 -0
  32. package/dist/blocks/index.js +162 -1964
  33. package/dist/blocks/invite-team-block.js +36 -0
  34. package/dist/blocks/invite-team-block.meta.js +20 -0
  35. package/dist/blocks/invoice-history-block.js +41 -0
  36. package/dist/blocks/invoice-history-block.meta.js +21 -0
  37. package/dist/blocks/kpi-sparkline-block.js +29 -0
  38. package/dist/blocks/kpi-sparkline-block.meta.js +20 -0
  39. package/dist/blocks/media-player-block.js +68 -0
  40. package/dist/blocks/media-player-block.meta.js +21 -0
  41. package/dist/blocks/newsletter-block.js +35 -0
  42. package/dist/blocks/newsletter-block.meta.js +21 -0
  43. package/dist/blocks/not-found-block.js +27 -0
  44. package/dist/blocks/not-found-block.meta.js +20 -0
  45. package/dist/blocks/notification-list-block.js +32 -0
  46. package/dist/blocks/notification-list-block.meta.js +21 -0
  47. package/dist/blocks/notification-settings-block.js +25 -0
  48. package/dist/blocks/notification-settings-block.meta.js +20 -0
  49. package/dist/blocks/order-tracking-block.js +26 -0
  50. package/dist/blocks/order-tracking-block.meta.js +20 -0
  51. package/dist/blocks/pricing-card-block.js +46 -0
  52. package/dist/blocks/pricing-card-block.meta.js +21 -0
  53. package/dist/blocks/pricing-table-block.js +88 -0
  54. package/dist/blocks/pricing-table-block.meta.js +20 -0
  55. package/dist/blocks/product-card-block.js +26 -0
  56. package/dist/blocks/product-card-block.meta.js +21 -0
  57. package/dist/blocks/profile-card-block.js +58 -0
  58. package/dist/blocks/profile-card-block.meta.js +21 -0
  59. package/dist/blocks/profile-form-block.js +70 -0
  60. package/dist/blocks/profile-form-block.meta.js +21 -0
  61. package/dist/blocks/revenue-breakdown-block.js +38 -0
  62. package/dist/blocks/revenue-breakdown-block.meta.js +21 -0
  63. package/dist/blocks/sign-in-block.js +38 -0
  64. package/dist/blocks/sign-in-block.meta.js +21 -0
  65. package/dist/blocks/sign-up-block.js +48 -0
  66. package/dist/blocks/sign-up-block.meta.js +21 -0
  67. package/dist/blocks/site-footer-block.js +54 -0
  68. package/dist/blocks/site-footer-block.meta.js +20 -0
  69. package/dist/blocks/stat-row-block.js +28 -0
  70. package/dist/blocks/stat-row-block.meta.js +21 -0
  71. package/dist/blocks/steps-block.js +37 -0
  72. package/dist/blocks/steps-block.meta.js +20 -0
  73. package/dist/blocks/task-list-block.js +52 -0
  74. package/dist/blocks/task-list-block.meta.js +21 -0
  75. package/dist/blocks/team-members-block.js +49 -0
  76. package/dist/blocks/team-members-block.meta.js +21 -0
  77. package/dist/blocks/testimonial-block.js +49 -0
  78. package/dist/blocks/testimonial-block.meta.js +20 -0
  79. package/dist/blocks/traffic-sources-block.js +39 -0
  80. package/dist/blocks/traffic-sources-block.meta.js +21 -0
  81. package/dist/blocks/traffic-trend-block.js +61 -0
  82. package/dist/blocks/traffic-trend-block.meta.js +21 -0
  83. package/dist/blocks/upload-list-block.js +39 -0
  84. package/dist/blocks/upload-list-block.meta.js +21 -0
  85. package/dist/blocks/verify-code-block.js +28 -0
  86. package/dist/blocks/verify-code-block.meta.js +21 -0
  87. package/dist/blocks/wallet-block.js +48 -0
  88. package/dist/blocks/wallet-block.meta.js +21 -0
  89. package/dist/components/accordion/accordion.js +63 -0
  90. package/dist/components/accordion/accordion.meta.js +155 -0
  91. package/dist/components/accordion/index.js +15 -0
  92. package/dist/components/app-header/app-header.js +30 -0
  93. package/dist/components/app-header/app-header.meta.js +88 -0
  94. package/dist/components/app-header/index.js +7 -0
  95. package/dist/components/app-shell/app-shell-dock.js +37 -0
  96. package/dist/components/app-shell/app-shell.js +67 -0
  97. package/dist/components/app-shell/app-shell.meta.js +176 -0
  98. package/dist/components/app-shell/index.js +7 -0
  99. package/dist/components/area-chart/area-chart.js +10 -0
  100. package/dist/components/area-chart/area-chart.meta.js +218 -0
  101. package/dist/components/area-chart/index.js +7 -0
  102. package/dist/components/attachment/attachment.js +176 -0
  103. package/dist/components/attachment/attachment.meta.js +179 -0
  104. package/dist/components/attachment/attachment.variants.js +47 -0
  105. package/dist/components/attachment/index.js +7 -0
  106. package/dist/components/avatar/avatar.js +192 -0
  107. package/dist/components/avatar/avatar.meta.js +233 -0
  108. package/dist/components/avatar/avatar.variants.js +44 -0
  109. package/dist/components/avatar/index.js +22 -0
  110. package/dist/components/badge/badge.js +26 -0
  111. package/dist/components/badge/badge.meta.js +171 -0
  112. package/dist/components/badge/badge.variants.js +103 -0
  113. package/dist/components/badge/index.js +11 -0
  114. package/dist/components/banner/banner.js +76 -0
  115. package/dist/components/banner/banner.meta.js +172 -0
  116. package/dist/components/banner/banner.variants.js +44 -0
  117. package/dist/components/banner/index.js +9 -0
  118. package/dist/components/bar-chart/bar-chart.js +10 -0
  119. package/dist/components/bar-chart/bar-chart.meta.js +245 -0
  120. package/dist/components/bar-chart/index.js +7 -0
  121. package/dist/components/bottom-nav/bottom-nav.js +63 -0
  122. package/dist/components/bottom-nav/bottom-nav.meta.js +95 -0
  123. package/dist/components/bottom-nav/index.js +11 -0
  124. package/dist/components/breadcrumbs/breadcrumbs.js +90 -0
  125. package/dist/components/breadcrumbs/breadcrumbs.meta.js +111 -0
  126. package/dist/components/breadcrumbs/index.js +17 -0
  127. package/dist/components/browser/browser.js +39 -0
  128. package/dist/components/browser/browser.meta.js +80 -0
  129. package/dist/components/browser/index.js +7 -0
  130. package/dist/components/bubble/bubble.js +110 -0
  131. package/dist/components/bubble/bubble.meta.js +158 -0
  132. package/dist/components/bubble/bubble.variants.js +90 -0
  133. package/dist/components/bubble/index.js +13 -0
  134. package/dist/components/button/button.js +87 -0
  135. package/dist/components/button/button.meta.js +302 -0
  136. package/dist/components/button/button.variants.js +137 -0
  137. package/dist/components/button/index.js +9 -0
  138. package/dist/components/calendar/calendar.js +89 -0
  139. package/dist/components/calendar/calendar.meta.js +136 -0
  140. package/dist/components/calendar/index.js +7 -0
  141. package/dist/components/card/card.js +203 -0
  142. package/dist/components/card/card.meta.js +212 -0
  143. package/dist/components/card/index.js +23 -0
  144. package/dist/components/carousel/carousel.js +428 -0
  145. package/dist/components/carousel/carousel.meta.js +100 -0
  146. package/dist/components/carousel/index.js +7 -0
  147. package/dist/components/chat-composer/chat-composer.js +174 -0
  148. package/dist/components/chat-composer/chat-composer.meta.js +241 -0
  149. package/dist/components/chat-composer/chat-composer.variants.js +17 -0
  150. package/dist/components/chat-composer/index.js +7 -0
  151. package/dist/components/checkbox/checkbox-mark.js +28 -0
  152. package/dist/components/checkbox/checkbox.js +30 -0
  153. package/dist/components/checkbox/checkbox.meta.js +127 -0
  154. package/dist/components/checkbox/index.js +7 -0
  155. package/dist/components/checkbox-card/checkbox-card.js +94 -0
  156. package/dist/components/checkbox-card/checkbox-card.meta.js +154 -0
  157. package/dist/components/checkbox-card/checkbox-card.variants.js +43 -0
  158. package/dist/components/checkbox-card/index.js +11 -0
  159. package/dist/components/code/code.js +19 -0
  160. package/dist/components/code/code.meta.js +71 -0
  161. package/dist/components/code/index.js +7 -0
  162. package/dist/components/code-block/code-block.js +84 -0
  163. package/dist/components/code-block/code-block.meta.js +103 -0
  164. package/dist/components/code-block/index.js +8 -0
  165. package/dist/components/collapsible/collapsible.js +38 -0
  166. package/dist/components/collapsible/collapsible.meta.js +117 -0
  167. package/dist/components/collapsible/index.js +15 -0
  168. package/dist/components/color-field/color-field.js +293 -0
  169. package/dist/components/color-field/color-field.meta.js +142 -0
  170. package/dist/components/color-field/color.js +69 -0
  171. package/dist/components/color-field/index.js +15 -0
  172. package/dist/components/combobox/combobox.js +486 -0
  173. package/dist/components/combobox/combobox.meta.js +217 -0
  174. package/dist/components/combobox/index.js +37 -0
  175. package/dist/components/command-menu/command-menu-trigger.js +122 -0
  176. package/dist/components/command-menu/command-menu.js +433 -0
  177. package/dist/components/command-menu/command-menu.meta.js +279 -0
  178. package/dist/components/command-menu/index.js +21 -0
  179. package/dist/components/context-card/context-card.js +62 -0
  180. package/dist/components/context-card/context-card.meta.js +106 -0
  181. package/dist/components/context-card/index.js +17 -0
  182. package/dist/components/context-menu/context-menu.js +92 -0
  183. package/dist/components/context-menu/context-menu.meta.js +138 -0
  184. package/dist/components/context-menu/index.js +23 -0
  185. package/dist/components/data-table/data-table.js +142 -0
  186. package/dist/components/data-table/data-table.meta.js +146 -0
  187. package/dist/components/data-table/index.js +9 -0
  188. package/dist/components/date-picker/date-picker.js +196 -0
  189. package/dist/components/date-picker/date-picker.meta.js +164 -0
  190. package/dist/components/date-picker/index.js +7 -0
  191. package/dist/components/date-tile/date-tile.js +29 -0
  192. package/dist/components/date-tile/date-tile.meta.js +72 -0
  193. package/dist/components/date-tile/index.js +7 -0
  194. package/dist/components/destructive-action-modal/destructive-action-modal.js +130 -0
  195. package/dist/components/destructive-action-modal/destructive-action-modal.meta.js +136 -0
  196. package/dist/components/destructive-action-modal/index.js +9 -0
  197. package/dist/components/dialog/dialog.js +207 -0
  198. package/dist/components/dialog/dialog.meta.js +239 -0
  199. package/dist/components/dialog/index.js +45 -0
  200. package/dist/components/disclosure-picker/disclosure-picker.js +417 -0
  201. package/dist/components/disclosure-picker/disclosure-picker.meta.js +213 -0
  202. package/dist/components/disclosure-picker/index.js +21 -0
  203. package/dist/components/empty-state/empty-state.js +52 -0
  204. package/dist/components/empty-state/empty-state.meta.js +158 -0
  205. package/dist/components/empty-state/index.js +7 -0
  206. package/dist/components/entity/entity.js +70 -0
  207. package/dist/components/entity/entity.meta.js +108 -0
  208. package/dist/components/entity/entity.variants.js +16 -0
  209. package/dist/components/entity/index.js +7 -0
  210. package/dist/components/feedback/feedback.js +93 -0
  211. package/dist/components/feedback/feedback.meta.js +109 -0
  212. package/dist/components/feedback/index.js +7 -0
  213. package/dist/components/fieldset/fieldset.js +80 -0
  214. package/dist/components/fieldset/fieldset.meta.js +160 -0
  215. package/dist/components/fieldset/index.js +17 -0
  216. package/dist/components/file-dropzone/file-dropzone.js +193 -0
  217. package/dist/components/file-dropzone/file-dropzone.meta.js +210 -0
  218. package/dist/components/file-dropzone/file-dropzone.variants.js +26 -0
  219. package/dist/components/file-dropzone/index.js +13 -0
  220. package/dist/components/font-picker/font-picker.js +77 -0
  221. package/dist/components/font-picker/font-picker.meta.js +119 -0
  222. package/dist/components/font-picker/index.js +7 -0
  223. package/dist/components/form/form.js +145 -0
  224. package/dist/components/form/form.meta.js +142 -0
  225. package/dist/components/form/index.js +11 -0
  226. package/dist/components/gliding-highlight/gliding-highlight.js +50 -0
  227. package/dist/components/gliding-highlight/gliding-highlight.meta.js +135 -0
  228. package/dist/components/gliding-highlight/index.js +9 -0
  229. package/dist/components/gradient-art/gradient-art.js +168 -0
  230. package/dist/components/gradient-art/gradient-art.meta.js +81 -0
  231. package/dist/components/gradient-art/index.js +7 -0
  232. package/dist/components/gradient-art/renderer.js +336 -0
  233. package/dist/components/inline-status/index.js +7 -0
  234. package/dist/components/inline-status/inline-status.js +33 -0
  235. package/dist/components/inline-status/inline-status.meta.js +83 -0
  236. package/dist/components/inline-status/inline-status.variants.js +18 -0
  237. package/dist/components/input/index.js +7 -0
  238. package/dist/components/input/input.js +33 -0
  239. package/dist/components/input/input.meta.js +155 -0
  240. package/dist/components/kbd/index.js +8 -0
  241. package/dist/components/kbd/kbd.js +54 -0
  242. package/dist/components/kbd/kbd.meta.js +95 -0
  243. package/dist/components/label/index.js +7 -0
  244. package/dist/components/label/label.js +51 -0
  245. package/dist/components/label/label.meta.js +98 -0
  246. package/dist/components/line-chart/index.js +7 -0
  247. package/dist/components/line-chart/line-chart.js +10 -0
  248. package/dist/components/line-chart/line-chart.meta.js +222 -0
  249. package/dist/components/marker/index.js +7 -0
  250. package/dist/components/marker/marker.js +39 -0
  251. package/dist/components/marker/marker.meta.js +132 -0
  252. package/dist/components/marker/marker.variants.js +25 -0
  253. package/dist/components/marquee/index.js +7 -0
  254. package/dist/components/marquee/marquee.js +146 -0
  255. package/dist/components/marquee/marquee.meta.js +106 -0
  256. package/dist/components/media-image/index.js +7 -0
  257. package/dist/components/media-image/media-image.js +56 -0
  258. package/dist/components/media-image/media-image.meta.js +92 -0
  259. package/dist/components/media-tile/index.js +7 -0
  260. package/dist/components/media-tile/media-tile.js +135 -0
  261. package/dist/components/media-tile/media-tile.meta.js +133 -0
  262. package/dist/components/media-tile/media-tile.variants.js +48 -0
  263. package/dist/components/menu/index.js +33 -0
  264. package/dist/components/menu/menu.js +168 -0
  265. package/dist/components/menu/menu.meta.js +176 -0
  266. package/dist/components/message/index.js +7 -0
  267. package/dist/components/message/message.js +83 -0
  268. package/dist/components/message/message.meta.js +150 -0
  269. package/dist/components/message/message.variants.js +41 -0
  270. package/dist/components/message-scroller/index.js +9 -0
  271. package/dist/components/message-scroller/message-scroller.js +300 -0
  272. package/dist/components/message-scroller/message-scroller.meta.js +172 -0
  273. package/dist/components/meter/index.js +20 -0
  274. package/dist/components/meter/meter.js +112 -0
  275. package/dist/components/meter/meter.meta.js +227 -0
  276. package/dist/components/meter/meter.variants.js +61 -0
  277. package/dist/components/middle-truncate/index.js +7 -0
  278. package/dist/components/middle-truncate/middle-truncate.js +28 -0
  279. package/dist/components/middle-truncate/middle-truncate.meta.js +77 -0
  280. package/dist/components/note/index.js +9 -0
  281. package/dist/components/note/note.js +73 -0
  282. package/dist/components/note/note.meta.js +112 -0
  283. package/dist/components/note/note.variants.js +22 -0
  284. package/dist/components/notification-badge/index.js +15 -0
  285. package/dist/components/notification-badge/notification-badge.js +48 -0
  286. package/dist/components/notification-badge/notification-badge.meta.js +107 -0
  287. package/dist/components/notification-badge/notification-badge.variants.js +57 -0
  288. package/dist/components/number-field/index.js +7 -0
  289. package/dist/components/number-field/number-field.js +70 -0
  290. package/dist/components/number-field/number-field.meta.js +109 -0
  291. package/dist/components/otp-field/index.js +7 -0
  292. package/dist/components/otp-field/otp-field.js +70 -0
  293. package/dist/components/otp-field/otp-field.meta.js +197 -0
  294. package/dist/components/overflow-menu/index.js +7 -0
  295. package/dist/components/overflow-menu/overflow-menu.js +26 -0
  296. package/dist/components/overflow-menu/overflow-menu.meta.js +100 -0
  297. package/dist/components/page-header/index.js +7 -0
  298. package/dist/components/page-header/page-header.js +34 -0
  299. package/dist/components/page-header/page-header.meta.js +104 -0
  300. package/dist/components/page-loader/index.js +7 -0
  301. package/dist/components/page-loader/page-loader.js +37 -0
  302. package/dist/components/page-loader/page-loader.meta.js +85 -0
  303. package/dist/components/pagination/index.js +7 -0
  304. package/dist/components/pagination/pagination.js +105 -0
  305. package/dist/components/pagination/pagination.meta.js +141 -0
  306. package/dist/components/panel-group/index.js +10 -0
  307. package/dist/components/panel-group/panel-group.js +168 -0
  308. package/dist/components/panel-group/panel-group.meta.js +153 -0
  309. package/dist/components/panel-section/index.js +9 -0
  310. package/dist/components/panel-section/panel-section.js +115 -0
  311. package/dist/components/panel-section/panel-section.meta.js +156 -0
  312. package/dist/components/phone/index.js +7 -0
  313. package/dist/components/phone/phone.js +50 -0
  314. package/dist/{chunk-KFZ43RKU.js → components/phone/phone.meta.js} +3 -50
  315. package/dist/{chunk-NEQNXI2G.js → components/phone/status-icons.js} +4 -4
  316. package/dist/components/pie-chart/index.js +7 -0
  317. package/dist/components/pie-chart/pie-chart.js +191 -0
  318. package/dist/components/pie-chart/pie-chart.meta.js +210 -0
  319. package/dist/components/pill/index.js +9 -0
  320. package/dist/components/pill/pill.js +24 -0
  321. package/dist/components/pill/pill.meta.js +108 -0
  322. package/dist/components/pill/pill.variants.js +65 -0
  323. package/dist/components/popover/index.js +23 -0
  324. package/dist/components/popover/popover.js +100 -0
  325. package/dist/components/popover/popover.meta.js +136 -0
  326. package/dist/components/progress/index.js +19 -0
  327. package/dist/components/progress/progress.js +70 -0
  328. package/dist/components/progress/progress.meta.js +171 -0
  329. package/dist/components/progress/progress.variants.js +17 -0
  330. package/dist/components/radar-chart/index.js +7 -0
  331. package/dist/components/radar-chart/radar-chart.js +161 -0
  332. package/dist/components/radar-chart/radar-chart.meta.js +204 -0
  333. package/dist/components/radial-chart/index.js +7 -0
  334. package/dist/components/radial-chart/radial-chart.js +175 -0
  335. package/dist/components/radial-chart/radial-chart.meta.js +216 -0
  336. package/dist/components/radio/index.js +8 -0
  337. package/dist/components/radio/radio.js +39 -0
  338. package/dist/components/radio/radio.meta.js +104 -0
  339. package/dist/components/radio-card/index.js +7 -0
  340. package/dist/components/radio-card/radio-card.js +81 -0
  341. package/dist/components/radio-card/radio-card.meta.js +144 -0
  342. package/dist/components/radio-card/radio-card.variants.js +43 -0
  343. package/dist/components/relative-time/index.js +7 -0
  344. package/dist/components/relative-time/relative-time.js +47 -0
  345. package/dist/components/relative-time/relative-time.meta.js +77 -0
  346. package/dist/components/scroller/index.js +7 -0
  347. package/dist/components/scroller/scroller.js +111 -0
  348. package/dist/components/scroller/scroller.meta.js +118 -0
  349. package/dist/components/scrub-field/index.js +7 -0
  350. package/dist/components/scrub-field/scrub-field.js +124 -0
  351. package/dist/components/scrub-field/scrub-field.meta.js +139 -0
  352. package/dist/components/search-input/index.js +7 -0
  353. package/dist/components/search-input/search-input.js +91 -0
  354. package/dist/components/search-input/search-input.meta.js +129 -0
  355. package/dist/components/section-header/index.js +7 -0
  356. package/dist/components/section-header/section-header.js +39 -0
  357. package/dist/components/section-header/section-header.meta.js +174 -0
  358. package/dist/components/segmented-bar/index.js +14 -0
  359. package/dist/components/segmented-bar/segmented-bar.js +26 -0
  360. package/dist/components/segmented-bar/segmented-bar.meta.js +108 -0
  361. package/dist/components/segmented-bar/segmented-bar.variants.js +39 -0
  362. package/dist/components/select/index.js +25 -0
  363. package/dist/components/select/select.js +191 -0
  364. package/dist/components/select/select.meta.js +189 -0
  365. package/dist/components/separator/index.js +7 -0
  366. package/dist/components/separator/separator.js +42 -0
  367. package/dist/components/separator/separator.meta.js +84 -0
  368. package/dist/components/settings-menu/index.js +11 -0
  369. package/dist/components/settings-menu/settings-menu.js +101 -0
  370. package/dist/components/settings-menu/settings-menu.meta.js +177 -0
  371. package/dist/components/settings-menu/settings-menu.variants.js +15 -0
  372. package/dist/components/sheet/index.js +29 -0
  373. package/dist/components/sheet/sheet.js +121 -0
  374. package/dist/components/sheet/sheet.meta.js +167 -0
  375. package/dist/components/sheet/sheet.variants.js +21 -0
  376. package/dist/components/show-more/index.js +7 -0
  377. package/dist/components/show-more/show-more.js +87 -0
  378. package/dist/components/show-more/show-more.meta.js +79 -0
  379. package/dist/components/side-nav/index.js +13 -0
  380. package/dist/components/side-nav/side-nav.js +75 -0
  381. package/dist/components/side-nav/side-nav.meta.js +139 -0
  382. package/dist/components/side-nav/side-nav.variants.js +34 -0
  383. package/dist/components/sidebar/index.js +21 -0
  384. package/dist/components/sidebar/sidebar.js +196 -0
  385. package/dist/components/sidebar/sidebar.meta.js +118 -0
  386. package/dist/components/skeleton/index.js +7 -0
  387. package/dist/components/skeleton/skeleton.js +16 -0
  388. package/dist/components/skeleton/skeleton.meta.js +90 -0
  389. package/dist/components/slider/index.js +21 -0
  390. package/dist/components/slider/slider.js +115 -0
  391. package/dist/components/slider/slider.meta.js +214 -0
  392. package/dist/components/sparkline/index.js +7 -0
  393. package/dist/components/sparkline/sparkline.js +84 -0
  394. package/dist/components/sparkline/sparkline.meta.js +147 -0
  395. package/dist/components/spinner/index.js +7 -0
  396. package/dist/components/spinner/spinner.js +59 -0
  397. package/dist/components/spinner/spinner.meta.js +118 -0
  398. package/dist/components/status-bar/index.js +9 -0
  399. package/dist/components/status-bar/status-bar.js +40 -0
  400. package/dist/components/status-bar/status-bar.meta.js +117 -0
  401. package/dist/components/status-dot/index.js +9 -0
  402. package/dist/components/status-dot/status-dot.js +40 -0
  403. package/dist/components/status-dot/status-dot.meta.js +113 -0
  404. package/dist/components/status-dot/status-dot.variants.js +28 -0
  405. package/dist/components/stepper/index.js +17 -0
  406. package/dist/components/stepper/stepper.js +161 -0
  407. package/dist/components/stepper/stepper.meta.js +190 -0
  408. package/dist/components/stepper/stepper.variants.js +72 -0
  409. package/dist/components/streaming-text/index.js +7 -0
  410. package/dist/components/streaming-text/streaming-text.js +55 -0
  411. package/dist/components/streaming-text/streaming-text.meta.js +147 -0
  412. package/dist/components/switch/index.js +7 -0
  413. package/dist/components/switch/switch.js +26 -0
  414. package/dist/components/switch/switch.meta.js +133 -0
  415. package/dist/components/table/index.js +23 -0
  416. package/dist/components/table/table.js +117 -0
  417. package/dist/components/table/table.meta.js +143 -0
  418. package/dist/components/tabs/index.js +17 -0
  419. package/dist/components/tabs/tabs.js +58 -0
  420. package/dist/components/tabs/tabs.meta.js +120 -0
  421. package/dist/components/textarea/index.js +7 -0
  422. package/dist/components/textarea/textarea.js +38 -0
  423. package/dist/components/textarea/textarea.meta.js +117 -0
  424. package/dist/components/theme-selector/index.js +11 -0
  425. package/dist/components/theme-selector/theme-selector.js +145 -0
  426. package/dist/components/theme-selector/theme-selector.meta.js +181 -0
  427. package/dist/components/theme-switcher/index.js +7 -0
  428. package/dist/components/theme-switcher/theme-switcher.js +106 -0
  429. package/dist/components/theme-switcher/theme-switcher.meta.js +99 -0
  430. package/dist/components/thinking-orb/index.js +9 -0
  431. package/dist/components/thinking-orb/thinking-orb.js +126 -0
  432. package/dist/components/thinking-orb/thinking-orb.meta.js +142 -0
  433. package/dist/components/thinking-orb/thinking-orb.render.js +252 -0
  434. package/dist/components/toast/index.js +29 -0
  435. package/dist/components/toast/toast.js +254 -0
  436. package/dist/components/toast/toast.meta.js +261 -0
  437. package/dist/components/toggle/index.js +13 -0
  438. package/dist/components/toggle/toggle.js +51 -0
  439. package/dist/components/toggle/toggle.meta.js +129 -0
  440. package/dist/components/toolbar/index.js +27 -0
  441. package/dist/components/toolbar/toolbar.js +80 -0
  442. package/dist/components/toolbar/toolbar.meta.js +272 -0
  443. package/dist/components/toolbar/toolbar.variants.js +16 -0
  444. package/dist/components/tooltip/index.js +21 -0
  445. package/dist/components/tooltip/tooltip.js +74 -0
  446. package/dist/components/tooltip/tooltip.meta.js +156 -0
  447. package/dist/components/tree/index.js +12 -0
  448. package/dist/components/tree/tree.js +364 -0
  449. package/dist/components/tree/tree.meta.js +334 -0
  450. package/dist/components/video/index.js +7 -0
  451. package/dist/components/video/video.js +59 -0
  452. package/dist/components/video/video.meta.js +81 -0
  453. package/dist/components/workspace/index.js +9 -0
  454. package/dist/components/workspace/workspace.js +79 -0
  455. package/dist/components/workspace/workspace.meta.js +183 -0
  456. package/dist/foundations/accessibility.js +107 -0
  457. package/dist/foundations/index.js +25 -792
  458. package/dist/foundations/motion.js +135 -0
  459. package/dist/foundations/scrolling.js +62 -0
  460. package/dist/foundations/shape.js +113 -0
  461. package/dist/foundations/spacing.js +121 -0
  462. package/dist/foundations/surfaces.js +107 -0
  463. package/dist/foundations/types.js +0 -0
  464. package/dist/foundations/typography.js +152 -0
  465. package/dist/icon/Icon.js +30 -0
  466. package/dist/icon/IconProvider.js +27 -0
  467. package/dist/icon/compose.js +13 -0
  468. package/dist/icon/index.d.ts +13 -5
  469. package/dist/icon/index.js +13 -2
  470. package/dist/icon/registry.js +0 -0
  471. package/dist/icon-sets/brands.generated.js +123 -0
  472. package/dist/icon-sets/brands.js +10 -123
  473. package/dist/icon-sets/reicon.d.ts +3 -1
  474. package/dist/icon-sets/reicon.js +209 -1
  475. package/dist/index.d.ts +618 -34
  476. package/dist/index.js +211 -11351
  477. package/dist/ios/chrome.js +36 -0
  478. package/dist/ios/index.js +19 -315
  479. package/dist/ios/liquid-glass.js +103 -0
  480. package/dist/ios/native-app.js +46 -0
  481. package/dist/ios/navigation.js +63 -0
  482. package/dist/ios/phone-frame.js +64 -0
  483. package/dist/ios/preview-theme.js +83 -0
  484. package/dist/ios/preview.js +10 -137
  485. package/dist/ios/sheet.js +85 -0
  486. package/dist/ios/theme.js +19 -0
  487. package/dist/layout/AspectBox.js +27 -0
  488. package/dist/layout/Bleed.js +15 -0
  489. package/dist/layout/Center.js +21 -0
  490. package/dist/layout/Columns.js +70 -0
  491. package/dist/layout/Grid.js +50 -0
  492. package/dist/layout/GridOverlay.js +41 -0
  493. package/dist/layout/Page.js +11 -0
  494. package/dist/layout/Region.js +39 -0
  495. package/dist/layout/Row.js +45 -0
  496. package/dist/layout/SafeArea.js +26 -0
  497. package/dist/layout/Spacer.js +9 -0
  498. package/dist/layout/SplitPane.js +55 -0
  499. package/dist/layout/Stack.js +42 -0
  500. package/dist/layout/_responsive.js +16 -0
  501. package/dist/layout/_safeArea.js +18 -0
  502. package/dist/layout/index.d.ts +30 -8
  503. package/dist/layout/index.js +14 -2
  504. package/dist/lib/anchored-scroll.js +7 -0
  505. package/dist/lib/bleed.js +7 -0
  506. package/dist/lib/chart/cartesian.js +365 -0
  507. package/dist/lib/chart/chart-frame.js +163 -0
  508. package/dist/lib/chart/chart-legend.js +13 -0
  509. package/dist/lib/chart/chart-tooltip.js +38 -0
  510. package/dist/lib/chart/format.js +24 -0
  511. package/dist/lib/chart/geometry.js +114 -0
  512. package/dist/lib/chart/motion.js +34 -0
  513. package/dist/lib/chart/scale.js +72 -0
  514. package/dist/lib/chart/types.js +45 -0
  515. package/dist/lib/chart/use-arrival.js +41 -0
  516. package/dist/{chunk-SRQWQUTW.js → lib/cn.js} +5 -5
  517. package/dist/lib/component-guidance.js +215 -0
  518. package/dist/lib/density.js +54 -0
  519. package/dist/lib/field-shell.js +11 -0
  520. package/dist/lib/glyphs.js +9 -0
  521. package/dist/lib/heading-row.js +36 -0
  522. package/dist/lib/highlight-glide.js +84 -0
  523. package/dist/lib/hit-target.js +5 -0
  524. package/dist/lib/meta.js +0 -0
  525. package/dist/lib/portal-theme-scope.js +74 -0
  526. package/dist/{chunk-FKZXAFIY.js → lib/presentation.js} +8 -3
  527. package/dist/lib/refs.js +14 -0
  528. package/dist/lib/scrub-gesture.js +50 -0
  529. package/dist/lib/segmented.js +13 -0
  530. package/dist/lib/selection-card.js +41 -0
  531. package/dist/lib/status-tone.js +13 -0
  532. package/dist/lib/taxonomy.js +214 -0
  533. package/dist/lib/trim-label.js +20 -0
  534. package/dist/lib/use-copy.js +27 -0
  535. package/dist/lib/use-edge-fade.js +32 -0
  536. package/dist/lib/use-isomorphic-layout-effect.js +8 -0
  537. package/dist/lib/use-resize-observer.js +18 -0
  538. package/dist/lib/use-scroll-activity.js +52 -0
  539. package/dist/lib/use-wheel-to-horizontal.js +65 -0
  540. package/dist/motion/MotionProvider.js +75 -0
  541. package/dist/motion/Presence.js +112 -0
  542. package/dist/motion/Reveal.js +42 -0
  543. package/dist/motion/TextReveal.js +61 -0
  544. package/dist/motion/index.js +24 -0
  545. package/dist/motion/useInView.js +36 -0
  546. package/dist/motion/useReducedMotion.js +25 -0
  547. package/dist/motion/viewTransition.js +47 -0
  548. package/dist/patterns/auth-page.js +90 -0
  549. package/dist/patterns/auth-page.meta.js +27 -0
  550. package/dist/patterns/brand-landing-page.js +341 -0
  551. package/dist/patterns/brand-landing-page.meta.js +28 -0
  552. package/dist/patterns/chat-panel.js +185 -0
  553. package/dist/patterns/chat-panel.meta.js +31 -0
  554. package/dist/patterns/dashboard-page.js +332 -0
  555. package/dist/patterns/dashboard-page.meta.js +29 -0
  556. package/dist/patterns/feed-page.js +205 -0
  557. package/dist/patterns/feed-page.meta.js +25 -0
  558. package/dist/patterns/index.js +34 -2140
  559. package/dist/patterns/landing-page.js +356 -0
  560. package/dist/patterns/landing-page.meta.js +26 -0
  561. package/dist/patterns/list-detail-page.js +373 -0
  562. package/dist/patterns/list-detail-page.meta.js +24 -0
  563. package/dist/patterns/settings-page.js +268 -0
  564. package/dist/patterns/settings-page.meta.js +27 -0
  565. package/dist/presets/index.d.ts +7 -1
  566. package/dist/presets/index.js +53 -185
  567. package/dist/styles.css +118 -3
  568. package/dist/{theme-provider-kQszHYji.d.ts → theme-provider-S0NVJs2Y.d.ts} +6 -1
  569. package/dist/{chunk-NETUFI34.js → themes/_contract.js} +14 -2
  570. package/dist/themes/atelier/index.js +17 -1
  571. package/dist/themes/contrast.js +288 -0
  572. package/dist/themes/ember/ember.css +6 -6
  573. package/dist/themes/ember/index.js +16 -1
  574. package/dist/themes/index.d.ts +1 -1
  575. package/dist/themes/index.js +3 -8
  576. package/dist/themes/meridian/index.js +16 -1
  577. package/dist/themes/poppy/index.js +17 -1
  578. package/dist/themes/prism/index.js +17 -1
  579. package/dist/themes/prism/prism.css +2 -2
  580. package/dist/themes/registry.js +59 -0
  581. package/dist/themes/sable/index.js +16 -1
  582. package/dist/{chunk-EFLC4NA3.js → themes/theme-provider.js} +38 -54
  583. package/dist/themes/verdant/index.js +17 -1
  584. package/llms/blocks/media-player-block.md +20 -7
  585. package/llms/blocks/product-card-block.md +6 -4
  586. package/llms/blocks/task-list-block.md +1 -1
  587. package/llms/blocks/traffic-sources-block.md +1 -1
  588. package/llms/blocks/traffic-trend-block.md +5 -3
  589. package/llms/blocks/verify-code-block.md +1 -1
  590. package/llms/components/app-shell.md +5 -2
  591. package/llms/components/avatar.md +25 -3
  592. package/llms/components/button.md +20 -1
  593. package/llms/components/card.md +1 -1
  594. package/llms/components/disclosure-picker.md +168 -0
  595. package/llms/components/font-picker.md +104 -0
  596. package/llms/components/media-image.md +98 -0
  597. package/llms/components/media-tile.md +143 -0
  598. package/llms/components/page-header.md +6 -5
  599. package/llms/components/pie-chart.md +2 -2
  600. package/llms/components/radial-chart.md +1 -1
  601. package/llms/components/section-header.md +144 -0
  602. package/llms/components/sheet.md +10 -0
  603. package/llms/components/sidebar.md +4 -3
  604. package/llms/components/slider.md +14 -2
  605. package/llms/components/theme-selector.md +44 -4
  606. package/llms/components/tree.md +3 -3
  607. package/llms/layout/grid.md +24 -3
  608. package/llms/layout/region.md +16 -3
  609. package/llms/patterns/dashboard-page.md +3 -6
  610. package/llms/patterns/feed-page.md +4 -4
  611. package/llms/patterns/list-detail-page.md +1 -0
  612. package/llms/patterns/settings-page.md +2 -5
  613. package/llms/reference/utilities.md +84 -4
  614. package/llms/tasks/building-a-page.md +34 -3
  615. package/llms/tasks/converting-an-app.md +14 -4
  616. package/llms/tasks/creating-a-preset.md +4 -1
  617. package/llms/tasks/reviewing-a-design.md +19 -0
  618. package/llms/tasks/using-presets.md +19 -0
  619. package/llms-full.txt +1066 -78
  620. package/llms.txt +26 -9
  621. package/package.json +1 -1
  622. package/registry.json +2342 -164
  623. package/scripts/agent-setup.mjs +90 -0
  624. package/scripts/design-presets.mjs +59 -6
  625. package/scripts/grade.mjs +195 -29
  626. package/scripts/lint-rules.mjs +486 -10
  627. package/scripts/review-evidence.mjs +28 -1
  628. package/skills/sable/SKILL.md +67 -24
  629. package/targets/ios.json +45 -0
  630. package/dist/chunk-3IWZYBGH.js +0 -398
  631. package/dist/chunk-7MG4SHYX.js +0 -15
  632. package/dist/chunk-7QSDYBXO.js +0 -7421
  633. package/dist/chunk-ADLLDWLW.js +0 -15
  634. package/dist/chunk-C4Z3CF54.js +0 -15
  635. package/dist/chunk-EDXLM7YL.js +0 -5078
  636. package/dist/chunk-EHH4MHO6.js +0 -14
  637. package/dist/chunk-K7RUHUGC.js +0 -14
  638. package/dist/chunk-KO3NAEBF.js +0 -15
  639. package/dist/chunk-L4IEIQQA.js +0 -14
  640. package/dist/chunk-QJ6FWTUG.js +0 -40
  641. package/dist/chunk-VVW4UCDI.js +0 -4908
  642. package/dist/chunk-XAZGMY73.js +0 -187
package/dist/index.d.ts CHANGED
@@ -3,11 +3,10 @@ import { C as ComponentMeta } from './meta-CcE_SeFu.js';
3
3
  export { A as AnatomyMeta, a as BestPracticeMeta, E as ExampleMeta, M as MotionMeta, b as MotionSlot, c as PropMeta, R as RelatedMeta, S as SubcomponentMeta, U as UsageMeta } from './meta-CcE_SeFu.js';
4
4
  import { T as ThemeManifest, a as ThemeMode$1 } from './_contract-C2M1SjBf.js';
5
5
  export { A as ART_TOKENS, D as DENSITY_TOKENS, b as DensityToken, M as MOTION_TOKENS, c as MotionToken, R as RADIUS_TOKENS, d as RadiusToken, S as SEMANTIC_TOKENS, e as SemanticToken, f as TYPE_OVERLINE_TOKENS, g as TYPE_REFINEMENT_TOKENS, h as TYPE_SCALE_TOKENS, i as TYPE_UI_TOKENS, j as TypeOverlineToken, k as TypeRefinementToken, l as TypeScaleToken, m as TypeUiToken, W as WORKSPACE_SURFACE_TOKENS, n as WorkspaceSurfaceToken } from './_contract-C2M1SjBf.js';
6
- import { T as ThemeId } from './theme-provider-kQszHYji.js';
7
- export { D as DEFAULT_THEME_ID, S as SABLE_COLOR_STORAGE_KEY, a as SABLE_THEME_ATTRIBUTE, b as SABLE_THEME_STORAGE_KEY, c as SableColorMode, d as SableThemeContextValue, e as SableThemePreference, f as SableThemeProvider, g as SableThemeProviderProps, h as applySableColorMode, i as applySableTheme, k as defaultThemeId, m as getThemeManifest, o as isThemeId, t as themeIds, p as themeManifestById, q as themeManifests, u as useSableTheme } from './theme-provider-kQszHYji.js';
6
+ import { T as ThemeId } from './theme-provider-S0NVJs2Y.js';
7
+ export { D as DEFAULT_THEME_ID, S as SABLE_COLOR_STORAGE_KEY, a as SABLE_THEME_ATTRIBUTE, b as SABLE_THEME_STORAGE_KEY, c as SableColorMode, d as SableThemeContextValue, e as SableThemePreference, f as SableThemeProvider, g as SableThemeProviderProps, h as applySableColorMode, i as applySableTheme, k as defaultThemeId, m as getThemeManifest, o as isThemeId, t as themeIds, p as themeManifestById, q as themeManifests, u as useSableTheme } from './theme-provider-S0NVJs2Y.js';
8
8
  export { AspectBox, AspectBoxProps, Bleed, BleedProps, Breakpoint, Center, CenterProps, Col, ColProps, Columns, ColumnsProps, Grid, GridOverlay, GridOverlayProps, GridProps, Page, PageProps, Region, RegionMax, RegionProps, Responsive, Row, RowProps, SafeArea, SafeAreaProps, Spacer, SpacerProps, SplitPane, SplitPaneProps, Stack, StackProps } from './layout/index.js';
9
9
  export { Icon, IconContextValue, IconProps, IconProvider, IconProviderProps, composeIconSets, useIconSet } from './icon/index.js';
10
- export { reiconIconSet as fallbackIconSet, reiconIconNames, reiconIconSet } from './icon-sets/reicon.js';
11
10
  export { a as IconRenderProps, I as IconSet, b as IconVariant } from './registry-CyL28OzJ.js';
12
11
  import * as react from 'react';
13
12
  import { ReactNode, ComponentPropsWithoutRef, ElementType, ReactElement, Ref, ComponentPropsWithRef, ComponentProps } from 'react';
@@ -383,13 +382,33 @@ interface ButtonProps extends ComponentPropsWithRef<"button">, VariantProps<type
383
382
  * so callers never hand-position one with absolute offsets.
384
383
  */
385
384
  badge?: ReactNode;
385
+ /**
386
+ * Optical alignment for a borderless button: pull the box outward on that
387
+ * inline side by exactly its own padding (`--button-px`, less the icon-side
388
+ * step when an icon sits there; an icon-only size bleeds by its inset to the
389
+ * glyph), so the LABEL lines up with the content edge the row shares — the
390
+ * grid under a SectionHeader, a card's padding. The hit area and the hover
391
+ * and focus fill keep their full size; on hover the fill runs past the edge.
392
+ * Logical sides, so it mirrors in RTL.
393
+ *
394
+ * Only the borderless variants bleed — `ghost`, `link`, `on-color-ghost`.
395
+ * On a variant with a visible edge (primary, secondary, outline, destructive,
396
+ * floating, field, on-color, on-color-outline) it does nothing: a filled
397
+ * button aligns its EDGE, not its label.
398
+ *
399
+ * Left unset, a borderless button bleeds when its container asks —
400
+ * SectionHeader, PageHeader and CardAction align their outermost ghost or
401
+ * link action this way. `none` opts out of that.
402
+ */
403
+ bleed?: ButtonBleed;
386
404
  }
405
+ type ButtonBleed = "start" | "end" | "both" | "none";
387
406
  /**
388
407
  * The primary action primitive. Pill-shaped by default; one `primary` per screen.
389
408
  * Corner radius is theme-driven via `--button-radius` (falls back to full pill) —
390
409
  * see `button.variants.ts`.
391
410
  */
392
- declare function Button({ variant, size, className, render, ref, type, loading, loadingLabel, iconStart, iconEnd, badge, disabled, children, ...props }: ButtonProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
411
+ declare function Button({ variant, size, className, render, ref, type, loading, loadingLabel, iconStart, iconEnd, badge, bleed, disabled, children, ...props }: ButtonProps): react.ReactElement<unknown, string | react.JSXElementConstructor<any>>;
393
412
  declare namespace Button {
394
413
  var displayName: string;
395
414
  }
@@ -425,6 +444,11 @@ declare function CardHeader({ className, ...props }: ComponentPropsWithRef<"div"
425
444
  /**
426
445
  * Header-aligned action slot — pins to the top-right of CardHeader (e.g. an
427
446
  * overflow menu, close button, or switch). Place as a child of CardHeader.
447
+ *
448
+ * A ghost or link Button that ends the slot bleeds by its padding at the end
449
+ * (lib/bleed.ts), so a "View all" label or a "⋯" glyph lines up with the card's
450
+ * content edge instead of sitting one padding inside it. Filled buttons keep
451
+ * their edge on the line.
428
452
  */
429
453
  declare function CardAction({ className, ...props }: ComponentPropsWithRef<"div">): react.JSX.Element;
430
454
  /** Title tier — a UI primitive title, not a document heading. */
@@ -529,7 +553,7 @@ declare const BADGE_APPEARANCES: readonly ["soft", "outline", "solid", "overlay"
529
553
  type BadgeAppearance = (typeof BADGE_APPEARANCES)[number];
530
554
  declare const badgeVariants: (props?: ({
531
555
  appearance?: "overlay" | "outline" | "solid" | "soft" | "plain" | null | undefined;
532
- tone?: "destructive" | "success" | "info" | "warning" | "neutral" | "standard" | "edition" | "collectible" | null | undefined;
556
+ tone?: "destructive" | "success" | "neutral" | "standard" | "warning" | "info" | "edition" | "collectible" | null | undefined;
533
557
  size?: "sm" | "md" | null | undefined;
534
558
  } & class_variance_authority_types.ClassProp) | undefined) => string;
535
559
 
@@ -830,9 +854,9 @@ type OtpNamespace<T> = T extends {
830
854
  } ? Parts : T extends {
831
855
  OTPFieldPreview: infer Parts;
832
856
  } ? Parts : never;
833
- declare const Base: OtpNamespace<typeof OtpParts>;
857
+ type OtpBase = OtpNamespace<typeof OtpParts>;
834
858
 
835
- type BaseRootProps = ComponentProps<typeof Base.Root>;
859
+ type BaseRootProps = ComponentProps<OtpBase["Root"]>;
836
860
  type OtpFieldProps = Omit<BaseRootProps, "className" | "render" | "length" | "children"> & {
837
861
  className?: string;
838
862
  /**
@@ -1191,11 +1215,18 @@ declare const tooltipMeta: ComponentMeta;
1191
1215
  * Avatar root — a circular, fixed-size frame that clips its image. The only axis
1192
1216
  * is `size`, which sets the square footprint; the image and fallback inherit it.
1193
1217
  * `bg-muted` is the resting surface shown behind a loading or missing image.
1194
- * Each size also sets the label tier its initials (and a group's "+N") take,
1195
- * so the initials grow with the circle instead of one 12px label in all three.
1218
+ * Each size also sets the tier its initials (and a group's "+N") take, so the
1219
+ * initials grow with the circle instead of one 12px label at every size. They
1220
+ * hold roughly 30% of the diameter all the way up: the label tiers cover the
1221
+ * row sizes; past them the initials are a mark standing in for a face — type
1222
+ * as image — so the portrait sizes borrow heading-2 (28px in 96) and display-lg
1223
+ * (48px in 160), the tiers built to be read as a shape at that size.
1224
+ *
1225
+ * `xl` and `2xl` are portrait sizes — a profile header, an artist hero, a
1226
+ * roster tile — not row sizes, so AvatarGroup stops at `lg`.
1196
1227
  */
1197
1228
  declare const avatarVariants: (props?: ({
1198
- size?: "sm" | "md" | "lg" | null | undefined;
1229
+ size?: "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
1199
1230
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1200
1231
  /**
1201
1232
  * AvatarGroup — an overlapping stack. Each child is pulled left by about an
@@ -1228,7 +1259,8 @@ declare const avatarGroupVariants: (props?: ({
1228
1259
  type RootProps$4 = Omit<ComponentProps<typeof Avatar$1.Root>, "className"> & VariantProps<typeof avatarVariants> & {
1229
1260
  className?: string;
1230
1261
  };
1231
- type AvatarSize = NonNullable<VariantProps<typeof avatarVariants>["size"]>;
1262
+ /** The row sizes. `xl`/`2xl` are portraits, which are never stacked. */
1263
+ type AvatarGroupSize = NonNullable<VariantProps<typeof avatarGroupVariants>["size"]>;
1232
1264
  /** The circular frame. Clips the image; holds the `size` axis. */
1233
1265
  declare function AvatarRoot({ size, className, ...props }: RootProps$4): react.JSX.Element;
1234
1266
  declare namespace AvatarRoot {
@@ -1305,8 +1337,12 @@ declare namespace AvatarGroupCount {
1305
1337
  var displayName: string;
1306
1338
  }
1307
1339
  interface AvatarGroupProps extends Omit<ComponentProps<"div">, "className"> {
1308
- /** Size of every avatar in the group: 32px / 40px / 48px. Overrides each child's own size. */
1309
- size?: AvatarSize;
1340
+ /**
1341
+ * Size of every avatar in the group: 32px / 40px / 48px. Overrides each
1342
+ * child's own size. The portrait sizes (`xl`, `2xl`) are not offered: a
1343
+ * stack is a row-sized summary of people, never a set of portraits.
1344
+ */
1345
+ size?: AvatarGroupSize;
1310
1346
  /**
1311
1347
  * The surface the group sits on, so the separating ring matches it. Omit to
1312
1348
  * inherit `--avatar-group-ring` from an ancestor (falling back to the page
@@ -1764,7 +1800,7 @@ declare namespace MeterValue {
1764
1800
  * the call site from thresholds you own; the component does not guess them.
1765
1801
  */
1766
1802
  declare const meterIndicatorVariants: (props?: ({
1767
- tone?: "primary" | "destructive" | "success" | "warning" | "standard" | null | undefined;
1803
+ tone?: "primary" | "destructive" | "success" | "standard" | "warning" | null | undefined;
1768
1804
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1769
1805
  /**
1770
1806
  * Bar thickness, per size. Shared with Progress (`progressTrackVariants`): a
@@ -1784,7 +1820,7 @@ declare const meterMeta: ComponentMeta;
1784
1820
  * failed).
1785
1821
  */
1786
1822
  declare const segmentedBarSegmentVariants: (props?: ({
1787
- tone?: "primary" | "destructive" | "success" | "info" | "warning" | "neutral" | "standard" | "edition" | "collectible" | null | undefined;
1823
+ tone?: "primary" | "destructive" | "success" | "neutral" | "standard" | "warning" | "info" | "edition" | "collectible" | null | undefined;
1788
1824
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1789
1825
  /** Bar thickness — the same three rails as Meter and Progress. */
1790
1826
  declare const segmentedBarVariants: (props?: ({
@@ -1890,7 +1926,11 @@ type ChartCategories = Record<string, {
1890
1926
  }>;
1891
1927
  /** A big number with a caption in the middle of a donut or radial chart. */
1892
1928
  interface ChartCenterLabel {
1893
- value: string;
1929
+ /**
1930
+ * The number. Pass a number to have it formatted: in full up to 9,999,
1931
+ * compact from 10,000 ("10.2K"). Pass a string for units or your own wording.
1932
+ */
1933
+ value: string | number;
1894
1934
  label?: string;
1895
1935
  }
1896
1936
  /** How the tooltip marks each row. */
@@ -2817,6 +2857,20 @@ type DescriptionProps$1 = Omit<ComponentProps<typeof Drawer.Description>, "class
2817
2857
  declare function SheetDescription({ className, ...props }: DescriptionProps$1): react.JSX.Element;
2818
2858
  /** Stacked title + description block, pinned to the top of the sheet. */
2819
2859
  declare function SheetHeader({ className, ...props }: ComponentProps<"div">): react.JSX.Element;
2860
+ /**
2861
+ * Rows that run edge to edge in the sheet — Entity rows, most often: a queue,
2862
+ * notifications, a picker. The list bleeds through the sheet's padding and
2863
+ * hands it back to each row (`--entity-px` from `--sheet-p`), so a row's
2864
+ * avatar and text line up with SheetHeader while its hover fill reaches the
2865
+ * panel's edges. Without it, Entity's own inset stacks on the sheet's and the
2866
+ * rows sit 12px in from the header. The Sheet equivalent of CardList.
2867
+ *
2868
+ * <SheetContent>
2869
+ * <SheetHeader><SheetTitle>Up next</SheetTitle></SheetHeader>
2870
+ * <SheetList>{queue.map((t) => <Entity key={t.id} title={t.title} … />)}</SheetList>
2871
+ * </SheetContent>
2872
+ */
2873
+ declare function SheetList({ className, ...props }: ComponentProps<"div">): react.JSX.Element;
2820
2874
  /**
2821
2875
  * Action row, pushed to the bottom edge of the sheet via mt-auto. In a bottom
2822
2876
  * sheet it stacks: full width, the primary (last, on a page) on top, capped at
@@ -2847,7 +2901,18 @@ declare function TableFooter({ className, ...props }: ComponentPropsWithRef<"tfo
2847
2901
  declare namespace TableFooter {
2848
2902
  var displayName: string;
2849
2903
  }
2850
- /** A table row. Hover-lifts; mark the selected row with `data-selected`. */
2904
+ /**
2905
+ * A table row. Body rows hover-lift; header and footer rows stay still, since
2906
+ * nothing there responds to a click on the row. Mark the selected row with
2907
+ * `data-selected`.
2908
+ *
2909
+ * The selected fill is painted by the cells, each spilling 1px into the next
2910
+ * (a box-shadow, so layout does not move). A row's own background is painted
2911
+ * per cell at fractional widths, and a dogfood build saw 1px dark seams at
2912
+ * cell boundaries on the selected row, the one users look at most. The spill
2913
+ * covers any such gap; the fill is opaque in every theme, so the overlap does
2914
+ * not show. Hover stays on the row: it is translucent, where an overlap would.
2915
+ */
2851
2916
  declare function TableRow({ className, ...props }: ComponentPropsWithRef<"tr">): react.JSX.Element;
2852
2917
  declare namespace TableRow {
2853
2918
  var displayName: string;
@@ -3052,7 +3117,7 @@ declare const notificationBadgeMeta: ComponentMeta;
3052
3117
  * rounded-full and shrink-0 so it holds its shape inline next to text.
3053
3118
  */
3054
3119
  declare const statusDotVariants: (props?: ({
3055
- tone?: "destructive" | "success" | "info" | "warning" | "neutral" | "standard" | "edition" | "collectible" | null | undefined;
3120
+ tone?: "destructive" | "success" | "neutral" | "standard" | "warning" | "info" | "edition" | "collectible" | null | undefined;
3056
3121
  size?: "sm" | "md" | "lg" | null | undefined;
3057
3122
  } & class_variance_authority_types.ClassProp) | undefined) => string;
3058
3123
 
@@ -3565,6 +3630,20 @@ declare function SliderThumb({ className, children, ...props }: ThumbProps): rea
3565
3630
  type SliderValueType = number | readonly number[];
3566
3631
  type SliderProps<Value extends SliderValueType> = Omit<ComponentProps<typeof Slider$1.Root>, "className" | "value" | "defaultValue" | "onValueChange" | "render"> & {
3567
3632
  className?: string;
3633
+ /**
3634
+ * Names each thumb's input — the element with role=slider. Base UI would put
3635
+ * it on the Root's role=group, leaving the slider itself unnamed. A range
3636
+ * keeps it on the group too, so the pair is named as well.
3637
+ */
3638
+ "aria-label"?: string;
3639
+ /** Per-thumb name for a range: `(index) => index ? "Maximum price" : "Minimum price"`. Wins over aria-label on the thumbs. */
3640
+ getAriaLabel?: ThumbProps["getAriaLabel"];
3641
+ /**
3642
+ * What a screen reader announces for the value, when the number alone is
3643
+ * wrong: `(formatted, value) => toTime(value) + " of " + toTime(duration)`.
3644
+ * For units or percent, the Root's `format` (Intl.NumberFormatOptions) is enough.
3645
+ */
3646
+ getAriaValueText?: ThumbProps["getAriaValueText"];
3568
3647
  /** Controlled value. Pass an array for a range slider (one thumb per entry). */
3569
3648
  value?: Value;
3570
3649
  /** Uncontrolled initial value. Pass an array for a range slider. */
@@ -3576,9 +3655,10 @@ type SliderProps<Value extends SliderValueType> = Omit<ComponentProps<typeof Sli
3576
3655
  * The all-in-one Slider: Root + Control + Track + Indicator + Thumb(s).
3577
3656
  * Renders a single thumb for a scalar value, or one thumb per entry when the
3578
3657
  * value is an array (range slider). Forwards value / defaultValue /
3579
- * onValueChange / min / max / step (and the rest of the Root props).
3658
+ * onValueChange / min / max / step (and the rest of the Root props), and routes
3659
+ * aria-label / getAriaLabel / getAriaValueText to the thumbs.
3580
3660
  */
3581
- declare function Slider<Value extends SliderValueType = number>({ className, ...props }: SliderProps<Value>): ReactNode;
3661
+ declare function Slider<Value extends SliderValueType = number>({ className, "aria-label": ariaLabel, getAriaLabel, getAriaValueText, ...props }: SliderProps<Value>): ReactNode;
3582
3662
  declare namespace Slider {
3583
3663
  var displayName: string;
3584
3664
  }
@@ -4124,7 +4204,7 @@ declare const kbdMeta: ComponentMeta;
4124
4204
  * (neutral/info/success/warning/destructive).
4125
4205
  */
4126
4206
  declare const noteVariants: (props?: ({
4127
- tone?: "destructive" | "success" | "info" | "warning" | "neutral" | null | undefined;
4207
+ tone?: "destructive" | "success" | "neutral" | "warning" | "info" | null | undefined;
4128
4208
  } & class_variance_authority_types.ClassProp) | undefined) => string;
4129
4209
 
4130
4210
  /**
@@ -4234,7 +4314,7 @@ declare const inlineStatusMeta: ComponentMeta;
4234
4314
  * and `sticky` positioning live in `banner.tsx`.
4235
4315
  */
4236
4316
  declare const bannerVariants: (props?: ({
4237
- tone?: "destructive" | "success" | "info" | "warning" | "neutral" | "edition" | null | undefined;
4317
+ tone?: "destructive" | "success" | "neutral" | "warning" | "info" | "edition" | null | undefined;
4238
4318
  appearance?: "solid" | "soft" | null | undefined;
4239
4319
  } & class_variance_authority_types.ClassProp) | undefined) => string;
4240
4320
 
@@ -4944,6 +5024,15 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
4944
5024
  * `lg`. Rendered fixed to the bottom edge; `<main>` reserves space for it.
4945
5025
  */
4946
5026
  bottomNav?: ReactNode;
5027
+ /**
5028
+ * Persistent chrome that stays on screen across routes — a now-playing bar,
5029
+ * an active-call bar, an upload tray. Full width, pinned to the bottom edge
5030
+ * (above `bottomNav` on mobile); the desktop Sidebar shortens to clear it.
5031
+ * The contents paint their own surface and border, since content scrolls
5032
+ * beneath them. Keep it mounted in a layout that outlives route changes, or
5033
+ * the playback it controls restarts.
5034
+ */
5035
+ dock?: ReactNode;
4947
5036
  /** Floating overlays (a message launcher, FAB, modal mount points). */
4948
5037
  overlays?: ReactNode;
4949
5038
  /** Main content. */
@@ -4952,7 +5041,7 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
4952
5041
  /**
4953
5042
  * AppShell — the application frame. Lays out optional status banners, a mobile
4954
5043
  * header, a desktop sidebar, the main content region, a mobile bottom nav, and
4955
- * floating overlays, with a built-in skip link and the `#main-content` target.
5044
+ * a persistent dock, and floating overlays, with a built-in skip link and the `#main-content` target.
4956
5045
  *
4957
5046
  * It is layout-agnostic about the breakpoint switch: each slot component owns
4958
5047
  * its own `hidden`/`lg:*` visibility (Sidebar is `hidden lg:flex`, AppHeader and
@@ -4968,7 +5057,7 @@ interface AppShellProps extends Omit<ComponentProps<"div">, "title"> {
4968
5057
  * <Region max="feed">…</Region>
4969
5058
  * </AppShell>
4970
5059
  */
4971
- declare function AppShell({ banners, header, sidebar, bottomNav, overlays, className, children, ...rest }: AppShellProps): react.JSX.Element;
5060
+ declare function AppShell({ banners, header, sidebar, bottomNav, dock, overlays, className, children, ...rest }: AppShellProps): react.JSX.Element;
4972
5061
  declare namespace AppShell {
4973
5062
  var displayName: string;
4974
5063
  }
@@ -5016,6 +5105,28 @@ declare function SidebarHeader({ className, ...props }: ComponentPropsWithRef<"d
5016
5105
  declare namespace SidebarHeader {
5017
5106
  var displayName: string;
5018
5107
  }
5108
+ interface SidebarBrandProps extends Omit<ComponentPropsWithRef<"div">, "children"> {
5109
+ /** The logo mark. Sits in the items' icon slot (24px); collapsed, it is all that shows. */
5110
+ mark: ReactNode;
5111
+ /** The product name, on the items' label column. Hidden when collapsed. */
5112
+ label: ReactNode;
5113
+ /** Render as a link home, e.g. `render={<Link to="/" />}`. */
5114
+ render?: useRender.RenderProp;
5115
+ }
5116
+ /**
5117
+ * The brand row, on the same grid as SidebarItem: the mark in the icon slot,
5118
+ * the name on the label column. It takes the item row's own inset, slot and
5119
+ * gap from the shared recipe, so it moves with the rail instead of an app
5120
+ * copying 12px + 12px + size-6 out of the bundle. Goes inside SidebarHeader.
5121
+ *
5122
+ * <SidebarHeader>
5123
+ * <SidebarBrand mark={<Logo />} label="Undertow" render={<Link to="/" />} />
5124
+ * </SidebarHeader>
5125
+ */
5126
+ declare function SidebarBrand({ mark, label, render, className, "aria-label": ariaLabel, ...props }: SidebarBrandProps): ReactElement;
5127
+ declare namespace SidebarBrand {
5128
+ var displayName: string;
5129
+ }
5019
5130
  /** The scrollable nav region — grows to fill the rail between header and footer. */
5020
5131
  declare function SidebarNav({ className, ...props }: ComponentPropsWithRef<"nav">): react.JSX.Element;
5021
5132
  declare namespace SidebarNav {
@@ -5227,6 +5338,59 @@ declare namespace PageHeader {
5227
5338
 
5228
5339
  declare const pageHeaderMeta: ComponentMeta;
5229
5340
 
5341
+ interface SectionHeaderProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
5342
+ /** The section's title. */
5343
+ title?: ReactNode;
5344
+ /** One line of supporting copy beneath the title. */
5345
+ description?: ReactNode;
5346
+ /**
5347
+ * Trailing actions on the title row — a "View all" link, or a couple of
5348
+ * buttons. Use `size="sm"` buttons: the title is centred on that height.
5349
+ */
5350
+ actions?: ReactNode;
5351
+ /**
5352
+ * The title's heading element, chosen by the document outline: `h2` for a
5353
+ * section under the page's h1, `h3` for a subsection inside one. @default "h2"
5354
+ */
5355
+ titleAs?: "h2" | "h3" | "h4";
5356
+ /**
5357
+ * The title's `id`, so the section it heads can name itself with it:
5358
+ * `<section aria-labelledby={id}>`. Generated when omitted.
5359
+ */
5360
+ titleId?: string;
5361
+ /**
5362
+ * Visual weight, independent of the heading level. `md` (text-heading-3) for
5363
+ * a page's sections and shelves; `sm` (text-heading-4) for a denser set —
5364
+ * settings groups, subsections, a sidebar's sections. @default "md"
5365
+ */
5366
+ size?: "md" | "sm";
5367
+ }
5368
+ /**
5369
+ * SectionHeader — the heading block for one section of a page: a title, an
5370
+ * optional line of description, and actions on the title row. The page's own
5371
+ * title is PageHeader (the route's one h1); every section below it is this.
5372
+ *
5373
+ * <section aria-labelledby="new-releases" className="flex flex-col gap-4">
5374
+ * <SectionHeader
5375
+ * titleId="new-releases"
5376
+ * title="New releases"
5377
+ * actions={<Button variant="ghost" size="sm" render={<a href="/new" />}>View all</Button>}
5378
+ * />
5379
+ * <Grid minItemWidth="10rem">…</Grid>
5380
+ * </section>
5381
+ *
5382
+ * It shares PageHeader's title row: the title wraps rather than truncating,
5383
+ * the actions keep to the title's row and drop beneath it only when the row
5384
+ * runs out of room. It carries no outer spacing — the Stack or Page it sits in
5385
+ * owns the rhythm between the header and what it introduces.
5386
+ */
5387
+ declare function SectionHeader({ title, description, actions, titleAs, titleId, size, className, ...props }: SectionHeaderProps): react.JSX.Element;
5388
+ declare namespace SectionHeader {
5389
+ var displayName: string;
5390
+ }
5391
+
5392
+ declare const sectionHeaderMeta: ComponentMeta;
5393
+
5230
5394
  interface SearchInputProps extends Omit<ComponentPropsWithRef<"input">, "onChange" | "value" | "defaultValue"> {
5231
5395
  /** Controlled value of the search field. */
5232
5396
  value?: string;
@@ -5782,16 +5946,34 @@ interface ThemeSelectorProps extends Omit<ComponentPropsWithRef<"div">, "onChang
5782
5946
  layout?: "cards" | "list";
5783
5947
  }
5784
5948
  /**
5785
- * ThemeSelector - a presentational card radiogroup for Sable design themes.
5786
- * Pair it with useSableTheme().themeId / setThemeId when the app uses
5787
- * SableThemeProvider.
5949
+ * A theme, drawn as a sliver of its own interface: its background, "Aa" in its
5950
+ * display face, a card and a primary button. The tile carries the theme's scope
5951
+ * (`data-sable-theme`, plus `.dark` / `.light`), so every token inside it, the
5952
+ * tile's own corners included, resolves to the previewed theme, not the app's.
5788
5953
  *
5789
- * Built on Sable's RadioGroup over Base UI's Radio, so the roles,
5790
- * `aria-checked`, the single tab stop and arrow-key selection come from Base UI
5791
- * (the hand-rolled `role="radio"` buttons this replaced had no arrow keys).
5792
- * Sable's `<Radio>` is the dot-in-a-ring control and takes no content; a card
5793
- * or a row is its own skin, so each option renders Base UI's Radio.Root.
5954
+ * The button and card corners are the theme's real radii scaled to the
5955
+ * miniature, because shape is the half of a theme a colour strip never showed:
5956
+ * Meridian's square controls, Poppy's soft 12px, Sable's capsule. The old card
5957
+ * was four flat colour blocks, and four of six themes came out as the same
5958
+ * white-and-black strip.
5959
+ *
5960
+ * `.light` is set explicitly, not only `.dark`: theme CSS matches
5961
+ * `.dark [data-sable-theme]:not(.light)`, so under a dark page a "light"
5962
+ * preview without it painted dark.
5794
5963
  */
5964
+ interface ThemePreviewProps {
5965
+ /** The theme to draw. */
5966
+ theme: ThemeManifest;
5967
+ /** Which of its modes to draw. @default the theme's defaultMode */
5968
+ mode?: ThemeMode$1;
5969
+ /** `md` is the picker tile; `sm` is the row-sized chip a list row or a "current theme" trigger shows. @default "md" */
5970
+ size?: "md" | "sm";
5971
+ }
5972
+ /**
5973
+ * Exported for anywhere that shows a theme outside the picker, e.g. a trigger
5974
+ * row naming the current preset before it opens the list.
5975
+ */
5976
+ declare function ThemePreview({ theme, mode, size }: ThemePreviewProps): react.JSX.Element;
5795
5977
  declare function ThemeSelector({ value, onValueChange, themes, mode, label, layout, className, ref, ...props }: ThemeSelectorProps): react.JSX.Element;
5796
5978
  declare namespace ThemeSelector {
5797
5979
  var displayName: string;
@@ -5799,6 +5981,256 @@ declare namespace ThemeSelector {
5799
5981
 
5800
5982
  declare const themeSelectorMeta: ComponentMeta;
5801
5983
 
5984
+ /**
5985
+ * DisclosurePicker — a property row that names the current value and opens a
5986
+ * list IN PLACE beneath it, pushing what follows down, instead of floating a
5987
+ * popup over it.
5988
+ *
5989
+ * <DisclosurePicker>
5990
+ * <DisclosurePickerTrigger label="Body">Inter</DisclosurePickerTrigger>
5991
+ * <DisclosurePickerPanel>
5992
+ * <DisclosurePickerList aria-label="Body font" value={font} onValueChange={setFont}>
5993
+ * <DisclosurePickerOption value="Inter">Inter</DisclosurePickerOption>
5994
+ * </DisclosurePickerList>
5995
+ * </DisclosurePickerPanel>
5996
+ * </DisclosurePicker>
5997
+ *
5998
+ * Why not a Select: a tool panel's choices are made while looking at what they
5999
+ * change. A popup covers the preview the choice is about; a list that opens in
6000
+ * the panel keeps the row, the list and the preview in one column. Built on
6001
+ * Collapsible, so the trigger is a real button with aria-expanded/controls and
6002
+ * the panel animates with motion-disclosure (static under reduced motion).
6003
+ *
6004
+ * The list is a listbox, not a radio group: arrow keys move through it and
6005
+ * nothing happens until Enter (or Space, or a click) picks. A radio group's
6006
+ * checked state follows focus, so each arrow press was a pick — fine for a free
6007
+ * toggle, wrong for a choice with a cost (a confirm, a font load, a reset).
6008
+ *
6009
+ * Grew out of the docs Customize panel, where a font row and a preset row had
6010
+ * become two hand copies of the same disclosure.
6011
+ */
6012
+ type Size = "md" | "xs";
6013
+ /**
6014
+ * Open state, the row's size and a `close()` for a list the picker does not own
6015
+ * (a Tree, a bespoke grid) that should still close the row when something is
6016
+ * picked. Inside a DisclosurePicker only.
6017
+ */
6018
+ declare function useDisclosurePicker(): {
6019
+ open: boolean;
6020
+ close: () => void;
6021
+ size: Size;
6022
+ };
6023
+ interface DisclosurePickerProps extends Omit<ComponentProps<typeof Collapsible>, "className" | "open" | "defaultOpen" | "onOpenChange"> {
6024
+ /** Controlled open state. Pair with `onOpenChange`; leave both off to let the row own it. */
6025
+ open?: boolean;
6026
+ /** Uncontrolled initial open state. @default false */
6027
+ defaultOpen?: boolean;
6028
+ /** Called with the next open state — on the trigger, on a pick, on Escape. */
6029
+ onOpenChange?: (open: boolean) => void;
6030
+ /**
6031
+ * Which rung the row sits on. `md` is a 40px row in a settings panel; `xs` is
6032
+ * the property-grid rung — a `--control-xs` row on the inset `panel-field`
6033
+ * fill, the same shape as a ScrubField or an xs SelectTrigger beside it.
6034
+ * Height, padding, radius, type and surface move together, which is why it is
6035
+ * a prop and not a className. @default "md"
6036
+ */
6037
+ size?: Size;
6038
+ className?: string;
6039
+ }
6040
+ /**
6041
+ * The root: a Collapsible that also owns focus. Opening from the keyboard moves
6042
+ * focus into the list (the search field, or the chosen option when there is no
6043
+ * search); closing with focus inside returns it to the trigger. While the panel
6044
+ * grows it keeps the whole row on screen, so a picker near the foot of a
6045
+ * scrolling panel does not open out of sight; and it opens with the chosen
6046
+ * option centred in a scrolling list, not wherever the list last was.
6047
+ */
6048
+ declare function DisclosurePicker({ open: openProp, defaultOpen, onOpenChange, size, className, ref, children, ...props }: DisclosurePickerProps): react.JSX.Element;
6049
+ declare namespace DisclosurePicker {
6050
+ var displayName: string;
6051
+ }
6052
+ interface DisclosurePickerTriggerProps extends Omit<ComponentProps<typeof CollapsibleTrigger>, "className" | "children"> {
6053
+ /** A leading caption naming the property ("Body", "Theme"), muted, on a fixed column so stacked rows align. */
6054
+ label?: ReactNode;
6055
+ /** A leading visual before the value — a theme tile, a swatch. Not truncated. */
6056
+ media?: ReactNode;
6057
+ /** The current value. Truncates on one line; render it in its own face or colour if that is the point. */
6058
+ children?: ReactNode;
6059
+ className?: string;
6060
+ }
6061
+ /**
6062
+ * The row: optional caption, optional media, the value, and a chevron that
6063
+ * flips when open. A real button — Base UI wires aria-expanded and
6064
+ * aria-controls — so its accessible name is its text (caption + value) unless
6065
+ * an aria-label says it better.
6066
+ */
6067
+ declare function DisclosurePickerTrigger({ label, media, children, className, ref, onKeyDown, onPointerDown, ...props }: DisclosurePickerTriggerProps): react.JSX.Element;
6068
+ declare namespace DisclosurePickerTrigger {
6069
+ var displayName: string;
6070
+ }
6071
+ /** The search field a long list opts into: controlled, because the consumer does the filtering. */
6072
+ interface DisclosurePickerSearch {
6073
+ /** The query. */
6074
+ value: string;
6075
+ /** Called on every keystroke; cleared with `""` when the picker closes. */
6076
+ onValueChange: (value: string) => void;
6077
+ /** @default "Search" */
6078
+ placeholder?: string;
6079
+ /** Accessible name of the field. @default the placeholder */
6080
+ label?: string;
6081
+ }
6082
+ interface DisclosurePickerPanelProps extends Omit<ComponentProps<typeof CollapsiblePanel>, "className" | "children"> {
6083
+ /**
6084
+ * Opt in to a search field above the list. Off by default: a short list
6085
+ * (a handful of presets) reads faster than a field you have to skip past.
6086
+ * Turn it on once the list scrolls — roughly a dozen options or more.
6087
+ */
6088
+ search?: DisclosurePickerSearch;
6089
+ children?: ReactNode;
6090
+ className?: string;
6091
+ }
6092
+ /**
6093
+ * What opens beneath the row: the optional search field and the list, divided
6094
+ * from the row by a hairline. Escape closes it and returns focus to the row
6095
+ * (first clearing a query, if there is one) without changing the value;
6096
+ * ArrowDown in the search field steps into the list.
6097
+ */
6098
+ declare function DisclosurePickerPanel({ search, children, className, ...props }: DisclosurePickerPanelProps): react.JSX.Element;
6099
+ declare namespace DisclosurePickerPanel {
6100
+ var displayName: string;
6101
+ }
6102
+ interface DisclosurePickerListProps extends Omit<ComponentProps<"div">, "role" | "onChange" | "defaultValue" | "children"> {
6103
+ /** The chosen (committed) option's value. Marked `aria-selected` and lifted out of the well. */
6104
+ value: string;
6105
+ /**
6106
+ * Called once, when an option is picked — Enter, Space or a click — and only
6107
+ * when the pick differs from `value`. Arrow keys, Home/End and type-ahead
6108
+ * move focus through the list and change nothing; Escape closes without a
6109
+ * pick. Picking closes the row.
6110
+ */
6111
+ onValueChange: (value: string) => void;
6112
+ /** Name the list — the property it sets ("Body font"). */
6113
+ "aria-label"?: string;
6114
+ children?: ReactNode;
6115
+ }
6116
+ /**
6117
+ * The options, as a listbox: ArrowUp/ArrowDown, Home/End and type-ahead move
6118
+ * focus through them (roving tabindex, so Tab leaves the list in one step);
6119
+ * Enter, Space or a click picks the focused option, applies it and closes the
6120
+ * row. Nothing is applied while you move. ArrowUp from the first option goes
6121
+ * back to the search field, when there is one. Scrolls past 16rem with a quiet
6122
+ * scrollbar.
6123
+ */
6124
+ declare function DisclosurePickerList({ value, onValueChange, className, ref, onKeyDown, onFocus, children, ...props }: DisclosurePickerListProps): react.JSX.Element;
6125
+ declare namespace DisclosurePickerList {
6126
+ var displayName: string;
6127
+ }
6128
+ interface DisclosurePickerOptionProps extends Omit<ComponentProps<"div">, "className" | "children" | "role" | "tabIndex" | "onKeyDown"> {
6129
+ value: string;
6130
+ /** The option's name. Render it in its own face or colour when that is what is being picked. */
6131
+ children?: ReactNode;
6132
+ /** A leading visual before the name — a ThemePreview tile, a swatch. Not truncated. */
6133
+ media?: ReactNode;
6134
+ /** A short muted annotation at the row's end. Options without one show a check when chosen. */
6135
+ note?: ReactNode;
6136
+ /** Skipped by arrow keys and type-ahead, and cannot be picked. */
6137
+ disabled?: boolean;
6138
+ /** What type-ahead matches, when the name is not plain text. @default the name's text */
6139
+ textValue?: string;
6140
+ className?: string;
6141
+ }
6142
+ /**
6143
+ * One option: a full-width row, raised out of the well when chosen. Focus
6144
+ * (from arrow keys, Home/End or type-ahead) rings it; Enter, Space or a click
6145
+ * picks it and closes the row.
6146
+ */
6147
+ declare function DisclosurePickerOption({ value, children, media, note, disabled, textValue, className, onClick, ...props }: DisclosurePickerOptionProps): react.JSX.Element;
6148
+ declare namespace DisclosurePickerOption {
6149
+ var displayName: string;
6150
+ }
6151
+ /** Shown in the list when a search matches nothing. */
6152
+ declare function DisclosurePickerEmpty({ children, className }: {
6153
+ children?: ReactNode;
6154
+ className?: string;
6155
+ }): react.JSX.Element;
6156
+ declare namespace DisclosurePickerEmpty {
6157
+ var displayName: string;
6158
+ }
6159
+
6160
+ declare const disclosurePickerMeta: ComponentMeta;
6161
+
6162
+ /** One family the picker offers. Supplied by the app — Sable bundles no font catalog. */
6163
+ interface FontPickerFont {
6164
+ /** The family name, as CSS knows it once loaded ("DM Sans"). */
6165
+ family: string;
6166
+ /** A short muted note at the row's end ("Neutral, dense UI"). Searched along with the family. */
6167
+ note?: string;
6168
+ /** The CSS font-family stack to render this option in. @default `"<family>"` */
6169
+ stack?: string;
6170
+ }
6171
+ /** A choice that is not a family — "Theme default", "Same as body" — listed above the fonts, in the app's own face. */
6172
+ interface FontPickerOption {
6173
+ value: string;
6174
+ /** The option's row text ("Preset (Figtree)"). */
6175
+ label: string;
6176
+ /** What the row shows while this option is chosen, when it should differ from `label` ("Figtree"). */
6177
+ valueLabel?: string;
6178
+ }
6179
+ interface FontPickerProps<Font extends FontPickerFont = FontPickerFont> extends Omit<DisclosurePickerProps, "children" | "onChange"> {
6180
+ /** The chosen family, or the value of one of `options`. */
6181
+ value: string;
6182
+ /**
6183
+ * Called when a family (or option) is picked — Enter, Space or a click —
6184
+ * and only when it differs from `value`. Arrow keys and type-ahead move
6185
+ * through the list without applying or loading anything; Escape closes
6186
+ * without a pick.
6187
+ */
6188
+ onValueChange: (value: string) => void;
6189
+ /** The families to offer, in order. */
6190
+ fonts: readonly Font[];
6191
+ /** Non-font choices listed first ("Preset", "Same as primary"). */
6192
+ options?: readonly FontPickerOption[];
6193
+ /** The row's leading caption — the role the font plays ("Body", "Headings"). */
6194
+ label?: ReactNode;
6195
+ /** Accessible name of the list. @default "Font" */
6196
+ listLabel?: string;
6197
+ /**
6198
+ * A search field above the list. On by default: font lists are long, and a
6199
+ * name is the fastest way to one. Pass `false` for a short, curated list
6200
+ * (under a dozen), where the field is a control with nothing to do.
6201
+ * @default true
6202
+ */
6203
+ searchable?: boolean;
6204
+ /** Accessible name of the search field. @default "Search fonts" */
6205
+ searchLabel?: string;
6206
+ /**
6207
+ * Load a face on demand — the app owns where fonts come from (Google Fonts,
6208
+ * a CDN, self-hosted). Called with `"preview"` for every listed family when
6209
+ * the list opens (enough to draw its own name), and with `"use"` for the
6210
+ * chosen family — once it is picked, never while the list is only being
6211
+ * walked. Make it idempotent: it is called again on every open.
6212
+ */
6213
+ loadFont?: (font: Font, purpose: "preview" | "use") => void;
6214
+ }
6215
+ /**
6216
+ * FontPicker — a DisclosurePicker for a typeface: the row names the chosen
6217
+ * family in its own face, and opens in place into a searchable list of
6218
+ * families, each drawn in itself. Arrow keys walk the list — each name is
6219
+ * already drawn in its face — and Enter (or a click) picks one, which is when
6220
+ * its real weights load and the page changes.
6221
+ *
6222
+ * <FontPicker label="Body" value={family} onValueChange={setFamily} fonts={FONTS} loadFont={load} />
6223
+ *
6224
+ * Sable ships the control, not a catalog: `fonts` and `loadFont` come from the
6225
+ * app, so it can offer three families or three hundred from any source.
6226
+ */
6227
+ declare function FontPicker<Font extends FontPickerFont = FontPickerFont>({ value, onValueChange, fonts, options, label, listLabel, searchable, searchLabel, loadFont, open: openProp, defaultOpen, onOpenChange, ...props }: FontPickerProps<Font>): react.JSX.Element;
6228
+ declare namespace FontPicker {
6229
+ var displayName: string;
6230
+ }
6231
+
6232
+ declare const fontPickerMeta: ComponentMeta;
6233
+
5802
6234
  /** The three color preferences a ThemeSwitcher cycles between. */
5803
6235
  type ThemeMode = "light" | "dark" | "system";
5804
6236
  interface ThemeSwitcherProps extends Omit<ComponentPropsWithRef<"div">, "onChange"> {
@@ -6786,6 +7218,158 @@ declare namespace GradientArt {
6786
7218
 
6787
7219
  declare const gradientArtMeta: ComponentMeta;
6788
7220
 
7221
+ interface MediaImageProps extends Omit<ComponentPropsWithRef<"div">, "children"> {
7222
+ /** Image URL. Omitted, empty, or failing to load ⇒ the fallback shows. */
7223
+ src?: string;
7224
+ /**
7225
+ * Alt text. Defaults to `""` (decorative) — right when a visible title sits
7226
+ * beside the image, as on a tile or a row. When it is set and no image shows,
7227
+ * it names the fallback instead, so the description survives a broken URL.
7228
+ */
7229
+ alt?: string;
7230
+ /**
7231
+ * Seeds the fallback art, so an item keeps its own colour wherever it
7232
+ * appears. Defaults to `alt`; pass the title or an id when `alt` is empty.
7233
+ */
7234
+ seed?: string | number;
7235
+ /**
7236
+ * Replaces the GradientArt fallback — a glyph, a monogram, a brand colour.
7237
+ * It fills the frame, under the same clipping.
7238
+ */
7239
+ fallback?: ReactNode;
7240
+ /**
7241
+ * `cover` (default) crops to fill — artwork, photos. `contain` letterboxes on
7242
+ * the muted surface — a logo, a product shot that must not be cropped.
7243
+ */
7244
+ fit?: "cover" | "contain";
7245
+ /** `srcSet` / `sizes` for responsive images, passed to the `<img>`. */
7246
+ srcSet?: string;
7247
+ sizes?: string;
7248
+ /** @default "lazy" — media grids are long, and a tile below the fold can wait. */
7249
+ loading?: "lazy" | "eager";
7250
+ }
7251
+ /**
7252
+ * MediaImage — an image that falls back to theme art when it has none.
7253
+ *
7254
+ * <AspectBox ratio={1} className="rounded-md">
7255
+ * <MediaImage src={album.cover} seed={album.title} />
7256
+ * </AspectBox>
7257
+ *
7258
+ * It fills the box it is given (`size-full`), so the box owns the shape: an
7259
+ * AspectBox for a cover, `size-14 rounded-md` for a row's thumbnail.
7260
+ *
7261
+ * **Loading is Base UI's, not a second implementation.** The image status comes
7262
+ * from the same Base UI Avatar parts Avatar uses: the URL is preloaded off the
7263
+ * DOM and the `<img>` mounts only once it has decoded, so an error that fires
7264
+ * before hydration is still caught — the reason a plain `onError` misses broken
7265
+ * images on prerendered pages. Avatar's frame is a circle with a size ladder and
7266
+ * an initials tier; a cover is none of those, so this composes the primitive
7267
+ * rather than restyling Avatar out of its shape.
7268
+ *
7269
+ * **Three states, three surfaces.** No `src` (or a failed one) is GradientArt
7270
+ * seeded by the item, so a grid of missing covers still reads as distinct
7271
+ * things. While a real image is loading the frame stays a quiet muted surface
7272
+ * — painting the art first would flash a colourful stand-in for a frame and
7273
+ * then swap it for the photo. Once loaded, the image fades in.
7274
+ */
7275
+ declare function MediaImage({ src, alt, seed, fallback, fit, srcSet, sizes, loading, className, ...props }: MediaImageProps): react.JSX.Element;
7276
+ declare namespace MediaImage {
7277
+ var displayName: string;
7278
+ }
7279
+
7280
+ declare const mediaImageMeta: ComponentMeta;
7281
+
7282
+ type MediaTileSize = "sm" | "md" | "lg";
7283
+ /** Named cover shapes. A number is a width / height ratio. */
7284
+ declare const ASPECT: {
7285
+ readonly square: 1;
7286
+ readonly video: number;
7287
+ readonly poster: number;
7288
+ };
7289
+ interface MediaTileProps extends Omit<ComponentPropsWithRef<"div">, "title"> {
7290
+ /** The item's name. Also seeds the fallback art when it is a string. */
7291
+ title: ReactNode;
7292
+ /** The second line — an artist, a channel, a price. Optional. */
7293
+ subtitle?: ReactNode;
7294
+ /** Cover image URL. Without one (or when it fails) the cover is GradientArt seeded by the item. */
7295
+ src?: string;
7296
+ /**
7297
+ * Cover alt text. Defaults to `""`: the title right below already names the
7298
+ * item, so describing the cover again makes a screen reader say it twice.
7299
+ */
7300
+ alt?: string;
7301
+ /** Seeds the fallback art. Defaults to `title` when it is a string. */
7302
+ seed?: string | number;
7303
+ /**
7304
+ * The cover's shape: `square` (albums, podcasts, playlists), `video` (16:9),
7305
+ * `poster` (2:3 — films, books), or any width / height ratio.
7306
+ * @default "square"
7307
+ */
7308
+ aspect?: keyof typeof ASPECT | number;
7309
+ /** Type tier, gaps and corner together. @default "md" */
7310
+ size?: MediaTileSize;
7311
+ /**
7312
+ * Where the tile goes. The title becomes the tile's link, stretched over the
7313
+ * whole tile, so a click anywhere on it — cover included — follows it.
7314
+ */
7315
+ href?: string;
7316
+ /**
7317
+ * The title link's element, for a router: `render={<Link to="/albums/1" />}`.
7318
+ * Takes precedence over `href`.
7319
+ */
7320
+ render?: useRender.RenderProp;
7321
+ /** Makes the subtitle its own link (an artist page) — a separate tab stop above the tile's. */
7322
+ subtitleHref?: string;
7323
+ /** The subtitle link's element, for a router: `subtitleRender={<Link to="/artists/2" />}`. */
7324
+ subtitleRender?: useRender.RenderProp;
7325
+ /**
7326
+ * An action over the cover's bottom-end corner — usually a play Button. It
7327
+ * rests hidden on hover-capable devices and appears on hover or focus
7328
+ * (`reveal-on-hover`); touch devices always show it. Name it for the item:
7329
+ * "Play Low tide", not "Play".
7330
+ */
7331
+ action?: ReactNode;
7332
+ /**
7333
+ * A small static label on the cover's top-start corner — a duration, "New",
7334
+ * "Explicit". Use `<Badge appearance="overlay">` so it reads on any image.
7335
+ */
7336
+ badge?: ReactNode;
7337
+ /**
7338
+ * The title's element. A tile in a titled section can be a heading the next
7339
+ * level down, so screen-reader users can move tile to tile.
7340
+ * @default "p"
7341
+ */
7342
+ titleAs?: "h2" | "h3" | "h4" | "h5" | "p";
7343
+ /** Native image loading. `eager` for the first row above the fold. @default "lazy" */
7344
+ loading?: "lazy" | "eager";
7345
+ }
7346
+ /**
7347
+ * MediaTile — cover first, then the title and a subtitle: an album in a grid, a
7348
+ * video in a feed, a podcast, a product, a photo in a gallery.
7349
+ *
7350
+ * <MediaTile title="Low tide, high noon" subtitle="Juno Avery" src={cover}
7351
+ * render={<Link to="/albums/low-tide" />} subtitleRender={<Link to="/artists/juno" />}
7352
+ * action={<Button size="icon" aria-label="Play Low tide, high noon"><Icon name="play" variant="solid" /></Button>} />
7353
+ *
7354
+ * **The whole tile is a link without wrapping it in one.** A tile holds a
7355
+ * second link (the artist) and a button (play), and interactive content cannot
7356
+ * nest — so instead of an `<a>` around everything, the TITLE is the link and its
7357
+ * `stretched-link` overlay covers the tile. The subtitle link and the action sit
7358
+ * above that overlay, so each is its own control: one click target per thing,
7359
+ * three tab stops, and the screen-reader name of the tile's link is its title,
7360
+ * not the whole card read as one sentence.
7361
+ *
7362
+ * **Tab order is title → subtitle → action.** The text comes first in the DOM
7363
+ * and the cover is drawn above it with `order`, so focus moves the way a
7364
+ * reader names the item — what it is, who made it, then what to do with it.
7365
+ */
7366
+ declare function MediaTile({ title, subtitle, src, alt, seed, aspect, size, href, render, subtitleHref, subtitleRender, action, badge, titleAs: TitleTag, loading, className, ...props }: MediaTileProps): react.JSX.Element;
7367
+ declare namespace MediaTile {
7368
+ var displayName: string;
7369
+ }
7370
+
7371
+ declare const mediaTileMeta: ComponentMeta;
7372
+
6789
7373
  /**
6790
7374
  * Conversation rhythm. The class also publishes the gap as `--message-gap` so
6791
7375
  * `<Message grouped>` can close it without knowing which step is in play. The
@@ -7640,6 +8224,6 @@ interface UseCopyResult {
7640
8224
  */
7641
8225
  declare function useCopy(text: string, { timeout }?: UseCopyOptions): UseCopyResult;
7642
8226
 
7643
- declare const SABLE_UI_VERSION: "0.6.2";
8227
+ declare const SABLE_UI_VERSION: "0.7.1";
7644
8228
 
7645
- export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Button, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionPolicy, MotionProvider, type MotionProviderProps, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$3 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPortal, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputMeta, isTransparent, kbdMeta, labelMeta, lineChartMeta, markerMeta, marqueeMeta, menuMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useInView, useMotion, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useSidebar, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
8229
+ export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, type ArtTone, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Button, type ButtonBleed, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, type CardFooterProps, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, DisclosurePicker, DisclosurePickerEmpty, DisclosurePickerList, type DisclosurePickerListProps, DisclosurePickerOption, type DisclosurePickerOptionProps, DisclosurePickerPanel, type DisclosurePickerPanelProps, type DisclosurePickerProps, type DisclosurePickerSearch, DisclosurePickerTrigger, type DisclosurePickerTriggerProps, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, FontPicker, type FontPickerFont, type FontPickerOption, type FontPickerProps, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, GradientArt, type GradientArtProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, MediaImage, type MediaImageProps, MediaTile, type MediaTileProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionPolicy, MotionProvider, type MotionProviderProps, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, type Presentation, PresentationProvider, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$3 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetList, SheetPortal, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemePreview, type ThemePreviewProps, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastContent, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, disclosurePickerMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, fontPickerMeta, formMeta, formatFileSize, formatHex, glidingHighlightMeta, gradientArtMeta, hsvToRgb, hueColor, inlineStatusMeta, inputMeta, isTransparent, kbdMeta, labelMeta, lineChartMeta, markerMeta, marqueeMeta, mediaImageMeta, mediaTileMeta, menuMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, sectionHeaderMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useDisclosurePicker, useInView, useMotion, usePanelWidth, usePresentation, useReducedMotion, useScrollActivity, useSidebar, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };