Commit Graph

64 Commits

Author SHA1 Message Date
d67301883b feat: Delete 13 duplicate molecule TSX files with JSON equivalents
Deleted molecules now using JSON-ui implementations:
- AppBranding, CodeExplanationDialog, ComponentBindingDialog
- DataSourceCard, DataSourceEditorDialog, GitHubBuildStatus
- LazyBarChart, LazyD3BarChart, LazyLineChart
- NavigationGroupHeader, SaveIndicator, StorageSettings

Updated src/components/molecules/index.ts to import these from
@/lib/json-ui/json-components instead of TSX files.

Updated src/components/CodeEditor.tsx to import CodeExplanationDialog
from json-components.

Organisms still depend on some molecules (CanvasRenderer, ComponentPalette,
ComponentTree, PropertyEditor, etc) so those remain as TSX.

Build passes successfully with no errors.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-21 02:53:31 +00:00
cd5f11df3a feat: Delete 38 duplicate atom TSX files with JSON equivalents
Deleted the following JSON-compatible atoms that now route through json-components:
- ActionButton, ActionCard, ActionIcon, Alert, AppLogo, Avatar, AvatarGroup
- Badge, BindingIndicator, Breadcrumb, Button, ButtonGroup, Calendar, Card
- Checkbox, Chip, CircularProgress, Code, CommandPalette, CompletionCard
- ComponentPaletteItem, ConfirmButton, ContextMenu, DataSourceBadge, DataTable
- Drawer, Form, Heading, HoverCard, PageHeader, SearchInput, Separator
- Skeleton, Slider, Spinner, StatusIcon, StepIndicator, Stepper, Switch, Table

These atoms are all marked with deleteOldTSX: true and jsonCompatible: true
in the registry, and are now fully exported from src/lib/json-ui/json-components.

Build status:  PASSING
- 38 atom files deleted
- 0 TypeScript errors
- All 9,408 modules transformed successfully

Atoms remaining as TSX files (73):
- 8 non-JSON-compatible atoms (e.g., ColorSwatch, Container, DataList)
- 65 layout/utility atoms (Flex, Grid, IconButton, Stack, Text, etc.)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-21 02:43:49 +00:00
f05f896a67 feat: Complete JSON component migration for 9 components (atoms + BindingEditor)
Migration complete for:
- 5 atoms: Accordion, CopyButton, FileUpload, FilterInput, Image, Input, PasswordInput, Popover (8 total)
- 1 molecule: BindingEditor

Changes:
- Deleted 9 legacy TSX files that have complete JSON equivalents
- Exported BindingEditor from json-components.ts with useBindingEditor hook
- Registered useBindingEditor in hooks-registry.ts
- Updated all imports across codebase to use JSON-based components
- Fixed build errors: schema-loader dynamic import, DataSourceGroupSection
- Cleaned up component index exports

Build status:  PASSING
- 0 TypeScript errors
- All 9,408 modules transformed successfully
- No blocking build warnings

