@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
|
@@ -1,14 +1,45 @@
|
|
|
1
|
+
import { type KeyboardEvent, type ReactNode, type Ref, useRef } from 'react';
|
|
2
|
+
import { flushSync } from 'react-dom';
|
|
3
|
+
|
|
1
4
|
import { SkeletonLoader } from '../feedback/SkeletonLoader';
|
|
2
|
-
import { Select, SelectItem } from './Select';
|
|
5
|
+
import { Select, SelectItem, type SelectProps } from './Select';
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
const NONE = '__none';
|
|
8
|
+
|
|
9
|
+
export interface OptionSelectOption<Value extends string = string> {
|
|
6
10
|
label: string;
|
|
11
|
+
value: Value;
|
|
12
|
+
/** Disabled options stay visible but cannot be chosen. */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
icon?: ReactNode;
|
|
15
|
+
/** A lar-brand app hue that colours the icon, such as a kind's. */
|
|
16
|
+
hue?: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface LoadedOptionSelectProps<Value extends string> extends Omit<
|
|
20
|
+
SelectProps,
|
|
21
|
+
'value' | 'defaultValue' | 'onValueChange' | 'onChange' | 'children' | 'className' | 'size' | 'variant'
|
|
22
|
+
> {
|
|
23
|
+
/** The select's accessible name; leave it out when a label names the select by its `id`. */
|
|
24
|
+
label?: string;
|
|
7
25
|
loading?: false;
|
|
8
26
|
onChange: (value: Value) => void;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
value: Value;
|
|
27
|
+
options: readonly OptionSelectOption<Value>[];
|
|
28
|
+
/** An empty value shows the placeholder, or `none`. */
|
|
29
|
+
value: Value | '';
|
|
30
|
+
/** The name of the option that empties the value, which `onChange` hears as ''. */
|
|
31
|
+
none?: string;
|
|
32
|
+
/** A form field's name: the select gives its form the value in a hidden field, and fires input on that field once
|
|
33
|
+
* a pick has rendered, as Select is a button over a listbox that fires no input event of its own. */
|
|
34
|
+
name?: string;
|
|
35
|
+
/** A pick writes at once, so a letter key on the closed control doesn't pick: the Select's typeahead only works
|
|
36
|
+
* once its list is open. */
|
|
37
|
+
writesOnPick?: boolean;
|
|
38
|
+
/** Busy rather than disabled while a pick it made saves: it keeps the focus and ignores picks. */
|
|
39
|
+
busy?: boolean;
|
|
40
|
+
/** `setting` is a settings row's 11rem dropdown; a `field` fills its container. */
|
|
41
|
+
presentation?: 'field' | 'setting';
|
|
42
|
+
ref?: Ref<HTMLButtonElement>;
|
|
12
43
|
}
|
|
13
44
|
|
|
14
45
|
interface LoadingOptionSelectProps {
|
|
@@ -18,7 +49,17 @@ interface LoadingOptionSelectProps {
|
|
|
18
49
|
|
|
19
50
|
type OptionSelectProps<Value extends string> = LoadedOptionSelectProps<Value> | LoadingOptionSelectProps;
|
|
20
51
|
|
|
52
|
+
/** Marks a letter key as handled, which the Select's trigger takes as leaving its typeahead out. Space and arrows still
|
|
53
|
+
* open the list. */
|
|
54
|
+
const withoutClosedTypeahead = (event: KeyboardEvent) => {
|
|
55
|
+
if (event.key.length === 1 && event.key !== ' ' && !event.ctrlKey && !event.altKey && !event.metaKey)
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/** A Select over plain options, each with an optional icon; while they load, a control-shaped skeleton. */
|
|
21
60
|
export function OptionSelect<Value extends string>(props: OptionSelectProps<Value>) {
|
|
61
|
+
const field = useRef<HTMLInputElement>(null);
|
|
62
|
+
|
|
22
63
|
if (props.loading)
|
|
23
64
|
return (
|
|
24
65
|
<SkeletonLoader label={props.label}>
|
|
@@ -26,24 +67,68 @@ export function OptionSelect<Value extends string>(props: OptionSelectProps<Valu
|
|
|
26
67
|
</SkeletonLoader>
|
|
27
68
|
);
|
|
28
69
|
|
|
29
|
-
const {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
))
|
|
47
|
-
|
|
70
|
+
const {
|
|
71
|
+
label,
|
|
72
|
+
loading: _loading,
|
|
73
|
+
onChange,
|
|
74
|
+
options,
|
|
75
|
+
value,
|
|
76
|
+
none,
|
|
77
|
+
name,
|
|
78
|
+
writesOnPick,
|
|
79
|
+
busy = false,
|
|
80
|
+
presentation = 'field',
|
|
81
|
+
...select
|
|
82
|
+
} = props;
|
|
83
|
+
const pick = (next: string) => {
|
|
84
|
+
if (busy) return;
|
|
85
|
+
|
|
86
|
+
if (none && next === NONE) {
|
|
87
|
+
change(() => onChange('' as Value));
|
|
88
|
+
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const option = options.find((candidate) => candidate.value === next);
|
|
93
|
+
|
|
94
|
+
if (option) change(() => onChange(option.value));
|
|
95
|
+
};
|
|
96
|
+
const change = (write: () => void) => {
|
|
97
|
+
if (!name) return write();
|
|
98
|
+
|
|
99
|
+
flushSync(write);
|
|
100
|
+
field.current?.dispatchEvent(new Event('input', { bubbles: true }));
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const control = (
|
|
104
|
+
<>
|
|
105
|
+
{name && <input ref={field} type="hidden" name={name} value={value} />}
|
|
106
|
+
<Select
|
|
107
|
+
{...select}
|
|
108
|
+
{...(label !== undefined && { 'aria-label': label })}
|
|
109
|
+
{...(writesOnPick && { onKeyDown: withoutClosedTypeahead })}
|
|
110
|
+
{...(busy && { 'aria-disabled': true })}
|
|
111
|
+
value={value || (none ? NONE : '')}
|
|
112
|
+
onValueChange={pick}
|
|
113
|
+
>
|
|
114
|
+
{none && <SelectItem value={NONE}>{none}</SelectItem>}
|
|
115
|
+
{options.map((option) => (
|
|
116
|
+
<SelectItem
|
|
117
|
+
key={option.value}
|
|
118
|
+
value={option.value}
|
|
119
|
+
disabled={option.disabled}
|
|
120
|
+
{...(option.icon !== undefined && {
|
|
121
|
+
icon: option.icon,
|
|
122
|
+
iconHue: option.hue,
|
|
123
|
+
textValue: option.label,
|
|
124
|
+
})}
|
|
125
|
+
>
|
|
126
|
+
{option.label}
|
|
127
|
+
</SelectItem>
|
|
128
|
+
))}
|
|
129
|
+
</Select>
|
|
130
|
+
</>
|
|
48
131
|
);
|
|
132
|
+
|
|
133
|
+
return presentation === 'setting' ? <span className="block w-44 max-w-full">{control}</span> : control;
|
|
49
134
|
}
|
package/src/forms/Select.tsx
CHANGED
|
@@ -28,19 +28,26 @@ export const Select = forwardRef<HTMLButtonElement, SelectProps>(
|
|
|
28
28
|
|
|
29
29
|
Select.displayName = 'Select';
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
/** An option of the Select; its `icon` takes `iconHue`, a lar-brand app hue at full strength, when given. */
|
|
32
|
+
export const SelectItem = forwardRef<HTMLDivElement, SelectItemProps & { iconHue?: number | undefined }>(
|
|
33
|
+
({ icon, iconHue, children, ...props }, ref) => (
|
|
34
|
+
<NinnaSelectItem ref={ref} {...props}>
|
|
35
|
+
{icon ? (
|
|
36
|
+
<span className="inline-flex min-w-0 items-center gap-2 align-middle">
|
|
37
|
+
<span
|
|
38
|
+
aria-hidden="true"
|
|
39
|
+
className="size-4 shrink-0 [&>svg]:size-full"
|
|
40
|
+
style={iconHue === undefined ? undefined : { color: `oklch(0.62 0.15 ${iconHue})` }}
|
|
41
|
+
>
|
|
42
|
+
{icon}
|
|
43
|
+
</span>
|
|
44
|
+
<span className="truncate">{children}</span>
|
|
37
45
|
</span>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
));
|
|
46
|
+
) : (
|
|
47
|
+
children
|
|
48
|
+
)}
|
|
49
|
+
</NinnaSelectItem>
|
|
50
|
+
),
|
|
51
|
+
);
|
|
45
52
|
|
|
46
53
|
SelectItem.displayName = 'SelectItem';
|
package/src/forms/Switch.tsx
CHANGED
|
@@ -3,8 +3,22 @@ import { forwardRef } from 'react';
|
|
|
3
3
|
|
|
4
4
|
import { tabbable } from '../foundations/KeyboardFocus';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
type Props = SwitchProps & {
|
|
7
|
+
/** Busy rather than disabled while a change it started saves: it keeps the focus and ignores presses. */
|
|
8
|
+
busy?: boolean;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const Switch = forwardRef<HTMLButtonElement, Props>(({ busy = false, onCheckedChange, ...props }, ref) => (
|
|
12
|
+
<NinnaSwitch
|
|
13
|
+
ref={ref}
|
|
14
|
+
{...tabbable}
|
|
15
|
+
size="sm"
|
|
16
|
+
aria-busy={props.loading || undefined}
|
|
17
|
+
{...props}
|
|
18
|
+
{...(busy && { 'aria-disabled': true })}
|
|
19
|
+
className={`aria-disabled:cursor-progress ${props.className ?? ''}`}
|
|
20
|
+
onCheckedChange={(checked) => !busy && onCheckedChange?.(checked)}
|
|
21
|
+
/>
|
|
8
22
|
));
|
|
9
23
|
|
|
10
24
|
Switch.displayName = 'Switch';
|
package/src/forms/index.ts
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
export { Checkbox, type CheckboxProps } from './Checkbox';
|
|
2
|
+
export { type ColorSwatch, ColorSwatches } from './ColorSwatches';
|
|
2
3
|
export { Field, type FieldProps } from './Field';
|
|
3
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
Disclosure,
|
|
6
|
+
FormAction,
|
|
7
|
+
FormContent,
|
|
8
|
+
FormField,
|
|
9
|
+
FormFieldset,
|
|
10
|
+
FormRow,
|
|
11
|
+
FormSection,
|
|
12
|
+
FormStack,
|
|
13
|
+
FormUnit,
|
|
14
|
+
} from './FormSection';
|
|
15
|
+
export { HiddenField } from './HiddenField';
|
|
4
16
|
export { InlineFields } from './InlineFields';
|
|
5
17
|
export { Input, type InputProps } from './Input';
|
|
6
|
-
export {
|
|
18
|
+
export { type LabelChoice, type LabelCreation, LabelPicker } from './LabelPicker';
|
|
19
|
+
export { MarkdownEditor } from './MarkdownEditor';
|
|
20
|
+
export { OptionSelect, type OptionSelectOption } from './OptionSelect';
|
|
7
21
|
export { RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupProps } from './RadioGroup';
|
|
8
22
|
export { Select, SelectItem, type SelectProps } from './Select';
|
|
9
23
|
export { Switch } from './Switch';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// One observer for a page's repeating indicators (spinners, pulses, sweeps). Each keeps its phase while outside a
|
|
2
|
+
// scroll viewport or while the window is hidden; resuming never changes the status or restarts the animation. Use it
|
|
3
|
+
// as a ref callback: React 19 runs the returned cleanup when the ref detaches, including its StrictMode check.
|
|
4
|
+
// theme.css pauses an element marked data-ambient-motion="paused".
|
|
5
|
+
|
|
6
|
+
const indicators = new Map<Element, boolean>();
|
|
7
|
+
let observer: IntersectionObserver | undefined;
|
|
8
|
+
|
|
9
|
+
function update(element: Element, visible: boolean): void {
|
|
10
|
+
element.setAttribute('data-ambient-motion', visible && !document.hidden ? 'running' : 'paused');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function visibilityChanged(): void {
|
|
14
|
+
for (const [element, visible] of indicators) update(element, visible);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function ambientMotion(element: Element | null): (() => void) | undefined {
|
|
18
|
+
if (!element) return;
|
|
19
|
+
|
|
20
|
+
if (!indicators.size) document.addEventListener('visibilitychange', visibilityChanged);
|
|
21
|
+
|
|
22
|
+
// Without IntersectionObserver, visibility changes still pause indicators in a hidden window.
|
|
23
|
+
const visible = typeof IntersectionObserver === 'undefined';
|
|
24
|
+
|
|
25
|
+
indicators.set(element, visible);
|
|
26
|
+
update(element, visible);
|
|
27
|
+
|
|
28
|
+
if (!visible) {
|
|
29
|
+
observer ??= new IntersectionObserver((entries) => {
|
|
30
|
+
for (const { target, isIntersecting } of entries) {
|
|
31
|
+
if (!indicators.has(target)) continue;
|
|
32
|
+
|
|
33
|
+
indicators.set(target, isIntersecting);
|
|
34
|
+
update(target, isIntersecting);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
observer.observe(element);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return () => {
|
|
41
|
+
observer?.unobserve(element);
|
|
42
|
+
indicators.delete(element);
|
|
43
|
+
element.removeAttribute('data-ambient-motion');
|
|
44
|
+
|
|
45
|
+
if (!indicators.size) {
|
|
46
|
+
observer?.disconnect();
|
|
47
|
+
observer = undefined;
|
|
48
|
+
document.removeEventListener('visibilitychange', visibilityChanged);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -29,6 +29,23 @@ export const defaultDesignSystemLabels = {
|
|
|
29
29
|
light: 'Light',
|
|
30
30
|
dark: 'Dark',
|
|
31
31
|
},
|
|
32
|
+
editor: {
|
|
33
|
+
formatting: 'Formatting',
|
|
34
|
+
bold: 'Bold',
|
|
35
|
+
italic: 'Italic',
|
|
36
|
+
heading: 'Heading',
|
|
37
|
+
bulletedList: 'Bulleted list',
|
|
38
|
+
numberedList: 'Numbered list',
|
|
39
|
+
link: 'Link',
|
|
40
|
+
linkUrl: 'Link URL',
|
|
41
|
+
linkPlaceholder: 'https://…',
|
|
42
|
+
apply: 'Apply',
|
|
43
|
+
markdown: 'Markdown',
|
|
44
|
+
},
|
|
45
|
+
dialog: {
|
|
46
|
+
expand: 'Expand',
|
|
47
|
+
restoreSize: 'Restore size',
|
|
48
|
+
},
|
|
32
49
|
};
|
|
33
50
|
|
|
34
51
|
export type DesignSystemLabels = typeof defaultDesignSystemLabels;
|
|
@@ -71,6 +88,8 @@ function mergeLabels(labels: DesignSystemLabelOverrides | undefined): DesignSyst
|
|
|
71
88
|
...labels,
|
|
72
89
|
folders: { ...defaultDesignSystemLabels.folders, ...labels.folders },
|
|
73
90
|
theme: { ...defaultDesignSystemLabels.theme, ...labels.theme },
|
|
91
|
+
editor: { ...defaultDesignSystemLabels.editor, ...labels.editor },
|
|
92
|
+
dialog: { ...defaultDesignSystemLabels.dialog, ...labels.dialog },
|
|
74
93
|
};
|
|
75
94
|
}
|
|
76
95
|
|
package/src/foundations/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ export {
|
|
|
5
5
|
DesignSystemProvider,
|
|
6
6
|
useDesignSystemLabels,
|
|
7
7
|
} from './DesignSystemProvider';
|
|
8
|
+
export { ambientMotion } from './AmbientMotion';
|
|
8
9
|
export { tabbable } from './KeyboardFocus';
|
|
9
10
|
export { applePlatform, isShortcut } from './KeyboardShortcut';
|
|
10
11
|
export { createThemeController, isThemePreference, type ThemeController, type ThemePreference } from './Theme';
|
|
@@ -334,6 +334,64 @@ body {
|
|
|
334
334
|
background: var(--color-base-300);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
+
/* Notifications' stack presentation: every notification, oldest above the newest, in the bottom right corner with the
|
|
338
|
+
same gap from the window's bottom and right edges, and from the title bar (h-13) when it's full, above every dialog
|
|
339
|
+
(z-50) and full-screen cover (z-60). Each carries its slice of the stack's edge fade (Notifications.tsx), off while
|
|
340
|
+
one has keyboard focus, as in a Modal's body. Successes and failures are tinted. */
|
|
341
|
+
.notification-stack {
|
|
342
|
+
--notice-edge: calc(var(--spacing) * 4);
|
|
343
|
+
right: var(--notice-edge);
|
|
344
|
+
bottom: var(--notice-edge);
|
|
345
|
+
z-index: 100;
|
|
346
|
+
flex-direction: column;
|
|
347
|
+
width: min(calc(var(--spacing) * 104), calc(100vw - var(--spacing) * 8));
|
|
348
|
+
max-width: none;
|
|
349
|
+
max-height: calc(100dvh - var(--spacing) * 13 - var(--notice-edge) * 2);
|
|
350
|
+
overflow-y: auto;
|
|
351
|
+
overscroll-behavior: contain;
|
|
352
|
+
pointer-events: auto;
|
|
353
|
+
-webkit-app-region: no-drag;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.notification-stack:empty {
|
|
357
|
+
pointer-events: none;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.notification-stack [data-slot='toast'] {
|
|
361
|
+
flex-shrink: 0;
|
|
362
|
+
overflow-wrap: anywhere;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.notification-stack > [data-slot='toast'] {
|
|
366
|
+
mask-image: linear-gradient(
|
|
367
|
+
to bottom,
|
|
368
|
+
transparent var(--fade-from, 0%),
|
|
369
|
+
black var(--fade-top, 0%),
|
|
370
|
+
black var(--fade-bottom, 100%),
|
|
371
|
+
transparent var(--fade-to, 100%)
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.notification-stack:has(:focus-visible) > [data-slot='toast'] {
|
|
376
|
+
mask-image: none;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.notification-stack [data-slot='content'] {
|
|
380
|
+
min-width: 0;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.notification-stack [data-slot='toast'][data-toast-color='warning'] {
|
|
384
|
+
@apply bg-warning/10 border-warning/20 text-(--lar-warning-text);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.notification-stack [data-slot='toast'][data-toast-color='success'] {
|
|
388
|
+
@apply bg-success/10 border-success/20 text-(--lar-success-text);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.notification-stack [data-slot='toast'][data-toast-color='danger'] {
|
|
392
|
+
@apply bg-danger/10 border-danger/20 text-(--lar-danger-text);
|
|
393
|
+
}
|
|
394
|
+
|
|
337
395
|
[data-slot='tooltip-content'] {
|
|
338
396
|
@apply glass-menu;
|
|
339
397
|
max-width: min(var(--radix-tooltip-content-available-width), var(--container-xs));
|
|
@@ -398,6 +456,12 @@ body {
|
|
|
398
456
|
}
|
|
399
457
|
}
|
|
400
458
|
|
|
459
|
+
/* A repeating indicator that ambientMotion (AmbientMotion.ts) finds out of view or in a hidden window. Dialogs,
|
|
460
|
+
loading entrances and interaction transitions keep their timing, as only repeating indicators opt in. */
|
|
461
|
+
[data-ambient-motion='paused'] {
|
|
462
|
+
animation-play-state: paused;
|
|
463
|
+
}
|
|
464
|
+
|
|
401
465
|
.lar-progress-indeterminate {
|
|
402
466
|
width: 35%;
|
|
403
467
|
animation: lar-progress-travel 1.8s ease-in-out infinite alternate;
|
package/src/icons/BrandIcons.tsx
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
/** Brand marks, which lucide does not draw. */
|
|
2
|
-
export function GitHubIcon() {
|
|
1
|
+
/** Brand marks, which lucide does not draw. Each takes a `className` for its size, as a lucide icon does. */
|
|
2
|
+
export function GitHubIcon({ className }: { className?: string }) {
|
|
3
3
|
return (
|
|
4
|
-
<svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true">
|
|
4
|
+
<svg viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" className={className}>
|
|
5
5
|
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8Z" />
|
|
6
6
|
</svg>
|
|
7
7
|
);
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
/** Azure DevOps' mark. */
|
|
11
|
+
export function AzureDevOpsIcon({ className }: { className?: string }) {
|
|
12
|
+
return (
|
|
13
|
+
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" className={className}>
|
|
14
|
+
<path d="M0 8.899l2.247-2.966 8.405-3.416V.045l7.37 5.393L2.966 8.36v8.2L0 15.685zm24-4.45v14.652L18.247 24l-9.303-3.237v3.237l-5.978-7.44 15.056 1.79V5.438z" />
|
|
15
|
+
</svg>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// lucide's DynamicIcon, which draws an icon by its kebab-case name, such as one a person chose in another app. Its name
|
|
2
|
+
// map and each icon are lazy chunks, so this has an entry of its own (`@lar-works/design-system/icons/dynamic`), which
|
|
3
|
+
// apps load with a dynamic import where they need it.
|
|
4
|
+
export { DynamicIcon, type IconName } from 'lucide-react/dynamic';
|
package/src/icons/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// Every icon comes from lucide (https://lucide.dev/icons), under lucide's `…Icon` names, plus the brand marks
|
|
2
2
|
// lucide does not draw. Apps import icons from `@lar-works/design-system/icons`, never from lucide-react.
|
|
3
|
-
export { GitHubIcon } from './BrandIcons';
|
|
3
|
+
export { AzureDevOpsIcon, GitHubIcon } from './BrandIcons';
|
|
4
4
|
export * from 'lucide-react';
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// The design system's public API. Icons have their own entry (`@lar-works/design-system/icons`), and styles are
|
|
2
|
-
// imported once by each app (`@import '@lar-works/design-system/styles.css'
|
|
2
|
+
// imported once by each app (`@import '@lar-works/design-system/styles.css'`, or showcase.css or board.css).
|
|
3
3
|
export * from './actions';
|
|
4
|
+
export * from './board';
|
|
4
5
|
export * from './collections';
|
|
5
6
|
export * from './display';
|
|
6
7
|
export * from './feedback';
|
package/src/layout/index.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { Section } from './Section';
|
|
|
7
7
|
export { SidebarNavigationItem } from './sidebar/SidebarNavigationItem';
|
|
8
8
|
export { SidebarNavigationGroup, SidebarPane } from './sidebar/SidebarPane';
|
|
9
9
|
export { TitleBar, TitleBarTrail, type TitleBarTrailItem } from './TitleBar';
|
|
10
|
-
export { CommandPaletteTrigger } from './toolbar/CommandPaletteTrigger';
|
|
10
|
+
export { CommandPaletteTrigger, type CommandPaletteTriggerToken } from './toolbar/CommandPaletteTrigger';
|
|
11
11
|
export { ToolbarStatusGroup } from './toolbar/ToolbarStatusGroup';
|
|
12
12
|
export { ToolbarStatusItem } from './toolbar/ToolbarStatusItem';
|
|
13
13
|
export { WorkspaceActionsHeader } from './WorkspaceActionsHeader';
|