@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
@@ -1,4 +1,18 @@
1
1
  import { Slider as SliderPrimitive } from "@base-ui/react/slider";
2
+ /**
3
+ * A bounded number chosen by a thumb's position on a track.
4
+ *
5
+ * @family Inputs
6
+ * @when A bounded number where the position matters more than the digit: a limit, a share.
7
+ * @instead An exact number is `Input`; pair the two when precision counts. A few named levels are
8
+ * radios.
9
+ * @behaviour A 4 px track, the filled part in ink, a 12 px thumb edged in the input grey. Hover,
10
+ * drag and focus outline the thumb. Arrows step, Page Up and Down jump, Home and End reach the
11
+ * bounds. The thumb's touch target is 44 px.
12
+ * @words The label names the quantity; the current value and its unit are always written beside it
13
+ * (*€ 400*). The help states the bounds and the step.
14
+ * @access `role="slider"` with a name, min, max and `aria-valuetext` carrying the unit.
15
+ */
2
16
  declare function Slider({ className, defaultValue, value, min, max, ...props }: SliderPrimitive.Root.Props): import("react").JSX.Element;
3
17
  export { Slider };
4
18
  //# sourceMappingURL=slider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlE,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,GAAO,EACP,GAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,+BAsC5B;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlE;;;;;;;;;;;;;GAaG;AACH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,GAAO,EACP,GAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,+BAsC5B;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,6 +1,20 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Slider as SliderPrimitive } from "@base-ui/react/slider";
3
3
  import { cn } from "../lib/utils.js";
4
+ /**
5
+ * A bounded number chosen by a thumb's position on a track.
6
+ *
7
+ * @family Inputs
8
+ * @when A bounded number where the position matters more than the digit: a limit, a share.
9
+ * @instead An exact number is `Input`; pair the two when precision counts. A few named levels are
10
+ * radios.
11
+ * @behaviour A 4 px track, the filled part in ink, a 12 px thumb edged in the input grey. Hover,
12
+ * drag and focus outline the thumb. Arrows step, Page Up and Down jump, Home and End reach the
13
+ * bounds. The thumb's touch target is 44 px.
14
+ * @words The label names the quantity; the current value and its unit are always written beside it
15
+ * (*€ 400*). The help states the bounds and the step.
16
+ * @access `role="slider"` with a name, min, max and `aria-valuetext` carrying the unit.
17
+ */
4
18
  function Slider({ className, defaultValue, value, min = 0, max = 100, ...props }) {
5
19
  const _values = Array.isArray(value)
6
20
  ? value
@@ -1,4 +1,22 @@
1
1
  import { type ToasterProps } from "sonner";
2
+ /**
3
+ * The one place toasts appear, mounted once per product.
4
+ *
5
+ * @family Feedback
6
+ * @when One acknowledgement of an action the person took, when the result is not already visible
7
+ * where they are looking; and the Undo of a reversible removal. Mount it once; raise toasts through
8
+ * `toast`.
9
+ * @instead For a failure that must stay, use `MessageNotice` by the control. For unsaved work,
10
+ * failed payment or lost access never a toast alone. For a condition use a banner.
11
+ * @behaviour Tone `success`, `info`, `warning`, `error`; mark in the deep step. The first action
12
+ * with a handler becomes its one button. Undo only where a safe rollback exists. A toast that stays
13
+ * up shows the waiting line, not a spinner.
14
+ * @words Completion is noun, past participle: *Mailbox removed*, *Agent created*, paired one to one
15
+ * with its button *Remove mailbox*. No *successfully*, no exclamation.
16
+ * @access Announced by the toaster's live region. Never the only route to recovery: the record's
17
+ * own row keeps its controls. Undo is reachable by keyboard (Alt+T moves focus to the toasts) while
18
+ * it shows.
19
+ */
2
20
  declare const Toaster: ({ ...props }: ToasterProps) => import("react").JSX.Element;
3
21
  export { Toaster };
4
22
  //# sourceMappingURL=sonner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sonner.d.ts","sourceRoot":"","sources":["../../src/components/sonner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAM9D,QAAA,MAAM,OAAO,GAAI,cAAc,YAAY,gCAiC1C,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"sonner.d.ts","sourceRoot":"","sources":["../../src/components/sonner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAM9D;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,OAAO,GAAI,cAAc,YAAY,gCAiC1C,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -5,6 +5,24 @@ import { Toaster as Sonner } from "sonner";
5
5
  import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon } from "lucide-react";
6
6
  import { WaitingLine } from "./waiting-line.js";
7
7
  import { isThemeMode } from "../lib/theme-mode.js";
