@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,32 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ type NoticeTone = "info" | "warning" | "error";
5
+ interface NoticeStripProps {
6
+ /** Which colour the strip is: the kind of news it carries. */
7
+ tone: NoticeTone;
8
+ title: ReactNode;
9
+ description?: ReactNode;
10
+ /** Buttons, at the right of the content. */
11
+ actions?: ReactNode;
12
+ /** With it, a ✕ at the strip's far end; the caller hides the strip. */
13
+ onDismiss?: () => void;
14
+ /** The ✕'s accessible name ("Dismiss"). */
15
+ dismissLabel?: string;
16
+ className?: string;
17
+ }
18
+
19
+ /**
20
+ * One line of news across the top of a canvas, in the glow of the colour
21
+ * that says what kind (a solid fill is too strong over a dark drawing): a
22
+ * strip the full width of its container, its words and buttons centred in a
23
+ * 1180px measure (`max-w-295`), the ✕ at the strip's far end. The tint sits
24
+ * on an opaque base, so what is under the strip never shows through a 4 %
25
+ * wash. An `Alert` carries the content (title, description, the actions at
26
+ * the right), drawn without its icon, corners, border or background — the
27
+ * strip is the background — and tighter than a card. An error is an `alert`,
28
+ * anything else a `status`.
29
+ */
30
+ declare function NoticeStrip({ tone, title, description, actions, onDismiss, dismissLabel, className }: NoticeStripProps): React.JSX.Element;
31
+
32
+ export { NoticeStrip, type NoticeStripProps, type NoticeTone };
@@ -0,0 +1,2 @@
1
+ import { NoticeStrip } from "./notice-strip.js";
2
+ export { NoticeStrip };
@@ -0,0 +1,57 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { Alert } from "../alert/alert.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { X } from "lucide-react";
5
+ //#region src/components/notice-strip/notice-strip.tsx
6
+ /** The `glow` variant's recipe for the colour (as `resolveVariantStyles` writes it), on the strip itself: the Alert inside is see-through, so one tint runs edge to edge. */
7
+ var TONE = {
8
+ info: "border-info/15 bg-info/4 text-info shadow-glow shadow-info/45",
9
+ warning: "border-warning/15 bg-warning/4 text-warning shadow-glow shadow-warning/45",
10
+ error: "border-error/15 bg-error/4 text-error shadow-glow shadow-error/45"
11
+ };
12
+ /**
13
+ * One line of news across the top of a canvas, in the glow of the colour
14
+ * that says what kind (a solid fill is too strong over a dark drawing): a
15
+ * strip the full width of its container, its words and buttons centred in a
16
+ * 1180px measure (`max-w-295`), the ✕ at the strip's far end. The tint sits
17
+ * on an opaque base, so what is under the strip never shows through a 4 %
18
+ * wash. An `Alert` carries the content (title, description, the actions at
19
+ * the right), drawn without its icon, corners, border or background — the
20
+ * strip is the background — and tighter than a card. An error is an `alert`,
21
+ * anything else a `status`.
22
+ */
23
+ function NoticeStrip({ tone, title, description, actions, onDismiss, dismissLabel, className }) {
24
+ return /* @__PURE__ */ jsx("div", {
25
+ role: tone === "error" ? "alert" : "status",
26
+ "data-slot": "notice-strip",
27
+ className: cn("relative w-full border-b bg-background", className),
28
+ children: /* @__PURE__ */ jsxs("div", {
29
+ className: cn("relative w-full", TONE[tone], onDismiss && "pr-10 sm:pl-10"),
30
+ children: [/* @__PURE__ */ jsx(Alert, {
31
+ type: tone,
32
+ variant: "glow",
33
+ size: "sm",
34
+ radius: "none",
35
+ hideIcon: true,
36
+ title,
37
+ ...description ? { description: /* @__PURE__ */ jsx("span", {
38
+ className: "text-xs leading-snug",
39
+ children: description
40
+ }) } : {},
41
+ ...actions ? { actions } : {},
42
+ className: "mx-auto flex max-w-295 border-0 bg-transparent py-1.5 shadow-none"
43
+ }), onDismiss && /* @__PURE__ */ jsx("button", {
44
+ type: "button",
45
+ "aria-label": dismissLabel,
46
+ onClick: onDismiss,
47
+ className: "absolute top-1/2 right-2 inline-flex size-7 -translate-y-1/2 cursor-pointer items-center justify-center rounded-(--espd-radius-control) text-current opacity-70 outline-none hover:bg-current/10 hover:opacity-100 focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-current",
48
+ children: /* @__PURE__ */ jsx(X, {
49
+ "aria-hidden": true,
50
+ className: "h-4 w-4"
51
+ })
52
+ })]
53
+ })
54
+ });
55
+ }
56
+ //#endregion
57
+ export { NoticeStrip };
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ /** A chip under a card's description: what the choice includes. */
5
+ interface OptionCardGroupTag {
6
+ key: string;
7
+ /** Already translated. Drawn as a small `StatusBadge`. */
8
+ label: string;
9
+ /**
10
+ * What THIS choice adds over the others ("+ Source"): grey like the rest
11
+ * until its card is chosen, then primary.
12
+ */
13
+ emphasis?: boolean;
14
+ }
15
+ interface OptionCardGroupItem {
16
+ id: string;
17
+ /** Already translated. Also the radio's accessible name. */
18
+ title: string;
19
+ description?: ReactNode;
20
+ /** An icon beside the title (a Lucide element), set on a small tile. Decorative. */
21
+ media?: ReactNode;
22
+ tags?: OptionCardGroupTag[];
23
+ disabled?: boolean;
24
+ }
25
+ interface OptionCardGroupProps {
26
+ items: OptionCardGroupItem[];
27
+ /** The chosen id; empty or null while nothing is chosen. */
28
+ value: string | null;
29
+ onValueChange: (id: string) => void;
30
+ /** The radios' shared `name`; one is made when omitted. */
31
+ name?: string;
32
+ "aria-label"?: string;
33
+ "aria-labelledby"?: string;
34
+ /** Every card at once, as while the choice cannot be made yet. */
35
+ disabled?: boolean;
36
+ className?: string;
37
+ }
38
+
39
+ /**
40
+ * A choice between a few things that each need an icon and a sentence (how
41
+ * much to share, which plan, which way to start): compact cards side by side,
42
+ * wrapping one under the other on a narrow screen — an icon tile beside the
43
+ * title, the description, and what it includes as status badges. A native
44
+ * radio group, so the arrow keys move the choice; the chosen card carries a
45
+ * primary ring, and its emphasised badges ("+ Source") turn primary to show
46
+ * what it adds.
47
+ */
48
+ declare function OptionCardGroup({ items, value, onValueChange, name, disabled, className, ...aria }: OptionCardGroupProps): React.JSX.Element;
49
+
50
+ export { OptionCardGroup, type OptionCardGroupItem, type OptionCardGroupProps, type OptionCardGroupTag };
@@ -0,0 +1,2 @@
1
+ import { OptionCardGroup } from "./option-card-group.js";
2
+ export { OptionCardGroup };
@@ -0,0 +1,76 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { StatusBadge } from "../status-badge/status-badge.js";
3
+ import { useId } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/option-card-group/option-card-group.tsx
6
+ function Card({ item, name, chosen, disabled, onChoose }) {
7
+ const off = disabled || item.disabled === true;
8
+ return /* @__PURE__ */ jsxs("label", {
9
+ "data-state": chosen ? "checked" : "unchecked",
10
+ className: cn("relative flex flex-col gap-3 rounded-xl border bg-card p-4 text-card-foreground transition-[border-color,background-color,box-shadow] duration-200", chosen ? "border-primary bg-primary/5 ring-2 ring-primary/20" : "border-border", off ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:border-foreground/25", "has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-2 has-[:focus-visible]:outline-primary"),
11
+ children: [
12
+ /* @__PURE__ */ jsx("input", {
13
+ type: "radio",
14
+ name,
15
+ value: item.id,
16
+ checked: chosen,
17
+ disabled: off,
18
+ "aria-label": item.title,
19
+ onChange: onChoose,
20
+ className: "absolute top-4 right-4 size-4.5 cursor-pointer appearance-none rounded-full border-2 border-border bg-background transition-[border-width,border-color] checked:border-5 checked:border-primary disabled:cursor-not-allowed focus-visible:outline-none"
21
+ }),
22
+ /* @__PURE__ */ jsxs("span", {
23
+ className: "flex items-center gap-3 pr-7",
24
+ children: [item.media && /* @__PURE__ */ jsx("span", {
25
+ "aria-hidden": true,
26
+ className: cn("flex size-9 shrink-0 items-center justify-center rounded-lg [&_svg]:size-4.5", chosen ? "bg-primary/10 text-primary" : "bg-muted text-foreground"),
27
+ children: item.media
28
+ }), /* @__PURE__ */ jsx("span", {
29
+ className: "text-base font-semibold",
30
+ children: item.title
31
+ })]
32
+ }),
33
+ item.description && /* @__PURE__ */ jsx("span", {
34
+ className: "text-sm leading-relaxed text-muted-foreground",
35
+ children: item.description
36
+ }),
37
+ item.tags && item.tags.length > 0 && /* @__PURE__ */ jsx("ul", {
38
+ className: "m-0 flex list-none flex-wrap gap-1.5 p-0",
39
+ children: item.tags.map((tag) => /* @__PURE__ */ jsx("li", {
40
+ "data-emphasis": tag.emphasis ? "true" : void 0,
41
+ children: /* @__PURE__ */ jsx(StatusBadge, {
42
+ size: "sm",
43
+ label: tag.label,
44
+ color: tag.emphasis && chosen ? "primary" : "gray"
45
+ })
46
+ }, tag.key))
47
+ })
48
+ ]
49
+ });
50
+ }
51
+ /**
52
+ * A choice between a few things that each need an icon and a sentence (how
53
+ * much to share, which plan, which way to start): compact cards side by side,
54
+ * wrapping one under the other on a narrow screen — an icon tile beside the
55
+ * title, the description, and what it includes as status badges. A native
56
+ * radio group, so the arrow keys move the choice; the chosen card carries a
57
+ * primary ring, and its emphasised badges ("+ Source") turn primary to show
58
+ * what it adds.
59
+ */
60
+ function OptionCardGroup({ items, value, onValueChange, name, disabled = false, className, ...aria }) {
61
+ const fallback = useId();
62
+ return /* @__PURE__ */ jsx("div", {
63
+ role: "radiogroup",
64
+ ...aria,
65
+ className: cn("grid grid-cols-[repeat(auto-fit,minmax(min(16rem,100%),1fr))] gap-4", className),
66
+ children: items.map((item) => /* @__PURE__ */ jsx(Card, {
67
+ item,
68
+ name: name ?? fallback,
69
+ chosen: value === item.id,
70
+ disabled,
71
+ onChoose: () => onValueChange(item.id)
72
+ }, item.id))
73
+ });
74
+ }
75
+ //#endregion
76
+ export { OptionCardGroup };
@@ -0,0 +1,63 @@
1
+ import * as React from 'react';
2
+ import { LucideIcon } from 'lucide-react';
3
+ import { S as StatusBadgeIcon } from '../../status-badge.props-lKlEOfRt.js';
4
+ import { C as Color, S as Size, P as PresetColor } from '../../index-BQANnKs9.js';
5
+ import { f as Variant } from '../../variant-D81RhpbR.js';
6
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
7
+
8
+ type OverflowBadgeListColor = Extract<PresetColor, "warning" | "success" | "info" | "error" | "gray">;
9
+ /** A badge with its own icon and, optionally, its own colour. */
10
+ interface OverflowBadgeListItem {
11
+ /** Stable key. Defaults to `label`. */
12
+ id?: string;
13
+ /** Already-translated label. Also listed in the overflow tooltip. */
14
+ label: string;
15
+ /** Leading icon of this badge. A Lucide component or a pre-sized element. */
16
+ icon?: StatusBadgeIcon;
17
+ /** Overrides `badgeColor` for this badge (e.g. `"gray"` for an inactive entry). */
18
+ color?: Color;
19
+ }
20
+ /** Style axis `radius`: every badge in the list. */
21
+ interface OverflowBadgeListProps extends Pick<StyleAxisProps, "radius"> {
22
+ /**
23
+ * Plain strings, or objects carrying a per-badge icon and colour. The two
24
+ * forms can be mixed.
25
+ */
26
+ items: Array<string | OverflowBadgeListItem>;
27
+ /** Icon of the first plain-string badge. Object items use their own `icon`. */
28
+ icon?: LucideIcon;
29
+ /**
30
+ * Colour of every badge: the presets in `OverflowBadgeListColor`, or any
31
+ * other `Color` a badge takes (`"silver"`, a CSS colour).
32
+ */
33
+ badgeColor: Color;
34
+ /** Badge surface treatment. Default: `"outline"`. */
35
+ badgeVariant?: Variant;
36
+ /** `StatusBadge` size of every badge. Default: `"default"`. */
37
+ badgeSize?: Size;
38
+ /** Maximum badges rendered before the overflow label. Default: `1`. */
39
+ maxBadgesToShow?: number;
40
+ noneLabel: string;
41
+ /** Shown when `items.length > maxBadgesToShow`; typically `t(..., { count: items.length - maxBadgesToShow })`. */
42
+ andMoreLabel: string;
43
+ /**
44
+ * Keep every badge on one line: the row never wraps, and the last visible
45
+ * badge shrinks with an ellipsis so the overflow label always fits.
46
+ * Default: `false` (badges wrap).
47
+ */
48
+ singleLine?: boolean;
49
+ /**
50
+ * How the overflow label is drawn. Either value makes it a button that opens
51
+ * a popover of the HIDDEN items on hover, focus or tap (touch has no hover):
52
+ * `"text"` as dotted-underlined text, `"badge"` as a badge in the list's own
53
+ * style. Unset keeps the original: text with a hover tooltip of every item.
54
+ */
55
+ overflowAs?: "text" | "badge";
56
+ /** Extra classes on every badge (e.g. `font-mono` for part numbers). */
57
+ badgeClassName?: string;
58
+ className?: string;
59
+ }
60
+
61
+ declare function OverflowBadgeList({ items, icon, badgeColor, badgeVariant, badgeSize, maxBadgesToShow, noneLabel, andMoreLabel, className, radius, singleLine, overflowAs, badgeClassName, }: OverflowBadgeListProps): React.JSX.Element;
62
+
63
+ export { OverflowBadgeList, type OverflowBadgeListColor, type OverflowBadgeListItem, type OverflowBadgeListProps };
@@ -0,0 +1,2 @@
1
+ import { OverflowBadgeList } from "./overflow-badge-list.js";
2
+ export { OverflowBadgeList };
@@ -1,5 +1,6 @@
1
1
  import { cn } from "../../utils/cn.js";
2
2
  import Tooltip from "../tooltip/tooltip.js";
3
+ import { Popover, PopoverContent, PopoverTrigger } from "../../core/popover.js";
3
4
  import { StatusBadge } from "../status-badge/status-badge.js";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/components/overflow-badge-list/overflow-badge-list.tsx
@@ -17,7 +18,43 @@ function resolveBadge(item, index, defaultIcon, defaultColor) {
17
18
  color: item.color ?? defaultColor
18
19
  };
19
20
  }
