@nadicodeai/ui 12.1.96 → 12.1.98

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 (566) hide show
  1. package/AGENTS.md +5 -1
  2. package/dist/components/accordion.d.ts +13 -0
  3. package/dist/components/accordion.d.ts.map +1 -1
  4. package/dist/components/accordion.js +13 -0
  5. package/dist/components/account-menu.d.ts +62 -18
  6. package/dist/components/account-menu.d.ts.map +1 -1
  7. package/dist/components/account-menu.js +32 -8
  8. package/dist/components/action-menu.d.ts +61 -5
  9. package/dist/components/action-menu.d.ts.map +1 -1
  10. package/dist/components/action-menu.js +31 -2
  11. package/dist/components/action-status.d.ts +13 -3
  12. package/dist/components/action-status.d.ts.map +1 -1
  13. package/dist/components/action-status.js +13 -3
  14. package/dist/components/activity-calendar.d.ts +14 -0
  15. package/dist/components/activity-calendar.d.ts.map +1 -1
  16. package/dist/components/activity-calendar.js +14 -0
  17. package/dist/components/activity-feed.d.ts +62 -0
  18. package/dist/components/activity-feed.d.ts.map +1 -0
  19. package/dist/components/activity-feed.js +54 -0
  20. package/dist/components/agent-card.d.ts +15 -0
  21. package/dist/components/agent-card.d.ts.map +1 -1
  22. package/dist/components/agent-card.js +15 -0
  23. package/dist/components/agent-list-row.d.ts +11 -7
  24. package/dist/components/agent-list-row.d.ts.map +1 -1
  25. package/dist/components/agent-list-row.js +10 -8
  26. package/dist/components/agent-orb.d.ts +16 -0
  27. package/dist/components/agent-orb.d.ts.map +1 -1
  28. package/dist/components/agent-orb.js +16 -0
  29. package/dist/components/agent-profile.d.ts +39 -10
  30. package/dist/components/agent-profile.d.ts.map +1 -1
  31. package/dist/components/agent-profile.js +39 -10
  32. package/dist/components/alert-dialog.d.ts +14 -0
  33. package/dist/components/alert-dialog.d.ts.map +1 -1
  34. package/dist/components/alert-dialog.js +16 -2
  35. package/dist/components/alert.d.ts +14 -0
  36. package/dist/components/alert.d.ts.map +1 -1
  37. package/dist/components/alert.js +14 -0
  38. package/dist/components/app-mark.d.ts +14 -4
  39. package/dist/components/app-mark.d.ts.map +1 -1
  40. package/dist/components/app-mark.js +13 -3
  41. package/dist/components/approval-row.d.ts +15 -2
  42. package/dist/components/approval-row.d.ts.map +1 -1
  43. package/dist/components/approval-row.js +15 -2
  44. package/dist/components/aspect-ratio.d.ts +10 -0
  45. package/dist/components/aspect-ratio.d.ts.map +1 -1
  46. package/dist/components/aspect-ratio.js +10 -0
  47. package/dist/components/avatar.d.ts +15 -0
  48. package/dist/components/avatar.d.ts.map +1 -1
  49. package/dist/components/avatar.js +15 -0
  50. package/dist/components/badge.d.ts +11 -1
  51. package/dist/components/badge.d.ts.map +1 -1
  52. package/dist/components/badge.js +10 -5
  53. package/dist/components/brand-field.d.ts +10 -0
  54. package/dist/components/brand-field.d.ts.map +1 -1
  55. package/dist/components/brand-field.js +10 -0
  56. package/dist/components/brand.d.ts +14 -0
  57. package/dist/components/brand.d.ts.map +1 -1
  58. package/dist/components/brand.js +14 -0
  59. package/dist/components/breadcrumb.d.ts +20 -2
  60. package/dist/components/breadcrumb.d.ts.map +1 -1
  61. package/dist/components/breadcrumb.js +13 -3
  62. package/dist/components/button-group.d.ts +21 -0
  63. package/dist/components/button-group.d.ts.map +1 -1
  64. package/dist/components/button-group.js +21 -0
  65. package/dist/components/button.d.ts +20 -0
  66. package/dist/components/button.d.ts.map +1 -1
  67. package/dist/components/button.js +20 -0
  68. package/dist/components/calendar.d.ts +15 -0
  69. package/dist/components/calendar.d.ts.map +1 -1
  70. package/dist/components/calendar.js +15 -0
  71. package/dist/components/card-row.d.ts +15 -5
  72. package/dist/components/card-row.d.ts.map +1 -1
  73. package/dist/components/card-row.js +15 -5
  74. package/dist/components/card.d.ts +16 -0
  75. package/dist/components/card.d.ts.map +1 -1
  76. package/dist/components/card.js +16 -0
  77. package/dist/components/carousel.d.ts +12 -0
  78. package/dist/components/carousel.d.ts.map +1 -1
  79. package/dist/components/carousel.js +12 -0
  80. package/dist/components/catalog-drawer.d.ts +29 -0
  81. package/dist/components/catalog-drawer.d.ts.map +1 -0
  82. package/dist/components/catalog-drawer.js +31 -0
  83. package/dist/components/catalog-entry.d.ts +49 -26
  84. package/dist/components/catalog-entry.d.ts.map +1 -1
  85. package/dist/components/catalog-entry.js +5 -27
  86. package/dist/components/channel-view.d.ts +23 -0
  87. package/dist/components/channel-view.d.ts.map +1 -1
  88. package/dist/components/channel-view.js +13 -4
  89. package/dist/components/chart-area-stacked.d.ts +11 -1
  90. package/dist/components/chart-area-stacked.d.ts.map +1 -1
  91. package/dist/components/chart-area-stacked.js +12 -2
  92. package/dist/components/chart-bar-horizontal.d.ts +11 -1
  93. package/dist/components/chart-bar-horizontal.d.ts.map +1 -1
  94. package/dist/components/chart-bar-horizontal.js +12 -2
  95. package/dist/components/chart-bar-multiple.d.ts +9 -4
  96. package/dist/components/chart-bar-multiple.d.ts.map +1 -1
  97. package/dist/components/chart-bar-multiple.js +10 -5
  98. package/dist/components/chart-bar-stacked.d.ts +11 -1
  99. package/dist/components/chart-bar-stacked.d.ts.map +1 -1
  100. package/dist/components/chart-bar-stacked.js +12 -2
  101. package/dist/components/chart-card.d.ts +33 -20
  102. package/dist/components/chart-card.d.ts.map +1 -1
  103. package/dist/components/chart-card.js +18 -4
  104. package/dist/components/chart-date-range-control.d.ts +15 -10
  105. package/dist/components/chart-date-range-control.d.ts.map +1 -1
  106. package/dist/components/chart-date-range-control.js +14 -10
  107. package/dist/components/chart-date-range.d.ts.map +1 -1
  108. package/dist/components/chart-entity-colors.d.ts +7 -0
  109. package/dist/components/chart-entity-colors.d.ts.map +1 -1
  110. package/dist/components/chart-entity-colors.js +7 -0
  111. package/dist/components/chart-sparkline.d.ts +10 -0
  112. package/dist/components/chart-sparkline.d.ts.map +1 -1
  113. package/dist/components/chart-sparkline.js +8 -7
  114. package/dist/components/chart.d.ts +10 -0
  115. package/dist/components/chart.d.ts.map +1 -1
  116. package/dist/components/chart.js +10 -0
  117. package/dist/components/checkbox.d.ts +15 -0
  118. package/dist/components/checkbox.d.ts.map +1 -1
  119. package/dist/components/checkbox.js +15 -0
  120. package/dist/components/code-block.d.ts +15 -0
  121. package/dist/components/code-block.d.ts.map +1 -1
  122. package/dist/components/code-block.js +15 -0
  123. package/dist/components/collapsible.d.ts +12 -0
  124. package/dist/components/collapsible.d.ts.map +1 -1
  125. package/dist/components/collapsible.js +12 -0
  126. package/dist/components/collection-filters.d.ts +15 -2
  127. package/dist/components/collection-filters.d.ts.map +1 -1
  128. package/dist/components/collection-filters.js +13 -1
  129. package/dist/components/collection-page.d.ts +29 -115
  130. package/dist/components/collection-page.d.ts.map +1 -1
  131. package/dist/components/collection-page.js +24 -140
  132. package/dist/components/collection-search.d.ts +14 -0
  133. package/dist/components/collection-search.d.ts.map +1 -1
  134. package/dist/components/collection-search.js +14 -0
  135. package/dist/components/collection-sort.d.ts +13 -3
  136. package/dist/components/collection-sort.d.ts.map +1 -1
  137. package/dist/components/collection-sort.js +13 -3
  138. package/dist/components/collection-toolbar.d.ts +13 -0
  139. package/dist/components/collection-toolbar.d.ts.map +1 -1
  140. package/dist/components/collection-toolbar.js +13 -0
  141. package/dist/components/combobox.d.ts +17 -0
  142. package/dist/components/combobox.d.ts.map +1 -1
  143. package/dist/components/combobox.js +18 -1
  144. package/dist/components/command.d.ts +16 -0
  145. package/dist/components/command.d.ts.map +1 -1
  146. package/dist/components/command.js +16 -0
  147. package/dist/components/company-card.d.ts +16 -4
  148. package/dist/components/company-card.d.ts.map +1 -1
  149. package/dist/components/company-card.js +16 -4
  150. package/dist/components/confirm-dialog.d.ts +24 -14
  151. package/dist/components/confirm-dialog.d.ts.map +1 -1
  152. package/dist/components/confirm-dialog.js +16 -10
  153. package/dist/components/context-menu.d.ts +10 -0
  154. package/dist/components/context-menu.d.ts.map +1 -1
  155. package/dist/components/context-menu.js +11 -1
  156. package/dist/components/copy-button.d.ts +10 -0
  157. package/dist/components/copy-button.d.ts.map +1 -1
  158. package/dist/components/copy-button.js +10 -0
  159. package/dist/components/dashboard-shell.d.ts +14 -0
  160. package/dist/components/dashboard-shell.d.ts.map +1 -1
  161. package/dist/components/dashboard-shell.js +14 -0
  162. package/dist/components/data-table.d.ts +20 -0
  163. package/dist/components/data-table.d.ts.map +1 -1
  164. package/dist/components/data-table.js +23 -2
  165. package/dist/components/desktop-shell.d.ts +15 -0
  166. package/dist/components/desktop-shell.d.ts.map +1 -1
  167. package/dist/components/desktop-shell.js +15 -0
  168. package/dist/components/dialog.d.ts +16 -0
  169. package/dist/components/dialog.d.ts.map +1 -1
  170. package/dist/components/dialog.js +18 -2
  171. package/dist/components/diff-count.d.ts +11 -0
  172. package/dist/components/diff-count.d.ts.map +1 -1
  173. package/dist/components/diff-count.js +11 -0
  174. package/dist/components/disclosure-row.d.ts +12 -0
  175. package/dist/components/disclosure-row.d.ts.map +1 -1
  176. package/dist/components/disclosure-row.js +12 -0
  177. package/dist/components/disclosure.d.ts +15 -5
  178. package/dist/components/disclosure.d.ts.map +1 -1
  179. package/dist/components/disclosure.js +15 -5
  180. package/dist/components/drawer.d.ts +13 -0
  181. package/dist/components/drawer.d.ts.map +1 -1
  182. package/dist/components/drawer.js +13 -0
  183. package/dist/components/dropdown-menu.d.ts +17 -5
  184. package/dist/components/dropdown-menu.d.ts.map +1 -1
  185. package/dist/components/dropdown-menu.js +21 -8
  186. package/dist/components/empty-art.d.ts +1 -1
  187. package/dist/components/empty-art.d.ts.map +1 -1
  188. package/dist/components/empty-art.js +6 -0
  189. package/dist/components/empty-state.d.ts +24 -10
  190. package/dist/components/empty-state.d.ts.map +1 -1
  191. package/dist/components/empty-state.js +23 -1
  192. package/dist/components/entry-scene.d.ts +33 -20
  193. package/dist/components/entry-scene.d.ts.map +1 -1
  194. package/dist/components/entry-scene.js +34 -7
  195. package/dist/components/expandable-block.d.ts +10 -0
  196. package/dist/components/expandable-block.d.ts.map +1 -1
  197. package/dist/components/expandable-block.js +10 -0
  198. package/dist/components/field.d.ts +17 -0
  199. package/dist/components/field.d.ts.map +1 -1
  200. package/dist/components/field.js +17 -0
  201. package/dist/components/file-diff.d.ts +12 -0
  202. package/dist/components/file-diff.d.ts.map +1 -1
  203. package/dist/components/file-diff.js +12 -0
  204. package/dist/components/file-type-icon.d.ts +12 -0
  205. package/dist/components/file-type-icon.d.ts.map +1 -1
  206. package/dist/components/file-type-icon.js +12 -0
  207. package/dist/components/footer.d.ts +14 -0
  208. package/dist/components/footer.d.ts.map +1 -1
  209. package/dist/components/footer.js +14 -0
  210. package/dist/components/form-dialog.d.ts +10 -0
  211. package/dist/components/form-dialog.d.ts.map +1 -1
  212. package/dist/components/form-dialog.js +10 -0
  213. package/dist/components/form-drawer.d.ts +24 -11
  214. package/dist/components/form-drawer.d.ts.map +1 -1
  215. package/dist/components/form-drawer.js +13 -3
  216. package/dist/components/form.d.ts +17 -0
  217. package/dist/components/form.d.ts.map +1 -1
  218. package/dist/components/form.js +17 -0
  219. package/dist/components/glass-control.d.ts +13 -0
  220. package/dist/components/glass-control.d.ts.map +1 -1
  221. package/dist/components/glass-control.js +13 -0
  222. package/dist/components/hive-scene.d.ts +14 -0
  223. package/dist/components/hive-scene.d.ts.map +1 -1
  224. package/dist/components/hive-scene.js +14 -0
  225. package/dist/components/house-icons.d.ts +15 -0
  226. package/dist/components/house-icons.d.ts.map +1 -1
  227. package/dist/components/house-icons.js +15 -0
  228. package/dist/components/hover-card.d.ts +15 -0
  229. package/dist/components/hover-card.d.ts.map +1 -1
  230. package/dist/components/hover-card.js +16 -1
  231. package/dist/components/identity-mark.d.ts +55 -0
  232. package/dist/components/identity-mark.d.ts.map +1 -0
  233. package/dist/components/identity-mark.js +66 -0
  234. package/dist/components/input-group.d.ts +16 -0
  235. package/dist/components/input-group.d.ts.map +1 -1
  236. package/dist/components/input-group.js +16 -0
  237. package/dist/components/input-otp.d.ts +15 -0
  238. package/dist/components/input-otp.d.ts.map +1 -1
  239. package/dist/components/input-otp.js +15 -0
  240. package/dist/components/input.d.ts +15 -0
  241. package/dist/components/input.d.ts.map +1 -1
  242. package/dist/components/input.js +15 -0
  243. package/dist/components/item.d.ts +16 -0
  244. package/dist/components/item.d.ts.map +1 -1
  245. package/dist/components/item.js +16 -0
  246. package/dist/components/kbd.d.ts +14 -0
  247. package/dist/components/kbd.d.ts.map +1 -1
  248. package/dist/components/kbd.js +14 -0
  249. package/dist/components/kpi-card.d.ts +21 -13
  250. package/dist/components/kpi-card.d.ts.map +1 -1
  251. package/dist/components/kpi-card.js +14 -3
  252. package/dist/components/label-system.d.ts +12 -0
  253. package/dist/components/label-system.d.ts.map +1 -1
  254. package/dist/components/label-system.js +12 -0
  255. package/dist/components/label.d.ts +15 -0
  256. package/dist/components/label.d.ts.map +1 -1
  257. package/dist/components/label.js +15 -0
  258. package/dist/components/library-shelf.d.ts +35 -0
  259. package/dist/components/library-shelf.d.ts.map +1 -0
  260. package/dist/components/library-shelf.js +40 -0
  261. package/dist/components/memory-item.d.ts +12 -0
  262. package/dist/components/memory-item.d.ts.map +1 -1
  263. package/dist/components/memory-item.js +12 -0
  264. package/dist/components/menu-choice-row.d.ts +13 -5
  265. package/dist/components/menu-choice-row.d.ts.map +1 -1
  266. package/dist/components/menu-choice-row.js +12 -6
  267. package/dist/components/menubar.d.ts +13 -0
  268. package/dist/components/menubar.d.ts.map +1 -1
  269. package/dist/components/menubar.js +13 -0
  270. package/dist/components/message-notice.d.ts +16 -0
  271. package/dist/components/message-notice.d.ts.map +1 -1
  272. package/dist/components/message-notice.js +18 -2
  273. package/dist/components/model-identity.d.ts +16 -3
  274. package/dist/components/model-identity.d.ts.map +1 -1
  275. package/dist/components/model-identity.js +16 -3
  276. package/dist/components/model-mark.d.ts +15 -2
  277. package/dist/components/model-mark.d.ts.map +1 -1
  278. package/dist/components/model-mark.js +15 -2
  279. package/dist/components/nadia-presence.d.ts +10 -4
  280. package/dist/components/nadia-presence.d.ts.map +1 -1
  281. package/dist/components/nadia-presence.js +10 -4
  282. package/dist/components/native-select.d.ts +16 -0
  283. package/dist/components/native-select.d.ts.map +1 -1
  284. package/dist/components/native-select.js +16 -0
  285. package/dist/components/navigation-menu.d.ts +14 -0
  286. package/dist/components/navigation-menu.d.ts.map +1 -1
  287. package/dist/components/navigation-menu.js +14 -0
  288. package/dist/components/notice-banner.d.ts +10 -3
  289. package/dist/components/notice-banner.d.ts.map +1 -1
  290. package/dist/components/notice-banner.js +9 -3
  291. package/dist/components/numbered-steps.d.ts +33 -0
  292. package/dist/components/numbered-steps.d.ts.map +1 -0
  293. package/dist/components/numbered-steps.js +23 -0
  294. package/dist/components/object-page.d.ts +37 -0
  295. package/dist/components/object-page.d.ts.map +1 -0
  296. package/dist/components/object-page.js +19 -0
  297. package/dist/components/object-workspace.d.ts +26 -36
  298. package/dist/components/object-workspace.d.ts.map +1 -1
  299. package/dist/components/object-workspace.js +27 -24
  300. package/dist/components/overview-page.d.ts +24 -0
  301. package/dist/components/overview-page.d.ts.map +1 -0
  302. package/dist/components/overview-page.js +26 -0
  303. package/dist/components/page-actions.d.ts +28 -23
  304. package/dist/components/page-actions.d.ts.map +1 -1
  305. package/dist/components/page-actions.js +20 -14
  306. package/dist/components/page-header.d.ts +11 -5
  307. package/dist/components/page-header.d.ts.map +1 -1
  308. package/dist/components/page-header.js +11 -5
  309. package/dist/components/pagination.d.ts +15 -0
  310. package/dist/components/pagination.d.ts.map +1 -1
  311. package/dist/components/pagination.js +15 -0
  312. package/dist/components/pairing-code.d.ts +15 -4
  313. package/dist/components/pairing-code.d.ts.map +1 -1
  314. package/dist/components/pairing-code.js +15 -4
  315. package/dist/components/pending-label.d.ts +12 -4
  316. package/dist/components/pending-label.d.ts.map +1 -1
  317. package/dist/components/pending-label.js +12 -4
  318. package/dist/components/picture-label.d.ts +15 -7
  319. package/dist/components/picture-label.d.ts.map +1 -1
  320. package/dist/components/picture-label.js +15 -7
  321. package/dist/components/platform-mark.d.ts +12 -3
  322. package/dist/components/platform-mark.d.ts.map +1 -1
  323. package/dist/components/platform-mark.js +12 -3
  324. package/dist/components/plugin-slot-boundary.d.ts +15 -0
  325. package/dist/components/plugin-slot-boundary.d.ts.map +1 -1
  326. package/dist/components/plugin-slot-boundary.js +15 -0
  327. package/dist/components/popover.d.ts +15 -0
  328. package/dist/components/popover.d.ts.map +1 -1
  329. package/dist/components/popover.js +16 -1
  330. package/dist/components/portal-sidebar-frame.d.ts +26 -12
  331. package/dist/components/portal-sidebar-frame.d.ts.map +1 -1
  332. package/dist/components/portal-sidebar-frame.js +26 -0
  333. package/dist/components/progress.d.ts +10 -8
  334. package/dist/components/progress.d.ts.map +1 -1
  335. package/dist/components/progress.js +11 -9
  336. package/dist/components/qr-code.d.ts +9 -3
  337. package/dist/components/qr-code.d.ts.map +1 -1
  338. package/dist/components/qr-code.js +9 -3
  339. package/dist/components/radio-group.d.ts +15 -0
  340. package/dist/components/radio-group.d.ts.map +1 -1
  341. package/dist/components/radio-group.js +15 -0
  342. package/dist/components/reading-column.d.ts +11 -0
  343. package/dist/components/reading-column.d.ts.map +1 -1
  344. package/dist/components/reading-column.js +11 -0
  345. package/dist/components/record-identity.d.ts +12 -7
  346. package/dist/components/record-identity.d.ts.map +1 -1
  347. package/dist/components/record-identity.js +11 -7
  348. package/dist/components/record-list.d.ts +119 -0
  349. package/dist/components/record-list.d.ts.map +1 -0
  350. package/dist/components/record-list.js +161 -0
  351. package/dist/components/record-sheet.d.ts +36 -0
  352. package/dist/components/record-sheet.d.ts.map +1 -0
  353. package/dist/components/record-sheet.js +19 -0
  354. package/dist/components/record-time.d.ts +27 -11
  355. package/dist/components/record-time.d.ts.map +1 -1
  356. package/dist/components/record-time.js +34 -12
  357. package/dist/components/resizable.d.ts +10 -0
  358. package/dist/components/resizable.d.ts.map +1 -1
  359. package/dist/components/resizable.js +10 -0
  360. package/dist/components/row-edit-form.d.ts +8 -5
  361. package/dist/components/row-edit-form.d.ts.map +1 -1
  362. package/dist/components/row-edit-form.js +8 -5
  363. package/dist/components/run-timeline.d.ts +24 -11
  364. package/dist/components/run-timeline.d.ts.map +1 -1
  365. package/dist/components/run-timeline.js +13 -6
  366. package/dist/components/scope-switcher.d.ts +11 -0
  367. package/dist/components/scope-switcher.d.ts.map +1 -1
  368. package/dist/components/scope-switcher.js +20 -9
  369. package/dist/components/scroll-area.d.ts +12 -0
  370. package/dist/components/scroll-area.d.ts.map +1 -1
  371. package/dist/components/scroll-area.js +12 -0
  372. package/dist/components/select.d.ts +16 -0
  373. package/dist/components/select.d.ts.map +1 -1
  374. package/dist/components/select.js +17 -1
  375. package/dist/components/separator.d.ts +11 -0
  376. package/dist/components/separator.d.ts.map +1 -1
  377. package/dist/components/separator.js +11 -0
  378. package/dist/components/settings-facts.d.ts +18 -1
  379. package/dist/components/settings-facts.d.ts.map +1 -1
  380. package/dist/components/settings-facts.js +20 -1
  381. package/dist/components/settings-page.d.ts +20 -0
  382. package/dist/components/settings-page.d.ts.map +1 -0
  383. package/dist/components/settings-page.js +16 -0
  384. package/dist/components/settings-section.d.ts +38 -8
  385. package/dist/components/settings-section.d.ts.map +1 -1
  386. package/dist/components/settings-section.js +33 -7
  387. package/dist/components/sheet.d.ts +16 -0
  388. package/dist/components/sheet.d.ts.map +1 -1
  389. package/dist/components/sheet.js +18 -2
  390. package/dist/components/sidebar-sections.d.ts +40 -0
  391. package/dist/components/sidebar-sections.d.ts.map +1 -0
  392. package/dist/components/sidebar-sections.js +35 -0
  393. package/dist/components/sidebar.d.ts +14 -1
  394. package/dist/components/sidebar.d.ts.map +1 -1
  395. package/dist/components/sidebar.js +13 -2
  396. package/dist/components/skeleton.d.ts +10 -0
  397. package/dist/components/skeleton.d.ts.map +1 -1
  398. package/dist/components/skeleton.js +11 -1
  399. package/dist/components/slider.d.ts +14 -0
  400. package/dist/components/slider.d.ts.map +1 -1
  401. package/dist/components/slider.js +14 -0
  402. package/dist/components/sonner.d.ts +18 -0
  403. package/dist/components/sonner.d.ts.map +1 -1
  404. package/dist/components/sonner.js +18 -0
  405. package/dist/components/status-badge.d.ts +13 -2
  406. package/dist/components/status-badge.d.ts.map +1 -1
  407. package/dist/components/status-badge.js +21 -9
  408. package/dist/components/status-dot.d.ts +12 -0
  409. package/dist/components/status-dot.d.ts.map +1 -1
  410. package/dist/components/status-dot.js +12 -0
  411. package/dist/components/status-row.d.ts +14 -0
  412. package/dist/components/status-row.d.ts.map +1 -1
  413. package/dist/components/status-row.js +14 -0
  414. package/dist/components/switch.d.ts +15 -0
  415. package/dist/components/switch.d.ts.map +1 -1
  416. package/dist/components/switch.js +15 -0
  417. package/dist/components/table-card.d.ts +16 -3
  418. package/dist/components/table-card.d.ts.map +1 -1
  419. package/dist/components/table-card.js +16 -3
  420. package/dist/components/table-value.d.ts +24 -2
  421. package/dist/components/table-value.d.ts.map +1 -1
  422. package/dist/components/table-value.js +25 -3
  423. package/dist/components/table.d.ts +16 -0
  424. package/dist/components/table.d.ts.map +1 -1
  425. package/dist/components/table.js +17 -1
  426. package/dist/components/tabs.d.ts +27 -0
  427. package/dist/components/tabs.d.ts.map +1 -1
  428. package/dist/components/tabs.js +27 -0
  429. package/dist/components/tag.d.ts +12 -2
  430. package/dist/components/tag.d.ts.map +1 -1
  431. package/dist/components/tag.js +12 -2
  432. package/dist/components/text-link.d.ts +17 -0
  433. package/dist/components/text-link.d.ts.map +1 -1
  434. package/dist/components/text-link.js +17 -0
  435. package/dist/components/textarea.d.ts +14 -0
  436. package/dist/components/textarea.d.ts.map +1 -1
  437. package/dist/components/textarea.js +14 -0
  438. package/dist/components/theme-mode-switcher.d.ts +21 -0
  439. package/dist/components/theme-mode-switcher.d.ts.map +1 -1
  440. package/dist/components/theme-mode-switcher.js +23 -1
  441. package/dist/components/toggle-group.d.ts +13 -0
  442. package/dist/components/toggle-group.d.ts.map +1 -1
  443. package/dist/components/toggle-group.js +13 -0
  444. package/dist/components/toggle.d.ts +14 -0
  445. package/dist/components/toggle.d.ts.map +1 -1
  446. package/dist/components/toggle.js +14 -0
  447. package/dist/components/tool-icon.d.ts +14 -4
  448. package/dist/components/tool-icon.d.ts.map +1 -1
  449. package/dist/components/tool-icon.js +27 -42
  450. package/dist/components/tooltip.d.ts +15 -0
  451. package/dist/components/tooltip.d.ts.map +1 -1
  452. package/dist/components/tooltip.js +15 -0
  453. package/dist/components/trend-badge.d.ts +16 -1
  454. package/dist/components/trend-badge.d.ts.map +1 -1
  455. package/dist/components/trend-badge.js +16 -7
  456. package/dist/components/update-card.d.ts +36 -0
  457. package/dist/components/update-card.d.ts.map +1 -0
  458. package/dist/components/update-card.js +28 -0
  459. package/dist/components/usage-meter.d.ts +15 -0
  460. package/dist/components/usage-meter.d.ts.map +1 -1
  461. package/dist/components/usage-meter.js +15 -0
  462. package/dist/components/waiting-line.d.ts +13 -10
  463. package/dist/components/waiting-line.d.ts.map +1 -1
  464. package/dist/components/waiting-line.js +13 -10
  465. package/dist/eslint/index.js +8 -0
  466. package/dist/eslint/rules/empty-state-owner.js +145 -0
  467. package/dist/eslint/rules/menu-owner.js +75 -0
  468. package/dist/eslint/rules/no-decorative-icon.js +164 -0
  469. package/dist/eslint/rules/page-composition.js +232 -0
  470. package/dist/eslint/rules/rendered-import.js +121 -0
  471. package/dist/eslint/strict-design-system.js +1 -1
  472. package/dist/hooks/use-hydrated.d.ts +2 -0
  473. package/dist/hooks/use-hydrated.d.ts.map +1 -0
  474. package/dist/hooks/use-hydrated.js +7 -0
  475. package/dist/index.d.ts +15 -10
  476. package/dist/index.d.ts.map +1 -1
  477. package/dist/index.js +15 -10
  478. package/dist/internal/catalog-list.d.ts +14 -0
  479. package/dist/internal/catalog-list.d.ts.map +1 -0
  480. package/dist/internal/catalog-list.js +53 -0
  481. package/dist/internal/empty.d.ts +6 -9
  482. package/dist/internal/empty.d.ts.map +1 -1
  483. package/dist/internal/empty.js +24 -22
  484. package/dist/internal/footer-strip.d.ts +0 -4
  485. package/dist/internal/footer-strip.d.ts.map +1 -1
  486. package/dist/internal/footer-strip.js +0 -4
  487. package/dist/internal/record-menu-items.d.ts +19 -0
  488. package/dist/internal/record-menu-items.d.ts.map +1 -0
  489. package/dist/internal/record-menu-items.js +20 -0
  490. package/dist/internal/settings-save.d.ts +43 -0
  491. package/dist/internal/settings-save.d.ts.map +1 -0
  492. package/dist/internal/settings-save.js +147 -0
  493. package/dist/lib/theme-mode.d.ts +1 -1
  494. package/dist/lib/theme-mode.js +1 -1
  495. package/dist/showcase/assets.d.ts +8 -0
  496. package/dist/showcase/assets.d.ts.map +1 -0
  497. package/dist/showcase/assets.js +13 -0
  498. package/dist/showcase/foundations.d.ts +2 -0
  499. package/dist/showcase/foundations.d.ts.map +1 -0
  500. package/dist/showcase/foundations.js +61 -0
  501. package/dist/showcase/samples.d.ts +21 -0
  502. package/dist/showcase/samples.d.ts.map +1 -0
  503. package/dist/showcase/samples.js +48 -0
  504. package/dist/showcase/showcase.d.ts +10 -0
  505. package/dist/showcase/showcase.d.ts.map +1 -0
  506. package/dist/showcase/showcase.js +44 -0
  507. package/dist/showcase/specimens/actions.d.ts +7 -0
  508. package/dist/showcase/specimens/actions.d.ts.map +1 -0
  509. package/dist/showcase/specimens/actions.js +15 -0
  510. package/dist/showcase/specimens/charts.d.ts +17 -0
  511. package/dist/showcase/specimens/charts.d.ts.map +1 -0
  512. package/dist/showcase/specimens/charts.js +104 -0
  513. package/dist/showcase/specimens/choices.d.ts +21 -0
  514. package/dist/showcase/specimens/choices.d.ts.map +1 -0
  515. package/dist/showcase/specimens/choices.js +68 -0
  516. package/dist/showcase/specimens/compositions.d.ts +39 -0
  517. package/dist/showcase/specimens/compositions.d.ts.map +1 -0
  518. package/dist/showcase/specimens/compositions.js +270 -0
  519. package/dist/showcase/specimens/data.d.ts +31 -0
  520. package/dist/showcase/specimens/data.d.ts.map +1 -0
  521. package/dist/showcase/specimens/data.js +111 -0
  522. package/dist/showcase/specimens/feedback.d.ts +23 -0
  523. package/dist/showcase/specimens/feedback.d.ts.map +1 -0
  524. package/dist/showcase/specimens/feedback.js +64 -0
  525. package/dist/showcase/specimens/index.d.ts +164 -0
  526. package/dist/showcase/specimens/index.d.ts.map +1 -0
  527. package/dist/showcase/specimens/index.js +24 -0
  528. package/dist/showcase/specimens/inputs.d.ts +22 -0
  529. package/dist/showcase/specimens/inputs.d.ts.map +1 -0
  530. package/dist/showcase/specimens/inputs.js +60 -0
  531. package/dist/showcase/specimens/menus.d.ts +20 -0
  532. package/dist/showcase/specimens/menus.d.ts.map +1 -0
  533. package/dist/showcase/specimens/menus.js +65 -0
  534. package/dist/showcase/specimens/navigation.d.ts +22 -0
  535. package/dist/showcase/specimens/navigation.d.ts.map +1 -0
  536. package/dist/showcase/specimens/navigation.js +103 -0
  537. package/dist/showcase/specimens/other.d.ts +26 -0
  538. package/dist/showcase/specimens/other.d.ts.map +1 -0
  539. package/dist/showcase/specimens/other.js +73 -0
  540. package/dist/showcase/specimens/specimen.d.ts +5 -0
  541. package/dist/showcase/specimens/specimen.d.ts.map +1 -0
  542. package/dist/showcase/specimens/specimen.js +1 -0
  543. package/dist/showcase/specimens/status.d.ts +22 -0
  544. package/dist/showcase/specimens/status.d.ts.map +1 -0
  545. package/dist/showcase/specimens/status.js +44 -0
  546. package/dist/showcase/usage.generated.d.ts +16 -0
  547. package/dist/showcase/usage.generated.d.ts.map +1 -0
  548. package/dist/showcase/usage.generated.js +1788 -0
  549. package/dist/standalone/index.js +1 -1
  550. package/dist/styles/components.css +21 -0
  551. package/package.json +8 -3
  552. package/dist/components/automation-section.d.ts +0 -78
  553. package/dist/components/automation-section.d.ts.map +0 -1
  554. package/dist/components/automation-section.js +0 -75
  555. package/dist/components/catalog-tile.d.ts +0 -19
  556. package/dist/components/catalog-tile.d.ts.map +0 -1
  557. package/dist/components/catalog-tile.js +0 -13
  558. package/dist/components/feedback-state.d.ts +0 -14
  559. package/dist/components/feedback-state.d.ts.map +0 -1
  560. package/dist/components/feedback-state.js +0 -65
  561. package/dist/components/installer-shell.d.ts +0 -25
  562. package/dist/components/installer-shell.d.ts.map +0 -1
  563. package/dist/components/installer-shell.js +0 -32
  564. package/dist/components/settings-form.d.ts +0 -9
  565. package/dist/components/settings-form.d.ts.map +0 -1
  566. package/dist/components/settings-form.js +0 -83
