@espressif/dashboard-ui-components 1.11.1 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/.claude/rules/dashboard-ui-consumption.md +176 -5
  2. package/.cursor/rules/dashboard-ui-consumption.mdc +163 -4
  3. package/CHANGELOG.md +1020 -0
  4. package/README.md +240 -7
  5. package/THIRD-PARTY-NOTICES.md +2 -1
  6. package/dist/alert.props-CcKo49Rb.d.ts +44 -0
  7. package/dist/animation/index.d.ts +3 -0
  8. package/dist/animation/index.js +3 -0
  9. package/dist/avatar.props-2q5BsX-R.d.ts +29 -0
  10. package/dist/button-BK-DIR_L.d.ts +21 -0
  11. package/dist/button-BxJ7s6sR.d.ts +76 -0
  12. package/dist/calendar.props-BtCzuWH1.d.ts +12 -0
  13. package/dist/carousel/index.d.ts +2 -0
  14. package/dist/carousel/index.js +2 -0
  15. package/dist/charts/index.d.ts +5 -0
  16. package/dist/charts/index.js +9 -0
  17. package/dist/common/app-logo/app-logo.js +1 -1
  18. package/dist/common/index.d.ts +9 -20
  19. package/dist/common/my-account-menu/my-account-menu.js +45 -13
  20. package/dist/common/profile-card/profile-card.js +3 -2
  21. package/dist/components/accordion/accordion.js +14 -5
  22. package/dist/components/accordion/index.d.ts +36 -0
  23. package/dist/components/accordion/index.js +2 -0
  24. package/dist/components/advanced-search-box/advanced-search-box.js +8 -2
  25. package/dist/components/advanced-search-box/index.d.ts +29 -0
  26. package/dist/components/advanced-search-box/index.js +2 -0
  27. package/dist/components/alert/alert.js +2 -1
  28. package/dist/components/alert/index.d.ts +12 -0
  29. package/dist/components/alert/index.js +2 -0
  30. package/dist/components/anchored-panel/anchored-panel.js +83 -0
  31. package/dist/components/anchored-panel/index.d.ts +31 -0
  32. package/dist/components/anchored-panel/index.js +2 -0
  33. package/dist/components/animated-containers/index.d.ts +13 -0
  34. package/dist/components/animated-containers/index.js +2 -0
  35. package/dist/components/async-multi-select/async-multi-select.js +48 -7
  36. package/dist/components/async-multi-select/index.d.ts +63 -0
  37. package/dist/components/async-multi-select/index.js +2 -0
  38. package/dist/components/avatar/avatar.js +11 -4
  39. package/dist/components/avatar/index.d.ts +8 -0
  40. package/dist/components/avatar/index.js +2 -0
  41. package/dist/components/avatar-group/avatar-group.js +35 -0
  42. package/dist/components/avatar-group/index.d.ts +31 -0
  43. package/dist/components/avatar-group/index.js +2 -0
  44. package/dist/components/badge/index.d.ts +14 -0
  45. package/dist/components/badge/index.js +2 -0
  46. package/dist/components/breadcrumb/index.d.ts +21 -0
  47. package/dist/components/breadcrumb/index.js +2 -0
  48. package/dist/components/bubble/bubble.js +18 -0
  49. package/dist/components/bubble/index.d.ts +19 -0
  50. package/dist/components/bubble/index.js +2 -0
  51. package/dist/components/button/button.js +87 -25
  52. package/dist/components/button/flash-button.js +9 -3
  53. package/dist/components/button/index.d.ts +56 -0
  54. package/dist/components/button/index.js +6 -0
  55. package/dist/components/button-group/index.d.ts +16 -0
  56. package/dist/components/button-group/index.js +2 -0
  57. package/dist/components/calendar/calendar.js +5 -5
  58. package/dist/components/calendar/index.d.ts +11 -0
  59. package/dist/components/calendar/index.js +2 -0
  60. package/dist/components/card/index.d.ts +11 -0
  61. package/dist/components/card/index.js +2 -0
  62. package/dist/components/card-rail/card-rail.js +50 -0
  63. package/dist/components/card-rail/index.d.ts +30 -0
  64. package/dist/components/card-rail/index.js +2 -0
  65. package/dist/components/cards/collapsible-card.js +5 -2
  66. package/dist/components/cards/index.d.ts +16200 -0
  67. package/dist/components/cards/index.js +8 -0
  68. package/dist/components/cards/section-card.js +133 -8
  69. package/dist/components/cards/simple-card.js +5 -2
  70. package/dist/components/carousel/carousel.js +137 -49
  71. package/dist/components/carousel/index.d.ts +130 -0
  72. package/dist/components/carousel/index.js +2 -0
  73. package/dist/components/category-card/category-card.js +111 -0
  74. package/dist/components/category-card/index.d.ts +55 -0
  75. package/dist/components/category-card/index.js +2 -0
  76. package/dist/components/chart/area-chart.js +95 -85
  77. package/dist/components/chart/bar-chart.js +123 -60
  78. package/dist/components/chart/chart.js +127 -3
  79. package/dist/components/chart/composed-chart.js +109 -98
  80. package/dist/components/chart/donut-chart.js +23 -5
  81. package/dist/components/chart/index.d.ts +732 -0
  82. package/dist/components/chart/index.js +9 -0
  83. package/dist/components/chart/line-chart.js +93 -83
  84. package/dist/components/chart/treemap-chart.js +71 -58
  85. package/dist/components/check-badge/check-badge.js +25 -0
  86. package/dist/components/check-badge/index.d.ts +13 -0
  87. package/dist/components/check-badge/index.js +2 -0
  88. package/dist/components/checkbox/index.d.ts +8 -0
  89. package/dist/components/checkbox/index.js +2 -0
  90. package/dist/components/choice-card/choice-card.js +99 -0
  91. package/dist/components/choice-card/index.d.ts +41 -0
  92. package/dist/components/choice-card/index.js +2 -0
  93. package/dist/components/circular-progress/circular-progress.js +5 -2
  94. package/dist/components/circular-progress/index.d.ts +23 -0
  95. package/dist/components/circular-progress/index.js +2 -0
  96. package/dist/components/code/index.d.ts +40 -0
  97. package/dist/components/code/index.js +2 -0
  98. package/dist/components/code-editor/code-editor.js +9 -3
  99. package/dist/components/code-editor/index.d.ts +82 -0
  100. package/dist/components/code-editor/index.js +2 -0
  101. package/dist/components/collapsible/index.d.ts +42 -0
  102. package/dist/components/collapsible/index.js +2 -0
  103. package/dist/components/column-panel/column-panel.js +38 -0
  104. package/dist/components/column-panel/index.d.ts +37 -0
  105. package/dist/components/column-panel/index.js +3 -0
  106. package/dist/components/column-panel/use-panel-flag.js +27 -0
  107. package/dist/components/combobox/index.d.ts +28 -0
  108. package/dist/components/combobox/index.js +2 -0
  109. package/dist/components/confirmation-dialog/confirmation-dialog.js +1 -1
  110. package/dist/components/confirmation-dialog/index.d.ts +40 -0
  111. package/dist/components/confirmation-dialog/index.js +3 -0
  112. package/dist/components/content-container/index.d.ts +16 -0
  113. package/dist/components/content-container/index.js +2 -0
  114. package/dist/components/copiable-text/index.d.ts +33 -0
  115. package/dist/components/copiable-text/index.js +2 -0
  116. package/dist/components/coverflow/_constants/coverflow-poses.js +23 -0
  117. package/dist/components/coverflow/_constants/coverflow-shapes.js +23 -0
  118. package/dist/components/coverflow/_hooks/use-coverflow.js +90 -0
  119. package/dist/components/coverflow/_utils/ring.js +24 -0
  120. package/dist/components/coverflow/coverflow.js +198 -0
  121. package/dist/components/coverflow/index.d.ts +105 -0
  122. package/dist/components/coverflow/index.js +2 -0
  123. package/dist/components/data-table/data-table.js +9 -2
  124. package/dist/components/data-table/index.d.ts +120 -0
  125. package/dist/components/data-table/index.js +3 -0
  126. package/dist/components/date-picker/date-picker.js +5 -2
  127. package/dist/components/date-picker/index.d.ts +50 -0
  128. package/dist/components/date-picker/index.js +2 -0
  129. package/dist/components/date-range-picker/date-range-picker.js +11 -2
  130. package/dist/components/date-range-picker/index.d.ts +100 -0
  131. package/dist/components/date-range-picker/index.js +3 -0
  132. package/dist/components/date-time-picker/date-time-picker.js +5 -2
  133. package/dist/components/date-time-picker/index.d.ts +79 -0
  134. package/dist/components/date-time-picker/index.js +2 -0
  135. package/dist/components/device-icon/index.d.ts +17 -0
  136. package/dist/components/device-icon/index.js +2 -0
  137. package/dist/components/dialog/index.d.ts +38 -0
  138. package/dist/components/dialog/index.js +2 -0
  139. package/dist/components/dropdown-menu/index.d.ts +57 -0
  140. package/dist/components/dropdown-menu/index.js +2 -0
  141. package/dist/components/dynamic-list/dynamic-list.js +4 -4
  142. package/dist/components/dynamic-list/index.d.ts +74 -0
  143. package/dist/components/dynamic-list/index.js +2 -0
  144. package/dist/components/error-display/index.d.ts +17 -0
  145. package/dist/components/error-display/index.js +3 -0
  146. package/dist/components/expandable-text/expandable-text-overlay.js +78 -0
  147. package/dist/components/expandable-text/expandable-text.js +73 -0
  148. package/dist/components/expandable-text/index.d.ts +39 -0
  149. package/dist/components/expandable-text/index.js +2 -0
  150. package/dist/components/expandable-text/use-clamped.js +23 -0
  151. package/dist/components/facet-filters/_hooks/use-filter-group.js +51 -0
  152. package/dist/components/facet-filters/active-filters.js +31 -0
  153. package/dist/components/facet-filters/filter-group.js +110 -0
  154. package/dist/components/facet-filters/filters-panel.js +59 -0
  155. package/dist/components/facet-filters/filters-pill.js +40 -0
  156. package/dist/components/facet-filters/index.d.ts +104 -0
  157. package/dist/components/facet-filters/index.js +6 -0
  158. package/dist/components/facet-filters/use-filters-collapsed.js +21 -0
  159. package/dist/components/feature-grid/feature-grid.js +115 -0
  160. package/dist/components/feature-grid/index.d.ts +53 -0
  161. package/dist/components/feature-grid/index.js +2 -0
  162. package/dist/components/file-input/file-input.js +9 -3
  163. package/dist/components/file-input/index.d.ts +78 -0
  164. package/dist/components/file-input/index.js +2 -0
  165. package/dist/components/file-upload/file-upload.js +10 -5
  166. package/dist/components/file-upload/index.d.ts +38 -0
  167. package/dist/components/file-upload/index.js +2 -0
  168. package/dist/components/filters-bar/filters-bar.js +5 -1
  169. package/dist/components/filters-bar/index.d.ts +26 -0
  170. package/dist/components/filters-bar/index.js +2 -0
  171. package/dist/components/flip-card/flip-card.js +147 -0
  172. package/dist/components/flip-card/index.d.ts +43 -0
  173. package/dist/components/flip-card/index.js +2 -0
  174. package/dist/components/floating-window/_hooks/use-drag-move.js +76 -0
  175. package/dist/components/floating-window/floating-window.js +97 -0
  176. package/dist/components/floating-window/index.d.ts +45 -0
  177. package/dist/components/floating-window/index.js +2 -0
  178. package/dist/components/form/index.d.ts +28 -0
  179. package/dist/components/form/index.js +2 -0
  180. package/dist/components/fullscreen-dialog/fullscreen-dialog.js +6 -2
  181. package/dist/components/fullscreen-dialog/index.d.ts +38 -0
  182. package/dist/components/fullscreen-dialog/index.js +2 -0
  183. package/dist/components/horizontal-stepper/horizontal-stepper.js +122 -0
  184. package/dist/components/horizontal-stepper/index.d.ts +70 -0
  185. package/dist/components/horizontal-stepper/index.js +2 -0
  186. package/dist/components/icon-avatar/index.d.ts +9 -0
  187. package/dist/components/icon-avatar/index.js +2 -0
  188. package/dist/components/icon-text-action-card/icon-text-action-card.js +9 -5
  189. package/dist/components/icon-text-action-card/index.d.ts +11 -0
  190. package/dist/components/icon-text-action-card/index.js +2 -0
  191. package/dist/components/identicon/identicon.js +33 -0
  192. package/dist/components/identicon/index.d.ts +26 -0
  193. package/dist/components/identicon/index.js +2 -0
  194. package/dist/components/illustration/index.d.ts +37 -0
  195. package/dist/components/illustration/index.js +3 -0
  196. package/dist/components/index.d.ts +177 -19529
  197. package/dist/components/index.js +61 -10
  198. package/dist/components/input/index.d.ts +15 -0
  199. package/dist/components/input/index.js +3 -0
  200. package/dist/components/input-group/index.d.ts +35 -0
  201. package/dist/components/input-group/index.js +2 -0
  202. package/dist/components/input-group/input-group.js +41 -0
  203. package/dist/components/input-otp/index.d.ts +63 -0
  204. package/dist/components/input-otp/index.js +2 -0
  205. package/dist/components/key-value-manager/index.d.ts +63 -0
  206. package/dist/components/key-value-manager/index.js +2 -0
  207. package/dist/components/key-value-manager/key-value-manager-table.js +7 -5
  208. package/dist/components/label/index.d.ts +8 -0
  209. package/dist/components/label/index.js +2 -0
  210. package/dist/components/link/index.d.ts +33 -0
  211. package/dist/components/link/index.js +2 -0
  212. package/dist/components/list/index.d.ts +9 -0
  213. package/dist/components/list/index.js +3 -0
  214. package/dist/components/list/list-item.utils.js +1 -1
  215. package/dist/components/list/list.js +3 -1
  216. package/dist/components/list-details/index.d.ts +51 -0
  217. package/dist/components/list-details/index.js +2 -0
  218. package/dist/components/list-details/list-details.js +5 -2
  219. package/dist/components/lottie-animation-container/index.d.ts +10 -0
  220. package/dist/components/lottie-animation-container/index.js +2 -0
  221. package/dist/components/lottie-animation-container/lottie-animation-container.js +22 -3
  222. package/dist/components/lottie-animations/index.d.ts +8 -0
  223. package/dist/components/lottie-animations/index.js +2 -0
  224. package/dist/components/markdown-content/index.d.ts +32 -0
  225. package/dist/components/markdown-content/index.js +2 -0
  226. package/dist/components/media-card/index.d.ts +125 -0
  227. package/dist/components/media-card/index.js +4 -0
  228. package/dist/components/media-card/media-card-image.js +59 -0
  229. package/dist/components/media-card/media-card-reveal.js +76 -0
  230. package/dist/components/media-card/media-card.classes.js +37 -0
  231. package/dist/components/media-card/media-card.js +91 -0
  232. package/dist/components/media-stage/index.d.ts +41 -0
  233. package/dist/components/media-stage/index.js +2 -0
  234. package/dist/components/media-stage/media-stage.js +48 -0
  235. package/dist/components/menu/index.d.ts +14 -0
  236. package/dist/components/menu/index.js +2 -0
  237. package/dist/components/message-scroller/_hooks/use-follow-bottom.js +85 -0
  238. package/dist/components/message-scroller/index.d.ts +29 -0
  239. package/dist/components/message-scroller/index.js +2 -0
  240. package/dist/components/message-scroller/message-scroller.js +65 -0
  241. package/dist/components/mini-bar-chart/index.d.ts +40 -0
  242. package/dist/components/mini-bar-chart/index.js +2 -0
  243. package/dist/components/mini-bar-chart/mini-bar-chart.js +93 -0
  244. package/dist/components/monospace-content/index.d.ts +43 -0
  245. package/dist/components/monospace-content/index.js +2 -0
  246. package/dist/components/monospace-content/monospace-content.js +1 -1
  247. package/dist/components/nav-bar/index.d.ts +148 -0
  248. package/dist/components/nav-bar/index.js +2 -0
  249. package/dist/components/nav-bar/nav-bar-details-panel.js +158 -44
  250. package/dist/components/nav-bar/nav-bar-mobile-menu.js +93 -27
  251. package/dist/components/nav-bar/nav-bar.js +256 -138
  252. package/dist/components/nav-bar/use-nav-bar-hover-details.js +80 -0
  253. package/dist/components/nav-bar/use-nav-bar-overflow.js +5 -5
  254. package/dist/components/notice-strip/index.d.ts +32 -0
  255. package/dist/components/notice-strip/index.js +2 -0
  256. package/dist/components/notice-strip/notice-strip.js +57 -0
  257. package/dist/components/option-card-group/index.d.ts +50 -0
  258. package/dist/components/option-card-group/index.js +2 -0
  259. package/dist/components/option-card-group/option-card-group.js +76 -0
  260. package/dist/components/overflow-badge-list/index.d.ts +63 -0
  261. package/dist/components/overflow-badge-list/index.js +2 -0
  262. package/dist/components/overflow-badge-list/overflow-badge-list.js +78 -19
  263. package/dist/components/page-banner/index.d.ts +33 -0
  264. package/dist/components/page-banner/index.js +2 -0
  265. package/dist/components/page-banner/page-banner.js +56 -0
  266. package/dist/components/page-container/index.d.ts +20 -0
  267. package/dist/components/page-container/index.js +3 -0
  268. package/dist/components/page-container/page-container.js +5 -5
  269. package/dist/components/pagination/index.d.ts +31 -0
  270. package/dist/components/pagination/index.js +3 -0
  271. package/dist/components/popover/index.d.ts +60 -0
  272. package/dist/components/popover/index.js +3 -0
  273. package/dist/components/preview-card/index.d.ts +24 -0
  274. package/dist/components/preview-card/index.js +2 -0
  275. package/dist/components/progress-bar/index.d.ts +32 -0
  276. package/dist/components/progress-bar/index.js +2 -0
  277. package/dist/components/progress-bar/progress-bar.js +22 -6
  278. package/dist/components/radio-group/index.d.ts +24 -0
  279. package/dist/components/radio-group/index.js +2 -0
  280. package/dist/components/rank-numeral/index.d.ts +30 -0
  281. package/dist/components/rank-numeral/index.js +2 -0
  282. package/dist/components/rank-numeral/rank-numeral.js +26 -0
  283. package/dist/components/reaction-button/index.d.ts +32 -0
  284. package/dist/components/reaction-button/index.js +2 -0
  285. package/dist/components/reaction-button/reaction-button.js +50 -0
  286. package/dist/components/readout/index.d.ts +31 -0
  287. package/dist/components/readout/index.js +2 -0
  288. package/dist/components/readout/readout.js +63 -0
  289. package/dist/components/requirement-list/index.d.ts +52 -0
  290. package/dist/components/requirement-list/index.js +2 -0
  291. package/dist/components/requirement-list/requirement-list.js +29 -8
  292. package/dist/components/resizable/index.d.ts +31 -0
  293. package/dist/components/resizable/index.js +4 -0
  294. package/dist/components/resizable/resizable-group.js +23 -0
  295. package/dist/components/resizable/resizable-panel.js +28 -0
  296. package/dist/components/resizable/resizable-separator.js +24 -0
  297. package/dist/components/reveal/index.d.ts +23 -0
  298. package/dist/components/reveal/index.js +2 -0
  299. package/dist/components/reveal/reveal.js +24 -0
  300. package/dist/components/scroll-area/index.d.ts +27 -0
  301. package/dist/components/scroll-area/index.js +2 -0
  302. package/dist/components/scrollable-sections/index.d.ts +58 -0
  303. package/dist/components/scrollable-sections/index.js +2 -0
  304. package/dist/components/scrollable-sections/scrollable-sections.js +11 -3
  305. package/dist/components/search-box/index.d.ts +32 -0
  306. package/dist/components/search-box/index.js +2 -0
  307. package/dist/components/search-box/search-box.js +18 -3
  308. package/dist/components/search-field-shell.js +1 -1
  309. package/dist/components/select/index.d.ts +44 -0
  310. package/dist/components/select/index.js +2 -0
  311. package/dist/components/selectable-card-list/checkbox-card-list.js +5 -3
  312. package/dist/components/selectable-card-list/index.d.ts +76 -0
  313. package/dist/components/selectable-card-list/index.js +2 -0
  314. package/dist/components/selectable-card-list/radio-card-list.js +12 -6
  315. package/dist/components/selectable-card-list/selectable-card-list-shared.js +24 -12
  316. package/dist/components/selectable-card-list/selectable-card-list.js +12 -3
  317. package/dist/components/separator/index.d.ts +24 -0
  318. package/dist/components/separator/index.js +2 -0
  319. package/dist/components/share-menu/index.d.ts +55 -0
  320. package/dist/components/share-menu/index.js +2 -0
  321. package/dist/components/share-menu/share-marks.js +31 -0
  322. package/dist/components/share-menu/share-menu.js +140 -0
  323. package/dist/components/share-menu/share-urls.js +15 -0
  324. package/dist/components/sheet/index.d.ts +41 -0
  325. package/dist/components/sheet/index.js +2 -0
  326. package/dist/components/showcase-card/index.d.ts +53 -0
  327. package/dist/components/showcase-card/index.js +2 -0
  328. package/dist/components/showcase-card/showcase-card.js +75 -0
  329. package/dist/components/sidebar/index.d.ts +109 -0
  330. package/dist/components/sidebar/index.js +4 -0
  331. package/dist/components/sidebar/sidebar.js +56 -40
  332. package/dist/components/simple-clickable-card/index.d.ts +11 -0
  333. package/dist/components/simple-clickable-card/index.js +2 -0
  334. package/dist/components/simple-clickable-card/simple-clickable-card-shared.js +2 -2
  335. package/dist/components/simple-clickable-card/simple-clickable-card.js +5 -2
  336. package/dist/components/simple-info-card/index.d.ts +25 -0
  337. package/dist/components/simple-info-card/index.js +2 -0
  338. package/dist/components/simple-info-card/simple-info-card.js +6 -3
  339. package/dist/components/simple-list/index.d.ts +63 -0
  340. package/dist/components/simple-list/index.js +2 -0
  341. package/dist/components/simple-list/simple-list.js +3 -1
  342. package/dist/components/simple-paginated-list/index.d.ts +20 -0
  343. package/dist/components/simple-paginated-list/index.js +2 -0
  344. package/dist/components/simplified-date/index.d.ts +18 -0
  345. package/dist/components/simplified-date/index.js +2 -0
  346. package/dist/components/skeleton/index.d.ts +5 -0
  347. package/dist/components/skeleton/index.js +2 -0
  348. package/dist/components/skeletons/index.d.ts +11 -0
  349. package/dist/components/skeletons/index.js +2 -0
  350. package/dist/components/sort-menu/index.d.ts +34 -0
  351. package/dist/components/sort-menu/index.js +2 -0
  352. package/dist/components/sort-menu/sort-menu.js +39 -0
  353. package/dist/components/spinner/index.d.ts +15 -0
  354. package/dist/components/spinner/index.js +2 -0
  355. package/dist/components/stat-card/index.d.ts +43 -0
  356. package/dist/components/stat-card/index.js +2 -0
  357. package/dist/components/stat-card/stat-card.js +31 -12
  358. package/dist/components/status-badge/index.d.ts +24 -0
  359. package/dist/components/status-badge/index.js +2 -0
  360. package/dist/components/status-badge/status-badge.js +3 -2
  361. package/dist/components/status-card-list/index.d.ts +24 -0
  362. package/dist/components/status-card-list/index.js +2 -0
  363. package/dist/components/status-card-list/status-card-list.js +8 -4
  364. package/dist/components/step-tabs/index.d.ts +94 -0
  365. package/dist/components/step-tabs/index.js +2 -0
  366. package/dist/components/step-tabs/step-tabs.js +202 -0
  367. package/dist/components/style-scope/index.d.ts +32 -0
  368. package/dist/components/style-scope/index.js +2 -0
  369. package/dist/components/style-scope/style-scope.js +49 -0
  370. package/dist/components/switch/index.d.ts +15 -0
  371. package/dist/components/switch/index.js +2 -0
  372. package/dist/components/table/index.d.ts +18 -0
  373. package/dist/components/table/index.js +2 -0
  374. package/dist/components/tabs/index.d.ts +103 -0
  375. package/dist/components/tabs/index.js +2 -0
  376. package/dist/components/tag/index.d.ts +31 -0
  377. package/dist/components/tag/index.js +2 -0
  378. package/dist/components/tag/tag.js +79 -28
  379. package/dist/components/tag-input/index.d.ts +36 -0
  380. package/dist/components/tag-input/index.js +2 -0
  381. package/dist/components/tag-input/tag-input.js +10 -4
  382. package/dist/components/text-effects/index.d.ts +53 -0
  383. package/dist/components/text-effects/index.js +6 -0
  384. package/dist/components/textarea/index.d.ts +16 -0
  385. package/dist/components/textarea/index.js +2 -0
  386. package/dist/components/thumbnail-strip/index.d.ts +42 -0
  387. package/dist/components/thumbnail-strip/index.js +2 -0
  388. package/dist/components/thumbnail-strip/thumbnail-strip.js +124 -0
  389. package/dist/components/thumbnail-strip/use-scroll-edges.js +41 -0
  390. package/dist/components/time-picker/index.d.ts +13 -0
  391. package/dist/components/time-picker/index.js +2 -0
  392. package/dist/components/timeline/index.d.ts +39 -0
  393. package/dist/components/timeline/index.js +2 -0
  394. package/dist/components/timeline/timeline.js +85 -0
  395. package/dist/components/toast/index.d.ts +56 -0
  396. package/dist/components/toast/index.js +2 -0
  397. package/dist/components/toast/toast.js +42 -32
  398. package/dist/components/togglable-items-list/index.d.ts +28 -0
  399. package/dist/components/togglable-items-list/index.js +2 -0
  400. package/dist/components/toggle-group/index.d.ts +35 -0
  401. package/dist/components/toggle-group/index.js +2 -0
  402. package/dist/components/toolbar/index.d.ts +58 -0
  403. package/dist/components/toolbar/index.js +3 -0
  404. package/dist/components/toolbar/toolbar-button.js +40 -0
  405. package/dist/components/toolbar/toolbar.js +56 -0
  406. package/dist/components/tooltip/index.d.ts +29 -0
  407. package/dist/components/tooltip/index.js +3 -0
  408. package/dist/components/tooltip/tooltip.js +12 -2
  409. package/dist/components/transfer-list/index.d.ts +36 -0
  410. package/dist/components/transfer-list/index.js +2 -0
  411. package/dist/components/transfer-list/transfer-list.js +1 -1
  412. package/dist/components/truncated-line-with-tooltip/index.d.ts +22 -0
  413. package/dist/components/truncated-line-with-tooltip/index.js +2 -0
  414. package/dist/components/truncated-line-with-tooltip/truncated-line-with-tooltip.js +26 -8
  415. package/dist/components/typography/index.d.ts +19 -0
  416. package/dist/components/typography/index.js +3 -0
  417. package/dist/components/use-mobile/index.d.ts +3 -0
  418. package/dist/components/use-mobile/index.js +2 -0
  419. package/dist/components/user-type-badge/index.d.ts +39 -0
  420. package/dist/components/user-type-badge/index.js +3 -0
  421. package/dist/components/user-type-badge/user-type-badge.js +2 -1
  422. package/dist/components/vertical-stepper/index.d.ts +7 -0
  423. package/dist/components/vertical-stepper/index.js +2 -0
  424. package/dist/components/vertical-stepper/vertical-stepper.js +33 -6
  425. package/dist/components/view-toggle/index.d.ts +38 -0
  426. package/dist/components/view-toggle/index.js +2 -0
  427. package/dist/components/view-toggle/view-toggle.js +56 -0
  428. package/dist/core/animate-ui/components/animate/code.js +83 -9
  429. package/dist/core/animate-ui/components/animate/tabs.js +234 -19
  430. package/dist/core/animate-ui/components/animate/tooltip.js +10 -2
  431. package/dist/core/animate-ui/components/base/preview-card.js +20 -3
  432. package/dist/core/animate-ui/components/buttons/copy.js +12 -6
  433. package/dist/core/animate-ui/components/radix/dialog.js +17 -3
  434. package/dist/core/animate-ui/components/radix/dropdown-menu.js +26 -9
  435. package/dist/core/animate-ui/components/radix/sheet.js +20 -4
  436. package/dist/core/animate-ui/components/radix/sidebar.js +9 -9
  437. package/dist/core/animate-ui/components/radix/toggle-group.js +103 -13
  438. package/dist/core/animate-ui/components/radix/toggle.js +5 -5
  439. package/dist/core/animate-ui/primitives/animate/code-block.js +31 -4
  440. package/dist/core/animate-ui/primitives/animate/shiki-highlighter.js +5 -2
  441. package/dist/core/animate-ui/primitives/animate/tabs.js +7 -4
  442. package/dist/core/animate-ui/primitives/animate/tooltip.js +10 -3
  443. package/dist/core/animate-ui/primitives/base/preview-card.js +2 -2
  444. package/dist/core/animate-ui/primitives/base/progress.js +1 -1
  445. package/dist/core/animate-ui/primitives/base/radio.js +3 -3
  446. package/dist/core/animate-ui/primitives/effects/highlight.js +1 -0
  447. package/dist/core/animate-ui/primitives/radix/accordion.js +1 -1
  448. package/dist/core/animate-ui/primitives/radix/dialog.js +6 -3
  449. package/dist/core/animate-ui/primitives/radix/dropdown-menu.js +2 -2
  450. package/dist/core/animate-ui/primitives/radix/sheet.js +7 -3
  451. package/dist/core/animate-ui/primitives/radix/switch.js +2 -2
  452. package/dist/core/animate-ui/primitives/radix/toggle-group.js +2 -2
  453. package/dist/core/badge.js +5 -2
  454. package/dist/core/breadcrumb.js +1 -1
  455. package/dist/core/button/button.js +8 -8
  456. package/dist/core/button/craft-button.js +8 -2
  457. package/dist/core/button.js +17 -7
  458. package/dist/core/card.js +23 -5
  459. package/dist/core/combobox/combobox.js +8 -2
  460. package/dist/core/command.js +3 -3
  461. package/dist/core/form.js +1 -1
  462. package/dist/core/hooks/use-nested-layer-press-guard.js +46 -0
  463. package/dist/core/hooks/use-on-screen.js +33 -0
  464. package/dist/core/hooks/use-prefers-reduced-motion.js +19 -0
  465. package/dist/core/hooks/use-scroll-overflow.js +20 -0
  466. package/dist/core/index.d.ts +30 -5
  467. package/dist/core/index.js +5 -2
  468. package/dist/core/input/input-password.js +13 -9
  469. package/dist/core/input/input.js +38 -12
  470. package/dist/core/input-otp/input-otp.js +9 -5
  471. package/dist/core/popover-group.js +48 -0
  472. package/dist/core/popover-hover.js +127 -0
  473. package/dist/core/popover.js +75 -6
  474. package/dist/core/select.js +50 -19
  475. package/dist/core/table.js +5 -3
  476. package/dist/core/textarea/textarea.js +11 -3
  477. package/dist/data-table/index.d.ts +4 -0
  478. package/dist/data-table/index.js +3 -0
  479. package/dist/date/index.d.ts +11 -0
  480. package/dist/date/index.js +7 -0
  481. package/dist/forms/index.d.ts +4 -0
  482. package/dist/forms/index.js +2 -0
  483. package/dist/icon-avatar.props-RYtw2eSW.d.ts +31 -0
  484. package/dist/icon-text-action-card.props-B2ggncUK.d.ts +53 -0
  485. package/dist/index.d.ts +169 -15
  486. package/dist/index.js +63 -10
  487. package/dist/input-CYI1hhGc.d.ts +38 -0
  488. package/dist/layouts/index.d.ts +132 -8
  489. package/dist/layouts/index.js +3 -1
  490. package/dist/layouts/minimal-workspace-layout/minimal-workspace-layout-context.js +5 -0
  491. package/dist/layouts/minimal-workspace-layout/minimal-workspace-layout.js +404 -0
  492. package/dist/layouts/minimal-workspace-layout/rail-logo.js +90 -0
  493. package/dist/layouts/minimal-workspace-layout/sidebar-trigger.js +42 -0
  494. package/dist/layouts/shared/account-menu-props.js +21 -0
  495. package/dist/layouts/shared/footer-branding.js +34 -0
  496. package/dist/layouts/shared/sidebar-logo.js +59 -0
  497. package/dist/layouts/workspace-layout/account-menu/account-menu.js +9 -3
  498. package/dist/layouts/workspace-layout/footer/footer.js +1 -1
  499. package/dist/layouts/workspace-layout/header/header.js +1 -1
  500. package/dist/layouts/workspace-layout/workspace-layout.js +28 -80
  501. package/dist/{list.props-x1j3CbcF.d.ts → list.props-DP_xPTqU.d.ts} +2 -1
  502. package/dist/markdown/index.d.ts +11 -0
  503. package/dist/markdown/index.js +5 -0
  504. package/dist/my-account-menu.props-C7DK71WC.d.ts +67 -0
  505. package/dist/page-container.props-JutTvKFq.d.ts +48 -0
  506. package/dist/resizable.props-RxFY5tm_.d.ts +44 -0
  507. package/dist/section-card-B7c5uc08.d.ts +84 -0
  508. package/dist/simple-clickable-card.props-BrPCw7CR.d.ts +51 -0
  509. package/dist/slot-DGErA9zi.d.ts +10 -0
  510. package/dist/status-badge.props-lKlEOfRt.d.ts +32 -0
  511. package/dist/style-axes-DSQ2DGc5.d.ts +133 -0
  512. package/dist/toast/index.d.ts +6 -0
  513. package/dist/toast/index.js +2 -0
  514. package/dist/tooltip-C0bYa8a3.d.ts +37 -0
  515. package/dist/{types-DtUxK-Am.d.ts → types-CkXflqg7.d.ts} +31 -1
  516. package/dist/utils/cn.js +6 -1
  517. package/dist/utils/color.js +35 -10
  518. package/dist/utils/index.d.ts +18 -2
  519. package/dist/utils/index.js +4 -1
  520. package/dist/utils/silver-shine.js +16 -1
  521. package/dist/utils/style-axes.js +227 -0
  522. package/dist/utils/variant.js +104 -8
  523. package/dist/utils/view-transition.js +21 -0
  524. package/dist/variant-D81RhpbR.d.ts +104 -0
  525. package/dist/vertical-stepper.props-BXYcbW70.d.ts +29 -0
  526. package/package.json +52 -6
  527. package/src/styles/colors.css +100 -4
  528. package/src/styles/globals.css +8 -131
  529. package/src/styles/style-axes.css +21 -0
  530. package/src/styles/theme.css +696 -0
  531. package/dist/app-logo.props-Ct7QBdTd.d.ts +0 -40
  532. package/dist/popover-ByLD3-Qv.d.ts +0 -204