20
- function OverflowBadgeList({ items, icon, badgeColor, badgeVariant = "outline", badgeSize = "default", maxBadgesToShow = 1, noneLabel, andMoreLabel, className }) {
21
+ /** The overflow label as a button: hover, focus or a tap lists the hidden items. */
22
+ function OverflowPopover({ as, label, hidden, badgeVariant, badgeSize, badgeColor, badgeClassName, radius }) {
23
+ return /* @__PURE__ */ jsxs(Popover, {
24
+ openOnHover: true,
25
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, {
26
+ className: cn("shrink-0 cursor-pointer rounded-full outline-none focus-visible:ring-2 focus-visible:ring-ring", as === "badge" && "inline-flex", as === "text" && "text-sm text-muted-foreground underline decoration-dotted underline-offset-2"),
27
+ children: as === "badge" ? /* @__PURE__ */ jsx(StatusBadge, {
28
+ radius,
29
+ label,
30
+ variant: badgeVariant,
31
+ color: badgeColor,
32
+ size: badgeSize,
33
+ className: badgeClassName
34
+ }) : label
35
+ }), /* @__PURE__ */ jsx(PopoverContent, {
36
+ side: "top",
37
+ align: "start",
38
+ className: "w-auto max-w-xs p-3",
39
+ children: /* @__PURE__ */ jsx("ul", {
40
+ className: "m-0 flex max-h-48 list-none flex-wrap gap-1.5 overflow-y-auto p-0",
41
+ children: hidden.map((badge) => /* @__PURE__ */ jsx("li", {
42
+ className: "min-w-0",
43
+ children: /* @__PURE__ */ jsx(StatusBadge, {
44
+ radius,
45
+ label: badge.label,
46
+ icon: badge.icon,
47
+ variant: badgeVariant,
48
+ color: badge.color,
49
+ size: badgeSize,
50
+ className: badgeClassName
51
+ })
52
+ }, badge.key))
53
+ })
54
+ })]
55
+ });
56
+ }
57
+ function OverflowBadgeList({ items, icon, badgeColor, badgeVariant = "outline", badgeSize = "default", maxBadgesToShow = 1, noneLabel, andMoreLabel, className, radius, singleLine = false, overflowAs, badgeClassName }) {
21
58
  if (items.length === 0) return /* @__PURE__ */ jsx("span", {
22
59
  className: "text-muted-foreground",
23
60
  children: noneLabel
@@ -34,24 +71,46 @@ function OverflowBadgeList({ items, icon, badgeColor, badgeVariant = "outline",
34
71
  }, badge.key))
35
72
  }) : null;
