@lar-works/design-system 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/README.md +5 -1
  2. package/dist/actions/Button.d.ts +39 -1
  3. package/dist/actions/Button.js +39 -9
  4. package/dist/actions/Button.js.map +1 -1
  5. package/dist/actions/ButtonLink.d.ts +5 -1
  6. package/dist/actions/ButtonLink.js +28 -2
  7. package/dist/actions/ButtonLink.js.map +1 -1
  8. package/dist/actions/ButtonRecipes.js +7 -0
  9. package/dist/actions/ButtonRecipes.js.map +1 -0
  10. package/dist/actions/IconButton.d.ts +2 -2
  11. package/dist/actions/IconButton.js +1 -1
  12. package/dist/actions/IconButton.js.map +1 -1
  13. package/dist/actions/ThemeSwitch.js +1 -1
  14. package/dist/board/ActivityLine.d.ts +36 -0
  15. package/dist/board/ActivityLine.js +144 -0
  16. package/dist/board/ActivityLine.js.map +1 -0
  17. package/dist/board/ActivityTrack.d.ts +11 -0
  18. package/dist/board/ActivityTrack.js +25 -0
  19. package/dist/board/ActivityTrack.js.map +1 -0
  20. package/dist/board/AddItem.d.ts +82 -0
  21. package/dist/board/AddItem.js +185 -0
  22. package/dist/board/AddItem.js.map +1 -0
  23. package/dist/board/Archive.d.ts +21 -0
  24. package/dist/board/Archive.js +63 -0
  25. package/dist/board/Archive.js.map +1 -0
  26. package/dist/board/Attention.d.ts +66 -0
  27. package/dist/board/Attention.js +122 -0
  28. package/dist/board/Attention.js.map +1 -0
  29. package/dist/board/BoardShell.d.ts +16 -0
  30. package/dist/board/BoardShell.js +35 -0
  31. package/dist/board/BoardShell.js.map +1 -0
  32. package/dist/board/BoardTitleBar.d.ts +50 -0
  33. package/dist/board/BoardTitleBar.js +125 -0
  34. package/dist/board/BoardTitleBar.js.map +1 -0
  35. package/dist/board/ButtonKinds.d.ts +24 -0
  36. package/dist/board/ButtonKinds.js +19 -0
  37. package/dist/board/ButtonKinds.js.map +1 -0
  38. package/dist/board/Cleanup.d.ts +8 -0
  39. package/dist/board/Cleanup.js +15 -0
  40. package/dist/board/Cleanup.js.map +1 -0
  41. package/dist/board/Counters.d.ts +101 -0
  42. package/dist/board/Counters.js +202 -0
  43. package/dist/board/Counters.js.map +1 -0
  44. package/dist/board/DataAttributes.d.ts +6 -0
  45. package/dist/board/Dependencies.d.ts +17 -0
  46. package/dist/board/Dependencies.js +44 -0
  47. package/dist/board/Dependencies.js.map +1 -0
  48. package/dist/board/Desk.d.ts +52 -0
  49. package/dist/board/Desk.js +130 -0
  50. package/dist/board/Desk.js.map +1 -0
  51. package/dist/board/Dossier.d.ts +100 -0
  52. package/dist/board/Dossier.js +194 -0
  53. package/dist/board/Dossier.js.map +1 -0
  54. package/dist/board/Filters.d.ts +33 -0
  55. package/dist/board/Filters.js +64 -0
  56. package/dist/board/Filters.js.map +1 -0
  57. package/dist/board/ItemDetails.d.ts +167 -0
  58. package/dist/board/ItemDetails.js +339 -0
  59. package/dist/board/ItemDetails.js.map +1 -0
  60. package/dist/board/ItemDialog.d.ts +73 -0
  61. package/dist/board/ItemDialog.js +140 -0
  62. package/dist/board/ItemDialog.js.map +1 -0
  63. package/dist/board/ItemParts.d.ts +42 -0
  64. package/dist/board/ItemParts.js +82 -0
  65. package/dist/board/ItemParts.js.map +1 -0
  66. package/dist/board/ItemProgress.d.ts +56 -0
  67. package/dist/board/ItemProgress.js +138 -0
  68. package/dist/board/ItemProgress.js.map +1 -0
  69. package/dist/board/List.d.ts +65 -0
  70. package/dist/board/List.js +118 -0
  71. package/dist/board/List.js.map +1 -0
  72. package/dist/board/LoadingScreen.d.ts +38 -0
  73. package/dist/board/LoadingScreen.js +74 -0
  74. package/dist/board/LoadingScreen.js.map +1 -0
  75. package/dist/board/NeedsYou.d.ts +13 -0
  76. package/dist/board/NeedsYou.js +31 -0
  77. package/dist/board/NeedsYou.js.map +1 -0
  78. package/dist/board/Onboarding.d.ts +53 -0
  79. package/dist/board/Onboarding.js +122 -0
  80. package/dist/board/Onboarding.js.map +1 -0
  81. package/dist/board/PartsList.d.ts +60 -0
  82. package/dist/board/PartsList.js +115 -0
  83. package/dist/board/PartsList.js.map +1 -0
  84. package/dist/board/ProjectIcon.d.ts +51 -0
  85. package/dist/board/ProjectIcon.js +120 -0
  86. package/dist/board/ProjectIcon.js.map +1 -0
  87. package/dist/board/PullRequests.d.ts +43 -0
  88. package/dist/board/PullRequests.js +83 -0
  89. package/dist/board/PullRequests.js.map +1 -0
  90. package/dist/board/RowStyles.js +14 -0
  91. package/dist/board/RowStyles.js.map +1 -0
  92. package/dist/board/Settings.d.ts +54 -0
  93. package/dist/board/Settings.js +112 -0
  94. package/dist/board/Settings.js.map +1 -0
  95. package/dist/board/Slices.d.ts +32 -0
  96. package/dist/board/Slices.js +88 -0
  97. package/dist/board/Slices.js.map +1 -0
  98. package/dist/board/SourceIcon.d.ts +12 -0
  99. package/dist/board/SourceIcon.js +24 -0
  100. package/dist/board/SourceIcon.js.map +1 -0
  101. package/dist/board/StagePane.d.ts +43 -0
  102. package/dist/board/StagePane.js +97 -0
  103. package/dist/board/StagePane.js.map +1 -0
  104. package/dist/board/StageRow.d.ts +141 -0
  105. package/dist/board/StageRow.js +287 -0
  106. package/dist/board/StageRow.js.map +1 -0
  107. package/dist/board/StageTrack.d.ts +18 -0
  108. package/dist/board/StageTrack.js +38 -0
  109. package/dist/board/StageTrack.js.map +1 -0
  110. package/dist/board/StartControls.d.ts +30 -0
  111. package/dist/board/StartControls.js +51 -0
  112. package/dist/board/StartControls.js.map +1 -0
  113. package/dist/board/StatusColors.d.ts +5 -0
  114. package/dist/board/StatusColors.js +17 -0
  115. package/dist/board/StatusColors.js.map +1 -0
  116. package/dist/board/StatusGlyph.d.ts +18 -0
  117. package/dist/board/StatusGlyph.js +51 -0
  118. package/dist/board/StatusGlyph.js.map +1 -0
  119. package/dist/board/Threads.d.ts +13 -0
  120. package/dist/board/Threads.js +35 -0
  121. package/dist/board/Threads.js.map +1 -0
  122. package/dist/board/TrackerLabels.d.ts +27 -0
  123. package/dist/board/TrackerLabels.js +56 -0
  124. package/dist/board/TrackerLabels.js.map +1 -0
  125. package/dist/board/UpdatePill.d.ts +52 -0
  126. package/dist/board/UpdatePill.js +188 -0
  127. package/dist/board/UpdatePill.js.map +1 -0
  128. package/dist/board/Vocabulary.d.ts +56 -0
  129. package/dist/board/Vocabulary.js +104 -0
  130. package/dist/board/Vocabulary.js.map +1 -0
  131. package/dist/board/Warnings.d.ts +35 -0
  132. package/dist/board/Warnings.js +85 -0
  133. package/dist/board/Warnings.js.map +1 -0
  134. package/dist/board/WorkMap.d.ts +136 -0
  135. package/dist/board/WorkMap.js +274 -0
  136. package/dist/board/WorkMap.js.map +1 -0
  137. package/dist/board/index.d.ts +42 -0
  138. package/dist/collections/CollectionState.d.ts +10 -1
  139. package/dist/collections/CollectionState.js +12 -5
  140. package/dist/collections/CollectionState.js.map +1 -1
  141. package/dist/collections/ResultList.js +1 -1
  142. package/dist/collections/ScrollRow.js +1 -1
  143. package/dist/collections/VirtualList.js +1 -1
  144. package/dist/display/Avatar.d.ts +5 -2
  145. package/dist/display/Avatar.js +2 -2
  146. package/dist/display/Avatar.js.map +1 -1
  147. package/dist/display/Badge.d.ts +6 -1
  148. package/dist/display/Badge.js +9 -4
  149. package/dist/display/Badge.js.map +1 -1
  150. package/dist/display/CheckList.js +1 -1
  151. package/dist/display/Comment.d.ts +12 -0
  152. package/dist/display/Comment.js +39 -0
  153. package/dist/display/Comment.js.map +1 -0
  154. package/dist/display/CopyButton.d.ts +10 -2
  155. package/dist/display/CopyButton.js +29 -16
  156. package/dist/display/CopyButton.js.map +1 -1
  157. package/dist/display/Diagram.d.ts +17 -0
  158. package/dist/display/Diagram.js +49 -0
  159. package/dist/display/Diagram.js.map +1 -0
  160. package/dist/display/ImagePicker.js +1 -1
  161. package/dist/display/InfoBox.js +2 -2
  162. package/dist/display/InsetPanel.d.ts +3 -1
  163. package/dist/display/InsetPanel.js +7 -4
  164. package/dist/display/InsetPanel.js.map +1 -1
  165. package/dist/display/ItemAction.js +2 -2
  166. package/dist/display/LabelChip.d.ts +26 -0
  167. package/dist/display/LabelChip.js +41 -0
  168. package/dist/display/LabelChip.js.map +1 -0
  169. package/dist/display/LabelTint.js +60 -0
  170. package/dist/display/LabelTint.js.map +1 -0
  171. package/dist/display/Person.d.ts +5 -0
  172. package/dist/display/Person.js +19 -0
  173. package/dist/display/Person.js.map +1 -0
  174. package/dist/display/PropertySheet.js +1 -1
  175. package/dist/display/RadioChoice.d.ts +9 -2
  176. package/dist/display/RadioChoice.js +5 -1
  177. package/dist/display/RadioChoice.js.map +1 -1
  178. package/dist/display/RatingLink.js +1 -1
  179. package/dist/display/RichText.d.ts +12 -0
  180. package/dist/display/RichText.js +94 -0
  181. package/dist/display/RichText.js.map +1 -0
  182. package/dist/display/RowList.js +1 -1
  183. package/dist/display/index.d.ts +6 -1
  184. package/dist/feedback/Alert.js +1 -1
  185. package/dist/feedback/AsyncState.js +1 -1
  186. package/dist/feedback/DismissButton.d.ts +12 -0
  187. package/dist/feedback/DismissButton.js +20 -0
  188. package/dist/feedback/DismissButton.js.map +1 -0
  189. package/dist/feedback/ErrorNotification.js +2 -0
  190. package/dist/feedback/ErrorNotification.js.map +1 -1
  191. package/dist/feedback/FormResult.d.ts +16 -0
  192. package/dist/feedback/FormResult.js +30 -0
  193. package/dist/feedback/FormResult.js.map +1 -0
  194. package/dist/feedback/LiveRegion.d.ts +7 -0
  195. package/dist/feedback/LiveRegion.js +15 -0
  196. package/dist/feedback/LiveRegion.js.map +1 -0
  197. package/dist/feedback/Loading.d.ts +19 -0
  198. package/dist/feedback/Loading.js +63 -0
  199. package/dist/feedback/Loading.js.map +1 -0
  200. package/dist/feedback/Notifications.d.ts +35 -1
  201. package/dist/feedback/Notifications.js +196 -4
  202. package/dist/feedback/Notifications.js.map +1 -1
  203. package/dist/feedback/Progress.d.ts +15 -0
  204. package/dist/feedback/Progress.js +38 -0
  205. package/dist/feedback/Progress.js.map +1 -0
  206. package/dist/feedback/ProgressStatusRow.js +1 -1
  207. package/dist/feedback/StatusIndicator.d.ts +6 -1
  208. package/dist/feedback/StatusIndicator.js +19 -5
  209. package/dist/feedback/StatusIndicator.js.map +1 -1
  210. package/dist/feedback/index.d.ts +8 -4
  211. package/dist/forms/Checkbox.js +1 -1
  212. package/dist/forms/ColorSwatches.d.ts +21 -0
  213. package/dist/forms/ColorSwatches.js +26 -0
  214. package/dist/forms/ColorSwatches.js.map +1 -0
  215. package/dist/forms/FormSection.d.ts +68 -6
  216. package/dist/forms/FormSection.js +139 -8
  217. package/dist/forms/FormSection.js.map +1 -1
  218. package/dist/forms/HiddenField.d.ts +6 -0
  219. package/dist/forms/HiddenField.js +13 -0
  220. package/dist/forms/HiddenField.js.map +1 -0
  221. package/dist/forms/Input.d.ts +12 -2
  222. package/dist/forms/Input.js +10 -3
  223. package/dist/forms/Input.js.map +1 -1
  224. package/dist/forms/LabelPicker.d.ts +43 -0
  225. package/dist/forms/LabelPicker.js +107 -0
  226. package/dist/forms/LabelPicker.js.map +1 -0
  227. package/dist/forms/MarkdownEditor.d.ts +21 -0
  228. package/dist/forms/MarkdownEditor.js +175 -0
  229. package/dist/forms/MarkdownEditor.js.map +1 -0
  230. package/dist/forms/MarkdownToolbar.js +204 -0
  231. package/dist/forms/MarkdownToolbar.js.map +1 -0
  232. package/dist/forms/OptionSelect.d.ts +30 -9
  233. package/dist/forms/OptionSelect.js +53 -13
  234. package/dist/forms/OptionSelect.js.map +1 -1
  235. package/dist/forms/Select.d.ts +4 -1
  236. package/dist/forms/Select.js +3 -1
  237. package/dist/forms/Select.js.map +1 -1
  238. package/dist/forms/Switch.d.ts +4 -1
  239. package/dist/forms/Switch.js +5 -2
  240. package/dist/forms/Switch.js.map +1 -1
  241. package/dist/forms/TagInput.js +1 -1
  242. package/dist/forms/index.d.ts +7 -3
  243. package/dist/foundations/AmbientMotion.d.ts +2 -0
  244. package/dist/foundations/AmbientMotion.js +39 -0
  245. package/dist/foundations/AmbientMotion.js.map +1 -0
  246. package/dist/foundations/DesignSystemProvider.d.ts +34 -0
  247. package/dist/foundations/DesignSystemProvider.js +26 -1
  248. package/dist/foundations/DesignSystemProvider.js.map +1 -1
  249. package/dist/foundations/index.d.ts +2 -1
  250. package/dist/icons/BrandIcons.d.ts +8 -2
  251. package/dist/icons/BrandIcons.js +14 -3
  252. package/dist/icons/BrandIcons.js.map +1 -1
  253. package/dist/icons/dynamic.d.ts +2 -0
  254. package/dist/icons/dynamic.js +1 -0
  255. package/dist/icons/index.d.ts +2 -2
  256. package/dist/icons/index.js +1 -1
  257. package/dist/icons.d.ts +2 -2
  258. package/dist/icons.js +1 -1
  259. package/dist/index.d.ts +71 -10
  260. package/dist/index.js +78 -21
  261. package/dist/layout/Site.js +1 -1
  262. package/dist/layout/TitleBar.js +1 -1
  263. package/dist/layout/index.d.ts +2 -2
  264. package/dist/layout/index.js +3 -3
  265. package/dist/layout/toolbar/CommandPaletteTrigger.d.ts +17 -2
  266. package/dist/layout/toolbar/CommandPaletteTrigger.js +89 -6
  267. package/dist/layout/toolbar/CommandPaletteTrigger.js.map +1 -1
  268. package/dist/layout/toolbar/TriggerFit.js +56 -0
  269. package/dist/layout/toolbar/TriggerFit.js.map +1 -0
  270. package/dist/navigation/CollectionBrowseSelector.js +1 -1
  271. package/dist/navigation/CollectionViewToggle.d.ts +26 -0
  272. package/dist/navigation/CollectionViewToggle.js +54 -23
  273. package/dist/navigation/CollectionViewToggle.js.map +1 -1
  274. package/dist/navigation/DrilldownBrowseSelector.js +1 -1
  275. package/dist/navigation/FolderSelector.js +2 -2
  276. package/dist/navigation/SortMenu.d.ts +10 -0
  277. package/dist/navigation/SortMenu.js +33 -0
  278. package/dist/navigation/SortMenu.js.map +1 -0
  279. package/dist/navigation/index.d.ts +3 -2
  280. package/dist/overlays/CommandPalette.d.ts +38 -4
  281. package/dist/overlays/CommandPalette.js +140 -54
  282. package/dist/overlays/CommandPalette.js.map +1 -1
  283. package/dist/overlays/Drawer.js +1 -1
  284. package/dist/overlays/DropdownMenu.d.ts +7 -1
  285. package/dist/overlays/DropdownMenu.js +13 -2
  286. package/dist/overlays/DropdownMenu.js.map +1 -1
  287. package/dist/overlays/HelpTip.d.ts +8 -0
  288. package/dist/overlays/HelpTip.js +29 -0
  289. package/dist/overlays/HelpTip.js.map +1 -0
  290. package/dist/overlays/ImageViewer.js +2 -2
  291. package/dist/overlays/Modal.d.ts +5 -0
  292. package/dist/overlays/Modal.js +17 -2
  293. package/dist/overlays/Modal.js.map +1 -1
  294. package/dist/overlays/ModalExpandButton.d.ts +18 -0
  295. package/dist/overlays/ModalExpandButton.js +43 -0
  296. package/dist/overlays/ModalExpandButton.js.map +1 -0
  297. package/dist/overlays/Popover.d.ts +2 -1
  298. package/dist/overlays/Popover.js +1 -0
  299. package/dist/overlays/Popover.js.map +1 -1
  300. package/dist/overlays/index.d.ts +4 -2
  301. package/dist/showcase/Cards.js +1 -1
  302. package/dist/showcase/FeatureRow.js +1 -1
  303. package/dist/showcase/PhotoSearchConcept.js +1 -1
  304. package/dist/showcase/ProductBand.js +1 -1
  305. package/dist/showcase/Status.js +1 -1
  306. package/dist/typography/Code.d.ts +18 -0
  307. package/dist/typography/Code.js +24 -0
  308. package/dist/typography/Code.js.map +1 -0
  309. package/dist/typography/Link.d.ts +7 -2
  310. package/dist/typography/Link.js +15 -5
  311. package/dist/typography/Link.js.map +1 -1
  312. package/dist/typography/Typography.d.ts +19 -1
  313. package/dist/typography/Typography.js +11 -3
  314. package/dist/typography/Typography.js.map +1 -1
  315. package/dist/typography/index.d.ts +3 -3
  316. package/package.json +26 -3
  317. package/src/actions/Button.tsx +78 -11
  318. package/src/actions/ButtonLink.tsx +34 -0
  319. package/src/actions/ButtonRecipes.ts +10 -0
  320. package/src/actions/IconButton.tsx +7 -4
  321. package/src/board/ActivityLine.tsx +176 -0
  322. package/src/board/ActivityTrack.tsx +23 -0
  323. package/src/board/AddItem.tsx +259 -0
  324. package/src/board/Archive.tsx +75 -0
  325. package/src/board/Attention.tsx +135 -0
  326. package/src/board/BoardShell.tsx +30 -0
  327. package/src/board/BoardTitleBar.tsx +167 -0
  328. package/src/board/ButtonKinds.ts +32 -0
  329. package/src/board/Cleanup.tsx +19 -0
  330. package/src/board/Counters.tsx +224 -0
  331. package/src/board/DataAttributes.ts +3 -0
  332. package/src/board/Dependencies.tsx +49 -0
  333. package/src/board/Desk.tsx +155 -0
  334. package/src/board/Dossier.tsx +262 -0
  335. package/src/board/Filters.tsx +85 -0
  336. package/src/board/ItemDetails.tsx +435 -0
  337. package/src/board/ItemDialog.tsx +179 -0
  338. package/src/board/ItemParts.tsx +128 -0
  339. package/src/board/ItemProgress.tsx +164 -0
  340. package/src/board/List.tsx +154 -0
  341. package/src/board/LoadingScreen.tsx +78 -0
  342. package/src/board/NeedsYou.tsx +30 -0
  343. package/src/board/Onboarding.tsx +124 -0
  344. package/src/board/PartsList.tsx +160 -0
  345. package/src/board/ProjectIcon.tsx +172 -0
  346. package/src/board/PullRequests.tsx +106 -0
  347. package/src/board/RowStyles.ts +17 -0
  348. package/src/board/Settings.tsx +124 -0
  349. package/src/board/Slices.tsx +103 -0
  350. package/src/board/SourceIcon.tsx +33 -0
  351. package/src/board/StagePane.tsx +128 -0
  352. package/src/board/StageRow.tsx +320 -0
  353. package/src/board/StageTrack.tsx +61 -0
  354. package/src/board/StartControls.tsx +77 -0
  355. package/src/board/StatusColors.ts +28 -0
  356. package/src/board/StatusGlyph.tsx +70 -0
  357. package/src/board/Threads.tsx +38 -0
  358. package/src/board/TrackerLabels.tsx +75 -0
  359. package/src/board/UpdatePill.tsx +222 -0
  360. package/src/board/Vocabulary.tsx +155 -0
  361. package/src/board/Warnings.tsx +83 -0
  362. package/src/board/WorkMap.tsx +436 -0
  363. package/src/board/base.css +121 -0
  364. package/src/board/button-kinds.css +8 -0
  365. package/src/board/index.ts +224 -0
  366. package/src/board/items.css +75 -0
  367. package/src/board/loading-screen.css +171 -0
  368. package/src/board/rows.css +180 -0
  369. package/src/board/title-bar.css +56 -0
  370. package/src/board/tokens.css +52 -0
  371. package/src/board.css +19 -0
  372. package/src/collections/CollectionState.tsx +20 -7
  373. package/src/display/Avatar.tsx +6 -3
  374. package/src/display/Badge.tsx +25 -3
  375. package/src/display/Comment.tsx +26 -0
  376. package/src/display/CopyButton.tsx +48 -18
  377. package/src/display/Diagram.tsx +59 -0
  378. package/src/display/InsetPanel.tsx +4 -1
  379. package/src/display/LabelChip.tsx +73 -0
  380. package/src/display/LabelTint.ts +72 -0
  381. package/src/display/Person.tsx +11 -0
  382. package/src/display/RadioChoice.tsx +11 -2
  383. package/src/display/RichText.tsx +114 -0
  384. package/src/display/index.ts +5 -0
  385. package/src/feedback/DismissButton.tsx +28 -0
  386. package/src/feedback/ErrorNotification.ts +3 -0
  387. package/src/feedback/FormResult.tsx +50 -0
  388. package/src/feedback/LiveRegion.tsx +10 -0
  389. package/src/feedback/Loading.tsx +75 -0
  390. package/src/feedback/Notifications.tsx +267 -2
  391. package/src/feedback/Progress.tsx +44 -0
  392. package/src/feedback/StatusIndicator.tsx +34 -3
  393. package/src/feedback/index.ts +12 -2
  394. package/src/forms/ColorSwatches.tsx +50 -0
  395. package/src/forms/FormSection.tsx +245 -10
  396. package/src/forms/HiddenField.tsx +4 -0
  397. package/src/forms/Input.tsx +26 -4
  398. package/src/forms/LabelPicker.tsx +140 -0
  399. package/src/forms/MarkdownEditor.tsx +283 -0
  400. package/src/forms/MarkdownToolbar.tsx +267 -0
  401. package/src/forms/OptionSelect.tsx +110 -25
  402. package/src/forms/Select.tsx +20 -13
  403. package/src/forms/Switch.tsx +16 -2
  404. package/src/forms/index.ts +16 -2
  405. package/src/foundations/AmbientMotion.ts +51 -0
  406. package/src/foundations/DesignSystemProvider.tsx +19 -0
  407. package/src/foundations/index.ts +1 -0
  408. package/src/foundations/theme.css +64 -0
  409. package/src/icons/BrandIcons.tsx +12 -3
  410. package/src/icons/dynamic.ts +4 -0
  411. package/src/icons/index.ts +1 -1
  412. package/src/index.ts +2 -1
  413. package/src/layout/index.ts +1 -1
  414. package/src/layout/toolbar/CommandPaletteTrigger.tsx +187 -31
  415. package/src/layout/toolbar/TriggerFit.ts +84 -0
  416. package/src/navigation/CollectionViewToggle.tsx +94 -24
  417. package/src/navigation/SortMenu.tsx +41 -0
  418. package/src/navigation/index.ts +2 -1
  419. package/src/overlays/CommandPalette.tsx +190 -60
  420. package/src/overlays/DropdownMenu.tsx +12 -1
  421. package/src/overlays/HelpTip.tsx +29 -0
  422. package/src/overlays/Modal.tsx +23 -0
  423. package/src/overlays/ModalExpandButton.tsx +48 -0
  424. package/src/overlays/Popover.tsx +3 -1
  425. package/src/overlays/index.ts +9 -1
  426. package/src/showcase.css +6 -0
  427. package/src/styles.css +9 -1
  428. package/src/typography/Code.tsx +24 -0
  429. package/src/typography/Link.tsx +19 -10
  430. package/src/typography/Typography.tsx +25 -2
  431. package/src/typography/index.ts +1 -1
  432. package/dist/feedback/index.js +0 -11
  433. package/dist/typography/index.js +0 -4
