- Updated DisplayTab.tsx to use Breadcrumb instead of BreadcrumbNav
- Updated atoms/index.ts to re-export JSON components that were previously unavailable from atoms module (Notification, ProgressBar, Pulse, etc.)
- Fixed build errors from missing component exports by consolidating exports from json-components module
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Created JSON interface files: PageHeader, ProgressBar, Pulse, QuickActionButton, SearchInput, SeedDataStatus, Sparkle
- Created JSON definitions for all 12 components with full bindings
- Updated json-components.ts with imports and exports for new components
- Updated interfaces/index.ts to export new interface types
- Updated json-components-registry.json marking components as migrated and jsonCompatible
- Deleted 12 legacy TSX files from src/components/atoms/
- Updated atom imports where the deleted components were used
This completes the migration of the second batch of atoms, moving stateless UI components to JSON-driven architecture.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Migrated the following 12 atoms to JSON:
- DatePicker
- DetailRow
- Divider
- Drawer
- EmptyMessage
- ErrorBadge
- FileIcon
- Form
- FormField
- GlowCard
- Heading
- HelperText
Created JSON definitions in src/components/json-definitions/
Created TypeScript interfaces in src/lib/json-ui/interfaces/
Exported all 12 components from src/lib/json-ui/json-components.ts
Updated src/lib/json-ui/interfaces/index.ts with new exports
Migrate the following components from TSX to JSON-driven architecture:
- Slider - range input control with label and value display
- Spinner - rotating loading indicator with Phosphor icons
- StatusIcon - saved/synced status indicators
- StepIndicator - step-by-step progress display
- Stepper - numbered step progression indicator
- Switch - toggle control with optional label
- Table - data table with columns and row handling
- Tabs - tabbed navigation with active state
- Tag - inline tag/badge with optional remove button
- TextArea - multiline text input with error state
- TextGradient - gradient text effect component
- TextHighlight - highlighted/emphasized text span
- Timeline - vertical timeline with status indicators
- Timestamp - date/time display with relative formatting
- Toggle - simple toggle switch control
- Tooltip - popover tooltip with positioning
Created:
- 17 TypeScript interface files in src/lib/json-ui/interfaces/
- 17 JSON definition files in src/components/json-definitions/
- Updated json-components.ts with imports and exports
- Updated json-components-registry.json to mark components as jsonCompatible
All components are pure JSON with no custom hooks required (stateless rendering).
Build successfully completes with no errors.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Completed JSON migration for 6 atomic components:
- Breadcrumb: Navigation breadcrumb with configurable items
- Button: Interactive button with icons, loading, and full width support
- Calendar: Date picker using shadcn/ui Calendar
- Card: Container with variants (default, bordered, elevated, flat) and padding options
- Checkbox: Checkbox control with indeterminate state and size variants
- ContextMenu: Right-click context menu with nested submenu support
Changes:
- Created interface definitions in src/lib/json-ui/interfaces/
- Created JSON definitions in src/components/json-definitions/
- Exported all components from src/lib/json-ui/json-components.ts
- Updated json-components-registry.json with conversion metadata
- All components are pure stateless JSON (no hooks required)
- Build verified successful with no new TypeScript errors
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Converts 8 atom components from TSX to JSON-driven architecture:
- ActionButton: Action trigger with optional tooltip
- ActionCard: Interactive card with icon and description
- ActionIcon: Icon mapper for common actions
- Alert: Variant-based alert notifications
- AppLogo: Branding logo component
- Avatar: User profile images with fallbacks
- AvatarGroup: Grouped avatar display with overflow
- Badge: Status and count indicators
Changes:
- Created interface files for all 8 components in src/lib/json-ui/interfaces/
- Created JSON definitions in src/components/json-definitions/
- Updated json-components.ts with imports and pure JSON exports
- Updated interfaces/index.ts with new exports
- Updated json-components-registry.json to mark all as jsonCompatible
All components are stateless pure JSON implementations using createJsonComponent.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Create JSON definition in src/components/json-definitions/data-source-manager.json
- Create TypeScript interface in src/lib/json-ui/interfaces/data-source-manager.ts
- Create custom hook useDataSourceManagerState in src/hooks/use-data-source-manager-state.ts
- Register hook in src/lib/json-ui/hooks-registry.ts
- Export DataSourceManager from src/lib/json-ui/json-components.ts
- Update imports in src/components/DataBindingDesigner.tsx
- Remove legacy TSX files and sub-components
- Update exports in src/components/organisms/index.ts
- Add hook export in src/hooks/index.ts
DataSourceManager now uses JSON-driven architecture with custom hooks for state management.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Create NavigationMenuProps interface for type safety
- Implement useNavigationMenu hook with:
- expandedGroups state management
- toggleGroup, expandAll, collapseAll actions
- isItemVisible, getVisibleItemsCount, getItemBadge utilities
- handleItemHover, handleItemLeave with route preloading
- Create comprehensive JSON definition with:
- Nested Collapsible groups for navigation sections
- Dynamic item rendering with visibility filtering
- Badge support for error count and item badges
- Active state styling and hover effects
- Register hook in hooks-registry
- Export from json-components.ts with hook integration
- Update json-components-registry.json (source: organisms, jsonCompatible: true)
All state management delegated to useNavigationMenu hook.
Navigation logic fully expressible in JSON with custom hooks.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Converts AppMainPanel from TSX to pure JSON component. AppMainPanel is a
simple container that composes PWAStatusBar, PWAUpdatePrompt, AppHeader,
and RouterProvider components.
- Create interface in src/lib/json-ui/interfaces/app-main-panel.ts
- Create JSON definition in src/components/json-definitions/app-main-panel.json
- Export from json-components.ts as pure component
- Update registry with AppMainPanel entry
- Update interfaces/index.ts to export new interface
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Introduced `menu.json` for menu component structure with bindings for trigger and content.
- Created `password-input.json` for password input handling visibility and value changes.
- Added `popover.json` for popover component with trigger and content bindings.
feat: Implement custom hooks for UI interactions
- Added `useAccordion` for managing accordion state with single/multiple item support.
- Created `useBindingEditor` for managing bindings in a dynamic editor.
- Implemented `useCopyState` for clipboard copy functionality with feedback.
- Developed `useFileUpload` for handling file uploads with drag-and-drop support.
- Introduced `useFocusState` for managing focus state in components.
- Created `useImageState` for handling image loading and error states.
- Added `useMenuState` for managing menu interactions and item clicks.
- Implemented `usePasswordVisibility` for toggling password visibility.
- Developed `usePopoverState` for managing popover visibility and interactions.
feat: Add constants and interfaces for JSON UI components
- Introduced constants for sizes, placements, styles, and object-fit handling.
- Created interfaces for various components including Accordion, Binding Editor, Copy Button, Data Source Editor, File Upload, and more.
- Added type definitions for menu items, popover props, and other UI elements to enhance type safety and maintainability.
- Added BasicPageHeader export to atoms/index.ts (was only exported as PageHeader)
- Added Accordion export to atoms/index.ts (file existed but wasn't exported)
- Created AppBranding component in molecules/ (was missing)
- Added AppBranding export to molecules/index.ts
- Added missing exports to FeatureIdeaCloud/constants.ts (GROUP_COLORS, CATEGORIES, PRIORITIES, STATUSES)
- Build now completely clean with zero errors
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Fixed lazy-d3-bar-chart.json className binding to use className instead of data
- Fixed component-tree.json className binding to use className instead of data
- Code review feedback addressed
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Created lazy-d3-bar-chart.json with SVG rendering using chartData hook
- Created storage-settings.json with backend switching and import/export
- Deleted LazyD3BarChartWrapper.tsx and StorageSettingsWrapper.tsx
- Updated exports to use JSON components
- ALL 11 components now pure JSON - zero wrappers remaining
- Complete JSON component system with hooks loader proven working
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Created useComponentTree hook to flatten recursive tree structure
- Created useStorageBackendInfo hook for backend icon/copy logic
- Created useD3BarChart hook for chart calculations
- Registered all new hooks in hooks-registry
- Created component-tree.json with list rendering using treeData from hook
- Created seed-data-manager.json with full Card/Alert/Button structure
- Deleted ComponentTreeWrapper.tsx and SeedDataManagerWrapper.tsx
- Updated exports to use JSON components
- 9 components now pure JSON, 2 wrappers remaining
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Deleted ComponentBindingDialogWrapper.tsx and DataSourceEditorDialogWrapper.tsx
- These already have JSON definitions and were exported from json-components
- Updated molecules/index.ts to export from json-components instead of wrappers
- Reduced remaining wrappers from 6 to 4
- All deleted wrappers now pure JSON components
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Created hooks-registry.ts for registering custom React hooks
- Created createJsonComponentWithHooks for JSON components that need hooks
- Implemented SaveIndicator as pure JSON with useSaveIndicator hook
- Moved JSON definitions from wrappers/definitions to components/json-definitions
- Removed wrappers folder entirely
- Fixed NavigationItem JSON to include onClick handler binding
- Deleted legacy NavigationItem.tsx and PageHeaderContent.tsx files
- Architecture: JSON + interfaces + hook loader = fully functional components
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Created src/lib/json-ui/interfaces/ folder for component interfaces
- Created createJsonComponent() helper for pure JSON component creation
- Deleted wrapper TypeScript files (LoadingFallbackWrapper, NavigationItemWrapper, PageHeaderContentWrapper, TreeCardWrapper)
- Components now export directly from JSON definitions via json-components.ts
- No more wrapper layer - components are pure JSON with separate interface definitions
- Architecture simplified: JSON definition + interface = component
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Deleted TreeCard.tsx and TreeListHeader.tsx
- These components are now loaded dynamically through JSON registry
- import.meta.glob automatically discovers them without TypeScript files
- Consumers already refactored to not import from these files
- JSON system working correctly - no more rigid TypeScript components needed
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Import DataCard from @/components/atoms/json-ui instead of molecules
- Replace ActionBar with inline Button components
- This bypasses the molecules/index.ts exports as intended
- Components now loaded directly or through JSON registry
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
- Introduced Timestamp component for displaying formatted dates and relative time.
- Added Toggle component for switch-like functionality with customizable sizes.
- Implemented TreeIcon component for rendering tree icons using Phosphor icons.
- Created EditorActions component for explain and improve actions with icons.
- Developed FileTabs component for managing open files with close functionality.
- Added LazyInlineMonacoEditor and LazyMonacoEditor for lazy loading Monaco editor.
- Implemented NavigationItem for navigation with badges and icons.
- Created PageHeaderContent for displaying page headers with icons and descriptions.
- Added JSON configuration files for various UI components and layouts.
- Enhanced data binding with new computed data source hook.
- Updated component registry and types for new components.
- Configured Vite for improved hot module replacement experience.
Issue: When we deleted 123 "simple" components, we inadvertently deleted components that were dependencies for other parts of the system, causing build errors.
Solution: Restored all deleted components that are imported by other files.
Restored files:
UI Components (24): accordion, alert, aspect-ratio, avatar, badge, button, card, checkbox, collapsible, dialog, hover-card, input, label, popover, progress, radio-group, resizable, scroll-area, separator, skeleton, sheet, switch, tabs, textarea, toggle, tooltip
Molecules (5): DataSourceCard, EditorToolbar, EmptyEditorState, MonacoEditorPanel, SearchBar
Organisms (8): EmptyCanvasState, PageHeader, SchemaEditorCanvas, SchemaEditorPropertiesPanel, SchemaEditorSidebar, SchemaEditorStatusBar, SchemaEditorToolbar, ToolbarActions
Atoms (1): Input
Total restored: 38 files
Remaining Issue:
- Pre-existing bug in component-registry.ts: import.meta.glob cannot use dynamic patterns from JSON
- This requires a refactor to use static glob patterns
- Not introduced by our changes - was already in codebase
Current Status:
- Most import errors resolved
- Application can compile with restored dependencies
- JSON component definitions remain intact and functional
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixed two critical syntax errors:
1. renderer.tsx:363 - Extra closing brace in form field rendering
2. syncSlice.ts:81-86 - Missing closing brace and duplicate code in sync loop
Changes:
- Fixed renderer.tsx form field map closing
- Cleaned up syncSlice.ts for loop structure
- Dev server now starts successfully on port 5001
These were pre-existing errors unrelated to JSON component conversion.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>