@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,90 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import Tooltip from "../../components/tooltip/tooltip.js";
3
+ import { Button } from "../../components/button/button.js";
4
+ import { useSidebar } from "../../core/animate-ui/components/radix/sidebar.js";
5
+ import { linkLogo, renderLogoForState } from "../shared/sidebar-logo.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { PanelLeftClose, PanelLeftOpen } from "lucide-react";
8
+ //#region src/layouts/minimal-workspace-layout/rail-logo.tsx
9
+ /** Every motion in the layout runs on the same clock. */
10
+ var DURATION = "var(--espd-minimal-workspace-layout-duration,450ms)";
11
+ /**
12
+ * Keeps any logo inside its box: images and SVGs scale down to the box's height
13
+ * and width instead of overflowing it.
14
+ */
15
+ var fitLogo = "flex h-full w-full min-w-0 items-center overflow-hidden *:flex *:h-full *:max-w-full *:min-w-0 *:items-center [&_img]:max-h-full [&_img]:max-w-full [&_img]:object-contain [&_svg]:max-h-full [&_svg]:max-w-full";
16
+ var toggleButton = "size-8 shrink-0 text-[color:var(--espd-minimal-workspace-layout-sidebar-foreground,var(--color-foreground))] [&_svg]:transition-transform [&_svg]:duration-[var(--espd-duration-fast,150ms)] motion-reduce:[&_svg]:transition-none";
17
+ /**
18
+ * The logo box at the top of the sidebar.
19
+ *
20
+ * Collapsed: the minimal logo, swapped on hover (or keyboard focus) for an
21
+ * expand button in the same spot. Expanded: the full logo, left-aligned and
22
+ * clipped to the box, with a collapse button on the right. Both logos stay
23
+ * mounted and crossfade, so the swap never reflows the box.
24
+ */
25
+ function RailLogo({ indexPath, linkComponent, sidebarId, expandable, expandLabel, collapseLabel, showCollapse = true, ...sources }) {
26
+ const { state, isMobile, setOpen } = useSidebar();
27
+ const collapsed = state === "collapsed" && !isMobile;
28
+ const minimal = linkLogo(renderLogoForState({
29
+ ...sources,
30
+ collapsed: true
31
+ }), indexPath, linkComponent);
32
+ const full = linkLogo(renderLogoForState({
33
+ ...sources,
34
+ collapsed: false
35
+ }), indexPath, linkComponent);
36
+ const layer = (node, visible, className) => /* @__PURE__ */ jsx("div", {
37
+ className: cn("absolute inset-0 flex items-center py-2 transition-[opacity,scale,visibility] ease-[var(--espd-minimal-workspace-layout-ease,cubic-bezier(0.4,0,0.2,1))] motion-reduce:transition-none", visible ? "opacity-100 scale-100" : "invisible opacity-0 scale-95", className),
38
+ style: { transitionDuration: DURATION },
39
+ children: /* @__PURE__ */ jsx("div", {
40
+ className: fitLogo,
41
+ children: node
42
+ })
43
+ });
44
+ return /* @__PURE__ */ jsxs("div", {
45
+ "data-slot": "minimal-workspace-layout-logo",
46
+ "data-state": collapsed ? "collapsed" : "expanded",
47
+ className: "group/logo relative flex h-full w-full min-w-0 items-center gap-1",
48
+ children: [
49
+ /* @__PURE__ */ jsxs("div", {
50
+ className: "relative h-full min-w-0 flex-1",
51
+ children: [layer(minimal, collapsed, cn("justify-center [&>div]:justify-center [&>div>*]:w-full [&>div>*]:justify-center", expandable && "group-hover/logo:opacity-0 group-hover/logo:scale-90 group-has-[button:focus-visible]/logo:opacity-0")), layer(full, !collapsed, "justify-start")]
52
+ }),
53
+ expandable && collapsed && /* @__PURE__ */ jsx(Tooltip, {
54
+ content: expandLabel,
55
+ side: "right",
56
+ sideOffset: 8,
57
+ children: /* @__PURE__ */ jsx(Button, {
58
+ variant: "ghost",
59
+ size: "icon",
60
+ hideRingOnHover: true,
61
+ "aria-label": expandLabel,
62
+ "aria-expanded": false,
63
+ "aria-controls": sidebarId,
64
+ onClick: () => setOpen(true),
65
+ className: cn(toggleButton, "absolute top-1/2 left-1/2 -translate-1/2 opacity-0 scale-90 transition-[opacity,scale] duration-[var(--espd-duration-fast,150ms)]", "group-hover/logo:opacity-100 group-hover/logo:scale-100 focus-visible:opacity-100 focus-visible:scale-100", "hover:[&_svg]:translate-x-0.5"),
66
+ children: /* @__PURE__ */ jsx(PanelLeftOpen, {})
67
+ })
68
+ }),
69
+ expandable && showCollapse && !collapsed && !isMobile && /* @__PURE__ */ jsx(Tooltip, {
70
+ content: collapseLabel,
71
+ side: "right",
72
+ sideOffset: 8,
73
+ children: /* @__PURE__ */ jsx(Button, {
74
+ variant: "ghost",
75
+ size: "icon",
76
+ hideRingOnHover: true,
77
+ "aria-label": collapseLabel,
78
+ "aria-expanded": true,
79
+ "aria-controls": sidebarId,
80
+ onClick: () => setOpen(false),
81
+ className: cn(toggleButton, "animate-[espd-fade-in_var(--espd-duration-normal,200ms)_ease-out_both] motion-reduce:animate-none", "hover:[&_svg]:-translate-x-0.5"),
82
+ style: { animationDelay: `calc(${DURATION} / 2)` },
83
+ children: /* @__PURE__ */ jsx(PanelLeftClose, {})
84
+ })
85
+ })
86
+ ]
87
+ });
88
+ }
89
+ //#endregion
90
+ export { DURATION, RailLogo };
@@ -0,0 +1,42 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import Tooltip from "../../components/tooltip/tooltip.js";
3
+ import { Button } from "../../components/button/button.js";
4
+ import { useSidebar } from "../../core/animate-ui/components/radix/sidebar.js";
5
+ import { useMinimalWorkspaceLayout } from "./minimal-workspace-layout-context.js";
6
+ import { useEffect } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import { PanelLeftClose, PanelLeftOpen } from "lucide-react";
9
+ //#region src/layouts/minimal-workspace-layout/sidebar-trigger.tsx
10
+ /**
11
+ * A button that opens the sidebar inline and closes it again: the app's own
12
+ * handle on a `hideWhenCollapsed` sidebar, usually placed in `topRightContent`
13
+ * (it also expands and collapses the icon rail). Must render inside
14
+ * `MinimalWorkspaceLayout`. Renders nothing when the sidebar is not
15
+ * `expandable`, and on mobile, where the top bar has its own menu button.
16
+ */
17
+ function MinimalWorkspaceSidebarTrigger({ className, ...props }) {
18
+ const { isMobile, setOpen } = useSidebar();
19
+ const { sidebarId, pinned, expandable, showLabel, hideLabel, registerTrigger } = useMinimalWorkspaceLayout();
20
+ useEffect(() => registerTrigger(), [registerTrigger]);
21
+ if (!expandable || isMobile) return null;
22
+ const label = pinned ? hideLabel : showLabel;
23
+ return /* @__PURE__ */ jsx(Tooltip, {
24
+ content: label,
25
+ side: "bottom",
26
+ children: /* @__PURE__ */ jsx(Button, {
27
+ variant: "ghost",
28
+ size: "icon",
29
+ hideRingOnHover: true,
30
+ "data-sidebar": "trigger",
31
+ "aria-label": label,
32
+ "aria-expanded": pinned,
33
+ "aria-controls": sidebarId,
34
+ className: cn("size-9 shrink-0", className),
35
+ onClick: () => setOpen(!pinned),
36
+ ...props,
37
+ children: pinned ? /* @__PURE__ */ jsx(PanelLeftClose, {}) : /* @__PURE__ */ jsx(PanelLeftOpen, {})
38
+ })
39
+ });
40
+ }
41
+ //#endregion
42
+ export { MinimalWorkspaceSidebarTrigger };
@@ -0,0 +1,21 @@
1
+ //#region src/layouts/shared/account-menu-props.ts
2
+ /** Maps a layout's account-related props onto `AccountMenu`'s. */
3
+ function accountMenuProps({ headerConfig, accountMenuItems, ...rest }) {
4
+ return {
5
+ userName: headerConfig?.userName,
6
+ userEmail: headerConfig?.userEmail,
7
+ userProfilePictureUrl: headerConfig?.userProfilePictureUrl,
8
+ avatarColor: headerConfig?.avatarColor,
9
+ avatarBadgeColor: headerConfig?.avatarBadgeColor,
10
+ onLogoutClick: rest.onLogoutClick,
11
+ onProfileCardClick: rest.onProfileCardClick,
12
+ onColorThemeChange: rest.onColorThemeChange,
13
+ colorTheme: rest.colorTheme,
14
+ onLanguageChange: rest.onLanguageChange,
15
+ languages: rest.languages,
16
+ currentLanguage: rest.currentLanguage,
17
+ additionalItems: accountMenuItems
18
+ };
19
+ }
20
+ //#endregion
21
+ export { accountMenuProps };
@@ -0,0 +1,34 @@
1
+ import { useSidebar } from "../../core/animate-ui/components/radix/sidebar.js";
2
+ import AppLogo from "../../common/app-logo/app-logo.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/layouts/shared/footer-branding.tsx
5
+ function EspressifFooterBranding({ darkMode }) {
6
+ const { state } = useSidebar();
7
+ return /* @__PURE__ */ jsx("a", {
8
+ href: "https://www.espressif.com/",
9
+ target: "_blank",
10
+ rel: "noopener noreferrer",
11
+ className: "no-underline flex justify-center w-full opacity-25 transition-opacity duration-500 ease-in-out hover:opacity-100",
12
+ "aria-label": "Espressif",
13
+ children: /* @__PURE__ */ jsx(AppLogo, {
14
+ width: 120,
15
+ darkMode,
16
+ minimal: state === "collapsed"
17
+ })
18
+ });
19
+ }
20
+ /**
21
+ * Footer branding precedence:
22
+ * 1. Explicit `footerBranding` prop (ReactNode | false) wins.
23
+ * 2. Otherwise, show the Espressif default only when an internal `appName`
24
+ * is set AND `hideCompanyBranding` is not true.
25
+ * 3. Otherwise, nothing.
26
+ */
27
+ function resolveFooterBranding({ footerBranding, appName, hideCompanyBranding, darkMode }) {
28
+ if (footerBranding === false) return null;
29
+ if (footerBranding !== void 0) return footerBranding;
30
+ if (appName && hideCompanyBranding !== true) return /* @__PURE__ */ jsx(EspressifFooterBranding, { darkMode });
31
+ return null;
32
+ }
33
+ //#endregion
34
+ export { EspressifFooterBranding, resolveFooterBranding };
@@ -0,0 +1,59 @@
1
+ import { useSidebar } from "../../core/animate-ui/components/radix/sidebar.js";
2
+ import AppLogo from "../../common/app-logo/app-logo.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/layouts/shared/sidebar-logo.tsx
5
+ /**
6
+ * The sidebar logo for one state. Precedence: the `logo*` node for that state,
7
+ * then `logoAssets`, then the `appName` preset; `null` when none is given.
8
+ */
9
+ function renderLogoForState({ logo, logoCollapsed, logoAssets, appName, darkMode, collapsed }) {
10
+ const nodeOverride = collapsed ? logoCollapsed ?? logo : logo;
11
+ if (nodeOverride !== void 0) return nodeOverride;
12
+ if (logoAssets) return /* @__PURE__ */ jsx(AppLogo, {
13
+ logo: logoAssets,
14
+ darkMode,
15
+ minimal: collapsed
16
+ });
17
+ if (appName) return /* @__PURE__ */ jsx(AppLogo, {
18
+ name: appName,
19
+ darkMode,
20
+ minimal: collapsed
21
+ });
22
+ return null;
23
+ }
24
+ /** Wraps a logo in the app's link to `indexPath` when both are given. */
25
+ function linkLogo(node, indexPath, LinkComponent) {
26
+ if (node === null || node === void 0) return null;
27
+ if (indexPath && LinkComponent) return /* @__PURE__ */ jsx(LinkComponent, {
28
+ to: indexPath,
29
+ className: "no-underline",
30
+ children: node
31
+ });
32
+ return node;
33
+ }
34
+ function SidebarLogo({ indexPath, linkComponent, ...sources }) {
35
+ const { state, isMobile } = useSidebar();
36
+ return linkLogo(renderLogoForState({
37
+ ...sources,
38
+ collapsed: state === "collapsed" && !isMobile
39
+ }), indexPath, linkComponent);
40
+ }
41
+ /**
42
+ * Mobile top-bar logo: `logoMobile`, else a 24px minimal `AppLogo` from
43
+ * `logoAssets` or the `appName` preset, linked to `indexPath`.
44
+ */
45
+ function mobileLogo({ logoMobile, logoAssets, appName, darkMode, indexPath, linkComponent }) {
46
+ return linkLogo(logoMobile ?? (logoAssets ? /* @__PURE__ */ jsx(AppLogo, {
47
+ logo: logoAssets,
48
+ darkMode,
49
+ minimal: true,
50
+ width: 24
51
+ }) : appName ? /* @__PURE__ */ jsx(AppLogo, {
52
+ name: appName,
53
+ darkMode,
54
+ minimal: true,
55
+ width: 24
56
+ }) : null), indexPath, linkComponent);
57
+ }
58
+ //#endregion
59
+ export { SidebarLogo, linkLogo, mobileLogo, renderLogoForState };
@@ -5,14 +5,15 @@ import { useMemo } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { Check, Globe, LogOut, Palette } from "lucide-react";
7
7
  //#region src/layouts/workspace-layout/account-menu/account-menu.tsx
