@espressif/dashboard-ui-components 1.11.2 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/.claude/rules/dashboard-ui-consumption.md +176 -5
  2. package/.cursor/rules/dashboard-ui-consumption.mdc +163 -4
  3. package/CHANGELOG.md +1005 -0
  4. package/README.md +240 -7
  5. package/THIRD-PARTY-NOTICES.md +2 -1
  6. package/dist/alert.props-CcKo49Rb.d.ts +44 -0
  7. package/dist/animation/index.d.ts +3 -0
  8. package/dist/animation/index.js +3 -0
  9. package/dist/avatar.props-2q5BsX-R.d.ts +29 -0
  10. package/dist/button-BK-DIR_L.d.ts +21 -0
  11. package/dist/button-BxJ7s6sR.d.ts +76 -0
  12. package/dist/calendar.props-BtCzuWH1.d.ts +12 -0
  13. package/dist/carousel/index.d.ts +2 -0
  14. package/dist/carousel/index.js +2 -0
  15. package/dist/charts/index.d.ts +5 -0
  16. package/dist/charts/index.js +9 -0
  17. package/dist/common/app-logo/app-logo.js +1 -1
  18. package/dist/common/index.d.ts +9 -20
  19. package/dist/common/my-account-menu/my-account-menu.js +45 -13
  20. package/dist/common/profile-card/profile-card.js +3 -2
  21. package/dist/components/accordion/accordion.js +14 -5
  22. package/dist/components/accordion/index.d.ts +36 -0
  23. package/dist/components/accordion/index.js +2 -0
  24. package/dist/components/advanced-search-box/advanced-search-box.js +8 -2
  25. package/dist/components/advanced-search-box/index.d.ts +29 -0
  26. package/dist/components/advanced-search-box/index.js +2 -0
  27. package/dist/components/alert/alert.js +2 -1
  28. package/dist/components/alert/index.d.ts +12 -0
  29. package/dist/components/alert/index.js +2 -0
  30. package/dist/components/anchored-panel/anchored-panel.js +83 -0
  31. package/dist/components/anchored-panel/index.d.ts +31 -0
  32. package/dist/components/anchored-panel/index.js +2 -0
  33. package/dist/components/animated-containers/index.d.ts +13 -0
  34. package/dist/components/animated-containers/index.js +2 -0
  35. package/dist/components/async-multi-select/async-multi-select.js +48 -7
  36. package/dist/components/async-multi-select/index.d.ts +63 -0
  37. package/dist/components/async-multi-select/index.js +2 -0
  38. package/dist/components/avatar/avatar.js +11 -4
  39. package/dist/components/avatar/index.d.ts +8 -0
  40. package/dist/components/avatar/index.js +2 -0
  41. package/dist/components/avatar-group/avatar-group.js +35 -0
  42. package/dist/components/avatar-group/index.d.ts +31 -0
  43. package/dist/components/avatar-group/index.js +2 -0
  44. package/dist/components/badge/index.d.ts +14 -0
  45. package/dist/components/badge/index.js +2 -0
  46. package/dist/components/breadcrumb/index.d.ts +21 -0
  47. package/dist/components/breadcrumb/index.js +2 -0
  48. package/dist/components/bubble/bubble.js +18 -0
  49. package/dist/components/bubble/index.d.ts +19 -0
  50. package/dist/components/bubble/index.js +2 -0
  51. package/dist/components/button/button.js +87 -25
  52. package/dist/components/button/flash-button.js +9 -3
  53. package/dist/components/button/index.d.ts +56 -0
  54. package/dist/components/button/index.js +6 -0
  55. package/dist/components/button-group/index.d.ts +16 -0
  56. package/dist/components/button-group/index.js +2 -0
  57. package/dist/components/calendar/calendar.js +5 -5
  58. package/dist/components/calendar/index.d.ts +11 -0
  59. package/dist/components/calendar/index.js +2 -0
  60. package/dist/components/card/index.d.ts +11 -0
  61. package/dist/components/card/index.js +2 -0
  62. package/dist/components/card-rail/card-rail.js +50 -0
  63. package/dist/components/card-rail/index.d.ts +30 -0
  64. package/dist/components/card-rail/index.js +2 -0
  65. package/dist/components/cards/collapsible-card.js +5 -2
  66. package/dist/components/cards/index.d.ts +16200 -0
  67. package/dist/components/cards/index.js +8 -0
  68. package/dist/components/cards/section-card.js +133 -8
  69. package/dist/components/cards/simple-card.js +5 -2
  70. package/dist/components/carousel/carousel.js +137 -49
  71. package/dist/components/carousel/index.d.ts +130 -0
  72. package/dist/components/carousel/index.js +2 -0
  73. package/dist/components/category-card/category-card.js +111 -0
  74. package/dist/components/category-card/index.d.ts +55 -0
  75. package/dist/components/category-card/index.js +2 -0
  76. package/dist/components/chart/area-chart.js +95 -85
  77. package/dist/components/chart/bar-chart.js +123 -60
  78. package/dist/components/chart/chart.js +127 -3
  79. package/dist/components/chart/composed-chart.js +109 -98
  80. package/dist/components/chart/donut-chart.js +23 -5
  81. package/dist/components/chart/index.d.ts +732 -0
  82. package/dist/components/chart/index.js +9 -0
  83. package/dist/components/chart/line-chart.js +93 -83
  84. package/dist/components/chart/treemap-chart.js +71 -58
  85. package/dist/components/check-badge/check-badge.js +25 -0
  86. package/dist/components/check-badge/index.d.ts +13 -0
  87. package/dist/components/check-badge/index.js +2 -0
  88. package/dist/components/checkbox/index.d.ts +8 -0
  89. package/dist/components/checkbox/index.js +2 -0
  90. package/dist/components/choice-card/choice-card.js +99 -0
  91. package/dist/components/choice-card/index.d.ts +41 -0
  92. package/dist/components/choice-card/index.js +2 -0
  93. package/dist/components/circular-progress/circular-progress.js +5 -2
  94. package/dist/components/circular-progress/index.d.ts +23 -0
  95. package/dist/components/circular-progress/index.js +2 -0
  96. package/dist/components/code/index.d.ts +40 -0
  97. package/dist/components/code/index.js +2 -0
  98. package/dist/components/code-editor/code-editor.js +9 -3
  99. package/dist/components/code-editor/index.d.ts +82 -0
  100. package/dist/components/code-editor/index.js +2 -0
  101. package/dist/components/collapsible/index.d.ts +42 -0
  102. package/dist/components/collapsible/index.js +2 -0
  103. package/dist/components/column-panel/column-panel.js +38 -0
  104. package/dist/components/column-panel/index.d.ts +37 -0
  105. package/dist/components/column-panel/index.js +3 -0
  106. package/dist/components/column-panel/use-panel-flag.js +27 -0
  107. package/dist/components/combobox/index.d.ts +28 -0
  108. package/dist/components/combobox/index.js +2 -0
  109. package/dist/components/confirmation-dialog/confirmation-dialog.js +1 -1
  110. package/dist/components/confirmation-dialog/index.d.ts +40 -0
  111. package/dist/components/confirmation-dialog/index.js +3 -0
  112. package/dist/components/content-container/index.d.ts +16 -0
  113. package/dist/components/content-container/index.js +2 -0
  114. package/dist/components/copiable-text/index.d.ts +33 -0
  115. package/dist/components/copiable-text/index.js +2 -0
  116. package/dist/components/coverflow/_constants/coverflow-poses.js +23 -0
  117. package/dist/components/coverflow/_constants/coverflow-shapes.js +23 -0
  118. package/dist/components/coverflow/_hooks/use-coverflow.js +90 -0
  119. package/dist/components/coverflow/_utils/ring.js +24 -0
  120. package/dist/components/coverflow/coverflow.js +198 -0
  121. package/dist/components/coverflow/index.d.ts +105 -0
  122. package/dist/components/coverflow/index.js +2 -0
  123. package/dist/components/data-table/data-table.js +9 -2
  124. package/dist/components/data-table/index.d.ts +120 -0
  125. package/dist/components/data-table/index.js +3 -0
  126. package/dist/components/date-picker/date-picker.js +5 -2
  127. package/dist/components/date-picker/index.d.ts +50 -0
  128. package/dist/components/date-picker/index.js +2 -0
  129. package/dist/components/date-range-picker/date-range-picker.js +11 -2
  130. package/dist/components/date-range-picker/index.d.ts +100 -0
  131. package/dist/components/date-range-picker/index.js +3 -0
  132. package/dist/components/date-time-picker/date-time-picker.js +5 -2
  133. package/dist/components/date-time-picker/index.d.ts +79 -0
  134. package/dist/components/date-time-picker/index.js +2 -0
  135. package/dist/components/device-icon/index.d.ts +17 -0
  136. package/dist/components/device-icon/index.js +2 -0
  137. package/dist/components/dialog/index.d.ts +38 -0
  138. package/dist/components/dialog/index.js +2 -0
  139. package/dist/components/dropdown-menu/index.d.ts +57 -0
  140. package/dist/components/dropdown-menu/index.js +2 -0
  141. package/dist/components/dynamic-list/dynamic-list.js +4 -4
  142. package/dist/components/dynamic-list/index.d.ts +74 -0
  143. package/dist/components/dynamic-list/index.js +2 -0
  144. package/dist/components/error-display/index.d.ts +17 -0
  145. package/dist/components/error-display/index.js +3 -0
  146. package/dist/components/expandable-text/expandable-text-overlay.js +78 -0
  147. package/dist/components/expandable-text/expandable-text.js +73 -0
  148. package/dist/components/expandable-text/index.d.ts +39 -0
  149. package/dist/components/expandable-text/index.js +2 -0
  150. package/dist/components/expandable-text/use-clamped.js +23 -0
  151. package/dist/components/facet-filters/_hooks/use-filter-group.js +51 -0
  152. package/dist/components/facet-filters/active-filters.js +31 -0
  153. package/dist/components/facet-filters/filter-group.js +110 -0
  154. package/dist/components/facet-filters/filters-panel.js +59 -0
  155. package/dist/components/facet-filters/filters-pill.js +40 -0
  156. package/dist/components/facet-filters/index.d.ts +104 -0
  157. package/dist/components/facet-filters/index.js +6 -0
  158. package/dist/components/facet-filters/use-filters-collapsed.js +21 -0
  159. package/dist/components/feature-grid/feature-grid.js +115 -0
  160. package/dist/components/feature-grid/index.d.ts +53 -0
  161. package/dist/components/feature-grid/index.js +2 -0
  162. package/dist/components/file-input/file-input.js +9 -3
  163. package/dist/components/file-input/index.d.ts +78 -0
  164. package/dist/components/file-input/index.js +2 -0
  165. package/dist/components/file-upload/file-upload.js +10 -5
  166. package/dist/components/file-upload/index.d.ts +38 -0
  167. package/dist/components/file-upload/index.js +2 -0
  168. package/dist/components/filters-bar/filters-bar.js +5 -1
  169. package/dist/components/filters-bar/index.d.ts +26 -0
  170. package/dist/components/filters-bar/index.js +2 -0
  171. package/dist/components/flip-card/flip-card.js +147 -0
  172. package/dist/components/flip-card/index.d.ts +43 -0
  173. package/dist/components/flip-card/index.js +2 -0
  174. package/dist/components/floating-window/_hooks/use-drag-move.js +76 -0
  175. package/dist/components/floating-window/floating-window.js +97 -0
  176. package/dist/components/floating-window/index.d.ts +45 -0
  177. package/dist/components/floating-window/index.js +2 -0
  178. package/dist/components/form/index.d.ts +28 -0
  179. package/dist/components/form/index.js +2 -0
  180. package/dist/components/fullscreen-dialog/fullscreen-dialog.js +6 -2
  181. package/dist/components/fullscreen-dialog/index.d.ts +38 -0
  182. package/dist/components/fullscreen-dialog/index.js +2 -0
  183. package/dist/components/horizontal-stepper/horizontal-stepper.js +122 -0
  184. package/dist/components/horizontal-stepper/index.d.ts +70 -0
  185. package/dist/components/horizontal-stepper/index.js +2 -0
  186. package/dist/components/icon-avatar/index.d.ts +9 -0
  187. package/dist/components/icon-avatar/index.js +2 -0
  188. package/dist/components/icon-text-action-card/icon-text-action-card.js +9 -5
  189. package/dist/components/icon-text-action-card/index.d.ts +11 -0
  190. package/dist/components/icon-text-action-card/index.js +2 -0
  191. package/dist/components/identicon/identicon.js +33 -0
  192. package/dist/components/identicon/index.d.ts +26 -0
  193. package/dist/components/identicon/index.js +2 -0
  194. package/dist/components/illustration/index.d.ts +37 -0
  195. package/dist/components/illustration/index.js +3 -0
  196. package/dist/components/index.d.ts +177 -19529
  197. package/dist/components/index.js +61 -10
  198. package/dist/components/input/index.d.ts +15 -0
  199. package/dist/components/input/index.js +3 -0
  200. package/dist/components/input-group/index.d.ts +35 -0
  201. package/dist/components/input-group/index.js +2 -0
  202. package/dist/components/input-group/input-group.js +41 -0
  203. package/dist/components/input-otp/index.d.ts +63 -0
  204. package/dist/components/input-otp/index.js +2 -0
  205. package/dist/components/key-value-manager/index.d.ts +63 -0
  206. package/dist/components/key-value-manager/index.js +2 -0
  207. package/dist/components/key-value-manager/key-value-manager-table.js +7 -5
  208. package/dist/components/label/index.d.ts +8 -0
  209. package/dist/components/label/index.js +2 -0
  210. package/dist/components/link/index.d.ts +33 -0
  211. package/dist/components/link/index.js +2 -0
  212. package/dist/components/list/index.d.ts +9 -0
  213. package/dist/components/list/index.js +3 -0
  214. package/dist/components/list/list-item.utils.js +1 -1
  215. package/dist/components/list/list.js +3 -1
  216. package/dist/components/list-details/index.d.ts +51 -0
  217. package/dist/components/list-details/index.js +2 -0
  218. package/dist/components/list-details/list-details.js +5 -2
  219. package/dist/components/lottie-animation-container/index.d.ts +10 -0
  220. package/dist/components/lottie-animation-container/index.js +2 -0
  221. package/dist/components/lottie-animation-container/lottie-animation-container.js +22 -3
  222. package/dist/components/lottie-animations/index.d.ts +8 -0
  223. package/dist/components/lottie-animations/index.js +2 -0
  224. package/dist/components/markdown-content/index.d.ts +32 -0
  225. package/dist/components/markdown-content/index.js +2 -0
  226. package/dist/components/media-card/index.d.ts +125 -0
  227. package/dist/components/media-card/index.js +4 -0
  228. package/dist/components/media-card/media-card-image.js +59 -0
  229. package/dist/components/media-card/media-card-reveal.js +76 -0
  230. package/dist/components/media-card/media-card.classes.js +37 -0
  231. package/dist/components/media-card/media-card.js +91 -0
  232. package/dist/components/media-stage/index.d.ts +41 -0
  233. package/dist/components/media-stage/index.js +2 -0
  234. package/dist/components/media-stage/media-stage.js +48 -0
  235. package/dist/components/menu/index.d.ts +14 -0
  236. package/dist/components/menu/index.js +2 -0
  237. package/dist/components/message-scroller/_hooks/use-follow-bottom.js +85 -0
  238. package/dist/components/message-scroller/index.d.ts +29 -0
  239. package/dist/components/message-scroller/index.js +2 -0
  240. package/dist/components/message-scroller/message-scroller.js +65 -0
  241. package/dist/components/mini-bar-chart/index.d.ts +40 -0
  242. package/dist/components/mini-bar-chart/index.js +2 -0
  243. package/dist/components/mini-bar-chart/mini-bar-chart.js +93 -0
  244. package/dist/components/monospace-content/index.d.ts +43 -0
  245. package/dist/components/monospace-content/index.js +2 -0
  246. package/dist/components/monospace-content/monospace-content.js +1 -1
  247. package/dist/components/nav-bar/index.d.ts +148 -0
  248. package/dist/components/nav-bar/index.js +2 -0
  249. package/dist/components/nav-bar/nav-bar-details-panel.js +158 -44
  250. package/dist/components/nav-bar/nav-bar-mobile-menu.js +93 -27
  251. package/dist/components/nav-bar/nav-bar.js +256 -138
  252. package/dist/components/nav-bar/use-nav-bar-hover-details.js +80 -0
  253. package/dist/components/nav-bar/use-nav-bar-overflow.js +5 -5
  254. package/dist/components/notice-strip/index.d.ts +32 -0
  255. package/dist/components/notice-strip/index.js +2 -0
  256. package/dist/components/notice-strip/notice-strip.js +57 -0
  257. package/dist/components/option-card-group/index.d.ts +50 -0
  258. package/dist/components/option-card-group/index.js +2 -0
  259. package/dist/components/option-card-group/option-card-group.js +76 -0
  260. package/dist/components/overflow-badge-list/index.d.ts +63 -0
  261. package/dist/components/overflow-badge-list/index.js +2 -0
  262. package/dist/components/overflow-badge-list/overflow-badge-list.js +78 -19
  263. package/dist/components/page-banner/index.d.ts +33 -0
  264. package/dist/components/page-banner/index.js +2 -0
  265. package/dist/components/page-banner/page-banner.js +56 -0
  266. package/dist/components/page-container/index.d.ts +20 -0
  267. package/dist/components/page-container/index.js +3 -0
  268. package/dist/components/page-container/page-container.js +5 -5
  269. package/dist/components/pagination/index.d.ts +31 -0
  270. package/dist/components/pagination/index.js +3 -0
  271. package/dist/components/popover/index.d.ts +60 -0
  272. package/dist/components/popover/index.js +3 -0
  273. package/dist/components/preview-card/index.d.ts +24 -0
  274. package/dist/components/preview-card/index.js +2 -0
  275. package/dist/components/progress-bar/index.d.ts +32 -0
  276. package/dist/components/progress-bar/index.js +2 -0
  277. package/dist/components/progress-bar/progress-bar.js +22 -6
  278. package/dist/components/radio-group/index.d.ts +24 -0
  279. package/dist/components/radio-group/index.js +2 -0
  280. package/dist/components/rank-numeral/index.d.ts +30 -0
  281. package/dist/components/rank-numeral/index.js +2 -0
  282. package/dist/components/rank-numeral/rank-numeral.js +26 -0
  283. package/dist/components/reaction-button/index.d.ts +32 -0
  284. package/dist/components/reaction-button/index.js +2 -0
  285. package/dist/components/reaction-button/reaction-button.js +50 -0
  286. package/dist/components/readout/index.d.ts +31 -0
  287. package/dist/components/readout/index.js +2 -0
  288. package/dist/components/readout/readout.js +63 -0
  289. package/dist/components/requirement-list/index.d.ts +52 -0
  290. package/dist/components/requirement-list/index.js +2 -0
  291. package/dist/components/requirement-list/requirement-list.js +29 -8
  292. package/dist/components/resizable/index.d.ts +31 -0
  293. package/dist/components/resizable/index.js +4 -0
  294. package/dist/components/resizable/resizable-group.js +23 -0
  295. package/dist/components/resizable/resizable-panel.js +28 -0
  296. package/dist/components/resizable/resizable-separator.js +24 -0
  297. package/dist/components/reveal/index.d.ts +23 -0
  298. package/dist/components/reveal/index.js +2 -0
  299. package/dist/components/reveal/reveal.js +24 -0
  300. package/dist/components/scroll-area/index.d.ts +27 -0
  301. package/dist/components/scroll-area/index.js +2 -0
  302. package/dist/components/scrollable-sections/index.d.ts +58 -0
  303. package/dist/components/scrollable-sections/index.js +2 -0
  304. package/dist/components/scrollable-sections/scrollable-sections.js +11 -3
  305. package/dist/components/search-box/index.d.ts +32 -0
  306. package/dist/components/search-box/index.js +2 -0
  307. package/dist/components/search-box/search-box.js +18 -3
  308. package/dist/components/search-field-shell.js +1 -1
  309. package/dist/components/select/index.d.ts +44 -0
  310. package/dist/components/select/index.js +2 -0
  311. package/dist/components/selectable-card-list/checkbox-card-list.js +5 -3
  312. package/dist/components/selectable-card-list/index.d.ts +76 -0
  313. package/dist/components/selectable-card-list/index.js +2 -0
  314. package/dist/components/selectable-card-list/radio-card-list.js +12 -6
  315. package/dist/components/selectable-card-list/selectable-card-list-shared.js +24 -12
  316. package/dist/components/selectable-card-list/selectable-card-list.js +12 -3
  317. package/dist/components/separator/index.d.ts +24 -0
  318. package/dist/components/separator/index.js +2 -0
  319. package/dist/components/share-menu/index.d.ts +55 -0
  320. package/dist/components/share-menu/index.js +2 -0
  321. package/dist/components/share-menu/share-marks.js +31 -0
  322. package/dist/components/share-menu/share-menu.js +140 -0
  323. package/dist/components/share-menu/share-urls.js +15 -0
  324. package/dist/components/sheet/index.d.ts +41 -0
  325. package/dist/components/sheet/index.js +2 -0
  326. package/dist/components/showcase-card/index.d.ts +53 -0
  327. package/dist/components/showcase-card/index.js +2 -0
  328. package/dist/components/showcase-card/showcase-card.js +75 -0
  329. package/dist/components/sidebar/index.d.ts +109 -0
  330. package/dist/components/sidebar/index.js +4 -0
  331. package/dist/components/sidebar/sidebar.js +56 -40
  332. package/dist/components/simple-clickable-card/index.d.ts +11 -0
  333. package/dist/components/simple-clickable-card/index.js +2 -0
  334. package/dist/components/simple-clickable-card/simple-clickable-card-shared.js +2 -2
  335. package/dist/components/simple-clickable-card/simple-clickable-card.js +5 -2
  336. package/dist/components/simple-info-card/index.d.ts +25 -0
  337. package/dist/components/simple-info-card/index.js +2 -0
  338. package/dist/components/simple-info-card/simple-info-card.js +6 -3
  339. package/dist/components/simple-list/index.d.ts +63 -0
  340. package/dist/components/simple-list/index.js +2 -0
  341. package/dist/components/simple-list/simple-list.js +3 -1
  342. package/dist/components/simple-paginated-list/index.d.ts +20 -0
  343. package/dist/components/simple-paginated-list/index.js +2 -0
  344. package/dist/components/simplified-date/index.d.ts +18 -0
  345. package/dist/components/simplified-date/index.js +2 -0
  346. package/dist/components/skeleton/index.d.ts +5 -0
  347. package/dist/components/skeleton/index.js +2 -0
  348. package/dist/components/skeletons/index.d.ts +11 -0
  349. package/dist/components/skeletons/index.js +2 -0
  350. package/dist/components/sort-menu/index.d.ts +34 -0
  351. package/dist/components/sort-menu/index.js +2 -0
  352. package/dist/components/sort-menu/sort-menu.js +39 -0
  353. package/dist/components/spinner/index.d.ts +15 -0
  354. package/dist/components/spinner/index.js +2 -0
  355. package/dist/components/stat-card/index.d.ts +43 -0
  356. package/dist/components/stat-card/index.js +2 -0
  357. package/dist/components/stat-card/stat-card.js +31 -12
  358. package/dist/components/status-badge/index.d.ts +24 -0
  359. package/dist/components/status-badge/index.js +2 -0
  360. package/dist/components/status-badge/status-badge.js +3 -2
  361. package/dist/components/status-card-list/index.d.ts +24 -0
  362. package/dist/components/status-card-list/index.js +2 -0
  363. package/dist/components/status-card-list/status-card-list.js +8 -4
  364. package/dist/components/step-tabs/index.d.ts +94 -0
  365. package/dist/components/step-tabs/index.js +2 -0
  366. package/dist/components/step-tabs/step-tabs.js +202 -0
  367. package/dist/components/style-scope/index.d.ts +32 -0
  368. package/dist/components/style-scope/index.js +2 -0
  369. package/dist/components/style-scope/style-scope.js +49 -0
  370. package/dist/components/switch/index.d.ts +15 -0
  371. package/dist/components/switch/index.js +2 -0
  372. package/dist/components/table/index.d.ts +18 -0
  373. package/dist/components/table/index.js +2 -0
  374. package/dist/components/tabs/index.d.ts +103 -0
  375. package/dist/components/tabs/index.js +2 -0
  376. package/dist/components/tag/index.d.ts +31 -0
  377. package/dist/components/tag/index.js +2 -0
  378. package/dist/components/tag/tag.js +79 -28
  379. package/dist/components/tag-input/index.d.ts +36 -0
  380. package/dist/components/tag-input/index.js +2 -0
  381. package/dist/components/tag-input/tag-input.js +10 -4
  382. package/dist/components/text-effects/index.d.ts +53 -0
  383. package/dist/components/text-effects/index.js +6 -0
  384. package/dist/components/textarea/index.d.ts +16 -0
  385. package/dist/components/textarea/index.js +2 -0
  386. package/dist/components/thumbnail-strip/index.d.ts +42 -0
  387. package/dist/components/thumbnail-strip/index.js +2 -0
  388. package/dist/components/thumbnail-strip/thumbnail-strip.js +124 -0
  389. package/dist/components/thumbnail-strip/use-scroll-edges.js +41 -0
  390. package/dist/components/time-picker/index.d.ts +13 -0
  391. package/dist/components/time-picker/index.js +2 -0
  392. package/dist/components/timeline/index.d.ts +39 -0
  393. package/dist/components/timeline/index.js +2 -0
  394. package/dist/components/timeline/timeline.js +85 -0
  395. package/dist/components/toast/index.d.ts +56 -0
  396. package/dist/components/toast/index.js +2 -0
  397. package/dist/components/toast/toast.js +42 -32
  398. package/dist/components/togglable-items-list/index.d.ts +28 -0
  399. package/dist/components/togglable-items-list/index.js +2 -0
  400. package/dist/components/toggle-group/index.d.ts +35 -0
  401. package/dist/components/toggle-group/index.js +2 -0
  402. package/dist/components/toolbar/index.d.ts +58 -0
  403. package/dist/components/toolbar/index.js +3 -0
  404. package/dist/components/toolbar/toolbar-button.js +40 -0
  405. package/dist/components/toolbar/toolbar.js +56 -0
  406. package/dist/components/tooltip/index.d.ts +29 -0
  407. package/dist/components/tooltip/index.js +3 -0
  408. package/dist/components/tooltip/tooltip.js +12 -2
  409. package/dist/components/transfer-list/index.d.ts +36 -0
  410. package/dist/components/transfer-list/index.js +2 -0
  411. package/dist/components/transfer-list/transfer-list.js +1 -1
  412. package/dist/components/truncated-line-with-tooltip/index.d.ts +22 -0
  413. package/dist/components/truncated-line-with-tooltip/index.js +2 -0
  414. package/dist/components/truncated-line-with-tooltip/truncated-line-with-tooltip.js +26 -8
  415. package/dist/components/typography/index.d.ts +19 -0
  416. package/dist/components/typography/index.js +3 -0
  417. package/dist/components/use-mobile/index.d.ts +3 -0
  418. package/dist/components/use-mobile/index.js +2 -0
  419. package/dist/components/user-type-badge/index.d.ts +39 -0
  420. package/dist/components/user-type-badge/index.js +3 -0
  421. package/dist/components/user-type-badge/user-type-badge.js +2 -1
  422. package/dist/components/vertical-stepper/index.d.ts +7 -0
  423. package/dist/components/vertical-stepper/index.js +2 -0
  424. package/dist/components/vertical-stepper/vertical-stepper.js +33 -6
  425. package/dist/components/view-toggle/index.d.ts +38 -0
  426. package/dist/components/view-toggle/index.js +2 -0
  427. package/dist/components/view-toggle/view-toggle.js +56 -0
  428. package/dist/core/animate-ui/components/animate/code.js +83 -9
  429. package/dist/core/animate-ui/components/animate/tabs.js +234 -19
  430. package/dist/core/animate-ui/components/animate/tooltip.js +10 -2
  431. package/dist/core/animate-ui/components/base/preview-card.js +20 -3
  432. package/dist/core/animate-ui/components/buttons/copy.js +12 -6
  433. package/dist/core/animate-ui/components/radix/dialog.js +17 -3
  434. package/dist/core/animate-ui/components/radix/dropdown-menu.js +26 -9
  435. package/dist/core/animate-ui/components/radix/sheet.js +20 -4
  436. package/dist/core/animate-ui/components/radix/sidebar.js +9 -9
  437. package/dist/core/animate-ui/components/radix/toggle-group.js +103 -13
  438. package/dist/core/animate-ui/components/radix/toggle.js +5 -5
  439. package/dist/core/animate-ui/primitives/animate/code-block.js +31 -4
  440. package/dist/core/animate-ui/primitives/animate/shiki-highlighter.js +5 -2
  441. package/dist/core/animate-ui/primitives/animate/tabs.js +7 -4
  442. package/dist/core/animate-ui/primitives/animate/tooltip.js +10 -3
  443. package/dist/core/animate-ui/primitives/base/preview-card.js +2 -2
  444. package/dist/core/animate-ui/primitives/base/progress.js +1 -1
  445. package/dist/core/animate-ui/primitives/base/radio.js +3 -3
  446. package/dist/core/animate-ui/primitives/effects/highlight.js +1 -0
  447. package/dist/core/animate-ui/primitives/radix/accordion.js +1 -1
  448. package/dist/core/animate-ui/primitives/radix/dialog.js +6 -3
  449. package/dist/core/animate-ui/primitives/radix/dropdown-menu.js +2 -2
  450. package/dist/core/animate-ui/primitives/radix/sheet.js +7 -3
  451. package/dist/core/animate-ui/primitives/radix/switch.js +2 -2
  452. package/dist/core/animate-ui/primitives/radix/toggle-group.js +2 -2
  453. package/dist/core/badge.js +5 -2
  454. package/dist/core/breadcrumb.js +1 -1
  455. package/dist/core/button/button.js +8 -8
  456. package/dist/core/button/craft-button.js +8 -2
  457. package/dist/core/button.js +17 -7
  458. package/dist/core/card.js +23 -5
  459. package/dist/core/combobox/combobox.js +8 -2
  460. package/dist/core/command.js +3 -3
  461. package/dist/core/form.js +1 -1
  462. package/dist/core/hooks/use-nested-layer-press-guard.js +46 -0
  463. package/dist/core/hooks/use-on-screen.js +33 -0
  464. package/dist/core/hooks/use-prefers-reduced-motion.js +19 -0
  465. package/dist/core/hooks/use-scroll-overflow.js +20 -0
  466. package/dist/core/index.d.ts +30 -5
  467. package/dist/core/index.js +5 -2
  468. package/dist/core/input/input-password.js +13 -9
  469. package/dist/core/input/input.js +38 -12
  470. package/dist/core/input-otp/input-otp.js +9 -5
  471. package/dist/core/popover-group.js +48 -0
  472. package/dist/core/popover-hover.js +127 -0
  473. package/dist/core/popover.js +75 -6
  474. package/dist/core/select.js +35 -20
  475. package/dist/core/table.js +5 -3
  476. package/dist/core/textarea/textarea.js +11 -3
  477. package/dist/data-table/index.d.ts +4 -0
  478. package/dist/data-table/index.js +3 -0
  479. package/dist/date/index.d.ts +11 -0
  480. package/dist/date/index.js +7 -0
  481. package/dist/forms/index.d.ts +4 -0
  482. package/dist/forms/index.js +2 -0
  483. package/dist/icon-avatar.props-RYtw2eSW.d.ts +31 -0
  484. package/dist/icon-text-action-card.props-B2ggncUK.d.ts +53 -0
  485. package/dist/index.d.ts +169 -15
  486. package/dist/index.js +63 -10
  487. package/dist/input-CYI1hhGc.d.ts +38 -0
  488. package/dist/layouts/index.d.ts +132 -8
  489. package/dist/layouts/index.js +3 -1
  490. package/dist/layouts/minimal-workspace-layout/minimal-workspace-layout-context.js +5 -0
  491. package/dist/layouts/minimal-workspace-layout/minimal-workspace-layout.js +404 -0
  492. package/dist/layouts/minimal-workspace-layout/rail-logo.js +90 -0
  493. package/dist/layouts/minimal-workspace-layout/sidebar-trigger.js +42 -0
  494. package/dist/layouts/shared/account-menu-props.js +21 -0
  495. package/dist/layouts/shared/footer-branding.js +34 -0
  496. package/dist/layouts/shared/sidebar-logo.js +59 -0
  497. package/dist/layouts/workspace-layout/account-menu/account-menu.js +9 -3
  498. package/dist/layouts/workspace-layout/footer/footer.js +1 -1
  499. package/dist/layouts/workspace-layout/header/header.js +1 -1
  500. package/dist/layouts/workspace-layout/workspace-layout.js +28 -80
  501. package/dist/{list.props-x1j3CbcF.d.ts → list.props-DP_xPTqU.d.ts} +2 -1
  502. package/dist/markdown/index.d.ts +11 -0
  503. package/dist/markdown/index.js +5 -0
  504. package/dist/my-account-menu.props-C7DK71WC.d.ts +67 -0
  505. package/dist/page-container.props-JutTvKFq.d.ts +48 -0
  506. package/dist/resizable.props-RxFY5tm_.d.ts +44 -0
  507. package/dist/section-card-B7c5uc08.d.ts +84 -0
  508. package/dist/simple-clickable-card.props-BrPCw7CR.d.ts +51 -0
  509. package/dist/slot-DGErA9zi.d.ts +10 -0
  510. package/dist/status-badge.props-lKlEOfRt.d.ts +32 -0
  511. package/dist/style-axes-DSQ2DGc5.d.ts +133 -0
  512. package/dist/toast/index.d.ts +6 -0
  513. package/dist/toast/index.js +2 -0
  514. package/dist/tooltip-C0bYa8a3.d.ts +37 -0
  515. package/dist/{types-DtUxK-Am.d.ts → types-CkXflqg7.d.ts} +31 -1
  516. package/dist/utils/cn.js +6 -1
  517. package/dist/utils/color.js +35 -10
  518. package/dist/utils/index.d.ts +18 -2
  519. package/dist/utils/index.js +4 -1
  520. package/dist/utils/silver-shine.js +16 -1
  521. package/dist/utils/style-axes.js +227 -0
  522. package/dist/utils/variant.js +104 -8
  523. package/dist/utils/view-transition.js +21 -0
  524. package/dist/variant-D81RhpbR.d.ts +104 -0
  525. package/dist/vertical-stepper.props-BXYcbW70.d.ts +29 -0
  526. package/package.json +52 -6
  527. package/src/styles/colors.css +100 -4
  528. package/src/styles/globals.css +8 -131
  529. package/src/styles/style-axes.css +21 -0
  530. package/src/styles/theme.css +696 -0
  531. package/dist/app-logo.props-Ct7QBdTd.d.ts +0 -40
  532. package/dist/popover-ByLD3-Qv.d.ts +0 -204
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
3
+
4
+ type CodeProps = Omit<React.ComponentProps<'div'>, 'children'> & Pick<StyleAxisProps, 'radius' | 'border'> & {
5
+ code: string;
6
+ icon?: React.ElementType;
7
+ theme?: 'light' | 'dark';
8
+ /** Shiki theme IDs for light/dark; see https://shiki.style/themes */
9
+ themes?: {
10
+ light: string;
11
+ dark: string;
12
+ };
13
+ /**
14
+ * Show copy control in the header. Defaults to `true` when `lang` is set; pass `false` to hide.
15
+ */
16
+ copyButton?: boolean;
17
+ lang?: string;
18
+ fileName?: string | React.ReactNode;
19
+ /** Fixes the outer wrapper height (number = px). Code body scrolls vertically. */
20
+ height?: number | string;
21
+ /** Number every line in a gutter beside the code. The numbers are not selected or copied with the code. */
22
+ lineNumbers?: boolean;
23
+ /** 1-based lines to mark with a tint across the full width (a search hit, a linked line). */
24
+ highlightLines?: readonly number[];
25
+ /** Gives each line an `id` of this prefix plus its number (`L` → `L42`), so a page can scroll to or link a line. Keep it unique on the page. */
26
+ lineIdPrefix?: string;
27
+ /** Above this many characters the code is shown as plain text, so a very large file stays quick. Default `200000`. */
28
+ maxHighlightLength?: number;
29
+ /**
30
+ * Something to show beside a line, by 1-based line number: drawn at the
31
+ * line's left edge, in the padding before the numbers, and scrolling with
32
+ * it. Keep it to a small icon or icon button (about 14px); it may be
33
+ * interactive, and comes after the code in the reading order. A line the
34
+ * code does not have gets nothing. Default none.
35
+ */
36
+ lineMarks?: Readonly<Record<number, React.ReactNode>>;
37
+ };
38
+ declare function Code({ className, code, icon: Icon, theme, themes, copyButton, lang, fileName, height, style, radius, border, lineNumbers, highlightLines, lineIdPrefix, maxHighlightLength, lineMarks, ...props }: CodeProps): React.JSX.Element;
39
+
40
+ export { Code, type CodeProps };
@@ -0,0 +1,2 @@
1
+ import { Code } from "../../core/animate-ui/components/animate/code.js";
2
+ export { Code };
@@ -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 { buttonVariants } from "../../core/animate-ui/components/buttons/copy.js";
4
5
  import { FieldLabelRow, fieldHintClassName } from "../../core/field-label-row.js";
