entangle-ui 0.1.0 → 0.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # entangle-ui
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#19](https://github.com/SebastianWebdev/entangle-ui/pull/19) [`497d0f5`](https://github.com/SebastianWebdev/entangle-ui/commit/497d0f540f8abdf853cdf88aff8e944fee59d378) Thanks [@SebastianWebdev](https://github.com/SebastianWebdev)! - ### App Shell and Navigation
8
+
9
+ - Added `topChromeSeparator` and `sideChromeSeparator` props in `AppShell` to control border/shadow separation between top and side chrome areas.
10
+ - Refined `Tabs` visual behavior for compact editor layouts and added `pillsFrame` prop to optionally disable the pills container frame.
11
+ - Updated closable tabs to use the library `CloseIcon` by default.
12
+
13
+ ### Menu and Inspector Improvements
14
+
15
+ - Added configurable menu dropdown gap via `menuOffset` in `MenuBar`.
16
+ - Extended `PropertyPanel` with configurable `contentTopSpacing` and new `contentBottomSpacing` for better control of inspector spacing.
17
+ - Adjusted property row padding and full-width control layout to better support dense controls (including sliders and curve editor rows).
18
+
19
+ ### Typography
20
+
21
+ - Bumped default UI text from 10px (`fontSize.xs`) to 12px (`fontSize.md`) across interactive components: `Menu`, `MenuBar`, `Select`, `Button`, `Input`, `NumberInput`, `TreeView`, `StatusBar`, `FloatingPanel`, and `PropertyInspector` (rows, sections, search, panel).
22
+ - Kept 10px for true secondary text: helper text, tooltips, group labels, toast messages, axis labels.
23
+ - `TreeView`: fixed `line-height: 1` cutting off descenders (p/q/g/y), now uses theme `lineHeight.normal`.
24
+ - `TreeView`: simplified selected item indicator to background-only (removed left border and box-shadow on selected).
25
+ - `FloatingPanel`: replaced hardcoded `12px` font-size with theme token.
26
+ - Added `ContextMenu` component with submenu support, icon slots, and keyboard navigation.
27
+
28
+ ### Layout and Rendering Fixes
29
+
30
+ - Fixed `SplitPane` size reconciliation to avoid 1-2px layout drift caused by rounding.
31
+ - Improved overflow behavior in shell regions (`Toolbar`, `StatusBar`, tabs panels, and side slots) to prevent content from bleeding outside container bounds.
32
+ - Improved `CurveEditor` axis label layout and spacing when `labelX` / `labelY` are provided.
33
+
3
34
  ## 0.1.0
4
35
 
5
36
  ### Minor Changes
package/README.md CHANGED
@@ -1,117 +1,171 @@
1
- # ⚛️ Entangle UI
1
+ # Entangle UI
2
2
 
3
- > Components quantumly entangled for professional editor interfaces
3
+ React + TypeScript component library for building editor-style interfaces.
4
4
 
