@espressif/dashboard-ui-components 1.11.2 → 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 +1005 -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 +35 -20
  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,42 @@
1
+ import * as React from 'react';
2
+
3
+ interface ThumbnailStripItem {
4
+ /** Stable key. */
5
+ id: string;
6
+ /** The thumbnail picture. */
7
+ src: string;
8
+ /** What the picture shows ("Day", "The wiring"): read in the thumbnail's name. */
9
+ label: string;
10
+ }
11
+ /** Accessible names. Pass translated strings; English is the fallback. */
12
+ interface ThumbnailStripLabels {
13
+ /** Names the row. Default "Pictures". */
14
+ group: string;
15
+ /** The left arrow. Default "Scroll back". */
16
+ previous: string;
17
+ /** The right arrow. Default "Scroll on". */
18
+ next: string;
19
+ /** One thumbnail, 1-based. Default `Show picture ${index} of ${total}: ${label}`. */
20
+ show: (label: string, index: number, total: number) => string;
21
+ }
22
+ type ThumbnailStripSize = "sm" | "default";
23
+ interface ThumbnailStripProps {
24
+ items: ThumbnailStripItem[];
25
+ /** The picture on show, by index into `items`; its thumbnail is pressed and kept in view. */
26
+ activeIndex: number;
27
+ /** A thumbnail was chosen. */
28
+ onSelect: (index: number) => void;
29
+ /** `sm`: 80×60 thumbnails, for a phone. Default `default` (96×72). */
30
+ size?: ThumbnailStripSize;
31
+ labels?: Partial<ThumbnailStripLabels>;
32
+ className?: string;
33
+ }
34
+
35
+ /**
36
+ * A row of thumbnails under a picture: one per photo, the one on show pressed
37
+ * and kept in view. When the row runs past its edges, the side with more
38
+ * shows an arrow over a fade; nothing is drawn when everything fits.
39
+ */
40
+ declare function ThumbnailStrip({ items, activeIndex, onSelect, size, labels, className }: ThumbnailStripProps): React.JSX.Element;
41
+
42
+ export { ThumbnailStrip, type ThumbnailStripItem, type ThumbnailStripLabels, type ThumbnailStripProps, type ThumbnailStripSize };
@@ -0,0 +1,2 @@
1
+ import { ThumbnailStrip } from "./thumbnail-strip.js";
2
+ export { ThumbnailStrip };
@@ -0,0 +1,124 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { useScrollEdges } from "./use-scroll-edges.js";
3
+ import { useEffect, useRef } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { ChevronLeft, ChevronRight } from "lucide-react";
6
+ //#region src/components/thumbnail-strip/thumbnail-strip.tsx
7
+ var DEFAULT_LABELS = {
8
+ group: "Pictures",
9
+ previous: "Scroll back",
10
+ next: "Scroll on",
11
+ show: (label, index, total) => `Show picture ${index} of ${total}: ${label}`
12
+ };
13
+ var THUMB_SIZES = {
14
+ sm: "h-15 w-20",
15
+ default: "h-18 w-24"
16
+ };
17
+ var PAGE_FRACTION = .8;
18
+ function prefersReducedMotion() {
19
+ return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
20
+ }
21
+ /** Scrolls `el` so `thumb` is inside it, without moving the page (scrollIntoView would). */
22
+ function keepInView(el, thumb) {
23
+ const left = thumb.offsetLeft - el.offsetLeft;
24
+ const right = left + thumb.offsetWidth;
25
+ const behavior = prefersReducedMotion() ? "auto" : "smooth";
26
+ if (left < el.scrollLeft) el.scrollTo({
27
+ left: Math.max(0, left - 8),
28
+ behavior
29
+ });
30
+ else if (right > el.scrollLeft + el.clientWidth) el.scrollTo({
31
+ left: right - el.clientWidth + 8,
32
+ behavior
33
+ });
34
+ }
35
+ /** One side's arrow over a fade into the strip's surface; both there only while that side has more. */
36
+ function Edge({ side, shown, label, onClick }) {
37
+ const Icon = side === "left" ? ChevronLeft : ChevronRight;
38
+ return /* @__PURE__ */ jsx("div", {
39
+ "aria-hidden": !shown,
40
+ className: cn("pointer-events-none absolute inset-y-0 z-10 flex w-16 items-center transition-opacity motion-reduce:transition-none", side === "left" ? "left-0 justify-start rounded-l-xl bg-linear-to-r from-muted from-30% to-transparent pl-2" : "right-0 justify-end rounded-r-xl bg-linear-to-l from-muted from-30% to-transparent pr-2", shown ? "opacity-100" : "opacity-0"),
41
+ children: /* @__PURE__ */ jsx("button", {
42
+ type: "button",
43
+ "aria-label": label,
44
+ tabIndex: shown ? 0 : -1,
45
+ disabled: !shown,
46
+ onClick,
47
+ className: cn("flex size-8 items-center justify-center rounded-full border border-border bg-card text-foreground shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", shown && "pointer-events-auto"),
48
+ children: /* @__PURE__ */ jsx(Icon, {
49
+ "aria-hidden": true,
50
+ className: "size-4"
51
+ })
52
+ })
53
+ });
54
+ }
55
+ /**
56
+ * A row of thumbnails under a picture: one per photo, the one on show pressed
57
+ * and kept in view. When the row runs past its edges, the side with more
58
+ * shows an arrow over a fade; nothing is drawn when everything fits.
59
+ */
60
+ function ThumbnailStrip({ items, activeIndex, onSelect, size = "default", labels, className }) {
61
+ const text = {
62
+ ...DEFAULT_LABELS,
63
+ ...labels
64
+ };
65
+ const scrollerRef = useRef(null);
66
+ const thumbRefs = useRef([]);
67
+ const { canScrollLeft, canScrollRight } = useScrollEdges(scrollerRef, items.length);
68
+ useEffect(() => {
69
+ const el = scrollerRef.current;
70
+ const thumb = thumbRefs.current[activeIndex];
71
+ if (el && thumb) keepInView(el, thumb);
72
+ }, [activeIndex]);
73
+ function scrollBy(direction) {
74
+ const el = scrollerRef.current;
75
+ if (el) el.scrollBy({
76
+ left: direction * el.clientWidth * PAGE_FRACTION,
77
+ behavior: prefersReducedMotion() ? "auto" : "smooth"
78
+ });
79
+ }
80
+ return /* @__PURE__ */ jsxs("div", {
81
+ "data-slot": "thumbnail-strip",
82
+ className: cn("relative rounded-xl bg-muted", className),
83
+ children: [
84
+ /* @__PURE__ */ jsx("div", {
85
+ ref: scrollerRef,
86
+ role: "group",
87
+ "aria-label": text.group,
88
+ className: "flex snap-x gap-2 overflow-x-auto p-2 scrollbar-none",
89
+ children: items.map((item, index) => /* @__PURE__ */ jsx("button", {
90
+ ref: (el) => {
91
+ thumbRefs.current[index] = el;
92
+ },
93
+ type: "button",
94
+ "aria-pressed": index === activeIndex,
95
+ "aria-label": text.show(item.label, index + 1, items.length),
96
+ onClick: () => onSelect(index),
97
+ className: cn("shrink-0 snap-start overflow-hidden rounded-lg border-2 bg-card outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", THUMB_SIZES[size], index === activeIndex ? "border-primary" : "border-transparent opacity-80 hover:opacity-100"),
98
+ children: /* @__PURE__ */ jsx("img", {
99
+ src: item.src,
100
+ alt: "",
101
+ loading: "lazy",
102
+ decoding: "async",
103
+ draggable: false,
104
+ className: "size-full object-cover"
105
+ })
106
+ }, item.id))
107
+ }),
108
+ /* @__PURE__ */ jsx(Edge, {
109
+ side: "left",
110
+ shown: canScrollLeft,
111
+ label: text.previous,
112
+ onClick: () => scrollBy(-1)
113
+ }),
114
+ /* @__PURE__ */ jsx(Edge, {
115
+ side: "right",
116
+ shown: canScrollRight,
117
+ label: text.next,
118
+ onClick: () => scrollBy(1)
119
+ })
120
+ ]
121
+ });
122
+ }
123
+ //#endregion
124
+ export { ThumbnailStrip };
@@ -0,0 +1,41 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ //#region src/components/thumbnail-strip/use-scroll-edges.ts
3
+ var SLACK_PX = 1;
4
+ function edgesOf(el) {
5
+ return {
6
+ canScrollLeft: el.scrollLeft > SLACK_PX,
7
+ canScrollRight: el.scrollLeft + el.clientWidth < el.scrollWidth - SLACK_PX
8
+ };
9
+ }
10
+ /** Whether a horizontal scroller has more to show on either side; follows scrolling and resizing. */
11
+ function useScrollEdges(ref, contentKey) {
12
+ const [edges, setEdges] = useState({
13
+ canScrollLeft: false,
14
+ canScrollRight: false
15
+ });
16
+ const measure = useCallback(() => {
17
+ const el = ref.current;
18
+ if (!el) return;
19
+ const next = edgesOf(el);
20
+ setEdges((prev) => prev.canScrollLeft === next.canScrollLeft && prev.canScrollRight === next.canScrollRight ? prev : next);
21
+ }, [ref]);
22
+ useEffect(() => {
23
+ const el = ref.current;
24
+ if (!el) return;
25
+ measure();
26
+ el.addEventListener("scroll", measure, { passive: true });
27
+ const observer = typeof ResizeObserver === "undefined" ? void 0 : new ResizeObserver(measure);
28
+ observer?.observe(el);
29
+ return () => {
30
+ el.removeEventListener("scroll", measure);
31
+ observer?.disconnect();
32
+ };
33
+ }, [
34
+ ref,
35
+ measure,
36
+ contentKey
37
+ ]);
38
+ return edges;
39
+ }
40
+ //#endregion
41
+ export { useScrollEdges };
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { a as InputProps } from '../../input-CYI1hhGc.js';
3
+ import '../../style-axes-DSQ2DGc5.js';
4
+ import '../../index-BQANnKs9.js';
5
+
6
+ type TimePickerProps = Omit<InputProps, "type" | "endIcon"> & {
7
+ /** When true, do not render the decorative clock icon. */
8
+ hideIcon?: boolean;
9
+ };
10
+
11
+ declare const TimePicker: React.ForwardRefExoticComponent<Omit<TimePickerProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
12
+
13
+ export { TimePicker, type TimePickerProps };
@@ -0,0 +1,2 @@
1
+ import { TimePicker } from "./time-picker.js";
2
+ export { TimePicker };
@@ -0,0 +1,39 @@
1
+ import * as React from 'react';
2
+ import { HTMLAttributes, ReactNode } from 'react';
3
+ import { C as Color } from '../../index-BQANnKs9.js';
4
+
5
+ interface TimelineItem {
6
+ /** Stable key. */
7
+ id: string;
8
+ /** What happened. */
9
+ title: ReactNode;
10
+ /** When — usually a `SimplifiedDate`. Drawn in the mono face under the title. */
11
+ time?: ReactNode;
12
+ /** The dot's colour. Default `primary`. */
13
+ color?: Color;
14
+ }
15
+ interface TimelineLabels {
16
+ /** The button that reveals the next page; `count` is how many it reveals. */
17
+ showMore: (count: number) => string;
18
+ }
19
+ interface TimelineProps extends Omit<HTMLAttributes<HTMLOListElement>, "children"> {
20
+ /** Newest first, as a feed reads. */
21
+ items: readonly TimelineItem[];
22
+ /**
23
+ * Items shown at first, and how many more each "Show more" reveals. Default
24
+ * 5. `Infinity` shows them all with no button.
25
+ */
26
+ pageSize?: number;
27
+ /** Already-translated labels; English when absent. */
28
+ labels?: Partial<TimelineLabels>;
29
+ }
30
+
31
+ /**
32
+ * A short feed of events, newest first: a dot per item on a connecting line,
33
+ * the title, and when under it. Long feeds page — the first `pageSize` items,
34
+ * then "Show N more" reveals the next page and moves focus to its first item,
35
+ * so a keyboard user lands where the new items start.
36
+ */
37
+ declare const Timeline: React.ForwardRefExoticComponent<TimelineProps & React.RefAttributes<HTMLOListElement>>;
38
+
39
+ export { Timeline, type TimelineItem, type TimelineLabels, type TimelineProps };
@@ -0,0 +1,2 @@
1
+ import { Timeline } from "./timeline.js";
2
+ export { Timeline };
@@ -0,0 +1,85 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { resolveColor } from "../../utils/color.js";
3
+ import { Button } from "../button/button.js";
4
+ import * as React$1 from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { ChevronDown } from "lucide-react";
7
+ //#region src/components/timeline/timeline.tsx
8
+ var DEFAULT_PAGE_SIZE = 5;
9
+ var DEFAULT_LABELS = { showMore: (count) => `Show ${count} more` };
10
+ function Dot({ color = "primary" }) {
11
+ const fill = resolveColor(color, "bg");
12
+ return /* @__PURE__ */ jsx("span", {
13
+ "aria-hidden": true,
14
+ className: cn("relative z-10 mt-1.5 size-2 shrink-0 rounded-full ring-4 ring-card", fill.className),
15
+ style: fill.style
16
+ });
17
+ }
18
+ /**
19
+ * A short feed of events, newest first: a dot per item on a connecting line,
20
+ * the title, and when under it. Long feeds page — the first `pageSize` items,
21
+ * then "Show N more" reveals the next page and moves focus to its first item,
22
+ * so a keyboard user lands where the new items start.
23
+ */
24
+ var Timeline = React$1.forwardRef(function Timeline({ items, pageSize = DEFAULT_PAGE_SIZE, labels, className, ...props }, ref) {
25
+ const text = {
26
+ ...DEFAULT_LABELS,
27
+ ...labels
28
+ };
29
+ const [shown, setShown] = React$1.useState(pageSize);
30
+ const focusIndex = React$1.useRef(null);
31
+ const itemRefs = React$1.useRef([]);
32
+ React$1.useEffect(() => {
33
+ if (focusIndex.current === null) return;
34
+ itemRefs.current[focusIndex.current]?.focus();
35
+ focusIndex.current = null;
36
+ }, [shown]);
37
+ const visible = items.slice(0, shown);
38
+ const left = items.length - visible.length;
39
+ const next = Math.min(pageSize, left);
40
+ function showMore() {
41
+ focusIndex.current = visible.length;
42
+ setShown((count) => count + pageSize);
43
+ }
44
+ return /* @__PURE__ */ jsxs("div", {
45
+ className: "flex flex-col gap-3",
46
+ children: [/* @__PURE__ */ jsx("ol", {
47
+ ref,
48
+ className: cn("m-0 flex list-none flex-col p-0", className),
49
+ ...props,
50
+ children: visible.map((item, index) => /* @__PURE__ */ jsxs("li", {
51
+ ref: (node) => {
52
+ itemRefs.current[index] = node;
53
+ },
54
+ tabIndex: -1,
55
+ className: cn("relative flex gap-3 rounded-sm pb-4 outline-none last:pb-0 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background", index >= pageSize && "motion-safe:animate-rise-in"),
56
+ children: [
57
+ index < visible.length - 1 ? /* @__PURE__ */ jsx("span", {
58
+ "aria-hidden": true,
59
+ className: "absolute top-3 bottom-0 left-[3px] w-px bg-border"
60
+ }) : null,
61
+ /* @__PURE__ */ jsx(Dot, { color: item.color }),
62
+ /* @__PURE__ */ jsxs("div", {
63
+ className: "flex min-w-0 flex-col gap-0.5",
64
+ children: [/* @__PURE__ */ jsx("div", {
65
+ className: "min-w-0 text-sm text-foreground [overflow-wrap:anywhere]",
66
+ children: item.title
67
+ }), item.time != null ? /* @__PURE__ */ jsx("div", {
68
+ className: "font-mono text-xs text-foreground-secondary",
69
+ children: item.time
70
+ }) : null]
71
+ })
72
+ ]
73
+ }, item.id))
74
+ }), next > 0 ? /* @__PURE__ */ jsx(Button, {
75
+ variant: "outline",
76
+ size: "sm",
77
+ endIcon: /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": true }),
78
+ onClick: showMore,
79
+ children: text.showMore(next)
80
+ }) : null]
81
+ });
82
+ });
83
+ Timeline.displayName = "Timeline";
84
+ //#endregion
85
+ export { Timeline };
@@ -0,0 +1,56 @@
1
+ import * as sonner from 'sonner';
2
+ import { ToasterProps } from 'sonner';
3
+ import * as React from 'react';
4
+ import { C as Color } from '../../index-BQANnKs9.js';
5
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
6
+ import { f as Variant } from '../../variant-D81RhpbR.js';
7
+
8
+ type ToastColor = Color;
9
+ type ToastVariant = Variant;
10
+ type ToastType = "error" | "info" | "warning" | "success";
11
+ type ToastId = string | number;
12
+ /** `radius` and `elevation` shape this toast (overlay role tokens otherwise). */
13
+ interface ToastProps extends Pick<StyleAxisProps, "radius" | "elevation"> {
14
+ icon?: React.ReactNode;
15
+ title?: React.ReactNode;
16
+ children?: React.ReactNode;
17
+ /** Semantic category: sets the default icon and color when not provided. */
18
+ type?: ToastType;
19
+ color?: ToastColor;
20
+ hideIcon?: boolean;
21
+ action?: React.ReactNode;
22
+ className?: string;
23
+ variant?: ToastVariant;
24
+ }
25
+ interface ToastOptions {
26
+ id?: ToastId;
27
+ duration?: number;
28
+ position?: ToasterProps["position"];
29
+ toasterId?: string;
30
+ dismissible?: boolean;
31
+ closeButton?: boolean;
32
+ }
33
+ type ToastInput = React.ReactNode | ToastProps;
34
+ type ToastToasterProps = ToasterProps & {
35
+ /**
36
+ * Default surface variant for all toasts rendered under this toaster.
37
+ * Individual `toast()` calls can still set `variant` to override.
38
+ */
39
+ toastVariant?: ToastVariant;
40
+ };
41
+
42
+ declare const Toast: React.ForwardRefExoticComponent<ToastProps & React.RefAttributes<HTMLDivElement>>;
43
+ declare const Toaster: React.ForwardRefExoticComponent<sonner.ToasterProps & {
44
+ toastVariant?: ToastVariant;
45
+ } & React.RefAttributes<HTMLElement>>;
46
+ declare function show(input: ToastInput, options?: ToastOptions): string | number;
47
+ declare const toast: typeof show & {
48
+ show: typeof show;
49
+ success: (input: ToastInput, options?: ToastOptions) => string | number;
50
+ error: (input: ToastInput, options?: ToastOptions) => string | number;
51
+ info: (input: ToastInput, options?: ToastOptions) => string | number;
52
+ warning: (input: ToastInput, options?: ToastOptions) => string | number;
53
+ dismiss: (id?: number | string) => string | number;
54
+ };
55
+
56
+ export { Toast, type ToastColor, type ToastId, type ToastInput, type ToastOptions, type ToastProps, type ToastToasterProps, type ToastType, type ToastVariant, Toaster, toast };
@@ -0,0 +1,2 @@
1
+ import { Toast, Toaster, toast } from "./toast.js";
2
+ export { Toast, Toaster, toast };
@@ -1,6 +1,7 @@
1
1
  import { cn } from "../../utils/cn.js";