@@ -0,0 +1,60 @@
1
+ import * as React from 'react';
2
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
3
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
4
+
5
+ interface PopoverProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {
6
+ /**
7
+ * Also open when a mouse rests on the trigger or focus lands on it, and stay
8
+ * open while the pointer is over the content. A click still toggles it, so
9
+ * touch screens (which have no hover) open it the usual way; a click on a
10
+ * popover that hover opened keeps it open instead of closing it.
11
+ */
12
+ openOnHover?: boolean;
13
+ /** Milliseconds the pointer rests before a hover opens it. Defaults to 120. */
14
+ openDelay?: number;
15
+ /** Milliseconds after the pointer leaves before it closes. Defaults to 150. */
16
+ closeDelay?: number;
17
+ /**
18
+ * Inside a PopoverGroup: this popover's key, what the group's `value` and
19
+ * `onValueChange` name. Defaults to a generated one. Ignored outside a group.
20
+ */
21
+ value?: string;
22
+ }
23
+ declare function Popover({ openOnHover, openDelay, closeDelay, open: openProp, defaultOpen, onOpenChange, value, ...props }: PopoverProps): React.JSX.Element;
24
+ declare const PopoverTrigger: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
25
+ declare const PopoverAnchor: React.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React.RefAttributes<HTMLDivElement>>;
26
+ declare const PopoverContent: React.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & Pick<StyleAxisProps, "radius" | "elevation"> & {
27
+ /**
28
+ * Render the content in a portal at the document body. Defaults to `true`.
29
+ * Set `false` to render inline in the DOM tree, e.g. to keep the content
30
+ * within a specific stacking context. Positioning is unaffected either way:
31
+ * Radix Popper uses a fixed strategy.
32
+ */
33
+ portal?: boolean;
34
+ } & React.RefAttributes<HTMLDivElement>>;
35
+
36
+ interface PopoverGroupProps {
37
+ /** The `value` of the open popover, or null for none. Controlled. */
38
+ value?: string | null;
39
+ /** The open popover when uncontrolled. Defaults to none. */
40
+ defaultValue?: string | null;
41
+ /** Called when a popover in the group opens (its `value`) or the open one closes (null). */
42
+ onValueChange?: (value: string | null) => void;
43
+ /**
44
+ * Milliseconds the pointer must rest on another trigger before its popover
45
+ * replaces the open one. Longer than a first open, so crossing triggers on
46
+ * the way to the open content does not switch it. Defaults to 350.
47
+ */
48
+ switchDelay?: number;
49
+ children: React.ReactNode;
50
+ }
51
+ /**
52
+ * Popovers that share one place on screen: at most one is open, and with
53
+ * `openOnHover` a hover moves the open panel from trigger to trigger with
54
+ * intent — the first opens after the popover's `openDelay`, another takes over
55
+ * only after `switchDelay`, and reaching the open content cancels a pending
56
+ * switch. For a grid or a row of items that each preview on hover.
57
+ */
58
+ declare function PopoverGroup({ value: valueProp, defaultValue, onValueChange, switchDelay, children, }: PopoverGroupProps): React.JSX.Element;
59
+
60
+ export { Popover, PopoverAnchor, PopoverContent, PopoverGroup, type PopoverGroupProps, type PopoverProps, PopoverTrigger };
@@ -0,0 +1,3 @@
1
+ import { PopoverGroup } from "../../core/popover-group.js";
2
+ import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "../../core/popover.js";
3
+ export { Popover, PopoverAnchor, PopoverContent, PopoverGroup, PopoverTrigger };
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { PreviewCard as PreviewCard$1 } from '@base-ui/react/preview-card';
3
+ import { SpringOptions, HTMLMotionProps } from 'motion/react';
4
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
5
+
6
+ type PreviewCardProps$1 = React.ComponentProps<typeof PreviewCard$1.Root> & {
7
+ followCursor?: boolean | 'x' | 'y';
8
+ followCursorSpringOptions?: SpringOptions;
9
+ };
10
+ type PreviewCardTriggerProps$1 = React.ComponentProps<typeof PreviewCard$1.Trigger>;
11
+ type PreviewCardPositionerProps = React.ComponentProps<typeof PreviewCard$1.Positioner>;
12
+ type PreviewCardPopupProps = Omit<React.ComponentProps<typeof PreviewCard$1.Popup>, 'render'> & HTMLMotionProps<'div'>;
13
+ type PreviewCardBackdropProps$1 = React.ComponentProps<typeof PreviewCard$1.Backdrop>;
14
+
15
+ type PreviewCardProps = PreviewCardProps$1;
16
+ declare function PreviewCard(props: PreviewCardProps): React.JSX.Element;
17
+ type PreviewCardTriggerProps = PreviewCardTriggerProps$1;
18
+ declare function PreviewCardTrigger(props: PreviewCardTriggerProps): React.JSX.Element;
19
+ type PreviewCardPanelProps = PreviewCardPositionerProps & PreviewCardPopupProps & Pick<StyleAxisProps, 'radius' | 'elevation'>;
20
+ declare function PreviewCardPanel({ className, align, sideOffset, style, children, radius, elevation, ...props }: PreviewCardPanelProps): React.JSX.Element;
21
+ type PreviewCardBackdropProps = PreviewCardBackdropProps$1;
22
+ declare function PreviewCardBackdrop(props: PreviewCardBackdropProps): React.JSX.Element;
23
+
24
+ export { PreviewCard, PreviewCardBackdrop, type PreviewCardBackdropProps, PreviewCardPanel, type PreviewCardPanelProps, type PreviewCardProps, PreviewCardTrigger, type PreviewCardTriggerProps };
@@ -0,0 +1,2 @@
1
+ import { PreviewCard, PreviewCardBackdrop, PreviewCardPanel, PreviewCardTrigger } from "../../core/animate-ui/components/base/preview-card.js";
2
+ export { PreviewCard, PreviewCardBackdrop, PreviewCardPanel, PreviewCardTrigger };
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { Progress } from '@base-ui/react/progress';
3
+ import { C as Color } from '../../index-BQANnKs9.js';
4
+
5
+ type ProgressProps$1 = React.ComponentProps<typeof Progress.Root>;
6
+
7
+ type ProgressProps = ProgressProps$1;
8
+
9
+ type ProgressBarSegment = {
10
+ value: number;
11
+ color: Color;
12
+ label?: string;
13
+ /** Shown on hover over this segment ("5 published with source"). */
14
+ tooltip?: React.ReactNode;
15
+ };
16
+ type ProgressBarProps = Omit<ProgressProps, 'value'> & {
17
+ value?: number;
18
+ showFakeProgress?: boolean;
19
+ label?: string;
20
+ showPercentage?: boolean;
21
+ color?: Color;
22
+ segments?: ProgressBarSegment[];
23
+ /**
24
+ * Segments only: draw each segment as its own rounded piece with a small gap
25
+ * between them, on no track, instead of one bar cut into colours. Reads as
26
+ * "parts of a whole" when neighbouring colours are close.
27
+ */
28
+ gapped?: boolean;
29
+ };
30
+ declare function ProgressBar({ showFakeProgress, value: valueProp, label, showPercentage, color, segments, gapped, className, ...props }: ProgressBarProps): React.JSX.Element;
31
+
32
+ export { ProgressBar, type ProgressBarProps, type ProgressBarSegment };
@@ -0,0 +1,2 @@
1
+ import { ProgressBar } from "./progress-bar.js";
2
+ export { ProgressBar };
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils/cn.js";
3
3
  import { isPresetColor, resolveColor } from "../../utils/color.js";
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
4
5
  import { Progress, ProgressLabel, ProgressTrack, ProgressValue } from "../../core/animate-ui/components/base/progress.js";
