@mindlogic-ai/logician-ui 3.2.0-alpha.0 → 3.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/components/Tree/Tree.d.ts +20 -0
  2. package/dist/components/Tree/Tree.d.ts.map +1 -0
  3. package/dist/components/Tree/Tree.js +43 -0
  4. package/dist/components/Tree/Tree.js.map +1 -0
  5. package/dist/components/Tree/Tree.mjs +41 -0
  6. package/dist/components/Tree/Tree.mjs.map +1 -0
  7. package/dist/components/Tree/Tree.types.d.ts +21 -0
  8. package/dist/components/Tree/Tree.types.d.ts.map +1 -0
  9. package/dist/components/Tree/TreeBranch.d.ts +3 -0
  10. package/dist/components/Tree/TreeBranch.d.ts.map +1 -0
  11. package/dist/components/Tree/TreeBranch.js +14 -0
  12. package/dist/components/Tree/TreeBranch.js.map +1 -0
  13. package/dist/components/Tree/TreeBranch.mjs +12 -0
  14. package/dist/components/Tree/TreeBranch.mjs.map +1 -0
  15. package/dist/components/Tree/TreeBranchContent.d.ts +3 -0
  16. package/dist/components/Tree/TreeBranchContent.d.ts.map +1 -0
  17. package/dist/components/Tree/TreeBranchContent.js +14 -0
  18. package/dist/components/Tree/TreeBranchContent.js.map +1 -0
  19. package/dist/components/Tree/TreeBranchContent.mjs +12 -0
  20. package/dist/components/Tree/TreeBranchContent.mjs.map +1 -0
  21. package/dist/components/Tree/TreeBranchControl.d.ts +3 -0
  22. package/dist/components/Tree/TreeBranchControl.d.ts.map +1 -0
  23. package/dist/components/Tree/TreeBranchControl.js +19 -0
  24. package/dist/components/Tree/TreeBranchControl.js.map +1 -0
  25. package/dist/components/Tree/TreeBranchControl.mjs +17 -0
  26. package/dist/components/Tree/TreeBranchControl.mjs.map +1 -0
  27. package/dist/components/Tree/TreeBranchIndentGuide.d.ts +3 -0
  28. package/dist/components/Tree/TreeBranchIndentGuide.d.ts.map +1 -0
  29. package/dist/components/Tree/TreeBranchIndentGuide.js +20 -0
  30. package/dist/components/Tree/TreeBranchIndentGuide.js.map +1 -0
  31. package/dist/components/Tree/TreeBranchIndentGuide.mjs +18 -0
  32. package/dist/components/Tree/TreeBranchIndentGuide.mjs.map +1 -0
  33. package/dist/components/Tree/TreeBranchIndicator.d.ts +3 -0
  34. package/dist/components/Tree/TreeBranchIndicator.d.ts.map +1 -0
  35. package/dist/components/Tree/TreeBranchIndicator.js +15 -0
  36. package/dist/components/Tree/TreeBranchIndicator.js.map +1 -0
  37. package/dist/components/Tree/TreeBranchIndicator.mjs +13 -0
  38. package/dist/components/Tree/TreeBranchIndicator.mjs.map +1 -0
  39. package/dist/components/Tree/TreeBranchText.d.ts +3 -0
  40. package/dist/components/Tree/TreeBranchText.d.ts.map +1 -0
  41. package/dist/components/Tree/TreeBranchText.js +14 -0
  42. package/dist/components/Tree/TreeBranchText.js.map +1 -0
  43. package/dist/components/Tree/TreeBranchText.mjs +12 -0
  44. package/dist/components/Tree/TreeBranchText.mjs.map +1 -0
  45. package/dist/components/Tree/TreeBranchTrigger.d.ts +3 -0
  46. package/dist/components/Tree/TreeBranchTrigger.d.ts.map +1 -0
  47. package/dist/components/Tree/TreeBranchTrigger.js +15 -0
  48. package/dist/components/Tree/TreeBranchTrigger.js.map +1 -0
  49. package/dist/components/Tree/TreeBranchTrigger.mjs +13 -0
  50. package/dist/components/Tree/TreeBranchTrigger.mjs.map +1 -0
  51. package/dist/components/Tree/TreeItem.d.ts +3 -0
  52. package/dist/components/Tree/TreeItem.d.ts.map +1 -0
  53. package/dist/components/Tree/TreeItem.js +25 -0
  54. package/dist/components/Tree/TreeItem.js.map +1 -0
  55. package/dist/components/Tree/TreeItem.mjs +23 -0
  56. package/dist/components/Tree/TreeItem.mjs.map +1 -0
  57. package/dist/components/Tree/TreeItemIndicator.d.ts +3 -0
  58. package/dist/components/Tree/TreeItemIndicator.d.ts.map +1 -0
  59. package/dist/components/Tree/TreeItemIndicator.js +14 -0
  60. package/dist/components/Tree/TreeItemIndicator.js.map +1 -0
  61. package/dist/components/Tree/TreeItemIndicator.mjs +12 -0
  62. package/dist/components/Tree/TreeItemIndicator.mjs.map +1 -0
  63. package/dist/components/Tree/TreeItemText.d.ts +3 -0
  64. package/dist/components/Tree/TreeItemText.d.ts.map +1 -0
  65. package/dist/components/Tree/TreeItemText.js +14 -0
  66. package/dist/components/Tree/TreeItemText.js.map +1 -0
  67. package/dist/components/Tree/TreeItemText.mjs +12 -0
  68. package/dist/components/Tree/TreeItemText.mjs.map +1 -0
  69. package/dist/components/Tree/TreeLabel.d.ts +3 -0
  70. package/dist/components/Tree/TreeLabel.d.ts.map +1 -0
  71. package/dist/components/Tree/TreeLabel.js +14 -0
  72. package/dist/components/Tree/TreeLabel.js.map +1 -0
  73. package/dist/components/Tree/TreeLabel.mjs +12 -0
  74. package/dist/components/Tree/TreeLabel.mjs.map +1 -0
  75. package/dist/components/Tree/TreeNode.d.ts +5 -0
  76. package/dist/components/Tree/TreeNode.d.ts.map +1 -0
  77. package/dist/components/Tree/TreeNode.js +9 -0
  78. package/dist/components/Tree/TreeNode.js.map +1 -0
  79. package/dist/components/Tree/TreeNode.mjs +7 -0
  80. package/dist/components/Tree/TreeNode.mjs.map +1 -0
  81. package/dist/components/Tree/TreeNodeCheckbox.d.ts +3 -0
  82. package/dist/components/Tree/TreeNodeCheckbox.d.ts.map +1 -0
  83. package/dist/components/Tree/TreeNodeCheckbox.js +14 -0
  84. package/dist/components/Tree/TreeNodeCheckbox.js.map +1 -0
  85. package/dist/components/Tree/TreeNodeCheckbox.mjs +12 -0
  86. package/dist/components/Tree/TreeNodeCheckbox.mjs.map +1 -0
  87. package/dist/components/Tree/TreeNodeContext.d.ts +2 -0
  88. package/dist/components/Tree/TreeNodeContext.d.ts.map +1 -0
  89. package/dist/components/Tree/TreeNodeContext.js +9 -0
  90. package/dist/components/Tree/TreeNodeContext.js.map +1 -0
  91. package/dist/components/Tree/TreeNodeContext.mjs +7 -0
  92. package/dist/components/Tree/TreeNodeContext.mjs.map +1 -0
  93. package/dist/components/Tree/TreeNodeProvider.d.ts +5 -0
  94. package/dist/components/Tree/TreeNodeProvider.d.ts.map +1 -0
  95. package/dist/components/Tree/TreeNodeProvider.js +9 -0
  96. package/dist/components/Tree/TreeNodeProvider.js.map +1 -0
  97. package/dist/components/Tree/TreeNodeProvider.mjs +7 -0
  98. package/dist/components/Tree/TreeNodeProvider.mjs.map +1 -0
  99. package/dist/components/Tree/TreeRoot.d.ts +3 -0
  100. package/dist/components/Tree/TreeRoot.d.ts.map +1 -0
  101. package/dist/components/Tree/TreeRoot.js +14 -0
  102. package/dist/components/Tree/TreeRoot.js.map +1 -0
  103. package/dist/components/Tree/TreeRoot.mjs +12 -0
  104. package/dist/components/Tree/TreeRoot.mjs.map +1 -0
  105. package/dist/components/Tree/TreeTree.d.ts +3 -0
  106. package/dist/components/Tree/TreeTree.d.ts.map +1 -0
  107. package/dist/components/Tree/TreeTree.js +14 -0
  108. package/dist/components/Tree/TreeTree.js.map +1 -0
  109. package/dist/components/Tree/TreeTree.mjs +12 -0
  110. package/dist/components/Tree/TreeTree.mjs.map +1 -0
  111. package/dist/components/Tree/index.d.ts +23 -0
  112. package/dist/components/Tree/index.d.ts.map +1 -0
  113. package/dist/index.d.ts +1 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +40 -0
  116. package/dist/index.js.map +1 -1
  117. package/dist/index.mjs +19 -1
  118. package/dist/index.mjs.map +1 -1
  119. package/package.json +1 -1
  120. package/src/components/Tree/Tree.stories.tsx +564 -0
  121. package/src/components/Tree/Tree.tsx +37 -0
  122. package/src/components/Tree/Tree.types.ts +51 -0
  123. package/src/components/Tree/TreeBranch.tsx +11 -0
  124. package/src/components/Tree/TreeBranchContent.tsx +21 -0
  125. package/src/components/Tree/TreeBranchControl.tsx +28 -0
  126. package/src/components/Tree/TreeBranchIndentGuide.tsx +20 -0
  127. package/src/components/Tree/TreeBranchIndicator.tsx +27 -0
  128. package/src/components/Tree/TreeBranchText.tsx +19 -0
  129. package/src/components/Tree/TreeBranchTrigger.tsx +25 -0
  130. package/src/components/Tree/TreeItem.tsx +33 -0
  131. package/src/components/Tree/TreeItemIndicator.tsx +20 -0
  132. package/src/components/Tree/TreeItemText.tsx +19 -0
  133. package/src/components/Tree/TreeLabel.tsx +19 -0
  134. package/src/components/Tree/TreeNode.tsx +6 -0
  135. package/src/components/Tree/TreeNodeCheckbox.tsx +12 -0
  136. package/src/components/Tree/TreeNodeContext.tsx +3 -0
  137. package/src/components/Tree/TreeNodeProvider.tsx +6 -0
  138. package/src/components/Tree/TreeRoot.tsx +11 -0
  139. package/src/components/Tree/TreeTree.tsx +11 -0
  140. package/src/components/Tree/index.ts +42 -0
  141. package/src/index.ts +1 -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,6 @@
1
+ import type { TreeViewNodeProps } from '@chakra-ui/react';
2
+ import { TreeView as ChakraTreeView } from '@chakra-ui/react';
3
+
4
+ export type TreeNodeProps<T> = TreeViewNodeProps<T>;
5
+
6
+ export const TreeNode = ChakraTreeView.Node;
@@ -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,3 @@
1
+ import { TreeView as ChakraTreeView } from '@chakra-ui/react';
2
+
3
+ export const TreeNodeContext = ChakraTreeView.NodeContext;
@@ -0,0 +1,6 @@
1
+ import type { TreeViewNodeProviderProps } from '@chakra-ui/react';
2
+ import { TreeView as ChakraTreeView } from '@chakra-ui/react';
3
+
4
+ export type TreeNodeProviderProps<T> = TreeViewNodeProviderProps<T>;
5
+
6
+ export const TreeNodeProvider = ChakraTreeView.NodeProvider;
@@ -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';
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 {