@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,262 @@
1
+ // A dossier in Lar Factory's board's dock (Concepts and linked work): its one line, on the stage rows' columns, which
2
+ // expands in place to its body, and what the line holds: its toggle, title, chips, what's next and the bar of its parts.
3
+
4
+ import { ChevronRightIcon } from 'lucide-react';
5
+ import type { MouseEvent, ReactNode } from 'react';
6
+
7
+ import { Badge } from '../display/Badge';
8
+ import { ambientMotion } from '../foundations/AmbientMotion';
9
+ import { Tooltip, TooltipPopup, TooltipTrigger } from '../overlays/Tooltip';
10
+ import { pickedRow, ROW_OPENS, ROW_RULE } from './RowStyles';
11
+
12
+ const stop = (event: MouseEvent) => event.stopPropagation();
13
+
14
+ /** A dossier, named by `label`; `id` names it as `data-dossier`. */
15
+ export function DossierRow({ id, label, children }: { id: string; label: string; children: ReactNode }) {
16
+ return (
17
+ <article className={`@container ${ROW_RULE}`} data-dossier={id} aria-label={label}>
18
+ {children}
19
+ </article>
20
+ );
21
+ }
22
+
23
+ /** The dossiers in the dock. */
24
+ export function DossierList({ children }: { children: ReactNode }) {
25
+ return <div data-dossiers>{children}</div>;
26
+ }
27
+
28
+ /** The chevron that expands a dossier in place, named by what it does now. */
29
+ export function DossierToggle({ open, label, onToggle }: { open: boolean; label: string; onToggle: () => void }) {
30
+ return (
31
+ <button
32
+ type="button"
33
+ data-dossier-open
34
+ aria-expanded={open}
35
+ aria-label={label}
36
+ onClick={(event) => {
37
+ stop(event);
38
+ onToggle();
39
+ }}
40
+ className={`grid size-6 shrink-0 place-items-center rounded-md text-(--muted-foreground) hover:bg-(--soft) hover:text-(--foreground) ${ROW_OPENS}`}
41
+ >
42
+ <ChevronRightIcon className={`size-4 ${open ? 'rotate-90' : ''}`} />
43
+ </button>
44
+ );
45
+ }
46
+
47
+ /** A dossier's line: a click anywhere on it but its controls goes to `onClick`; `title` gives what its chips and threads
48
+ * say. */
49
+ export function DossierLine({
50
+ item,
51
+ picked,
52
+ title,
53
+ onClick,
54
+ children,
55
+ }: {
56
+ item: string;
57
+ picked: boolean;
58
+ title?: string | undefined;
59
+ onClick?: (event: MouseEvent<HTMLDivElement>) => void;
60
+ children: ReactNode;
61
+ }) {
62
+ return (
63
+ <div
64
+ onClick={onClick}
65
+ data-item={item}
66
+ title={title}
67
+ className={`cursor-pointer py-2 hover:bg-(--accent) ${pickedRow(picked)}`}
68
+ >
69
+ {children}
70
+ </div>
71
+ );
72
+ }
73
+
74
+ /** The dossier line's title cell: its title, tracker fields, note and other repositories, the title keeping its room. */
75
+ export function DossierTitleCell({ children }: { children: ReactNode }) {
76
+ return (
77
+ <span className="flex min-w-0 items-center gap-1.5" data-line="1" data-title-cell>
78
+ {children}
79
+ </span>
80
+ );
81
+ }
82
+
83
+ /** The dossier's title as the button that opens its item; `name` gives it whole. */
84
+ export function DossierTitle({ name, onOpen, children }: { name: string; onOpen: () => void; children: ReactNode }) {
85
+ return (
86
+ <button
87
+ type="button"
88
+ onClick={(event) => {
89
+ stop(event);
90
+ onOpen();
91
+ }}
92
+ title={name}
93
+ data-title
94
+ className={`min-w-0 truncate rounded text-left text-sm leading-7 font-medium text-(--foreground) hover:underline ${ROW_OPENS}`}
95
+ >
96
+ {children}
97
+ </button>
98
+ );
99
+ }
100
+
101
+ /** After the title: the tracker's fields, which give up their room before the title does, ending in an ellipsis. Below
102
+ * `lg` they may shrink to nothing, so a narrow line's title keeps its room. */
103
+ export function DossierFields({ children }: { children: ReactNode }) {
104
+ return <span className="min-w-0 shrink-[1000] truncate empty:hidden lg:min-w-10">{children}</span>;
105
+ }
106
+
107
+ /** After the fields: a note, such as where its planning is saved; its clicks stay there. */
108
+ export function DossierNote({ children }: { children: ReactNode }) {
109
+ return (
110
+ <span onClick={stop} className="flex shrink-0 items-center pl-1 empty:hidden">
111
+ {children}
112
+ </span>
113
+ );
114
+ }
115
+
116
+ /** The repositories its parts work in beyond its own. */
117
+ export function DossierRepos({ children }: { children: string }) {
118
+ return (
119
+ <span
120
+ data-col="repos"
121
+ className="min-w-16 shrink-[100] truncate text-(--muted-foreground) empty:hidden"
122
+ title={children || undefined}
123
+ >
124
+ {children}
125
+ </span>
126
+ );
127
+ }
128
+
129
+ /** A dossier chip's tone. */
130
+ export type DossierChipTone = 'warning' | 'danger' | 'neutral' | 'accent' | 'success';
131
+
132
+ /** The dossier's first chip whole, at its full width, and how many `more` its line's tooltip names. Its clicks stay
133
+ * there. */
134
+ export function DossierChips({
135
+ first,
136
+ more,
137
+ }: {
138
+ first: { words: string; tone: DossierChipTone; icon?: ReactNode; refined?: boolean | undefined };
139
+ /** The other chips' words. */
140
+ more: string[];
141
+ }) {
142
+ return (
143
+ <span onClick={stop} className="flex shrink-0 items-center gap-1" data-chips>
144
+ <Badge
145
+ tone={first.tone}
146
+ className="whitespace-nowrap tabular-nums"
147
+ data-chip
148
+ data-refined={first.refined || undefined}
149
+ >
150
+ {first.icon}
151
+ {first.words}
152
+ </Badge>
153
+ {more.length > 0 && (
154
+ <span className="text-(--muted-foreground) tabular-nums" data-chips-more>
155
+ <span aria-hidden="true">+{more.length}</span>
156
+ <span className="sr-only">{more.join(', ')}</span>
157
+ </span>
158
+ )}
159
+ </span>
160
+ );
161
+ }
162
+
163
+ /** An expanded dossier's view controls, in its action slot. */
164
+ export function DossierTools({ children }: { children: ReactNode }) {
165
+ return (
166
+ <span className="flex shrink-0 items-center" data-dossier-tools>
167
+ {children}
168
+ </span>
169
+ );
170
+ }
171
+
172
+ /** What's next, as a sentence in the second line's text slot: a `word` naming it, in the warning tone when it waits on
173
+ * you, screen-reader text alone when `unseen`, then the `text` that names it. */
174
+ export function DossierNext({
175
+ word,
176
+ yours = false,
177
+ unseen = false,
178
+ text,
179
+ }: {
180
+ word?: string | undefined;
181
+ yours?: boolean;
182
+ unseen?: boolean;
183
+ text: string;
184
+ }) {
185
+ return (
186
+ <span className="min-w-0" data-next>
187
+ <span className="flex min-w-0 items-center gap-2">
188
+ {word && (
189
+ <span
190
+ className={`shrink-0 font-medium ${yours ? 'text-(--warning-foreground)' : 'text-(--muted-foreground)'} ${unseen ? 'sr-only' : ''}`}
191
+ >
192
+ {word}
193
+ </span>
194
+ )}
195
+ <span className="min-w-0 truncate" title={text}>
196
+ {text}
197
+ </span>
198
+ </span>
199
+ </span>
200
+ );
201
+ }
202
+
203
+ /** One part in PartsBar: its name and state, its colour, and whether it pulses while at work. */
204
+ export interface PartSegment {
205
+ key: string;
206
+ title: string;
207
+ color: string;
208
+ pulse?: boolean;
209
+ }
210
+
211
+ /** Every part as a segment in its colour, so the bar fills left to right, then a dashed one per part the board
212
+ * doesn't read. */
213
+ export function PartsBar({ title, parts, unread }: { title: string; parts: PartSegment[]; unread: number }) {
214
+ return (
215
+ <ol className="m-0 flex min-w-0 list-none gap-[2px] overflow-hidden p-0" title={title} data-part-bar>
216
+ {parts.map((p) => (
217
+ <li
218
+ key={p.key}
219
+ ref={p.pulse ? ambientMotion : undefined}
220
+ title={p.title}
221
+ className={`h-1.5 min-w-[3px] flex-1 rounded-full ${p.pulse ? 'status-pulse' : ''}`}
222
+ style={{ background: p.color }}
223
+ />
224
+ ))}
225
+ {Array.from({ length: Math.max(0, unread) }, (_, n) => (
226
+ <li
227
+ key={`u${n}`}
228
+ className="h-1.5 min-w-[3px] flex-1 rounded-full border border-dashed border-(--input)"
229
+ />
230
+ ))}
231
+ </ol>
232
+ );
233
+ }
234
+
235
+ /** What an expanded dossier holds, under its line. */
236
+ export function DossierBody({ children }: { children: ReactNode }) {
237
+ return (
238
+ <div className="grid gap-3 border-t border-(--border) p-3" data-dossier-body>
239
+ {children}
240
+ </div>
241
+ );
242
+ }
243
+
244
+ /** Where a dossier's planning is saved, as a quiet label; hovering or focusing it reads the whole `note`. */
245
+ export function PlanningNote({ note, role, children }: { note: string; role: 'status' | 'note'; children: ReactNode }) {
246
+ return (
247
+ <Tooltip>
248
+ <TooltipTrigger asChild>
249
+ <span
250
+ tabIndex={0}
251
+ role={role}
252
+ aria-label={note}
253
+ data-structure-sync
254
+ className="rounded whitespace-nowrap text-(--muted-foreground) focus-visible:outline-2 focus-visible:outline-(--primary)"
255
+ >
256
+ {children}
257
+ </span>
258
+ </TooltipTrigger>
259
+ <TooltipPopup side="bottom">{note}</TooltipPopup>
260
+ </Tooltip>
261
+ );
262
+ }
@@ -0,0 +1,85 @@
1
+ import { ChevronDownIcon } from 'lucide-react';
2
+ import { forwardRef, type ReactNode } from 'react';
3
+
4
+ import { Button } from '../actions/Button';
5
+ import { Checkbox } from '../forms/Checkbox';
6
+ import { Popover } from '../overlays/Popover';
7
+ import { buttonKind } from './ButtonKinds';
8
+
9
+ /** The List's filters: menus of checklists, then the active choices as chips that remove themselves, then Clear. */
10
+ export const FilterBar = forwardRef<HTMLDivElement, { children: ReactNode }>(({ children }, ref) => (
11
+ <div ref={ref} data-item-filters className="flex flex-wrap items-center gap-1.5">
12
+ {children}
13
+ </div>
14
+ ));
15
+
16
+ FilterBar.displayName = 'FilterBar';
17
+
18
+ interface FilterMenuProps {
19
+ /** What the menu filters, as `data-filter`. */
20
+ which: string;
21
+ name: string;
22
+ /** How many of its choices are on, after its name. */
23
+ picked: number;
24
+ children: ReactNode;
25
+ }
26
+
27
+ /** A filter's button, its name and how many choices are on, opening its checklist. */
28
+ export function FilterMenu({ which, name, picked, children }: FilterMenuProps) {
29
+ return (
30
+ <Popover>
31
+ <Popover.Trigger asChild>
32
+ <Button {...buttonKind('other')} data-filter={which} rightIcon={<ChevronDownIcon />}>
33
+ {name}
34
+ {picked > 0 && ` · ${picked}`}
35
+ </Button>
36
+ </Popover.Trigger>
37
+ <Popover.Content side="bottom" align="start">
38
+ {children}
39
+ </Popover.Content>
40
+ </Popover>
41
+ );
42
+ }
43
+
44
+ /** A filter menu's checklist. */
45
+ export function FilterChoices({ children }: { children: ReactNode }) {
46
+ return <div className="grid w-52 gap-0.5">{children}</div>;
47
+ }
48
+
49
+ /** One choice in a filter's checklist: its checkbox, then what it is, such as a badge. */
50
+ export function FilterChoice({
51
+ checked,
52
+ onToggle,
53
+ children,
54
+ }: {
55
+ checked: boolean;
56
+ onToggle: () => void;
57
+ children: ReactNode;
58
+ }) {
59
+ return (
60
+ <label
61
+ data-filter-choice
62
+ className="flex cursor-pointer items-center gap-2 rounded-md px-1.5 py-1 text-xs hover:bg-(--accent)"
63
+ >
64
+ <Checkbox checked={checked} onChange={onToggle} />
65
+ {children}
66
+ </label>
67
+ );
68
+ }
69
+
70
+ /** An active choice as a chip, such as a badge ending in ×, which removes the choice. */
71
+ export function FilterChip({
72
+ removeLabel,
73
+ onRemove,
74
+ children,
75
+ }: {
76
+ removeLabel: string;
77
+ onRemove: () => void;
78
+ children: ReactNode;
79
+ }) {
80
+ return (
81
+ <button type="button" data-filter-chip aria-label={removeLabel} title={removeLabel} onClick={onRemove}>
82
+ {children}
83
+ </button>
84
+ );
85
+ }