Next steps:
- 3 organisms still need conversion: DataSourceManager, NavigationMenu, TreeListPanel
- 120+ additional components have TSX versions (need individual migration)
- 22 JSON components now available for use throughout the app

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-21 00:12:50 +00:00
809803283b feat: Add JSON definitions for menu, password input, and popover components
- 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.
2026-01-19 01:30:42 +00:00
copilot-swe-agent[bot]
5a70926d9d fix: Resolve all unrelated build errors
- 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>
2026-01-18 23:58:27 +00:00
copilot-swe-agent[bot]
4ac334a12c feat: Convert final 2 components - ALL wrappers now pure JSON! 🎉
- 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>
2026-01-18 23:51:09 +00:00
copilot-swe-agent[bot]
e549f4e0de feat: Convert ComponentTree and SeedDataManager to pure JSON with hooks
- 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>
2026-01-18 23:48:23 +00:00
copilot-swe-agent[bot]
db8759f9e0 feat: Delete ComponentBindingDialog and DataSourceEditorDialog wrappers, update exports
- 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>
2026-01-18 23:29:36 +00:00
copilot-swe-agent[bot]
4c17cc49c1 feat: Implement hooks loader system for JSON components, convert SaveIndicator to pure JSON
- 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>
2026-01-18 23:22:40 +00:00
copilot-swe-agent[bot]
0514e61000 feat: Remove wrapper system, implement pure JSON components
- 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>
2026-01-18 23:13:00 +00:00
copilot-swe-agent[bot]
ad68fe8f44 feat: Delete old rigid TypeScript components now loaded via JSON registry
- 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>
2026-01-18 22:36:23 +00:00
copilot-swe-agent[bot]
a65a994ec4 feat: Implement JSON components with wrappers for LoadingFallback, NavigationItem, PageHeaderContent
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
2026-01-18 22:07:46 +00:00
bef28e8c91 feat: add Timestamp and Toggle components; implement TreeIcon and EditorActions components
- 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.
2026-01-18 21:42:51 +00:00
f69220e7e4 Restore 52 component files that were dependencies
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>
2026-01-18 20:08:55 +00:00
aa51074380 Remove 123 simple TypeScript components now defined in JSON
Deleted files:
- 71 simple atoms (ActionIcon, Alert, AppLogo, Avatar, Badge, Chip, etc.)
- 21 simple molecules (ActionBar, AppBranding, DataCard, etc.)
- 8 simple organisms (EmptyCanvasState, PageHeader, SchemaEditorCanvas, etc.)
- 23 simple UI components (accordion, alert, button, card, etc.)

Changes:
- Created cleanup-simple-components.ts script to automate deletion
- Created update-index-exports.ts script to update index files
- Updated index.ts in atoms/, molecules/, organisms/ to remove deleted exports
- Installed npm dependencies

Remaining TypeScript components (kept for complexity):
- 46 atoms wrapping UI or with hooks
- 20 molecules with complex logic
- 6 organisms with state management
- 11 UI components with advanced features