5
- [![npm version](https://badge.fury.io/js/entangle-ui.svg)](https://www.npmjs.com/package/entangle-ui)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ `entangle-ui` is focused on dense, keyboard-friendly UI patterns used in tools like 3D editors, node editors, scene inspectors, and technical dashboards.
7
6
 
8
- **🚧 ALPHA VERSION - In active development, not ready for production**
7
+ ## Status
9
8
 
10
- ## 🌌 Philosophy
9
+ This package is in alpha (`0.1.0-alpha.x`) and still evolving.
11
10
 
12
- Entangle UI brings quantum mechanics principles to interface design. Components are **quantumly entangled** - when one changes state, others respond instantly across your entire application. Built specifically for professional editor interfaces, 3D tools, and precision applications where every interaction matters.
11
+ - API can change between alpha releases.
12
+ - Use in production only if you are comfortable with rapid iteration.
13
13
 
14
- ## ⚡ Features
15
-
16
- - **🔗 Quantum Entanglement**: Components synchronize instantly across your app
17
- - **🎯 Precision Controls**: Built for professional editor interfaces
18
- - **⚫ Minimal & Powerful**: Maximum functionality, minimal visual footprint
19
- - **📐 TypeScript First**: Complete type safety and IntelliSense support
20
- - **🌙 Dark Matter Theme**: Designed for professionals who build worlds
21
- - **🧪 Base UI Foundation**: Built on rock-solid headless components
22
-
23
- ## 🚀 Quick Start
14
+ ## Installation
24
15
 
25
16
  ```bash
26
- # Install alpha version
27
17
  npm install entangle-ui@alpha
28
18
  ```
29
19
 
30
- ```tsx
31
- import { Button, Input } from 'entangle-ui';
20
+ Peer dependencies:
21
+
22
+ - `react >= 19.1.0`
23
+ - `react-dom >= 19.1.0`
24
+ - `@emotion/react ^11`
25
+ - `@emotion/styled ^11`
26
+
27
+ ## Quick Start
32
28
 
33
- function App() {
29
+ ```tsx
30
+ import React from 'react';
31
+ import {
32
+ ThemeProvider,
33
+ AppShell,
34
+ MenuBar,
35
+ Toolbar,
36
+ StatusBar,
37
+ } from 'entangle-ui';
38
+
39
+ export function App() {
34
40
  return (
35
- <div>
36
- <Button>Entangle Reality</Button>
37
- <Input placeholder="Enter coordinates..." precision={3} />
38
- </div>
41
+ <ThemeProvider>
42
+ <div style={{ width: '100vw', height: '100vh' }}>
43
+ <AppShell>
44
+ <AppShell.MenuBar>
45
+ <MenuBar>
46
+ <MenuBar.Menu label="File">
47
+ <MenuBar.Item onClick={() => {}}>New</MenuBar.Item>
48
+ </MenuBar.Menu>
49
+ </MenuBar>
50
+ </AppShell.MenuBar>
51
+
52
+ <AppShell.Toolbar>
53
+ <Toolbar aria-label="Main toolbar">
54
+ <Toolbar.Button onClick={() => {}}>Run</Toolbar.Button>
55
+ </Toolbar>
56
+ </AppShell.Toolbar>
57
+
58
+ <AppShell.Dock>
59
+ <div style={{ padding: 16 }}>Editor content</div>
60
+ </AppShell.Dock>
61
+
62
+ <AppShell.StatusBar>
63
+ <StatusBar>
64
+ <StatusBar.Section>
65
+ <StatusBar.Item>Ready</StatusBar.Item>
66
+ </StatusBar.Section>
67
+ </StatusBar>
68
+ </AppShell.StatusBar>
69
+ </AppShell>
70
+ </div>
71
+ </ThemeProvider>
39
72
  );
40
73
  }
41
74
  ```
42
75
 
43
- ## 🎯 Built For
76
+ ## Theming
44
77
 
45
- - 🌍 **Planet generators** & procedural tools
46
- - 🎮 **Node-based editors** & visual programming
47
- - 🎨 **3D modeling interfaces** & CAD applications
48
- - ⚙️ **Parameter control systems** & scientific tools
49
- - 🔬 **Precision applications** requiring exact values
78
+ Entangle UI ships with design tokens and an Emotion-based `ThemeProvider`.
50
79
 
51
- ## 📚 Documentation
80
+ ```tsx
81
+ import { ThemeProvider, createTheme } from 'entangle-ui';
82
+
83
+ const theme = createTheme({
84
+ colors: {
85
+ accent: {
86
+ primary: '#2aa1ff',
87
+ },
88
+ },
89
+ });
90
+
91
+ export function Root({ children }: { children: React.ReactNode }) {
92
+ return <ThemeProvider theme={theme}>{children}</ThemeProvider>;
93
+ }
94
+ ```
52
95
 
53
- - **[GitHub](https://github.com/yourusername/entangle-ui)** - Source code and issues
96
+ ## What Is Included
54
97
 
55
- ## 🧪 Current Status (Alpha)
98
+ ### Primitives
56
99
 
57
- ### Available Components
100
+ - `Button`, `IconButton`
101
+ - `Input`, `Text`, `Paper`, `Icon`
102
+ - `Checkbox`, `CheckboxGroup`, `Switch`
103
+ - `Tooltip`, `Popover`, `Collapsible`
58
104
 
59
- - [ ] Button - Quantum interaction states
60
- - [ ] Input - Precision numeric controls
61
- - [ ] Slider - Fine-tuned value manipulation
62
- - [ ] Toggle - Binary state quantum switches
105
+ ### Layout
63
106
 
64
- ### 🚧 In Development
107
+ - `Stack`, `Flex`, `Grid`, `Spacer`
108
+ - `Accordion`
109
+ - `ScrollArea`
110
+ - `SplitPane`, `SplitPanePanel`
65
111
 
66
- - Vector input controls
67
- - Color precision pickers
68
- - Node connection components
69
- - 3D viewport controls
112
+ ### Controls
70
113
 
71
- ### 📋 Roadmap
114
+ - `NumberInput`, `Slider`, `Select`, `VectorInput`
115
+ - `ColorPicker`, `ColorPalette`, `ColorSwatch`, `EyeDropper`
116
+ - `TreeView`
117
+ - `CurveEditor` + helpers (`evaluateCurve`, `sampleCurve`, `createLinearCurve`, `domainToCanvas`)
72
118
 
73
- - Canvas integration helpers
74
- - Advanced theming system
75
- - Animation state management
76
- - Plugin architecture
119
+ ### Navigation
77
120
 
78
- ## 🛠️ Development
121
+ - `Menu`, `useMenu`
122
+ - `Tabs`, `TabList`, `Tab`, `TabPanel`
79
123
 
80
- ```bash
81
- # Clone the repository
82
- git clone https://github.com/yourusername/entangle-ui.git
83
- cd entangle-ui
124
+ ### Shell
84
125
 
85
- # Install dependencies
86
- npm install
126
+ - `AppShell`, `useAppShell`
127
+ - `MenuBar`
128
+ - `Toolbar`
129
+ - `StatusBar`
130
+ - `FloatingPanel`, `FloatingManager`
87
131
 
88
- # Start Storybook
89
- npm run dev
132
+ ### Editor
90
133
 
91
- # Run tests
92
- npm run test
134
+ - `PropertyPanel`, `PropertySection`, `PropertyRow`, `PropertyGroup`
135
+ - `usePropertyUndo`
93
136
 
94
- # Build library
95
- npm run build
96
- ```
137
+ ### Feedback and Form
97
138
 
98
- ## 🤝 Contributing
139
+ - `Dialog` primitives (`Dialog`, `DialogHeader`, `DialogBody`, `DialogFooter`, `DialogClose`)
140
+ - `ToastProvider`, `useToast`
141
+ - `FormLabel`, `FormHelperText`, `InputWrapper`
99
142
 
100
- Entangle UI is in active alpha development. We welcome:
143
+ ## Development
144
+
145
+ ```bash
146
+ npm install
147
+ npm run dev # Storybook
148
+ npm run test # Vitest
149
+ npm run lint
150
+ npm run type-check
151
+ npm run build
152
+ ```
101
153
 
102
- - 🐛 **Bug reports** - Help us squash quantum bugs
103
- - 💡 **Feature requests** - What components do you need?
104
- - 🔬 **Testing** - Try it in your editor projects
105
- - 📖 **Documentation** - Help us explain quantum principles
154
+ ## Release Workflow
106
155
 
107
- See [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines.
156
+ This repository uses Changesets.
108
157
 
109
- ## 📄 License
158
+ ```bash
159
+ npm run changeset
160
+ npm run version-packages
161
+ npm run release
162
+ ```
110
163
 
111
- MIT © [Your Name](https://github.com/yourusername)
164
+ ## Repository
112
165
 
113
- ---
166
+ - Source: `https://github.com/SebastianWebdev/entangle-ui`
167
+ - Issues: `https://github.com/SebastianWebdev/entangle-ui/issues`
114
168
 
115
- > _"Spooky action at a distance, but for UI components"_ ⚛️
169
+ ## License
116
170
 
117
- **Built for creators who shape digital realities**
171
+ MIT
package/dist/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  export { Theme, ThemeProvider, Tokens, createTheme, tokens } from '@/theme';
2
- export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps, AccordionProps, AccordionSize, AccordionTrigger, AccordionTriggerProps, AccordionVariant, Flex, FlexAlign, FlexAlignContent, FlexDirection, FlexJustify, FlexProps, FlexSpacing, FlexWrap, Grid, GridProps, GridSize, GridSpacing, PanelConfig, PanelSize, ScrollArea, ScrollAreaDirection, ScrollAreaProps, ScrollbarVisibility, Spacer, SplitDirection, SplitPane, SplitPanePanel, SplitPanePanelProps, SplitPaneProps, Stack } from '@/components/layout';
2
+ export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps, AccordionProps, AccordionSize, AccordionTrigger, AccordionTriggerProps, AccordionVariant, Flex, FlexAlign, FlexAlignContent, FlexDirection, FlexJustify, FlexProps, FlexSpacing, FlexWrap, Grid, GridProps, GridSize, GridSpacing, PanelConfig, PanelSize, PanelSurface, PanelSurfaceBodyProps, PanelSurfaceFooterProps, PanelSurfaceHeaderProps, PanelSurfaceProps, PanelSurfaceSize, ScrollArea, ScrollAreaDirection, ScrollAreaProps, ScrollbarVisibility, Spacer, SplitDirection, SplitPane, SplitPanePanel, SplitPanePanelProps, SplitPaneProps, Stack } from '@/components/layout';
3
3
  export { Button, ButtonProps, ButtonSize, ButtonVariant, Checkbox, CheckboxGroup, CheckboxGroupProps, CheckboxProps, CheckboxSize, CheckboxVariant, Collapsible, CollapsibleProps, CollapsibleSize, CollisionAvoidance, Icon, IconButton, IconProps, IconSize, Input, InputProps, InputSize, Paper, PaperElevation, PaperNestLevel, PaperProps, PaperSpacing, Popover, PopoverClose, PopoverCloseProps, PopoverContent, PopoverContentProps, PopoverPlacement, PopoverProps, PopoverTrigger, PopoverTriggerProps, Switch, SwitchProps, SwitchSize, Text, TextAlign, TextColor, TextElement, TextLineHeight, TextProps, TextSize, TextVariant, TextWeight, Tooltip, TooltipCollisionConfig, TooltipCollisionStrategy, TooltipPlacement, TooltipProps } from '@/components/primitives';