8
- function AccountMenu({ userName, userEmail, userProfilePictureUrl, avatarBadgeColor, onLogoutClick, onProfileCardClick, onColorThemeChange, colorTheme, onLanguageChange, languages, currentLanguage, additionalItems }) {
8
+ function AccountMenu({ userName, userEmail, userProfilePictureUrl, avatarColor, avatarBadgeColor, onLogoutClick, onProfileCardClick, onColorThemeChange, colorTheme, onLanguageChange, languages, currentLanguage, additionalItems, triggerVariant, side, align }) {
9
9
  const menuItems = useMemo(() => {
10
10
  const groups = [];
11
11
  if (userName || userEmail) {
12
12
  const profileCard = /* @__PURE__ */ jsx(ProfileCard, {
13
13
  name: userName,
14
14
  email: userEmail,
15
- imageUrl: userProfilePictureUrl
15
+ imageUrl: userProfilePictureUrl,
16
+ avatarColor
16
17
  }, "profile");
17
18
  groups.push({
18
19
  id: "profile",
@@ -85,6 +86,7 @@ function AccountMenu({ userName, userEmail, userProfilePictureUrl, avatarBadgeCo
85
86
  userName,
86
87
  userEmail,
87
88
  userProfilePictureUrl,
89
+ avatarColor,
88
90
  onProfileCardClick,
89
91
  onColorThemeChange,
90
92
  colorTheme,
@@ -99,9 +101,13 @@ function AccountMenu({ userName, userEmail, userProfilePictureUrl, avatarBadgeCo
99
101
  name: userName,
100
102
  email: userEmail,
101
103
  imageUrl: userProfilePictureUrl,
104
+ avatarColor,
102
105
  badgeColor: avatarBadgeColor,
103
106
  menuItems,
104
- minWidth: "220px"
107
+ minWidth: "220px",
108
+ triggerVariant,
109
+ side,
110
+ align
105
111
  });
106
112
  }
107
113
  //#endregion
@@ -4,7 +4,7 @@ import { jsx } from "react/jsx-runtime";
4
4
  //#region src/layouts/workspace-layout/footer/footer.tsx
5
5
  function Footer({ hidden = false }) {
6
6
  return /* @__PURE__ */ jsx("footer", {
7
- className: cn("bg-sidebar", hidden ? "h-[var(--espd-hidden-footer-height)]" : "h-[var(--espd-footer-height)]"),
7
+ className: cn("bg-sidebar", hidden ? "h-[var(--espd-workspace-layout-hidden-footer-height,var(--espd-hidden-footer-height))]" : "h-[var(--espd-workspace-layout-footer-height,var(--espd-footer-height))]"),
8
8
  children: !hidden && /* @__PURE__ */ jsx("div", {
9
9
  className: "text-[10px] text-muted-foreground h-full flex items-center justify-center tracking-normal",
10
10
  children: /* @__PURE__ */ jsx(FooterCard, {})
@@ -12,7 +12,7 @@ function Header({ leftContent, rightContent, endContent, showSidebarTrigger = fa
12
12
  style: {
13
13
  left: isMobile ? 0 : `calc(${sidebarWidth})`,
14
14
  width: isMobile ? "100%" : `calc(100% - ${sidebarWidth})`,
15
- height: "var(--espd-header-height)"
15
+ height: "var(--espd-shell-header-height,var(--espd-header-height))"
16
16
  },
17
17
  children: /* @__PURE__ */ jsxs("div", {
18
18
  className: "flex h-full items-center gap-3 pr-4",
@@ -1,101 +1,49 @@
1
- import { SidebarInset, SidebarProvider, useSidebar } from "../../core/animate-ui/components/radix/sidebar.js";
1
+ import { SidebarInset, SidebarProvider } from "../../core/animate-ui/components/radix/sidebar.js";
2
2
  import Sidebar from "../../components/sidebar/sidebar.js";
3
- import AppLogo from "../../common/app-logo/app-logo.js";
4
3
  import Header from "./header/header.js";
5
4
  import Footer from "./footer/footer.js";
6
5
  import AccountMenu from "./account-menu/account-menu.js";
7
6
  import WorkspaceBreadcrumbs from "./breadcrumbs/workspace-breadcrumbs.js";
8
7
  import { deriveBreadcrumbs } from "./breadcrumbs/derive-breadcrumbs.js";
8
+ import { SidebarLogo, mobileLogo } from "../shared/sidebar-logo.js";
9
+ import { resolveFooterBranding } from "../shared/footer-branding.js";
10
+ import { accountMenuProps } from "../shared/account-menu-props.js";
9
11
  import { jsx, jsxs } from "react/jsx-runtime";
10
12
  //#region src/layouts/workspace-layout/workspace-layout.tsx
11
- function renderLogoForState({ logo, logoCollapsed, logoAssets, appName, darkMode, collapsed }) {
12
- const nodeOverride = collapsed ? logoCollapsed ?? logo : logo;
13
- if (nodeOverride !== void 0) return nodeOverride;
14
- if (logoAssets) return /* @__PURE__ */ jsx(AppLogo, {
15
- logo: logoAssets,
16
- darkMode,
17
- minimal: collapsed
18
- });
19
- if (appName) return /* @__PURE__ */ jsx(AppLogo, {
20
- name: appName,
21
- darkMode,
22
- minimal: collapsed
23
- });
24
- return null;
25
- }
26
- function SidebarLogo({ logo, logoCollapsed, logoAssets, appName, darkMode, indexPath, linkComponent: LinkComponent }) {
27
- const { state, isMobile } = useSidebar();
28
- const node = renderLogoForState({
29
- logo,
30
- logoCollapsed,
31
- logoAssets,
32
- appName,
33
- darkMode,
34
- collapsed: state === "collapsed" && !isMobile
35
- });
36
- if (node === null) return null;
37
- if (indexPath && LinkComponent) return /* @__PURE__ */ jsx(LinkComponent, {
38
- to: indexPath,
39
- className: "no-underline",
40
- children: node
41
- });
42
- return node;
43
- }
44
- function EspressifFooterBranding({ darkMode }) {
45
- const { state } = useSidebar();
46
- return /* @__PURE__ */ jsx("a", {
47
- href: "https://www.espressif.com/",
48
- target: "_blank",
49
- rel: "noopener noreferrer",
50
- className: "no-underline flex justify-center w-full opacity-25 transition-opacity duration-500 ease-in-out hover:opacity-100",
51
- "aria-label": "Espressif",
52
- children: /* @__PURE__ */ jsx(AppLogo, {
53
- width: 120,
54
- darkMode,
55
- minimal: state === "collapsed"
56
- })
57
- });
58
- }
13
+ var HEADER_HEIGHT = "var(--espd-shell-header-height, var(--espd-header-height))";
14
+ var FOOTER_HEIGHT = "var(--espd-workspace-layout-footer-height, var(--espd-footer-height))";
15
+ var HIDDEN_FOOTER_HEIGHT = "var(--espd-workspace-layout-hidden-footer-height, var(--espd-hidden-footer-height))";
59
16
  function WorkspaceLayout({ appName, logo, logoCollapsed, logoMobile, logoAssets, footerBranding, children, sidebarConfig, headerConfig, footerConfig, sidebarOpen, defaultSidebarOpen, onSidebarOpenChange, onLogoutClick, onProfileCardClick, onColorThemeChange, colorTheme, onLanguageChange, languages, currentLanguage, accountMenuItems, hideBreadcrumbs }) {
60
17
  const SidebarLinkComp = sidebarConfig.linkComponent;
61
18
  const hideFooter = footerConfig?.hidden ?? false;
62
19
  const darkMode = colorTheme === "dark";
63
- const contentHeight = hideFooter ? "calc(100vh - var(--espd-header-height) - var(--espd-hidden-footer-height))" : "calc(100vh - var(--espd-header-height) - var(--espd-footer-height))";
20
+ const contentHeight = hideFooter ? `calc(100vh - ${HEADER_HEIGHT} - ${HIDDEN_FOOTER_HEIGHT})` : `calc(100vh - ${HEADER_HEIGHT} - ${FOOTER_HEIGHT})`;
64
21
  const breadcrumbItems = hideBreadcrumbs ? [] : headerConfig?.breadcrumbs ?? deriveBreadcrumbs(sidebarConfig.items, sidebarConfig.currentPath, sidebarConfig.indexPath);
65
- const mobileLogoNode = logoMobile ?? (logoAssets ? /* @__PURE__ */ jsx(AppLogo, {
66
- logo: logoAssets,
67
- darkMode,
68
- minimal: true,
69
- width: 24
70
- }) : appName ? /* @__PURE__ */ jsx(AppLogo, {
71
- name: appName,
22
+ const mobileLogo$1 = mobileLogo({
23
+ logoMobile,
24
+ logoAssets,
25
+ appName,
72
26
  darkMode,
73
- minimal: true,
74
- width: 24
75
- }) : null);
76
- const mobileLogo = mobileLogoNode && sidebarConfig.indexPath ? /* @__PURE__ */ jsx(SidebarLinkComp, {
77
- to: sidebarConfig.indexPath,
78
- className: "no-underline",
79
- children: mobileLogoNode
80
- }) : mobileLogoNode;
27
+ indexPath: sidebarConfig.indexPath,
28
+ linkComponent: SidebarLinkComp
29
+ });
81
30
  const headerLeftContent = breadcrumbItems.length > 0 ? /* @__PURE__ */ jsx(WorkspaceBreadcrumbs, {
82
31
  items: breadcrumbItems,
83
32
  linkComponent: SidebarLinkComp,
84
33
  collapseOnMobile: headerConfig?.collapseBreadcrumbsOnMobile ?? false
85
34
  }) : null;
86
- let footerBrandingNode = null;
87
- if (footerBranding === false) footerBrandingNode = null;
88
- else if (footerBranding !== void 0) footerBrandingNode = footerBranding;
89
- else if (appName && sidebarConfig.hideCompanyBranding !== true) footerBrandingNode = /* @__PURE__ */ jsx(EspressifFooterBranding, { darkMode });
35
+ const footerBrandingNode = resolveFooterBranding({
36
+ footerBranding,
37
+ appName,
38
+ hideCompanyBranding: sidebarConfig.hideCompanyBranding,
39
+ darkMode
40
+ });
90
41
  const sidebarFooter = sidebarConfig.footer != null || footerBrandingNode != null ? /* @__PURE__ */ jsxs("div", {
91
42
  className: "flex flex-col gap-2 w-full",
92
43
  children: [sidebarConfig.footer, footerBrandingNode]
93
44
  }) : void 0;
94
- const accountMenu = /* @__PURE__ */ jsx(AccountMenu, {
95
- userName: headerConfig?.userName,
96
- userEmail: headerConfig?.userEmail,
97
- userProfilePictureUrl: headerConfig?.userProfilePictureUrl,
98
- avatarBadgeColor: headerConfig?.avatarBadgeColor,
45
+ const accountMenu = /* @__PURE__ */ jsx(AccountMenu, { ...accountMenuProps({
46
+ headerConfig,
99
47
  onLogoutClick,
100
48
  onProfileCardClick,
101
49
  onColorThemeChange,
@@ -103,8 +51,8 @@ function WorkspaceLayout({ appName, logo, logoCollapsed, logoMobile, logoAssets,
103
51
  onLanguageChange,
104
52
  languages,
105
53
  currentLanguage,
106
- additionalItems: accountMenuItems
107
- });
54
+ accountMenuItems
55
+ }) });
108
56
  return /* @__PURE__ */ jsxs(SidebarProvider, {
109
57
  open: sidebarOpen,
110
58
  defaultOpen: defaultSidebarOpen,
@@ -121,7 +69,7 @@ function WorkspaceLayout({ appName, logo, logoCollapsed, logoMobile, logoAssets,
121
69
  indexPath: sidebarConfig.indexPath,
122
70
  linkComponent: SidebarLinkComp
123
71
  }),
124
- headerHeight: "var(--espd-header-height)",
72
+ headerHeight: HEADER_HEIGHT,
125
73
  footer: sidebarFooter,
126
74
  linkComponent: SidebarLinkComp,
127
75
  collapsible: sidebarConfig.allowCollapsible ? "icon" : "none",
@@ -135,12 +83,12 @@ function WorkspaceLayout({ appName, logo, logoCollapsed, logoMobile, logoAssets,
135
83
  rightContent: headerConfig?.rightContent,
136
84
  endContent: accountMenu,
137
85
  showSidebarTrigger: sidebarConfig.allowCollapsible,
138
- mobileLogo
86
+ mobileLogo: mobileLogo$1
139
87
  }),
140
88
  /* @__PURE__ */ jsx("div", {
141
89
  className: "flex flex-1 flex-col gap-4 bg-sidebar",
142
90
  style: {
143
- paddingTop: "var(--espd-header-height)",
91
+ paddingTop: HEADER_HEIGHT,
144
92
  height: contentHeight
145
93
  },
146
94
  children: /* @__PURE__ */ jsx("main", {
@@ -1,5 +1,6 @@
1
1
  import React__default from 'react';
2
2
  import { C as Color, S as Size } from './index-BQANnKs9.js';
3
+ import { d as DensityProps } from './style-axes-DSQ2DGc5.js';
3
4
 
4
5
  type ListItemVariant = Color;
5
6
  type ListItemSize = Size;
@@ -72,7 +73,7 @@ interface ListGroup {
72
73
  /** Extra classes for this group's label heading. */
73
74
  labelClassName?: string;
74
75
  }
75
- interface ListProps {
76
+ interface ListProps extends DensityProps {
76
77
  items: ListGroup[];
77
78
  role?: ListRole;
78
79
  showSeparators?: boolean;
@@ -0,0 +1,11 @@
1
+ export { MarkdownContent, MarkdownContentProps } from '../components/markdown-content/index.js';
2
+ export { Code, CodeProps } from '../components/code/index.js';
3
+ export { CodeEditor, CodeEditorProps } from '../components/code-editor/index.js';
4
+ export { MonospaceContent, MonospaceContentProps } from '../components/monospace-content/index.js';
5
+ import 'react';
6
+ import '../style-axes-DSQ2DGc5.js';
7
+ import '../alert.props-CcKo49Rb.js';
8
+ import '../index-BQANnKs9.js';
9
+ import '../variant-D81RhpbR.js';
10
+ import '../icon-avatar.props-RYtw2eSW.js';
11
+ import '../icon-text-action-card.props-B2ggncUK.js';
@@ -0,0 +1,5 @@
1
+ import { Code } from "../core/animate-ui/components/animate/code.js";
2
+ import { MonospaceContent } from "../components/monospace-content/monospace-content.js";
3
+ import { MarkdownContent } from "../components/markdown-content/markdown-content.js";
4
+ import { CodeEditor } from "../components/code-editor/code-editor.js";
5
+ export { Code, CodeEditor, MarkdownContent, MonospaceContent };
@@ -0,0 +1,67 @@
1
+ import { A as AppName, C as Color } from './index-BQANnKs9.js';
2
+ import { ReactNode } from 'react';
3
+ import { a as ListGroup } from './list.props-DP_xPTqU.js';
4
+
5
+ /** A single logo image asset. */
6
+ interface LogoAsset {
7
+ src: string;
8
+ width: number;
9
+ height: number;
10
+ /** Optional per-asset alt text; falls back to the component-level `alt` prop. */
11
+ alt?: string;
12
+ }
13
+ /** Light/dark variant pair. `dark` falls back to `light` when omitted. */
14
+ interface LogoVariantSet {
15
+ light: LogoAsset;
16
+ dark?: LogoAsset;
17
+ }
18
+ /**
19
+ * Nested asset config for `AppLogo`. Consumers pass this to render their own
20
+ * images without adding a preset to the internal registry.
21
+ *
22
+ * Selection rule at render time:
23
+ * `(minimal ? (config.minimal ?? config.full) : config.full).(dark ?? light)`
24
+ */
25
+ interface LogoAssetConfig {
26
+ full: LogoVariantSet;
27
+ /** Icon-only variant used when the sidebar collapses or on mobile. Falls back to `full`. */
28
+ minimal?: LogoVariantSet;
29
+ }
30
+ interface AppLogoProps {
31
+ /** Internal preset key. Ignored when `logo` is set. */
32
+ name?: AppName;
33
+ /** Custom asset config. When set, `name` and the internal preset registry are ignored. */
34
+ logo?: LogoAssetConfig;
35
+ alt?: string;
36
+ darkMode?: boolean;
37
+ minimal?: boolean;
38
+ /** Override the rendered width. Height scales proportionally from the selected asset. */
39
+ width?: number;
40
+ }
41
+
42
+ interface MyAccountMenuProps {
43
+ name?: string;
44
+ email?: string;
45
+ imageUrl?: string;
46
+ /** Passed to `Menu` content; default `200px` */
47
+ minWidth?: string | number;
48
+ menuItems: ListGroup[];
49
+ /** The avatar's fill behind the initial, when there is no picture; default `primary`. */
50
+ avatarColor?: Color;
51
+ /** Status dot color; ignored when `badgeIcon` is set */
52
+ badgeColor?: Color;
53
+ /** When set, shown instead of a color dot (`badgeColor` is not applied) */
54
+ badgeIcon?: ReactNode;
55
+ /**
56
+ * `avatar` (default): a round avatar button. `card`: a full-width row with the
57
+ * avatar, name and email, for sidebars. The text clips rather than wraps, so a
58
+ * narrow container shows the avatar alone.
59
+ */
60
+ triggerVariant?: "avatar" | "card";
61
+ /** Menu placement; default `bottom`. */
62
+ side?: "top" | "right" | "bottom" | "left";
63
+ /** Menu alignment; default `end`. */
64
+ align?: "start" | "center" | "end";
65
+ }
66
+
67
+ export type { AppLogoProps as A, LogoAsset as L, MyAccountMenuProps as M, LogoAssetConfig as a, LogoVariantSet as b };
@@ -0,0 +1,48 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+
3
+ type PageContainerMaxWidth = "sm" | "md" | "lg" | "xl";
4
+ interface GoBackLinkData {
5
+ show?: boolean;
6
+ label?: string;
7
+ href?: string;
8
+ /** Applied to the wrapper around the back link when `show` is true. */
9
+ className?: string;
10
+ /** When set with a non-empty `href`, renders this component instead of the default `onBack` handler. */
11
+ linkComponent?: ComponentType<{
12
+ to: string;
13
+ className?: string;
14
+ children: ReactNode;
15
+ }>;
16
+ }
17
+ interface PageContainerProps {
18
+ maxWidth?: PageContainerMaxWidth;
19
+ heading?: string | ReactNode;
20
+ actions?: ReactNode;
21
+ children: ReactNode;
22
+ className?: string;
23
+ /** When true, omits the top margin (`mt-[72px]`) reserved for a fixed workspace header. */
24
+ noGutters?: boolean;
25
+ /** When true, adds elevation shadow to the sticky header region. */
26
+ elevateHeading?: boolean;
27
+ /**
28
+ * When true, keeps the header region pinned below the `md` breakpoint (768px) too.
29
+ * By default it is pinned only from `md` up and scrolls away with the content on
30
+ * phones, where a pinned header would take a large share of the screen.
31
+ */
32
+ stickyHeadingOnMobile?: boolean;
33
+ /**
34
+ * Below the `md` breakpoint (768px), slides the header back in, pinned at the top,
35
+ * when the user scrolls up by a short distance, and slides it away again on the
36
+ * next scroll down. Keyboard focus moving into the header also reveals it.
37
+ * Ignored when {@link stickyHeadingOnMobile} is set, since the header is then
38
+ * always pinned. Has no effect from `md` up, where the header is always pinned.
39
+ * Set it to `false` to let the header scroll away for good on phones.
40
+ *
41
+ * @default true
42
+ */
43
+ revealHeadingOnScrollUp?: boolean;
44
+ goBackLinkData?: GoBackLinkData;
45
+ onBack?: () => void;
46
+ }
47
+
48
+ export type { GoBackLinkData as G, PageContainerMaxWidth as P, PageContainerProps as a };