Total: 317 components now have JSON definitions, 123 TypeScript files deleted (39% reduction)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-18 19:45:25 +00:00
03cc955d20 Update data source editor copy 2026-01-18 18:32:55 +00:00
966b6f2aa6 Remove legacy compute schema support 2026-01-18 17:41:57 +00:00
d05d16b827 Merge pull request #148 from johndoe6345789/codex/create-json-showcase-page-for-batches
Add JSON Conversion Showcase page/component and remove visual regression snapshot
2026-01-18 13:12:19 +00:00
31d6334a65 Remove visual regression snapshot 2026-01-18 13:11:20 +00:00
578b52bb95 Add converted JSON UI components 2026-01-18 12:36:11 +00:00
53fdc3892d Convert component definitions to JSON 2026-01-18 11:53:08 +00:00
81c6ada8c1 Merge branch 'main' into codex/extract-logic-into-custom-hooks 2026-01-18 01:27:30 +00:00
9a28805791 Extract dialog state hooks 2026-01-18 01:26:34 +00:00
68f0dcbfbd Merge pull request #90 from johndoe6345789/codex/add-use-component-binding-dialog-hook
Add useComponentBindingDialog hook and refactor ComponentBindingDialog to use it
2026-01-18 01:25:16 +00:00
6700705842 Add component binding dialog hook 2026-01-18 01:25:04 +00:00
530d7d96da Merge pull request #89 from johndoe6345789/codex/create-use-data-source-editor-hook
Add useDataSourceEditor hook and refactor DataSourceEditorDialog to use it
2026-01-18 01:24:46 +00:00
4ee346c69d Add data source editor hook 2026-01-18 01:24:36 +00:00
104f9461bc Add component tree expansion hook 2026-01-18 01:22:18 +00:00
d7e5f49610 Centralize storage settings handlers 2026-01-18 01:15:30 +00:00
a3ee5db2e9 Merge pull request #74 from johndoe6345789/codex/move-helpers-to-a-custom-hook
Move GitHub badge/format/copy helpers into hook and expose actions
2026-01-18 00:59:32 +00:00
ee39cbb844 Refactor GitHub build status hook helpers 2026-01-18 00:59:19 +00:00
a8749ab234 Add save indicator timing hook 2026-01-18 00:55:19 +00:00
032d62a312 Add GitHub build status hook 2026-01-18 00:51:51 +00:00
163b2b773d Merge pull request #60 from johndoe6345789/codex/move-seed-data-and-ui-copy-to-json
Extract DataBindingDesigner/UI copy into JSON and split DataSource components
2026-01-18 00:45:35 +00:00
087ab7e389 Refactor data binding designer copy 2026-01-18 00:45:23 +00:00
8567658bc7 Merge pull request #57 from johndoe6345789/codex/refactor-large-components-into-subcomponents
Refactor schema editor views and move UI copy/options to JSON
2026-01-18 00:43:41 +00:00
1f8f584a13 Refactor schema editor views 2026-01-18 00:43:31 +00:00
9eb38e25aa Merge pull request #52 from johndoe6345789/codex/refactor-githubbuildstatus-for-structure
Refactor GitHubBuildStatus copy and split into subcomponents
2026-01-18 00:40:50 +00:00
1e464eb42c Refactor GitHub build status copy 2026-01-18 00:40:37 +00:00
747a6e9485 Refactor storage settings components 2026-01-18 00:39:03 +00:00
cd19aef42f Generated by Spark: Breadcrumb should probably have a clear / reset button 2026-01-17 20:36:01 +00:00
23465084e0 Generated by Spark: Expand All, Collapse All buttons are too big, Maybe just use icon buttons? Don't really need the text, tooltip would be nice. 2026-01-17 20:29:59 +00:00
9b13431bd3 Generated by Spark: Expand All, Collapse All buttons are too big, Maybe just use icon buttons? 2026-01-17 20:09:04 +00:00
519ad0016d Generated by Spark: Ok I figured it out. Make a backend folder, put a flask backend in it with a Dockerfile. Main UI uses IndexedDB then with a UI setting, it can be moved to the flask backend. 2026-01-17 18:31:43 +00:00
bd2443c7ec Generated by Spark: code is flip flopping between this change - its something else. red herring. "path": "@/components/ProjectDashboard", 2026-01-17 17:33:47 +00:00
11a340cea1 Generated by Spark: Integrate atomic components into remaining molecule-level components 2026-01-17 16:46:53 +00:00
c9a149df48 Generated by Spark: Integrate atomic components into more organism-level components throughout the app 2026-01-17 16:40:41 +00:00
ba78f094ff Generated by Spark: Make atomic component library until done. If done, just wire them into other components. 2026-01-17 16:18:25 +00:00
b240fb0b9b Generated by Spark: Make atomic component library until done. If done, just wire them into other components. 2026-01-17 16:13:03 +00:00
fcdb50557a Generated by Spark: Error: src/components/JSONFlaskDesigner.tsx(5,28): error TS2322: Type '{ config: { id: string; name: string; layout: { type: string; }; dataSources: ({ id: string; type: string; key: string; defaultValue: { appName: string; version: string; port: number; debug: boolean; cors: boolean; blueprints: never[]; }; compute?: undefined; dependencies?: undefined; } | { ...; } | { ...; } | { ......' is not assignable to type 'IntrinsicAttributes & ComponentRendererProps'.
Property 'config' does not exist on type 'IntrinsicAttributes & ComponentRendererProps'.
Error: src/components/JSONLambdaDesigner.tsx(5,28): error TS2322: Type '{ config: { name: string; layout: { type: string; }; dataSources: ({ id: string; key: string; type: string; defaultValue?: undefined; compute?: undefined; dependencies?: undefined; } | { id: string; type: string; defaultValue: null; key?: undefined; compute?: undefined; dependencies?: undefined; } | { ...; } | { ......' is not assignable to type 'IntrinsicAttributes & ComponentRendererProps'.
  Property 'config' does not exist on type 'IntrinsicAttributes & ComponentRendererProps'.