5
6
  import * as React$1 from "react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -31,7 +32,7 @@ var presetIndicatorBgMap = {
31
32
  gray: "bg-gray",
32
33
  mist: "bg-mist"
33
34
  };
34
- function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPercentage = false, color = "primary", segments, className, ...props }) {
35
+ function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPercentage = false, color = "primary", segments, gapped = false, className, ...props }) {
35
36
  const [fakeValue, setFakeValue] = React$1.useState(FAKE_PROGRESS_MIN);
36
37
  const intervalRef = React$1.useRef(null);
37
38
  React$1.useEffect(() => {
@@ -56,7 +57,8 @@ function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPe
56
57
  const showHeader = label != null || showPercentage;
57
58
  if (segments && segments.length > 0) {
58
59
  const total = segments.reduce((sum, s) => sum + Math.max(0, s.value), 0);
59
- return /* @__PURE__ */ jsxs("div", {
60
+ const withTooltips = segments.some((s) => s.tooltip != null);
61
+ const segmented = /* @__PURE__ */ jsxs("div", {
60
62
  className: cn("space-y-2", className),
61
63
  children: [showHeader && /* @__PURE__ */ jsx("div", {
62
64
  className: "flex items-center justify-between gap-1",
@@ -65,27 +67,41 @@ function ProgressBar({ showFakeProgress = false, value: valueProp, label, showPe
65
67
  children: label
66
68
  })
67
69
  }), /* @__PURE__ */ jsx("div", {
68
- className: "bg-mist-border relative h-2 w-full overflow-hidden rounded-full flex",
70
+ className: cn("relative flex h-2 w-full", gapped ? "gap-0.5" : "bg-mist-border overflow-hidden rounded-full"),
69
71
  children: total === 0 ? null : segments.map((seg, idx) => {
70
72
  const widthPct = Math.max(0, seg.value) / total * 100;
71
73
  if (widthPct === 0) return null;
72
74
  const isPreset = isPresetColor(seg.color);
73
- return /* @__PURE__ */ jsx("div", {
74
- className: cn("h-full", isPreset ? presetIndicatorBgMap[seg.color] : void 0),
75
+ const bar = /* @__PURE__ */ jsx("div", {
76
+ className: cn("h-full", gapped && "rounded-full", isPreset ? presetIndicatorBgMap[seg.color] : void 0),
75
77
  style: {
76
78
  width: `${widthPct}%`,
77
79
  ...isPreset ? {} : resolveColor(seg.color, "bg").style
78
80
  },
79
81
  "aria-label": seg.label
80
82
  }, idx);
83
+ if (seg.tooltip == null) return bar;
84
+ return /* @__PURE__ */ jsxs(Tooltip, {
85
+ side: "top",
86
+ sideOffset: 6,
87
+ children: [/* @__PURE__ */ jsx(TooltipTrigger, {
88
+ asChild: true,
89
+ children: bar
90
+ }), /* @__PURE__ */ jsx(TooltipContent, { children: seg.tooltip })]
91
+ }, idx);
81
92
  })
82
93
  })]
83
94
  });
95
+ return withTooltips ? /* @__PURE__ */ jsx(TooltipProvider, {
96
+ openDelay: 0,
97
+ closeDelay: 0,
98
+ children: segmented
99
+ }) : segmented;
84
100
  }
85
101
  return /* @__PURE__ */ jsxs(Progress, {
86
102
  value: (showFakeProgress ? fakeValue : valueProp) ?? 0,
87
103
  max: 100,
88
- className: cn("space-y-2", className),
104
+ className: cn("space-y-2 [&>[data-slot=progress-track]]:mb-0", className),
89
105
  ...props,
90
106
  children: [showHeader && /* @__PURE__ */ jsxs("div", {
91
107
  className: "flex items-center justify-between gap-1",
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { S as Size } from '../../index-BQANnKs9.js';
4
+
5
+ interface RadioOption {
6
+ value: string;
7
+ label: string | ReactNode;
8
+ disabled?: boolean;
9
+ }
10
+ type RadioGroupSize = Size;
11
+ interface RadioGroupProps {
12
+ options: RadioOption[];
13
+ value?: string;
14
+ defaultValue?: string;
15
+ onValueChange?: (value: string) => void;
16
+ orientation?: 'horizontal' | 'vertical';
17
+ disabled?: boolean;
18
+ className?: string;
19
+ size?: RadioGroupSize;
20
+ }
21
+
22
+ declare function RadioGroup({ options, value, defaultValue, onValueChange, orientation, disabled, className, size, }: RadioGroupProps): React.JSX.Element;
23
+
24
+ export { RadioGroup, type RadioGroupProps, type RadioGroupSize, type RadioOption };
@@ -0,0 +1,2 @@
1
+ import { RadioGroup } from "./radio-group.js";
2
+ export { RadioGroup };
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+
3
+ type RankNumeralSize = "default" | "lg";
4
+ type RankNumeralFill = "none" | "card";
5
+ interface RankNumeralProps {
6
+ /** The rank to draw (1, 2, 3…). */
7
+ value: number;
8
+ /** `default` is 72px, `lg` 128px. Default `default`. */
9
+ size?: RankNumeralSize;
10
+ /**
11
+ * Inside the outline: `none` lets the background through (a flat tint);
12
+ * `card` fills it with the card colour so it reads over a photo. Default `none`.
13
+ */
14
+ fill?: RankNumeralFill;
15
+ /**
16
+ * Position and colour. The outline is drawn in the text colour
17
+ * (`text-primary`, `text-white`…); place it with absolute classes — it is
18
+ * made to bleed off the bottom edge of a media block (`absolute -bottom-6 left-3`).
19
+ */
20
+ className?: string;
21
+ }
22
+
23
+ /**
24
+ * A large outlined numeral for a ranked list — the "1", "2", "3" a top-N
25
+ * shelf draws in the corner of each card. Decorative: it is hidden from
26
+ * assistive technology, so the card's own accessible name must carry the rank.
27
+ */
28
+ declare function RankNumeral({ value, size, fill, className }: RankNumeralProps): React.JSX.Element;
29
+
30
+ export { RankNumeral, type RankNumeralFill, type RankNumeralProps, type RankNumeralSize };
@@ -0,0 +1,2 @@
1
+ import { RankNumeral } from "./rank-numeral.js";
2
+ export { RankNumeral };
@@ -0,0 +1,26 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/rank-numeral/rank-numeral.tsx
4
+ var SIZE = {
5
+ default: "text-7xl [-webkit-text-stroke-width:1.5px]",
6
+ lg: "text-9xl [-webkit-text-stroke-width:2px]"
7
+ };
8
+ var FILL = {
9
+ none: "[-webkit-text-fill-color:transparent]",
10
+ card: "[-webkit-text-fill-color:var(--color-card)]"
11
+ };
12
+ /**
13
+ * A large outlined numeral for a ranked list — the "1", "2", "3" a top-N
14
+ * shelf draws in the corner of each card. Decorative: it is hidden from
15
+ * assistive technology, so the card's own accessible name must carry the rank.
16
+ */
17
+ function RankNumeral({ value, size = "default", fill = "none", className }) {
18
+ return /* @__PURE__ */ jsx("span", {
19
+ "aria-hidden": true,
20
+ "data-slot": "rank-numeral",
21
+ className: cn("pointer-events-none select-none font-extrabold leading-none tracking-tighter tabular-nums", "[-webkit-text-stroke-color:currentColor]", FILL[fill], SIZE[size], className),
22
+ children: value
23
+ });
24
+ }
25
+ //#endregion
26
+ export { RankNumeral };
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { ReactElement } from 'react';
3
+ import { P as PresetColor } from '../../index-BQANnKs9.js';
4
+
5
+ interface ReactionButtonProps {
6
+ /** Whether the viewer has reacted (a like, an upvote, a want). */
7
+ pressed: boolean;
8
+ /** How many have reacted, the viewer included. */
9
+ count: number;
10
+ /** Called with the new state on click. */
11
+ onPressedChange: (pressed: boolean) => void;
12
+ /** The mark — a Lucide element such as `<Heart />`. Filled while pressed. */
13
+ icon: ReactElement<{
14
+ className?: string;
15
+ }>;
16
+ /** The accessible name for a state and count ("I want Desk clock, 3 so far"). */
17
+ ariaLabel: (pressed: boolean, count: number) => string;
18
+ /** Default `secondary`. */
19
+ color?: PresetColor;
20
+ disabled?: boolean;
21
+ className?: string;
22
+ }
23
+
24
+ /**
25
+ * A reaction with its count: a like, an upvote, "I want this too". Switching
26
+ * it ON is celebrated once — the mark pops, a ring spreads, six dots burst out
27
+ * and the count ticks into place; switching it off plays nothing. Motion only
28
+ * when the person allows it.
29
+ */
30
+ declare function ReactionButton({ pressed, count, onPressedChange, icon, ariaLabel, color, disabled, className, }: ReactionButtonProps): React.JSX.Element;
31
+
32
+ export { ReactionButton, type ReactionButtonProps };
@@ -0,0 +1,2 @@
1
+ import { ReactionButton } from "./reaction-button.js";
2
+ export { ReactionButton };
@@ -0,0 +1,50 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { Button } from "../button/button.js";
3
+ import { cloneElement, useState } from "react";
4
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/reaction-button/reaction-button.tsx
6
+ /**
7
+ * A reaction with its count: a like, an upvote, "I want this too". Switching
8
+ * it ON is celebrated once — the mark pops, a ring spreads, six dots burst out
9
+ * and the count ticks into place; switching it off plays nothing. Motion only
10
+ * when the person allows it.
11
+ */
12
+ function ReactionButton({ pressed, count, onPressedChange, icon, ariaLabel, color = "secondary", disabled, className }) {
13
+ const [popping, setPopping] = useState(false);
14
+ function handleClick() {
15
+ setPopping(!pressed);
16
+ onPressedChange(!pressed);
17
+ }
18
+ return /* @__PURE__ */ jsx(Button, {
19
+ variant: "outline",
20
+ color,
21
+ size: "sm",
22
+ fullWidth: false,
23
+ "aria-pressed": pressed,
24
+ "aria-label": ariaLabel(pressed, count),
25
+ disabled,
26
+ onClick: handleClick,
27
+ className: cn("relative gap-1.5 overflow-visible tabular-nums", className),
28
+ startIcon: /* @__PURE__ */ jsxs("span", {
29
+ className: "relative inline-flex",
30
+ children: [cloneElement(icon, {
31
+ "aria-hidden": true,
32
+ className: cn(icon.props.className, pressed && "fill-current", popping && "motion-safe:animate-heart-pop"),
33
+ onAnimationEnd: () => setPopping(false)
34
+ }), popping && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
35
+ "aria-hidden": true,
36
+ className: "pointer-events-none absolute inset-0 hidden rounded-full border-2 border-current motion-safe:block motion-safe:animate-espd-ripple"
37
+ }), /* @__PURE__ */ jsx("span", {
38
+ "aria-hidden": true,
39
+ className: "pointer-events-none absolute top-1/2 left-1/2 hidden size-1 -translate-1/2 rounded-full motion-safe:block motion-safe:animate-sparkle"
40
+ })] })]
41
+ }),
42
+ children: /* @__PURE__ */ jsx("span", {
43
+ "data-slot": "reaction-count",
44
+ className: cn("inline-block", popping && "motion-safe:animate-rise-in"),
45
+ children: count
46
+ }, count)
47
+ });
48
+ }
49
+ //#endregion
50
+ export { ReactionButton };
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+
3
+ /** One value on the plate, with its unit beside it in a dimmer ink. */
4
+ interface ReadoutSegment {
5
+ value: string;
6
+ unit?: string;
7
+ /** What the value is ("Pitch"): drawn before it when the plate is `labelled`, and its tooltip either way. */
8
+ label?: string;
9
+ }
10
+ interface ReadoutProps {
11
+ segments: readonly ReadoutSegment[];
12
+ /** `selected`: its controls are open. `error`: the part did not answer. `stale`: not live yet (set before power-on). */
13
+ state?: "normal" | "selected" | "error" | "stale";
14
+ /** Draw each value's label before it, in a dimmer ink: for a plate with no drawing beside it to say what two numbers are. */
15
+ labelled?: boolean;
16
+ /** A button that opens the part's controls; without it, a plain display. */
17
+ onClick?: () => void;
18
+ /** Read out in full, with words for the units ("Room sensor, 23.1 degrees, 45.5 percent humidity"). */
19
+ "aria-label"?: string;
20
+ className?: string;
21
+ }
22
+
23
+ /**
24
+ * An instrument's display: values in a monospace ink on a dark plate, each
25
+ * with its unit beside it. The plate carries the dark theme itself (`.dark`),
26
+ * so it reads as the same instrument in both themes, like artwork — and stays
27
+ * made of tokens. With `onClick` it is a real (toggle) button.
28
+ */
29
+ declare function Readout({ segments, state, labelled, onClick, "aria-label": label, className }: ReadoutProps): React.JSX.Element;
30
+
31
+ export { Readout, type ReadoutProps, type ReadoutSegment };
@@ -0,0 +1,2 @@
1
+ import { Readout } from "./readout.js";
2
+ export { Readout };
@@ -0,0 +1,63 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/components/readout/readout.tsx
4
+ var STATE = {
5
+ normal: "border-border",
6
+ selected: "border-primary ring-1 ring-primary",
7
+ error: "border-error",
8
+ stale: "border-border opacity-70"
9
+ };
10
+ function Segments({ segments, error, labelled }) {
11
+ return segments.map((segment, i) => /* @__PURE__ */ jsxs("span", {
12
+ title: segment.label,
13
+ className: cn("flex items-baseline gap-1 px-1.5", i > 0 && "border-l border-border"),
14
+ children: [
15
+ labelled && segment.label && /* @__PURE__ */ jsx("span", {
16
+ className: "font-sans text-foreground-secondary",
17
+ children: segment.label
18
+ }),
19
+ /* @__PURE__ */ jsx("span", {
20
+ className: error ? "text-error" : "text-success",
21
+ children: segment.value
22
+ }),
23
+ segment.unit && /* @__PURE__ */ jsx("span", {
24
+ className: "text-foreground-secondary",
25
+ children: segment.unit
26
+ })
27
+ ]
28
+ }, i));
29
+ }
30
+ /**
31
+ * An instrument's display: values in a monospace ink on a dark plate, each
32
+ * with its unit beside it. The plate carries the dark theme itself (`.dark`),
33
+ * so it reads as the same instrument in both themes, like artwork — and stays
34
+ * made of tokens. With `onClick` it is a real (toggle) button.
35
+ */
36
+ function Readout({ segments, state = "normal", labelled = false, onClick, "aria-label": label, className }) {
37
+ const classes = cn("dark inline-flex h-6 items-center rounded-xs border bg-background font-mono text-xs leading-none tabular-nums", STATE[state], className);
38
+ if (!onClick) return /* @__PURE__ */ jsx("span", {
39
+ "aria-label": label,
40
+ "data-slot": "readout",
41
+ className: classes,
42
+ children: /* @__PURE__ */ jsx(Segments, {
43
+ segments,
44
+ error: state === "error",
45
+ labelled
46
+ })
47
+ });
48
+ return /* @__PURE__ */ jsx("button", {
49
+ type: "button",
50
+ "aria-label": label,
51
+ "aria-pressed": state === "selected",
52
+ onClick,
53
+ "data-slot": "readout",
54
+ className: cn(classes, "cursor-pointer outline-none hover:border-primary focus-visible:ring-2 focus-visible:ring-ring"),
55
+ children: /* @__PURE__ */ jsx(Segments, {
56
+ segments,
57
+ error: state === "error",
58
+ labelled
59
+ })
60
+ });
61
+ }
62
+ //#endregion
63
+ export { Readout };
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ type RequirementListSize = "sm" | "default" | "lg";
5
+ /** One requirement, already resolved to display text and a pass/fail state. */
6
+ interface RequirementListItem {
7
+ /** Stable identifier, used as the list key. */
8
+ id: string;
9
+ /** Display text for the requirement, e.g. "Must contain an uppercase letter". */
10
+ label: string;
11
+ /** Whether the requirement is currently satisfied. */
12
+ met: boolean;
13
+ /**
14
+ * A second, quieter line under the label: what the requirement means, or an
15
+ * example of meeting it ("A relay, an LED, a temperature sensor"). Muted in
16
+ * both states, so only the label carries met/unmet.
17
+ */
18
+ description?: string;
19
+ }
20
+ interface RequirementListProps extends Omit<HTMLAttributes<HTMLUListElement>, "children"> {
21
+ items: RequirementListItem[];
22
+ /** Defaults to "sm" — the size that reads as helper text under a field. */
23
+ size?: RequirementListSize;
24
+ /** Screen-reader suffix for satisfied rows. Defaults to "Requirement met". */
25
+ metLabel?: string;
26
+ /** Screen-reader suffix for unsatisfied rows. Defaults to "Requirement not met". */
27
+ unmetLabel?: string;
28
+ /**
29
+ * Whether to announce state changes as they happen. Defaults to `true`, which is
30
+ * right for a checklist that updates while the user types. Set `false` when the
31
+ * list is static, so it is not announced as a live region for no reason.
32
+ */
33
+ live?: boolean;
34
+ className?: string;
35
+ }
36
+
37
+ /**
38
+ * Live checklist of requirements a value does and does not yet satisfy — password
39
+ * policy rules, plan prerequisites, upload conditions.
40
+ *
41
+ * Pure: labels arrive already translated and the pass/fail state is computed by the
42
+ * caller, so the component knows nothing about the rules themselves.
43
+ *
44
+ * Each row carries a screen-reader-only state label. Without it the met/unmet
45
+ * distinction would be conveyed only by icon shape and colour, both invisible to a
46
+ * screen reader, and the polite live region would have no text change to announce.
47
+ *
48
+ * Carries no outer spacing so the surface hosting it owns its placement.
49
+ */
50
+ declare const RequirementList: React.ForwardRefExoticComponent<RequirementListProps & React.RefAttributes<HTMLUListElement>>;
51
+
52
+ export { RequirementList, type RequirementListItem, type RequirementListProps, type RequirementListSize };
@@ -0,0 +1,2 @@
1
+ import { RequirementList } from "./requirement-list.js";
2
+ export { RequirementList };
@@ -17,25 +17,39 @@ var stateVisuals = {
17
17
  textClass: "text-muted-foreground"
18
18
  }
19
19
  };
20
- /** Aligned with SimpleList / VerticalStepper size scales. */
20
+ /**
21
+ * Aligned with SimpleList / VerticalStepper size scales. `iconTop` centres the
22
+ * icon on the label's first line when a description makes the row two lines
23
+ * (the row then aligns to the top); `description` is one step smaller than
24
+ * the label, `describedRowGap` the roomier spacing two-line rows need.
25
+ */
21
26
  var sizeStyles = {
22
27
  sm: {
23
28
  text: "text-xs",
24
29
  icon: "h-3.5 w-3.5 shrink-0",
25
30
  gap: "gap-2",
26
- rowGap: "gap-1"
31
+ rowGap: "gap-1",
32
+ iconTop: "mt-px",
33
+ description: "text-xs",
34
+ describedRowGap: "gap-2"
27
35
  },
28
36
  default: {
29
37
  text: "text-sm",
30
38
  icon: "size-4 shrink-0",
31
39
  gap: "gap-2",
32
- rowGap: "gap-1.5"
40
+ rowGap: "gap-1.5",
41
+ iconTop: "mt-0.5",
42
+ description: "text-xs",
43
+ describedRowGap: "gap-2.5"
33
44
  },
34
45
  lg: {
35
46
  text: "text-base",
36
47
  icon: "size-5 shrink-0",
37
48
  gap: "gap-2.5",
38
- rowGap: "gap-2"
49
+ rowGap: "gap-2",
50
+ iconTop: "mt-0.5",
51
+ description: "text-sm",
52
+ describedRowGap: "gap-3"
39
53
  }
40
54
  };
41
55
  /**
@@ -53,22 +67,29 @@ var sizeStyles = {
53
67
  */
54
68
  var RequirementList = forwardRef(function RequirementList({ items, size = "sm", metLabel = "Requirement met", unmetLabel = "Requirement not met", live = true, className, ...rest }, ref) {
55
69
  const styles = sizeStyles[size];
70
+ const described = items.some((item) => item.description);
56
71
  return /* @__PURE__ */ jsx("ul", {
57
72
  ref,
58
73
  "aria-live": live ? "polite" : void 0,
59
74
  ...rest,
60
- className: cn("flex flex-col", styles.rowGap, className),
75
+ className: cn("flex flex-col", described ? styles.describedRowGap : styles.rowGap, className),
61
76
  children: items.map((item) => {
62
77
  const visuals = stateVisuals[item.met ? "met" : "unmet"];
63
78
  const Icon = visuals.icon;
64
79
  return /* @__PURE__ */ jsxs("li", {
65
- className: cn("flex items-center transition-colors", styles.gap, styles.text, visuals.textClass),
80
+ className: cn("flex transition-colors", item.description ? "items-start" : "items-center", styles.gap, styles.text, visuals.textClass),
66
81
  children: [
67
82
  /* @__PURE__ */ jsx(Icon, {
68
- className: styles.icon,
83
+ className: cn(styles.icon, item.description && styles.iconTop),
69
84
  "aria-hidden": true
70
85
  }),
71
- item.label,
86
+ item.description ? /* @__PURE__ */ jsxs("span", {
87
+ className: "flex min-w-0 flex-col gap-0.5",
88
+ children: [/* @__PURE__ */ jsx("span", { children: item.label }), /* @__PURE__ */ jsx("span", {
89
+ className: cn(styles.description, "text-muted-foreground"),
90
+ children: item.description
91
+ })]
92
+ }) : item.label,
72
93
  /* @__PURE__ */ jsx("span", {
73
94
  className: "sr-only",
74
95
  children: item.met ? metLabel : unmetLabel
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { R as ResizableGroupProps, c as ResizablePanelProps, d as ResizableSeparatorProps } from '../../resizable.props-RxFY5tm_.js';
3
+ export { P as PanelSize, a as ResizableLayout, b as ResizablePanelHandle } from '../../resizable.props-RxFY5tm_.js';
4
+ import 'react-resizable-panels';
5
+
6
+ /**
7
+ * A row or column of panels the person can resize by dragging the separators
8
+ * between them (react-resizable-panels, which also makes every separator a
9
+ * keyboard control). The group fills its parent; give the parent a height.
10
+ * Compose with `ResizablePanel` and `ResizableSeparator`.
11
+ */
12
+ declare function ResizableGroup({ orientation, children, defaultLayout, onLayoutChanged, id, className }: ResizableGroupProps): React.JSX.Element;
13
+
14
+ /**
15
+ * One panel of a `ResizableGroup`. It clips its content, so what is inside
16
+ * scrolls itself (give it `h-full min-h-0`). react-resizable-panels writes
17
+ * `overflow: auto` inline on every panel, which puts a native scrollbar on
18
+ * the panel the moment its content runs a pixel over; `overflow` is the one
19
+ * inline style it allows overriding, and it takes `!important` to win.
20
+ */
21
+ declare function ResizablePanel({ id, children, collapsible, collapsedSize, collapsedThreshold, defaultSize, minSize, maxSize, panelRef, className }: ResizablePanelProps): React.JSX.Element;
22
+
23
+ /**
24
+ * The handle between two panels: a hairline on the page, a wider strip to the
25
+ * pointer, lit in the primary colour while it is pointed at, held or focused.
26
+ * Keyboard: arrows step, Home/End go to the ends, Enter collapses a
27
+ * collapsible neighbour (react-resizable-panels' own behaviour).
28
+ */
29
+ declare function ResizableSeparator({ label, orientation, className }: ResizableSeparatorProps): React.JSX.Element;
30
+
31
+ export { ResizableGroup, ResizableGroupProps, ResizablePanel, ResizablePanelProps, ResizableSeparator, ResizableSeparatorProps };