@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,3 @@
1
+ import { Toolbar } from "./toolbar.js";
2
+ import { ToolbarButton } from "./toolbar-button.js";
3
+ export { Toolbar, ToolbarButton };
@@ -0,0 +1,40 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { Button } from "../button/button.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/components/toolbar/toolbar-button.tsx
5
+ /**
6
+ * A 28px icon-only button for a `Toolbar`: its name is its tooltip, a toggle
7
+ * says whether it is pressed, and a count or a "something new" dot can sit
8
+ * over its icon. Quiet (ghost) unless it is the one primary action.
9
+ */
10
+ function ToolbarButton({ label, icon, onClick, pressed, tooltip, count = 0, attention = false, color = "gray", disabled, className }) {
11
+ const primary = color === "primary";
12
+ return /* @__PURE__ */ jsxs(Button, {
13
+ type: "button",
14
+ size: "icon",
15
+ variant: primary ? "default" : "ghost",
16
+ color: primary ? "primary" : "gray",
17
+ hideRingOnHover: true,
18
+ "aria-label": label,
19
+ "aria-pressed": pressed,
20
+ tooltip: tooltip ?? label,
21
+ disabled,
22
+ onClick,
23
+ className: cn("relative size-7 shrink-0", pressed && !primary && "bg-accent text-accent-foreground", className),
24
+ children: [
25
+ icon,
26
+ attention && count === 0 && /* @__PURE__ */ jsx("span", {
27
+ "aria-hidden": true,
28
+ "data-attention": true,
29
+ className: "absolute top-0.5 right-0.5 size-2 rounded-full bg-error ring-2 ring-background"
30
+ }),
31
+ count > 0 && /* @__PURE__ */ jsx("span", {
32
+ "aria-hidden": true,
33
+ className: "absolute -top-1 -right-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-xs leading-none font-semibold text-primary-foreground",
34
+ children: count
35
+ })
36
+ ]
37
+ });
38
+ }
39
+ //#endregion
40
+ export { ToolbarButton };
@@ -0,0 +1,56 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/components/toolbar/toolbar.tsx
4
+ var FOCUSABLE = "button:not([disabled]), a[href], [tabindex=\"0\"]";
5
+ /** Left and Right arrows move between the toolbar's controls, as the toolbar role promises; Home and End jump to the ends. */
6
+ function moveFocus(event) {
7
+ const step = {
8
+ ArrowRight: 1,
9
+ ArrowLeft: -1,
10
+ Home: "first",
11
+ End: "last"
12
+ }[event.key];
13
+ if (step === void 0) return;
14
+ const controls = Array.from(event.currentTarget.querySelectorAll(FOCUSABLE));
15
+ const at = controls.indexOf(document.activeElement);
16
+ if (controls.length === 0 || at < 0) return;
17
+ event.preventDefault();
18
+ let next = at;
19
+ if (step === "first") next = 0;
20
+ else if (step === "last") next = controls.length - 1;
21
+ else next = (at + step + controls.length) % controls.length;
22
+ controls[next]?.focus();
23
+ }
24
+ /**
25
+ * A thin bar of small controls across the top of a work area — 44px, so
26
+ * 28px controls (`ToolbarButton`) sit in it with air on both sides. Three
27
+ * slots: the start and end share the width, so the centre is centred on the
28
+ * bar, not between whatever the sides happen to hold. A bottom rule in the
29
+ * border colour every panel edge uses, so the bar and the columns under it
30
+ * read as one grid. Left/Right arrows move between its controls.
31
+ */
32
+ function Toolbar({ label, start, center, end, tone = "page", className }) {
33
+ return /* @__PURE__ */ jsxs("div", {
34
+ role: "toolbar",
35
+ "aria-label": label,
36
+ onKeyDown: moveFocus,
37
+ "data-slot": "toolbar",
38
+ className: cn("flex h-11 shrink-0 items-center gap-2 border-b border-border px-2", tone === "dark" ? "dark bg-sidebar text-foreground" : "bg-background", className),
39
+ children: [
40
+ /* @__PURE__ */ jsx("div", {
41
+ className: "flex min-w-0 flex-1 items-center gap-2",
42
+ children: start
43
+ }),
44
+ center && /* @__PURE__ */ jsx("div", {
45
+ className: "flex min-w-0 shrink-0 items-center justify-center",
46
+ children: center
47
+ }),
48
+ /* @__PURE__ */ jsx("div", {
49
+ className: "flex min-w-0 flex-1 items-center justify-end gap-2",
50
+ children: end
51
+ })
52
+ ]
53
+ });
54
+ }
55
+ //#endregion
56
+ export { Toolbar };
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { ReactNode, ReactElement } from 'react';
3
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
4
+ export { T as TooltipContent, a as TooltipContentProps, b as TooltipProvider, c as TooltipProviderProps, d as TooltipRoot, e as TooltipTrigger, f as TooltipTriggerProps } from '../../tooltip-C0bYa8a3.js';
5
+ import 'motion/react';
6
+ import '../../slot-DGErA9zi.js';
7
+
8
+ type Side = 'top' | 'bottom' | 'left' | 'right';
9
+ type Align = 'start' | 'center' | 'end';
10
+ /** `radius` and `elevation` shape the tooltip bubble (see TooltipContent). */
11
+ interface TooltipProps extends Pick<StyleAxisProps, 'radius' | 'elevation'> {
12
+ content: ReactNode;
13
+ children: ReactElement;
14
+ side?: Side;
15
+ sideOffset?: number;
16
+ align?: Align;
17
+ alignOffset?: number;
18
+ openDelay?: number;
19
+ closeDelay?: number;
20
+ /**
21
+ * Caps the bubble's width so long content wraps: `xs` 20rem, `sm` 24rem,
22
+ * `md` 28rem. Unset, the bubble grows to fit its content (a short label).
23
+ */
24
+ maxWidth?: 'xs' | 'sm' | 'md';
25
+ }
26
+
27
+ declare function Tooltip({ content, children, side, sideOffset, align, alignOffset, openDelay, closeDelay, radius, elevation, maxWidth, }: TooltipProps): React.JSX.Element;
28
+
29
+ export { Tooltip, type TooltipProps };
@@ -0,0 +1,3 @@
1
+ import { Tooltip as Tooltip$1, TooltipContent, TooltipProvider, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
2
+ import Tooltip from "./tooltip.js";
3
+ export { Tooltip, TooltipContent, TooltipProvider, Tooltip$1 as TooltipRoot, TooltipTrigger };
@@ -1,7 +1,12 @@
1
1
  import { Tooltip as Tooltip$1, TooltipContent, TooltipProvider, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  //#region src/components/tooltip/tooltip.tsx
4
- function Tooltip({ content, children, side, sideOffset, align, alignOffset, openDelay, closeDelay }) {
4
+ var maxWidthClasses = {
5
+ xs: "max-w-xs",
6
+ sm: "max-w-sm",
7
+ md: "max-w-md"
8
+ };
9
+ function Tooltip({ content, children, side, sideOffset, align, alignOffset, openDelay, closeDelay, radius, elevation, maxWidth }) {
5
10
  return /* @__PURE__ */ jsx(TooltipProvider, {
6
11
  openDelay,
7
12
  closeDelay,
@@ -13,7 +18,12 @@ function Tooltip({ content, children, side, sideOffset, align, alignOffset, open
13
18
  children: [/* @__PURE__ */ jsx(TooltipTrigger, {
14
19
  asChild: true,
15
20
  children
16
- }), /* @__PURE__ */ jsx(TooltipContent, { children: content })]
21
+ }), /* @__PURE__ */ jsx(TooltipContent, {
22
+ radius,
23
+ elevation,
24
+ className: maxWidth ? maxWidthClasses[maxWidth] : void 0,
25
+ children: content
26
+ })]
17
27
  })
18
28
  });
19
29
  }
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { ReactNode, CSSProperties } from 'react';
3
+
4
+ interface TransferItem {
5
+ id: string;
6
+ label: string;
7
+ disabled?: boolean;
8
+ }
9
+ interface TransferListProps<T> {
10
+ sourceItems: T[];
11
+ targetItems: T[];
12
+ getItemId?: (item: T) => string;
13
+ getItemLabel?: (item: T) => string;
14
+ onChange: (targetItems: T[]) => void;
15
+ renderItem?: (item: T) => ReactNode;
16
+ searchable?: boolean;
17
+ disabled?: boolean;
18
+ sourceTitle: string;
19
+ targetTitle: string;
20
+ className?: string;
21
+ /**
22
+ * Maximum height of each panel. Panels grow with content up to this limit;
23
+ * list bodies scroll internally when content exceeds the available space.
24
+ */
25
+ maxHeight?: CSSProperties["maxHeight"];
26
+ /** Hidden inputs for native form submit (same pattern as SelectableCardList) */
27
+ name?: string;
28
+ form?: string;
29
+ isItemDisabled?: (item: T) => boolean;
30
+ /** Defaults to "Transfer list" */
31
+ ariaLabel?: string;
32
+ }
33
+
34
+ declare function TransferList<T>({ sourceItems, targetItems, getItemId, getItemLabel, onChange, renderItem, searchable, disabled, sourceTitle, targetTitle, className, name, form, isItemDisabled, ariaLabel, maxHeight, }: TransferListProps<T>): React.JSX.Element;
35
+
36
+ export { type TransferItem, TransferList, type TransferListProps };
@@ -0,0 +1,2 @@
1
+ import { TransferList } from "./transfer-list.js";
2
+ export { TransferList };
@@ -106,7 +106,7 @@ function TransferListItems({ filteredItems, items, selectedIds, getItemId, getIt
106
106
  animate: "center",
107
107
  exit: "exit",
108
108
  transition: rowTransition,
109
- className: cn("flex cursor-pointer items-center gap-2 rounded-md px-1 py-1.5", itemDisabled ? "cursor-not-allowed opacity-50" : "hover:bg-muted/50"),
109
+ className: cn("flex cursor-pointer items-center gap-2 rounded-[var(--espd-own-radius,var(--espd-radius-item,var(--radius-md)))] px-1 py-1.5", itemDisabled ? "cursor-not-allowed opacity-50" : "hover:bg-muted/50"),
110
110
  children: [/* @__PURE__ */ jsx(Checkbox, {
111
111
  checked,
112
112
  disabled: itemDisabled,
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ type TruncatedLineWithTooltipProps = {
5
+ className?: string;
6
+ tooltipContent: ReactNode;
7
+ children: ReactNode;
8
+ /**
9
+ * How many lines show before the text is cut with an ellipsis: 1 (the
10
+ * default) to 6. Past one line it is clamped (a card's description) and
11
+ * measured by its height instead of its width.
12
+ */
13
+ lines?: number;
14
+ };
15
+ /**
16
+ * Truncation with a tooltip of the whole text, shown only when the text is
17
+ * actually cut (measured via DOM): one line by default, or a few (`lines`).
18
+ * An app's own {@link TooltipProvider} wins; without one it brings its own.
19
+ */
20
+ declare function TruncatedLineWithTooltip({ className, tooltipContent, children, lines, }: TruncatedLineWithTooltipProps): React.JSX.Element;
21
+
22
+ export { TruncatedLineWithTooltip, type TruncatedLineWithTooltipProps };
@@ -0,0 +1,2 @@
1
+ import { TruncatedLineWithTooltip } from "./truncated-line-with-tooltip.js";
2
+ export { TruncatedLineWithTooltip };
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../utils/cn.js";
3
- import { Tooltip, TooltipContent, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
3
+ import { useHasTooltipProvider } from "../../core/animate-ui/primitives/animate/tooltip.js";
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../core/animate-ui/components/animate/tooltip.js";
4
5
  import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/components/truncated-line-with-tooltip/truncated-line-with-tooltip.tsx
@@ -11,18 +12,29 @@ function hasTooltipContent(content) {
11
12
  if (typeof content === "boolean") return false;
12
13
  return true;
13
14
  }
15
+ /** Written out in full so Tailwind finds them. */
16
+ var CLAMP = {
17
+ 2: "line-clamp-2",
18
+ 3: "line-clamp-3",
19
+ 4: "line-clamp-4",
20
+ 5: "line-clamp-5",
21
+ 6: "line-clamp-6"
22
+ };
14
23
  /**
15
- * Single-line truncation with tooltip when overflow (measured via DOM).
16
- * Wrap in {@link TooltipProvider} at the tree root when using tooltips.
24
+ * Truncation with a tooltip of the whole text, shown only when the text is
25
+ * actually cut (measured via DOM): one line by default, or a few (`lines`).
26
+ * An app's own {@link TooltipProvider} wins; without one it brings its own.
17
27
  */
18
- function TruncatedLineWithTooltip({ className, tooltipContent, children }) {
28
+ function TruncatedLineWithTooltip({ className, tooltipContent, children, lines = 1 }) {
29
+ const clamp = CLAMP[lines];
19
30
  const textRef = useRef(null);
20
31
  const [isTruncated, setIsTruncated] = useState(false);
32
+ const hasTooltipProvider = useHasTooltipProvider();
21
33
  const measure = useCallback(() => {
22
34
  const el = textRef.current;
23
35
  if (!el) return;
24
- setIsTruncated(el.scrollWidth > el.clientWidth + 1);
25
- }, []);
36
+ setIsTruncated(clamp ? el.scrollHeight > el.clientHeight + 1 : el.scrollWidth > el.clientWidth + 1);
37
+ }, [clamp]);
26
38
  useLayoutEffect(() => {
27
39
  measure();
28
40
  }, [
@@ -39,11 +51,11 @@ function TruncatedLineWithTooltip({ className, tooltipContent, children }) {
39
51
  }, [measure]);
40
52
  const line = /* @__PURE__ */ jsx("span", {
41
53
  ref: textRef,
42
- className: cn("block min-w-0 truncate", className),
54
+ className: cn("block min-w-0", clamp ?? "truncate", className),
43
55
  children
44
56
  });
45
57
  if (!(isTruncated && hasTooltipContent(tooltipContent))) return line;
46
- return /* @__PURE__ */ jsxs(Tooltip, {
58
+ const tooltip = /* @__PURE__ */ jsxs(Tooltip, {
47
59
  side: "top",
48
60
  children: [/* @__PURE__ */ jsx(TooltipTrigger, {
49
61
  className: "block min-w-0 w-full cursor-inherit text-left",
@@ -56,6 +68,12 @@ function TruncatedLineWithTooltip({ className, tooltipContent, children }) {
56
68
  })
57
69
  })]
58
70
  });
71
+ if (hasTooltipProvider) return tooltip;
72
+ return /* @__PURE__ */ jsx(TooltipProvider, {
73
+ openDelay: 300,
74
+ closeDelay: 100,
75
+ children: tooltip
76
+ });
59
77
  }
60
78
  //#endregion
61
79
  export { TruncatedLineWithTooltip };
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import { JSX, HTMLAttributes } from 'react';
3
+
4
+ declare const TYPOGRAPHY_VARIANTS: readonly ["h1", "h2", "h3", "h4", "h5", "h6", "body1", "body2", "subtitle1", "subtitle2"];
5
+ type TypographyVariant = (typeof TYPOGRAPHY_VARIANTS)[number];
6
+ /** Tailwind classes per variant — edit here to tune the type scale. */
7
+ declare const typographyVariantClasses: Record<TypographyVariant, string>;
8
+ /** Default semantic tag per variant (Material UI–aligned). */
9
+ declare const typographyDefaultElement: Record<TypographyVariant, keyof JSX.IntrinsicElements>;
10
+
11
+ interface TypographyProps extends HTMLAttributes<HTMLElement> {
12
+ variant?: TypographyVariant;
13
+ /** Override the rendered element while keeping variant styles (e.g. `as="span"` with `variant="h1"`). */
14
+ as?: keyof JSX.IntrinsicElements;
15
+ }
16
+
17
+ declare const Typography: React.ForwardRefExoticComponent<TypographyProps & React.RefAttributes<HTMLElement>>;
18
+
19
+ export { TYPOGRAPHY_VARIANTS, Typography, type TypographyProps, type TypographyVariant, typographyDefaultElement, typographyVariantClasses };
@@ -0,0 +1,3 @@
1
+ import { TYPOGRAPHY_VARIANTS, typographyDefaultElement, typographyVariantClasses } from "./typography-variants.js";
2
+ import { Typography } from "./typography.js";
3
+ export { TYPOGRAPHY_VARIANTS, Typography, typographyDefaultElement, typographyVariantClasses };
@@ -0,0 +1,3 @@
1
+ declare function useIsMobile(): boolean;
2
+
3
+ export { useIsMobile };
@@ -0,0 +1,2 @@
1
+ import { useIsMobile } from "../../core/hooks/use-mobile.js";
2
+ export { useIsMobile };
@@ -0,0 +1,39 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as React from 'react';
3
+ import { HTMLAttributes } from 'react';
4
+ import { P as PresetColor, S as Size } from '../../index-BQANnKs9.js';
5
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
6
+ import * as lucide_react from 'lucide-react';
7
+ import { LucideIcon } from 'lucide-react';
8
+
9
+ type UserType = "admin" | "super_admin";
10
+ interface UserTypeBadgeRegistryItem {
11
+ label: string;
12
+ color: PresetColor;
13
+ icon: LucideIcon;
14
+ }
15
+ declare const userTypeBadgeRegistry: {
16
+ admin: {
17
+ label: string;
18
+ color: "secondary";
19
+ icon: React.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & React.RefAttributes<SVGSVGElement>>;
20
+ };
21
+ super_admin: {
22
+ label: string;
23
+ color: "error";
24
+ icon: React.ForwardRefExoticComponent<Omit<lucide_react.LucideProps, "ref"> & React.RefAttributes<SVGSVGElement>>;
25
+ };
26
+ };
27
+ declare const userTypeBadgeUserTypes: UserType[];
28
+
29
+ interface UserTypeBadgeProps extends HTMLAttributes<HTMLDivElement>, Pick<StyleAxisProps, "radius"> {
30
+ userType: UserType;
31
+ size?: Size;
32
+ }
33
+
34
+ declare const userTypeBadgeSizeVariants: (props?: ({
35
+ size?: "sm" | "default" | "lg" | null | undefined;
36
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
37
+ declare const UserTypeBadge: React.ForwardRefExoticComponent<UserTypeBadgeProps & React.RefAttributes<HTMLDivElement>>;
38
+
39
+ export { type UserType, UserTypeBadge, type UserTypeBadgeProps, type UserTypeBadgeRegistryItem, userTypeBadgeRegistry, userTypeBadgeSizeVariants, userTypeBadgeUserTypes };
@@ -0,0 +1,3 @@
1
+ import { userTypeBadgeRegistry, userTypeBadgeUserTypes } from "./user-type-badge.registry.js";
2
+ import { UserTypeBadge, userTypeBadgeSizeVariants } from "./user-type-badge.js";
3
+ export { UserTypeBadge, userTypeBadgeRegistry, userTypeBadgeSizeVariants, userTypeBadgeUserTypes };
@@ -14,7 +14,7 @@ var userTypeBadgeSizeVariants = cva("inline-flex font-medium tracking-tight shad
14
14
  defaultVariants: { size: "default" }
15
15
  });
16
16
  var userTypeBadgeMetallicClasses = cn("relative isolate overflow-hidden border border-white/20", "shadow-[inset_0_1px_0_rgba(255,255,255,0.30),inset_0_-1px_0_rgba(0,0,0,0.22)]", "before:pointer-events-none before:absolute before:inset-0 before:rounded-[inherit]", "before:bg-[linear-gradient(135deg,rgba(255,255,255,0.24)_0%,rgba(255,255,255,0.04)_36%,rgba(0,0,0,0.16)_72%,rgba(255,255,255,0.12)_100%)]", "after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:border after:border-white/15", "after:bg-[linear-gradient(315deg,rgba(255,255,255,0.24)_0%,rgba(255,255,255,0.04)_36%,rgba(0,0,0,0.16)_72%,rgba(255,255,255,0.12)_100%)]", "after:opacity-0 after:transition-opacity after:duration-[1800ms] after:ease-in-out hover:after:opacity-100");
17
- var UserTypeBadge = React$1.forwardRef(({ userType, size = "default", className, ...props }, ref) => {
17
+ var UserTypeBadge = React$1.forwardRef(({ userType, size = "default", className, radius, ...props }, ref) => {
18
18
  const { color, icon: Icon, label } = userTypeBadgeRegistry[userType];
19
19
  return /* @__PURE__ */ jsx("div", {
20
20
  ref,
@@ -23,6 +23,7 @@ var UserTypeBadge = React$1.forwardRef(({ userType, size = "default", className,
23
23
  children: /* @__PURE__ */ jsxs(Badge, {
24
24
  variant: "solid",
25
25
  color,
26
+ radius,
26
27
  className: cn(userTypeBadgeSizeVariants({ size }), userTypeBadgeMetallicClasses, className),
27
28
  children: [/* @__PURE__ */ jsx(Icon, {
28
29
  "aria-hidden": true,
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { V as VerticalStepperProps } from '../../vertical-stepper.props-BXYcbW70.js';
3
+ export { a as VerticalStepperSize, b as VerticalStepperStep, c as VerticalStepperStepStatus } from '../../vertical-stepper.props-BXYcbW70.js';
4
+
5
+ declare function VerticalStepper({ data, onStepClick, size, className, ariaLabel, }: VerticalStepperProps): React.JSX.Element;
6
+
7
+ export { VerticalStepper, VerticalStepperProps };
@@ -0,0 +1,2 @@
1
+ import { VerticalStepper } from "./vertical-stepper.js";
2
+ export { VerticalStepper };
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../../utils/cn.js";
2
2
  import { cloneElement, isValidElement } from "react";
3
3
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
4
- import { CheckIcon } from "lucide-react";
4
+ import { CheckIcon, TriangleAlertIcon, XIcon } from "lucide-react";
5
5
  //#region src/components/vertical-stepper/vertical-stepper.tsx
6
6
  var stateVisuals = {
7
7
  complete: {
@@ -11,6 +11,20 @@ var stateVisuals = {
11
11
  descriptionClass: "text-muted-foreground",
12
12
  connectorClass: "bg-success"
13
13
  },
14
+ stale: {
15
+ iconClass: "text-warning",
16
+ iconBoxClass: "border-warning/25 bg-warning/10",
17
+ titleClass: "text-foreground",
18
+ descriptionClass: "text-muted-foreground",
19
+ connectorClass: "bg-warning"
20
+ },
21
+ failed: {
22
+ iconClass: "text-error",
23
+ iconBoxClass: "border-error/25 bg-error/10",
24
+ titleClass: "text-foreground",
25
+ descriptionClass: "text-muted-foreground",
26
+ connectorClass: "bg-error"
27
+ },
14
28
  in_progress: {
15
29
  iconClass: "text-primary",
16
30
  iconBoxClass: "border-primary/25 bg-primary/10",
@@ -28,6 +42,8 @@ var stateVisuals = {
28
42
  };
29
43
  var statusSrLabel = {
30
44
  complete: "Completed",
45
+ stale: "Out of date",
46
+ failed: "Failed",
31
47
  in_progress: "Current step",
32
48
  not_started: "Not started"
33
49
  };
@@ -141,12 +157,23 @@ function VerticalStepperStepRow({ step, isLast, onStepClick, s }) {
141
157
  s
142
158
  })
143
159
  }) : textContent,
144
- step.status === "complete" || step.endAction != null ? /* @__PURE__ */ jsxs("div", {
160
+ step.status === "complete" || step.status === "stale" || step.status === "failed" || step.endAction != null ? /* @__PURE__ */ jsxs("div", {
145
161
  className: cn("flex shrink-0 items-center", s.iconBoxHeight, s.endGap),
146
- children: [step.status === "complete" ? /* @__PURE__ */ jsx(CheckIcon, {
147
- className: cn(s.endIcon, "text-success"),
148
- "aria-hidden": true
149
- }) : null, step.endAction]
162
+ children: [
163
+ step.status === "complete" ? /* @__PURE__ */ jsx(CheckIcon, {
164
+ className: cn(s.endIcon, "text-success"),
165
+ "aria-hidden": true
166
+ }) : null,
167
+ step.status === "stale" ? /* @__PURE__ */ jsx(TriangleAlertIcon, {
168
+ className: cn(s.endIcon, "text-warning"),
169
+ "aria-hidden": true
170
+ }) : null,
171
+ step.status === "failed" ? /* @__PURE__ */ jsx(XIcon, {
172
+ className: cn(s.endIcon, "text-error"),
173
+ "aria-hidden": true
174
+ }) : null,
175
+ step.endAction
176
+ ]
150
177
  }) : null
151
178
  ]
152
179
  });
@@ -0,0 +1,38 @@
1
+ import * as React from 'react';
2
+ import { ToggleGroupProps } from '../toggle-group/index.js';
3
+ import 'class-variance-authority';
4
+ import 'radix-ui';
5
+ import 'motion/react';
6
+ import 'class-variance-authority/types';
7
+ import '../../style-axes-DSQ2DGc5.js';
8
+ import '../../index-BQANnKs9.js';
9
+
10
+ /** How a collection is laid out: cards in a grid, or rows in a list. */
11
+ type ViewMode = "grid" | "list";
12
+ interface ViewToggleLabels {
13
+ /** The group's accessible name ("Layout"). */
14
+ group: string;
15
+ grid: string;
16
+ list: string;
17
+ }
18
+ interface ViewToggleProps {
19
+ /** The layout shown now. */
20
+ value: ViewMode;
21
+ /** Called with the other layout when it is picked. Pressing the current one does nothing: one is always on. */
22
+ onValueChange: (value: ViewMode) => void;
23
+ /** Already-translated labels; English when absent. The icons have no visible text, so these are their names. */
24
+ labels?: Partial<ViewToggleLabels>;
25
+ /** Default `sm`, to sit beside a search box or a sort menu. */
26
+ size?: "sm" | "default";
27
+ color?: ToggleGroupProps["color"];
28
+ className?: string;
29
+ }
30
+
31
+ /**
32
+ * Switch a collection between cards in a grid and rows in a list: two icon
33
+ * toggles, the current one pressed. A single toggle group lets its pressed
34
+ * item be un-pressed; this one keeps one layout on.
35
+ */
36
+ declare function ViewToggle({ value, onValueChange, labels, size, color, className }: ViewToggleProps): React.JSX.Element;
37
+
38
+ export { type ViewMode, ViewToggle, type ViewToggleLabels, type ViewToggleProps };
@@ -0,0 +1,2 @@
1
+ import { ViewToggle } from "./view-toggle.js";
2
+ export { ViewToggle };
@@ -0,0 +1,56 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { ToggleGroup, ToggleGroupItem } from "../../core/animate-ui/components/radix/toggle-group.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { LayoutGrid, List } from "lucide-react";
5
+ //#region src/components/view-toggle/view-toggle.tsx
6
+ var DEFAULT_LABELS = {
7
+ group: "Layout",
8
+ grid: "Grid view",
9
+ list: "List view"
10
+ };
11
+ var MODES = [{
12
+ mode: "grid",
13
+ icon: LayoutGrid
14
+ }, {
15
+ mode: "list",
16
+ icon: List
17
+ }];
18
+ function isViewMode(value) {
19
+ return value === "grid" || value === "list";
20
+ }
21
+ /**
22
+ * Switch a collection between cards in a grid and rows in a list: two icon
23
+ * toggles, the current one pressed. A single toggle group lets its pressed
24
+ * item be un-pressed; this one keeps one layout on.
25
+ */
26
+ function ViewToggle({ value, onValueChange, labels, size = "sm", color, className }) {
27
+ const text = {
28
+ ...DEFAULT_LABELS,
29
+ ...labels
30
+ };
31
+ function handleChange(next) {
32
+ if (isViewMode(next) && next !== value) onValueChange(next);
33
+ }
34
+ return /* @__PURE__ */ jsx(ToggleGroup, {
35
+ type: "single",
36
+ size,
37
+ color,
38
+ value,
39
+ onValueChange: handleChange,
40
+ role: "group",
41
+ "aria-label": text.group,
42
+ "data-slot": "view-toggle",
43
+ className: cn("shrink-0", className),
44
+ children: MODES.map(({ mode, icon: Icon }) => /* @__PURE__ */ jsx(ToggleGroupItem, {
45
+ value: mode,
46
+ "aria-label": text[mode],
47
+ title: text[mode],
48
+ children: /* @__PURE__ */ jsx(Icon, {
49
+ "aria-hidden": true,
50
+ className: "size-4"
51
+ })
52
+ }, mode))
53
+ });
54
+ }
55
+ //#endregion
56
+ export { ViewToggle };