4
4
  export { CURVE_PRESETS, ColorFormat, ColorInputMode, ColorPalette, ColorPaletteProps, ColorPicker, ColorPickerProps, ColorPickerSize, ColorPreset, ColorSwatch, ColorSwatchProps, CurveBackgroundInfo, CurveBottomBarInfo, CurveData, CurveEditor, CurveEditorProps, CurveEditorSize, CurveKeyframe, CurvePreset, EARTH_PALETTE, EyeDropper, EyeDropperProps, MATERIAL_PALETTE, MONOCHROME_PALETTE, NEON_PALETTE, NumberInput, NumberInputProps, PASTEL_PALETTE, PROFESSIONAL_PALETTES, Palette, PaletteColor, PaletteShade, SKIN_TONES_PALETTE, Select, SelectOptionGroup, SelectOptionItem, SelectProps, SelectSize, SelectVariant, Slider, SliderProps, TAILWIND_PALETTE, TangentMode, TreeNodeData, TreeNodeState, TreeSelectionMode, TreeView, TreeViewProps, TreeViewSize, VINTAGE_PALETTE, VectorColorPreset, VectorDimension, VectorInput, VectorInputProps, VectorInputSize, VectorLabelPreset, createLinearCurve, domainToCanvas, evaluateCurve, sampleCurve } from '@/components/controls';