@@ -38,7 +38,19 @@ function FilterPicker({ facets, copy, initialField, returnFocus, children, }) {
38
38
  }
39
39
  }, children: [_jsx(CommandInput, { ref: input, "aria-label": facet ? `${copy.searchValues}: ${facet.label}` : copy.searchFields, placeholder: facet ? copy.searchValues : copy.searchFields, value: search, onValueChange: setSearch }), _jsxs(CommandList, { label: facet?.label ?? copy.searchFields, children: [_jsx(CommandEmpty, { children: copy.empty }), _jsx(CommandGroup, { heading: facet?.label, children: facet ? (_jsxs(_Fragment, { children: [facet.value ? (_jsx(CommandItem, { value: facet.allLabel, onSelect: () => commit(""), children: facet.allLabel })) : null, facet.options.map((option) => (_jsxs(CommandItem, { value: option.value, keywords: [option.label], "data-checked": option.value === facet.value, onSelect: () => commit(option.value), children: [option.icon, _jsx("span", { className: option.mono ? "truncate font-label-mono text-label-mono" : "truncate", children: option.label })] }, option.value)))] })) : (facets.map((item) => (_jsx(CommandItem, { value: item.label, onSelect: () => changeField(item.label), children: item.label }, item.label)))) })] })] }, field ?? "fields")] })] }));