Error: src/components/JSONStyleDesigner.tsx(5,28): error TS2322: Type '{ config: { id: string; name: string; layout: { type: string; }; dataSources: ({ id: string; type: string; key: string; defaultValue: { activeVariantId: string; variants: { id: string; name: string; colors: { ...; }; }[]; typography: { ...; }; }; compute?: undefined; dependencies?: undefined; } | { ...; } | { ...; }...' is not assignable to type 'IntrinsicAttributes & ComponentRendererProps'.
  Property 'config' does not exist on type 'IntrinsicAttributes & ComponentRendererProps'.
Error: src/components/JSONWorkflowDesigner.tsx(11,18): error TS2352: Conversion of type '{ name: string; layout: { type: string; }; dataSources: ({ id: string; key: string; type: string; defaultValue?: undefined; compute?: undefined; dependencies?: undefined; } | { id: string; type: string; defaultValue: null; key?: undefined; compute?: undefined; dependencies?: undefined; } | { ...; } | { ...; } | { .....' to type 'PageSchema' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
  Property 'id' is missing in type '{ name: string; layout: { type: string; }; dataSources: ({ id: string; key: string; type: string; defaultValue?: undefined; compute?: undefined; dependencies?: undefined; } | { id: string; type: string; defaultValue: null; key?: undefined; compute?: undefined; dependencies?: undefined; } | { ...; } | { ...; } | { .....' but required in type 'PageSchema'.
Error: src/components/ProjectDashboard.tsx(81,11): error TS2322: Type '{ icon: Element; title: string; value: number; description: string; color: string; }' is not assignable to type 'IntrinsicAttributes & StatCardProps'.
  Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.
Error: src/components/ProjectDashboard.tsx(89,11): error TS2322: Type '{ icon: Element; title: string; value: number; description: string; color: string; }' is not assignable to type 'IntrinsicAttributes & StatCardProps'.
  Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.
Error: src/components/ProjectDashboard.tsx(97,11): error TS2322: Type '{ icon: Element; title: string; value: number; description: string; color: string; }' is not assignable to type 'IntrinsicAttributes & StatCardProps'.
  Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.
Error: src/components/ProjectDashboard.tsx(105,11): error TS2322: Type '{ icon: Element; title: string; value: number; description: string; color: string; }' is not assignable to type 'IntrinsicAttributes & StatCardProps'.
  Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.
Error: src/components/ProjectDashboard.tsx(113,11): error TS2322: Type '{ icon: Element; title: string; value: number; description: string; color: string; }' is not assignable to type 'IntrinsicAttributes & StatCardProps'.
  Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.
Error: src/components/ProjectDashboard.tsx(121,11): error TS2322: Type '{ icon: Element; title: string; value: number; description: string; color: string; }' is not assignable to type 'IntrinsicAttributes & StatCardProps'.
  Property 'title' does not exist on type 'IntrinsicAttributes & StatCardProps'.
Error: src/components/index.ts(2,1): error TS2308: Module './atoms' has already exported a member named 'EmptyState'. Consider explicitly re-exporting to resolve the ambiguity.
Error: src/components/index.ts(2,1): error TS2308: Module './atoms' has already exported a member named 'LoadingState'. Consider explicitly re-exporting to resolve the ambiguity.
Error: src/components/index.ts(2,1): error TS2308: Module './atoms' has already exported a member named 'StatCard'. Consider explicitly re-exporting to resolve the ambiguity.
Error: Process completed with exit code 2.
2026-01-17 13:13:39 +00:00