5
6
  import { CodeHeader } from "../../core/animate-ui/components/animate/code-header.js";
@@ -69,7 +70,12 @@ function toCssSize(size) {
69
70
  * then Tab, to move focus out of the editor. For JSON (or with a custom
70
71
  * `formatter`) the header has a Format button next to Copy.
71
72
  */
72
- var CodeEditor = React$1.forwardRef(({ className, style, lang = "json", theme = "light", themes = DEFAULT_CODE_EDITOR_THEMES, hideHeader = false, fileName, icon, copyButton = true, formatButton, formatter, onFormatError, formatLabel = "Format", copyLabel, headerActions, label, required, hintContent, error, errorContent, minHeight, maxHeight, wrap = false, tabSize = 2, maxHighlightLength = 1e4, id, value, defaultValue, onChange, onKeyDown, onBlur, onScroll, disabled, readOnly, "aria-describedby": ariaDescribedBy, ...textareaProps }, forwardedRef) => {
73
+ var CodeEditor = React$1.forwardRef(({ className, style, radius, border, lang = "json", theme = "light", themes = DEFAULT_CODE_EDITOR_THEMES, hideHeader = false, fileName, icon, copyButton = true, formatButton, formatter, onFormatError, formatLabel = "Format", copyLabel, headerActions, label, required, hintContent, error, errorContent, minHeight, maxHeight, wrap = false, tabSize = 2, maxHighlightLength = 1e4, id, value, defaultValue, onChange, onKeyDown, onBlur, onScroll, disabled, readOnly, "aria-describedby": ariaDescribedBy, ...textareaProps }, forwardedRef) => {
74
+ const axes = useStyleAxes({
75
+ radius,
76
+ border,
77
+ style
78
+ }, ["radius", "border"]);
73
79
  const autoId = React$1.useId();
74
80
  const textareaId = id || autoId;
75
81
  const errorId = `${textareaId}-error`;
@@ -151,8 +157,8 @@ var CodeEditor = React$1.forwardRef(({ className, style, lang = "json", theme =
151
157
  const editor = /* @__PURE__ */ jsxs("div", {
152
158
  "data-slot": "code-editor",
153
159
  "data-disabled": disabled ? "" : void 0,
154
- className: cn("relative flex flex-col overflow-hidden rounded-lg border bg-background ring-offset-background transition-[box-shadow,border-color] duration-200 ease-in-out", "has-[textarea:focus-visible]:ring-2 has-[textarea:focus-visible]:ring-ring has-[textarea:focus-visible]:ring-offset-2", hasError && "border-destructive has-[textarea:focus-visible]:ring-destructive", className),
155
- style,
160
+ className: cn("relative flex flex-col overflow-hidden rounded-[var(--espd-own-radius,var(--espd-radius-surface,var(--radius-lg)))] border-[length:var(--espd-own-border-width,var(--espd-border-width-surface,1px))] bg-background ring-offset-background transition-[box-shadow,border-color] duration-200 ease-in-out", "has-[textarea:focus-visible]:ring-2 has-[textarea:focus-visible]:ring-ring has-[textarea:focus-visible]:ring-offset-2", hasError && "border-destructive has-[textarea:focus-visible]:ring-destructive", className),
161
+ style: axes.style,
156
162
  children: [showHeader && /* @__PURE__ */ jsx(CodeHeader, {
157
163
  icon,
158
164
  fileName,
@@ -0,0 +1,82 @@
1
+ import * as React from 'react';
2
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
3
+
4
+ /**
5
+ * Props for `CodeEditor`. Native textarea props (`value`, `defaultValue`,
6
+ * `onChange`, `onBlur`, `name`, `id`, `disabled`, `readOnly`, `placeholder`,
7
+ * `rows`, `aria-*`, …) go to the underlying `<textarea>`, and the forwarded
8
+ * ref points at it, so `{...field}` / `{...register(name)}` from
9
+ * react-hook-form work unchanged. `className` and `style` go to the framed
10
+ * editor box, not the textarea.
11
+ */
12
+ interface CodeEditorProps extends Omit<React.ComponentProps<"textarea">, "size" | "wrap" | "children" | "ref">, Pick<StyleAxisProps, "radius" | "border"> {
13
+ /** Shiki language. Default `"json"`. Languages outside the curated bundle render as plain text; `"text"` never highlights. */
14
+ lang?: string;
15
+ /** Which of `themes` to colour with. Pass the app's dark-mode flag. Default `"light"`. */
16
+ theme?: "light" | "dark";
17
+ /** Shiki theme IDs; see `Code`. Default `everforest-light` / `everforest-dark`. */
18
+ themes?: {
19
+ light: string;
20
+ dark: string;
21
+ };
22
+ /**
23
+ * Hides the header, including its copy and format buttons. Without it the
24
+ * header is left out automatically when there is nothing to show: no
25
+ * `fileName`, no `headerActions`, and neither a copy nor a format button.
26
+ */
27
+ hideHeader?: boolean;
28
+ /** Header: same behaviour as `Code`. */
29
+ fileName?: React.ReactNode;
30
+ icon?: React.ElementType;
31
+ /** Copy button in the header; copies the current value. Default `true`. */
32
+ copyButton?: boolean;
33
+ /**
34
+ * Format button in the header, before the copy button. Shown by default
35
+ * when a formatter is available: built in for `lang="json"` (pretty-prints
36
+ * with `tabSize` spaces), or any `lang` when `formatter` is passed. Pass
37
+ * `false` to hide it. Formatting is undoable (Cmd/Ctrl+Z) and fires `onChange`.
38
+ */
39
+ formatButton?: boolean;
40
+ /** Custom formatter; replaces the built-in JSON one. Throw to reject content that can't be formatted. */
41
+ formatter?: (value: string) => string;
42
+ /** Called when the formatter throws, e.g. on invalid JSON. The value is left unchanged. */
43
+ onFormatError?: (error: unknown) => void;
44
+ /** Accessible name and tooltip of the format button. Default `"Format"`. */
45
+ formatLabel?: string;
46
+ /** Accessible name and tooltip of the copy button. Default `"Copy"`. */
47
+ copyLabel?: string;
48
+ /** Extra header controls before the format and copy buttons. */
49
+ headerActions?: React.ReactNode;
50
+ /** Field chrome: same meaning as `Textarea`. */
51
+ label?: React.ReactNode;
52
+ required?: boolean;
53
+ hintContent?: React.ReactNode;
54
+ error?: boolean;
55
+ errorContent?: React.ReactNode;
56
+ /** Minimum height of the editing area (below the header). Numbers are pixels. */
57
+ minHeight?: number | string;
58
+ /** Maximum height of the editing area; taller content scrolls. Numbers are pixels. */
59
+ maxHeight?: number | string;
60
+ /** Soft-wrap long lines. Default `false` (long lines scroll horizontally). */
61
+ wrap?: boolean;
62
+ /** Spaces inserted by Tab and removed by Shift+Tab; also the width of a tab character. Default `2`. */
63
+ tabSize?: number;
64
+ /**
65
+ * Above this many characters, highlighting stops and plain text is shown,
66
+ * so typing in a very large document stays responsive. Default `10000`.
67
+ */
68
+ maxHighlightLength?: number;
69
+ }
70
+
71
+ /**
72
+ * Editable, syntax-highlighted code input. Looks like `Code` (same header,
73
+ * copy button and Shiki themes) and behaves like `Textarea` in a form:
74
+ * controlled or uncontrolled, native `onChange`, ref to the `<textarea>`.
75
+ *
76
+ * Tab indents, Shift+Tab outdents, Enter keeps the indentation. Press Esc,
77
+ * then Tab, to move focus out of the editor. For JSON (or with a custom
78
+ * `formatter`) the header has a Format button next to Copy.
79
+ */
80
+ declare const CodeEditor: React.ForwardRefExoticComponent<CodeEditorProps & React.RefAttributes<HTMLTextAreaElement>>;
81
+
82
+ export { CodeEditor, type CodeEditorProps };
@@ -0,0 +1,2 @@
1
+ import { CodeEditor } from "./code-editor.js";
2
+ export { CodeEditor };
@@ -0,0 +1,42 @@
1
+ import * as React from 'react';
2
+ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
3
+
4
+ declare const Collapsible: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & React.RefAttributes<HTMLDivElement>>;
5
+ declare const CollapsibleTrigger: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
6
+ /**
7
+ * Animated container that holds the collapsible body.
8
+ *
9
+ * Lifecycle (inherited from Radix `@radix-ui/react-collapsible`):
10
+ * - While the parent `Collapsible` is closed and `forceMount` is unset, the
11
+ * subtree is gated by Radix's `Presence` and `isOpen && children`, so it is
12
+ * never rendered into the DOM. `useEffect`/`useQuery`/etc. inside it do not
13
+ * fire.
14
+ * - On first expand, the subtree mounts and effects fire.
15
+ * - On collapse, the subtree unmounts after the close animation. On the next
16
+ * expand it remounts, so any data-fetching effect runs again. Cache at the
17
+ * data layer (e.g. React Query) if you need to avoid refetching per toggle.
18
+ *
19
+ * Footgun — JSX eager evaluation:
20
+ * Any synchronous expression placed directly as a child of `CollapsibleContent`
21
+ * is evaluated by the parent during its own render, before Radix sees it. No
22
+ * collapsible primitive can prevent this. Wrap fetching/expensive work inside
23
+ * a component so its effects fire on mount.
24
+ *
25
+ * @example
26
+ * // Safe: DeviceDetails only mounts when expanded, so its fetch only runs then.
27
+ * <CollapsibleContent>
28
+ * <DeviceDetails id={id} />
29
+ * </CollapsibleContent>
30
+ *
31
+ * // Unsafe: fetchData(id) runs on every parent render for every card,
32
+ * // regardless of open state.
33
+ * <CollapsibleContent>
34
+ * {fetchData(id)}
35
+ * </CollapsibleContent>
36
+ *
37
+ * Pass `forceMount` if you explicitly need the subtree mounted while closed
38
+ * (e.g. SEO crawlers, layout measurement).
39
+ */
40
+ declare const CollapsibleContent: React.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
41
+
42
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger };
@@ -0,0 +1,2 @@
1
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../core/collapsible.js";
2
+ export { Collapsible, CollapsibleContent, CollapsibleTrigger };
@@ -0,0 +1,38 @@
1
+ import { ResizablePanel } from "../resizable/resizable-panel.js";
2
+ import { usePanelFlag } from "./use-panel-flag.js";
3
+ import { useEffect } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/column-panel/column-panel.tsx
6
+ /**
7
+ * A panel of a `ResizableGroup` that can be shown and hidden (a chat, a
8
+ * details column, a terminal): collapsible to nothing, following its `open`
9
+ * flag. Hidden, it stays mounted — a conversation survives being put away —
10
+ * but leaves the accessibility tree and the tab order.
11
+ */
12
+ function ColumnPanel({ id, open, children, minSize, openSize, maxSize, size, className }) {
13
+ const panelRef = usePanelFlag(open, openSize);
14
+ useEffect(() => {
15
+ if (!open || size === void 0) return;
16
+ try {
17
+ panelRef.current?.resize(`${size}%`);
18
+ } catch {}
19
+ }, [size]);
20
+ return /* @__PURE__ */ jsx(ResizablePanel, {
21
+ id,
22
+ panelRef,
23
+ collapsible: true,
24
+ collapsedSize: 0,
25
+ minSize,
26
+ maxSize,
27
+ className,
28
+ children: /* @__PURE__ */ jsx("div", {
29
+ className: "h-full min-h-0",
30
+ "data-state": open ? "open" : "collapsed",
31
+ "aria-hidden": !open,
32
+ inert: !open,
33
+ children
34
+ })
35
+ });
36
+ }
37
+ //#endregion
38
+ export { ColumnPanel };
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import { ReactNode, RefObject } from 'react';
3
+ import { P as PanelSize, b as ResizablePanelHandle } from '../../resizable.props-RxFY5tm_.js';
4
+ import 'react-resizable-panels';
5
+
6
+ interface ColumnPanelProps {
7
+ id: string;
8
+ /** Showing, or collapsed to nothing. */
9
+ open: boolean;
10
+ children: ReactNode;
11
+ minSize: PanelSize;
12
+ /** The size to open at (a percentage): the last size it was open at. */
13
+ openSize: number;
14
+ maxSize?: PanelSize;
15
+ /** While open, the size to be at (a percentage); it goes there whenever this changes. For a size set by a button (a maximize), not by a drag. */
16
+ size?: number;
17
+ className?: string;
18
+ }
19
+
20
+ /**
21
+ * A panel of a `ResizableGroup` that can be shown and hidden (a chat, a
22
+ * details column, a terminal): collapsible to nothing, following its `open`
23
+ * flag. Hidden, it stays mounted — a conversation survives being put away —
24
+ * but leaves the accessibility tree and the tab order.
25
+ */
26
+ declare function ColumnPanel({ id, open, children, minSize, openSize, maxSize, size, className }: ColumnPanelProps): React.JSX.Element;
27
+
28
+ /**
29
+ * Keeps a collapsible `ResizablePanel` in step with a flag: open → at its
30
+ * remembered size (`openSize`, a percentage), closed → collapsed. The flag is
31
+ * the truth and the panel follows it; the other direction (a drag shut)
32
+ * reaches the flag through the group's `onLayoutChanged`, never from here, so
33
+ * the two cannot chase each other. Pass the returned ref as `panelRef`.
34
+ */
35
+ declare function usePanelFlag(open: boolean, openSize: number): RefObject<ResizablePanelHandle | null>;
36
+
37
+ export { ColumnPanel, type ColumnPanelProps, usePanelFlag };
@@ -0,0 +1,3 @@
1
+ import { usePanelFlag } from "./use-panel-flag.js";
2
+ import { ColumnPanel } from "./column-panel.js";
3
+ export { ColumnPanel, usePanelFlag };
@@ -0,0 +1,27 @@
1
+ import { useEffect, useRef } from "react";
2
+ //#region src/components/column-panel/use-panel-flag.ts
3
+ /**
4
+ * Keeps a collapsible `ResizablePanel` in step with a flag: open → at its
5
+ * remembered size (`openSize`, a percentage), closed → collapsed. The flag is
6
+ * the truth and the panel follows it; the other direction (a drag shut)
7
+ * reaches the flag through the group's `onLayoutChanged`, never from here, so
8
+ * the two cannot chase each other. Pass the returned ref as `panelRef`.
9
+ */
10
+ function usePanelFlag(open, openSize) {
11
+ const ref = useRef(null);
12
+ useEffect(() => {
13
+ const panel = ref.current;
14
+ if (!panel) return;
15
+ let collapsed;
16
+ try {
17
+ collapsed = panel.isCollapsed();
18
+ } catch {
19
+ return;
20
+ }
21
+ if (open && collapsed) panel.resize(`${openSize}%`);
22
+ else if (!open && !collapsed) panel.collapse();
23
+ }, [open]);
24
+ return ref;
25
+ }
26
+ //#endregion
27
+ export { usePanelFlag };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { k as StyleAxisProps } from '../../style-axes-DSQ2DGc5.js';
3
+
4
+ interface ComboboxOption {
5
+ value: string;
6
+ label: string;
7
+ }
8
+ interface AsyncComboboxProps extends Pick<StyleAxisProps, "radius" | "border"> {
9
+ value?: string;
10
+ onValueChange?: (value: string | undefined) => void;
11
+ options: ComboboxOption[];
12
+ onSearchChange?: (query: string) => void;
13
+ isLoading?: boolean;
14
+ placeholder?: string;
15
+ emptyText?: string;
16
+ searchPlaceholder?: string;
17
+ label?: React.ReactNode;
18
+ required?: boolean;
19
+ disabled?: boolean;
20
+ className?: string;
21
+ /** When true, user can clear the selection (parent group optional). */
22
+ clearable?: boolean;
23
+ hasMore?: boolean;
24
+ onLoadMore?: () => void;
25
+ }
26
+ declare function AsyncCombobox({ value, onValueChange, options, onSearchChange, isLoading, placeholder, emptyText, searchPlaceholder, label, required, disabled, className, clearable, hasMore, onLoadMore, radius, border, }: AsyncComboboxProps): React.JSX.Element;
27
+
28
+ export { AsyncCombobox, type AsyncComboboxProps, type ComboboxOption };
@@ -0,0 +1,2 @@
1
+ import { AsyncCombobox } from "../../core/combobox/combobox.js";
2
+ export { AsyncCombobox };
@@ -1,6 +1,6 @@
1
1
  import { Button } from "../button/button.js";
2
- import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "../../core/animate-ui/components/radix/dialog.js";
3
2
  import { Alert } from "../alert/alert.js";
3
+ import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "../../core/animate-ui/components/radix/dialog.js";
4
4
  import { useState } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/confirmation-dialog/confirmation-dialog.tsx
@@ -0,0 +1,40 @@
1
+ import * as React$1 from 'react';
2
+ import { b as ButtonProps } from '../../button-BxJ7s6sR.js';
3
+ export { DialogTrigger } from '../dialog/index.js';
4
+ import '../../button-BK-DIR_L.js';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+ import '../../style-axes-DSQ2DGc5.js';
8
+ import '../../index-BQANnKs9.js';
9
+ import 'radix-ui';
10
+ import 'motion/react';
11
+
12
+ interface ConfirmationDialogProps {
13
+ title: string;
14
+ description: string;
15
+ onConfirm: () => void | Promise<void>;
16
+ onCancel: () => void;
17
+ children?: React.ReactNode;
18
+ cancelButtonText?: string;
19
+ confirmButtonText?: string;
20
+ cancelButtonVariant?: ButtonProps["variant"];
21
+ confirmButtonVariant?: ButtonProps["variant"];
22
+ cancelButtonColor?: ButtonProps["color"];
23
+ confirmButtonColor?: ButtonProps["color"];
24
+ /** Leading icon on the cancel button. Omit for no icon. */
25
+ cancelButtonStartIcon?: React.ReactNode;
26
+ /** Trailing icon on the confirm button. Omit for no icon. */
27
+ confirmButtonEndIcon?: React.ReactNode;
28
+ isLoading?: boolean;
29
+ error?: string | React.ReactNode | null;
30
+ /**
31
+ * Controlled open state. Omit to let the dialog manage its own, driven by `children`
32
+ * as the trigger. Use this to open the dialog from somewhere that cannot host a
33
+ * trigger, such as a menu item.
34
+ */
35
+ open?: boolean;
36
+ onOpenChange?: (open: boolean) => void;
37
+ }
38
+ declare function ConfirmationDialog({ title, description, onConfirm, onCancel, children, cancelButtonText, confirmButtonText, cancelButtonVariant, confirmButtonVariant, cancelButtonColor, confirmButtonColor, cancelButtonStartIcon, confirmButtonEndIcon, isLoading, error, open, onOpenChange, }: ConfirmationDialogProps): React$1.JSX.Element;
39
+
40
+ export { ConfirmationDialog, type ConfirmationDialogProps };
@@ -0,0 +1,3 @@
1
+ import { DialogTrigger } from "../../core/animate-ui/components/radix/dialog.js";
2
+ import { ConfirmationDialog } from "./confirmation-dialog.js";
3
+ export { ConfirmationDialog, DialogTrigger };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { P as PageContainerMaxWidth } from '../../page-container.props-JutTvKFq.js';
4
+
5
+ type ContentContainerMaxWidth = PageContainerMaxWidth;
6
+ interface ContentContainerProps {
7
+ maxWidth?: ContentContainerMaxWidth;
8
+ children: ReactNode;
9
+ className?: string;
10
+ /** When true, omits the top margin (`mt-[72px]`) reserved for a fixed workspace header. */
11
+ noGutters?: boolean;
12
+ }
13
+
14
+ declare const ContentContainer: React.ForwardRefExoticComponent<ContentContainerProps & React.RefAttributes<HTMLDivElement>>;
15
+
16
+ export { ContentContainer, type ContentContainerMaxWidth, type ContentContainerProps };
@@ -0,0 +1,2 @@
1
+ import { ContentContainer } from "./content-container.js";
2
+ export { ContentContainer };
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import { S as Size } from '../../index-BQANnKs9.js';
3
+
4
+ interface CopiableTextProps {
5
+ text: string | number;
6
+ /**
7
+ * Rendered immediately before the copy button. Buttons are joined into a single
8
+ * segmented group, so pass plain icon buttons with the copy button's chrome.
9
+ */
10
+ actions?: React.ReactNode;
11
+ /**
12
+ * Keep the action cluster visible instead of revealing it on hover/focus. The cluster then
13
+ * takes layout space, so the text truncates beside the buttons rather than sliding under them.
14
+ */
15
+ alwaysShowActions?: boolean;
16
+ /**
17
+ * Hide the action cluster on devices that can't hover (touch screens). Use it where a tap on
18
+ * the text should go to its container, e.g. a table row that opens a details page which
19
+ * offers the same copy action.
20
+ */
21
+ hideActionsOnTouch?: boolean;
22
+ /**
23
+ * Scale of the row height and the action buttons. Pass any `actions` at a matching
24
+ * size so the segmented group stays even.
25
+ *
26
+ * @default 'default'
27
+ */
28
+ size?: Size;
29
+ className?: string;
30
+ }
31
+ declare function CopiableText({ text, actions, alwaysShowActions, hideActionsOnTouch, size, className, }: CopiableTextProps): React.JSX.Element;
32
+
33
+ export { CopiableText, type CopiableTextProps };
@@ -0,0 +1,2 @@
1
+ import { CopiableText } from "./copiable-text.js";
2
+ export { CopiableText };
@@ -0,0 +1,23 @@
1
+ //#region src/components/coverflow/_constants/coverflow-poses.ts
2
+ /** Cards further than this from the front are hidden. */
3
+ var VISIBLE_REACH = 3;
4
+ var POSES = {
5
+ [-3]: "-translate-x-9/5 rotate-y-72 scale-80 brightness-70 z-0",
6
+ [-2]: "-translate-x-13/10 rotate-y-72 scale-86 brightness-80 z-10",
7
+ [-1]: "-translate-x-4/5 rotate-y-72 scale-92 brightness-90 z-20",
8
+ [0]: "translate-x-0 rotate-y-0 scale-100 brightness-100 z-30",
9
+ [1]: "translate-x-4/5 -rotate-y-72 scale-92 brightness-90 z-20",
10
+ [2]: "translate-x-13/10 -rotate-y-72 scale-86 brightness-80 z-10",
11
+ [3]: "translate-x-9/5 -rotate-y-72 scale-80 brightness-70 z-0"
12
+ };
13
+ /** Beyond the reach: further round still, and out of sight (where a card wraps from one end of the ring to the other). */
14
+ var HIDDEN_LEFT = "-translate-x-23/10 rotate-y-80 scale-70 opacity-0 pointer-events-none z-0";
15
+ var HIDDEN_RIGHT = "translate-x-23/10 -rotate-y-80 scale-70 opacity-0 pointer-events-none z-0";
16
+ /** The pose for a card `offset` places from the front one. */
17
+ function poseFor(offset) {
18
+ if (offset < -3) return HIDDEN_LEFT;
19
+ if (offset > VISIBLE_REACH) return HIDDEN_RIGHT;
20
+ return `${POSES[offset] ?? HIDDEN_RIGHT} opacity-100`;
21
+ }
22
+ //#endregion
23
+ export { VISIBLE_REACH, poseFor };
@@ -0,0 +1,23 @@
1
+ //#region src/components/coverflow/_constants/coverflow-shapes.ts
2
+ /**
3
+ * The two card shapes (`aspect`) a coverflow comes in, each a set of sizes that fit
4
+ * together: the card's width, its face's aspect, the reflection's depth (a
5
+ * third of the face, so the floor mirrors only the nearer part) and the
6
+ * stage's height (face + reflection, at each breakpoint).
7
+ */
8
+ var COVERFLOW_SHAPES = {
9
+ square: {
10
+ card: "w-60 sm:w-80 lg:w-96",
11
+ face: "aspect-square",
12
+ reflection: "aspect-3/1",
13
+ stage: "h-80 sm:h-110 lg:h-128"
14
+ },
15
+ landscape: {
16
+ card: "w-56 sm:w-80 lg:w-96",
17
+ face: "aspect-4/3",
18
+ reflection: "aspect-4/1",
19
+ stage: "h-60 sm:h-84 lg:h-100"
20
+ }
21
+ };
22
+ //#endregion
23
+ export { COVERFLOW_SHAPES };
@@ -0,0 +1,90 @@
1
+ import { useControlledState } from "../../../core/hooks/use-controlled-state.js";
2
+ import { ringSize, stepsTo, wrap } from "../_utils/ring.js";
3
+ import { useEffect, useRef, useState } from "react";
4
+ //#region src/components/coverflow/_hooks/use-coverflow.ts
5
+ /** A horizontal drag longer than this (CSS pixels) is a swipe. */
6
+ var SWIPE_PX = 40;
7
+ /** Arrow keys belong to a field that has focus, not to the ring. */
8
+ function isEditable(target) {
9
+ return target instanceof HTMLElement && (target.isContentEditable || /^(INPUT|TEXTAREA|SELECT)$/.test(target.tagName));
10
+ }
11
+ /**
12
+ * Which slot of the ring is in front, and every way to change it: arrows, keys, a swipe,
13
+ * a click on a side card, a dot. With `autoplayMs` it also turns by itself, and
14
+ * holds still while someone is using it.
15
+ *
16
+ * It counts in ring SLOTS (so a turn always goes the way it was asked, even past
17
+ * the end of the list) and reports ITEMS: `index` / `onIndexChange` are item
18
+ * indices, and a controlled `index` that moves is reached the short way round.
19
+ */
20
+ function useCoverflow({ count, index, defaultIndex = 0, onIndexChange, autoplayMs }) {
21
+ const slots = ringSize(count);
22
+ const [item, setItem] = useControlledState({
23
+ value: index === void 0 ? void 0 : wrap(index, count),
24
+ defaultValue: wrap(defaultIndex, count),
25
+ onChange: onIndexChange
26
+ });
27
+ const [slot, setSlot] = useState(() => wrap(item, count));
28
+ const [held, setHeld] = useState(false);
29
+ const swipeFrom = useRef(null);
30
+ const swiped = useRef(false);
31
+ const front = wrap(slot, slots);
32
+ if (count > 0 && wrap(front, count) !== item) setSlot(wrap(front + stepsTo(item, front, count), slots));
33
+ function turn(steps) {
34
+ const next = wrap(front + steps, slots);
35
+ setSlot(next);
36
+ const nextItem = wrap(next, count);
37
+ if (nextItem !== item) setItem(nextItem);
38
+ }
39
+ useEffect(() => {
40
+ if (!autoplayMs || held || count < 2) return;
41
+ const timer = window.setTimeout(() => turn(1), autoplayMs);
42
+ return () => window.clearTimeout(timer);
43
+ }, [
44
+ autoplayMs,
45
+ held,
46
+ count,
47
+ front,
48
+ item
49
+ ]);
50
+ function onKeyDown(event) {
51
+ if (isEditable(event.target)) return;
52
+ if (event.key === "ArrowLeft") {
53
+ event.preventDefault();
54
+ turn(-1);
55
+ } else if (event.key === "ArrowRight") {
56
+ event.preventDefault();
57
+ turn(1);
58
+ }
59
+ }
60
+ function onPointerDown(event) {
61
+ swipeFrom.current = event.clientX;
62
+ swiped.current = false;
63
+ }
64
+ function onPointerUp(event) {
65
+ const from = swipeFrom.current;
66
+ swipeFrom.current = null;
67
+ if (from === null || Math.abs(event.clientX - from) < SWIPE_PX) return;
68
+ swiped.current = true;
69
+ turn(event.clientX < from ? 1 : -1);
70
+ }
71
+ function wasSwipe() {
72
+ const was = swiped.current;
73
+ swiped.current = false;
74
+ return was;
75
+ }
76
+ return {
77
+ slots,
78
+ slot: front,
79
+ index: wrap(front, count),
80
+ turn,
81
+ show: (target) => turn(stepsTo(target, front, count)),
82
+ hold: setHeld,
83
+ onKeyDown,
84
+ onPointerDown,
85
+ onPointerUp,
86
+ wasSwipe
87
+ };
88
+ }
89
+ //#endregion
90
+ export { useCoverflow };
@@ -0,0 +1,24 @@
1
+ import { VISIBLE_REACH } from "../_constants/coverflow-poses.js";
2
+ //#region src/components/coverflow/_utils/ring.ts
3
+ /** Smallest ring with a hidden slot beyond the visible reach on both sides. */
4
+ var MIN_RING = 2 * VISIBLE_REACH + 3;
5
+ /** How many slots the ring has for `count` items: whole copies of the list, at least MIN_RING. */
6
+ function ringSize(count) {
7
+ if (count < 2) return count;
8
+ return count * Math.ceil(MIN_RING / count);
9
+ }
10
+ /** `value` wrapped into 0…size-1. */
11
+ function wrap(value, size) {
12
+ return size === 0 ? 0 : (value % size + size) % size;
13
+ }
14
+ /** Where `slot` stands relative to the front slot `index`, the short way round: 0 is the front, negative is left. */
15
+ function ringOffset(slot, index, size) {
16
+ const ahead = wrap(slot - index, size);
17
+ return ahead > size / 2 ? ahead - size : ahead;
18
+ }
19
+ /** The steps (negative = left) that bring item `target` to the front from slot `index`, the short way round. */
20
+ function stepsTo(target, index, count) {
21
+ return ringOffset(target, wrap(index, count), count);
22
+ }
23
+ //#endregion
24
+ export { MIN_RING, ringOffset, ringSize, stepsTo, wrap };