40
40
  }
41
- export function CollectionFilters({ facets, copy, }) {
41
+ /**
42
+ * The filters in a collection's toolbar: one Add filter button, a chip for
43
+ * each facet in force, and the facets most often narrowed to waiting as
44
+ * dashed chips.
45
+ *
46
+ * @family Compositions
47
+ * @when A collection or a feed a person narrows by a property its records share: a status, an owner, a kind. It stands in the toolbar after the search and before the sort.
48
+ * @instead Finding one record by its name is the search. Changing the order is the sort. Switching between sibling collections is the page's tabs.
49
+ * @behaviour Add filter opens a picker of the facets, then of a facet's values, each searchable; Backspace in an empty search goes back to the facets. A facet in force is a chip that reopens its values, with a button that removes it. A suggested value waits as a dashed chip while its facet is unset and applies in one click. Focus returns to Add filter when a facet is removed. The product keeps each facet's value, in the URL where it has one.
50
+ * @words Every string is the product's: `copy` names Add filter, the two searches, the empty result, Back and Remove; each facet names itself, its values and its "All" choice.
51
+ * @access Each chip is a group named by its facet; its remove button reads Remove with the facet's name. The pickers are searchable lists named by what they search.
52
+ */
53
+ export function CollectionFilters({ facets, copy }) {
42
54
  const addTrigger = React.useRef(null);
43
55
  if (!facets.length)
44
56
  return null;
@@ -1,125 +1,39 @@
1
1
  import type { RowData } from "@tanstack/react-table";
2
- import { type ReactElement, type ReactNode } from "react";
2
+ import type { ReactElement } from "react";
3
+ import { type CollectionFiltersProps } from "./collection-filters.js";
4
+ import { type CollectionSearchProps } from "./collection-search.js";
3
5
  import { type CollectionSortProps } from "./collection-sort.js";
4
- import { type DataTableRowLinkProps } from "./data-table.js";
5
- import { type EmptyStateProps } from "./empty-state.js";
6
+ import type { EmptyStateKind } from "./empty-state.js";
6
7
  import { type PageActionsProps } from "./page-actions.js";
7
- import { type StatusBadgeTone } from "./status-badge.js";
8
- import { type RowMessage } from "../internal/row-message.js";
9
- /** One thing a person can do to a record. */
10
- export type RecordCommand = {
11
- label: string;
12
- /** Its name for assistive technology when the label alone does not say what it does: "Let Sofia use Gmail". */
13
- accessibleName?: string;
14
- icon: ReactElement;
15
- onSelect: () => void;
16
- destructive?: boolean;
17
- disabled?: boolean;
18
- /** Why the command cannot run now, read after its name. */
19
- reason?: ReactNode;
20
- };
21
- export type { RowMessage };
22
- export type CollectionPageProps<TRecord extends RowData> = {
23
- /** Names the collection for assistive technology: "Skills". */
24
- label: string;
25
- /** The page's title, when the collection is the page; a section titled by its shell leaves it out. */
8
+ import { type RecordListProps } from "./record-list.js";
9
+ export type { RowMessage } from "./record-list.js";
10
+ export type CollectionPageProps<TRecord extends RowData> = Omit<RecordListProps<TRecord>, "heading" | "noMatch"> & {
11
+ /** The page's title, when the product's chrome does not draw it. */
26
12
  title?: string;
27
- /** The title's commands; a `primary` that is also the first-use action shows only once there are records. */
28
- actions?: PageActionsProps;
29
- search?: {
30
- label: string;
31
- value: string;
32
- onValueChange: (value: string) => void;
33
- };
13
+ /** The title row: secondary, primary, then the three dots. A `primary` equal to `empty.action` shows only once there are records. */
14
+ actions?: Omit<PageActionsProps, "period">;
15
+ /** The page's sibling collections, under the title row: `TabsNav variant="line"`. */
16
+ tabs?: ReactElement;
17
+ search?: CollectionSearchProps;
18
+ filters?: CollectionFiltersProps;
34
19
  sort?: CollectionSortProps;
35
- /** The records to show, already searched and ordered; `undefined` while they load. */
36
- records: readonly TRecord[] | undefined;
37
- /** Names the rows while they load; the collection's `label` when left out. */
38
- loadingLabel?: string;
39
- /** The read failed: shown in place of the rows. */
40
- failed?: Extract<EmptyStateProps, {
41
- kind: "failed";
42
- }>;
43
- /** There are no records at all; a collection shown only when it has records leaves it out. */
44
- empty?: Extract<EmptyStateProps, {
45
- kind: "firstUse" | "nothingYet";
46
- }>;
47
- /** The search matched nothing; a collection without one leaves it out. */
48
- noMatch?: Omit<Extract<EmptyStateProps, {
49
- kind: "noResults";
50
- }>, "kind">;
51
- getId: (record: TRecord) => string;
52
- /** The record's name, and one line saying what it is or where it comes from. */
53
- name: (record: TRecord) => {
54
- name: ReactNode;
55
- detail?: ReactNode;
56
- mark?: ReactNode;
57
- };
58
- /** The name is the record's whole text, such as a memory, and wraps in full instead of ending in an ellipsis. */
59
- wraps?: boolean;
60
- /**
61
- * Facts of one kind each, a column apiece after the name, every value saying
62
- * what it is by its own word or mark: "Skills: price-quotes", a commit. A fact
63
- * holds one line at its own width; `prose` is a phrase that takes the row's spare width.
64
- */
65
- facts?: readonly {
66
- id: string;
67
- label: string;
68
- of: (record: TRecord) => ReactNode;
69
- prose?: boolean;
70
- }[];
71
- /** A status only when it tells this record apart from the others; `null` for the usual case. */
72
- status?: {
73
- label: string;
74
- of: (record: TRecord) => {
75
- label: string;
76
- tone: StatusBadgeTone;
77
- } | null;
78
- };
79
- /** When something happened to the record, in its verb's sentence. */
80
- time?: {
81
- label: string;
82
- of: (record: TRecord) => Date | number | string | null | undefined;
83
- phrase: (when: string) => string;
84
- /** What a screen reader hears where a record has no time, beside the muted dash. */
85
- missing: string;
86
- locale?: string;
87
- };
88
- /**
89
- * What a person can do to the record: one command is a button in the row; two or
90
- * more, or a destructive one, open the row's menu, the destructive last.
91
- */
92
- commands?: (record: TRecord) => readonly RecordCommand[];
93
- /**
94
- * The row's one outline button that starts what the record is not doing yet,
95
- * "Connect", with what it is waiting for; its commands then stay in the menu after it.
96
- */
97
- start?: (record: TRecord) => ReactNode;
98
- commandsLabel?: (record: TRecord) => string;
99
- /** Names the commands column for assistive technology: "Actions". */
100
- commandsHeader?: string;
101
- /** The record opens its own page; the row shows the way in. A record that opens nothing has no `href`. */
102
- open?: {
103
- href: (record: TRecord) => string | null;
104
- label: (record: TRecord) => string;
105
- /** Draws the row's link, for a router that opens it itself. */
106
- renderLink?: (props: DataTableRowLinkProps) => ReactNode;
107
- };
108
- /** The record's own action failed or cannot run: its message, inside the row. */
109
- state?: (record: TRecord) => RowMessage | null;
110
- /** The record being edited, and its `RowEditForm`, drawn inside its row. */
111
- editor?: {
112
- id: string;
113
- render: (record: TRecord) => ReactNode;
114
- };
20
+ /** glass only where the rows scroll under the toolbar. */
21
+ toolbarSurface?: "plain" | "glass";
22
+ /** The search or the filters matched nothing. */
23
+ noMatch?: Omit<EmptyStateKind<"noResults">, "kind">;
24
+ /** The records of a new search, filter or sort are being read; the rows shown are the last ones. */
25
+ pending?: boolean;
115
26
  };
116
27
  /**
117
- * The Collection composition (DESIGN.md "Page compositions", "Tables and
118
- * missing values"), whole: the title with the page's actions, the toolbar's
119
- * search and sort, then one row per record that reads without a header row:
120
- * its name over what it is, a status only when it is the exception, when it
121
- * happened in its verb's sentence, and its commands. A failed or refused action
122
- * and an edit stay inside their own row.
28
+ * A page whose job is a list of records: its title with the page's actions on
29
+ * one row, its sibling collections, one toolbar, then one line per record.
30
+ *
31
+ * @family Compositions
32
+ * @when A list of records a person finds one of and acts on: Customers, Agents, Skills, Apps, MCP servers, Mailboxes.
33
+ * @instead Figures compared across records are a DataTable with headings; a list inside another page's section is a RecordList with its heading.
34
+ * @behaviour Nothing sits under the title. The title row holds at most one secondary, the primary, then the three dots, which open only for two commands or more. A primary that is also the first use's action waits until there are records; while a different primary stays, the first use's action is an outline button. One toolbar holds the search, which grows, then the filters, then the sort; it shows while there are records or a search or filter is set, and is glass only where the rows scroll under it. While a new search, filter or sort is read, the toolbar is busy and, after a second, shows the one waiting line, while the last rows stay. The rows, their states and their loading are the RecordList's; no match is offered only while a search or filter is set.
35
+ * @words Every string is the product's. The title names the collection in the plural ("Agents"); the search says what it finds ("Find a skill"); no match says what found nothing and offers to clear it ("Clear search", "Clear filters").
36
+ * @access The title is the page's h1 when the composition draws it. The toolbar is named by `label` and busy while `pending`; the rows are the RecordList's table, named by `label`.
123
37
  */
124
38
  export declare function CollectionPage<TRecord extends RowData>(props: CollectionPageProps<TRecord>): import("react").JSX.Element;
125
39
  //# sourceMappingURL=collection-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-page.d.ts","sourceRoot":"","sources":["../../src/components/collection-page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection-page.d.ts","sourceRoot":"","sources":["../../src/components/collection-page.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG5E,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,OAAO,IAAI,IAAI,CAC7D,eAAe,CAAC,OAAO,CAAC,EACxB,SAAS,GAAG,SAAS,CACtB,GAAG;IACF,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qIAAqI;IACrI,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC3C,qFAAqF;IACrF,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACpD,oGAAoG;IACpG,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,OAAO,EAAE,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,+BA0C1F"}
@@ -1,150 +1,34 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { ChevronRight } from "lucide-react";
4
- import { createContext, useContext } from "react";
5
- import { ActionMenu } from "./action-menu.js";
6
- import { Button } from "./button.js";
3
+ import { CollectionFilters } from "./collection-filters.js";
7
4
  import { CollectionSearch } from "./collection-search.js";
8
5
  import { CollectionSort } from "./collection-sort.js";
9
6
  import { CollectionToolbar } from "./collection-toolbar.js";
10
- import { DataTable, } from "./data-table.js";
11
- import { DropdownMenuCommand, DropdownMenuSeparator } from "./dropdown-menu.js";
12
- import { EmptyState } from "./empty-state.js";
13
- import { PageActions } from "./page-actions.js";
7
+ import { PageActions, PageActionsHostProvider, } from "./page-actions.js";
14
8
  import { PageHeader } from "./page-header.js";
15
- import { RecordIdentity } from "./record-identity.js";
16
- import { RecordTime, recordDate } from "./record-time.js";
17
- import { TableValue } from "./table-value.js";
18
- import { Skeleton } from "./skeleton.js";
19
- import { StatusBadge } from "./status-badge.js";
20
- import { TableCard } from "./table-card.js";
21
- import { RowMessageActions, RowMessageLine } from "../internal/row-message.js";
22
- const ShownCollection = createContext(undefined);
23
- function useShownCollection() {
24
- // SAFETY: the one ShownCollection provider is CollectionPage's render, which passes its own props, and these cells render only inside that page's table of the same TRecord.
25
- return useContext(ShownCollection);
26
- }
27
- /*
28
- * Each cell is one component for the page's whole life: TanStack renders a
29
- * column's `cell` as a component, so a function made anew on each render would
30
- * remount every row's cells on every render, closing a row's open menu when
31
- * the records are read again. The cells read the page's current props instead.
32
- */
33
- function NameCell({ row }) {
34
- const props = useShownCollection();
35
- const shown = props.name(row.original);
36
- const state = props.state?.(row.original);
37
- return (_jsx(RecordIdentity, { detail: state ? _jsx(RowMessageLine, { state: state }) : shown.detail, mark: shown.mark, name: shown.name, wraps: props.wraps }));
38
- }
39
- function FactCell({ column, row }) {
40
- const fact = useShownCollection().facts?.find((each) => each.id === column.id);
41
- return _jsx(_Fragment, { children: fact?.of(row.original) });
42
- }
43
- function StatusCell({ row }) {
44
- const shown = useShownCollection().status?.of(row.original);
45
- return shown ? _jsx(StatusBadge, { label: shown.label, tone: shown.tone }) : null;
46
- }
47
- function TimeCell({ row }) {
48
- const time = useShownCollection().time;
49
- if (!time)
50
- return null;
51
- const at = recordDate(time.of(row.original));
52
- return (_jsx(TableValue, { missingLabel: time.missing, value: at ? _jsx(RecordTime, { at: at, locale: time.locale, phrase: time.phrase }) : null }));
53
- }
54
- function CommandsCell({ row }) {
55
- const props = useShownCollection();
56
- const state = props.state?.(row.original);
57
- const commands = props.commands?.(row.original) ?? [];
58
- const way = commands.length > 0 ? (_jsx(Commands, { commands: commands, label: props.commandsLabel?.(row.original) ?? props.label, menu: props.start !== undefined })) : props.open?.href(row.original) && !state ? (_jsx(ChevronRight, { "aria-hidden": "true", className: "size-4 text-muted-foreground" })) : null;
59
- if (!props.start && !state)
60
- return way;
61
- return (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [props.start?.(row.original), state ? _jsx(RowMessageActions, { state: state }) : null, way] }));
62
- }
63
- function LoadingRecords({ label }) {
64
- return (_jsx("div", { "aria-busy": "true", "aria-label": label, className: "divide-y divide-border", role: "status", children: Array.from({ length: 3 }, (_, index) => (_jsxs("div", { className: "flex h-16 items-center gap-3 px-4", children: [_jsxs("div", { className: "grid gap-1.5", children: [_jsx(Skeleton, { className: "h-4 w-40 max-w-full" }), _jsx(Skeleton, { className: "h-3 w-56 max-w-full" })] }), _jsx(Skeleton, { className: "ml-auto h-4 w-28" })] }, index))) }));
65
- }
66
- function Commands({ commands, label, menu, }) {
67
- const [only] = commands;
68
- if (!only)
69
- return null;
70
- if (commands.length === 1 && !only.destructive && !menu) {
71
- return (_jsx(Button, { "aria-label": only.accessibleName, disabled: only.disabled, onClick: only.onSelect, type: "button", variant: "outline", children: only.label }));
72
- }
73
- const kept = commands.filter((command) => !command.destructive);
74
- const destructive = commands.filter((command) => command.destructive);
75
- return (_jsxs(ActionMenu, { label: label, children: [kept.map((command) => (_jsx(DropdownMenuCommand, { "aria-label": command.accessibleName, disabled: command.disabled, icon: command.icon, onClick: command.onSelect, reason: command.reason, children: command.label }, command.label))), kept.length > 0 && destructive.length > 0 ? _jsx(DropdownMenuSeparator, {}) : null, destructive.map((command) => (_jsx(DropdownMenuCommand, { "aria-label": command.accessibleName, disabled: command.disabled, icon: command.icon, onClick: command.onSelect, reason: command.reason, variant: "destructive", children: command.label }, command.label)))] }));
76
- }
9
+ import { RecordList } from "./record-list.js";
10
+ import { WaitingLine } from "./waiting-line.js";
77
11
  /**
78
- * The Collection composition (DESIGN.md "Page compositions", "Tables and
79
- * missing values"), whole: the title with the page's actions, the toolbar's
80
- * search and sort, then one row per record that reads without a header row:
81
- * its name over what it is, a status only when it is the exception, when it
82
- * happened in its verb's sentence, and its commands. A failed or refused action
83
- * and an edit stay inside their own row.
12
+ * A page whose job is a list of records: its title with the page's actions on
13
+ * one row, its sibling collections, one toolbar, then one line per record.
14
+ *
15
+ * @family Compositions
16
+ * @when A list of records a person finds one of and acts on: Customers, Agents, Skills, Apps, MCP servers, Mailboxes.
17
+ * @instead Figures compared across records are a DataTable with headings; a list inside another page's section is a RecordList with its heading.
18
+ * @behaviour Nothing sits under the title. The title row holds at most one secondary, the primary, then the three dots, which open only for two commands or more. A primary that is also the first use's action waits until there are records; while a different primary stays, the first use's action is an outline button. One toolbar holds the search, which grows, then the filters, then the sort; it shows while there are records or a search or filter is set, and is glass only where the rows scroll under it. While a new search, filter or sort is read, the toolbar is busy and, after a second, shows the one waiting line, while the last rows stay. The rows, their states and their loading are the RecordList's; no match is offered only while a search or filter is set.
19
+ * @words Every string is the product's. The title names the collection in the plural ("Agents"); the search says what it finds ("Find a skill"); no match says what found nothing and offers to clear it ("Clear search", "Clear filters").
20
+ * @access The title is the page's h1 when the composition draws it. The toolbar is named by `label` and busy while `pending`; the rows are the RecordList's table, named by `label`.
84
21
  */
85
22
  export function CollectionPage(props) {
86
- const { label, title, actions, search, sort, records } = props;
87
- const hasRecords = records !== undefined && records.length > 0;
88
- const searching = Boolean(search?.value);
89
- const addsFirst = props.empty?.kind === "firstUse" && props.empty.action === actions?.primary;
90
- const shownActions = addsFirst && !hasRecords && !searching ? { ...actions, primary: undefined } : actions;
91
- const columns = [
92
- { id: "name", header: label, meta: props.wraps ? { wraps: true } : undefined, cell: NameCell },
93
- ];
94
- for (const fact of props.facts ?? []) {
95
- columns.push({
96
- id: fact.id,
97
- header: fact.label,
98
- meta: fact.prose ? { prose: true } : { narrow: true },
99
- cell: FactCell,
100
- });
101
- }
102
- if (props.status) {
103
- columns.push({
104
- id: "status",
105
- header: props.status.label,
106
- meta: { narrow: true },
107
- cell: StatusCell,
108
- });
109
- }
110
- if (props.time) {
111
- columns.push({ id: "time", header: props.time.label, meta: { narrow: true }, cell: TimeCell });
112
- }
113
- if (props.commands || props.open || props.state || props.start) {
114
- columns.push({
115
- id: "commands",
116
- header: props.commandsHeader ?? label,
117
- meta: { narrow: true },
118
- cell: CommandsCell,
119
- });
120
- }
121
- const primaryColumns = columns.map((column) => String(column.id));
122
- let body;
123
- if (props.failed) {
124
- body = _jsx(EmptyState, { ...props.failed });
125
- }
126
- else if (records === undefined) {
127
- body = _jsx(LoadingRecords, { label: props.loadingLabel ?? label });
128
- }
129
- else if (!hasRecords && searching && props.noMatch) {
130
- body = _jsx(EmptyState, { kind: "noResults", ...props.noMatch });
131
- }
132
- else if (!hasRecords) {
133
- body = props.empty ? _jsx(EmptyState, { ...props.empty }) : null;
134
- }
135
- else {
136
- const table = {
137
- columns,
138
- data: [...records],
139
- embedded: true,
140
- empty: { kind: "nothingYet", message: label },
141
- getRowId: props.getId,
142
- primaryColumns,
143
- showColumnHeaders: false,
144
- rowEditor: props.editor ? { rowId: props.editor.id, render: props.editor.render } : undefined,
145
- tableLabel: label,
146
- };
147
- body = props.open ? (_jsx(DataTable, { ...table, primaryColumnId: "name", renderRowLink: props.open.renderLink, rowHref: props.open.href, rowLabel: props.open.label })) : (_jsx(DataTable, { ...table }));
148
- }
149
- return (_jsxs("div", { className: "grid min-w-0 gap-4", "data-slot": "collection-page", children: [title ? _jsx(PageHeader, { title: title }) : null, shownActions ? _jsx(PageActions, { ...shownActions }) : null, search && (hasRecords || searching) ? (_jsx(CollectionToolbar, { actions: sort ? _jsx(CollectionSort, { ...sort }) : undefined, label: label, search: _jsx(CollectionSearch, { ...search }), surface: "plain" })) : null, _jsx(TableCard, { children: _jsx(ShownCollection.Provider, { value: props, children: body }) })] }));
23
+ const { title, actions, tabs, search, filters, sort, toolbarSurface, noMatch, pending, ...list } = props;
24
+ const hasRecords = list.records !== undefined && list.records.length > 0;
25
+ const narrowed = Boolean(search?.value) || (filters?.facets.some((facet) => facet.value) ?? false);
26
+ const { primary, ...withoutPrimary } = actions ?? {};
27
+ const addsFirst = primary !== undefined && list.empty?.kind === "firstUse" && list.empty.action === primary;
28
+ const shownActions = addsFirst && !hasRecords && !narrowed ? withoutPrimary : actions;
29
+ const empty = list.empty?.kind === "firstUse" && list.empty.action && primary !== undefined && !addsFirst
30
+ ? { ...list.empty, actionVariant: "outline" }
31
+ : list.empty;
32
+ const page = (_jsxs("div", { className: "grid min-w-0 gap-4", "data-slot": "collection-page", children: [title ? _jsx(PageHeader, { title: title }) : null, shownActions ? _jsx(PageActions, { ...shownActions }) : null, tabs, (search || filters || sort) && (hasRecords || narrowed) ? (_jsx(CollectionToolbar, { actions: filters || sort ? (_jsxs(_Fragment, { children: [filters ? _jsx(CollectionFilters, { ...filters }) : null, sort ? _jsx(CollectionSort, { ...sort }) : null] })) : undefined, "aria-busy": pending || undefined, label: list.label, search: search ? _jsx(CollectionSearch, { ...search }) : undefined, status: pending ? _jsx(WaitingLine, { className: "w-24", decorative: true }) : null, surface: toolbarSurface ?? "plain" })) : null, _jsx(RecordList, { ...list, empty: empty, noMatch: narrowed ? noMatch : undefined })] }));
33
+ return title ? _jsx(PageActionsHostProvider, { children: page }) : page;
150
34
  }
@@ -6,5 +6,19 @@ export type CollectionSearchProps = {
6
6
  disabled?: boolean;
7
7
  };
8
8
  /** The search a collection toolbar fills its row with. */
9
+ /**
10
+ * The search a collection toolbar fills its row with.
11
+ *
12
+ * @family Inputs
13
+ * @when Finding a record inside one collection, at the start of its toolbar.
14
+ * @instead Finding anything across the product is `CommandDialog`. Narrowing by a facet is
15
+ * `CollectionFilters`. A free value in a form is `Input`.
16
+ * @behaviour Results stay on screen while a search updates. Escape clears only while the box holds
17
+ * the interaction and has a value; otherwise it closes the overlay as usual.
18
+ * @words The search's label is what it finds, also shown as its placeholder: *Find a skill*,
19
+ * *Search the hub*.
20
+ * @access The input carries `aria-label` from `label` and `type="search"`; the search mark is
21
+ * decorative.
22
+ */
9
23
  export declare function CollectionSearch({ label, value, onValueChange, disabled }: CollectionSearchProps): import("react").JSX.Element;
10
24
  //# sourceMappingURL=collection-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-search.d.ts","sourceRoot":"","sources":["../../src/components/collection-search.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,qBAAqB,GAAG;IAClC,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAgBhG"}
1
+ {"version":3,"file":"collection-search.d.ts","sourceRoot":"","sources":["../../src/components/collection-search.tsx"],"names":[],"mappings":"AAMA,MAAM,MAAM,qBAAqB,GAAG;IAClC,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,0DAA0D;AAC1D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAgBhG"}
@@ -3,6 +3,20 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { Search } from "lucide-react";
4
4
  import { InputGroup, InputGroupAddon, InputGroupInput } from "./input-group.js";
5
5
  /** The search a collection toolbar fills its row with. */
6
+ /**
7
+ * The search a collection toolbar fills its row with.
8
+ *
9
+ * @family Inputs
10
+ * @when Finding a record inside one collection, at the start of its toolbar.
11
+ * @instead Finding anything across the product is `CommandDialog`. Narrowing by a facet is
12
+ * `CollectionFilters`. A free value in a form is `Input`.
13
+ * @behaviour Results stay on screen while a search updates. Escape clears only while the box holds
14
+ * the interaction and has a value; otherwise it closes the overlay as usual.
15
+ * @words The search's label is what it finds, also shown as its placeholder: *Find a skill*,
16
+ * *Search the hub*.
17
+ * @access The input carries `aria-label` from `label` and `type="search"`; the search mark is
18
+ * decorative.
19
+ */
6
20
  export function CollectionSearch({ label, value, onValueChange, disabled }) {
7
21
  return (_jsxs(InputGroup, { children: [_jsx(InputGroupAddon, { children: _jsx(Search, { "aria-hidden": "true" }) }), _jsx(InputGroupInput, { "aria-label": label, disabled: disabled, onChange: (event) => onValueChange(event.target.value), placeholder: label, type: "search", value: value })] }));
8
22
  }
@@ -10,9 +10,19 @@ export type CollectionSortProps = {
10
10
  onValueChange: (value: string) => void;
11
11
  };
12
12
  /**
13
- * The order a collection's rows are read in, at the toolbar's trailing edge
14
- * before the collection's actions. The trigger names the order in force; the
15
- * menu offers the others.
13
+ * The order a collection's rows are read in, at the toolbar's trailing edge.
14
+ *
15
+ * @family Choices
16
+ * @when A collection whose rows can be read in more than one order: newest, name, cost.
17
+ * @instead Sorting by a column of a comparison table is `DataTable`'s own header. Narrowing rows is
18
+ * `CollectionFilters`.
19
+ * @behaviour An outline button names the order in force; its menu offers the others as radio rows
20
+ * with the current one checked. Choosing the current order changes nothing. It renders nothing
21
+ * without options.
22
+ * @words The label says what the control does (*Sort by*); each option names an order: *Newest
23
+ * first*, *Name*.
24
+ * @access The trigger reads the label and the current order: *Sort by: Newest first*. The options
25
+ * are menu radio items.
16
26
  */
17
27
  export declare function CollectionSort({ label, value, options, onValueChange }: CollectionSortProps): import("react").JSX.Element | null;
18
28
  //# sourceMappingURL=collection-sort.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-sort.d.ts","sourceRoot":"","sources":["../../src/components/collection-sort.tsx"],"names":[],"mappings":"AAeA,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,mBAAmB,sCAkC3F"}
1
+ {"version":3,"file":"collection-sort.d.ts","sourceRoot":"","sources":["../../src/components/collection-sort.tsx"],"names":[],"mappings":"AAeA,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,mBAAmB,sCAkC3F"}
@@ -4,9 +4,19 @@ import { ArrowUpDown } from "lucide-react";
4
4
  import { Button } from "./button.js";
5
5
  import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from "./dropdown-menu.js";
6
6
  /**
7
- * The order a collection's rows are read in, at the toolbar's trailing edge
8
- * before the collection's actions. The trigger names the order in force; the
9
- * menu offers the others.
7
+ * The order a collection's rows are read in, at the toolbar's trailing edge.
8
+ *
9
+ * @family Choices
10
+ * @when A collection whose rows can be read in more than one order: newest, name, cost.
11
+ * @instead Sorting by a column of a comparison table is `DataTable`'s own header. Narrowing rows is
12
+ * `CollectionFilters`.
13
+ * @behaviour An outline button names the order in force; its menu offers the others as radio rows
14
+ * with the current one checked. Choosing the current order changes nothing. It renders nothing
15
+ * without options.
16
+ * @words The label says what the control does (*Sort by*); each option names an order: *Newest
17
+ * first*, *Name*.
18
+ * @access The trigger reads the label and the current order: *Sort by: Newest first*. The options
19
+ * are menu radio items.
10
20
  */
11
21
  export function CollectionSort({ label, value, options, onValueChange }) {
12
22
  const current = options.find((option) => option.value === value) ?? options[0];
@@ -12,5 +12,18 @@ export type CollectionToolbarProps = Omit<ComponentPropsWithoutRef<"div">, "chil
12
12
  */
13
13
  surface?: "glass" | "plain";
14
14
  };
15
+ /**
16
+ * A collection's control bar: its filters, its search and its sort, over its own rows.
17
+ *
18
+ * @family Compositions
19
+ * @when The row above a collection's rows that holds its search, filters, sort and status.
20
+ * @instead A page action never sits here: it is `PageActions` on the title's row. Finding across
21
+ * the product is `CommandDialog`.
22
+ * @behaviour Glass on the floating height, held at the top of the scrolling content while the rows
23
+ * pass under it; inside a titled `TableCard`, or with `surface="plain"`, the plain row. A search
24
+ * alone is always the plain row.
25
+ * @words The label names the collection's tools: *Customer filters*.
26
+ * @access `role="toolbar"` named by `label`.
27
+ */
15
28
  export declare function CollectionToolbar({ label, controls, search, actions, status, surface, ...props }: CollectionToolbarProps): import("react").JSX.Element;
16
29
  //# sourceMappingURL=collection-toolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection-toolbar.d.ts","sourceRoot":"","sources":["../../src/components/collection-toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,wBAAwB,CAAC,KAAK,CAAC,EAC/B,UAAU,GAAG,WAAW,CACzB,GAAG;IACF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B,CAAC;AAeF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAiB,EACjB,GAAG,KAAK,EACT,EAAE,sBAAsB,+BAwCxB"}
1
+ {"version":3,"file":"collection-toolbar.d.ts","sourceRoot":"","sources":["../../src/components/collection-toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,wBAAwB,CAAC,KAAK,CAAC,EAC/B,UAAU,GAAG,WAAW,CACzB,GAAG;IACF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC7B,CAAC;AAeF;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAiB,EACjB,GAAG,KAAK,EACT,EAAE,sBAAsB,+BAwCxB"}
@@ -10,6 +10,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  const ON_PAGE = "sticky top-3 z-20 mb-3 rounded-lg p-2 nc-glass nc-elevation-floating";
11
11
  const PLAIN = "relative mb-3";
12
12
  const IN_CARD = "[[data-slot=table-card-toolbar]_&]:relative [[data-slot=table-card-toolbar]_&]:z-auto [[data-slot=table-card-toolbar]_&]:mb-0 [[data-slot=table-card-toolbar]_&]:rounded-none [[data-slot=table-card-toolbar]_&]:p-0 [[data-slot=table-card-toolbar]_&]:pb-4 [[data-slot=table-card-toolbar]_&]:[background:none] [[data-slot=table-card-toolbar]_&]:[backdrop-filter:none] [[data-slot=table-card-toolbar]_&]:[box-shadow:none]";
13
+ /**
14
+ * A collection's control bar: its filters, its search and its sort, over its own rows.
15
+ *
16
+ * @family Compositions
17
+ * @when The row above a collection's rows that holds its search, filters, sort and status.
18
+ * @instead A page action never sits here: it is `PageActions` on the title's row. Finding across
19
+ * the product is `CommandDialog`.
20
+ * @behaviour Glass on the floating height, held at the top of the scrolling content while the rows
21
+ * pass under it; inside a titled `TableCard`, or with `surface="plain"`, the plain row. A search
22
+ * alone is always the plain row.
23
+ * @words The label names the collection's tools: *Customer filters*.
24
+ * @access `role="toolbar"` named by `label`.
25
+ */
13
26
  export function CollectionToolbar({ label, controls, search, actions, status, surface = "glass", ...props }) {
14
27
  // A search alone is the plain row: a search box never stands in a box of its
15
28
  // own (DESIGN.md "Menus and commands").
@@ -1,5 +1,22 @@
1
1
  import * as React from "react";
2
2
  import { Combobox as ComboboxPrimitive } from "@base-ui/react/combobox";
3
+ /**
4
+ * Type to find one value, or several, in a known set.
5
+ *
6
+ * @family Choices
7
+ * @when Typing to find in a known set: assign an Agent, choose a time zone, add several Agents at
8
+ * once with `multiple`.
9
+ * @instead A short fixed list is a `Select`. Free text is an `Input`. Narrowing a collection is
10
+ * `CollectionFilters`.
11
+ * @behaviour Typing filters the list. Loading and no match are different states; the chosen value
12
+ * stays while results load. Enter picks the highlighted row and never submits the form around it.
13
+ * Clear empties the box and keeps focus there. With `multiple`, each choice is a chip with its own
14
+ * remove; Backspace in an empty box removes the last.
15
+ * @words The hint is scoped: *Find an Agent*. No match quotes the query: *No Agent matches “Xy”.* A
16
+ * chip reads as the record's name.
17
+ * @access A visible label; combobox and listbox roles; each chip's remove is named: *Remove Acme
18
+ * Quotes*. An Agent's orb in a row is a decorative mark beside her name.
19
+ */
3
20
  declare const Combobox: typeof ComboboxPrimitive.Root;
4
21
  declare function ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props): React.JSX.Element;
5
22
  declare function ComboboxTrigger({ className, children, ...props }: ComboboxPrimitive.Trigger.Props): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAaxE,QAAA,MAAM,QAAQ,+BAAyB,CAAC;AAExC,iBAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,qBAEjE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,qBAW1F;AAeD,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAgB,EAChB,WAAkB,EAClB,SAAiB,EACjB,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,qBAoBA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,IAAe,EACf,UAAc,EACd,KAAe,EACf,WAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAC9B,IAAI,CACF,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAClC,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAC3D,qBAwBF;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,qBAW1E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,qBAoBpF;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,qBAI5E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,qBAQjF;AAED,iBAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,qBAE3E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,qBAW5E;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,SAAS,CAAC,KAAK,qBAQpF;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,qBAAqB,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,qBAW7F;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,qBAsBA;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,qBAQjF;AAED,iBAAS,iBAAiB,2CAEzB;AAED,OAAO,EACL,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,CAAC"}
1
+ {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,23 @@ import { cn } from "../lib/utils.js";
6
6
  import { Button } from "./button.js";
7
7
  import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, } from "./input-group.js";
8
8
  import { ChevronDownIcon, XIcon, CheckIcon } from "lucide-react";
9
+ /**
10
+ * Type to find one value, or several, in a known set.
11
+ *
12
+ * @family Choices
13
+ * @when Typing to find in a known set: assign an Agent, choose a time zone, add several Agents at
14
+ * once with `multiple`.
15
+ * @instead A short fixed list is a `Select`. Free text is an `Input`. Narrowing a collection is
16
+ * `CollectionFilters`.
17
+ * @behaviour Typing filters the list. Loading and no match are different states; the chosen value
18
+ * stays while results load. Enter picks the highlighted row and never submits the form around it.
19
+ * Clear empties the box and keeps focus there. With `multiple`, each choice is a chip with its own
20
+ * remove; Backspace in an empty box removes the last.
21
+ * @words The hint is scoped: *Find an Agent*. No match quotes the query: *No Agent matches “Xy”.* A
22
+ * chip reads as the record's name.
23
+ * @access A visible label; combobox and listbox roles; each chip's remove is named: *Remove Acme
24
+ * Quotes*. An Agent's orb in a row is a decorative mark beside her name.
25
+ */
9
26
  const Combobox = ComboboxPrimitive.Root;
10
27
  function ComboboxValue({ ...props }) {
11
28
  return _jsx(ComboboxPrimitive.Value, { "data-slot": "combobox-value", ...props });
@@ -20,7 +37,7 @@ function ComboboxInput({ className, children, disabled = false, showTrigger = tr
20
37
  return (_jsxs(InputGroup, { className: cn("w-auto", className), children: [_jsx(ComboboxPrimitive.Input, { render: _jsx(InputGroupInput, { disabled: disabled }), ...props }), _jsxs(InputGroupAddon, { align: "inline-end", children: [showTrigger && (_jsx(InputGroupButton, { size: "icon-xs", variant: "ghost", render: _jsx(ComboboxTrigger, {}), "data-slot": "input-group-button", className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent", disabled: disabled })), showClear && _jsx(ComboboxClear, { disabled: disabled })] }), children] }));
21
38
  }
22
39
  function ComboboxContent({ className, side = "bottom", sideOffset = 6, align = "start", alignOffset = 0, anchor, ...props }) {
23
- return (_jsx(ComboboxPrimitive.Portal, { children: _jsx(ComboboxPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, anchor: anchor, className: "isolate z-50", children: _jsx(ComboboxPrimitive.Popup, { "data-slot": "combobox-content", "data-chips": !!anchor, className: cn("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] overflow-hidden rounded-lg border-0 nc-glass text-popover-foreground nc-elevation-floating data-[chips=true]:min-w-(--anchor-width) *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-control-height *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none", anchoredOverlayMotion, className), ...props }) }) }));
40
+ return (_jsx(ComboboxPrimitive.Portal, { children: _jsx(ComboboxPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, anchor: anchor, className: "isolate z-50", children: _jsx(ComboboxPrimitive.Popup, { "data-slot": "combobox-content", "data-chips": !!anchor, className: cn("pointer-events-auto", "group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] overflow-hidden rounded-lg border-0 nc-glass text-popover-foreground nc-elevation-floating data-[chips=true]:min-w-(--anchor-width) *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-control-height *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none", anchoredOverlayMotion, className), ...props }) }) }));
24
41
  }
25
42
  function ComboboxList({ className, ...props }) {
26
43
  return (_jsx(ComboboxPrimitive.List, { "data-slot": "combobox-list", className: cn("no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-nadicode-xxs data-empty:p-0", className), ...props }));