36
73
  return /* @__PURE__ */ jsxs("div", {
37
- className: cn("flex min-w-0 flex-wrap items-center gap-2", className),
38
- children: [visibleBadges.map((badge) => /* @__PURE__ */ jsx(StatusBadge, {
39
- label: badge.label,
40
- icon: badge.icon,
41
- variant: badgeVariant,
42
- color: badge.color,
43
- size: badgeSize,
44
- className: "max-w-[12rem]"
45
- }, badge.key)), hiddenCount > 0 && tooltipContent ? /* @__PURE__ */ jsx(Tooltip, {
46
- content: tooltipContent,
47
- side: "top",
48
- align: "start",
49
- children: /* @__PURE__ */ jsx("span", {
50
- className: "cursor-default shrink-0 text-sm text-muted-foreground underline decoration-dotted underline-offset-2",
51
- tabIndex: 0,
52
- children: andMoreLabel
53
- })
54
- }) : null]
74
+ className: cn("flex min-w-0 items-center gap-2", singleLine ? "flex-nowrap" : "flex-wrap", className),
75
+ children: [
76
+ visibleBadges.map((badge, index) => {
77
+ const node = /* @__PURE__ */ jsx(StatusBadge, {
78
+ radius,
79
+ label: badge.label,
80
+ icon: badge.icon,
81
+ variant: badgeVariant,
82
+ color: badge.color,
83
+ size: badgeSize,
84
+ className: cn(singleLine ? "max-w-full" : "max-w-[12rem]", badgeClassName)
85
+ }, badge.key);
86
+ if (!singleLine) return node;
87
+ return /* @__PURE__ */ jsx("span", {
88
+ "data-slot": "overflow-badge",
89
+ className: cn("flex max-w-[12rem] [&>*]:min-w-0", index === visibleBadges.length - 1 ? "min-w-0 shrink" : "shrink-0"),
90
+ children: node
91
+ }, badge.key);
92
+ }),
93
+ hiddenCount > 0 && overflowAs ? /* @__PURE__ */ jsx(OverflowPopover, {
94
+ as: overflowAs,
95
+ label: andMoreLabel,
96
+ hidden: badges.slice(visibleCount),
97
+ badgeVariant,
98
+ badgeSize,
99
+ badgeColor,
100
+ badgeClassName,
101
+ radius
102
+ }) : null,
103
+ hiddenCount > 0 && !overflowAs && tooltipContent ? /* @__PURE__ */ jsx(Tooltip, {
104
+ content: tooltipContent,
105
+ side: "top",
106
+ align: "start",
107
+ children: /* @__PURE__ */ jsx("span", {
108
+ className: "cursor-default shrink-0 text-sm text-muted-foreground underline decoration-dotted underline-offset-2",
109
+ tabIndex: 0,
110
+ children: andMoreLabel
111
+ })
112
+ }) : null
113
+ ]
55
114
  });