2
2
  import { isPresetColor } from "../../utils/color.js";
3
3
  import { resolveVariantStyles } from "../../utils/variant.js";
4
+ import { useStyleAxes } from "../../utils/style-axes.js";
4
5
  import { VariantGradientUnderlay } from "../../utils/variant-gradient-underlay.js";
5
6
  import * as React$1 from "react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -27,7 +28,7 @@ function defaultIconFromColor(color) {
27
28
  return type != null ? typeIconMap[type] : void 0;
28
29
  }
29
30
  function isToastProps(input) {
30
- return input != null && typeof input === "object" && !React$1.isValidElement(input) && ("title" in input || "children" in input || "type" in input || "color" in input || "icon" in input || "hideIcon" in input || "action" in input || "variant" in input);
31
+ return input != null && typeof input === "object" && !React$1.isValidElement(input) && ("title" in input || "children" in input || "type" in input || "color" in input || "icon" in input || "hideIcon" in input || "action" in input || "variant" in input || "radius" in input || "elevation" in input);
31
32
  }
32
33
  function normalizeToastInput(input, type) {
33
34
  if (isToastProps(input)) return {
@@ -49,44 +50,53 @@ function resolveToastOptions(props, options) {
49
50
  closeButton: options?.closeButton
50
51
  };
51
52
  }
52
- var Toast = React$1.forwardRef(({ icon, title, children, type, color, variant, hideIcon = false, action, className }, ref) => {
53
+ var Toast = React$1.forwardRef(({ icon, title, children, type, color, variant, hideIcon = false, action, className, radius, elevation }, ref) => {
53
54
  const defaultVariantFromToaster = React$1.useContext(ToastDefaultVariantContext);
54
55
  const resolvedVariant = variant ?? defaultVariantFromToaster ?? "soft";
55
56
  const resolvedColor = color ?? type ?? "primary";
56
57
  const resolvedIcon = icon ?? (type != null ? typeIconMap[type] : void 0) ?? (color != null ? defaultIconFromColor(color) : void 0) ?? /* @__PURE__ */ jsx(CircleAlert, { className: "h-4 w-4" });
57
58
  const showIcon = !hideIcon && resolvedIcon != null;
58
59
  const styles = resolveVariantStyles(resolvedVariant, resolvedColor);
59
- return /* @__PURE__ */ jsxs("div", {
60
+ const axes = useStyleAxes({
61
+ radius,
62
+ elevation
63
+ }, ["radius", "elevation"]);
64
+ return /* @__PURE__ */ jsx("div", {
60
65
  ref,
61
- className: cn("relative flex w-full min-w-[min(20rem,calc(100vw-2rem))] max-w-[min(24rem,calc(100vw-2rem))] items-start gap-3 overflow-hidden rounded-lg px-4 py-3 shadow-lg", styles.container, className),
62
- style: styles.containerStyle,
63
- children: [
64
- /* @__PURE__ */ jsx(VariantGradientUnderlay, {
65
- layers: styles.gradientHoverLayers,
66
- layersInline: styles.gradientHoverLayersInline,
67
- silverShine: styles.silverShine,
68
- silverBorder: styles.silverBorder
69
- }),
70
- showIcon && /* @__PURE__ */ jsx("div", {
71
- className: "mt-0.5 shrink-0",
72
- children: resolvedIcon
73
- }),
74
- /* @__PURE__ */ jsxs("div", {
75
- className: "flex min-w-0 flex-1 flex-col gap-1",
76
- children: [title && /* @__PURE__ */ jsx("div", {
77
- className: "font-medium leading-normal text-sm",
78
- children: title
79
- }), children && /* @__PURE__ */ jsx("div", {
80
- className: cn("text-sm leading-normal", styles.description),
81
- style: styles.descriptionStyle,
82
- children
83
- })]
84
- }),
85
- action && /* @__PURE__ */ jsx("div", {
86
- className: "shrink-0",
87
- children: action
88
- })
89
- ]
66
+ className: cn("relative w-full min-w-[min(20rem,calc(100vw-2rem))] max-w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-[var(--espd-own-radius,var(--espd-radius-overlay,var(--radius-lg)))] bg-popover text-popover-foreground shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-overlay,var(--shadow-lg)))]", className),
67
+ style: axes.style,
68
+ children: /* @__PURE__ */ jsxs("div", {
69
+ "data-slot": "toast-surface",
70
+ className: cn("relative flex w-full items-start gap-3 overflow-hidden rounded-[inherit] px-4 py-3", styles.container),
71
+ style: styles.containerStyle,
72
+ children: [
73
+ /* @__PURE__ */ jsx(VariantGradientUnderlay, {
74
+ layers: styles.gradientHoverLayers,
75
+ layersInline: styles.gradientHoverLayersInline,
76
+ silverShine: styles.silverShine,
77
+ silverBorder: styles.silverBorder
78
+ }),
79
+ showIcon && /* @__PURE__ */ jsx("div", {
80
+ className: "mt-0.5 shrink-0",
81
+ children: resolvedIcon
82
+ }),
83
+ /* @__PURE__ */ jsxs("div", {
84
+ className: "flex min-w-0 flex-1 flex-col gap-1",
85
+ children: [title && /* @__PURE__ */ jsx("div", {
86
+ className: "font-medium leading-normal text-sm",
87
+ children: title
88
+ }), children && /* @__PURE__ */ jsx("div", {
89
+ className: cn("text-sm leading-normal", styles.description),
90
+ style: styles.descriptionStyle,
91
+ children
92
+ })]
93
+ }),
94
+ action && /* @__PURE__ */ jsx("div", {
95
+ className: "shrink-0",
96
+ children: action
97
+ })
98
+ ]
99
+ })
90
100
  });
91
101
  });
92
102
  Toast.displayName = "Toast";
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { b as ButtonProps } from '../../button-BxJ7s6sR.js';
4
+ import '../../button-BK-DIR_L.js';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+ import '../../style-axes-DSQ2DGc5.js';
8
+ import '../../index-BQANnKs9.js';
9
+
10
+ interface TogglableItem {
11
+ id: string;
12
+ label: string;
13
+ }
14
+ interface TogglableItemsListProps {
15
+ items: TogglableItem[];
16
+ checkedState: Record<string, boolean>;
17
+ onToggle: (id: string, checked: boolean) => void;
18
+ label: string;
19
+ icon: ReactNode;
20
+ triggerButtonVariant?: ButtonProps["variant"];
21
+ triggerButtonColor?: ButtonProps["color"];
22
+ triggerButtonSize?: "default" | "sm" | "lg" | "icon";
23
+ contentAlign?: "start" | "center" | "end";
24
+ contentClassName?: string;
25
+ }
26
+ declare function TogglableItemsList({ items, checkedState, onToggle, label, icon, triggerButtonVariant, triggerButtonColor, triggerButtonSize, contentAlign, contentClassName, }: TogglableItemsListProps): React.JSX.Element;
27
+
28
+ export { type TogglableItem, TogglableItemsList, type TogglableItemsListProps };
@@ -0,0 +1,2 @@
1
+ import { TogglableItemsList } from "./togglable-items-list.js";
2
+ export { TogglableItemsList };
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { ToggleGroup as ToggleGroup$1 } from 'radix-ui';
4
+ import { HTMLMotionProps } from 'motion/react';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
7
+ import { C as Color } from '../../index-BQANnKs9.js';
8
+
9
+ type ToggleGroupProps$1 = React.ComponentProps<typeof ToggleGroup$1.Root>;
10
+ type ToggleGroupItemProps$1 = Omit<React.ComponentProps<typeof ToggleGroup$1.Item>, 'asChild'> & HTMLMotionProps<'button'>;
11
+
12
+ declare const toggleVariants: (props?: ({
13
+ variant?: "default" | "outline" | null | undefined;
14
+ size?: "sm" | "default" | "lg" | "icon" | null | undefined;
15
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
16
+
17
+ /**
18
+ * The group's frame. `default`: the control radius and the input border.
19
+ * `rounded`: a pill. `glow`: a pill whose border and halo take the group's
20
+ * colour — the same as `TabsList variant="glow"`, so the two sit together.
21
+ * `solid`: a pill on a hairline, the selected item filled with the colour —
22
+ * the same as `TabsList variant="solid"`.
23
+ */
24
+ type ToggleGroupVariant = 'default' | 'rounded' | 'glow' | 'solid';
25
+ type ToggleGroupProps = ToggleGroupProps$1 & Pick<VariantProps<typeof toggleVariants>, 'size'> & Pick<StyleAxisProps, 'radius'> & {
26
+ /** Preset theme token or CSS color string — drives the selected item highlight. */
27
+ color?: Color;
28
+ /** The frame: `default`, `rounded` (a pill), `glow` (a pill with a halo in `color`) or `solid` (the selected item filled with `color`). */
29
+ variant?: ToggleGroupVariant;
30
+ };
31
+ declare function ToggleGroup({ className, size, color, variant, children, style, radius, ...props }: ToggleGroupProps): React.JSX.Element;
32
+ type ToggleGroupItemProps = ToggleGroupItemProps$1 & Pick<VariantProps<typeof toggleVariants>, 'size'>;
33
+ declare function ToggleGroupItem({ className, children, size, ...props }: ToggleGroupItemProps): React.JSX.Element;
34
+
35
+ export { ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps, type ToggleGroupVariant };
@@ -0,0 +1,2 @@
1
+ import { ToggleGroup, ToggleGroupItem } from "../../core/animate-ui/components/radix/toggle-group.js";
2
+ export { ToggleGroup, ToggleGroupItem };
@@ -0,0 +1,58 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface ToolbarProps {
5
+ /** The toolbar's accessible name. */
6
+ label: string;
7
+ /** Controls at the start (a menu button, Back, a title). */
8
+ start?: ReactNode;
9
+ /** Controls in the middle, centred whatever the sides hold. */
10
+ center?: ReactNode;
11
+ /** Controls at the end (actions, toggles). */
12
+ end?: ReactNode;
13
+ /**
14
+ * `page` (default): the bar follows the page's theme. `dark`: always dark,
15
+ * whatever the theme — chrome that frames a workspace. Everything inside
16
+ * stays tokens; the bar carries the dark scope.
17
+ */
18
+ tone?: "page" | "dark";
19
+ className?: string;
20
+ }
21
+
22
+ /**
23
+ * A thin bar of small controls across the top of a work area — 44px, so
24
+ * 28px controls (`ToolbarButton`) sit in it with air on both sides. Three
25
+ * slots: the start and end share the width, so the centre is centred on the
26
+ * bar, not between whatever the sides happen to hold. A bottom rule in the
27
+ * border colour every panel edge uses, so the bar and the columns under it
28
+ * read as one grid. Left/Right arrows move between its controls.
29
+ */
30
+ declare function Toolbar({ label, start, center, end, tone, className }: ToolbarProps): React.JSX.Element;
31
+
32
+ interface ToolbarButtonProps {
33
+ /** The accessible name, and the tooltip unless `tooltip` says otherwise. */
34
+ label: string;
35
+ icon: ReactNode;
36
+ onClick: () => void;
37
+ /** A toggle's state (`aria-pressed`); omit for a plain action. */
38
+ pressed?: boolean;
39
+ /** The tooltip, when it should say more than the name (the name with its shortcut). */
40
+ tooltip?: string;
41
+ /** A small count over the icon. Hidden at 0. */
42
+ count?: number;
43
+ /** A dot over the icon: something new behind it. Say so in `label` too; the dot is drawn only. */
44
+ attention?: boolean;
45
+ /** `primary` for the one action that matters most (Run); the rest are quiet. */
46
+ color?: "primary" | "gray";
47
+ disabled?: boolean;
48
+ className?: string;
49
+ }
50
+
51
+ /**
52
+ * A 28px icon-only button for a `Toolbar`: its name is its tooltip, a toggle
53
+ * says whether it is pressed, and a count or a "something new" dot can sit
54
+ * over its icon. Quiet (ghost) unless it is the one primary action.
55
+ */
56
+ declare function ToolbarButton({ label, icon, onClick, pressed, tooltip, count, attention, color, disabled, className }: ToolbarButtonProps): React.JSX.Element;
57
+
58
+ export { Toolbar, ToolbarButton, type ToolbarButtonProps, type ToolbarProps };