@@ -0,0 +1,73 @@
1
+ import { DataAttributes } from "./DataAttributes.js";
2
+ import { ReactNode } from "react";
3
+ /**
4
+ * The summary under the dialog's title, a row each: `line` (the item's source, repository, status and age), its
5
+ * `parent`, its `kind` and its ticket `actions`.
6
+ */
7
+ export declare function ItemSummary({ line, parent, kind, actions, ...data }: {
8
+ line: ReactNode;
9
+ parent?: ReactNode;
10
+ kind: ReactNode;
11
+ actions: ReactNode;
12
+ } & DataAttributes): import("react").JSX.Element;
13
+ /** The summary's status word, in the text colour. */
14
+ export declare function SummaryStatus({ children }: {
15
+ children: ReactNode;
16
+ }): import("react").JSX.Element;
17
+ /** The summary's age, which a narrow dialog leaves out. */
18
+ export declare function SummaryAge({ children }: {
19
+ children: ReactNode;
20
+ }): import("react").JSX.Element;
21
+ /** What blocks the item, as a small chip in the danger colours. */
22
+ export declare function SummaryBlocked({ children }: {
23
+ children: ReactNode;
24
+ }): import("react").JSX.Element;
25
+ /** The item's parent: `prefix` ("Part of"), then its `name`, linked when `href` opens it. */
26
+ export declare function SummaryParent({ prefix, name, href, ...data }: {
27
+ prefix: string;
28
+ name: string;
29
+ href?: string | undefined;
30
+ } & DataAttributes): import("react").JSX.Element;
31
+ /** A labelled control the summary opens in place, such as Attach a ticket's picker: `label` over it. */
32
+ export declare function SummaryPanel({ label, children }: {
33
+ label: string;
34
+ children: ReactNode;
35
+ }): import("react").JSX.Element;
36
+ /**
37
+ * The dialog body's column: the progress, notes, meta area, record, description, comments and sidebar, one under the
38
+ * other; when it `fill`s, a column whose description and comments take what the rest leave.
39
+ */
40
+ export declare function ItemDialogBody({ fill, children, ...data }: {
41
+ fill: boolean;
42
+ children: ReactNode;
43
+ } & DataAttributes): import("react").JSX.Element;
44
+ /**
45
+ * The main column with the sidebar beside it once the dialog is 45rem wide, when there is an `aside`. Filling, the
46
+ * main column's open editor takes the height the rest leaves.
47
+ */
48
+ export declare function ItemDialogColumns({ aside, fill, children }: {
49
+ aside: boolean;
50
+ fill: boolean;
51
+ children: ReactNode;
52
+ }): import("react").JSX.Element;
53
+ /** The sidebar beside the main column, ruled off from it once there is room. */
54
+ export declare function ItemDialogAside({ children }: {
55
+ children: ReactNode;
56
+ }): import("react").JSX.Element;
57
+ /** A warning about the item, such as why it is paused, in the warning panel: `icon` (a status glyph) before it when
58
+ * given. */
59
+ export declare function WarningNote({ icon, children, ...data }: {
60
+ icon?: ReactNode;
61
+ children: ReactNode;
62
+ } & DataAttributes): import("react").JSX.Element;
63
+ /** Why the factory can't write to the item's tracker, announced, and the `action` that checks again. */
64
+ export declare function AccessNotice({ message, action }: {
65
+ message: string;
66
+ action: ReactNode;
67
+ }): import("react").JSX.Element;
68
+ /** A group of the footer's actions: the `leading` ones that move the item, in small text, or the rest at its end. */
69
+ export declare function DialogActions({ presentation, children }: {
70
+ presentation?: 'leading' | 'trailing';
71
+ children: ReactNode;
72
+ }): import("react").JSX.Element;
73
+ //# sourceMappingURL=ItemDialog.d.ts.map
@@ -0,0 +1,140 @@
1
+ import { WARNING_PANEL } from "./RowStyles.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ // src/board/ItemDialog.tsx
4
+ /**
5
+ * The summary under the dialog's title, a row each: `line` (the item's source, repository, status and age), its
6
+ * `parent`, its `kind` and its ticket `actions`.
7
+ */
8
+ function ItemSummary({ line, parent, kind, actions, ...data }) {
9
+ return /* @__PURE__ */ jsxs("div", {
10
+ ...data,
11
+ className: "border-base-300 text-base-700 @container grid shrink-0 gap-1 border-b px-5 pb-3 text-xs sm:px-6",
12
+ children: [
13
+ /* @__PURE__ */ jsx("div", {
14
+ className: "flex min-w-0 flex-wrap items-center gap-2",
15
+ children: line
16
+ }),
17
+ parent,
18
+ /* @__PURE__ */ jsx("div", {
19
+ className: "flex flex-wrap items-center gap-2",
20
+ children: kind
21
+ }),
22
+ /* @__PURE__ */ jsx("div", {
23
+ className: "flex flex-wrap items-start gap-2",
24
+ children: actions
25
+ })
26
+ ]
27
+ });
28
+ }
29
+ /** The summary's status word, in the text colour. */
30
+ function SummaryStatus({ children }) {
31
+ return /* @__PURE__ */ jsx("span", {
32
+ className: "text-base-content font-medium",
33
+ children
34
+ });
35
+ }
36
+ /** The summary's age, which a narrow dialog leaves out. */
37
+ function SummaryAge({ children }) {
38
+ return /* @__PURE__ */ jsx("span", {
39
+ className: "min-w-0 truncate @max-[30rem]:hidden",
40
+ children
41
+ });
42
+ }
43
+ /** What blocks the item, as a small chip in the danger colours. */
44
+ function SummaryBlocked({ children }) {
45
+ return /* @__PURE__ */ jsx("span", {
46
+ className: "rounded bg-(--error-surface) px-1.5 text-(--error-foreground)",
47
+ children
48
+ });
49
+ }
50
+ /** The item's parent: `prefix` ("Part of"), then its `name`, linked when `href` opens it. */
51
+ function SummaryParent({ prefix, name, href, ...data }) {
52
+ return /* @__PURE__ */ jsxs("p", {
53
+ ...data,
54
+ className: "m-0 min-w-0 wrap-anywhere",
55
+ children: [
56
+ prefix,
57
+ " ",
58
+ href ? /* @__PURE__ */ jsx("a", {
59
+ href,
60
+ target: "_blank",
61
+ rel: "noopener",
62
+ className: "underline",
63
+ children: name
64
+ }) : name
65
+ ]
66
+ });
67
+ }
68
+ /** A labelled control the summary opens in place, such as Attach a ticket's picker: `label` over it. */
69
+ function SummaryPanel({ label, children }) {
70
+ return /* @__PURE__ */ jsxs("section", {
71
+ "aria-label": label,
72
+ className: "grid gap-1.5 pt-1",
73
+ children: [/* @__PURE__ */ jsx("span", {
74
+ className: "text-base-content text-xs font-medium",
75
+ children: label
76
+ }), children]
77
+ });
78
+ }
79
+ /**
80
+ * The dialog body's column: the progress, notes, meta area, record, description, comments and sidebar, one under the
81
+ * other; when it `fill`s, a column whose description and comments take what the rest leave.
82
+ */
83
+ function ItemDialogBody({ fill, children, ...data }) {
84
+ return /* @__PURE__ */ jsx("div", {
85
+ ...data,
86
+ className: `@container gap-3 pt-2 ${fill ? "flex min-h-0 flex-1 flex-col" : "grid grid-cols-[minmax(0,1fr)]"}`,
87
+ children
88
+ });
89
+ }
90
+ /**
91
+ * The main column with the sidebar beside it once the dialog is 45rem wide, when there is an `aside`. Filling, the
92
+ * main column's open editor takes the height the rest leaves.
93
+ */
94
+ function ItemDialogColumns({ aside, fill, children }) {
95
+ return /* @__PURE__ */ jsx("div", {
96
+ className: `grid grid-cols-[minmax(0,1fr)] gap-x-6 gap-y-4 ${aside ? "@min-[45rem]:grid-cols-[minmax(0,1fr)_16rem]" : ""} ${fill ? "min-h-0 flex-1 grid-rows-[minmax(0,1fr)_auto]" : aside ? "@min-[45rem]:grid-rows-[auto_1fr]" : ""}`,
97
+ children
98
+ });
99
+ }
100
+ /** The sidebar beside the main column, ruled off from it once there is room. */
101
+ function ItemDialogAside({ children }) {
102
+ return /* @__PURE__ */ jsx("aside", {
103
+ className: "grid min-w-0 grid-cols-[minmax(0,1fr)] content-start gap-4 @min-[45rem]:col-start-2 @min-[45rem]:row-span-2 @min-[45rem]:row-start-1 @min-[45rem]:border-l @min-[45rem]:border-(--border) @min-[45rem]:pl-6",
104
+ children
105
+ });
106
+ }
107
+ /** A warning about the item, such as why it is paused, in the warning panel: `icon` (a status glyph) before it when
108
+ * given. */
109
+ function WarningNote({ icon, children, ...data }) {
110
+ if (icon) return /* @__PURE__ */ jsxs("div", {
111
+ ...data,
112
+ className: `flex items-center gap-3 ${WARNING_PANEL}`,
113
+ children: [icon, /* @__PURE__ */ jsx("span", {
114
+ className: "min-w-0 flex-1 font-medium text-(--warning-foreground)",
115
+ children
116
+ })]
117
+ });
118
+ return /* @__PURE__ */ jsx("p", {
119
+ ...data,
120
+ className: `m-0 ${WARNING_PANEL} font-medium text-(--warning-foreground)`,
121
+ children
122
+ });
123
+ }
124
+ /** Why the factory can't write to the item's tracker, announced, and the `action` that checks again. */
125
+ function AccessNotice({ message, action }) {
126
+ return /* @__PURE__ */ jsxs("div", {
127
+ role: "status",
128
+ children: [/* @__PURE__ */ jsx("p", { children: message }), action]
129
+ });
130
+ }
131
+ /** A group of the footer's actions: the `leading` ones that move the item, in small text, or the rest at its end. */
132
+ function DialogActions({ presentation = "trailing", children }) {
133
+ return /* @__PURE__ */ jsx("span", {
134
+ className: presentation === "leading" ? "inline-flex items-center gap-3 text-xs" : "inline-flex items-center gap-1.5",
135
+ children
136
+ });
137
+ }
138
+ export { AccessNotice, DialogActions, ItemDialogAside, ItemDialogBody, ItemDialogColumns, ItemSummary, SummaryAge, SummaryBlocked, SummaryPanel, SummaryParent, SummaryStatus, WarningNote };
139
+
140
+ //# sourceMappingURL=ItemDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemDialog.js","names":[],"sources":["../../src/board/ItemDialog.tsx"],"sourcesContent":["// The frame of Lar Factory's item dialog: the summary under its title, the body's column with the main column and the\n// sidebar beside it, its notes, and the footer's groups of actions.\n\nimport type { ReactNode } from 'react';\n\nimport type { DataAttributes } from './DataAttributes';\nimport { WARNING_PANEL } from './RowStyles';\n\n/**\n * The summary under the dialog's title, a row each: `line` (the item's source, repository, status and age), its\n * `parent`, its `kind` and its ticket `actions`.\n */\nexport function ItemSummary({\n line,\n parent,\n kind,\n actions,\n ...data\n}: {\n line: ReactNode;\n parent?: ReactNode;\n kind: ReactNode;\n actions: ReactNode;\n} & DataAttributes) {\n return (\n <div\n {...data}\n className=\"border-base-300 text-base-700 @container grid shrink-0 gap-1 border-b px-5 pb-3 text-xs sm:px-6\"\n >\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">{line}</div>\n {parent}\n <div className=\"flex flex-wrap items-center gap-2\">{kind}</div>\n <div className=\"flex flex-wrap items-start gap-2\">{actions}</div>\n </div>\n );\n}\n\n/** The summary's status word, in the text colour. */\nexport function SummaryStatus({ children }: { children: ReactNode }) {\n return <span className=\"text-base-content font-medium\">{children}</span>;\n}\n\n/** The summary's age, which a narrow dialog leaves out. */\nexport function SummaryAge({ children }: { children: ReactNode }) {\n return <span className=\"min-w-0 truncate @max-[30rem]:hidden\">{children}</span>;\n}\n\n/** What blocks the item, as a small chip in the danger colours. */\nexport function SummaryBlocked({ children }: { children: ReactNode }) {\n return <span className=\"rounded bg-(--error-surface) px-1.5 text-(--error-foreground)\">{children}</span>;\n}\n\n/** The item's parent: `prefix` (\"Part of\"), then its `name`, linked when `href` opens it. */\nexport function SummaryParent({\n prefix,\n name,\n href,\n ...data\n}: {\n prefix: string;\n name: string;\n href?: string | undefined;\n} & DataAttributes) {\n return (\n <p {...data} className=\"m-0 min-w-0 wrap-anywhere\">\n {prefix}{' '}\n {href ? (\n <a href={href} target=\"_blank\" rel=\"noopener\" className=\"underline\">\n {name}\n </a>\n ) : (\n name\n )}\n </p>\n );\n}\n\n/** A labelled control the summary opens in place, such as Attach a ticket's picker: `label` over it. */\nexport function SummaryPanel({ label, children }: { label: string; children: ReactNode }) {\n return (\n <section aria-label={label} className=\"grid gap-1.5 pt-1\">\n <span className=\"text-base-content text-xs font-medium\">{label}</span>\n {children}\n </section>\n );\n}\n\n/**\n * The dialog body's column: the progress, notes, meta area, record, description, comments and sidebar, one under the\n * other; when it `fill`s, a column whose description and comments take what the rest leave.\n */\nexport function ItemDialogBody({ fill, children, ...data }: { fill: boolean; children: ReactNode } & DataAttributes) {\n return (\n <div\n {...data}\n className={`@container gap-3 pt-2 ${fill ? 'flex min-h-0 flex-1 flex-col' : 'grid grid-cols-[minmax(0,1fr)]'}`}\n >\n {children}\n </div>\n );\n}\n\n/**\n * The main column with the sidebar beside it once the dialog is 45rem wide, when there is an `aside`. Filling, the\n * main column's open editor takes the height the rest leaves.\n */\nexport function ItemDialogColumns({ aside, fill, children }: { aside: boolean; fill: boolean; children: ReactNode }) {\n const rows = fill\n ? 'min-h-0 flex-1 grid-rows-[minmax(0,1fr)_auto]'\n : aside\n ? '@min-[45rem]:grid-rows-[auto_1fr]'\n : '';\n\n return (\n <div\n className={`grid grid-cols-[minmax(0,1fr)] gap-x-6 gap-y-4 ${aside ? '@min-[45rem]:grid-cols-[minmax(0,1fr)_16rem]' : ''} ${rows}`}\n >\n {children}\n </div>\n );\n}\n\n/** The sidebar beside the main column, ruled off from it once there is room. */\nexport function ItemDialogAside({ children }: { children: ReactNode }) {\n return (\n <aside className=\"grid min-w-0 grid-cols-[minmax(0,1fr)] content-start gap-4 @min-[45rem]:col-start-2 @min-[45rem]:row-span-2 @min-[45rem]:row-start-1 @min-[45rem]:border-l @min-[45rem]:border-(--border) @min-[45rem]:pl-6\">\n {children}\n </aside>\n );\n}\n\n/** A warning about the item, such as why it is paused, in the warning panel: `icon` (a status glyph) before it when\n * given. */\nexport function WarningNote({ icon, children, ...data }: { icon?: ReactNode; children: ReactNode } & DataAttributes) {\n if (icon)\n return (\n <div {...data} className={`flex items-center gap-3 ${WARNING_PANEL}`}>\n {icon}\n <span className=\"min-w-0 flex-1 font-medium text-(--warning-foreground)\">{children}</span>\n </div>\n );\n\n return (\n <p {...data} className={`m-0 ${WARNING_PANEL} font-medium text-(--warning-foreground)`}>\n {children}\n </p>\n );\n}\n\n/** Why the factory can't write to the item's tracker, announced, and the `action` that checks again. */\nexport function AccessNotice({ message, action }: { message: string; action: ReactNode }) {\n return (\n <div role=\"status\">\n <p>{message}</p>\n {action}\n </div>\n );\n}\n\n/** A group of the footer's actions: the `leading` ones that move the item, in small text, or the rest at its end. */\nexport function DialogActions({\n presentation = 'trailing',\n children,\n}: {\n presentation?: 'leading' | 'trailing';\n children: ReactNode;\n}) {\n return (\n <span\n className={\n presentation === 'leading'\n ? 'inline-flex items-center gap-3 text-xs'\n : 'inline-flex items-center gap-1.5'\n }\n >\n {children}\n </span>\n );\n}\n"],"mappings":";;;;;;;AAYA,SAAgB,YAAY,EACxB,MACA,QACA,MACA,SACA,GAAG,QAMa;CAChB,OACI,qBAAC,OAAD;EACI,GAAI;EACJ,WAAU;EAFd,UAAA;GAII,oBAAC,OAAD;IAAK,WAAU;IAA6C,UAAA;GAAU,CAAA;GACrE;GACD,oBAAC,OAAD;IAAK,WAAU;IAAqC,UAAA;GAAU,CAAA;GAC9D,oBAAC,OAAD;IAAK,WAAU;IAAoC,UAAA;GAAa,CAAA;EAC/D;;AAEb;;AAGA,SAAgB,cAAc,EAAE,YAAqC;CACjE,OAAO,oBAAC,QAAD;EAAM,WAAU;EAAiC;CAAe,CAAA;AAC3E;;AAGA,SAAgB,WAAW,EAAE,YAAqC;CAC9D,OAAO,oBAAC,QAAD;EAAM,WAAU;EAAwC;CAAe,CAAA;AAClF;;AAGA,SAAgB,eAAe,EAAE,YAAqC;CAClE,OAAO,oBAAC,QAAD;EAAM,WAAU;EAAiE;CAAe,CAAA;AAC3G;;AAGA,SAAgB,cAAc,EAC1B,QACA,MACA,MACA,GAAG,QAKa;CAChB,OACI,qBAAC,KAAD;EAAG,GAAI;EAAM,WAAU;EAAvB,UAAA;GACK;GAAQ;GACR,OACG,oBAAC,KAAD;IAAS;IAAM,QAAO;IAAS,KAAI;IAAW,WAAU;IACnD,UAAA;GACF,CAAA,IAEH;EAEL;;AAEX;;AAGA,SAAgB,aAAa,EAAE,OAAO,YAAoD;CACtF,OACI,qBAAC,WAAD;EAAS,cAAY;EAAO,WAAU;EAAtC,UAAA,CACI,oBAAC,QAAD;GAAM,WAAU;GAAyC,UAAA;EAAY,CAAA,GACpE,QACI;;AAEjB;;;;;AAMA,SAAgB,eAAe,EAAE,MAAM,UAAU,GAAG,QAAiE;CACjH,OACI,oBAAC,OAAD;EACI,GAAI;EACJ,WAAW,yBAAyB,OAAO,iCAAiC;EAE3E;CACA,CAAA;AAEb;;;;;AAMA,SAAgB,kBAAkB,EAAE,OAAO,MAAM,YAAoE;CAOjH,OACI,oBAAC,OAAD;EACI,WAAW,kDAAkD,QAAQ,iDAAiD,GAAG,GARpH,OACP,kDACA,QACE,sCACA;EAMC;CACA,CAAA;AAEb;;AAGA,SAAgB,gBAAgB,EAAE,YAAqC;CACnE,OACI,oBAAC,SAAD;EAAO,WAAU;EACZ;CACE,CAAA;AAEf;;;AAIA,SAAgB,YAAY,EAAE,MAAM,UAAU,GAAG,QAAoE;CACjH,IAAI,MACA,OACI,qBAAC,OAAD;EAAK,GAAI;EAAM,WAAW,2BAA2B;EAArD,UAAA,CACK,MACD,oBAAC,QAAD;GAAM,WAAU;GAA0D;EAAe,CAAA,CACxF;;CAGb,OACI,oBAAC,KAAD;EAAG,GAAI;EAAM,WAAW,OAAO,cAAc;EACxC;CACF,CAAA;AAEX;;AAGA,SAAgB,aAAa,EAAE,SAAS,UAAkD;CACtF,OACI,qBAAC,OAAD;EAAK,MAAK;EAAV,UAAA,CACI,oBAAC,KAAD,EAAA,UAAI,QAAW,CAAA,GACd,MACA;;AAEb;;AAGA,SAAgB,cAAc,EAC1B,eAAe,YACf,YAID;CACC,OACI,oBAAC,QAAD;EACI,WACI,iBAAiB,YACX,2CACA;EAGT;CACC,CAAA;AAEd"}
@@ -0,0 +1,42 @@
1
+ import { DataAttributes } from "./DataAttributes.js";
2
+ import { ReactNode } from "react";
3
+ /** A title with its ticket's reference (`#12`) before it, muted, the way the board lists every item; captured work has
4
+ * no reference. */
5
+ export declare function ItemTitle({ reference, title }: {
6
+ reference?: string | undefined;
7
+ title: string;
8
+ }): import("react").JSX.Element;
9
+ /** A title with its reference as a link to its ticket in a new tab, or as text when it has no page, as a sentence names
10
+ * it. */
11
+ export declare function TitleLink({ reference, title, href }: {
12
+ reference?: string | undefined;
13
+ title: string;
14
+ href?: string | undefined;
15
+ }): import("react").JSX.Element;
16
+ /** A repository as a badge: its project icon and name. */
17
+ export declare function RepoTag({ icon, name }: {
18
+ icon: ReactNode;
19
+ name: string;
20
+ }): import("react").JSX.Element;
21
+ /** A repository's project icon and name together, the name truncating: in a row's line, or roomier on the work map,
22
+ * where `title` names it in full. `wrap` is roomier still and wraps the name, anywhere if it must, for a line that
23
+ * says more than the name, such as an archived item's repository, number and state. */
24
+ export declare function RepoIdentity({ icon, name, title, presentation, ...data }: {
25
+ icon: ReactNode;
26
+ name: string;
27
+ title?: string;
28
+ presentation?: 'row' | 'map' | 'wrap';
29
+ } & DataAttributes): import("react").JSX.Element;
30
+ /** A tracker's fields for the item (such as Azure's type, state and assignee) as one muted line that truncates, its
31
+ * tooltip giving it whole. */
32
+ export declare function ItemFields({ text, ...data }: {
33
+ text: string;
34
+ } & DataAttributes): import("react").JSX.Element;
35
+ /** Beside a kind badge, in muted text: the kind the ticket says instead, `said`, until someone answers. */
36
+ export declare function KindMarker({ said, label, title, ...data }: {
37
+ said: string;
38
+ /** The sentence assistive technology reads. */
39
+ label: string;
40
+ title: string;
41
+ } & DataAttributes): import("react").JSX.Element;
42
+ //# sourceMappingURL=ItemParts.d.ts.map
@@ -0,0 +1,82 @@
1
+ import { Badge } from "../display/Badge.js";
2
+ import { ArrowLeftRightIcon } from "lucide-react";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ // src/board/ItemParts.tsx
5
+ /** A title with its ticket's reference (`#12`) before it, muted, the way the board lists every item; captured work has
6
+ * no reference. */
7
+ function ItemTitle({ reference, title }) {
8
+ return /* @__PURE__ */ jsxs(Fragment, { children: [reference ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
9
+ className: "font-normal text-(--muted-foreground) tabular-nums",
10
+ children: reference
11
+ }), " "] }) : null, title] });
12
+ }
13
+ /** A title with its reference as a link to its ticket in a new tab, or as text when it has no page, as a sentence names
14
+ * it. */
15
+ function TitleLink({ reference, title, href }) {
16
+ const text = /* @__PURE__ */ jsxs(Fragment, { children: [reference ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
17
+ className: "ref",
18
+ children: reference
19
+ }), " "] }) : null, title] });
20
+ return href ? /* @__PURE__ */ jsx("a", {
21
+ className: "title",
22
+ href,
23
+ target: "_blank",
24
+ rel: "noopener",
25
+ children: text
26
+ }) : /* @__PURE__ */ jsx("span", {
27
+ className: "title",
28
+ children: text
29
+ });
30
+ }
31
+ /** A repository as a badge: its project icon and name. */
32
+ function RepoTag({ icon, name }) {
33
+ return /* @__PURE__ */ jsxs(Badge, {
34
+ className: "gap-1.5",
35
+ children: [icon, name]
36
+ });
37
+ }
38
+ const identities = {
39
+ row: "flex min-w-0 items-center gap-1",
40
+ map: "inline-flex min-w-0 items-center gap-1.5",
41
+ wrap: "inline-flex min-w-0 items-center gap-2"
42
+ };
43
+ /** A repository's project icon and name together, the name truncating: in a row's line, or roomier on the work map,
44
+ * where `title` names it in full. `wrap` is roomier still and wraps the name, anywhere if it must, for a line that
45
+ * says more than the name, such as an archived item's repository, number and state. */
46
+ function RepoIdentity({ icon, name, title, presentation = "row", ...data }) {
47
+ return /* @__PURE__ */ jsxs("span", {
48
+ ...data,
49
+ title,
50
+ className: identities[presentation],
51
+ children: [icon, /* @__PURE__ */ jsx("span", {
52
+ className: presentation === "wrap" ? "min-w-0 wrap-anywhere" : "truncate",
53
+ children: name
54
+ })]
55
+ });
56
+ }
57
+ /** A tracker's fields for the item (such as Azure's type, state and assignee) as one muted line that truncates, its
58
+ * tooltip giving it whole. */
59
+ function ItemFields({ text, ...data }) {
60
+ return /* @__PURE__ */ jsx("span", {
61
+ ...data,
62
+ title: text,
63
+ className: "block min-w-0 truncate text-xs text-(--muted-foreground)",
64
+ children: text
65
+ });
66
+ }
67
+ /** Beside a kind badge, in muted text: the kind the ticket says instead, `said`, until someone answers. */
68
+ function KindMarker({ said, label, title, ...data }) {
69
+ return /* @__PURE__ */ jsxs("span", {
70
+ ...data,
71
+ title,
72
+ "aria-label": label,
73
+ className: "inline-flex items-center gap-0.5 text-[11px] text-(--muted-foreground)",
74
+ children: [/* @__PURE__ */ jsx(ArrowLeftRightIcon, {
75
+ className: "size-2.5",
76
+ "aria-hidden": "true"
77
+ }), said]
78
+ });
79
+ }
80
+ export { ItemFields, ItemTitle, KindMarker, RepoIdentity, RepoTag, TitleLink };
81
+
82
+ //# sourceMappingURL=ItemParts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemParts.js","names":[],"sources":["../../src/board/ItemParts.tsx"],"sourcesContent":["// The bits every view of Lar Factory's board draws for a piece of work: its numbered title, title link, repository,\n// tracker fields, kind marker, label chips and planning notes.\n\nimport { ArrowLeftRightIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '../display/Badge';\nimport type { DataAttributes } from './DataAttributes';\n\n/** A title with its ticket's reference (`#12`) before it, muted, the way the board lists every item; captured work has\n * no reference. */\nexport function ItemTitle({ reference, title }: { reference?: string | undefined; title: string }) {\n return (\n <>\n {reference ? (\n <>\n <span className=\"font-normal text-(--muted-foreground) tabular-nums\">{reference}</span>{' '}\n </>\n ) : null}\n {title}\n </>\n );\n}\n\n/** A title with its reference as a link to its ticket in a new tab, or as text when it has no page, as a sentence names\n * it. */\nexport function TitleLink({\n reference,\n title,\n href,\n}: {\n reference?: string | undefined;\n title: string;\n href?: string | undefined;\n}) {\n const text = (\n <>\n {reference ? (\n <>\n <span className=\"ref\">{reference}</span>{' '}\n </>\n ) : null}\n {title}\n </>\n );\n\n return href ? (\n <a className=\"title\" href={href} target=\"_blank\" rel=\"noopener\">\n {text}\n </a>\n ) : (\n <span className=\"title\">{text}</span>\n );\n}\n\n/** A repository as a badge: its project icon and name. */\nexport function RepoTag({ icon, name }: { icon: ReactNode; name: string }) {\n return (\n <Badge className=\"gap-1.5\">\n {icon}\n {name}\n </Badge>\n );\n}\n\nconst identities = {\n row: 'flex min-w-0 items-center gap-1',\n map: 'inline-flex min-w-0 items-center gap-1.5',\n wrap: 'inline-flex min-w-0 items-center gap-2',\n} as const;\n\n/** A repository's project icon and name together, the name truncating: in a row's line, or roomier on the work map,\n * where `title` names it in full. `wrap` is roomier still and wraps the name, anywhere if it must, for a line that\n * says more than the name, such as an archived item's repository, number and state. */\nexport function RepoIdentity({\n icon,\n name,\n title,\n presentation = 'row',\n ...data\n}: {\n icon: ReactNode;\n name: string;\n title?: string;\n presentation?: 'row' | 'map' | 'wrap';\n} & DataAttributes) {\n return (\n <span {...data} title={title} className={identities[presentation]}>\n {icon}\n <span className={presentation === 'wrap' ? 'min-w-0 wrap-anywhere' : 'truncate'}>{name}</span>\n </span>\n );\n}\n\n/** A tracker's fields for the item (such as Azure's type, state and assignee) as one muted line that truncates, its\n * tooltip giving it whole. */\nexport function ItemFields({ text, ...data }: { text: string } & DataAttributes) {\n return (\n <span {...data} title={text} className=\"block min-w-0 truncate text-xs text-(--muted-foreground)\">\n {text}\n </span>\n );\n}\n\n/** Beside a kind badge, in muted text: the kind the ticket says instead, `said`, until someone answers. */\nexport function KindMarker({\n said,\n label,\n title,\n ...data\n}: {\n said: string;\n /** The sentence assistive technology reads. */\n label: string;\n title: string;\n} & DataAttributes) {\n return (\n <span\n {...data}\n title={title}\n aria-label={label}\n className=\"inline-flex items-center gap-0.5 text-[11px] text-(--muted-foreground)\"\n >\n <ArrowLeftRightIcon className=\"size-2.5\" aria-hidden=\"true\" />\n {said}\n </span>\n );\n}\n"],"mappings":";;;;;;AAWA,SAAgB,UAAU,EAAE,WAAW,SAA4D;CAC/F,OACI,qBAAA,UAAA,EAAA,UAAA,CACK,YACG,qBAAA,UAAA,EAAA,UAAA,CACI,oBAAC,QAAD;EAAM,WAAU;EAAsD,UAAA;CAAgB,CAAA,GAAE,GAC1F,EAAA,CAAA,IACF,MACH,KACH,EAAA,CAAA;AAEV;;;AAIA,SAAgB,UAAU,EACtB,WACA,OACA,QAKD;CACC,MAAM,OACF,qBAAA,UAAA,EAAA,UAAA,CACK,YACG,qBAAA,UAAA,EAAA,UAAA,CACI,oBAAC,QAAD;EAAM,WAAU;EAAO,UAAA;CAAgB,CAAA,GAAE,GAC3C,EAAA,CAAA,IACF,MACH,KACH,EAAA,CAAA;CAGN,OAAO,OACH,oBAAC,KAAD;EAAG,WAAU;EAAc;EAAM,QAAO;EAAS,KAAI;EAChD,UAAA;CACF,CAAA,IAEH,oBAAC,QAAD;EAAM,WAAU;EAAS,UAAA;CAAW,CAAA;AAE5C;;AAGA,SAAgB,QAAQ,EAAE,MAAM,QAA2C;CACvE,OACI,qBAAC,OAAD;EAAO,WAAU;EAAjB,UAAA,CACK,MACA,IACE;;AAEf;AAEA,MAAM,aAAa;CACf,KAAK;CACL,KAAK;CACL,MAAM;AACV;;;;AAKA,SAAgB,aAAa,EACzB,MACA,MACA,OACA,eAAe,OACf,GAAG,QAMa;CAChB,OACI,qBAAC,QAAD;EAAM,GAAI;EAAa;EAAO,WAAW,WAAW;EAApD,UAAA,CACK,MACD,oBAAC,QAAD;GAAM,WAAW,iBAAiB,SAAS,0BAA0B;GAAa,UAAA;EAAW,CAAA,CAC3F;;AAEd;;;AAIA,SAAgB,WAAW,EAAE,MAAM,GAAG,QAA2C;CAC7E,OACI,oBAAC,QAAD;EAAM,GAAI;EAAM,OAAO;EAAM,WAAU;EAClC,UAAA;CACC,CAAA;AAEd;;AAGA,SAAgB,WAAW,EACvB,MACA,OACA,OACA,GAAG,QAMa;CAChB,OACI,qBAAC,QAAD;EACI,GAAI;EACG;EACP,cAAY;EACZ,WAAU;EAJd,UAAA,CAMI,oBAAC,oBAAD;GAAoB,WAAU;GAAW,eAAY;EAAQ,CAAA,GAC5D,IACC;;AAEd"}
@@ -0,0 +1,56 @@
1
+ import { DataAttributes } from "./DataAttributes.js";
2
+ import { SliceProgress } from "./Slices.js";
3
+ import { ReactNode } from "react";
4
+ /** The dialog's progress block: the steps, the parts, the activity and the slices, stacked. */
5
+ export declare function ItemProgressPanel({ children, ...data }: {
6
+ children: ReactNode;
7
+ } & DataAttributes): import("react").JSX.Element;
8
+ /** A count's line over its bar, such as "Slices · 2/3 done": `label` in the text colour, then `children`. */
9
+ export declare function ProgressCount({ label, children }: {
10
+ label: string;
11
+ children: ReactNode;
12
+ }): import("react").JSX.Element;
13
+ /**
14
+ * The workflow's active steps as a bar: the past ones slim and darker, the upcoming faint, and the current one widest,
15
+ * named `name` with its step number, in a gradient of `color`, or `bar` (such as its slices) in that gradient's place.
16
+ * Each step's `label` is what assistive technology reads and its `title` its tooltip.
17
+ */
18
+ export declare function WorkflowSteps({ steps, at, name, color, bar }: {
19
+ steps: readonly {
20
+ title: string;
21
+ label: string;
22
+ }[];
23
+ /** The current step's index. */
24
+ at: number;
25
+ name: string;
26
+ color: string;
27
+ bar?: ReactNode;
28
+ }): import("react").JSX.Element;
29
+ /** A concept's parts done out of its parts, as a ProgressCount over a bar in the done colour. */
30
+ export declare function PartsProgress({ label, completed, total, children }: {
31
+ label: string;
32
+ completed: number;
33
+ total: number;
34
+ /** What the count says, such as "4/9 done". */
35
+ children: ReactNode;
36
+ }): import("react").JSX.Element;
37
+ /** The activity under the steps: its track, then its label. */
38
+ export declare function ProgressActivity({ children }: {
39
+ children: ReactNode;
40
+ }): import("react").JSX.Element;
41
+ /** The slices under the steps: their `count` line, a slice `bar` when the steps don't hold it, and a SliceChip each. */
42
+ export declare function SliceChips({ count, bar, children }: {
43
+ count: ReactNode;
44
+ bar?: ReactNode;
45
+ children: ReactNode;
46
+ }): import("react").JSX.Element;
47
+ /** A slice as a chip: where its ticket is saved, its mark, number, title (muted when done, medium while active) and
48
+ * state; `title` names it in full. */
49
+ export declare function SliceChip({ title, source, progress, number, name }: {
50
+ title: string;
51
+ source: ReactNode;
52
+ progress: SliceProgress;
53
+ number?: number | undefined;
54
+ name: string;
55
+ }): import("react").JSX.Element;
56
+ //# sourceMappingURL=ItemProgress.d.ts.map
@@ -0,0 +1,138 @@
1
+ import { SliceMark } from "./Slices.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ // src/board/ItemProgress.tsx
4
+ const PAST = "color-mix(in srgb, var(--foreground) 28%, transparent)";
5
+ /** The dialog's progress block: the steps, the parts, the activity and the slices, stacked. */
6
+ function ItemProgressPanel({ children, ...data }) {
7
+ return /* @__PURE__ */ jsx("div", {
8
+ ...data,
9
+ className: "grid min-w-0 grid-cols-[minmax(0,1fr)] gap-2",
10
+ children
11
+ });
12
+ }
13
+ /** A count's line over its bar, such as "Slices · 2/3 done": `label` in the text colour, then `children`. */
14
+ function ProgressCount({ label, children }) {
15
+ return /* @__PURE__ */ jsxs("p", {
16
+ className: "m-0 text-xs text-(--muted-foreground)",
17
+ children: [
18
+ /* @__PURE__ */ jsx("span", {
19
+ className: "font-medium text-(--foreground)",
20
+ children: label
21
+ }),
22
+ " · ",
23
+ children
24
+ ]
25
+ });
26
+ }
27
+ /**
28
+ * The workflow's active steps as a bar: the past ones slim and darker, the upcoming faint, and the current one widest,
29
+ * named `name` with its step number, in a gradient of `color`, or `bar` (such as its slices) in that gradient's place.
30
+ * Each step's `label` is what assistive technology reads and its `title` its tooltip.
31
+ */
32
+ function WorkflowSteps({ steps, at, name, color, bar }) {
33
+ return /* @__PURE__ */ jsx("ol", {
34
+ className: "m-0 flex list-none items-end gap-[3px] p-0",
35
+ "data-steps": true,
36
+ children: steps.map((step, i) => i !== at ? /* @__PURE__ */ jsx("li", {
37
+ title: step.title,
38
+ "aria-label": step.label,
39
+ className: "h-1.5 min-w-1.5 flex-1 rounded-full",
40
+ style: { background: i < at ? PAST : "var(--soft)" }
41
+ }, i) : /* @__PURE__ */ jsxs("li", {
42
+ title: step.title,
43
+ "aria-label": step.label,
44
+ "aria-current": "step",
45
+ className: "grid min-w-26 flex-[6] gap-1",
46
+ children: [/* @__PURE__ */ jsxs("span", {
47
+ className: "flex items-baseline justify-between gap-2 text-xs leading-4",
48
+ children: [/* @__PURE__ */ jsx("span", {
49
+ className: "truncate font-medium",
50
+ children: name
51
+ }), /* @__PURE__ */ jsxs("span", {
52
+ className: "shrink-0 text-(--muted-foreground) tabular-nums",
53
+ children: [
54
+ i + 1,
55
+ "/",
56
+ steps.length
57
+ ]
58
+ })]
59
+ }), bar ? /* @__PURE__ */ jsx("div", {
60
+ "aria-hidden": true,
61
+ children: bar
62
+ }) : /* @__PURE__ */ jsx("span", {
63
+ className: "h-1.5 rounded-full",
64
+ style: { background: `linear-gradient(90deg, color-mix(in srgb, ${color} 55%, transparent), ${color})` }
65
+ })]
66
+ }, i))
67
+ });
68
+ }
69
+ /** A concept's parts done out of its parts, as a ProgressCount over a bar in the done colour. */
70
+ function PartsProgress({ label, completed, total, children }) {
71
+ return /* @__PURE__ */ jsxs("div", {
72
+ className: "grid gap-1",
73
+ "data-parts-progress": true,
74
+ children: [/* @__PURE__ */ jsx(ProgressCount, {
75
+ label,
76
+ children
77
+ }), /* @__PURE__ */ jsx("div", {
78
+ "aria-hidden": true,
79
+ className: "h-1.5 overflow-hidden rounded-full bg-(--soft)",
80
+ children: /* @__PURE__ */ jsx("div", {
81
+ className: "h-full rounded-full bg-(--st-done)",
82
+ style: { width: `${total > 0 ? completed / total * 100 : 0}%` }
83
+ })
84
+ })]
85
+ });
86
+ }
87
+ /** The activity under the steps: its track, then its label. */
88
+ function ProgressActivity({ children }) {
89
+ return /* @__PURE__ */ jsx("div", {
90
+ className: "grid gap-1",
91
+ children
92
+ });
93
+ }
94
+ /** The slices under the steps: their `count` line, a slice `bar` when the steps don't hold it, and a SliceChip each. */
95
+ function SliceChips({ count, bar, children }) {
96
+ return /* @__PURE__ */ jsxs("div", {
97
+ className: "grid min-w-0 grid-cols-[minmax(0,1fr)] gap-2",
98
+ "data-slices": true,
99
+ children: [
100
+ count,
101
+ bar && /* @__PURE__ */ jsx("div", {
102
+ "aria-hidden": true,
103
+ children: bar
104
+ }),
105
+ /* @__PURE__ */ jsx("ul", {
106
+ className: "m-0 flex list-none flex-wrap gap-1.5 p-0",
107
+ children
108
+ })
109
+ ]
110
+ });
111
+ }
112
+ /** A slice as a chip: where its ticket is saved, its mark, number, title (muted when done, medium while active) and
113
+ * state; `title` names it in full. */
114
+ function SliceChip({ title, source, progress, number, name }) {
115
+ return /* @__PURE__ */ jsxs("li", {
116
+ title,
117
+ className: "inline-flex max-w-full items-center gap-1.5 rounded-full border border-(--border) bg-(--card) py-0.5 ps-1 pe-2.5 text-xs",
118
+ children: [
119
+ source,
120
+ /* @__PURE__ */ jsx(SliceMark, { progress }),
121
+ !!number && /* @__PURE__ */ jsxs("span", {
122
+ className: "shrink-0 text-(--muted-foreground) tabular-nums",
123
+ children: ["#", number]
124
+ }),
125
+ /* @__PURE__ */ jsx("span", {
126
+ className: `min-w-0 truncate ${progress === "done" ? "text-(--muted-foreground)" : progress === "active" ? "font-medium" : ""}`,
127
+ children: name
128
+ }),
129
+ /* @__PURE__ */ jsx("span", {
130
+ className: "shrink-0 text-[11px] text-(--muted-foreground)",
131
+ children: progress
132
+ })
133
+ ]
134
+ });
135
+ }
136
+ export { ItemProgressPanel, PartsProgress, ProgressActivity, ProgressCount, SliceChip, SliceChips, WorkflowSteps };
137
+
138
+ //# sourceMappingURL=ItemProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemProgress.js","names":[],"sources":["../../src/board/ItemProgress.tsx"],"sourcesContent":["// The progress at the top of Lar Factory's item dialog: the workflow's steps as a bar, a concept's parts done, and a\n// piece of work's slices as chips under their count.\n\nimport type { ReactNode } from 'react';\n\nimport type { DataAttributes } from './DataAttributes';\nimport type { SliceProgress } from './Slices';\nimport { SliceMark } from './Slices';\n\nconst PAST = 'color-mix(in srgb, var(--foreground) 28%, transparent)';\n\n/** The dialog's progress block: the steps, the parts, the activity and the slices, stacked. */\nexport function ItemProgressPanel({ children, ...data }: { children: ReactNode } & DataAttributes) {\n return (\n <div {...data} className=\"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-2\">\n {children}\n </div>\n );\n}\n\n/** A count's line over its bar, such as \"Slices · 2/3 done\": `label` in the text colour, then `children`. */\nexport function ProgressCount({ label, children }: { label: string; children: ReactNode }) {\n return (\n <p className=\"m-0 text-xs text-(--muted-foreground)\">\n <span className=\"font-medium text-(--foreground)\">{label}</span> · {children}\n </p>\n );\n}\n\n/**\n * The workflow's active steps as a bar: the past ones slim and darker, the upcoming faint, and the current one widest,\n * named `name` with its step number, in a gradient of `color`, or `bar` (such as its slices) in that gradient's place.\n * Each step's `label` is what assistive technology reads and its `title` its tooltip.\n */\nexport function WorkflowSteps({\n steps,\n at,\n name,\n color,\n bar,\n}: {\n steps: readonly { title: string; label: string }[];\n /** The current step's index. */\n at: number;\n name: string;\n color: string;\n bar?: ReactNode;\n}) {\n return (\n <ol className=\"m-0 flex list-none items-end gap-[3px] p-0\" data-steps>\n {steps.map((step, i) =>\n i !== at ? (\n <li\n key={i}\n title={step.title}\n aria-label={step.label}\n className=\"h-1.5 min-w-1.5 flex-1 rounded-full\"\n style={{ background: i < at ? PAST : 'var(--soft)' }}\n />\n ) : (\n <li\n key={i}\n title={step.title}\n aria-label={step.label}\n aria-current=\"step\"\n className=\"grid min-w-26 flex-[6] gap-1\"\n >\n <span className=\"flex items-baseline justify-between gap-2 text-xs leading-4\">\n <span className=\"truncate font-medium\">{name}</span>\n <span className=\"shrink-0 text-(--muted-foreground) tabular-nums\">\n {i + 1}/{steps.length}\n </span>\n </span>\n {bar ? (\n <div aria-hidden>{bar}</div>\n ) : (\n <span\n className=\"h-1.5 rounded-full\"\n style={{\n background: `linear-gradient(90deg, color-mix(in srgb, ${color} 55%, transparent), ${color})`,\n }}\n />\n )}\n </li>\n ),\n )}\n </ol>\n );\n}\n\n/** A concept's parts done out of its parts, as a ProgressCount over a bar in the done colour. */\nexport function PartsProgress({\n label,\n completed,\n total,\n children,\n}: {\n label: string;\n completed: number;\n total: number;\n /** What the count says, such as \"4/9 done\". */\n children: ReactNode;\n}) {\n return (\n <div className=\"grid gap-1\" data-parts-progress>\n <ProgressCount label={label}>{children}</ProgressCount>\n <div aria-hidden className=\"h-1.5 overflow-hidden rounded-full bg-(--soft)\">\n <div\n className=\"h-full rounded-full bg-(--st-done)\"\n style={{ width: `${total > 0 ? (completed / total) * 100 : 0}%` }}\n />\n </div>\n </div>\n );\n}\n\n/** The activity under the steps: its track, then its label. */\nexport function ProgressActivity({ children }: { children: ReactNode }) {\n return <div className=\"grid gap-1\">{children}</div>;\n}\n\n/** The slices under the steps: their `count` line, a slice `bar` when the steps don't hold it, and a SliceChip each. */\nexport function SliceChips({ count, bar, children }: { count: ReactNode; bar?: ReactNode; children: ReactNode }) {\n return (\n <div className=\"grid min-w-0 grid-cols-[minmax(0,1fr)] gap-2\" data-slices>\n {count}\n {bar && <div aria-hidden>{bar}</div>}\n <ul className=\"m-0 flex list-none flex-wrap gap-1.5 p-0\">{children}</ul>\n </div>\n );\n}\n\n/** A slice as a chip: where its ticket is saved, its mark, number, title (muted when done, medium while active) and\n * state; `title` names it in full. */\nexport function SliceChip({\n title,\n source,\n progress,\n number,\n name,\n}: {\n title: string;\n source: ReactNode;\n progress: SliceProgress;\n number?: number | undefined;\n name: string;\n}) {\n return (\n <li\n title={title}\n className=\"inline-flex max-w-full items-center gap-1.5 rounded-full border border-(--border) bg-(--card) py-0.5 ps-1 pe-2.5 text-xs\"\n >\n {source}\n <SliceMark progress={progress} />\n {!!number && <span className=\"shrink-0 text-(--muted-foreground) tabular-nums\">#{number}</span>}\n <span\n className={`min-w-0 truncate ${progress === 'done' ? 'text-(--muted-foreground)' : progress === 'active' ? 'font-medium' : ''}`}\n >\n {name}\n </span>\n <span className=\"shrink-0 text-[11px] text-(--muted-foreground)\">{progress}</span>\n </li>\n );\n}\n"],"mappings":";;;AASA,MAAM,OAAO;;AAGb,SAAgB,kBAAkB,EAAE,UAAU,GAAG,QAAkD;CAC/F,OACI,oBAAC,OAAD;EAAK,GAAI;EAAM,WAAU;EACpB;CACA,CAAA;AAEb;;AAGA,SAAgB,cAAc,EAAE,OAAO,YAAoD;CACvF,OACI,qBAAC,KAAD;EAAG,WAAU;EAAb,UAAA;GACI,oBAAC,QAAD;IAAM,WAAU;IAAmC,UAAA;GAAY,CAAA;GAAC;GAAI;EACrE;;AAEX;;;;;;AAOA,SAAgB,cAAc,EAC1B,OACA,IACA,MACA,OACA,OAQD;CACC,OACI,oBAAC,MAAD;EAAI,WAAU;EAA6C,cAAA;EACtD,UAAA,MAAM,KAAK,MAAM,MACd,MAAM,KACF,oBAAC,MAAD;GAEI,OAAO,KAAK;GACZ,cAAY,KAAK;GACjB,WAAU;GACV,OAAO,EAAE,YAAY,IAAI,KAAK,OAAO,cAAc;EACtD,GALQ,CAKR,IAED,qBAAC,MAAD;GAEI,OAAO,KAAK;GACZ,cAAY,KAAK;GACjB,gBAAa;GACb,WAAU;GALd,UAAA,CAOI,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACI,oBAAC,QAAD;KAAM,WAAU;KAAwB,UAAA;IAAW,CAAA,GACnD,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA;MACK,IAAI;MAAE;MAAE,MAAM;KACb;IACJ,CAAA,CAAA;GACL,CAAA,GAAA,MACG,oBAAC,OAAD;IAAK,eAAA;IAAa,UAAA;GAAS,CAAA,IAE3B,oBAAC,QAAD;IACI,WAAU;IACV,OAAO,EACH,YAAY,6CAA6C,MAAM,sBAAsB,MAAM,GAC/F;GACH,CAAA,CAEL;EAtBK,GAAA,CAsBL,CAEZ;CACA,CAAA;AAEZ;;AAGA,SAAgB,cAAc,EAC1B,OACA,WACA,OACA,YAOD;CACC,OACI,qBAAC,OAAD;EAAK,WAAU;EAAa,uBAAA;EAA5B,UAAA,CACI,oBAAC,eAAD;GAAsB;GAAQ;EAAwB,CAAA,GACtD,oBAAC,OAAD;GAAK,eAAA;GAAY,WAAU;GACvB,UAAA,oBAAC,OAAD;IACI,WAAU;IACV,OAAO,EAAE,OAAO,GAAG,QAAQ,IAAK,YAAY,QAAS,MAAM,EAAE,GAAG;GACnE,CAAA;EACA,CAAA,CACJ;;AAEb;;AAGA,SAAgB,iBAAiB,EAAE,YAAqC;CACpE,OAAO,oBAAC,OAAD;EAAK,WAAU;EAAc;CAAc,CAAA;AACtD;;AAGA,SAAgB,WAAW,EAAE,OAAO,KAAK,YAAwE;CAC7G,OACI,qBAAC,OAAD;EAAK,WAAU;EAA+C,eAAA;EAA9D,UAAA;GACK;GACA,OAAO,oBAAC,OAAD;IAAK,eAAA;IAAa,UAAA;GAAS,CAAA;GACnC,oBAAC,MAAD;IAAI,WAAU;IAA4C;GAAa,CAAA;EACtE;;AAEb;;;AAIA,SAAgB,UAAU,EACtB,OACA,QACA,UACA,QACA,QAOD;CACC,OACI,qBAAC,MAAD;EACW;EACP,WAAU;EAFd,UAAA;GAIK;GACD,oBAAC,WAAD,EAAqB,SAAW,CAAA;GAC/B,CAAC,CAAC,UAAU,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CAAkE,KAAE,MAAa;;GAC9F,oBAAC,QAAD;IACI,WAAW,oBAAoB,aAAa,SAAS,8BAA8B,aAAa,WAAW,gBAAgB;IAE1H,UAAA;GACC,CAAA;GACN,oBAAC,QAAD;IAAM,WAAU;IAAkD,UAAA;GAAe,CAAA;EACjF;;AAEZ"}
@@ -0,0 +1,65 @@
1
+ import { ReactNode } from "react";
2
+ interface ListButtonProps {
3
+ label: string;
4
+ icon: ReactNode;
5
+ /** How many items are in List; none while the first read could still add some, which shows a loading cue. */
6
+ count: number | undefined;
7
+ loadingLabel: string;
8
+ onOpen: () => void;
9
+ }
10
+ /** The title bar's List button, "List <count>": an App control whose label folds away, for screen readers only, on a
11
+ * title bar under 70rem. */
12
+ export declare function ListButton({ label, icon, count, loadingLabel, onOpen }: ListButtonProps): import("react").JSX.Element;
13
+ /** A group in the List's left pane: its icon, its name and how many of its items match; a group still reading shows
14
+ * no count. */
15
+ export declare function ListGroupItem({ label, count, icon, active, onPick }: {
16
+ label: string;
17
+ count?: number;
18
+ icon: ReactNode;
19
+ active: boolean;
20
+ onPick: () => void;
21
+ }): import("react").JSX.Element;
22
+ interface ListHeaderProps {
23
+ /** The search field, and beside it Add item. */
24
+ search: ReactNode;
25
+ add: ReactNode;
26
+ /** The chosen group's name and how many of its items show; no count while it's still reading. */
27
+ title: string;
28
+ count?: number;
29
+ /** After the count: a toggle that scopes the board to the group, and at the right the sort menu. */
30
+ scope?: ReactNode;
31
+ sort: ReactNode;
32
+ filters: ReactNode;
33
+ }
34
+ /** The List's right pane's head: the search with Add item, then the chosen group with its count, scope toggle and sort,
35
+ * then the filters. */
36
+ export declare function ListHeader({ search, add, title, count, scope, sort, filters }: ListHeaderProps): import("react").JSX.Element;
37
+ interface ListItemRowProps {
38
+ /** The item's id, as `data-item`. */
39
+ item: string;
40
+ /** Its title in full, for the tooltip. */
41
+ name: string;
42
+ onOpen: () => void;
43
+ /** Where the item comes from. */
44
+ source: ReactNode;
45
+ /** The ticket's reference, such as "#61", before the title; none for an item with no ticket. */
46
+ reference?: string;
47
+ title: string;
48
+ /** The repository's icon, when the list mixes repositories, and the meta line's text: its name and age. */
49
+ repoIcon?: ReactNode;
50
+ meta: string;
51
+ /** After the meta line: the item's kind, labels and sync state. */
52
+ chips?: ReactNode;
53
+ /** More under the meta line, such as a work item's fields. */
54
+ details?: ReactNode;
55
+ }
56
+ /** An item in the List's right pane, opening the item dialog. */
57
+ export declare function ListItemRow({ item, name, onOpen, source, reference, title, repoIcon, meta, chips, details }: ListItemRowProps): import("react").JSX.Element;
58
+ /** What the List says in place of items: nothing matches, nothing in List, or still loading. With `reading`, it
59
+ * follows items as more may arrive. */
60
+ export declare function ListNote({ children, reading }: {
61
+ children: ReactNode;
62
+ reading?: boolean;
63
+ }): import("react").JSX.Element;
64
+ export {};
65
+ //# sourceMappingURL=List.d.ts.map