@lar-works/design-system 0.2.1 → 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.
- package/README.md +5 -1
- package/dist/actions/Button.d.ts +39 -1
- package/dist/actions/Button.js +39 -9
- package/dist/actions/Button.js.map +1 -1
- package/dist/actions/ButtonLink.d.ts +5 -1
- package/dist/actions/ButtonLink.js +28 -2
- package/dist/actions/ButtonLink.js.map +1 -1
- package/dist/actions/ButtonRecipes.js +7 -0
- package/dist/actions/ButtonRecipes.js.map +1 -0
- package/dist/actions/IconButton.d.ts +2 -2
- package/dist/actions/IconButton.js +1 -1
- package/dist/actions/IconButton.js.map +1 -1
- package/dist/actions/ThemeSwitch.js +1 -1
- package/dist/board/ActivityLine.d.ts +36 -0
- package/dist/board/ActivityLine.js +144 -0
- package/dist/board/ActivityLine.js.map +1 -0
- package/dist/board/ActivityTrack.d.ts +11 -0
- package/dist/board/ActivityTrack.js +25 -0
- package/dist/board/ActivityTrack.js.map +1 -0
- package/dist/board/AddItem.d.ts +82 -0
- package/dist/board/AddItem.js +185 -0
- package/dist/board/AddItem.js.map +1 -0
- package/dist/board/Archive.d.ts +21 -0
- package/dist/board/Archive.js +63 -0
- package/dist/board/Archive.js.map +1 -0
- package/dist/board/Attention.d.ts +66 -0
- package/dist/board/Attention.js +122 -0
- package/dist/board/Attention.js.map +1 -0
- package/dist/board/BoardShell.d.ts +16 -0
- package/dist/board/BoardShell.js +35 -0
- package/dist/board/BoardShell.js.map +1 -0
- package/dist/board/BoardTitleBar.d.ts +50 -0
- package/dist/board/BoardTitleBar.js +125 -0
- package/dist/board/BoardTitleBar.js.map +1 -0
- package/dist/board/ButtonKinds.d.ts +24 -0
- package/dist/board/ButtonKinds.js +19 -0
- package/dist/board/ButtonKinds.js.map +1 -0
- package/dist/board/Cleanup.d.ts +8 -0
- package/dist/board/Cleanup.js +15 -0
- package/dist/board/Cleanup.js.map +1 -0
- package/dist/board/Counters.d.ts +101 -0
- package/dist/board/Counters.js +202 -0
- package/dist/board/Counters.js.map +1 -0
- package/dist/board/DataAttributes.d.ts +6 -0
- package/dist/board/Dependencies.d.ts +17 -0
- package/dist/board/Dependencies.js +44 -0
- package/dist/board/Dependencies.js.map +1 -0
- package/dist/board/Desk.d.ts +52 -0
- package/dist/board/Desk.js +130 -0
- package/dist/board/Desk.js.map +1 -0
- package/dist/board/Dossier.d.ts +100 -0
- package/dist/board/Dossier.js +194 -0
- package/dist/board/Dossier.js.map +1 -0
- package/dist/board/Filters.d.ts +33 -0
- package/dist/board/Filters.js +64 -0
- package/dist/board/Filters.js.map +1 -0
- package/dist/board/ItemDetails.d.ts +167 -0
- package/dist/board/ItemDetails.js +339 -0
- package/dist/board/ItemDetails.js.map +1 -0
- package/dist/board/ItemDialog.d.ts +73 -0
- package/dist/board/ItemDialog.js +140 -0
- package/dist/board/ItemDialog.js.map +1 -0
- package/dist/board/ItemParts.d.ts +42 -0
- package/dist/board/ItemParts.js +82 -0
- package/dist/board/ItemParts.js.map +1 -0
- package/dist/board/ItemProgress.d.ts +56 -0
- package/dist/board/ItemProgress.js +138 -0
- package/dist/board/ItemProgress.js.map +1 -0
- package/dist/board/List.d.ts +65 -0
- package/dist/board/List.js +118 -0
- package/dist/board/List.js.map +1 -0
- package/dist/board/LoadingScreen.d.ts +38 -0
- package/dist/board/LoadingScreen.js +74 -0
- package/dist/board/LoadingScreen.js.map +1 -0
- package/dist/board/NeedsYou.d.ts +13 -0
- package/dist/board/NeedsYou.js +31 -0
- package/dist/board/NeedsYou.js.map +1 -0
- package/dist/board/Onboarding.d.ts +53 -0
- package/dist/board/Onboarding.js +122 -0
- package/dist/board/Onboarding.js.map +1 -0
- package/dist/board/PartsList.d.ts +60 -0
- package/dist/board/PartsList.js +115 -0
- package/dist/board/PartsList.js.map +1 -0
- package/dist/board/ProjectIcon.d.ts +51 -0
- package/dist/board/ProjectIcon.js +120 -0
- package/dist/board/ProjectIcon.js.map +1 -0
- package/dist/board/PullRequests.d.ts +43 -0
- package/dist/board/PullRequests.js +83 -0
- package/dist/board/PullRequests.js.map +1 -0
- package/dist/board/RowStyles.js +14 -0
- package/dist/board/RowStyles.js.map +1 -0
- package/dist/board/Settings.d.ts +54 -0
- package/dist/board/Settings.js +112 -0
- package/dist/board/Settings.js.map +1 -0
- package/dist/board/Slices.d.ts +32 -0
- package/dist/board/Slices.js +88 -0
- package/dist/board/Slices.js.map +1 -0
- package/dist/board/SourceIcon.d.ts +12 -0
- package/dist/board/SourceIcon.js +24 -0
- package/dist/board/SourceIcon.js.map +1 -0
- package/dist/board/StagePane.d.ts +43 -0
- package/dist/board/StagePane.js +97 -0
- package/dist/board/StagePane.js.map +1 -0
- package/dist/board/StageRow.d.ts +141 -0
- package/dist/board/StageRow.js +287 -0
- package/dist/board/StageRow.js.map +1 -0
- package/dist/board/StageTrack.d.ts +18 -0
- package/dist/board/StageTrack.js +38 -0
- package/dist/board/StageTrack.js.map +1 -0
- package/dist/board/StartControls.d.ts +30 -0
- package/dist/board/StartControls.js +51 -0
- package/dist/board/StartControls.js.map +1 -0
- package/dist/board/StatusColors.d.ts +5 -0
- package/dist/board/StatusColors.js +17 -0
- package/dist/board/StatusColors.js.map +1 -0
- package/dist/board/StatusGlyph.d.ts +18 -0
- package/dist/board/StatusGlyph.js +51 -0
- package/dist/board/StatusGlyph.js.map +1 -0
- package/dist/board/Threads.d.ts +13 -0
- package/dist/board/Threads.js +35 -0
- package/dist/board/Threads.js.map +1 -0
- package/dist/board/TrackerLabels.d.ts +27 -0
- package/dist/board/TrackerLabels.js +56 -0
- package/dist/board/TrackerLabels.js.map +1 -0
- package/dist/board/UpdatePill.d.ts +52 -0
- package/dist/board/UpdatePill.js +188 -0
- package/dist/board/UpdatePill.js.map +1 -0
- package/dist/board/Vocabulary.d.ts +56 -0
- package/dist/board/Vocabulary.js +104 -0
- package/dist/board/Vocabulary.js.map +1 -0
- package/dist/board/Warnings.d.ts +35 -0
- package/dist/board/Warnings.js +85 -0
- package/dist/board/Warnings.js.map +1 -0
- package/dist/board/WorkMap.d.ts +136 -0
- package/dist/board/WorkMap.js +274 -0
- package/dist/board/WorkMap.js.map +1 -0
- package/dist/board/index.d.ts +42 -0
- package/dist/collections/CollectionState.d.ts +10 -1
- package/dist/collections/CollectionState.js +12 -5
- package/dist/collections/CollectionState.js.map +1 -1
- package/dist/collections/ResultList.js +1 -1
- package/dist/collections/ScrollRow.js +1 -1
- package/dist/collections/VirtualList.js +1 -1
- package/dist/display/Avatar.d.ts +5 -2
- package/dist/display/Avatar.js +2 -2
- package/dist/display/Avatar.js.map +1 -1
- package/dist/display/Badge.d.ts +6 -1
- package/dist/display/Badge.js +9 -4
- package/dist/display/Badge.js.map +1 -1
- package/dist/display/CheckList.js +1 -1
- package/dist/display/Comment.d.ts +12 -0
- package/dist/display/Comment.js +39 -0
- package/dist/display/Comment.js.map +1 -0
- package/dist/display/CopyButton.d.ts +10 -2
- package/dist/display/CopyButton.js +29 -16
- package/dist/display/CopyButton.js.map +1 -1
- package/dist/display/Diagram.d.ts +17 -0
- package/dist/display/Diagram.js +49 -0
- package/dist/display/Diagram.js.map +1 -0
- package/dist/display/ImagePicker.js +1 -1
- package/dist/display/InfoBox.js +2 -2
- package/dist/display/InsetPanel.d.ts +3 -1
- package/dist/display/InsetPanel.js +7 -4
- package/dist/display/InsetPanel.js.map +1 -1
- package/dist/display/ItemAction.js +2 -2
- package/dist/display/LabelChip.d.ts +26 -0
- package/dist/display/LabelChip.js +41 -0
- package/dist/display/LabelChip.js.map +1 -0
- package/dist/display/LabelTint.js +60 -0
- package/dist/display/LabelTint.js.map +1 -0
- package/dist/display/Person.d.ts +5 -0
- package/dist/display/Person.js +19 -0
- package/dist/display/Person.js.map +1 -0
- package/dist/display/PropertySheet.js +1 -1
- package/dist/display/RadioChoice.d.ts +9 -2
- package/dist/display/RadioChoice.js +5 -1
- package/dist/display/RadioChoice.js.map +1 -1
- package/dist/display/RatingLink.js +1 -1
- package/dist/display/RichText.d.ts +12 -0
- package/dist/display/RichText.js +94 -0
- package/dist/display/RichText.js.map +1 -0
- package/dist/display/RowList.js +1 -1
- package/dist/display/index.d.ts +6 -1
- package/dist/feedback/Alert.js +1 -1
- package/dist/feedback/AsyncState.js +1 -1
- package/dist/feedback/DismissButton.d.ts +12 -0
- package/dist/feedback/DismissButton.js +20 -0
- package/dist/feedback/DismissButton.js.map +1 -0
- package/dist/feedback/ErrorNotification.js +2 -0
- package/dist/feedback/ErrorNotification.js.map +1 -1
- package/dist/feedback/FormResult.d.ts +16 -0
- package/dist/feedback/FormResult.js +30 -0
- package/dist/feedback/FormResult.js.map +1 -0
- package/dist/feedback/LiveRegion.d.ts +7 -0
- package/dist/feedback/LiveRegion.js +15 -0
- package/dist/feedback/LiveRegion.js.map +1 -0
- package/dist/feedback/Loading.d.ts +19 -0
- package/dist/feedback/Loading.js +63 -0
- package/dist/feedback/Loading.js.map +1 -0
- package/dist/feedback/Notifications.d.ts +35 -1
- package/dist/feedback/Notifications.js +196 -4
- package/dist/feedback/Notifications.js.map +1 -1
- package/dist/feedback/Progress.d.ts +15 -0
- package/dist/feedback/Progress.js +38 -0
- package/dist/feedback/Progress.js.map +1 -0
- package/dist/feedback/ProgressStatusRow.js +1 -1
- package/dist/feedback/StatusIndicator.d.ts +6 -1
- package/dist/feedback/StatusIndicator.js +19 -5
- package/dist/feedback/StatusIndicator.js.map +1 -1
- package/dist/feedback/index.d.ts +8 -4
- package/dist/forms/Checkbox.js +1 -1
- package/dist/forms/ColorSwatches.d.ts +21 -0
- package/dist/forms/ColorSwatches.js +26 -0
- package/dist/forms/ColorSwatches.js.map +1 -0
- package/dist/forms/FormSection.d.ts +68 -6
- package/dist/forms/FormSection.js +139 -8
- package/dist/forms/FormSection.js.map +1 -1
- package/dist/forms/HiddenField.d.ts +6 -0
- package/dist/forms/HiddenField.js +13 -0
- package/dist/forms/HiddenField.js.map +1 -0
- package/dist/forms/Input.d.ts +12 -2
- package/dist/forms/Input.js +10 -3
- package/dist/forms/Input.js.map +1 -1
- package/dist/forms/LabelPicker.d.ts +43 -0
- package/dist/forms/LabelPicker.js +107 -0
- package/dist/forms/LabelPicker.js.map +1 -0
- package/dist/forms/MarkdownEditor.d.ts +21 -0
- package/dist/forms/MarkdownEditor.js +175 -0
- package/dist/forms/MarkdownEditor.js.map +1 -0
- package/dist/forms/MarkdownToolbar.js +204 -0
- package/dist/forms/MarkdownToolbar.js.map +1 -0
- package/dist/forms/OptionSelect.d.ts +30 -9
- package/dist/forms/OptionSelect.js +53 -13
- package/dist/forms/OptionSelect.js.map +1 -1
- package/dist/forms/Select.d.ts +4 -1
- package/dist/forms/Select.js +3 -1
- package/dist/forms/Select.js.map +1 -1
- package/dist/forms/Switch.d.ts +4 -1
- package/dist/forms/Switch.js +5 -2
- package/dist/forms/Switch.js.map +1 -1
- package/dist/forms/TagInput.js +1 -1
- package/dist/forms/index.d.ts +7 -3
- package/dist/foundations/AmbientMotion.d.ts +2 -0
- package/dist/foundations/AmbientMotion.js +39 -0
- package/dist/foundations/AmbientMotion.js.map +1 -0
- package/dist/foundations/DesignSystemProvider.d.ts +34 -0
- package/dist/foundations/DesignSystemProvider.js +26 -1
- package/dist/foundations/DesignSystemProvider.js.map +1 -1
- package/dist/foundations/index.d.ts +2 -1
- package/dist/icons/BrandIcons.d.ts +8 -2
- package/dist/icons/BrandIcons.js +14 -3
- package/dist/icons/BrandIcons.js.map +1 -1
- package/dist/icons/dynamic.d.ts +2 -0
- package/dist/icons/dynamic.js +1 -0
- package/dist/icons/index.d.ts +2 -2
- package/dist/icons/index.js +1 -1
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +71 -10
- package/dist/index.js +78 -21
- package/dist/layout/Site.js +1 -1
- package/dist/layout/TitleBar.js +1 -1
- package/dist/layout/index.d.ts +2 -2
- package/dist/layout/index.js +3 -3
- package/dist/layout/toolbar/CommandPaletteTrigger.d.ts +17 -2
- package/dist/layout/toolbar/CommandPaletteTrigger.js +89 -6
- package/dist/layout/toolbar/CommandPaletteTrigger.js.map +1 -1
- package/dist/layout/toolbar/TriggerFit.js +56 -0
- package/dist/layout/toolbar/TriggerFit.js.map +1 -0
- package/dist/navigation/CollectionBrowseSelector.js +1 -1
- package/dist/navigation/CollectionViewToggle.d.ts +26 -0
- package/dist/navigation/CollectionViewToggle.js +54 -23
- package/dist/navigation/CollectionViewToggle.js.map +1 -1
- package/dist/navigation/DrilldownBrowseSelector.js +1 -1
- package/dist/navigation/FolderSelector.js +2 -2
- package/dist/navigation/SortMenu.d.ts +10 -0
- package/dist/navigation/SortMenu.js +33 -0
- package/dist/navigation/SortMenu.js.map +1 -0
- package/dist/navigation/index.d.ts +3 -2
- package/dist/overlays/CommandPalette.d.ts +38 -4
- package/dist/overlays/CommandPalette.js +140 -54
- package/dist/overlays/CommandPalette.js.map +1 -1
- package/dist/overlays/Drawer.js +1 -1
- package/dist/overlays/DropdownMenu.d.ts +7 -1
- package/dist/overlays/DropdownMenu.js +13 -2
- package/dist/overlays/DropdownMenu.js.map +1 -1
- package/dist/overlays/HelpTip.d.ts +8 -0
- package/dist/overlays/HelpTip.js +29 -0
- package/dist/overlays/HelpTip.js.map +1 -0
- package/dist/overlays/ImageViewer.js +2 -2
- package/dist/overlays/Modal.d.ts +5 -0
- package/dist/overlays/Modal.js +17 -2
- package/dist/overlays/Modal.js.map +1 -1
- package/dist/overlays/ModalExpandButton.d.ts +18 -0
- package/dist/overlays/ModalExpandButton.js +43 -0
- package/dist/overlays/ModalExpandButton.js.map +1 -0
- package/dist/overlays/Popover.d.ts +2 -1
- package/dist/overlays/Popover.js +1 -0
- package/dist/overlays/Popover.js.map +1 -1
- package/dist/overlays/index.d.ts +4 -2
- package/dist/showcase/Cards.js +1 -1
- package/dist/showcase/FeatureRow.js +1 -1
- package/dist/showcase/PhotoSearchConcept.js +1 -1
- package/dist/showcase/ProductBand.js +1 -1
- package/dist/showcase/Status.js +1 -1
- package/dist/typography/Code.d.ts +18 -0
- package/dist/typography/Code.js +24 -0
- package/dist/typography/Code.js.map +1 -0
- package/dist/typography/Link.d.ts +7 -2
- package/dist/typography/Link.js +15 -5
- package/dist/typography/Link.js.map +1 -1
- package/dist/typography/Typography.d.ts +19 -1
- package/dist/typography/Typography.js +11 -3
- package/dist/typography/Typography.js.map +1 -1
- package/dist/typography/index.d.ts +3 -3
- package/package.json +26 -3
- package/src/actions/Button.tsx +78 -11
- package/src/actions/ButtonLink.tsx +34 -0
- package/src/actions/ButtonRecipes.ts +10 -0
- package/src/actions/IconButton.tsx +7 -4
- package/src/board/ActivityLine.tsx +176 -0
- package/src/board/ActivityTrack.tsx +23 -0
- package/src/board/AddItem.tsx +259 -0
- package/src/board/Archive.tsx +75 -0
- package/src/board/Attention.tsx +135 -0
- package/src/board/BoardShell.tsx +30 -0
- package/src/board/BoardTitleBar.tsx +167 -0
- package/src/board/ButtonKinds.ts +32 -0
- package/src/board/Cleanup.tsx +19 -0
- package/src/board/Counters.tsx +224 -0
- package/src/board/DataAttributes.ts +3 -0
- package/src/board/Dependencies.tsx +49 -0
- package/src/board/Desk.tsx +155 -0
- package/src/board/Dossier.tsx +262 -0
- package/src/board/Filters.tsx +85 -0
- package/src/board/ItemDetails.tsx +435 -0
- package/src/board/ItemDialog.tsx +179 -0
- package/src/board/ItemParts.tsx +128 -0
- package/src/board/ItemProgress.tsx +164 -0
- package/src/board/List.tsx +154 -0
- package/src/board/LoadingScreen.tsx +78 -0
- package/src/board/NeedsYou.tsx +30 -0
- package/src/board/Onboarding.tsx +124 -0
- package/src/board/PartsList.tsx +160 -0
- package/src/board/ProjectIcon.tsx +172 -0
- package/src/board/PullRequests.tsx +106 -0
- package/src/board/RowStyles.ts +17 -0
- package/src/board/Settings.tsx +124 -0
- package/src/board/Slices.tsx +103 -0
- package/src/board/SourceIcon.tsx +33 -0
- package/src/board/StagePane.tsx +128 -0
- package/src/board/StageRow.tsx +320 -0
- package/src/board/StageTrack.tsx +61 -0
- package/src/board/StartControls.tsx +77 -0
- package/src/board/StatusColors.ts +28 -0
- package/src/board/StatusGlyph.tsx +70 -0
- package/src/board/Threads.tsx +38 -0
- package/src/board/TrackerLabels.tsx +75 -0
- package/src/board/UpdatePill.tsx +222 -0
- package/src/board/Vocabulary.tsx +155 -0
- package/src/board/Warnings.tsx +83 -0
- package/src/board/WorkMap.tsx +436 -0
- package/src/board/base.css +121 -0
- package/src/board/button-kinds.css +8 -0
- package/src/board/index.ts +224 -0
- package/src/board/items.css +75 -0
- package/src/board/loading-screen.css +171 -0
- package/src/board/rows.css +180 -0
- package/src/board/title-bar.css +56 -0
- package/src/board/tokens.css +52 -0
- package/src/board.css +19 -0
- package/src/collections/CollectionState.tsx +20 -7
- package/src/display/Avatar.tsx +6 -3
- package/src/display/Badge.tsx +25 -3
- package/src/display/Comment.tsx +26 -0
- package/src/display/CopyButton.tsx +48 -18
- package/src/display/Diagram.tsx +59 -0
- package/src/display/InsetPanel.tsx +4 -1
- package/src/display/LabelChip.tsx +73 -0
- package/src/display/LabelTint.ts +72 -0
- package/src/display/Person.tsx +11 -0
- package/src/display/RadioChoice.tsx +11 -2
- package/src/display/RichText.tsx +114 -0
- package/src/display/index.ts +5 -0
- package/src/feedback/DismissButton.tsx +28 -0
- package/src/feedback/ErrorNotification.ts +3 -0
- package/src/feedback/FormResult.tsx +50 -0
- package/src/feedback/LiveRegion.tsx +10 -0
- package/src/feedback/Loading.tsx +75 -0
- package/src/feedback/Notifications.tsx +267 -2
- package/src/feedback/Progress.tsx +44 -0
- package/src/feedback/StatusIndicator.tsx +34 -3
- package/src/feedback/index.ts +12 -2
- package/src/forms/ColorSwatches.tsx +50 -0
- package/src/forms/FormSection.tsx +245 -10
- package/src/forms/HiddenField.tsx +4 -0
- package/src/forms/Input.tsx +26 -4
- package/src/forms/LabelPicker.tsx +140 -0
- package/src/forms/MarkdownEditor.tsx +283 -0
- package/src/forms/MarkdownToolbar.tsx +267 -0
- package/src/forms/OptionSelect.tsx +110 -25
- package/src/forms/Select.tsx +20 -13
- package/src/forms/Switch.tsx +16 -2
- package/src/forms/index.ts +16 -2
- package/src/foundations/AmbientMotion.ts +51 -0
- package/src/foundations/DesignSystemProvider.tsx +19 -0
- package/src/foundations/index.ts +1 -0
- package/src/foundations/theme.css +64 -0
- package/src/icons/BrandIcons.tsx +12 -3
- package/src/icons/dynamic.ts +4 -0
- package/src/icons/index.ts +1 -1
- package/src/index.ts +2 -1
- package/src/layout/index.ts +1 -1
- package/src/layout/toolbar/CommandPaletteTrigger.tsx +187 -31
- package/src/layout/toolbar/TriggerFit.ts +84 -0
- package/src/navigation/CollectionViewToggle.tsx +94 -24
- package/src/navigation/SortMenu.tsx +41 -0
- package/src/navigation/index.ts +2 -1
- package/src/overlays/CommandPalette.tsx +190 -60
- package/src/overlays/DropdownMenu.tsx +12 -1
- package/src/overlays/HelpTip.tsx +29 -0
- package/src/overlays/Modal.tsx +23 -0
- package/src/overlays/ModalExpandButton.tsx +48 -0
- package/src/overlays/Popover.tsx +3 -1
- package/src/overlays/index.ts +9 -1
- package/src/styles.css +3 -1
- package/src/typography/Code.tsx +24 -0
- package/src/typography/Link.tsx +19 -10
- package/src/typography/Typography.tsx +25 -2
- package/src/typography/index.ts +1 -1
- package/dist/feedback/index.js +0 -11
- package/dist/typography/index.js +0 -4
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Button } from "../actions/Button.js";
|
|
2
|
+
import { Badge } from "../display/Badge.js";
|
|
3
|
+
import { Loading } from "../feedback/Loading.js";
|
|
4
|
+
import { SidebarNavigationItem } from "../layout/sidebar/SidebarNavigationItem.js";
|
|
5
|
+
import { buttonKind } from "./ButtonKinds.js";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
// src/board/List.tsx
|
|
8
|
+
/** The title bar's List button, "List <count>": an App control whose label folds away, for screen readers only, on a
|
|
9
|
+
* title bar under 70rem. */
|
|
10
|
+
function ListButton({ label, icon, count, loadingLabel, onOpen }) {
|
|
11
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
12
|
+
...buttonKind("control"),
|
|
13
|
+
className: "list-button px-2",
|
|
14
|
+
leftIcon: icon,
|
|
15
|
+
title: label,
|
|
16
|
+
onClick: onOpen,
|
|
17
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
18
|
+
className: "@max-[70rem]:sr-only",
|
|
19
|
+
children: label
|
|
20
|
+
}), count === void 0 ? /* @__PURE__ */ jsx(Loading, {
|
|
21
|
+
presentation: "inline",
|
|
22
|
+
title: loadingLabel
|
|
23
|
+
}) : /* @__PURE__ */ jsx(Badge, { children: count })]
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** A group in the List's left pane: its icon, its name and how many of its items match; a group still reading shows
|
|
27
|
+
* no count. */
|
|
28
|
+
function ListGroupItem({ label, count, icon, active, onPick }) {
|
|
29
|
+
return /* @__PURE__ */ jsxs(SidebarNavigationItem, {
|
|
30
|
+
active,
|
|
31
|
+
onClick: onPick,
|
|
32
|
+
children: [
|
|
33
|
+
icon,
|
|
34
|
+
/* @__PURE__ */ jsx("span", {
|
|
35
|
+
className: "name min-w-0 flex-1 truncate text-left",
|
|
36
|
+
children: label
|
|
37
|
+
}),
|
|
38
|
+
count !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
39
|
+
className: "count text-base-700 text-xs tabular-nums",
|
|
40
|
+
children: count
|
|
41
|
+
})
|
|
42
|
+
]
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/** The List's right pane's head: the search with Add item, then the chosen group with its count, scope toggle and sort,
|
|
46
|
+
* then the filters. */
|
|
47
|
+
function ListHeader({ search, add, title, count, scope, sort, filters }) {
|
|
48
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
49
|
+
className: "flex shrink-0 flex-col gap-2 px-5 sm:px-6",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsxs("div", {
|
|
52
|
+
className: "flex items-center gap-2 [&>[data-slot=button]]:shrink-0",
|
|
53
|
+
children: [search, add]
|
|
54
|
+
}),
|
|
55
|
+
/* @__PURE__ */ jsxs("div", {
|
|
56
|
+
className: "flex min-w-0 items-center gap-2",
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ jsx("span", {
|
|
59
|
+
className: "text-base-content truncate text-sm font-semibold",
|
|
60
|
+
children: title
|
|
61
|
+
}),
|
|
62
|
+
count !== void 0 && /* @__PURE__ */ jsx(Badge, { children: count }),
|
|
63
|
+
scope,
|
|
64
|
+
/* @__PURE__ */ jsx("span", {
|
|
65
|
+
className: "sort ml-auto",
|
|
66
|
+
children: sort
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}),
|
|
70
|
+
filters
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** An item in the List's right pane, opening the item dialog. */
|
|
75
|
+
function ListItemRow({ item, name, onOpen, source, reference, title, repoIcon, meta, chips, details }) {
|
|
76
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
77
|
+
type: "button",
|
|
78
|
+
onClick: onOpen,
|
|
79
|
+
"data-item": item,
|
|
80
|
+
title: name,
|
|
81
|
+
className: "hover:bg-base-200/70 focus-visible:outline-primary flex w-full min-w-0 items-start gap-2 rounded-md px-2 py-1.5 text-left focus-visible:outline-2 focus-visible:-outline-offset-2",
|
|
82
|
+
children: [source, /* @__PURE__ */ jsxs("span", {
|
|
83
|
+
className: "min-w-0 flex-1",
|
|
84
|
+
children: [
|
|
85
|
+
/* @__PURE__ */ jsxs("span", {
|
|
86
|
+
className: "text-base-content block truncate text-[13px] leading-5 font-medium",
|
|
87
|
+
children: [reference ? /* @__PURE__ */ jsxs("span", {
|
|
88
|
+
className: "text-base-700 font-normal",
|
|
89
|
+
children: [reference, " "]
|
|
90
|
+
}) : null, title]
|
|
91
|
+
}),
|
|
92
|
+
/* @__PURE__ */ jsxs("span", {
|
|
93
|
+
className: "flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1",
|
|
94
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
95
|
+
className: "text-base-700 me-1 flex min-w-0 items-center gap-1 text-[11px] leading-4",
|
|
96
|
+
children: [repoIcon, /* @__PURE__ */ jsx("span", {
|
|
97
|
+
className: "min-w-0 truncate tabular-nums",
|
|
98
|
+
children: meta
|
|
99
|
+
})]
|
|
100
|
+
}), chips]
|
|
101
|
+
}),
|
|
102
|
+
details
|
|
103
|
+
]
|
|
104
|
+
})]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/** What the List says in place of items: nothing matches, nothing in List, or still loading. With `reading`, it
|
|
108
|
+
* follows items as more may arrive. */
|
|
109
|
+
function ListNote({ children, reading = false }) {
|
|
110
|
+
return /* @__PURE__ */ jsx("p", {
|
|
111
|
+
className: `text-base-700 m-0 p-4 text-sm ${reading ? "" : "empty"}`,
|
|
112
|
+
"data-reading": reading || void 0,
|
|
113
|
+
children
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
export { ListButton, ListGroupItem, ListHeader, ListItemRow, ListNote };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=List.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.js","names":[],"sources":["../../src/board/List.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Button } from '../actions/Button';\nimport { Badge } from '../display/Badge';\nimport { Loading } from '../feedback/Loading';\nimport { SidebarNavigationItem } from '../layout/sidebar/SidebarNavigationItem';\nimport { buttonKind } from './ButtonKinds';\n\ninterface ListButtonProps {\n label: string;\n icon: ReactNode;\n /** How many items are in List; none while the first read could still add some, which shows a loading cue. */\n count: number | undefined;\n loadingLabel: string;\n onOpen: () => void;\n}\n\n/** The title bar's List button, \"List <count>\": an App control whose label folds away, for screen readers only, on a\n * title bar under 70rem. */\nexport function ListButton({ label, icon, count, loadingLabel, onOpen }: ListButtonProps) {\n return (\n <Button {...buttonKind('control')} className=\"list-button px-2\" leftIcon={icon} title={label} onClick={onOpen}>\n <span className=\"@max-[70rem]:sr-only\">{label}</span>\n {count === undefined ? <Loading presentation=\"inline\" title={loadingLabel} /> : <Badge>{count}</Badge>}\n </Button>\n );\n}\n\n/** A group in the List's left pane: its icon, its name and how many of its items match; a group still reading shows\n * no count. */\nexport function ListGroupItem({\n label,\n count,\n icon,\n active,\n onPick,\n}: {\n label: string;\n count?: number;\n icon: ReactNode;\n active: boolean;\n onPick: () => void;\n}) {\n return (\n <SidebarNavigationItem active={active} onClick={onPick}>\n {icon}\n <span className=\"name min-w-0 flex-1 truncate text-left\">{label}</span>\n {count !== undefined && <span className=\"count text-base-700 text-xs tabular-nums\">{count}</span>}\n </SidebarNavigationItem>\n );\n}\n\ninterface ListHeaderProps {\n /** The search field, and beside it Add item. */\n search: ReactNode;\n add: ReactNode;\n /** The chosen group's name and how many of its items show; no count while it's still reading. */\n title: string;\n count?: number;\n /** After the count: a toggle that scopes the board to the group, and at the right the sort menu. */\n scope?: ReactNode;\n sort: ReactNode;\n filters: ReactNode;\n}\n\n/** The List's right pane's head: the search with Add item, then the chosen group with its count, scope toggle and sort,\n * then the filters. */\nexport function ListHeader({ search, add, title, count, scope, sort, filters }: ListHeaderProps) {\n return (\n <div className=\"flex shrink-0 flex-col gap-2 px-5 sm:px-6\">\n <div className=\"flex items-center gap-2 [&>[data-slot=button]]:shrink-0\">\n {search}\n {add}\n </div>\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"text-base-content truncate text-sm font-semibold\">{title}</span>\n {count !== undefined && <Badge>{count}</Badge>}\n {scope}\n <span className=\"sort ml-auto\">{sort}</span>\n </div>\n {filters}\n </div>\n );\n}\n\ninterface ListItemRowProps {\n /** The item's id, as `data-item`. */\n item: string;\n /** Its title in full, for the tooltip. */\n name: string;\n onOpen: () => void;\n /** Where the item comes from. */\n source: ReactNode;\n /** The ticket's reference, such as \"#61\", before the title; none for an item with no ticket. */\n reference?: string;\n title: string;\n /** The repository's icon, when the list mixes repositories, and the meta line's text: its name and age. */\n repoIcon?: ReactNode;\n meta: string;\n /** After the meta line: the item's kind, labels and sync state. */\n chips?: ReactNode;\n /** More under the meta line, such as a work item's fields. */\n details?: ReactNode;\n}\n\n/** An item in the List's right pane, opening the item dialog. */\nexport function ListItemRow({\n item,\n name,\n onOpen,\n source,\n reference,\n title,\n repoIcon,\n meta,\n chips,\n details,\n}: ListItemRowProps) {\n return (\n <button\n type=\"button\"\n onClick={onOpen}\n data-item={item}\n title={name}\n className=\"hover:bg-base-200/70 focus-visible:outline-primary flex w-full min-w-0 items-start gap-2 rounded-md px-2 py-1.5 text-left focus-visible:outline-2 focus-visible:-outline-offset-2\"\n >\n {source}\n <span className=\"min-w-0 flex-1\">\n <span className=\"text-base-content block truncate text-[13px] leading-5 font-medium\">\n {reference ? <span className=\"text-base-700 font-normal\">{reference} </span> : null}\n {title}\n </span>\n <span className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1\">\n <span className=\"text-base-700 me-1 flex min-w-0 items-center gap-1 text-[11px] leading-4\">\n {repoIcon}\n <span className=\"min-w-0 truncate tabular-nums\">{meta}</span>\n </span>\n {chips}\n </span>\n {details}\n </span>\n </button>\n );\n}\n\n/** What the List says in place of items: nothing matches, nothing in List, or still loading. With `reading`, it\n * follows items as more may arrive. */\nexport function ListNote({ children, reading = false }: { children: ReactNode; reading?: boolean }) {\n return (\n <p className={`text-base-700 m-0 p-4 text-sm ${reading ? '' : 'empty'}`} data-reading={reading || undefined}>\n {children}\n </p>\n );\n}\n"],"mappings":";;;;;;;;;AAmBA,SAAgB,WAAW,EAAE,OAAO,MAAM,OAAO,cAAc,UAA2B;CACtF,OACI,qBAAC,QAAD;EAAQ,GAAI,WAAW,SAAS;EAAG,WAAU;EAAmB,UAAU;EAAM,OAAO;EAAO,SAAS;EAAvG,UAAA,CACI,oBAAC,QAAD;GAAM,WAAU;GAAwB,UAAA;EAAY,CAAA,GACnD,UAAU,KAAA,IAAY,oBAAC,SAAD;GAAS,cAAa;GAAS,OAAO;EAAe,CAAA,IAAI,oBAAC,OAAD,EAAA,UAAQ,MAAa,CAAA,CACjG;;AAEhB;;;AAIA,SAAgB,cAAc,EAC1B,OACA,OACA,MACA,QACA,UAOD;CACC,OACI,qBAAC,uBAAD;EAA+B;EAAQ,SAAS;EAAhD,UAAA;GACK;GACD,oBAAC,QAAD;IAAM,WAAU;IAA0C,UAAA;GAAY,CAAA;GACrE,UAAU,KAAA,KAAa,oBAAC,QAAD;IAAM,WAAU;IAA4C,UAAA;GAAY,CAAA;EAC7E;;AAE/B;;;AAiBA,SAAgB,WAAW,EAAE,QAAQ,KAAK,OAAO,OAAO,OAAO,MAAM,WAA4B;CAC7F,OACI,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACI,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACK,QACA,GACA;;GACL,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACI,oBAAC,QAAD;MAAM,WAAU;MAAoD,UAAA;KAAY,CAAA;KAC/E,UAAU,KAAA,KAAa,oBAAC,OAAD,EAAA,UAAQ,MAAa,CAAA;KAC5C;KACD,oBAAC,QAAD;MAAM,WAAU;MAAgB,UAAA;KAAW,CAAA;IAC1C;;GACJ;EACA;;AAEb;;AAuBA,SAAgB,YAAY,EACxB,MACA,MACA,QACA,QACA,WACA,OACA,UACA,MACA,OACA,WACiB;CACjB,OACI,qBAAC,UAAD;EACI,MAAK;EACL,SAAS;EACT,aAAW;EACX,OAAO;EACP,WAAU;EALd,UAAA,CAOK,QACD,qBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA;IACI,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACK,YAAY,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CAA6C,WAAU,GAAO;KAAI,CAAA,IAAA,MAC9E,KACC;;IACN,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACI,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CACK,UACD,oBAAC,QAAD;OAAM,WAAU;OAAiC,UAAA;MAAW,CAAA,CAC1D;KACL,CAAA,GAAA,KACC;;IACL;GACC;EACF,CAAA,CAAA;;AAEhB;;;AAIA,SAAgB,SAAS,EAAE,UAAU,UAAU,SAAqD;CAChG,OACI,oBAAC,KAAD;EAAG,WAAW,iCAAiC,UAAU,KAAK;EAAW,gBAAc,WAAW,KAAA;EAC7F;CACF,CAAA;AAEX"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** The Lar mark's paths on its viewBox, drawn in the order the screen animates them. */
|
|
2
|
+
export interface LoadingMark {
|
|
3
|
+
viewBox: string;
|
|
4
|
+
/** The block, which springs in first, in the brand's block colour. */
|
|
5
|
+
block: string;
|
|
6
|
+
blockColor: string;
|
|
7
|
+
/** The L's centre line, which a stroke `bar` wide traces around the block. */
|
|
8
|
+
centreLine: string;
|
|
9
|
+
bar: number;
|
|
10
|
+
/** The filled L, which stands in for the trace once it is drawn. */
|
|
11
|
+
l: string;
|
|
12
|
+
}
|
|
13
|
+
/** A line of the screen's step text; a new `id` rolls it in. */
|
|
14
|
+
export interface LoadingLine {
|
|
15
|
+
id: number;
|
|
16
|
+
text: string;
|
|
17
|
+
}
|
|
18
|
+
interface LoadingScreenProps {
|
|
19
|
+
mark: LoadingMark;
|
|
20
|
+
/** The product's name after the lockup's "ar", such as "Factory". */
|
|
21
|
+
product: string;
|
|
22
|
+
/** Whether the mark is already drawn, as by the desktop's starting page; otherwise it plays its draw. */
|
|
23
|
+
drawn: boolean;
|
|
24
|
+
/** Fades the screen out, once. */
|
|
25
|
+
leaving: boolean;
|
|
26
|
+
/** The step line, and for a moment after a change the old one rolling out. */
|
|
27
|
+
line: LoadingLine;
|
|
28
|
+
leavingLine?: LoadingLine;
|
|
29
|
+
/** Whether the line rolled in; the first line and every line under reduced motion just show. */
|
|
30
|
+
rolled: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The board's loading screen: the Lar lockup, whose L draws itself around the block, over one line naming the first
|
|
34
|
+
* read's step. It covers the window, drags it, and fades out once.
|
|
35
|
+
*/
|
|
36
|
+
export declare function LoadingScreen({ mark, product, drawn, leaving, line, leavingLine, rolled }: LoadingScreenProps): import("react").JSX.Element;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=LoadingScreen.d.ts.map
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
// src/board/LoadingScreen.tsx
|
|
3
|
+
/**
|
|
4
|
+
* The board's loading screen: the Lar lockup, whose L draws itself around the block, over one line naming the first
|
|
5
|
+
* read's step. It covers the window, drags it, and fades out once.
|
|
6
|
+
*/
|
|
7
|
+
function LoadingScreen({ mark, product, drawn, leaving, line, leavingLine, rolled }) {
|
|
8
|
+
return /* @__PURE__ */ jsx("div", {
|
|
9
|
+
className: `loading-screen ${drawn ? "is-drawn" : ""} ${leaving ? "is-leaving" : ""}`,
|
|
10
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
11
|
+
className: "loading-lockup",
|
|
12
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
13
|
+
className: "loading-wordmark",
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ jsxs("svg", {
|
|
16
|
+
className: "loading-mark",
|
|
17
|
+
viewBox: mark.viewBox,
|
|
18
|
+
"aria-hidden": true,
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ jsx("path", {
|
|
21
|
+
className: "loading-mark-block",
|
|
22
|
+
d: mark.block,
|
|
23
|
+
fill: mark.blockColor
|
|
24
|
+
}),
|
|
25
|
+
/* @__PURE__ */ jsx("path", {
|
|
26
|
+
className: "loading-mark-trace",
|
|
27
|
+
d: mark.centreLine,
|
|
28
|
+
pathLength: 1,
|
|
29
|
+
fill: "none",
|
|
30
|
+
stroke: "currentColor",
|
|
31
|
+
strokeWidth: mark.bar,
|
|
32
|
+
strokeLinecap: "butt",
|
|
33
|
+
strokeLinejoin: "miter"
|
|
34
|
+
}),
|
|
35
|
+
/* @__PURE__ */ jsx("path", {
|
|
36
|
+
className: "loading-mark-fill",
|
|
37
|
+
d: mark.l,
|
|
38
|
+
fill: "currentColor"
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ jsx("span", {
|
|
43
|
+
className: "loading-lar",
|
|
44
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
45
|
+
className: "loading-lar-slide",
|
|
46
|
+
children: "ar"
|
|
47
|
+
})
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ jsx("span", {
|
|
50
|
+
className: "loading-factory",
|
|
51
|
+
children: product
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
55
|
+
className: "loading-line",
|
|
56
|
+
role: "status",
|
|
57
|
+
children: /* @__PURE__ */ jsxs("span", {
|
|
58
|
+
className: "loading-line-slot",
|
|
59
|
+
children: [leavingLine && /* @__PURE__ */ jsx("span", {
|
|
60
|
+
className: "loading-roll-out",
|
|
61
|
+
"aria-hidden": true,
|
|
62
|
+
children: leavingLine.text
|
|
63
|
+
}, leavingLine.id), /* @__PURE__ */ jsx("span", {
|
|
64
|
+
className: rolled ? "loading-roll-in" : void 0,
|
|
65
|
+
children: line.text
|
|
66
|
+
}, line.id)]
|
|
67
|
+
})
|
|
68
|
+
})]
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
export { LoadingScreen };
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=LoadingScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingScreen.js","names":[],"sources":["../../src/board/LoadingScreen.tsx"],"sourcesContent":["/** The Lar mark's paths on its viewBox, drawn in the order the screen animates them. */\nexport interface LoadingMark {\n viewBox: string;\n /** The block, which springs in first, in the brand's block colour. */\n block: string;\n blockColor: string;\n /** The L's centre line, which a stroke `bar` wide traces around the block. */\n centreLine: string;\n bar: number;\n /** The filled L, which stands in for the trace once it is drawn. */\n l: string;\n}\n\n/** A line of the screen's step text; a new `id` rolls it in. */\nexport interface LoadingLine {\n id: number;\n text: string;\n}\n\ninterface LoadingScreenProps {\n mark: LoadingMark;\n /** The product's name after the lockup's \"ar\", such as \"Factory\". */\n product: string;\n /** Whether the mark is already drawn, as by the desktop's starting page; otherwise it plays its draw. */\n drawn: boolean;\n /** Fades the screen out, once. */\n leaving: boolean;\n /** The step line, and for a moment after a change the old one rolling out. */\n line: LoadingLine;\n leavingLine?: LoadingLine;\n /** Whether the line rolled in; the first line and every line under reduced motion just show. */\n rolled: boolean;\n}\n\n/**\n * The board's loading screen: the Lar lockup, whose L draws itself around the block, over one line naming the first\n * read's step. It covers the window, drags it, and fades out once.\n */\nexport function LoadingScreen({ mark, product, drawn, leaving, line, leavingLine, rolled }: LoadingScreenProps) {\n return (\n <div className={`loading-screen ${drawn ? 'is-drawn' : ''} ${leaving ? 'is-leaving' : ''}`}>\n <div className=\"loading-lockup\">\n <div className=\"loading-wordmark\">\n <svg className=\"loading-mark\" viewBox={mark.viewBox} aria-hidden>\n <path className=\"loading-mark-block\" d={mark.block} fill={mark.blockColor} />\n <path\n className=\"loading-mark-trace\"\n d={mark.centreLine}\n pathLength={1}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={mark.bar}\n strokeLinecap=\"butt\"\n strokeLinejoin=\"miter\"\n />\n <path className=\"loading-mark-fill\" d={mark.l} fill=\"currentColor\" />\n </svg>\n <span className=\"loading-lar\">\n <span className=\"loading-lar-slide\">ar</span>\n </span>\n <span className=\"loading-factory\">{product}</span>\n </div>\n <p className=\"loading-line\" role=\"status\">\n <span className=\"loading-line-slot\">\n {leavingLine && (\n <span key={leavingLine.id} className=\"loading-roll-out\" aria-hidden>\n {leavingLine.text}\n </span>\n )}\n <span key={line.id} className={rolled ? 'loading-roll-in' : undefined}>\n {line.text}\n </span>\n </span>\n </p>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAsCA,SAAgB,cAAc,EAAE,MAAM,SAAS,OAAO,SAAS,MAAM,aAAa,UAA8B;CAC5G,OACI,oBAAC,OAAD;EAAK,WAAW,kBAAkB,QAAQ,aAAa,GAAG,GAAG,UAAU,eAAe;EAClF,UAAA,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACI,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACI,qBAAC,OAAD;MAAK,WAAU;MAAe,SAAS,KAAK;MAAS,eAAA;MAArD,UAAA;OACI,oBAAC,QAAD;QAAM,WAAU;QAAqB,GAAG,KAAK;QAAO,MAAM,KAAK;OAAa,CAAA;OAC5E,oBAAC,QAAD;QACI,WAAU;QACV,GAAG,KAAK;QACR,YAAY;QACZ,MAAK;QACL,QAAO;QACP,aAAa,KAAK;QAClB,eAAc;QACd,gBAAe;OAClB,CAAA;OACD,oBAAC,QAAD;QAAM,WAAU;QAAoB,GAAG,KAAK;QAAG,MAAK;OAAgB,CAAA;MACnE;;KACL,oBAAC,QAAD;MAAM,WAAU;MACZ,UAAA,oBAAC,QAAD;OAAM,WAAU;OAAoB,UAAA;MAAQ,CAAA;KAC1C,CAAA;KACN,oBAAC,QAAD;MAAM,WAAU;MAAmB,UAAA;KAAc,CAAA;IAChD;GACL,CAAA,GAAA,oBAAC,KAAD;IAAG,WAAU;IAAe,MAAK;IAC7B,UAAA,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACK,eACG,oBAAC,QAAD;MAA2B,WAAU;MAAmB,eAAA;MACnD,UAAA,YAAY;KACX,GAFK,YAAY,EAEjB,GAEV,oBAAC,QAAD;MAAoB,WAAW,SAAS,oBAAoB,KAAA;MACvD,UAAA,KAAK;KACJ,GAFK,KAAK,EAEV,CACJ;;GACP,CAAA,CACF;;CACJ,CAAA;AAEb"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
/** The reason a piece of work needs you, in the warning tone, then the `actions` that answer it and any `result`. */
|
|
3
|
+
export declare function NeedsYouNotice({ reason, actions, children }: {
|
|
4
|
+
reason: ReactNode;
|
|
5
|
+
actions: ReactNode;
|
|
6
|
+
/** What the last choice left to say, under the actions. */
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
/** What a choice's cleanup left to say, announced. */
|
|
10
|
+
export declare function NeedsYouResult({ children }: {
|
|
11
|
+
children: ReactNode;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=NeedsYou.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { WARNING_PANEL } from "./RowStyles.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
// src/board/NeedsYou.tsx
|
|
4
|
+
/** The reason a piece of work needs you, in the warning tone, then the `actions` that answer it and any `result`. */
|
|
5
|
+
function NeedsYouNotice({ reason, actions, children }) {
|
|
6
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
7
|
+
className: `grid gap-2 ${WARNING_PANEL}`,
|
|
8
|
+
"data-needs-you-reason": true,
|
|
9
|
+
children: [
|
|
10
|
+
/* @__PURE__ */ jsx("p", {
|
|
11
|
+
className: "m-0 font-medium text-(--warning-foreground)",
|
|
12
|
+
children: reason
|
|
13
|
+
}),
|
|
14
|
+
/* @__PURE__ */ jsx("span", {
|
|
15
|
+
className: "flex flex-wrap gap-1.5",
|
|
16
|
+
children: actions
|
|
17
|
+
}),
|
|
18
|
+
children
|
|
19
|
+
]
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** What a choice's cleanup left to say, announced. */
|
|
23
|
+
function NeedsYouResult({ children }) {
|
|
24
|
+
return /* @__PURE__ */ jsx("p", {
|
|
25
|
+
role: "alert",
|
|
26
|
+
children
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export { NeedsYouNotice, NeedsYouResult };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=NeedsYou.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NeedsYou.js","names":[],"sources":["../../src/board/NeedsYou.tsx"],"sourcesContent":["// Why a piece of work waits on the user, in the item dialog: the reason and the choices the board offers for it.\n\nimport type { ReactNode } from 'react';\n\nimport { WARNING_PANEL } from './RowStyles';\n\n/** The reason a piece of work needs you, in the warning tone, then the `actions` that answer it and any `result`. */\nexport function NeedsYouNotice({\n reason,\n actions,\n children,\n}: {\n reason: ReactNode;\n actions: ReactNode;\n /** What the last choice left to say, under the actions. */\n children?: ReactNode;\n}) {\n return (\n <div className={`grid gap-2 ${WARNING_PANEL}`} data-needs-you-reason>\n <p className=\"m-0 font-medium text-(--warning-foreground)\">{reason}</p>\n <span className=\"flex flex-wrap gap-1.5\">{actions}</span>\n {children}\n </div>\n );\n}\n\n/** What a choice's cleanup left to say, announced. */\nexport function NeedsYouResult({ children }: { children: ReactNode }) {\n return <p role=\"alert\">{children}</p>;\n}\n"],"mappings":";;;;AAOA,SAAgB,eAAe,EAC3B,QACA,SACA,YAMD;CACC,OACI,qBAAC,OAAD;EAAK,WAAW,cAAc;EAAiB,yBAAA;EAA/C,UAAA;GACI,oBAAC,KAAD;IAAG,WAAU;IAA+C,UAAA;GAAU,CAAA;GACtE,oBAAC,QAAD;IAAM,WAAU;IAA0B,UAAA;GAAc,CAAA;GACvD;EACA;;AAEb;;AAGA,SAAgB,eAAe,EAAE,YAAqC;CAClE,OAAO,oBAAC,KAAD;EAAG,MAAK;EAAS;CAAY,CAAA;AACxC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { DataAttributes } from "./DataAttributes.js";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
/** The board's main area while it has nothing to show, such as before its first Project: it scrolls on its own. */
|
|
4
|
+
export declare function EmptyBoard({ children, ...data }: {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
} & DataAttributes): import("react").JSX.Element;
|
|
7
|
+
/** The cards of Projects still setting up, above the board: at most about a third of its height, then scrolling. */
|
|
8
|
+
export declare function SetupCardList({ children }: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
/** The setup dialog's place under its title: the Project's `icon` beside the `place` line, over the `progress` bar. */
|
|
12
|
+
export declare function SetupHeader({ icon, place, progress }: {
|
|
13
|
+
icon?: ReactNode;
|
|
14
|
+
place: ReactNode;
|
|
15
|
+
progress: ReactNode;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
/** A setup step's parts, one under the other: close together for a list of `checks`, further apart for a `form`'s
|
|
18
|
+
* groups. */
|
|
19
|
+
export declare function SetupStep({ presentation, children, ...data }: {
|
|
20
|
+
presentation?: 'checks' | 'form';
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
} & DataAttributes): import("react").JSX.Element;
|
|
23
|
+
/**
|
|
24
|
+
* A T3 project on one line: its `icon`, its `name` and `badge`, then its `path`, which gives way first, with the
|
|
25
|
+
* `fullPath` on hover and for screen readers. A long name leaves room for some path beside the badge on a narrow page,
|
|
26
|
+
* and takes at most half the line from sm up.
|
|
27
|
+
*/
|
|
28
|
+
export declare function ProjectLine({ icon, name, badge, path, fullPath }: {
|
|
29
|
+
icon: ReactNode;
|
|
30
|
+
name: string;
|
|
31
|
+
badge?: string | null | undefined;
|
|
32
|
+
path: string;
|
|
33
|
+
fullPath: string;
|
|
34
|
+
}): import("react").JSX.Element;
|
|
35
|
+
/** The choice that adds a folder as a new project: the folder icon, its `title`, then a muted `hint` that gives way. */
|
|
36
|
+
export declare function AddFolderLine({ title, hint }: {
|
|
37
|
+
title: string;
|
|
38
|
+
hint: string;
|
|
39
|
+
}): import("react").JSX.Element;
|
|
40
|
+
/** What a choice asks for once picked, such as the folder to add, framed under the choices. */
|
|
41
|
+
export declare function ChoiceDetails({ children }: {
|
|
42
|
+
children: ReactNode;
|
|
43
|
+
}): import("react").JSX.Element;
|
|
44
|
+
/** A list of projects that can't be picked, such as in a framed Disclosure. */
|
|
45
|
+
export declare function ProjectList({ children }: {
|
|
46
|
+
children: ReactNode;
|
|
47
|
+
}): import("react").JSX.Element;
|
|
48
|
+
/** A project in a ProjectList, with the `reason` it can't be picked under it, lined up with its name. */
|
|
49
|
+
export declare function ProjectListItem({ reason, children }: {
|
|
50
|
+
reason?: string | undefined;
|
|
51
|
+
children: ReactNode;
|
|
52
|
+
}): import("react").JSX.Element;
|
|
53
|
+
//# sourceMappingURL=Onboarding.d.ts.map
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Badge } from "../display/Badge.js";
|
|
2
|
+
import { FolderPlusIcon } from "lucide-react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
// src/board/Onboarding.tsx
|
|
5
|
+
/** The board's main area while it has nothing to show, such as before its first Project: it scrolls on its own. */
|
|
6
|
+
function EmptyBoard({ children, ...data }) {
|
|
7
|
+
return /* @__PURE__ */ jsx("div", {
|
|
8
|
+
...data,
|
|
9
|
+
className: "min-h-0 flex-1 overflow-y-auto",
|
|
10
|
+
children
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/** The cards of Projects still setting up, above the board: at most about a third of its height, then scrolling. */
|
|
14
|
+
function SetupCardList({ children }) {
|
|
15
|
+
return /* @__PURE__ */ jsx("div", {
|
|
16
|
+
className: "grid max-h-[35%] shrink-0 gap-2 overflow-y-auto",
|
|
17
|
+
children
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/** The setup dialog's place under its title: the Project's `icon` beside the `place` line, over the `progress` bar. */
|
|
21
|
+
function SetupHeader({ icon, place, progress }) {
|
|
22
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
23
|
+
className: "grid shrink-0 gap-2 px-5 pb-4 sm:px-6",
|
|
24
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
25
|
+
className: "flex min-w-0 items-center gap-2",
|
|
26
|
+
children: [icon, place]
|
|
27
|
+
}), progress]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** A setup step's parts, one under the other: close together for a list of `checks`, further apart for a `form`'s
|
|
31
|
+
* groups. */
|
|
32
|
+
function SetupStep({ presentation = "checks", children, ...data }) {
|
|
33
|
+
return /* @__PURE__ */ jsx("div", {
|
|
34
|
+
...data,
|
|
35
|
+
className: `grid min-w-0 ${presentation === "form" ? "gap-5" : "gap-3"}`,
|
|
36
|
+
children
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A T3 project on one line: its `icon`, its `name` and `badge`, then its `path`, which gives way first, with the
|
|
41
|
+
* `fullPath` on hover and for screen readers. A long name leaves room for some path beside the badge on a narrow page,
|
|
42
|
+
* and takes at most half the line from sm up.
|
|
43
|
+
*/
|
|
44
|
+
function ProjectLine({ icon, name, badge, path, fullPath }) {
|
|
45
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
46
|
+
className: "flex min-w-0 flex-1 items-center gap-2 text-sm",
|
|
47
|
+
children: [
|
|
48
|
+
icon,
|
|
49
|
+
/* @__PURE__ */ jsx("span", {
|
|
50
|
+
title: name,
|
|
51
|
+
className: "max-w-[30%] shrink-0 truncate font-medium sm:max-w-1/2",
|
|
52
|
+
children: name
|
|
53
|
+
}),
|
|
54
|
+
badge && /* @__PURE__ */ jsx("span", {
|
|
55
|
+
className: "shrink-0 whitespace-nowrap",
|
|
56
|
+
children: /* @__PURE__ */ jsx(Badge, { children: badge })
|
|
57
|
+
}),
|
|
58
|
+
/* @__PURE__ */ jsx("span", {
|
|
59
|
+
"data-project-path": true,
|
|
60
|
+
"aria-hidden": true,
|
|
61
|
+
title: fullPath,
|
|
62
|
+
className: "text-base-700 min-w-0 flex-1 truncate text-xs",
|
|
63
|
+
children: path
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ jsx("span", {
|
|
66
|
+
className: "sr-only",
|
|
67
|
+
children: fullPath
|
|
68
|
+
})
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/** The choice that adds a folder as a new project: the folder icon, its `title`, then a muted `hint` that gives way. */
|
|
73
|
+
function AddFolderLine({ title, hint }) {
|
|
74
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
75
|
+
className: "flex min-w-0 flex-1 items-center gap-2",
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ jsx(FolderPlusIcon, {
|
|
78
|
+
"aria-hidden": true,
|
|
79
|
+
className: "size-4 shrink-0"
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ jsx("span", {
|
|
82
|
+
className: "min-w-0 font-medium wrap-anywhere",
|
|
83
|
+
children: title
|
|
84
|
+
}),
|
|
85
|
+
/* @__PURE__ */ jsx("span", {
|
|
86
|
+
className: "text-base-700 min-w-0 flex-1 truncate text-xs",
|
|
87
|
+
children: hint
|
|
88
|
+
})
|
|
89
|
+
]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/** What a choice asks for once picked, such as the folder to add, framed under the choices. */
|
|
93
|
+
function ChoiceDetails({ children }) {
|
|
94
|
+
return /* @__PURE__ */ jsx("div", {
|
|
95
|
+
className: "grid gap-3 rounded-lg border p-3",
|
|
96
|
+
children
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/** A list of projects that can't be picked, such as in a framed Disclosure. */
|
|
100
|
+
function ProjectList({ children }) {
|
|
101
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
102
|
+
className: "m-0 grid min-w-0 list-none gap-2 p-0",
|
|
103
|
+
children
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/** A project in a ProjectList, with the `reason` it can't be picked under it, lined up with its name. */
|
|
107
|
+
function ProjectListItem({ reason, children }) {
|
|
108
|
+
if (reason === void 0) return /* @__PURE__ */ jsx("li", {
|
|
109
|
+
className: "flex min-w-0",
|
|
110
|
+
children
|
|
111
|
+
});
|
|
112
|
+
return /* @__PURE__ */ jsxs("li", {
|
|
113
|
+
className: "grid min-w-0 gap-0.5",
|
|
114
|
+
children: [children, /* @__PURE__ */ jsx("span", {
|
|
115
|
+
className: "text-base-700 pl-6 text-xs",
|
|
116
|
+
children: reason
|
|
117
|
+
})]
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
export { AddFolderLine, ChoiceDetails, EmptyBoard, ProjectLine, ProjectList, ProjectListItem, SetupCardList, SetupHeader, SetupStep };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=Onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Onboarding.js","names":[],"sources":["../../src/board/Onboarding.tsx"],"sourcesContent":["// Lar Factory's onboarding: the empty board's area, the cards of Projects still setting up, the setup dialog's\n// progress and steps, and the T3 projects its first step lists.\n\nimport { FolderPlusIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '../display/Badge';\nimport type { DataAttributes } from './DataAttributes';\n\n/** The board's main area while it has nothing to show, such as before its first Project: it scrolls on its own. */\nexport function EmptyBoard({ children, ...data }: { children: ReactNode } & DataAttributes) {\n return (\n <div {...data} className=\"min-h-0 flex-1 overflow-y-auto\">\n {children}\n </div>\n );\n}\n\n/** The cards of Projects still setting up, above the board: at most about a third of its height, then scrolling. */\nexport function SetupCardList({ children }: { children: ReactNode }) {\n return <div className=\"grid max-h-[35%] shrink-0 gap-2 overflow-y-auto\">{children}</div>;\n}\n\n/** The setup dialog's place under its title: the Project's `icon` beside the `place` line, over the `progress` bar. */\nexport function SetupHeader({ icon, place, progress }: { icon?: ReactNode; place: ReactNode; progress: ReactNode }) {\n return (\n <div className=\"grid shrink-0 gap-2 px-5 pb-4 sm:px-6\">\n <div className=\"flex min-w-0 items-center gap-2\">\n {icon}\n {place}\n </div>\n {progress}\n </div>\n );\n}\n\n/** A setup step's parts, one under the other: close together for a list of `checks`, further apart for a `form`'s\n * groups. */\nexport function SetupStep({\n presentation = 'checks',\n children,\n ...data\n}: { presentation?: 'checks' | 'form'; children: ReactNode } & DataAttributes) {\n return (\n <div {...data} className={`grid min-w-0 ${presentation === 'form' ? 'gap-5' : 'gap-3'}`}>\n {children}\n </div>\n );\n}\n\n/**\n * A T3 project on one line: its `icon`, its `name` and `badge`, then its `path`, which gives way first, with the\n * `fullPath` on hover and for screen readers. A long name leaves room for some path beside the badge on a narrow page,\n * and takes at most half the line from sm up.\n */\nexport function ProjectLine({\n icon,\n name,\n badge,\n path,\n fullPath,\n}: {\n icon: ReactNode;\n name: string;\n badge?: string | null | undefined;\n path: string;\n fullPath: string;\n}) {\n return (\n <span className=\"flex min-w-0 flex-1 items-center gap-2 text-sm\">\n {icon}\n <span title={name} className=\"max-w-[30%] shrink-0 truncate font-medium sm:max-w-1/2\">\n {name}\n </span>\n {badge && (\n <span className=\"shrink-0 whitespace-nowrap\">\n <Badge>{badge}</Badge>\n </span>\n )}\n <span\n data-project-path\n aria-hidden\n title={fullPath}\n className=\"text-base-700 min-w-0 flex-1 truncate text-xs\"\n >\n {path}\n </span>\n <span className=\"sr-only\">{fullPath}</span>\n </span>\n );\n}\n\n/** The choice that adds a folder as a new project: the folder icon, its `title`, then a muted `hint` that gives way. */\nexport function AddFolderLine({ title, hint }: { title: string; hint: string }) {\n return (\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">\n <FolderPlusIcon aria-hidden className=\"size-4 shrink-0\" />\n <span className=\"min-w-0 font-medium wrap-anywhere\">{title}</span>\n <span className=\"text-base-700 min-w-0 flex-1 truncate text-xs\">{hint}</span>\n </span>\n );\n}\n\n/** What a choice asks for once picked, such as the folder to add, framed under the choices. */\nexport function ChoiceDetails({ children }: { children: ReactNode }) {\n return <div className=\"grid gap-3 rounded-lg border p-3\">{children}</div>;\n}\n\n/** A list of projects that can't be picked, such as in a framed Disclosure. */\nexport function ProjectList({ children }: { children: ReactNode }) {\n return <ul className=\"m-0 grid min-w-0 list-none gap-2 p-0\">{children}</ul>;\n}\n\n/** A project in a ProjectList, with the `reason` it can't be picked under it, lined up with its name. */\nexport function ProjectListItem({ reason, children }: { reason?: string | undefined; children: ReactNode }) {\n if (reason === undefined) return <li className=\"flex min-w-0\">{children}</li>;\n\n return (\n <li className=\"grid min-w-0 gap-0.5\">\n {children}\n <span className=\"text-base-700 pl-6 text-xs\">{reason}</span>\n </li>\n );\n}\n"],"mappings":";;;;;AAUA,SAAgB,WAAW,EAAE,UAAU,GAAG,QAAkD;CACxF,OACI,oBAAC,OAAD;EAAK,GAAI;EAAM,WAAU;EACpB;CACA,CAAA;AAEb;;AAGA,SAAgB,cAAc,EAAE,YAAqC;CACjE,OAAO,oBAAC,OAAD;EAAK,WAAU;EAAmD;CAAc,CAAA;AAC3F;;AAGA,SAAgB,YAAY,EAAE,MAAM,OAAO,YAAyE;CAChH,OACI,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACI,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACK,MACA,KACA;EACJ,CAAA,GAAA,QACA;;AAEb;;;AAIA,SAAgB,UAAU,EACtB,eAAe,UACf,UACA,GAAG,QACwE;CAC3E,OACI,oBAAC,OAAD;EAAK,GAAI;EAAM,WAAW,gBAAgB,iBAAiB,SAAS,UAAU;EACzE;CACA,CAAA;AAEb;;;;;;AAOA,SAAgB,YAAY,EACxB,MACA,MACA,OACA,MACA,YAOD;CACC,OACI,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA;GACK;GACD,oBAAC,QAAD;IAAM,OAAO;IAAM,WAAU;IACxB,UAAA;GACC,CAAA;GACL,SACG,oBAAC,QAAD;IAAM,WAAU;IACZ,UAAA,oBAAC,OAAD,EAAA,UAAQ,MAAa,CAAA;GACnB,CAAA;GAEV,oBAAC,QAAD;IACI,qBAAA;IACA,eAAA;IACA,OAAO;IACP,WAAU;IAET,UAAA;GACC,CAAA;GACN,oBAAC,QAAD;IAAM,WAAU;IAAW,UAAA;GAAe,CAAA;EACxC;;AAEd;;AAGA,SAAgB,cAAc,EAAE,OAAO,QAAyC;CAC5E,OACI,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA;GACI,oBAAC,gBAAD;IAAgB,eAAA;IAAY,WAAU;GAAmB,CAAA;GACzD,oBAAC,QAAD;IAAM,WAAU;IAAqC,UAAA;GAAY,CAAA;GACjE,oBAAC,QAAD;IAAM,WAAU;IAAiD,UAAA;GAAW,CAAA;EAC1E;;AAEd;;AAGA,SAAgB,cAAc,EAAE,YAAqC;CACjE,OAAO,oBAAC,OAAD;EAAK,WAAU;EAAoC;CAAc,CAAA;AAC5E;;AAGA,SAAgB,YAAY,EAAE,YAAqC;CAC/D,OAAO,oBAAC,MAAD;EAAI,WAAU;EAAwC;CAAa,CAAA;AAC9E;;AAGA,SAAgB,gBAAgB,EAAE,QAAQ,YAAkE;CACxG,IAAI,WAAW,KAAA,GAAW,OAAO,oBAAC,MAAD;EAAI,WAAU;EAAgB;CAAa,CAAA;CAE5E,OACI,qBAAC,MAAD;EAAI,WAAU;EAAd,UAAA,CACK,UACD,oBAAC,QAAD;GAAM,WAAU;GAA8B,UAAA;EAAa,CAAA,CAC3D;;AAEZ"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
declare const KIND_ICON: {
|
|
3
|
+
readonly grill: import("lucide-react").LucideIcon;
|
|
4
|
+
readonly prototype: import("lucide-react").LucideIcon;
|
|
5
|
+
readonly research: import("lucide-react").LucideIcon;
|
|
6
|
+
readonly task: import("lucide-react").LucideIcon;
|
|
7
|
+
readonly decision: import("lucide-react").LucideIcon;
|
|
8
|
+
readonly build: import("lucide-react").LucideIcon;
|
|
9
|
+
};
|
|
10
|
+
/** What a dossier's part is: a decision's method, or a build. */
|
|
11
|
+
export type PartKind = keyof typeof KIND_ICON;
|
|
12
|
+
/** A part's method or kind with its icon, in the one place and style every dossier surface shows it. */
|
|
13
|
+
export declare function PartKindLabel({ kind, children }: {
|
|
14
|
+
kind: PartKind;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
/** The parts, in two columns where there's room, then `showDone`, the button that unfolds the done ones. */
|
|
18
|
+
export declare function PartsList({ showDone, children }: {
|
|
19
|
+
showDone?: ReactNode;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
}): import("react").JSX.Element;
|
|
22
|
+
/** The button under the parts that shows or hides the done ones. */
|
|
23
|
+
export declare function ShowDoneToggle({ open, onToggle, children }: {
|
|
24
|
+
open: boolean;
|
|
25
|
+
onToggle: () => void;
|
|
26
|
+
children: string;
|
|
27
|
+
}): import("react").JSX.Element;
|
|
28
|
+
/**
|
|
29
|
+
* A part: one button opens its item from its `name` and `meta` (kind, repository, track, status), what it asks next
|
|
30
|
+
* (`action`) sits beside that button, then its `second` line (a RowSecondLine) and any `foot`, its start's message or
|
|
31
|
+
* error, under that.
|
|
32
|
+
*/
|
|
33
|
+
export declare function PartRow({ id, picked, title, onOpen, name, meta, action, second, foot }: {
|
|
34
|
+
id: string;
|
|
35
|
+
picked: boolean;
|
|
36
|
+
title: string;
|
|
37
|
+
onOpen: () => void;
|
|
38
|
+
name: ReactNode;
|
|
39
|
+
meta: ReactNode;
|
|
40
|
+
action: ReactNode;
|
|
41
|
+
second?: ReactNode;
|
|
42
|
+
foot?: ReactNode;
|
|
43
|
+
}): import("react").JSX.Element;
|
|
44
|
+
/** A part's stage track in its meta line, at a fixed width so the tracks line up. */
|
|
45
|
+
export declare function PartTrack({ children }: {
|
|
46
|
+
children: ReactNode;
|
|
47
|
+
}): import("react").JSX.Element;
|
|
48
|
+
/** What a part waits on, beside its action, truncating. */
|
|
49
|
+
export declare function PartWaits({ children }: {
|
|
50
|
+
children: string;
|
|
51
|
+
}): import("react").JSX.Element;
|
|
52
|
+
/** A part's thread in its second line: its glyph, `name` and `state`; `title` names it in full. */
|
|
53
|
+
export declare function ThreadLine({ glyph, name, state, title }: {
|
|
54
|
+
glyph: ReactNode;
|
|
55
|
+
name: string;
|
|
56
|
+
state: string;
|
|
57
|
+
title?: string | undefined;
|
|
58
|
+
}): import("react").JSX.Element;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=PartsList.d.ts.map
|