8
+ /**
9
+ * The one place toasts appear, mounted once per product.
10
+ *
11
+ * @family Feedback
12
+ * @when One acknowledgement of an action the person took, when the result is not already visible
13
+ * where they are looking; and the Undo of a reversible removal. Mount it once; raise toasts through
14
+ * `toast`.
15
+ * @instead For a failure that must stay, use `MessageNotice` by the control. For unsaved work,
16
+ * failed payment or lost access never a toast alone. For a condition use a banner.
17
+ * @behaviour Tone `success`, `info`, `warning`, `error`; mark in the deep step. The first action
18
+ * with a handler becomes its one button. Undo only where a safe rollback exists. A toast that stays
19
+ * up shows the waiting line, not a spinner.
20
+ * @words Completion is noun, past participle: *Mailbox removed*, *Agent created*, paired one to one
21
+ * with its button *Remove mailbox*. No *successfully*, no exclamation.
22
+ * @access Announced by the toaster's live region. Never the only route to recovery: the record's
23
+ * own row keeps its controls. Undo is reachable by keyboard (Alt+T moves focus to the toasts) while
24
+ * it shows.
25
+ */
8
26
  const Toaster = ({ ...props }) => {
9
27
  const { theme = "system" } = useTheme();
10
28
  return (_jsx(Sonner, { theme: isThemeMode(theme) ? theme : "system", className: "toaster group", icons: {
@@ -7,8 +7,19 @@ type StatusBadgeProps = Omit<ComponentProps<"span">, "children"> & {
7
7
  since?: string;
8
8
  };
9
9
  /**
10
- * A status is a mark and a word in one of five tones. The caller
11
- * owns which tone a state takes and the wording; this owns how the tone looks.
10
+ * A record's state: a mark and a word in one of five tones.
11
+ *
12
+ * @family Status
13
+ * @when A record's state, when it sets the row apart: failed, waiting on a person, a step in
14
+ * motion, paused, connected. Gray is every terminal state that needs no action.
15
+ * @instead For a category (an installation, a partner) use `Tag`. For a control reporting its own
16
+ * action use `ActionStatus`. For a mark beside a word that already names the state, `StatusDot`.
17
+ * @behaviour Still: a status never moves and is never a button. Each app keeps one value-to-tone
18
+ * map in one module; nothing else picks a status colour. A healthy record shows no badge.
19
+ * @words A state, not a verb: *Failed*, *Waiting for you*. Sentence case, one to three words, no
20
+ * trailing ellipsis. Italian runs a third longer: *In attesa di te*.
21
+ * @access The word is the name; the mark is `aria-hidden` and repeats the tone as a shape, so
22
+ * colour never carries the state alone. Not focusable.
12
23
  */
13
24
  declare function StatusBadge({ tone, label, since, className, ...props }: StatusBadgeProps): import("react").JSX.Element;
14
25
  export { StatusBadge, type StatusBadgeProps, type StatusBadgeTone };
@@ -1 +1 @@
1
- {"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../src/components/status-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAM5C,KAAK,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAsB7E,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACjE,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,iBAAS,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAkBjF;AAED,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../src/components/status-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAM5C,KAAK,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAoB7E,KAAK,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACjE,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,iBAAS,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAmBjF;AAED,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,CAAC"}
@@ -2,12 +2,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CircleCheck, CircleDot, CirclePause, CircleX, Clock } from "lucide-react";
3
3
  import { Badge } from "./badge.js";
4
4
  import { cn } from "../lib/utils.js";
5
- const VARIANT_BY_TONE = {
6
- success: "green",
7
- warning: "amber",
8
- danger: "red",
9
- info: "blue",
10
- neutral: "gray",
5
+ const FILL_BY_TONE = {
6
+ success: { name: "green", classes: "bg-success-soft text-success-soft-foreground" },
7
+ warning: { name: "amber", classes: "bg-warning-soft text-warning-soft-foreground" },
8
+ danger: { name: "red", classes: "bg-destructive-soft text-destructive-soft-foreground" },
9
+ info: { name: "blue", classes: "bg-info-soft text-info-soft-foreground" },
10
+ neutral: { name: "gray", classes: "bg-accent text-muted-foreground" },
11
11
  };
12
12
  // One mark per tone, always the same one: the tone said again as a shape, so a
13
13
  // status reads without colour. The info dot is filled and still.
@@ -19,11 +19,23 @@ const MARK_BY_TONE = {
19
19
  neutral: CirclePause,
20
20
  };
21
21
  /**
22
- * A status is a mark and a word in one of five tones. The caller
23
- * owns which tone a state takes and the wording; this owns how the tone looks.
22
+ * A record's state: a mark and a word in one of five tones.
23
+ *
24
+ * @family Status
25
+ * @when A record's state, when it sets the row apart: failed, waiting on a person, a step in
26
+ * motion, paused, connected. Gray is every terminal state that needs no action.
27
+ * @instead For a category (an installation, a partner) use `Tag`. For a control reporting its own
28
+ * action use `ActionStatus`. For a mark beside a word that already names the state, `StatusDot`.
29
+ * @behaviour Still: a status never moves and is never a button. Each app keeps one value-to-tone
30
+ * map in one module; nothing else picks a status colour. A healthy record shows no badge.
31
+ * @words A state, not a verb: *Failed*, *Waiting for you*. Sentence case, one to three words, no
32
+ * trailing ellipsis. Italian runs a third longer: *In attesa di te*.
33
+ * @access The word is the name; the mark is `aria-hidden` and repeats the tone as a shape, so
34
+ * colour never carries the state alone. Not focusable.
24
35
  */
25
36
  function StatusBadge({ tone, label, since, className, ...props }) {
26
37
  const Mark = MARK_BY_TONE[tone];
27
- return (_jsxs(Badge, { variant: VARIANT_BY_TONE[tone], className: cn("has-data-[icon=inline-start]:pl-2", className), ...props, children: [_jsx(Mark, { "aria-hidden": "true", "data-icon": "inline-start" }), label, since ? (_jsx("span", { className: "tabular-nums", "data-slot": "status-badge-since", children: since })) : null] }));
38
+ const fill = FILL_BY_TONE[tone];
39
+ return (_jsxs(Badge, { className: cn(fill.classes, "has-data-[icon=inline-start]:pl-2", className), "data-variant": fill.name, ...props, children: [_jsx(Mark, { "aria-hidden": "true", "data-icon": "inline-start" }), label, since ? (_jsx("span", { className: "tabular-nums", "data-slot": "status-badge-since", children: since })) : null] }));
28
40
  }
29
41
  export { StatusBadge };
@@ -3,6 +3,18 @@ type StatusTone = "good" | "muted" | "warn" | "bad";
3
3
  interface StatusDotProps extends ComponentProps<"span"> {
4
4
  tone: StatusTone;
5
5
  }
6
+ /**
7
+ * A small still dot beside a word that already names the state.
8
+ *
9
+ * @family Status
10
+ * @when A small mark in dense chrome, beside a word that already names the state: a channel, a
11
+ * machine in a list.
12
+ * @instead A status that stands alone is a `StatusBadge`. Something in motion is the waiting line
13
+ * or an Agent's orb; the dot has no info tone.
14
+ * @behaviour Still; never pulses. Tones are `good`, `muted`, `warn`, `bad`, at full strength.
15
+ * @words None of its own. The word beside it says the state.
16
+ * @access Always `aria-hidden`. If the word is missing, the state is missing.
17
+ */
6
18
  declare function StatusDot({ className, tone, ...props }: StatusDotProps): import("react").JSX.Element;
7
19
  export { StatusDot };
8
20
  export type { StatusTone };
@@ -1 +1 @@
1
- {"version":3,"file":"status-dot.d.ts","sourceRoot":"","sources":["../../src/components/status-dot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAQpD,UAAU,cAAe,SAAQ,cAAc,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,UAAU,CAAC;CAClB;AACD,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAU/D;AACD,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"status-dot.d.ts","sourceRoot":"","sources":["../../src/components/status-dot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAQpD,UAAU,cAAe,SAAQ,cAAc,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,UAAU,CAAC;CAClB;AACD;;;;;;;;;;;GAWG;AACH,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAU/D;AACD,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -6,6 +6,18 @@ const TONE_BG_CLASS = {
6
6
  warn: "bg-warning",
7
7
  bad: "bg-destructive",
8
8
  };
9
+ /**
10
+ * A small still dot beside a word that already names the state.
11
+ *
12
+ * @family Status
13
+ * @when A small mark in dense chrome, beside a word that already names the state: a channel, a
14
+ * machine in a list.
15
+ * @instead A status that stands alone is a `StatusBadge`. Something in motion is the waiting line
16
+ * or an Agent's orb; the dot has no info tone.
17
+ * @behaviour Still; never pulses. Tones are `good`, `muted`, `warn`, `bad`, at full strength.
18
+ * @words None of its own. The word beside it says the state.
19
+ * @access Always `aria-hidden`. If the word is missing, the state is missing.
20
+ */
9
21
  function StatusDot({ className, tone, ...props }) {
10
22
  return (_jsx("span", { "aria-hidden": "true", className: cn("inline-block size-1.5 rounded-full", TONE_BG_CLASS[tone], className), "data-slot": "status-dot", "data-tone": tone, ...props }));
11
23
  }
@@ -5,6 +5,20 @@ interface StatusRowProps extends Omit<React.ComponentProps<"div">, "onClick" | "
5
5
  trailing?: ReactNode;
6
6
  trailingVisible?: boolean;
7
7
  }
8
+ /**
9
+ * One line of a status panel: a mark, what it is, and controls that show on hover.
10
+ *
11
+ * @family Data
12
+ * @when Lines inside a side panel that report what is running or connected, grouped under a
13
+ * collapsible `StatusSection`.
14
+ * @instead A collection's row is `RecordList`'s. A row with a sentence and actions is `Item`.
15
+ * @behaviour When `onActivate` is given the whole row is one button that takes the accent hover;
16
+ * the trailing controls show on hover or focus unless `trailingVisible`. A `StatusSection` starts
17
+ * collapsed.
18
+ * @words The row names the thing; the section's label is a plural noun.
19
+ * @access An activatable row is `role="button"`, reached by Tab and run by Enter or Space. The
20
+ * section's toggle exposes `aria-expanded`.
21
+ */
8
22
  declare function StatusRow({ children, className, leading, onActivate, trailing, trailingVisible, ...props }: StatusRowProps): import("react").JSX.Element;
9
23
  interface StatusSectionProps {
10
24
  accessory?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"status-row.d.ts","sourceRoot":"","sources":["../../src/components/status-row.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtF,UAAU,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACzF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,iBAAS,SAAS,CAAC,EACjB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,eAAuB,EACvB,GAAG,KAAK,EACT,EAAE,cAAc,+BAyChB;AAED,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,gBAAuB,EACvB,IAAI,EACJ,KAAK,GACN,EAAE,kBAAkB,+BAwBpB;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"status-row.d.ts","sourceRoot":"","sources":["../../src/components/status-row.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtF,UAAU,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACzF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,iBAAS,SAAS,CAAC,EACjB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,eAAuB,EACvB,GAAG,KAAK,EACT,EAAE,cAAc,+BAyChB;AAED,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,gBAAuB,EACvB,IAAI,EACJ,KAAK,GACN,EAAE,kBAAkB,+BAwBpB;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC"}
@@ -3,6 +3,20 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
4
  import { ChevronRightIcon } from "lucide-react";
5
5
  import { cn } from "../lib/utils.js";
6
+ /**
7
+ * One line of a status panel: a mark, what it is, and controls that show on hover.
8
+ *
9
+ * @family Data
10
+ * @when Lines inside a side panel that report what is running or connected, grouped under a
11
+ * collapsible `StatusSection`.
12
+ * @instead A collection's row is `RecordList`'s. A row with a sentence and actions is `Item`.
13
+ * @behaviour When `onActivate` is given the whole row is one button that takes the accent hover;
14
+ * the trailing controls show on hover or focus unless `trailingVisible`. A `StatusSection` starts
15
+ * collapsed.
16
+ * @words The row names the thing; the section's label is a plural noun.
17
+ * @access An activatable row is `role="button"`, reached by Tab and run by Enter or Space. The
18
+ * section's toggle exposes `aria-expanded`.
19
+ */
6
20
  function StatusRow({ children, className, leading, onActivate, trailing, trailingVisible = false, ...props }) {
7
21
  return (_jsxs("div", { className: cn("group/status-row flex min-h-6 items-center gap-2 rounded-sm px-1.5 py-1", onActivate && "cursor-pointer hover:bg-accent", className), "data-slot": "status-row", onClick: onActivate, onKeyDown: onActivate
8
22
  ? (event) => {
@@ -1,4 +1,19 @@
1
1
  import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
2
+ /**
3
+ * A setting that is on or off.
4
+ *
5
+ * @family Choices
6
+ * @when A setting that is either on or off, inside a settings section that saves.
7
+ * @instead Choosing or agreeing to something is a `Checkbox`. A tool button that stays pressed is a
8
+ * `Toggle`. Choosing between named values is a `RadioGroup`.
9
+ * @behaviour Off is the input grey, on is ink; the thumb travels 16 px. Space flips it. On a
10
+ * settings page the change waits for the section's Save, which lights up; only Theme and Language
11
+ * in the account menu apply at once. A failed save leaves the switch showing the true state.
12
+ * @words The label names what on means: *Approvals*, with help saying when. Never *Enable
13
+ * approvals*, and no On/Off text beside the switch.
14
+ * @access `role="switch"` with `aria-checked`. The name is the visible label and stays the same in
15
+ * both states. `sm` only inside a dense row.
16
+ */
2
17
  declare function Switch({ className, size, ...props }: SwitchPrimitive.Root.Props & {
3
18
  size?: "sm" | "default";
4
19
  }): import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlE,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,+BAiBA;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/components/switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlE;;;;;;;;;;;;;;GAcG;AACH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACzB,+BAiBA;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,6 +1,21 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
3
3
  import { cn } from "../lib/utils.js";
4
+ /**
5
+ * A setting that is on or off.
6
+ *
7
+ * @family Choices
8
+ * @when A setting that is either on or off, inside a settings section that saves.
9
+ * @instead Choosing or agreeing to something is a `Checkbox`. A tool button that stays pressed is a
10
+ * `Toggle`. Choosing between named values is a `RadioGroup`.
11
+ * @behaviour Off is the input grey, on is ink; the thumb travels 16 px. Space flips it. On a
12
+ * settings page the change waits for the section's Save, which lights up; only Theme and Language
13
+ * in the account menu apply at once. A failed save leaves the switch showing the true state.
14
+ * @words The label names what on means: *Approvals*, with help saying when. Never *Enable
15
+ * approvals*, and no On/Off text beside the switch.
16
+ * @access `role="switch"` with `aria-checked`. The name is the visible label and stays the same in
17
+ * both states. `sm` only inside a dense row.
18
+ */
4
19
  function Switch({ className, size = "default", ...props }) {
5
20
  return (_jsx(SwitchPrimitive.Root, { "data-slot": "switch", "data-size": size, className: cn("nc-transition-paint peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent p-px after:absolute after:top-1/2 after:left-1/2 after:size-touch-target after:-translate-x-1/2 after:-translate-y-1/2 aria-invalid:border-destructive data-[size=default]:h-5 data-[size=default]:w-9 data-[size=sm]:h-4 data-[size=sm]:w-7 data-checked:bg-primary data-unchecked:bg-input data-disabled:cursor-not-allowed data-disabled:opacity-50 [@media(hover:hover)_and_(pointer:fine)]:after:hidden", className), ...props, children: _jsx(SwitchPrimitive.Thumb, { "data-slot": "switch-thumb", className: "nc-transition-transform pointer-events-none block rounded-full bg-background ring-0 group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-full group-data-[size=sm]/switch:data-checked:translate-x-full group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0" }) }));
6
21
  }
@@ -2,9 +2,22 @@ import * as React from "react";
2
2
  import { type CardSurface } from "./card.js";
3
3
  /**
4
4
  * The frame a collection's table sits in: a heading, the collection's own
5
- * toolbar under it, the table, a labelled total, and the recessed footer
6
- * strip. The Portal's DataTable and Nadia's record sections draw this one
7
- * frame, so a registry card ends the same way in both products.
5
+ * toolbar under it, the table, a labelled total, and the recessed footer strip.
6
+ *
7
+ * The Portal's DataTable and Nadia's record sections draw this one frame, so a
8
+ * registry card ends the same way in both products.
9
+ *
10
+ * @family Data
11
+ * @when A table of records in a card: its heading, its own toolbar, the table, a labelled total and
12
+ * the recessed footer strip.
13
+ * @instead An entity collection that is the page's whole job is `CollectionPage`. A chart is
14
+ * `ChartCard`. One object's facts are `SettingsFactsSection`.
15
+ * @behaviour The heading, the toolbar and a separator come first when given; the summary row is a
16
+ * labelled total under the table; the footer strip holds the hint on the left and the count or
17
+ * paging on the right.
18
+ * @words The title names the collection. The footer is a count or the paging; the summary is a
19
+ * labelled total. Never a help sentence in the footer.
20
+ * @access A `section` whose title is an `h2`; the summary is a `dl`.
8
21
  */
9
22
  declare function TableCard({ title, description, actions, toolbar, summary, footer, footerHint, children, className, surface, ...props }: Omit<React.ComponentProps<"section">, "title"> & {
10
23
  title?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"table-card.d.ts","sourceRoot":"","sources":["../../src/components/table-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAA4D,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGpG;;;;;GAKG;AACH,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAClD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wCAAwC;IACxC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,qBA8CA;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"table-card.d.ts","sourceRoot":"","sources":["../../src/components/table-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAA4D,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGpG;;;;;;;;;;;;;;;;;;GAkBG;AACH,iBAAS,SAAS,CAAC,EACjB,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAClD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2FAA2F;IAC3F,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,wCAAwC;IACxC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,qBA8CA;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -5,9 +5,22 @@ import { Card, CardAction, CardDescription, CardHeader, CardTitle } from "./card
5
5
  import { Separator } from "./separator.js";
6
6
  /**
7
7
  * The frame a collection's table sits in: a heading, the collection's own
8
- * toolbar under it, the table, a labelled total, and the recessed footer
9
- * strip. The Portal's DataTable and Nadia's record sections draw this one
10
- * frame, so a registry card ends the same way in both products.
8
+ * toolbar under it, the table, a labelled total, and the recessed footer strip.
9
+ *
10
+ * The Portal's DataTable and Nadia's record sections draw this one frame, so a
11
+ * registry card ends the same way in both products.
12
+ *
13
+ * @family Data
14
+ * @when A table of records in a card: its heading, its own toolbar, the table, a labelled total and
15
+ * the recessed footer strip.
16
+ * @instead An entity collection that is the page's whole job is `CollectionPage`. A chart is
17
+ * `ChartCard`. One object's facts are `SettingsFactsSection`.
18
+ * @behaviour The heading, the toolbar and a separator come first when given; the summary row is a
19
+ * labelled total under the table; the footer strip holds the hint on the left and the count or
20
+ * paging on the right.
21
+ * @words The title names the collection. The footer is a count or the paging; the summary is a
22
+ * labelled total. Never a help sentence in the footer.
23
+ * @access A `section` whose title is an `h2`; the summary is a `dl`.
11
24
  */
12
25
  function TableCard({ title, description, actions, toolbar, summary, footer, footerHint, children, className, surface = "resting", ...props }) {
13
26
  const heading = title || description || actions;
@@ -1,7 +1,29 @@
1
1
  import type { ReactElement } from "react";
2
+ type TableReading = string | number | ReactElement;
2
3
  export type TableValueProps = {
3
- value: string | number | ReactElement | null | undefined;
4
+ state?: "read";
5
+ value: TableReading | null | undefined;
6
+ /** What a missing value means, read to a screen reader behind the dash: "Not reported". */
4
7
  missingLabel: string;
8
+ /** The word set after a reading that is out of date, such as "Stale"; absent while it is current. */
9
+ staleLabel?: string;
10
+ } | {
11
+ state: "failed";
12
+ /** The catalogue's words for a read that failed: "Couldn't read". */
13
+ failedLabel: string;
14
+ } | {
15
+ state: "loading";
5
16
  };
6
- export declare function TableValue({ value, missingLabel }: TableValueProps): string | number | import("react").JSX.Element;
17
+ /**
18
+ * One cell's value in a table, in each state a reading can be in.
19
+ *
20
+ * @family Data
21
+ * @when Every cell of a `DataTable` whose reading can be missing, zero, out of date, unreadable or still loading.
22
+ * @instead A whole table that failed to read is `EmptyState kind="failed"`; a figure on its own is a `KpiCard`.
23
+ * @behaviour Five states that never collapse into a dash: unknown (a muted dash), zero (the figure "0"), stale (the reading, then the stale word), failed (the warning mark and its words) and loading (a still 64 × 12 placeholder). A real value, `0` included, is shown as it is.
24
+ * @words `missingLabel` says what the absence means ("Not reported", never "N/A" or "None"); `staleLabel` is one word ("Stale"); `failedLabel` says the read failed ("Couldn't read").
25
+ * @access The dash is hidden and `missingLabel` is read in its place; the warning mark is hidden beside its words; the placeholder is decorative, and the table is `aria-busy` while it loads.
26
+ */
27
+ export declare function TableValue(props: TableValueProps): string | number | import("react").JSX.Element;
28
+ export {};
7
29
  //# sourceMappingURL=table-value.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-value.d.ts","sourceRoot":"","sources":["../../src/components/table-value.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,eAAe,iDASlE"}
1
+ {"version":3,"file":"table-value.d.ts","sourceRoot":"","sources":["../../src/components/table-value.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAK1C,KAAK,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AAEnD,MAAM,MAAM,eAAe,GACvB;IACE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,2FAA2F;IAC3F,YAAY,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,KAAK,EAAE,QAAQ,CAAC;IAChB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzB;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,iDAoChD"}
@@ -1,6 +1,28 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function TableValue({ value, missingLabel }) {
3
- if (value !== null && value !== undefined && value !== "")
2
+ import { CircleAlert } from "lucide-react";
3
+ import { Skeleton } from "./skeleton.js";
4
+ /**
5
+ * One cell's value in a table, in each state a reading can be in.
6
+ *
7
+ * @family Data
8
+ * @when Every cell of a `DataTable` whose reading can be missing, zero, out of date, unreadable or still loading.
9
+ * @instead A whole table that failed to read is `EmptyState kind="failed"`; a figure on its own is a `KpiCard`.
10
+ * @behaviour Five states that never collapse into a dash: unknown (a muted dash), zero (the figure "0"), stale (the reading, then the stale word), failed (the warning mark and its words) and loading (a still 64 × 12 placeholder). A real value, `0` included, is shown as it is.
11
+ * @words `missingLabel` says what the absence means ("Not reported", never "N/A" or "None"); `staleLabel` is one word ("Stale"); `failedLabel` says the read failed ("Couldn't read").
12
+ * @access The dash is hidden and `missingLabel` is read in its place; the warning mark is hidden beside its words; the placeholder is decorative, and the table is `aria-busy` while it loads.
13
+ */
14
+ export function TableValue(props) {
15
+ if (props.state === "loading") {
16
+ return _jsx(Skeleton, { className: "h-3 w-16" });
17
+ }
18
+ if (props.state === "failed") {
19
+ return (_jsxs("span", { "data-slot": "table-failed-value", className: "inline-flex items-center gap-1 text-caption text-warning-soft-foreground", children: [_jsx(CircleAlert, { "aria-hidden": "true", className: "size-3 shrink-0", strokeWidth: 1.25 }), props.failedLabel] }));
20
+ }
21
+ const { value, missingLabel, staleLabel } = props;
22
+ if (value === null || value === undefined || value === "") {
23
+ return (_jsxs("span", { "data-slot": "table-missing-value", className: "text-muted-foreground", children: [_jsx("span", { "aria-hidden": "true", children: "\u2014" }), _jsx("span", { className: "sr-only", children: missingLabel })] }));
24
+ }
25
+ if (staleLabel === undefined)
4
26
  return value;
5
- return (_jsxs("span", { "data-slot": "table-missing-value", className: "text-muted-foreground", children: [_jsx("span", { "aria-hidden": "true", children: "\u2014" }), _jsx("span", { className: "sr-only", children: missingLabel })] }));
27
+ return (_jsxs("span", { "data-slot": "table-stale-value", className: "inline-flex items-baseline gap-1.5", children: [value, _jsx("span", { className: "text-caption text-muted-foreground", children: staleLabel })] }));
6
28
  }
@@ -1,5 +1,21 @@
1
1
  import * as React from "react";
2
2
  import { tableCompactLayouts, type TableCompactLayout } from "./table-layouts.js";
3
+ /**
4
+ * The native table primitive every comparison table is drawn with.
5
+ *
6
+ * @family Data
7
+ * @when A fixed table a composition draws itself: a summary inside a card, a list of plan limits. A
8
+ * table of records is `DataTable`, which draws this one.
9
+ * @instead Records with sorting, paging and an empty state are `DataTable`. A descriptive list is
10
+ * `ItemGroup`. One object's facts are `ObjectFacts`.
11
+ * @behaviour Headings visible; numbers trail in tabular figures. Row hover takes `accent`; headers
12
+ * and footers never highlight. `TableDetailRow` and `tableCompactLayouts` move facts into a detail
13
+ * row on a narrow card instead of scrolling sideways.
14
+ * @words Headings are nouns with their unit: *Cost (€)*, *Tokens*. Italian headings run a third
15
+ * longer and never wrap.
16
+ * @access A native `table` with a caption or `aria-label`; `th scope="col"`. A missing value is
17
+ * `TableValue`'s hidden dash, never blank.
18
+ */
3
19
  declare function Table({ className, compactDetails, density, variant, interactive, ...props }: React.ComponentProps<"table"> & {
4
20
  compactDetails?: TableCompactLayout;
5
21
  density?: "default" | "comfortable";
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,cAAc,EACd,OAAmB,EACnB,OAAmB,EACnB,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;IACjC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,qBAyBA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAWxE;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW/E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW1E;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG;IAC9B,6GAA6G;IAC7G,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,qBAYA;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,KAAK,EACL,MAAmB,GACpB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,EAAE,CAAC;CACL,qBA8BA;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,qBAQ7E;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,CAAC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAE1F;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,cAAc,EACd,OAAmB,EACnB,OAAmB,EACnB,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;IACjC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,qBA0BA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAQ1E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAWxE;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW/E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAW1E;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG;IAC9B,6GAA6G;IAC7G,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC,qBAYA;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAWrE;AAED,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,KAAK,EACL,MAAmB,GACpB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,EAAE,CAAC;CACL,qBA8BA;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,qBAQ7E;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,CAAC"}
@@ -2,8 +2,24 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { cn } from "../lib/utils.js";
4
4
  import { tableCompactLayouts } from "./table-layouts.js";
5
+ /**
6
+ * The native table primitive every comparison table is drawn with.
7
+ *
8
+ * @family Data
9
+ * @when A fixed table a composition draws itself: a summary inside a card, a list of plan limits. A
10
+ * table of records is `DataTable`, which draws this one.
11
+ * @instead Records with sorting, paging and an empty state are `DataTable`. A descriptive list is
12
+ * `ItemGroup`. One object's facts are `ObjectFacts`.
13
+ * @behaviour Headings visible; numbers trail in tabular figures. Row hover takes `accent`; headers
14
+ * and footers never highlight. `TableDetailRow` and `tableCompactLayouts` move facts into a detail
15
+ * row on a narrow card instead of scrolling sideways.
16
+ * @words Headings are nouns with their unit: *Cost (€)*, *Tokens*. Italian headings run a third
17
+ * longer and never wrap.
18
+ * @access A native `table` with a caption or `aria-label`; `th scope="col"`. A missing value is
19
+ * `TableValue`'s hidden dash, never blank.
20
+ */
5
21
  function Table({ className, compactDetails, density = "default", variant = "default", interactive = false, ...props }) {
6
- return (_jsx("div", { "data-slot": "table-container", className: cn("relative w-full overflow-x-auto", compactDetails && "@container/table", variant === "bordered" && "rounded-sm border border-border"), children: _jsx("table", { "data-slot": "table", "data-density": density, "data-variant": variant, "data-interactive": interactive, className: cn("group/table w-full caption-bottom text-sm", variant === "striped" && "bg-card", className, compactDetails && tableCompactLayouts[compactDetails].table), ...props }) }));
22
+ return (_jsx("div", { "data-slot": "table-container", className: cn("relative w-full overflow-x-auto", compactDetails && "@container/table", variant === "bordered" && "rounded-sm border border-border"), children: _jsx("table", { "data-slot": "table", "data-compact-details": compactDetails, "data-density": density, "data-variant": variant, "data-interactive": interactive, className: cn("group/table w-full caption-bottom text-sm", variant === "striped" && "bg-card", className, compactDetails && tableCompactLayouts[compactDetails].table), ...props }) }));
7
23
  }
8
24
  function TableHeader({ className, ...props }) {
9
25
  return (_jsx("thead", { "data-slot": "table-header", className: cn("bg-recessed [&_tr]:h-9 [&_tr]:border-b", className), ...props }));
@@ -2,6 +2,19 @@ import * as React from "react";
2
2
  import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  import { type VariantProps } from "class-variance-authority";
5
+ /**
6
+ * Panels of one surface that switch in place.
7
+ *
8
+ * @family Navigation
9
+ * @when Sibling views of one object that switch in place inside one surface.
10
+ * @instead Views with their own URL are `TabsNav`. A choice that changes a value is a `RadioGroup`
11
+ * or `ToggleGroup`. A stable destination belongs in the `Sidebar`. A tab never opens a new scope.
12
+ * @behaviour One treatment among siblings, chosen through `variant`, never a page border. Arrow
13
+ * keys move, one tab stop. The underline fades on `confirm`, 180 ms.
14
+ * @words Nouns, one or two words: *Overview*, *Installations*. Italian (*Installazioni*) scrolls,
15
+ * never wraps or truncates.
16
+ * @access `tablist`, `tab`, `tabpanel` with `aria-selected`.
17
+ */
5
18
  declare function Tabs({ className, orientation, ...props }: TabsPrimitive.Root.Props): React.JSX.Element;
6
19
  declare const tabsListVariants: (props?: ({
7
20
  variant?: "line" | "default" | null | undefined;
@@ -9,6 +22,20 @@ declare const tabsListVariants: (props?: ({
9
22
  declare function TabsList({ className, variant, ...props }: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>): React.JSX.Element;
10
23
  declare function TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props): React.JSX.Element;
11
24
  declare function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props): React.JSX.Element;
25
+ /**
26
+ * Sibling views of one object, each with its own URL, under the top bar.
27
+ *
28
+ * @family Navigation
29
+ * @when Sibling views of one object under the top bar, when each view has its own URL (an object's
30
+ * sections), with `TabsLink` for each.
31
+ * @instead Panels that switch in place are `Tabs`. A stable destination belongs in the `Sidebar`.
32
+ * An object's ancestry is the `Breadcrumb`.
33
+ * @behaviour Overflow scrolls sideways and brings the current link into view. The current link
34
+ * takes the underline.
35
+ * @words Nouns, one or two words: *Overview*, *Installations*. Italian scrolls, never wraps or
36
+ * truncates.
37
+ * @access A labelled `nav` of links with `aria-current="page"` on the current one.
38
+ */
12
39
  declare function TabsNav({ className, children, variant, ...props }: React.ComponentProps<"nav"> & VariantProps<typeof tabsListVariants>): React.JSX.Element;
13
40
  declare function TabsLink({ current, className, render, ...props }: useRender.ComponentProps<"a"> & {
14
41
  current?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,iBAAS,IAAI,CAAC,EAAE,SAAS,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,qBAU1F;AAED,QAAA,MAAM,gBAAgB;;8EAarB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,qBASlE;AAKD,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,qBAepE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,qBAQtE;AAED,iBAAS,OAAO,CAAC,EACf,SAAS,EACT,QAAQ,EACR,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,qBA2BrE;AAED,iBAAS,QAAQ,CAAC,EAChB,OAAe,EACf,SAAS,EACT,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAoBvD;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;;;;;;;;;GAYG;AACH,iBAAS,IAAI,CAAC,EAAE,SAAS,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,qBAU1F;AAED,QAAA,MAAM,gBAAgB;;8EAarB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,qBASlE;AAKD,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,qBAepE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,qBAQtE;AAED;;;;;;;;;;;;;GAaG;AACH,iBAAS,OAAO,CAAC,EACf,SAAS,EACT,QAAQ,EACR,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,qBA2BrE;AAED,iBAAS,QAAQ,CAAC,EAChB,OAAe,EACf,SAAS,EACT,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAoBvD;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC"}