56
115
  }
57
116
  //#endregion
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface PageBannerProps {
5
+ /** A short line above the title, in the brand colour and monospace ("31 makers · 12 builds"). */
6
+ kicker?: ReactNode;
7
+ /** The banner's heading. */
8
+ title: ReactNode;
9
+ /** Heading element. Default `h2`. */
10
+ titleAs?: "h1" | "h2" | "h3";
11
+ /** Id on the heading; the banner is labelled by it. Default: generated. */
12
+ titleId?: string;
13
+ description?: ReactNode;
14
+ /** A row under the description (a stack of faces, a count). */
15
+ meta?: ReactNode;
16
+ /** The call to action, on the right on a wide banner, under the text on a narrow one. */
17
+ action?: ReactNode;
18
+ /**
19
+ * Artwork behind the content (a faint logo). Positioned by the caller with
20
+ * absolute classes; hidden from assistive technology and from the pointer.
21
+ */
22
+ decoration?: ReactNode;
23
+ className?: string;
24
+ }
25
+
26
+ /**
27
+ * An outlined banner at the top of a page or tab: a kicker, a title and a
28
+ * line of description on the left, a call to action on the right, optional
29
+ * artwork behind. Stacks into one column on a narrow screen.
30
+ */
31
+ declare function PageBanner({ kicker, title, titleAs, titleId, description, meta, action, decoration, className }: PageBannerProps): React.JSX.Element;
32
+
33
+ export { PageBanner, type PageBannerProps };
@@ -0,0 +1,2 @@
1
+ import { PageBanner } from "./page-banner.js";
2
+ export { PageBanner };
@@ -0,0 +1,56 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { Typography } from "../typography/typography.js";
3
+ import { useId } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/page-banner/page-banner.tsx
6
+ /**
7
+ * An outlined banner at the top of a page or tab: a kicker, a title and a
8
+ * line of description on the left, a call to action on the right, optional
9
+ * artwork behind. Stacks into one column on a narrow screen.
10
+ */
11
+ function PageBanner({ kicker, title, titleAs = "h2", titleId, description, meta, action, decoration, className }) {
12
+ const generated = useId();
13
+ const headingId = titleId ?? generated;
14
+ return /* @__PURE__ */ jsxs("section", {
15
+ "aria-labelledby": headingId,
16
+ "data-slot": "page-banner",
17
+ className: cn("relative overflow-hidden rounded-3xl border border-primary", className),
18
+ children: [decoration && /* @__PURE__ */ jsx("div", {
19
+ "aria-hidden": true,
20
+ className: "pointer-events-none absolute inset-0",
21
+ children: decoration
22
+ }), /* @__PURE__ */ jsxs("div", {
23
+ className: "relative flex flex-col gap-6 p-6 sm:p-10 md:flex-row md:items-center md:justify-between",
24
+ children: [/* @__PURE__ */ jsxs("div", {
25
+ className: "flex min-w-0 flex-col gap-3.5",
26
+ children: [
27
+ kicker && /* @__PURE__ */ jsx("span", {
28
+ className: "font-mono text-sm font-semibold text-primary",
29
+ children: kicker
30
+ }),
31
+ /* @__PURE__ */ jsx(Typography, {
32
+ id: headingId,
33
+ variant: "h4",
34
+ as: titleAs,
35
+ className: "m-0 font-extrabold tracking-tight text-foreground",
36
+ children: title
37
+ }),
38
+ description && /* @__PURE__ */ jsx(Typography, {
39
+ variant: "body1",
40
+ className: "m-0 max-w-140 text-foreground-secondary",
41
+ children: description
42
+ }),
43
+ meta && /* @__PURE__ */ jsx("div", {
44
+ className: "flex flex-wrap items-center gap-2.5",
45
+ children: meta
46
+ })
47
+ ]
48
+ }), action && /* @__PURE__ */ jsx("div", {
49
+ className: "shrink-0 self-start md:self-center",
50
+ children: action
51
+ })]
52
+ })]
53
+ });
54
+ }
55
+ //#endregion
56
+ export { PageBanner };
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { a as PageContainerProps, P as PageContainerMaxWidth } from '../../page-container.props-JutTvKFq.js';
3
+ export { G as GoBackLinkData } from '../../page-container.props-JutTvKFq.js';
4
+
5
+ declare function PageContainer({ maxWidth, heading, actions, children, className, noGutters, elevateHeading, stickyHeadingOnMobile, revealHeadingOnScrollUp, goBackLinkData, onBack, }: PageContainerProps): React.JSX.Element;
6
+
7
+ interface PageContainerSkeletonProps {
8
+ maxWidth?: PageContainerMaxWidth;
9
+ noGutters?: boolean;
10
+ /** Show a skeleton line for the back link. */
11
+ showBackLink?: boolean;
12
+ /** Show the header row (heading + optional actions). Default true. */
13
+ showHeader?: boolean;
14
+ /** Show a skeleton for the actions slot (e.g. primary button). */
15
+ showActions?: boolean;
16
+ className?: string;
17
+ }
18
+ declare function PageContainerSkeleton({ maxWidth, noGutters, showBackLink, showHeader, showActions, className, }: PageContainerSkeletonProps): React.JSX.Element;
19
+
20
+ export { PageContainer, PageContainerMaxWidth, PageContainerProps, PageContainerSkeleton, type PageContainerSkeletonProps };
@@ -0,0 +1,3 @@
1
+ import PageContainer from "./page-container.js";
2
+ import PageContainerSkeleton from "./page-container-skeleton.js";
3
+ export { PageContainer, PageContainerSkeleton };
@@ -1,11 +1,11 @@
1
1
  import { cn } from "../../utils/cn.js";