5
- export { Tab, TabList, TabListProps, TabPanel, TabPanelProps, TabProps, Tabs, TabsProps, TabsSize, TabsVariant } from '@/components/navigation';
5
+ export { ContextMenu, ContextMenuBaseProps, ContextMenuConfig, ContextMenuProps, ContextMenuTargetDetails, ItemSelectionType, Menu, MenuBaseProps, MenuConfig, MenuGroup, MenuItem, MenuProps, MenuSelection, SubmenuTrigger, Tab, TabList, TabListProps, TabPanel, TabPanelProps, TabProps, Tabs, TabsProps, TabsSize, TabsVariant, UseContextMenuTargetResult, useContextMenuTarget, useMenu } from '@/components/navigation';
6
6
  export { FormHelperText, FormHelperTextProps, FormLabel, FormLabelProps, InputWrapper, InputWrapperProps } from '@/components/form';
7
7
  export { Dialog, DialogBody, DialogBodyProps, DialogClose, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogProps, DialogSize, ToastData, ToastPosition, ToastProvider, ToastProviderProps, ToastSeverity, UseToastReturn, useToast } from '@/components/feedback';
8
8
  export { PropertyGroup, PropertyGroupProps, PropertyInspectorSize, PropertyPanel, PropertyPanelProps, PropertyRow, PropertyRowProps, PropertySection, PropertySectionProps, PropertyUndoEntry, UsePropertyUndoOptions, UsePropertyUndoReturn, usePropertyUndo } from '@/components/editor';
9
+ export { AppShell, AppShellContextValue, AppShellProps, AppShellSlotProps, AppShellToolbarSlotProps, FloatingManager, FloatingManagerProps, FloatingPanel, FloatingPanelProps, FloatingPanelSize, MenuBar, MenuBarItemProps, MenuBarMenuProps, MenuBarProps, MenuBarSeparatorProps, MenuBarSize, MenuBarSubProps, Position, StatusBar, StatusBarItemProps, StatusBarProps, StatusBarSectionProps, StatusBarSectionSide, StatusBarSize, StatusBarVariant, Toolbar, ToolbarButtonProps, ToolbarButtonVariant, ToolbarGroupProps, ToolbarOrientation, ToolbarPosition, ToolbarProps, ToolbarSeparatorProps, ToolbarSize, ToolbarSpacerProps, ToolbarToggleProps, useAppShell } from '@/components/shell';
9
10
  export { BaseComponent, Size, Variant } from '@/types/common';
10
11
  export { Brand, DeepPartial, DeepReadonly, KeyOf, LiteralUnion, NonEmptyArray, Prettify, RequireFields, StrictExclude, ValueOf } from '@/types/utilities';
11
12
  export { cn } from '@/utils/cn';