@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
@@ -392,6 +392,7 @@ function HighlightItem({ ref, as, children, id, value, className, style, transit
392
392
  })
393
393
  }), React$1.cloneElement(element, {
394
394
  style: {
395
+ ...element.props.style,
395
396
  position: "relative",
396
397
  zIndex: 1
397
398
  },
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../../../utils/cn.js";
3
- import { useControlledState } from "../../../hooks/use-controlled-state.js";
4
3
  import { getStrictContext } from "../../../utils/get-strict-context.js";
4
+ import { useControlledState } from "../../../hooks/use-controlled-state.js";
5
5
  import * as React$1 from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { Accordion } from "radix-ui";
@@ -1,10 +1,11 @@
1
1
  "use client";
2
- import { useControlledState } from "../../../hooks/use-controlled-state.js";
3
2
  import { getStrictContext } from "../../../utils/get-strict-context.js";
3
+ import { useControlledState } from "../../../hooks/use-controlled-state.js";
4
+ import { useNestedLayerPressGuard } from "../../../hooks/use-nested-layer-press-guard.js";
4
5
  import "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
- import { Dialog } from "radix-ui";
7
7
  import { AnimatePresence, motion } from "motion/react";
8
+ import { Dialog } from "radix-ui";
8
9
  //#region src/core/animate-ui/primitives/radix/dialog.tsx
9
10
  var [DialogProvider, useDialog] = getStrictContext("DialogContext");
10
11
  function Dialog$1(props) {
@@ -72,13 +73,15 @@ function DialogContent({ from = "top", onOpenAutoFocus, onCloseAutoFocus, onEsca
72
73
  }, ...props }) {
73
74
  const initialRotation = from === "bottom" || from === "left" ? "20deg" : "-20deg";
74
75
  const rotateAxis = from === "top" || from === "bottom" ? "rotateX" : "rotateY";
76
+ const pressGuard = useNestedLayerPressGuard(void 0, onPointerDownOutside);
75
77
  return /* @__PURE__ */ jsx(Dialog.Content, {
76
78
  asChild: true,
77
79
  forceMount: true,
80
+ ref: pressGuard.ref,
78
81
  onOpenAutoFocus,
79
82
  onCloseAutoFocus,
80
83
  onEscapeKeyDown,
81
- onPointerDownOutside,
84
+ onPointerDownOutside: pressGuard.onPointerDownOutside,
82
85
  onInteractOutside,
83
86
  children: /* @__PURE__ */ jsx(motion.div, {
84
87
  "data-slot": "dialog-content",
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { useControlledState } from "../../../hooks/use-controlled-state.js";
3
2
  import { getStrictContext } from "../../../utils/get-strict-context.js";
3
+ import { useControlledState } from "../../../hooks/use-controlled-state.js";
4
4
  import { Highlight, HighlightItem } from "../effects/highlight.js";
5
5
  import { useDataState } from "../../../hooks/use-data-state.js";
6
6
  import * as React$1 from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
- import { DropdownMenu } from "radix-ui";
9
8
  import { AnimatePresence, motion } from "motion/react";
9
+ import { DropdownMenu } from "radix-ui";
10
10
  //#region src/core/animate-ui/primitives/radix/dropdown-menu.tsx
11
11
  var [DropdownMenuProvider, useDropdownMenu] = getStrictContext("DropdownMenuContext");
12
12
  var [DropdownMenuSubProvider, useDropdownMenuSub] = getStrictContext("DropdownMenuSubContext");
@@ -1,10 +1,11 @@
1
1
  "use client";
2
- import { useControlledState } from "../../../hooks/use-controlled-state.js";
3
2
  import { getStrictContext } from "../../../utils/get-strict-context.js";
3
+ import { useControlledState } from "../../../hooks/use-controlled-state.js";
4
+ import { useNestedLayerPressGuard } from "../../../hooks/use-nested-layer-press-guard.js";
4
5
  import "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
- import { Dialog } from "radix-ui";
7
7
  import { AnimatePresence, motion } from "motion/react";
8
+ import { Dialog } from "radix-ui";
8
9
  //#region src/core/animate-ui/primitives/radix/sheet.tsx
9
10
  var [SheetProvider, useSheet] = getStrictContext("SheetContext");
10
11
  function Sheet(props) {
@@ -75,8 +76,9 @@ function SheetContent({ side = "right", transition = {
75
76
  type: "spring",
76
77
  stiffness: 150,
77
78
  damping: 22
78
- }, style, children, ...props }) {
79
+ }, style, children, onPointerDownOutside, ...props }) {
79
80
  const { isOpen } = useSheet();
81
+ const pressGuard = useNestedLayerPressGuard(void 0, onPointerDownOutside);
80
82
  const axis = side === "left" || side === "right" ? "x" : "y";
81
83
  const offscreen = {
82
84
  right: {
@@ -118,7 +120,9 @@ function SheetContent({ side = "right", transition = {
118
120
  asChild: true,
119
121
  forceMount: true,
120
122
  ...props,
123
+ onPointerDownOutside: pressGuard.onPointerDownOutside,
121
124
  children: /* @__PURE__ */ jsx(motion.div, {
125
+ ref: pressGuard.ref,
122
126
  "data-slot": "sheet-content",
123
127
  "data-side": side,
124
128
  initial: offscreen[side],
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { useControlledState } from "../../../hooks/use-controlled-state.js";
3
2
  import { getStrictContext } from "../../../utils/get-strict-context.js";
3
+ import { useControlledState } from "../../../hooks/use-controlled-state.js";
4
4
  import * as React$1 from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
- import { Switch } from "radix-ui";
7
6
  import { motion } from "motion/react";
7
+ import { Switch } from "radix-ui";
8
8
  //#region src/core/animate-ui/primitives/radix/switch.tsx
9
9
  var [SwitchProvider, useSwitch] = getStrictContext("SwitchContext");
10
10
  function Switch$1(props) {
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { useControlledState } from "../../../hooks/use-controlled-state.js";
3
2
  import { getStrictContext } from "../../../utils/get-strict-context.js";
3
+ import { useControlledState } from "../../../hooks/use-controlled-state.js";
4
4
  import { Highlight, HighlightItem } from "../effects/highlight.js";
5
5
  import * as React$1 from "react";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
- import { ToggleGroup } from "radix-ui";
8
7
  import { AnimatePresence, motion } from "motion/react";
8
+ import { ToggleGroup } from "radix-ui";
9
9
  //#region src/core/animate-ui/primitives/radix/toggle-group.tsx
10
10
  var [ToggleGroupProvider, useToggleGroup] = getStrictContext("ToggleGroupContext");
11
11
  function ToggleGroup$1(props) {
@@ -1,16 +1,19 @@
1
1
  import { cn } from "../utils/cn.js";
2
2
  import { resolveVariantStyles } from "../utils/variant.js";
3
+ import { useStyleAxes } from "../utils/style-axes.js";
3
4
  import { VariantGradientUnderlay } from "../utils/variant-gradient-underlay.js";
4
5
  import "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  import { cva } from "class-variance-authority";
7
8
  //#region src/core/badge.tsx
8
- var badgeVariants = cva("inline-flex items-center rounded-md px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2");
9
- function Badge({ className, variant = "soft", color = "primary", style, children, ...props }) {
9
+ var badgeVariants = cva("inline-flex items-center rounded-[var(--espd-own-radius,var(--espd-radius-pill,var(--radius-md)))] px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2");
10
+ function Badge({ className, variant = "soft", color = "primary", style, children, radius, ...props }) {
10
11
  const styles = resolveVariantStyles(variant, color);
12
+ const { partStyle } = useStyleAxes({ radius }, ["radius"]);
11
13
  return /* @__PURE__ */ jsxs("div", {
12
14
  className: cn(badgeVariants(), styles.container, className),
13
15
  style: {
16
+ ...partStyle,
14
17
  ...styles.containerStyle,
15
18
  ...style
16
19
  },
@@ -1,8 +1,8 @@
1
1
  import { cn } from "../utils/cn.js";
2
2
  import * as React$1 from "react";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
- import { ChevronRight, MoreHorizontal } from "lucide-react";
5
4
  import { Slot } from "@radix-ui/react-slot";
5
+ import { ChevronRight, MoreHorizontal } from "lucide-react";
6
6
  //#region src/core/breadcrumb.tsx
7
7
  var Breadcrumb = React$1.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", {
8
8
  ref,
@@ -4,21 +4,21 @@ import { jsx } from "react/jsx-runtime";
4
4
  import { Slot } from "@radix-ui/react-slot";
5
5
  import { cva } from "class-variance-authority";
6
6
  //#region src/core/button/button.tsx
7
- var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
7
+ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
8
8
  variants: {
9
9
  variant: {
10
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
10
+ default: "bg-primary text-primary-foreground shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-control,var(--shadow-sm)))] hover:bg-primary/90",
11
11
  destructive: "text-destructive [background:color-mix(in_oklab,var(--color-destructive)_15%,transparent)] hover:[background:color-mix(in_oklab,var(--color-destructive)_20%,transparent)]",
12
- outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
13
- secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
12
+ outline: "border-[length:var(--espd-own-border-width,var(--espd-border-width-control,1px))] border-input bg-background shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-control,var(--shadow-sm)))] hover:bg-accent hover:text-accent-foreground",
13
+ secondary: "bg-secondary text-secondary-foreground shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-control,var(--shadow-sm)))] hover:bg-secondary/80",
14
14
  ghost: "hover:bg-accent hover:text-accent-foreground",
15
15
  link: "text-primary underline-offset-4 hover:underline"
16
16
  },
17
17
  size: {
18
- default: "h-9 px-4 py-2",
19
- sm: "h-8 rounded-md px-3 text-xs",
20
- lg: "h-10 rounded-md px-8",
21
- icon: "h-9 w-9"
18
+ default: "h-[var(--espd-control-height-md,calc(var(--spacing)*9))] px-[var(--espd-button-padding-x-md,calc(var(--spacing)*4))] py-2",
19
+ sm: "h-[var(--espd-control-height-sm,calc(var(--spacing)*8))] rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] px-[var(--espd-button-padding-x-sm,calc(var(--spacing)*3))] text-xs",
20
+ lg: "h-[var(--espd-control-height-lg,calc(var(--spacing)*10))] rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] px-[var(--espd-button-padding-x-lg,calc(var(--spacing)*8))]",
21
+ icon: "h-[var(--espd-control-height-md,calc(var(--spacing)*9))] w-[var(--espd-control-height-md,calc(var(--spacing)*9))]"
22
22
  }
23
23
  },
24
24
  defaultVariants: {
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils/cn.js";
3
+ import { useStyleAxes } from "../../utils/style-axes.js";
3
4
  import { Button } from "./button.js";
4
5
  import * as React$1 from "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -59,7 +60,11 @@ function CraftButtonIcon({ children, className }) {
59
60
  });
60
61
  }
61
62
  function CraftButton(props) {
62
- const { children, size, color = "primary", asChild = false, className, ...rest } = props;
63
+ const { children, size, color = "primary", asChild = false, className, radius, style, ...rest } = props;
64
+ const axes = useStyleAxes({
65
+ radius,
66
+ style
67
+ }, ["radius"]);
63
68
  return /* @__PURE__ */ jsx(CraftButtonContext.Provider, {
64
69
  value: {
65
70
  size,
@@ -68,7 +73,8 @@ function CraftButton(props) {
68
73
  children: /* @__PURE__ */ jsx(Button, {
69
74
  size,
70
75
  asChild,
71
- className: cn(craftButtonBgClasses[color], "group hover:bg-background relative cursor-pointer overflow-hidden rounded-full duration-500 hover:shadow-md dark:border dark:border-transparent", craftButtonDarkBorderClasses[color], className),
76
+ className: cn(craftButtonBgClasses[color], "group hover:bg-background relative cursor-pointer overflow-hidden rounded-[var(--espd-own-radius,var(--espd-radius-control,calc(infinity*1px)))] duration-500 hover:shadow-md dark:border dark:border-transparent", craftButtonDarkBorderClasses[color], className),
77
+ style: axes.style,
72
78
  ...rest,
73
79
  children
74
80
  })
@@ -4,19 +4,22 @@ import { jsx } from "react/jsx-runtime";
4
4
  import { Slot } from "@radix-ui/react-slot";
5
5
  import { cva } from "class-variance-authority";
6
6
  //#region src/core/button.tsx
7
- var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
7
+ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
8
8
  variants: {
9
9
  variant: {
10
- default: "shadow",
11
- outline: "border bg-background shadow-sm",
10
+ default: "shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-control,var(--shadow-sm)))]",
11
+ /** See-through like `ghost`: a button on a card, a band or a tinted panel shows that surface, not a page-coloured patch. A button over a picture gives itself a surface (`bg-card`). */
12
+ outline: "border-[length:var(--espd-own-border-width,var(--espd-border-width-control,1px))] bg-transparent shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-control,var(--shadow-sm)))]",
13
+ /** `outline` with a soft halo instead of the elevation shadow; the styled Button colours it. */
14
+ glow: "border-[length:var(--espd-own-border-width,var(--espd-border-width-control,1px))] bg-transparent shadow-glow",
12
15
  ghost: "",
13
16
  link: "underline-offset-4 hover:underline"
14
17
  },
15
18
  size: {
16
- default: "h-9 px-4 py-2",
17
- sm: "h-8 rounded-md px-3 text-xs",
18
- lg: "h-10 rounded-md px-8",
19
- icon: "h-9 w-9"
19
+ default: "h-[var(--espd-control-height-md,calc(var(--spacing)*9))] px-[var(--espd-button-padding-x-md,calc(var(--spacing)*4))] py-2",
20
+ sm: "h-[var(--espd-control-height-sm,calc(var(--spacing)*8))] rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] px-[var(--espd-button-padding-x-sm,calc(var(--spacing)*3))] text-xs",
21
+ lg: "h-[var(--espd-control-height-lg,calc(var(--spacing)*10))] rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] px-[var(--espd-button-padding-x-lg,calc(var(--spacing)*8))]",
22
+ icon: "h-[var(--espd-control-height-md,calc(var(--spacing)*9))] w-[var(--espd-control-height-md,calc(var(--spacing)*9))]"
20
23
  }
21
24
  },
22
25
  defaultVariants: {
@@ -24,6 +27,13 @@ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespa
24
27
  size: "default"
25
28
  }
26
29
  });
30
+ /**
31
+ * Uncoloured base button: its `default` variant is only a shadow, with no
32
+ * colour, ring or icon props. Apps almost always want the styled `Button`
33
+ * from `@espressif/dashboard-ui-components/components` instead, which takes
34
+ * `color`, `startIcon`, `endIcon`, `loading`, `tooltip` and `iconOnlyBelow`.
35
+ * The two share a name on purpose (renaming either would break imports).
36
+ */
27
37
  var Button = React$1.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
28
38
  return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
29
39
  className: cn(buttonVariants({
package/dist/core/card.js CHANGED
@@ -1,12 +1,30 @@
1
1
  import { cn } from "../utils/cn.js";
2
+ import { densityStyle, useStyleAxes } from "../utils/style-axes.js";
2
3
  import * as React$1 from "react";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  //#region src/core/card.tsx
5
- var Card = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
6
- ref,
7
- className: cn("rounded-xl border bg-card text-card-foreground shadow", className),
8
- ...props
9
- }));
6
+ var Card = React$1.forwardRef(({ className, radius, elevation, border, density, style, ...props }, ref) => {
7
+ const density_ = densityStyle(density);
8
+ const axes = useStyleAxes({
9
+ radius,
10
+ elevation,
11
+ border,
12
+ style: density_ ? {
13
+ ...density_,
14
+ ...style
15
+ } : style
16
+ }, [
17
+ "radius",
18
+ "elevation",
19
+ "border"
20
+ ]);
21
+ return /* @__PURE__ */ jsx("div", {
22
+ ref,
23
+ className: cn("rounded-[var(--espd-own-radius,var(--espd-radius-surface,var(--radius-xl)))] border-[length:var(--espd-own-border-width,var(--espd-border-width-surface,1px))] bg-card text-card-foreground shadow-[shadow:var(--espd-own-elevation,var(--espd-elevation-surface,var(--shadow-sm)))]", className),
24
+ style: axes.style,
25
+ ...props
26
+ });
27
+ });
10
28
  Card.displayName = "Card";
11
29
  var CardHeader = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
12
30
  ref,
@@ -1,12 +1,17 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils/cn.js";
3
+ import { useStyleAxes } from "../../utils/style-axes.js";
3
4
  import { Popover, PopoverContent, PopoverTrigger } from "../popover.js";
4
5
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "../command.js";
5
6
  import * as React$1 from "react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
8
  import { Check, ChevronsUpDown } from "lucide-react";
8
9
  //#region src/core/combobox/combobox.tsx
9
- function AsyncCombobox({ value, onValueChange, options, onSearchChange, isLoading = false, placeholder = "Select...", emptyText = "No results.", searchPlaceholder = "Search...", label, required, disabled, className, clearable = false, hasMore = false, onLoadMore }) {
10
+ function AsyncCombobox({ value, onValueChange, options, onSearchChange, isLoading = false, placeholder = "Select...", emptyText = "No results.", searchPlaceholder = "Search...", label, required, disabled, className, clearable = false, hasMore = false, onLoadMore, radius, border }) {
11
+ const axes = useStyleAxes({
12
+ radius,
13
+ border
14
+ }, ["radius", "border"]);
10
15
  const [open, setOpen] = React$1.useState(false);
11
16
  const [inputValue, setInputValue] = React$1.useState("");
12
17
  const displayValue = options.find((o) => o.value === value)?.label ?? (value || "");
@@ -23,7 +28,8 @@ function AsyncCombobox({ value, onValueChange, options, onSearchChange, isLoadin
23
28
  role: "combobox",
24
29
  "aria-expanded": open,
25
30
  disabled,
26
- className: cn("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background transition-[box-shadow,border-color] duration-200 ease-in-out placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", !displayValue && "text-muted-foreground", className),
31
+ className: cn("flex h-10 w-full items-center justify-between rounded-[var(--espd-own-radius,var(--espd-radius-control,var(--radius-md)))] border-[length:var(--espd-own-border-width,var(--espd-border-width-control,1px))] border-input bg-background px-3 py-2 text-base ring-offset-background transition-[box-shadow,border-color] duration-200 ease-in-out placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", !displayValue && "text-muted-foreground", className),
32
+ style: axes.style,
27
33
  onClick: () => setOpen(!open),
28
34
  children: [/* @__PURE__ */ jsx("span", {
29
35
  className: "truncate",
@@ -6,7 +6,7 @@ import { Command } from "cmdk";
6
6
  //#region src/core/command.tsx
7
7
  var Command$1 = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Command, {
8
8
  ref,
9
- className: cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", className),
9
+ className: cn("flex h-full w-full flex-col overflow-hidden rounded-[var(--espd-own-radius,var(--espd-radius-overlay,var(--radius-md)))] bg-popover text-popover-foreground", className),
10
10
  ...props
11
11
  }));
12
12
  Command$1.displayName = Command.displayName;
@@ -15,7 +15,7 @@ var CommandInput = React$1.forwardRef(({ className, ...props }, ref) => /* @__PU
15
15
  "cmdk-input-wrapper": "",
16
16
  children: [/* @__PURE__ */ jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(Command.Input, {
17
17
  ref,
18
- className: cn("flex h-10 w-full rounded-md bg-transparent py-3 text-sm placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", className),
18
+ className: cn("flex h-[var(--espd-control-height-lg,calc(var(--spacing)*10))] w-full rounded-md bg-transparent py-3 text-sm placeholder:text-muted-foreground focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", className),
19
19
  ...props
20
20
  })]
21
21
  }));
@@ -46,7 +46,7 @@ var CommandSeparator = React$1.forwardRef(({ className, ...props }, ref) => /* @
46
46
  CommandSeparator.displayName = Command.Separator.displayName;
47
47
  var CommandItem = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Command.Item, {
48
48
  ref,
49
- className: cn("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
49
+ className: cn("relative flex cursor-default gap-2 select-none items-center rounded-[var(--espd-own-radius,var(--espd-radius-item,var(--radius-sm)))] px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
50
50
  ...props
51
51
  }));
52
52
  CommandItem.displayName = Command.Item.displayName;
package/dist/core/form.js CHANGED
@@ -38,7 +38,7 @@ var FormItem = React$1.forwardRef(({ className, ...props }, ref) => {
38
38
  value: { id },
39
39
  children: /* @__PURE__ */ jsx("div", {
40
40
  ref,
41
- className: cn("space-y-2", className),
41
+ className: cn("space-y-[var(--espd-gap-field,calc(var(--spacing)*2))]", className),
42
42
  ...props
43
43
  })
44
44
  });
@@ -0,0 +1,46 @@
1
+ import * as React$1 from "react";
2
+ //#region src/core/hooks/use-nested-layer-press-guard.tsx
3
+ /**
4
+ * Keeps a Radix Popover / Dialog open when an outside press only closed a
5
+ * layer nested in it.
6
+ *
7
+ * Since Popover and Dialog 1.1.17, Radix defers their outside-press dismissal
8
+ * from `pointerdown` to the `click` that follows. A nested layer that blocks
9
+ * outside pointer events (an open Select's list) still closes on
10
+ * `pointerdown`, so by `click` the outer layer believes it is on top again and
11
+ * closes too: pressing a Select's trigger to close its list also closed the
12
+ * popover or sheet around it.
13
+ *
14
+ * While a higher layer blocks it, Radix sets `pointer-events: none` on the
15
+ * outer layer's element. This hook reads that at `pointerdown` (capture phase,
16
+ * before any layer reacts) and cancels the deferred dismissal for that press.
17
+ */
18
+ function useNestedLayerPressGuard(forwardedRef, onPointerDownOutside) {
19
+ const nodeRef = React$1.useRef(null);
20
+ const blockedRef = React$1.useRef(false);
21
+ React$1.useEffect(() => {
22
+ const record = () => {
23
+ blockedRef.current = nodeRef.current?.style.pointerEvents === "none";
24
+ };
25
+ document.addEventListener("pointerdown", record, true);
26
+ return () => document.removeEventListener("pointerdown", record, true);
27
+ }, []);
28
+ const ref = React$1.useCallback((node) => {
29
+ nodeRef.current = node;
30
+ if (typeof forwardedRef === "function") forwardedRef(node);
31
+ else if (forwardedRef) forwardedRef.current = node;
32
+ }, [forwardedRef]);
33
+ const handlePointerDownOutside = (event) => {
34
+ if (blockedRef.current) {
35
+ event.preventDefault();
36
+ return;
37
+ }
38
+ onPointerDownOutside?.(event);
39
+ };
40
+ return {
41
+ ref,
42
+ onPointerDownOutside: handlePointerDownOutside
43
+ };
44
+ }
45
+ //#endregion
46
+ export { useNestedLayerPressGuard };
@@ -0,0 +1,33 @@
1
+ import * as React$1 from "react";
2
+ //#region src/core/hooks/use-on-screen.tsx
3
+ function subscribeVisibility(onChange) {
4
+ if (typeof document === "undefined") return () => {};
5
+ document.addEventListener("visibilitychange", onChange);
6
+ return () => document.removeEventListener("visibilitychange", onChange);
7
+ }
8
+ var isDocumentVisible = () => !document.hidden;
9
+ /**
10
+ * True while any part of the element is on screen AND the tab is visible:
11
+ * the signal for pausing loops nobody can see (autoplay, animation).
12
+ *
13
+ * Unlike `useIsInView` (motion's observer, for reveal-on-scroll), this one
14
+ * also goes false when the tab is hidden. Where `IntersectionObserver` is
15
+ * missing (SSR, jsdom) the element counts as on screen.
16
+ */
17
+ function useOnScreen(ref) {
18
+ const [intersecting, setIntersecting] = React$1.useState(true);
19
+ const visible = React$1.useSyncExternalStore(subscribeVisibility, isDocumentVisible, () => true);
20
+ React$1.useEffect(() => {
21
+ const element = ref.current;
22
+ if (!element || typeof IntersectionObserver === "undefined") return void 0;
23
+ const observer = new IntersectionObserver((entries) => {
24
+ const entry = entries[entries.length - 1];
25
+ if (entry) setIntersecting(entry.isIntersecting);
26
+ });
27
+ observer.observe(element);
28
+ return () => observer.disconnect();
29
+ }, [ref]);
30
+ return intersecting && visible;
31
+ }
32
+ //#endregion
33
+ export { useOnScreen };
@@ -0,0 +1,19 @@
1
+ import * as React$1 from "react";
2
+ //#region src/core/hooks/use-prefers-reduced-motion.tsx
3
+ var REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
4
+ function subscribe(onChange) {
5
+ if (typeof window === "undefined" || !window.matchMedia) return () => {};
6
+ const query = window.matchMedia(REDUCED_MOTION_QUERY);
7
+ query.addEventListener?.("change", onChange);
8
+ return () => query.removeEventListener?.("change", onChange);
9
+ }
10
+ function read() {
11
+ if (typeof window === "undefined" || !window.matchMedia) return false;
12
+ return window.matchMedia(REDUCED_MOTION_QUERY).matches;
13
+ }
14
+ /** True while the person asks their system for reduced motion; autoplay never runs then. */
15
+ function usePrefersReducedMotion() {
16
+ return React$1.useSyncExternalStore(subscribe, read, () => false);
17
+ }
18
+ //#endregion
19
+ export { usePrefersReducedMotion };
@@ -4,6 +4,13 @@ var NO_OVERFLOW = {
4
4
  start: false,
5
5
  end: false
6
6
  };
7
+ /**
8
+ * After a resize, keep measuring for this long. Content that animates to its
9
+ * new size (a tab highlight springing narrower when the list folds) overflows
10
+ * for a moment and settles without another resize, which would otherwise leave
11
+ * a stale "more this way" edge behind.
12
+ */
13
+ var SETTLE_MS = 800;
7
14
  /** Tracks whether a horizontal scroller has content hidden on either side. */
8
15
  function useScrollOverflow(ref, { enabled = true, getContent, onResize } = {}) {
9
16
  const [overflow, setOverflow] = React$1.useState(NO_OVERFLOW);
@@ -29,11 +36,23 @@ function useScrollOverflow(ref, { enabled = true, getContent, onResize } = {}) {
29
36
  end
30
37
  });
31
38
  };
39
+ let frame = 0;
40
+ let settleUntil = 0;
41
+ const settle = () => {
42
+ settleUntil = performance.now() + SETTLE_MS;
43
+ if (frame) return;
44
+ const tick = () => {
45
+ update();
46
+ frame = performance.now() < settleUntil ? requestAnimationFrame(tick) : 0;
47
+ };
48
+ frame = requestAnimationFrame(tick);
49
+ };
32
50
  update();
33
51
  scroller.addEventListener("scroll", update, { passive: true });
34
52
  if (typeof ResizeObserver === "undefined") return () => scroller.removeEventListener("scroll", update);
35
53
  const observer = new ResizeObserver(() => {
36
54
  update();
55
+ settle();
37
56
  onResizeRef.current?.();
38
57
  });
39
58
  observer.observe(scroller);
@@ -42,6 +61,7 @@ function useScrollOverflow(ref, { enabled = true, getContent, onResize } = {}) {
42
61
  return () => {
43
62
  scroller.removeEventListener("scroll", update);
44
63
  observer.disconnect();
64
+ cancelAnimationFrame(frame);
45
65
  };
46
66
  }, [ref, enabled]);
47
67
  return overflow;
@@ -2,14 +2,26 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
2
2
  import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
5
- export { B as Badge, a as BadgeProps, b as Breadcrumb, c as BreadcrumbEllipsis, d as BreadcrumbItem, e as BreadcrumbLink, f as BreadcrumbList, g as BreadcrumbPage, h as BreadcrumbSeparator, Q as Button, i as ButtonGroup, j as ButtonGroupSeparator, k as ButtonGroupText, R as ButtonProps, C as Card, l as CardContent, m as CardDescription, n as CardFooter, o as CardHeader, p as CardTitle, q as Collapsible, r as CollapsibleContent, s as CollapsibleTrigger, L as Label, u as Popover, v as PopoverAnchor, w as PopoverContent, x as PopoverTrigger, S as Separator, y as SeparatorProps, z as Skeleton, J as badgeVariants, K as buttonGroupVariants, M as buttonVariants, O as useIsMobile } from '../popover-ByLD3-Qv.js';
5
+ export { Badge, BadgeProps, badgeVariants } from '../components/badge/index.js';
6
+ export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from '../components/breadcrumb/index.js';
7
+ export { a as Button, B as ButtonProps, b as buttonVariants } from '../button-BK-DIR_L.js';
8
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants } from '../components/button-group/index.js';
9
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '../components/card/index.js';
10
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../components/collapsible/index.js';
11
+ export { Label } from '../components/label/index.js';
12
+ export { Popover, PopoverAnchor, PopoverContent, PopoverGroup, PopoverGroupProps, PopoverProps, PopoverTrigger } from '../components/popover/index.js';
13
+ export { Separator, SeparatorProps } from '../components/separator/index.js';
14
+ export { Skeleton } from '../components/skeleton/index.js';
6
15
  export { u as useControlledState } from '../use-controlled-state-BL9NoHu8.js';
16
+ export { useIsMobile } from '../components/use-mobile/index.js';
7
17
  import { UseInViewOptions } from 'motion/react';
8
- import '@radix-ui/react-label';
9
- import '@radix-ui/react-separator';
10
- import '@radix-ui/react-collapsible';
18
+ import '../style-axes-DSQ2DGc5.js';
19
+ import '../variant-D81RhpbR.js';
11
20
  import '../index-BQANnKs9.js';
21
+ import '@radix-ui/react-collapsible';
22
+ import '@radix-ui/react-label';
12
23
  import '@radix-ui/react-popover';
24
+ import '@radix-ui/react-separator';
13
25
 
14
26
  interface UseIsInViewOptions {
15
27
  inView?: boolean;
@@ -34,6 +46,19 @@ declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimiti
34
46
  type DataStateValue = string | boolean | null;
35
47
  declare function useDataState<T extends HTMLElement = HTMLElement>(key: string, forwardedRef?: React.Ref<T | null>, onChange?: (value: DataStateValue) => void): [DataStateValue, React.RefObject<T | null>];
36
48
 
49
+ /**
50
+ * True while any part of the element is on screen AND the tab is visible:
51
+ * the signal for pausing loops nobody can see (autoplay, animation).
52
+ *
53
+ * Unlike `useIsInView` (motion's observer, for reveal-on-scroll), this one
54
+ * also goes false when the tab is hidden. Where `IntersectionObserver` is
55
+ * missing (SSR, jsdom) the element counts as on screen.
56
+ */
57
+ declare function useOnScreen(ref: React.RefObject<Element | null>): boolean;
58
+
59
+ /** True while the person asks their system for reduced motion; autoplay never runs then. */
60
+ declare function usePrefersReducedMotion(): boolean;
61
+
37
62
  declare function getStrictContext<T>(name?: string): readonly [
38
63
  ({ value, children, }: {
39
64
  value: T;
@@ -42,4 +67,4 @@ declare function getStrictContext<T>(name?: string): readonly [
42
67
  () => T
43
68
  ];
44
69
 
45
- export { Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, type DataStateValue, type UseIsInViewOptions, getStrictContext, useDataState, useIsInView };
70
+ export { Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, type DataStateValue, type UseIsInViewOptions, getStrictContext, useDataState, useIsInView, useOnScreen, usePrefersReducedMotion };
@@ -1,18 +1,21 @@
1
- import { useControlledState } from "./hooks/use-controlled-state.js";
2
1
  import { getStrictContext } from "./utils/get-strict-context.js";
2
+ import { useControlledState } from "./hooks/use-controlled-state.js";
3
3
  import { Avatar, AvatarFallback, AvatarImage } from "./avatar.js";
4
4
  import { useDataState } from "./hooks/use-data-state.js";
5
5
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./collapsible.js";
6
6
  import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./card.js";
7
7
  import { Button, buttonVariants } from "./button.js";
8
+ import { PopoverGroup } from "./popover-group.js";
8
9
  import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./popover.js";
9
10
  import { useIsMobile } from "./hooks/use-mobile.js";
10
11
  import { Separator } from "./separator.js";
11
12
  import { Skeleton } from "./skeleton.js";
12
13
  import { Label } from "./label.js";
13
14
  import { Badge, badgeVariants } from "./badge.js";
15
+ import { usePrefersReducedMotion } from "./hooks/use-prefers-reduced-motion.js";
14
16
  import { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants } from "./button-group.js";
17
+ import { useOnScreen } from "./hooks/use-on-screen.js";
15
18
  import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./breadcrumb.js";
16
19
  import { useIsInView } from "./hooks/use-is-in-view.js";
17
20
  import { Alert, AlertDescription, AlertTitle } from "./alert.js";
18
- export { Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, Label, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Separator, Skeleton, badgeVariants, buttonGroupVariants, buttonVariants, getStrictContext, useControlledState, useDataState, useIsInView, useIsMobile };
21
+ export { Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Collapsible, CollapsibleContent, CollapsibleTrigger, Label, Popover, PopoverAnchor, PopoverContent, PopoverGroup, PopoverTrigger, Separator, Skeleton, badgeVariants, buttonGroupVariants, buttonVariants, getStrictContext, useControlledState, useDataState, useIsInView, useIsMobile, useOnScreen, usePrefersReducedMotion };