@mindlogic-ai/logician-ui 3.2.0-alpha.0 → 3.2.0-alpha.2
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/dist/components/Banner/Banner.js +1 -0
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/Banner.mjs +1 -0
- package/dist/components/Banner/Banner.mjs.map +1 -1
- package/dist/components/ErrorFallback/ErrorFallback.js +1 -0
- package/dist/components/ErrorFallback/ErrorFallback.js.map +1 -1
- package/dist/components/ErrorFallback/ErrorFallback.mjs +1 -0
- package/dist/components/ErrorFallback/ErrorFallback.mjs.map +1 -1
- package/dist/components/ExpandableText/ExpandableText.js +1 -0
- package/dist/components/ExpandableText/ExpandableText.js.map +1 -1
- package/dist/components/ExpandableText/ExpandableText.mjs +1 -0
- package/dist/components/ExpandableText/ExpandableText.mjs.map +1 -1
- package/dist/components/FileInput/FileInput.js +1 -0
- package/dist/components/FileInput/FileInput.js.map +1 -1
- package/dist/components/FileInput/FileInput.mjs +1 -0
- package/dist/components/FileInput/FileInput.mjs.map +1 -1
- package/dist/components/FileItem/FileItem.js +1 -0
- package/dist/components/FileItem/FileItem.js.map +1 -1
- package/dist/components/FileItem/FileItem.mjs +1 -0
- package/dist/components/FileItem/FileItem.mjs.map +1 -1
- package/dist/components/FileList/FileList.js +1 -0
- package/dist/components/FileList/FileList.js.map +1 -1
- package/dist/components/FileList/FileList.mjs +1 -0
- package/dist/components/FileList/FileList.mjs.map +1 -1
- package/dist/components/Markdown/Markdown.js +1 -0
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/Markdown.mjs +1 -0
- package/dist/components/Markdown/Markdown.mjs.map +1 -1
- package/dist/components/MaxLengthIndicator/MaxLengthIndicator.js +1 -0
- package/dist/components/MaxLengthIndicator/MaxLengthIndicator.js.map +1 -1
- package/dist/components/MaxLengthIndicator/MaxLengthIndicator.mjs +1 -0
- package/dist/components/MaxLengthIndicator/MaxLengthIndicator.mjs.map +1 -1
- package/dist/components/MonthPicker/MonthPicker.js +1 -0
- package/dist/components/MonthPicker/MonthPicker.js.map +1 -1
- package/dist/components/MonthPicker/MonthPicker.mjs +1 -0
- package/dist/components/MonthPicker/MonthPicker.mjs.map +1 -1
- package/dist/components/Pagination/Pagination.js +1 -0
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/Pagination.mjs +1 -0
- package/dist/components/Pagination/Pagination.mjs.map +1 -1
- package/dist/components/RadialProgress/RadialProgress.js +1 -0
- package/dist/components/RadialProgress/RadialProgress.js.map +1 -1
- package/dist/components/RadialProgress/RadialProgress.mjs +1 -0
- package/dist/components/RadialProgress/RadialProgress.mjs.map +1 -1
- package/dist/components/Tree/Tree.d.ts +20 -0
- package/dist/components/Tree/Tree.d.ts.map +1 -0
- package/dist/components/Tree/Tree.js +43 -0
- package/dist/components/Tree/Tree.js.map +1 -0
- package/dist/components/Tree/Tree.mjs +41 -0
- package/dist/components/Tree/Tree.mjs.map +1 -0
- package/dist/components/Tree/Tree.types.d.ts +21 -0
- package/dist/components/Tree/Tree.types.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranch.d.ts +3 -0
- package/dist/components/Tree/TreeBranch.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranch.js +14 -0
- package/dist/components/Tree/TreeBranch.js.map +1 -0
- package/dist/components/Tree/TreeBranch.mjs +12 -0
- package/dist/components/Tree/TreeBranch.mjs.map +1 -0
- package/dist/components/Tree/TreeBranchContent.d.ts +3 -0
- package/dist/components/Tree/TreeBranchContent.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranchContent.js +14 -0
- package/dist/components/Tree/TreeBranchContent.js.map +1 -0
- package/dist/components/Tree/TreeBranchContent.mjs +12 -0
- package/dist/components/Tree/TreeBranchContent.mjs.map +1 -0
- package/dist/components/Tree/TreeBranchControl.d.ts +3 -0
- package/dist/components/Tree/TreeBranchControl.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranchControl.js +19 -0
- package/dist/components/Tree/TreeBranchControl.js.map +1 -0
- package/dist/components/Tree/TreeBranchControl.mjs +17 -0
- package/dist/components/Tree/TreeBranchControl.mjs.map +1 -0
- package/dist/components/Tree/TreeBranchIndentGuide.d.ts +3 -0
- package/dist/components/Tree/TreeBranchIndentGuide.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranchIndentGuide.js +20 -0
- package/dist/components/Tree/TreeBranchIndentGuide.js.map +1 -0
- package/dist/components/Tree/TreeBranchIndentGuide.mjs +18 -0
- package/dist/components/Tree/TreeBranchIndentGuide.mjs.map +1 -0
- package/dist/components/Tree/TreeBranchIndicator.d.ts +3 -0
- package/dist/components/Tree/TreeBranchIndicator.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranchIndicator.js +15 -0
- package/dist/components/Tree/TreeBranchIndicator.js.map +1 -0
- package/dist/components/Tree/TreeBranchIndicator.mjs +13 -0
- package/dist/components/Tree/TreeBranchIndicator.mjs.map +1 -0
- package/dist/components/Tree/TreeBranchText.d.ts +3 -0
- package/dist/components/Tree/TreeBranchText.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranchText.js +14 -0
- package/dist/components/Tree/TreeBranchText.js.map +1 -0
- package/dist/components/Tree/TreeBranchText.mjs +12 -0
- package/dist/components/Tree/TreeBranchText.mjs.map +1 -0
- package/dist/components/Tree/TreeBranchTrigger.d.ts +3 -0
- package/dist/components/Tree/TreeBranchTrigger.d.ts.map +1 -0
- package/dist/components/Tree/TreeBranchTrigger.js +15 -0
- package/dist/components/Tree/TreeBranchTrigger.js.map +1 -0
- package/dist/components/Tree/TreeBranchTrigger.mjs +13 -0
- package/dist/components/Tree/TreeBranchTrigger.mjs.map +1 -0
- package/dist/components/Tree/TreeItem.d.ts +3 -0
- package/dist/components/Tree/TreeItem.d.ts.map +1 -0
- package/dist/components/Tree/TreeItem.js +25 -0
- package/dist/components/Tree/TreeItem.js.map +1 -0
- package/dist/components/Tree/TreeItem.mjs +23 -0
- package/dist/components/Tree/TreeItem.mjs.map +1 -0
- package/dist/components/Tree/TreeItemIndicator.d.ts +3 -0
- package/dist/components/Tree/TreeItemIndicator.d.ts.map +1 -0
- package/dist/components/Tree/TreeItemIndicator.js +14 -0
- package/dist/components/Tree/TreeItemIndicator.js.map +1 -0
- package/dist/components/Tree/TreeItemIndicator.mjs +12 -0
- package/dist/components/Tree/TreeItemIndicator.mjs.map +1 -0
- package/dist/components/Tree/TreeItemText.d.ts +3 -0
- package/dist/components/Tree/TreeItemText.d.ts.map +1 -0
- package/dist/components/Tree/TreeItemText.js +14 -0
- package/dist/components/Tree/TreeItemText.js.map +1 -0
- package/dist/components/Tree/TreeItemText.mjs +12 -0
- package/dist/components/Tree/TreeItemText.mjs.map +1 -0
- package/dist/components/Tree/TreeLabel.d.ts +3 -0
- package/dist/components/Tree/TreeLabel.d.ts.map +1 -0
- package/dist/components/Tree/TreeLabel.js +14 -0
- package/dist/components/Tree/TreeLabel.js.map +1 -0
- package/dist/components/Tree/TreeLabel.mjs +12 -0
- package/dist/components/Tree/TreeLabel.mjs.map +1 -0
- package/dist/components/Tree/TreeNode.d.ts +5 -0
- package/dist/components/Tree/TreeNode.d.ts.map +1 -0
- package/dist/components/Tree/TreeNode.js +9 -0
- package/dist/components/Tree/TreeNode.js.map +1 -0
- package/dist/components/Tree/TreeNode.mjs +7 -0
- package/dist/components/Tree/TreeNode.mjs.map +1 -0
- package/dist/components/Tree/TreeNodeCheckbox.d.ts +3 -0
- package/dist/components/Tree/TreeNodeCheckbox.d.ts.map +1 -0
- package/dist/components/Tree/TreeNodeCheckbox.js +14 -0
- package/dist/components/Tree/TreeNodeCheckbox.js.map +1 -0
- package/dist/components/Tree/TreeNodeCheckbox.mjs +12 -0
- package/dist/components/Tree/TreeNodeCheckbox.mjs.map +1 -0
- package/dist/components/Tree/TreeNodeContext.d.ts +2 -0
- package/dist/components/Tree/TreeNodeContext.d.ts.map +1 -0
- package/dist/components/Tree/TreeNodeContext.js +9 -0
- package/dist/components/Tree/TreeNodeContext.js.map +1 -0
- package/dist/components/Tree/TreeNodeContext.mjs +7 -0
- package/dist/components/Tree/TreeNodeContext.mjs.map +1 -0
- package/dist/components/Tree/TreeNodeProvider.d.ts +5 -0
- package/dist/components/Tree/TreeNodeProvider.d.ts.map +1 -0
- package/dist/components/Tree/TreeNodeProvider.js +9 -0
- package/dist/components/Tree/TreeNodeProvider.js.map +1 -0
- package/dist/components/Tree/TreeNodeProvider.mjs +7 -0
- package/dist/components/Tree/TreeNodeProvider.mjs.map +1 -0
- package/dist/components/Tree/TreeRoot.d.ts +3 -0
- package/dist/components/Tree/TreeRoot.d.ts.map +1 -0
- package/dist/components/Tree/TreeRoot.js +14 -0
- package/dist/components/Tree/TreeRoot.js.map +1 -0
- package/dist/components/Tree/TreeRoot.mjs +12 -0
- package/dist/components/Tree/TreeRoot.mjs.map +1 -0
- package/dist/components/Tree/TreeTree.d.ts +3 -0
- package/dist/components/Tree/TreeTree.d.ts.map +1 -0
- package/dist/components/Tree/TreeTree.js +14 -0
- package/dist/components/Tree/TreeTree.js.map +1 -0
- package/dist/components/Tree/TreeTree.mjs +12 -0
- package/dist/components/Tree/TreeTree.mjs.map +1 -0
- package/dist/components/Tree/index.d.ts +23 -0
- package/dist/components/Tree/index.d.ts.map +1 -0
- package/dist/components/Typography/Overline.d.ts +14 -0
- package/dist/components/Typography/Overline.d.ts.map +1 -0
- package/dist/components/Typography/Overline.js +28 -0
- package/dist/components/Typography/Overline.js.map +1 -0
- package/dist/components/Typography/Overline.mjs +26 -0
- package/dist/components/Typography/Overline.mjs.map +1 -0
- package/dist/components/Typography/index.d.ts +2 -1
- package/dist/components/Typography/index.d.ts.map +1 -1
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.js.map +1 -1
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs +1 -0
- package/dist/components/Workflow/canvas/Canvas/LabeledEdge.mjs.map +1 -1
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.js.map +1 -1
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs +1 -0
- package/dist/components/Workflow/canvas/CollapsibleSection/CollapsibleSection.mjs.map +1 -1
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.js.map +1 -1
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerHeader.mjs.map +1 -1
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.js.map +1 -1
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerIssues.mjs.map +1 -1
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.js.map +1 -1
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs +1 -0
- package/dist/components/Workflow/canvas/DrawerShell/DrawerShell.mjs.map +1 -1
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.js.map +1 -1
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs +1 -0
- package/dist/components/Workflow/canvas/EdgeInspector/BuiltInEdgeInspector.mjs.map +1 -1
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs +1 -0
- package/dist/components/Workflow/canvas/FieldWrapper/FieldWrapper.mjs.map +1 -1
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.js.map +1 -1
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs +1 -0
- package/dist/components/Workflow/canvas/GraphErrorBanner/GraphErrorBanner.mjs.map +1 -1
- package/dist/components/Workflow/canvas/IssueList/IssueList.js +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.js.map +1 -1
- package/dist/components/Workflow/canvas/IssueList/IssueList.mjs +1 -0
- package/dist/components/Workflow/canvas/IssueList/IssueList.mjs.map +1 -1
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.js +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.js.map +1 -1
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs +1 -0
- package/dist/components/Workflow/canvas/NodePalette/NodePalette.mjs.map +1 -1
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.js +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.js.map +1 -1
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs +1 -0
- package/dist/components/Workflow/canvas/NodeShell/NodeShell.mjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -1
- package/dist/index.mjs.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +12 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/index.mjs +12 -0
- package/dist/theme/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/Tree/Tree.stories.tsx +564 -0
- package/src/components/Tree/Tree.tsx +37 -0
- package/src/components/Tree/Tree.types.ts +51 -0
- package/src/components/Tree/TreeBranch.tsx +11 -0
- package/src/components/Tree/TreeBranchContent.tsx +21 -0
- package/src/components/Tree/TreeBranchControl.tsx +28 -0
- package/src/components/Tree/TreeBranchIndentGuide.tsx +20 -0
- package/src/components/Tree/TreeBranchIndicator.tsx +27 -0
- package/src/components/Tree/TreeBranchText.tsx +19 -0
- package/src/components/Tree/TreeBranchTrigger.tsx +25 -0
- package/src/components/Tree/TreeItem.tsx +33 -0
- package/src/components/Tree/TreeItemIndicator.tsx +20 -0
- package/src/components/Tree/TreeItemText.tsx +19 -0
- package/src/components/Tree/TreeLabel.tsx +19 -0
- package/src/components/Tree/TreeNode.tsx +6 -0
- package/src/components/Tree/TreeNodeCheckbox.tsx +12 -0
- package/src/components/Tree/TreeNodeContext.tsx +3 -0
- package/src/components/Tree/TreeNodeProvider.tsx +6 -0
- package/src/components/Tree/TreeRoot.tsx +11 -0
- package/src/components/Tree/TreeTree.tsx +11 -0
- package/src/components/Tree/index.ts +42 -0
- package/src/components/Typography/Overline.tsx +33 -0
- package/src/components/Typography/Typography.stories.tsx +2 -1
- package/src/components/Typography/index.ts +2 -0
- package/src/index.ts +2 -0
- package/src/theme/index.ts +13 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { focusRing } from '@/utils/focusRing';
|
|
5
|
+
|
|
6
|
+
import { TreeBranchControlProps } from './Tree.types';
|
|
7
|
+
|
|
8
|
+
export const TreeBranchControl = forwardRef<
|
|
9
|
+
HTMLDivElement,
|
|
10
|
+
TreeBranchControlProps
|
|
11
|
+
>((props, ref) => {
|
|
12
|
+
// See TreeItem — same reason: the recipe's depth-based padding-inline-
|
|
13
|
+
// start (`var(--tree-offset)`) gets overridden if we re-declare `px`
|
|
14
|
+
// here. Only the color/state overrides remain. `cursor: pointer` is
|
|
15
|
+
// re-added because the recipe's `baseItemStyle` doesn't include it.
|
|
16
|
+
return (
|
|
17
|
+
<ChakraTreeView.BranchControl
|
|
18
|
+
ref={ref}
|
|
19
|
+
cursor="pointer"
|
|
20
|
+
color="fg.default"
|
|
21
|
+
_hover={{ bg: 'bg.subtle' }}
|
|
22
|
+
_selected={{ bg: 'primary.lightest', color: 'primary.dark' }}
|
|
23
|
+
{...focusRing}
|
|
24
|
+
{...props}
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
TreeBranchControl.displayName = 'TreeBranchControl';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeBranchIndentGuideProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeBranchIndentGuide = forwardRef<
|
|
7
|
+
HTMLDivElement,
|
|
8
|
+
TreeBranchIndentGuideProps
|
|
9
|
+
>((props, ref) => {
|
|
10
|
+
// Chakra v3's `branchIndentGuide` slot already renders the vertical
|
|
11
|
+
// line via `position: absolute`, `width: 1px`, `bg: border`, with
|
|
12
|
+
// `insetInlineStart` auto-calculated from tree depth. Don't add
|
|
13
|
+
// `ms`/`ps` (breaks the depth math, pushes the line over content)
|
|
14
|
+
// or `borderInlineStartWidth` (stacks a second 1px stroke on top of
|
|
15
|
+
// the slot's own bg-painted 1px). Only override `bg` to lighten.
|
|
16
|
+
return (
|
|
17
|
+
<ChakraTreeView.BranchIndentGuide ref={ref} bg="border.subtle" {...props} />
|
|
18
|
+
);
|
|
19
|
+
});
|
|
20
|
+
TreeBranchIndentGuide.displayName = 'TreeBranchIndentGuide';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { IoChevronForward } from '@/components/Icon';
|
|
5
|
+
|
|
6
|
+
import { TreeBranchIndicatorProps } from './Tree.types';
|
|
7
|
+
|
|
8
|
+
export const TreeBranchIndicator = forwardRef<
|
|
9
|
+
HTMLDivElement,
|
|
10
|
+
TreeBranchIndicatorProps
|
|
11
|
+
>(({ children, ...rest }, ref) => {
|
|
12
|
+
return (
|
|
13
|
+
<ChakraTreeView.BranchIndicator
|
|
14
|
+
ref={ref}
|
|
15
|
+
display="inline-flex"
|
|
16
|
+
alignItems="center"
|
|
17
|
+
justifyContent="center"
|
|
18
|
+
transition="transform 0.15s ease-out"
|
|
19
|
+
_open={{ transform: 'rotate(90deg)' }}
|
|
20
|
+
_motionReduce={{ transition: 'none' }}
|
|
21
|
+
{...rest}
|
|
22
|
+
>
|
|
23
|
+
{children ?? <IoChevronForward boxSize="xs" />}
|
|
24
|
+
</ChakraTreeView.BranchIndicator>
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
TreeBranchIndicator.displayName = 'TreeBranchIndicator';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeBranchTextProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeBranchText = forwardRef<HTMLSpanElement, TreeBranchTextProps>(
|
|
7
|
+
(props, ref) => {
|
|
8
|
+
return (
|
|
9
|
+
<ChakraTreeView.BranchText
|
|
10
|
+
ref={ref}
|
|
11
|
+
flex={1}
|
|
12
|
+
fontWeight="medium"
|
|
13
|
+
truncate
|
|
14
|
+
{...props}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
TreeBranchText.displayName = 'TreeBranchText';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { focusRing } from '@/utils/focusRing';
|
|
5
|
+
|
|
6
|
+
import { TreeBranchTriggerProps } from './Tree.types';
|
|
7
|
+
|
|
8
|
+
export const TreeBranchTrigger = forwardRef<
|
|
9
|
+
HTMLDivElement,
|
|
10
|
+
TreeBranchTriggerProps
|
|
11
|
+
>((props, ref) => {
|
|
12
|
+
return (
|
|
13
|
+
<ChakraTreeView.BranchTrigger
|
|
14
|
+
ref={ref}
|
|
15
|
+
display="inline-flex"
|
|
16
|
+
alignItems="center"
|
|
17
|
+
justifyContent="center"
|
|
18
|
+
rounded="sm"
|
|
19
|
+
cursor="pointer"
|
|
20
|
+
{...focusRing}
|
|
21
|
+
{...props}
|
|
22
|
+
/>
|
|
23
|
+
);
|
|
24
|
+
});
|
|
25
|
+
TreeBranchTrigger.displayName = 'TreeBranchTrigger';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { focusRing } from '@/utils/focusRing';
|
|
5
|
+
|
|
6
|
+
import { TreeItemProps } from './Tree.types';
|
|
7
|
+
|
|
8
|
+
export const TreeItem = forwardRef<HTMLDivElement, TreeItemProps>(
|
|
9
|
+
(props, ref) => {
|
|
10
|
+
// Chakra v3's `treeView.item` recipe already supplies layout,
|
|
11
|
+
// padding-block, gap, rounded etc — and crucially sets
|
|
12
|
+
// `padding-inline-start: var(--tree-offset)` so each item indents
|
|
13
|
+
// by its node depth. Don't re-set `px`/`py`/`display`/`gap`/`rounded`
|
|
14
|
+
// here or the recipe's depth-based start padding gets overridden
|
|
15
|
+
// and every item collapses to the same column (no indent guide
|
|
16
|
+
// alignment, items render under the vertical guide bars).
|
|
17
|
+
//
|
|
18
|
+
// `cursor` is the one common-sense interactive default the recipe
|
|
19
|
+
// does NOT supply, so we add it explicitly.
|
|
20
|
+
return (
|
|
21
|
+
<ChakraTreeView.Item
|
|
22
|
+
ref={ref}
|
|
23
|
+
cursor="pointer"
|
|
24
|
+
color="fg.default"
|
|
25
|
+
_hover={{ bg: 'bg.subtle' }}
|
|
26
|
+
_selected={{ bg: 'primary.lightest', color: 'primary.dark' }}
|
|
27
|
+
{...focusRing}
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
TreeItem.displayName = 'TreeItem';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeItemIndicatorProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeItemIndicator = forwardRef<
|
|
7
|
+
HTMLDivElement,
|
|
8
|
+
TreeItemIndicatorProps
|
|
9
|
+
>((props, ref) => {
|
|
10
|
+
return (
|
|
11
|
+
<ChakraTreeView.ItemIndicator
|
|
12
|
+
ref={ref}
|
|
13
|
+
display="inline-flex"
|
|
14
|
+
alignItems="center"
|
|
15
|
+
justifyContent="center"
|
|
16
|
+
{...props}
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
19
|
+
});
|
|
20
|
+
TreeItemIndicator.displayName = 'TreeItemIndicator';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeItemTextProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeItemText = forwardRef<HTMLSpanElement, TreeItemTextProps>(
|
|
7
|
+
(props, ref) => {
|
|
8
|
+
return (
|
|
9
|
+
<ChakraTreeView.ItemText
|
|
10
|
+
ref={ref}
|
|
11
|
+
flex={1}
|
|
12
|
+
fontWeight="medium"
|
|
13
|
+
truncate
|
|
14
|
+
{...props}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
TreeItemText.displayName = 'TreeItemText';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeLabelProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeLabel = forwardRef<HTMLLabelElement, TreeLabelProps>(
|
|
7
|
+
(props, ref) => {
|
|
8
|
+
return (
|
|
9
|
+
<ChakraTreeView.Label
|
|
10
|
+
ref={ref}
|
|
11
|
+
fontSize="sm"
|
|
12
|
+
fontWeight="semibold"
|
|
13
|
+
color="fg.muted"
|
|
14
|
+
{...props}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
TreeLabel.displayName = 'TreeLabel';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeNodeCheckboxProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeNodeCheckbox = forwardRef<
|
|
7
|
+
HTMLDivElement,
|
|
8
|
+
TreeNodeCheckboxProps
|
|
9
|
+
>((props, ref) => {
|
|
10
|
+
return <ChakraTreeView.NodeCheckbox ref={ref} {...props} />;
|
|
11
|
+
});
|
|
12
|
+
TreeNodeCheckbox.displayName = 'TreeNodeCheckbox';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeRootProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeRoot = forwardRef<HTMLDivElement, TreeRootProps>(
|
|
7
|
+
(props, ref) => {
|
|
8
|
+
return <ChakraTreeView.Root ref={ref} {...props} />;
|
|
9
|
+
}
|
|
10
|
+
);
|
|
11
|
+
TreeRoot.displayName = 'TreeRoot';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { TreeView as ChakraTreeView } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
import { TreeTreeProps } from './Tree.types';
|
|
5
|
+
|
|
6
|
+
export const TreeTree = forwardRef<HTMLDivElement, TreeTreeProps>(
|
|
7
|
+
(props, ref) => {
|
|
8
|
+
return <ChakraTreeView.Tree ref={ref} {...props} />;
|
|
9
|
+
}
|
|
10
|
+
);
|
|
11
|
+
TreeTree.displayName = 'TreeTree';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export { Tree } from './Tree';
|
|
2
|
+
export type {
|
|
3
|
+
TreeBranchContentProps,
|
|
4
|
+
TreeBranchControlProps,
|
|
5
|
+
TreeBranchIndentGuideProps,
|
|
6
|
+
TreeBranchIndicatorProps,
|
|
7
|
+
TreeBranchProps,
|
|
8
|
+
TreeBranchTextProps,
|
|
9
|
+
TreeBranchTriggerProps,
|
|
10
|
+
TreeCheckedChangeDetails,
|
|
11
|
+
TreeCollection,
|
|
12
|
+
TreeExpandedChangeDetails,
|
|
13
|
+
TreeFocusChangeDetails,
|
|
14
|
+
TreeItemIndicatorProps,
|
|
15
|
+
TreeItemProps,
|
|
16
|
+
TreeItemTextProps,
|
|
17
|
+
TreeLabelProps,
|
|
18
|
+
TreeNodeCheckboxProps,
|
|
19
|
+
TreeRootProps,
|
|
20
|
+
TreeSelectionChangeDetails,
|
|
21
|
+
TreeTreeProps,
|
|
22
|
+
} from './Tree.types';
|
|
23
|
+
export { TreeBranch } from './TreeBranch';
|
|
24
|
+
export { TreeBranchContent } from './TreeBranchContent';
|
|
25
|
+
export { TreeBranchControl } from './TreeBranchControl';
|
|
26
|
+
export { TreeBranchIndentGuide } from './TreeBranchIndentGuide';
|
|
27
|
+
export { TreeBranchIndicator } from './TreeBranchIndicator';
|
|
28
|
+
export { TreeBranchText } from './TreeBranchText';
|
|
29
|
+
export { TreeBranchTrigger } from './TreeBranchTrigger';
|
|
30
|
+
export { TreeItem } from './TreeItem';
|
|
31
|
+
export { TreeItemIndicator } from './TreeItemIndicator';
|
|
32
|
+
export { TreeItemText } from './TreeItemText';
|
|
33
|
+
export { TreeLabel } from './TreeLabel';
|
|
34
|
+
export type { TreeNodeProps } from './TreeNode';
|
|
35
|
+
export { TreeNode } from './TreeNode';
|
|
36
|
+
export { TreeNodeCheckbox } from './TreeNodeCheckbox';
|
|
37
|
+
export { TreeNodeContext } from './TreeNodeContext';
|
|
38
|
+
export type { TreeNodeProviderProps } from './TreeNodeProvider';
|
|
39
|
+
export { TreeNodeProvider } from './TreeNodeProvider';
|
|
40
|
+
export { TreeRoot } from './TreeRoot';
|
|
41
|
+
export { TreeTree } from './TreeTree';
|
|
42
|
+
export { createTreeCollection } from '@chakra-ui/react';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { Text, TextProps } from '@chakra-ui/react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Small, uppercase, letter-spaced label used as a section "eyebrow" or category
|
|
6
|
+
* heading (e.g. an "EXECUTION MODE" eyebrow above a panel heading, or a
|
|
7
|
+
* "RECENT" group label).
|
|
8
|
+
*
|
|
9
|
+
* Part of the typography scale alongside `Subtext` — it shares the subtext size
|
|
10
|
+
* but adds the baked-in overline styling (`textStyle="overline"`: uppercase,
|
|
11
|
+
* wider tracking, medium weight). Every aspect stays one Chakra prop away, so
|
|
12
|
+
* brand/status variants are a single override (e.g. `color="primary.main"`,
|
|
13
|
+
* `fontWeight="extrabold"`).
|
|
14
|
+
*/
|
|
15
|
+
export const Overline = forwardRef<HTMLParagraphElement, TextProps>(
|
|
16
|
+
(props, ref) => {
|
|
17
|
+
const { fontSize, ...rest } = props;
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Text
|
|
21
|
+
ref={ref}
|
|
22
|
+
// If fontSize is provided, disable textStyle to allow the override
|
|
23
|
+
textStyle={fontSize ? undefined : 'overline'}
|
|
24
|
+
fontSize={fontSize}
|
|
25
|
+
color="slate.800"
|
|
26
|
+
wordBreak="keep-all"
|
|
27
|
+
{...rest}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
Overline.displayName = 'Overline';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Meta, StoryObj } from '@storybook/react';
|
|
2
2
|
|
|
3
|
-
import { H1, H2, H3, H4, H5, Link, Subtext, Subtitle, Text } from '.';
|
|
3
|
+
import { H1, H2, H3, H4, H5, Link, Overline, Subtext, Subtitle, Text } from '.';
|
|
4
4
|
|
|
5
5
|
const meta = {
|
|
6
6
|
title: 'Components/Typography',
|
|
@@ -13,6 +13,7 @@ type Story = StoryObj<typeof Text>;
|
|
|
13
13
|
export const AllTextStyles: Story = {
|
|
14
14
|
render: (props) => (
|
|
15
15
|
<>
|
|
16
|
+
<Overline {...props}>Overline - section eyebrow</Overline>
|
|
16
17
|
<H1 {...props}>
|
|
17
18
|
H1 - Lorem ipsum dolor sit amet,{' '}
|
|
18
19
|
<Link variant="error" href="https://example.com">
|
|
@@ -5,6 +5,7 @@ export { H3 } from './H3';
|
|
|
5
5
|
export { H4 } from './H4';
|
|
6
6
|
export { H5 } from './H5';
|
|
7
7
|
export { Link } from './Link';
|
|
8
|
+
export { Overline } from './Overline';
|
|
8
9
|
export { Subtext } from './Subtext';
|
|
9
10
|
export { Subtitle } from './Subtitle';
|
|
10
11
|
export { Text } from './Text';
|
|
@@ -12,6 +13,7 @@ export { Text } from './Text';
|
|
|
12
13
|
// Type exports
|
|
13
14
|
export type { LinkCustomProps as LinkProps } from './Link';
|
|
14
15
|
export type {
|
|
16
|
+
TypographyProps as OverlineProps,
|
|
15
17
|
TypographyProps as SubtextProps,
|
|
16
18
|
TypographyProps as SubtitleProps,
|
|
17
19
|
TypographyProps as TextProps,
|
package/src/index.ts
CHANGED
|
@@ -88,6 +88,7 @@ export * from './components/Tag';
|
|
|
88
88
|
export * from './components/Textarea';
|
|
89
89
|
export * from './components/Toast';
|
|
90
90
|
export * from './components/Tooltip';
|
|
91
|
+
export * from './components/Tree';
|
|
91
92
|
export * from './components/Workflow';
|
|
92
93
|
// Typography Components (excluding Link to avoid conflict with Link component)
|
|
93
94
|
export {
|
|
@@ -97,6 +98,7 @@ export {
|
|
|
97
98
|
H4,
|
|
98
99
|
H5,
|
|
99
100
|
Link,
|
|
101
|
+
Overline,
|
|
100
102
|
Subtext,
|
|
101
103
|
Subtitle,
|
|
102
104
|
Text,
|
package/src/theme/index.ts
CHANGED
|
@@ -60,6 +60,14 @@ const SHARED_TEXT_STYLE_VALUES = {
|
|
|
60
60
|
fontWeight: '500',
|
|
61
61
|
lineHeight: '1.5',
|
|
62
62
|
},
|
|
63
|
+
overline: {
|
|
64
|
+
fontFamily: 'body',
|
|
65
|
+
fontSize: { base: '0.805em', md: '0.875em' }, // 12.88px → 14px (matches subtext)
|
|
66
|
+
fontWeight: '500',
|
|
67
|
+
lineHeight: '1.5',
|
|
68
|
+
letterSpacing: '0.05em', // Chakra 'wider' tracking
|
|
69
|
+
textTransform: 'uppercase',
|
|
70
|
+
},
|
|
63
71
|
} as const;
|
|
64
72
|
|
|
65
73
|
/**
|
|
@@ -172,6 +180,11 @@ export const textStyles = defineTextStyles({
|
|
|
172
180
|
description: 'Small caption text - responsive 12.88-14px',
|
|
173
181
|
value: SHARED_TEXT_STYLE_VALUES.subtext,
|
|
174
182
|
},
|
|
183
|
+
overline: {
|
|
184
|
+
description:
|
|
185
|
+
'Eyebrow / section label - uppercase, wider tracking (12.88-14px)',
|
|
186
|
+
value: SHARED_TEXT_STYLE_VALUES.overline,
|
|
187
|
+
},
|
|
175
188
|
});
|
|
176
189
|
|
|
177
190
|
/**
|