2
2
  import { MOBILE_MEDIA_QUERY } from "../../core/hooks/use-mobile.js";
3
- import { Link } from "../link/link.js";
3
+ import { Link as Link$1 } from "../link/link.js";
4
4
  import { useRevealOnScrollUp } from "../../core/hooks/use-reveal-on-scroll-up.js";
5
5
  import { useRef } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
- import { MoveLeft } from "lucide-react";
8
7
  import { motion } from "motion/react";
8
+ import { MoveLeft } from "lucide-react";
9
9
  //#region src/components/page-container/page-container.tsx
10
10
  var maxWidthClasses = {
11
11
  sm: "max-w-2xl",
@@ -17,8 +17,8 @@ var headingTitleClasses = "min-w-0 flex-1 text-2xl text-foreground font-bold tra
17
17
  var headingContentClasses = "min-w-0 flex-1";
18
18
  var stickyHeaderClasses = "sticky top-0 z-11 bg-background/75 backdrop-blur-xs";
19
19
  var stickyHeaderFromMdClasses = "md:sticky md:top-0 md:z-11 md:bg-background/75 md:backdrop-blur-xs";
20
- var elevatedHeaderClasses = "shadow-md shadow-accent/30";
21
- var elevatedHeaderFromMdClasses = "md:shadow-md md:shadow-accent/30";
20
+ var elevatedHeaderClasses = "shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-surface,0_4px_6px_-1px_var(--tw-shadow-color,rgb(0_0_0/0.1)),0_2px_4px_-2px_var(--tw-shadow-color,rgb(0_0_0/0.1))))] shadow-accent/30";
21
+ var elevatedHeaderFromMdClasses = "md:shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-surface,0_4px_6px_-1px_var(--tw-shadow-color,rgb(0_0_0/0.1)),0_2px_4px_-2px_var(--tw-shadow-color,rgb(0_0_0/0.1))))] md:shadow-accent/30";
22
22
  var revealTransitionClasses = "transition-transform duration-200 ease-out motion-reduce:transition-none";
23
23
  function headerPinningClasses({ stickyHeadingOnMobile, elevateHeading, revealEnabled, revealState, animateReveal }) {
24
24
  if (stickyHeadingOnMobile) return cn(stickyHeaderClasses, elevateHeading && elevatedHeaderClasses);
@@ -61,7 +61,7 @@ function PageContainer({ maxWidth, heading, actions, children, className, noGutt
61
61
  })),
62
62
  children: [showBackLink && /* @__PURE__ */ jsx("div", {
63
63
  className: cn(goBackLinkData?.className),
64
- children: /* @__PURE__ */ jsx(Link, {
64
+ children: /* @__PURE__ */ jsx(Link$1, {
65
65
  to: backHref != null && backHref !== "" ? backHref : "#",
66
66
  linkComponent: backHref != null && backHref !== "" && LinkComponent ? LinkComponent : void 0,
67
67
  color: "gray",
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { S as Size } from '../../index-BQANnKs9.js';
3
+
4
+ /**
5
+ * Default page-size choices used by `DataTable`'s page-size selector.
6
+ *
7
+ * `Pagination` itself does not default to this list — omitting `pageSizeOptions`
8
+ * there hides the selector.
9
+ */
10
+ declare const DEFAULT_PAGE_SIZE_OPTIONS: readonly number[];
11
+ interface PaginationProps {
12
+ pageLabel?: string;
13
+ previousLabel?: string;
14
+ nextLabel?: string;
15
+ onPrevPage: () => void;
16
+ onNextPage: () => void;
17
+ hasPrevPage: boolean;
18
+ hasNextPage: boolean;
19
+ disabled?: boolean;
20
+ /** Controls button sizing and container spacing. Defaults to `"default"`. */
21
+ size?: Size;
22
+ currentPageSize: number;
23
+ /** Page sizes offered in the selector. Omit (or pass `[]`) to hide it entirely. */
24
+ pageSizeOptions?: readonly number[];
25
+ onPageSizeChange: (size: number) => void;
26
+ pageSizeOptionLabel?: (size: number) => string;
27
+ }
28
+
29
+ declare function Pagination({ pageLabel, previousLabel, nextLabel, onPrevPage, onNextPage, hasPrevPage, hasNextPage, disabled, currentPageSize, pageSizeOptions, onPageSizeChange, pageSizeOptionLabel, size, }: PaginationProps): React.JSX.Element;
30
+
31
+ export { DEFAULT_PAGE_SIZE_OPTIONS, Pagination, type PaginationProps };
@@ -0,0 +1,3 @@
1
+ import { Pagination } from "./pagination.js";
2
+ import { DEFAULT_PAGE_SIZE_OPTIONS } from "./pagination.props.js";
3
+ export { DEFAULT_PAGE_SIZE_OPTIONS, Pagination };