@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,696 @@
1
+ /*
2
+ * Tokens-only stylesheet: every design token (colours, radius, fonts,
3
+ * animations, layout variables), the `dark` custom variant, the keyframes the
4
+ * animation tokens use, the @source of the library's compiled components, and
5
+ * the one component default every bordered component relies on (border
6
+ * colour). Nothing else: no `@import "tailwindcss"`, no Preflight reset, no
7
+ * page or element styles.
8
+ *
9
+ * For apps that bring their own Tailwind setup (or legacy CSS a global reset
10
+ * would break): import Tailwind yourself, then this file.
11
+ *
12
+ * @import "tailwindcss";
13
+ * @import "@espressif/dashboard-ui-components/theme.css";
14
+ *
15
+ * `@espressif/dashboard-ui-components/styles` (globals.css) is this file plus
16
+ * Tailwind, the base styles and the browser-autofill rules.
17
+ */
18
+ @import "./colors.css";
19
+ @import "./style-axes.css";
20
+
21
+ @source "../../dist";
22
+ /* Utilities the components generated before 1.12 and no longer use since
23
+ their colours became tokens. Kept so the compiled stylesheet only ever
24
+ grows within 1.x: an app may rely on them without generating them itself. */
25
+ @source inline("text-white/60 text-white/80 [&>svg]:text-white");
26
+ /* Tag's `success` name chip moved from /15 to /20; the old utility stays. */
27
+ @source inline("bg-success/15");
28
+ /* Likewise for the radius and shadow literals the style-axis readers
29
+ replaced (Input add-ons; Card and the xl / 3xl surfaces; the 2xl overlays,
30
+ the DateRangePicker panel halves and the chart tooltip shadow; List rows and their height). */
31
+ @source inline("rounded-s-lg rounded-e-lg rounded-xl rounded-3xl rounded-2xl rounded-l-2xl rounded-r-2xl shadow-xl rounded-[10px] min-h-[var(--menu-item-height)]");
32
+ /* Calendar day cells and range ends, now on the item role. */
33
+ @source inline("rounded-l-md rounded-r-md data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md");
34
+ /* PageContainer's elevated header, now on the surface elevation role. */
35
+ @source inline("shadow-md md:shadow-md");
36
+ /* The Sheet and Dialog scrims, now on the overlay scrim token (1.12). */
37
+ @source inline("bg-black/50 bg-black/80");
38
+ /* The NavBar details panel's shadow, now on the navbar elevation token (1.12). */
39
+ @source inline("shadow-lg");
40
+ /* Footer heights and the AppLogo cap before the shell / workspace-layout
41
+ token names (1.12). */
42
+ @source inline("h-[var(--espd-footer-height)] h-[var(--espd-hidden-footer-height)] max-h-[calc(var(--espd-header-height)-16px)]");
43
+
44
+ @theme {
45
+ /* Radius */
46
+ --radius-lg: 0.5rem;
47
+ --radius-md: calc(0.5rem - 2px);
48
+ --radius-sm: calc(0.5rem - 4px);
49
+
50
+ /* Default font stack. The library ships no font binaries — consumers can
51
+ override --font-sans to supply their own typeface. */
52
+ --font-sans:
53
+ system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
54
+ Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", Helvetica, Arial,
55
+ "PingFang SC", "Microsoft YaHei", 黑体, sans-serif;
56
+
57
+ /* Monospace stack for code, logs and identifiers (CodeEditor,
58
+ MonospaceContent, MarkdownContent code, chart tooltips — all `font-mono`).
59
+ Declared here so it is a library token like --font-sans; the value is
60
+ Tailwind's own default, so nothing changes until a consumer overrides it. */
61
+ --font-mono:
62
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
63
+ "Courier New", monospace;
64
+
65
+ /* Animations */
66
+ --animate-underline-slide: underline-slide 1s ease-in-out;
67
+ --animate-collapsible-down: collapsible-down 0.3s ease-out;
68
+ --animate-collapsible-up: collapsible-up 0.3s ease-out;
69
+ --animate-avatar-ring: avatar-ring 1.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;
70
+ --animate-caret-blink: caret-blink 1.25s ease-out infinite;
71
+ /* One expanding ring that fades out — a "this lit up" pulse on a mark. */
72
+ --animate-espd-ripple: espd-ripple 0.9s cubic-bezier(0.22, 1, 0.36, 1) both;
73
+ /* One light sweep across text that has just settled (a counter landing on
74
+ its value). Pair with `text-shine`, which paints the band it moves. */
75
+ --animate-shine: shine 1.2s cubic-bezier(0.22, 1, 0.36, 1) 1 both;
76
+ /* Entrances for something appearing in place: a floating control popping
77
+ in with a small overshoot, a side panel sliding in from the start edge,
78
+ and items rising into a list (stagger them with delay-*). Also the
79
+ fallbacks where a view transition (view-transition-morph / -glide) is
80
+ unsupported. Wrap them in motion-safe: at the call site. */
81
+ --animate-pop-in: pop-in 0.45s var(--ease-spring) both;
82
+ --animate-slide-in-start: slide-in-start 0.45s var(--ease-emphasized) both;
83
+ --animate-rise-in: rise-in 0.4s var(--ease-emphasized) both;
84
+ /* A slow, endless turn for decoration in the background (a faint logo
85
+ ring behind a banner). Wrap it in motion-safe: at the call site. */
86
+ --animate-spin-slow: espd-spin 90s linear infinite;
87
+ /* One ring bursting out of a mark and fading (a panel opening from it).
88
+ Bigger and quicker than espd-ripple. */
89
+ --animate-burst: espd-burst 0.6s var(--ease-emphasized);
90
+ /* A toggle being switched ON, celebrated once: a heart squashes, springs up
91
+ bigger with a tilt and settles (a like); a bookmark hops, lands with a
92
+ squash and bounces (a save); six dots in the brand colours burst outward
93
+ from one centred element (`animate-sparkle` on a size-1 span — pair it
94
+ with `animate-espd-ripple` for the ring). Switching OFF plays nothing.
95
+ Wrap them in motion-safe: at the call site. */
96
+ --animate-heart-pop: espd-heart-pop 0.6s var(--ease-overshoot) both;
97
+ --animate-bookmark-drop: espd-bookmark-drop 0.6s var(--ease-emphasized) both;
98
+ --animate-sparkle: espd-sparkle 0.6s var(--ease-emphasized) both;
99
+ /* A soft, endless throb for a mark that says "under way" (StepTabs' in
100
+ progress dot): every 2s it swells a little (`animate-throb`, on the
101
+ mark) while a halo of the same shape and colour rings out from it and
102
+ fades (`animate-throb-ring`, on a copy behind it, such as a `before:`
103
+ with `bg-current`). Both run 2s, so started together they stay in step.
104
+ Transform and opacity only: no reflow, smooth everywhere. Slow on
105
+ purpose, so it can run all day beside text. Wrap them in motion-safe:
106
+ at the call site. */
107
+ --animate-throb: espd-throb 2s ease-out infinite;
108
+ --animate-throb-ring: espd-throb-ring 2s ease-out infinite;
109
+
110
+ /* Easings beyond Tailwind's three. `spring` overshoots and settles (a mark
111
+ scaling up when it lights); `emphasized` is a fast-out, long-settle curve
112
+ for something drawing in. */
113
+ --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
114
+ --ease-emphasized: cubic-bezier(0.22, 1, 0.36, 1);
115
+ /* A bigger overshoot than spring, for small things popping into place
116
+ (a chip, a button swinging in). */
117
+ --ease-overshoot: cubic-bezier(0.34, 1.8, 0.64, 1);
118
+
119
+ /* Clearance under a sticky NavBar: its height plus the gap it floats at
120
+ once it morphs into a pill (12px), plus 12px of air. `top-below-navbar`
121
+ keeps a sticky side panel clear of the bar; `scroll-mt-below-navbar`
122
+ keeps an anchor target from landing under it. Follows
123
+ --espd-navbar-height when an app changes it. */
124
+ --spacing-below-navbar: calc(var(--espd-navbar-height) + 1.5rem);
125
+
126
+ /* A soft, tight halo with no offset, for the `glow` variant. Its colour is
127
+ the shadow-colour utility beside it (`shadow-glow shadow-primary/45`). */
128
+ --shadow-glow: 0 0 15px -5.5px rgb(0 0 0 / 0.25);
129
+
130
+ /* A wide, soft halo with no offset, for something that floats over the page
131
+ on every side (a composer docked at the bottom of a window, where a shadow
132
+ cast downward would be hidden). Colour it like the glow, with the
133
+ shadow-colour utility beside it (`shadow-float shadow-foreground/10`). */
134
+ --shadow-float: 0 0 48px -8px rgb(0 0 0 / 0.12);
135
+
136
+ /* The walls of something recessed into the surface (StepTabs' tray, on
137
+ `bg-recessed`): an inner shadow under the top edge, a softer one inside
138
+ it, a faint rim, and a light lip along the bottom edge outside, where the
139
+ surface catches the light. Per theme, so it is the value of
140
+ --espd-shadow-recessed (below); Tailwind writes a shadow token's value into
141
+ its utility, so a `.dark` override of this token itself would not apply. */
142
+ --shadow-recessed: var(--espd-shadow-recessed);
143
+
144
+ /* Marketing type: a display headline and the lead paragraph under it. Fluid
145
+ between a phone and a wide desktop, so one class serves every width. */
146
+ --text-display: clamp(2.5rem, 7vw, 5.5rem);
147
+ --text-display--line-height: 1.04;
148
+ --text-display--letter-spacing: -0.04em;
149
+ --text-display--font-weight: 800;
150
+ --text-lead: clamp(1.0625rem, 1.5vw, 1.3125rem);
151
+ --text-lead--line-height: 1.6;
152
+ }
153
+
154
+ @keyframes caret-blink {
155
+ 0%,
156
+ 70%,
157
+ 100% {
158
+ opacity: 1;
159
+ }
160
+ 20%,
161
+ 50% {
162
+ opacity: 0;
163
+ }
164
+ }
165
+
166
+ @keyframes avatar-ring {
167
+ 0% {
168
+ box-shadow: 0 0 0 0 currentColor;
169
+ opacity: 0.45;
170
+ }
171
+ 70% {
172
+ opacity: 0;
173
+ }
174
+ 100% {
175
+ box-shadow: 0 0 0 0.375rem currentColor;
176
+ opacity: 0;
177
+ }
178
+ }
179
+
180
+ @keyframes collapsible-down {
181
+ from {
182
+ grid-template-rows: 0fr;
183
+ }
184
+ to {
185
+ grid-template-rows: 1fr;
186
+ }
187
+ }
188
+
189
+ @keyframes collapsible-up {
190
+ from {
191
+ grid-template-rows: 1fr;
192
+ }
193
+ to {
194
+ grid-template-rows: 0fr;
195
+ }
196
+ }
197
+
198
+ /* MinimalWorkspaceLayout: what appears when the rail expands. Each animates
199
+ *from* hidden to the element's own styles. */
200
+ @keyframes espd-pop-in {
201
+ from {
202
+ opacity: 0;
203
+ transform: translateX(-0.75rem) scale(0.96);
204
+ filter: blur(2px);
205
+ }
206
+ }
207
+
208
+ @keyframes espd-icon-pop {
209
+ from {
210
+ opacity: 0;
211
+ transform: scale(0.4) rotate(-20deg);
212
+ }
213
+ }
214
+
215
+ @keyframes espd-fade-in {
216
+ from {
217
+ opacity: 0;
218
+ }
219
+ }
220
+
221
+ @keyframes underline-slide {
222
+ 0% {
223
+ transform: scaleX(1);
224
+ transform-origin: right;
225
+ }
226
+ 50% {
227
+ transform: scaleX(0);
228
+ transform-origin: right;
229
+ }
230
+ 50.1% {
231
+ transform: scaleX(0);
232
+ transform-origin: left;
233
+ }
234
+ 100% {
235
+ transform: scaleX(1);
236
+ transform-origin: left;
237
+ }
238
+ }
239
+
240
+ @keyframes espd-ripple {
241
+ from {
242
+ opacity: 0.6;
243
+ transform: scale(0.6);
244
+ }
245
+ to {
246
+ opacity: 0;
247
+ transform: scale(2);
248
+ }
249
+ }
250
+
251
+ @keyframes pop-in {
252
+ from {
253
+ opacity: 0;
254
+ transform: scale(0.6);
255
+ }
256
+ to {
257
+ opacity: 1;
258
+ transform: none;
259
+ }
260
+ }
261
+
262
+ @keyframes slide-in-start {
263
+ from {
264
+ opacity: 0;
265
+ transform: translateX(-1rem);
266
+ }
267
+ to {
268
+ opacity: 1;
269
+ transform: none;
270
+ }
271
+ }
272
+
273
+ @keyframes rise-in {
274
+ from {
275
+ opacity: 0;
276
+ transform: translateY(0.5rem);
277
+ }
278
+ to {
279
+ opacity: 1;
280
+ transform: none;
281
+ }
282
+ }
283
+
284
+ @keyframes espd-burst {
285
+ from {
286
+ opacity: 0.7;
287
+ transform: scale(0.6);
288
+ }
289
+ to {
290
+ opacity: 0;
291
+ transform: scale(3.4);
292
+ }
293
+ }
294
+
295
+ @keyframes espd-heart-pop {
296
+ 0% {
297
+ transform: none;
298
+ }
299
+ 25% {
300
+ transform: scale(0.72, 0.8) rotate(-8deg);
301
+ }
302
+ 55% {
303
+ transform: scale(1.32) rotate(10deg);
304
+ }
305
+ 80% {
306
+ transform: scale(0.94) rotate(-2deg);
307
+ }
308
+ 100% {
309
+ transform: none;
310
+ }
311
+ }
312
+
313
+ @keyframes espd-bookmark-drop {
314
+ 0% {
315
+ transform: none;
316
+ }
317
+ 30% {
318
+ transform: translateY(-35%) scale(1.06);
319
+ }
320
+ 55% {
321
+ transform: translateY(0) scale(1.18, 0.78);
322
+ }
323
+ 75% {
324
+ transform: translateY(-12%) scale(0.96, 1.04);
325
+ }
326
+ 100% {
327
+ transform: none;
328
+ }
329
+ }
330
+
331
+ /* Six dots, 60 degrees apart, flying 14px out from the centre of a small
332
+ dot (size-1) and fading — sized for a 16-20px icon. Brand gradient colours
333
+ plus amber, so it follows an app's logo colours. */
334
+ @keyframes espd-sparkle {
335
+ 0% {
336
+ opacity: 1;
337
+ box-shadow:
338
+ 0 0 0 0 var(--color-gradient-start),
339
+ 0 0 0 0 var(--color-gradient-middle),
340
+ 0 0 0 0 var(--color-gradient-end),
341
+ 0 0 0 0 var(--color-warning),
342
+ 0 0 0 0 var(--color-gradient-start),
343
+ 0 0 0 0 var(--color-gradient-end);
344
+ }
345
+ 100% {
346
+ opacity: 0;
347
+ box-shadow:
348
+ 0 -14px 0 -0.5px var(--color-gradient-start),
349
+ 12px -7px 0 -0.5px var(--color-gradient-middle),
350
+ 12px 7px 0 -0.5px var(--color-gradient-end),
351
+ 0 14px 0 -0.5px var(--color-warning),
352
+ -12px 7px 0 -0.5px var(--color-gradient-start),
353
+ -12px -7px 0 -0.5px var(--color-gradient-end);
354
+ }
355
+ }
356
+
357
+ @keyframes espd-throb {
358
+ 0%,
359
+ 70%,
360
+ 100% {
361
+ transform: scale(1);
362
+ }
363
+ 30% {
364
+ transform: scale(1.3);
365
+ }
366
+ }
367
+
368
+ @keyframes espd-throb-ring {
369
+ 0% {
370
+ transform: scale(1);
371
+ opacity: 0.5;
372
+ }
373
+ 70%,
374
+ 100% {
375
+ transform: scale(2.6);
376
+ opacity: 0;
377
+ }
378
+ }
379
+
380
+ @keyframes espd-spin {
381
+ to {
382
+ transform: rotate(360deg);
383
+ }
384
+ }
385
+
386
+ @keyframes shine {
387
+ from {
388
+ background-position: 100% 0;
389
+ }
390
+ to {
391
+ background-position: 0 0;
392
+ }
393
+ }
394
+
395
+ /* Text painted by a band of the primary colour that `animate-shine` sweeps
396
+ across once. At rest (either end of the sweep) it reads as plain
397
+ foreground text, so it is safe without the animation too. */
398
+ @utility text-shine {
399
+ background-image: linear-gradient(
400
+ 100deg,
401
+ var(--color-foreground) 40%,
402
+ var(--color-primary) 50%,
403
+ var(--color-foreground) 60%
404
+ );
405
+ background-size: 300% 100%;
406
+ background-position: 0 0;
407
+ background-clip: text;
408
+ -webkit-background-clip: text;
409
+ color: transparent;
410
+ }
411
+
412
+ /* Text filled with the brand gradient, start → middle → end left to right
413
+ (`--color-gradient-*`). It wraps with the text, line by line. */
414
+ @utility text-gradient {
415
+ background-image: linear-gradient(
416
+ 90deg,
417
+ var(--color-gradient-start),
418
+ var(--color-gradient-middle) 50%,
419
+ var(--color-gradient-end)
420
+ );
421
+ background-clip: text;
422
+ -webkit-background-clip: text;
423
+ color: transparent;
424
+ }
425
+
426
+ /* Transition a line drawing in and fading (an SVG path with `pathLength` and
427
+ a dash): only the dash offset and opacity, so a path whose `d` follows the
428
+ pointer redraws immediately instead of easing behind it. Takes the usual
429
+ duration-*, ease-* and delay-* utilities. */
430
+ @utility transition-draw {
431
+ transition-property: stroke-dashoffset, opacity;
432
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
433
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
434
+ }
435
+
436
+ /* A circular reveal: a layer clipped to nothing at its centre
437
+ (`clip-circle-closed`) that opens to cover its box (`clip-circle-open`),
438
+ e.g. a detail panel opening over a card on hover. `transition-clip`
439
+ animates the clip and the visibility together, so a closed layer is also
440
+ hidden from pointers and focus; pair it with `invisible` / `visible` and the
441
+ usual duration-*, ease-* and delay-* utilities. */
442
+ @utility clip-circle-closed {
443
+ clip-path: circle(0% at 50% 50%);
444
+ }
445
+
446
+ @utility clip-circle-open {
447
+ clip-path: circle(75% at 50% 50%);
448
+ }
449
+
450
+ @utility transition-clip {
451
+ transition-property: clip-path, visibility;
452
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
453
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
454
+ }
455
+
456
+ /* View transitions (run one with `startViewTransition` from /utils).
457
+ view-transition-morph: the ONE element on screen at a time that turns into
458
+ another (a side panel collapsing into a floating button) — give both the
459
+ class; they must never be on screen together. It is drawn above everything
460
+ else during the morph, so it never slides behind the content it crosses.
461
+ view-transition-glide: each element of a set (cards in a grid) moves to its
462
+ new place on its own, with no per-element name to invent. Inert outside a
463
+ view transition. */
464
+ @utility view-transition-morph {
465
+ view-transition-name: espd-morph;
466
+ }
467
+
468
+ @utility view-transition-glide {
469
+ view-transition-name: match-element;
470
+ view-transition-class: espd-glide;
471
+ }
472
+
473
+ ::view-transition-group(espd-morph) {
474
+ z-index: 100;
475
+ animation-duration: 0.6s;
476
+ animation-timing-function: var(--ease-spring);
477
+ }
478
+
479
+ ::view-transition-group(*.espd-glide) {
480
+ animation-duration: 0.5s;
481
+ animation-timing-function: var(--ease-spring);
482
+ }
483
+
484
+ /* A scrolling row with no visible scrollbar (a swipeable chip row with its
485
+ own arrow buttons). Still scrollable by touch, wheel and keyboard. */
486
+ @utility scrollbar-none {
487
+ scrollbar-width: none;
488
+ &::-webkit-scrollbar {
489
+ display: none;
490
+ }
491
+ }
492
+
493
+ /* A scrolling row whose scrollbar is thin and shows only while the pointer
494
+ is over it or focus is inside it (a row of filter chips that runs past the
495
+ edge). The track keeps its space when hidden, so nothing shifts on hover.
496
+ Standard properties for Chromium and Firefox, where the thumb fades in and
497
+ out; the WebKit pseudo-elements for Safari, which ignores them and cannot
498
+ animate a scrollbar, so it shows and hides at once. */
499
+ @utility scrollbar-hover {
500
+ scrollbar-width: thin;
501
+ scrollbar-color: transparent transparent;
502
+ transition: scrollbar-color 0.2s ease-out;
503
+ &:hover,
504
+ &:focus-within {
505
+ scrollbar-color: color-mix(in oklab, var(--color-foreground) 25%, transparent) transparent;
506
+ }
507
+ &::-webkit-scrollbar {
508
+ width: 6px;
509
+ height: 6px;
510
+ }
511
+ &::-webkit-scrollbar-thumb {
512
+ border-radius: 9999px;
513
+ background-color: transparent;
514
+ }
515
+ &:hover::-webkit-scrollbar-thumb,
516
+ &:focus-within::-webkit-scrollbar-thumb {
517
+ background-color: color-mix(in oklab, var(--color-foreground) 25%, transparent);
518
+ }
519
+ }
520
+
521
+ :root {
522
+ --espd-sidebar-width: 288px;
523
+
524
+ /* `shadow-recessed`: see --shadow-recessed. */
525
+ --espd-shadow-recessed:
526
+ inset 0 1px 1.5px rgb(0 0 0 / 0.045),
527
+ inset 0 2px 4px rgb(0 0 0 / 0.02),
528
+ inset 0 0 0 1px rgb(0 0 0 / 0.03),
529
+ 0 1px 0 rgb(255 255 255 / 0.9);
530
+ --espd-sidebar-width-collapsed: 56px;
531
+ --espd-sidebar-width-mobile: 18rem;
532
+
533
+ /* MinimalWorkspaceLayout: header-less shell with an icon rail. Tokens set
534
+ to `initial` are unset: the layout falls back to the value named beside
535
+ each (read where it is used, so a `.dark` subtree still switches). */
536
+ --espd-minimal-workspace-layout-height: 100dvh;
537
+ --espd-minimal-workspace-layout-sidebar-width: initial; /* --espd-sidebar-width */
538
+ --espd-minimal-workspace-layout-sidebar-width-collapsed: 3.5rem;
539
+ --espd-minimal-workspace-layout-logo-height: 3.5rem;
540
+ --espd-minimal-workspace-layout-logo-padding: 0.75rem;
541
+ --espd-minimal-workspace-layout-sidebar-background: initial; /* --color-background */
542
+ --espd-minimal-workspace-layout-sidebar-background-expanded: initial; /* the one above */
543
+ --espd-minimal-workspace-layout-sidebar-foreground: initial; /* --color-foreground */
544
+ --espd-minimal-workspace-layout-sidebar-accent: initial; /* surface mixed 7% towards --color-foreground */
545
+ --espd-minimal-workspace-layout-sidebar-accent-foreground: initial; /* --color-foreground */
546
+ --espd-minimal-workspace-layout-sidebar-border-color: initial; /* surface mixed 5% towards --color-foreground */
547
+ --espd-minimal-workspace-layout-sidebar-elevation: initial; /* wide right-hand shadow, surface mixed 15% towards black at 45% opacity */
548
+ --espd-minimal-workspace-layout-content-background: initial; /* --color-background */
549
+ --espd-minimal-workspace-layout-top-right-offset-x: 1rem;
550
+ --espd-minimal-workspace-layout-top-right-offset-y: 0.75rem;
551
+ --espd-minimal-workspace-layout-duration: 450ms;
552
+ --espd-minimal-workspace-layout-ease: cubic-bezier(0.4, 0, 0.2, 1);
553
+ /* With `sidebarConfig.hideWhenCollapsed`: the strip shown when the left
554
+ edge of the content is hovered, and the shadow of the sidebar while it
555
+ peeks over the content. */
556
+ --espd-minimal-workspace-layout-edge-color: initial; /* --color-primary */
557
+ --espd-minimal-workspace-layout-edge-width: 3px;
558
+ /* The zone that reacts, wider than the strip it draws: the strip sits at its left. */
559
+ --espd-minimal-workspace-layout-edge-hit-width: 12px;
560
+ --espd-minimal-workspace-layout-sidebar-overlay-elevation: initial; /* wide shadow, surface mixed 20% towards black at 55% opacity */
561
+
562
+ /* Shell and WorkspaceLayout heights. Components read the new names
563
+ (--espd-shell-header-height, --espd-workspace-layout-footer-height,
564
+ --espd-workspace-layout-hidden-footer-height), which are not declared
565
+ so they fall back to these deprecated defaults; an app may override
566
+ either name. The deprecated names go in 2.0. */
567
+ --espd-header-height: 3.125rem;
568
+ --espd-navbar-height: 4rem;
569
+ --espd-banner-height: 0rem;
570
+ --espd-footer-height: 1.5rem;
571
+ --espd-hidden-footer-height: 0.75rem;
572
+
573
+ --espd-floating-window-offset-left: 0px;
574
+ --espd-floating-window-offset-right: 0px;
575
+ --espd-floating-window-offset-top: var(--espd-header-height);
576
+ --espd-floating-window-offset-bottom: var(--espd-footer-height);
577
+
578
+ --menu-item-height: 2.5rem;
579
+ --spacing: 0.25rem;
580
+ --text-sm: 0.875rem;
581
+ --text-sm--line-height: 1.25rem;
582
+
583
+ /** Every sidebar nav row: group labels and menu item labels share one scale. */
584
+ --espd-sidebar-item-font-size: 0.875rem;
585
+ /** Collapsed-sidebar flyout: group title row. Matches the rows above by default;
586
+ raise it if you want the flyout title to stand out from its submenu items. */
587
+ --espd-sidebar-flyout-group-label-font-size: 0.875rem;
588
+
589
+ /* ─── Semantic tokens beyond colour ───
590
+ Each default reproduces the value the components used before it existed,
591
+ so nothing changes until an app overrides one. See docs/token-audit.md. */
592
+
593
+ /* Control density: heights shared by buttons, inputs, selects and toggles. */
594
+ --espd-control-height-sm: calc(var(--spacing) * 8);
595
+ --espd-control-height-md: calc(var(--spacing) * 9);
596
+ --espd-control-height-lg: calc(var(--spacing) * 10);
597
+ /* Horizontal padding of buttons per size. */
598
+ --espd-button-padding-x-sm: calc(var(--spacing) * 3);
599
+ --espd-button-padding-x-md: calc(var(--spacing) * 4);
600
+ --espd-button-padding-x-lg: calc(var(--spacing) * 8);
601
+ /* Table head height and cell padding; sidebar row heights (default and
602
+ `sm`). List rows read --espd-item-height, falling back to
603
+ --menu-item-height, so it is not declared here. */
604
+ --espd-table-head-height: calc(var(--spacing) * 10);
605
+ --espd-table-cell-padding: calc(var(--spacing) * 2);
606
+ --espd-sidebar-row-height: calc(var(--spacing) * 8);
607
+ --espd-sidebar-row-height-sm: calc(var(--spacing) * 7);
608
+ /* Gaps: between a form field's label, control and message (FormItem), and
609
+ between a dialog's header, body and footer (DialogContent). */
610
+ --espd-gap-field: calc(var(--spacing) * 2);
611
+ --espd-gap-stack: calc(var(--spacing) * 4);
612
+
613
+ /* Motion: transition durations. */
614
+ --espd-duration-fast: 150ms;
615
+ --espd-duration-normal: 200ms;
616
+ --espd-duration-slow: 300ms;
617
+
618
+ /* The scrim behind a modal Dialog or Sheet: its colour, and how much it
619
+ blurs the page under it. `initial` means unset, as for the style-axis
620
+ tokens below: each scrim keeps its own (Sheet and the animated Dialog
621
+ black at 50%, /core's Dialog at 80%, no blur). A dark theme, whose page
622
+ is already near-black, wants a deeper scrim or a blur for the panel to
623
+ stand out. */
624
+ --espd-overlay-scrim: initial;
625
+ --espd-overlay-blur: initial;
626
+ /* How much the page under an open NavBar details panel is blurred. Falls
627
+ back to --espd-overlay-blur, then none: the dimmed page stays sharp unless
628
+ a theme asks for the panel to stand further out from it. */
629
+ --espd-navbar-backdrop-blur: initial;
630
+
631
+ /* Hover / keyboard-focus ring around buttons. */
632
+ --espd-ring-width: 2px;
633
+ --espd-ring-offset: 2px;
634
+
635
+ /* Text and icons on a solid surface of an arbitrary (non-preset) colour, and
636
+ on the destructive copy button. */
637
+ --espd-on-solid-foreground: #fff;
638
+
639
+ /* Style-axis role tokens. `initial` means unset: every reader falls back to
640
+ its own current radius, border width or shadow, so declaring them changes
641
+ nothing. Set one (here, on any ancestor, or with StyleScope) to give that
642
+ role one value everywhere below it. */
643
+ --espd-radius-control: initial;
644
+ --espd-border-width-control: initial;
645
+ --espd-elevation-control: initial;
646
+ --espd-radius-surface: initial;
647
+ --espd-border-width-surface: initial;
648
+ --espd-elevation-surface: initial;
649
+ --espd-radius-overlay: initial;
650
+ --espd-elevation-overlay: initial;
651
+ /* The floating NavBar pill and the details panel hanging from any NavBar:
652
+ falls back to the overlay elevation, then the bar's own shadow. A dark
653
+ theme can give the bar a glow of its own, so it reads as placed on the
654
+ page rather than part of it, without changing every overlay. */
655
+ --espd-elevation-navbar: initial;
656
+ --espd-radius-pill: initial;
657
+ --espd-radius-item: initial;
658
+ }
659
+
660
+ .dark,
661
+ [data-theme="dark"] {
662
+ /* A dark surface is near black, so shadows alone cannot sink anything into
663
+ it: the hollow is drawn by its light edges — a faint light rim and a lip
664
+ below — with a crisp dark line under the top edge and a deeper shadow.
665
+ The rim is listed FIRST, so it is painted over that dark line: under it,
666
+ the top edge vanished into the bar while the sides kept theirs. The extra
667
+ top line lifts it back to the sides' strength over the black beneath. */
668
+ --espd-shadow-recessed:
669
+ inset 0 1px 0 rgb(255 255 255 / 0.04),
670
+ inset 0 0 0 1px rgb(255 255 255 / 0.065),
671
+ inset 0 1.5px 0 rgb(0 0 0 / 0.9),
672
+ inset 0 2px 6px rgb(0 0 0 / 0.6),
673
+ 0 0.5px 0 rgb(255 255 255 / 0.06);
674
+ --espd-floating-window-offset-left: 0px;
675
+ --espd-floating-window-offset-right: 0px;
676
+ --espd-floating-window-offset-top: var(--espd-header-height);
677
+ --espd-floating-window-offset-bottom: var(--espd-footer-height);
678
+ }
679
+
680
+ /* Component default, not a reset: library components draw borders with
681
+ `border` / `border-b` and rely on them taking the theme's border colour.
682
+ Must follow Tailwind's Preflight (which sets `border-color: currentColor`),
683
+ which it does when this file is imported after `tailwindcss`. */
684
+ @layer base {
685
+ * {
686
+ border-color: var(--color-border);
687
+ }
688
+ }
689
+
690
+ /* Library utility used by its components (PageContainer's skeleton). */
691
+ @layer utilities {
692
+ .hstack {
693
+ display: flex;
694
+ flex-direction: row;
695
+ }
696
+ }