diff --git a/packages/components/src/__tests__/complex-disclosure-renderers.test.tsx b/packages/components/src/__tests__/complex-disclosure-renderers.test.tsx
index 5c483111..9db428fa 100644
--- a/packages/components/src/__tests__/complex-disclosure-renderers.test.tsx
+++ b/packages/components/src/__tests__/complex-disclosure-renderers.test.tsx
@@ -101,45 +101,6 @@ describe('Disclosure Renderers - Display Issue Detection', () => {
* Comprehensive tests for complex renderer components
*/
describe('Complex Renderers - Display Issue Detection', () => {
- describe('Timeline Renderer', () => {
- it('should be properly registered', () => {
- const validation = validateComponentRegistration('timeline');
- expect(validation.isRegistered).toBe(true);
- });
-
- it('should render timeline with events', () => {
- const { container } = renderComponent({
- type: 'timeline',
- items: [
- {
- title: 'Event 1',
- description: 'Description 1',
- time: '2024-01-01',
- },
- {
- title: 'Event 2',
- description: 'Description 2',
- time: '2024-01-02',
- },
- ],
- });
-
- expect(container.textContent).toContain('Event 1');
- expect(container.textContent).toContain('Event 2');
- });
-
- it('should handle empty timeline', () => {
- const { container } = renderComponent({
- type: 'timeline',
- items: [],
- });
-
- const domCheck = checkDOMStructure(container);
- // Empty timeline is acceptable
- expect(domCheck).toBeDefined();
- });
- });
-
describe('Data Table Renderer', () => {
it('should be properly registered', () => {
const validation = validateComponentRegistration('data-table');
@@ -188,36 +149,6 @@ describe('Complex Renderers - Display Issue Detection', () => {
});
});
- describe('Chatbot Renderer', () => {
- it('should be properly registered', () => {
- const validation = validateComponentRegistration('chatbot');
- expect(validation.isRegistered).toBe(true);
- });
-
- it('should render chatbot interface', () => {
- const { container } = renderComponent({
- type: 'chatbot',
- messages: [
- { role: 'user', content: 'Hello' },
- { role: 'assistant', content: 'Hi there!' },
- ],
- });
-
- expect(container.textContent).toContain('Hello');
- expect(container.textContent).toContain('Hi there!');
- });
-
- it('should handle empty messages', () => {
- const { container } = renderComponent({
- type: 'chatbot',
- messages: [],
- });
-
- const domCheck = checkDOMStructure(container);
- expect(domCheck).toBeDefined();
- });
- });
-
describe('Carousel Renderer', () => {
it('should be properly registered', () => {
const validation = validateComponentRegistration('carousel');
diff --git a/packages/components/src/new-components.test.ts b/packages/components/src/new-components.test.ts
index 11d46251..b0e6ef28 100644
--- a/packages/components/src/new-components.test.ts
+++ b/packages/components/src/new-components.test.ts
@@ -70,13 +70,4 @@ describe('New Components Registration', () => {
expect(component?.label).toBe('Loading');
});
});
-
- describe('Complex Components', () => {
- it('should register timeline component', () => {
- const component = ComponentRegistry.getConfig('timeline');
- expect(component).toBeDefined();
- expect(component?.label).toBe('Timeline');
- expect(component?.category).toBe('data-display');
- });
- });
});
diff --git a/packages/components/src/renderers/complex/chatbot.test.ts b/packages/components/src/renderers/complex/chatbot.test.ts
deleted file mode 100644
index 37f7aa3a..00000000
--- a/packages/components/src/renderers/complex/chatbot.test.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * ObjectUI
- * Copyright (c) 2024-present ObjectStack Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-import { describe, it, expect, beforeAll } from 'vitest';
-import { ComponentRegistry } from '@object-ui/core';
-
-describe('Chatbot Component', () => {
- // Import all renderers to register them
- beforeAll(async () => {
- await import('./index');
- });
-
- it('should be registered in ComponentRegistry', () => {
- const chatbotRenderer = ComponentRegistry.get('chatbot');
- expect(chatbotRenderer).toBeDefined();
- });
-
- it('should have proper metadata', () => {
- const config = ComponentRegistry.getConfig('chatbot');
- expect(config).toBeDefined();
- expect(config?.label).toBe('Chatbot');
- expect(config?.inputs).toBeDefined();
- expect(config?.defaultProps).toBeDefined();
- });
-
- it('should have expected inputs', () => {
- const config = ComponentRegistry.getConfig('chatbot');
- const inputNames = config?.inputs?.map((input: any) => input.name) || [];
-
- expect(inputNames).toContain('messages');
- expect(inputNames).toContain('placeholder');
- expect(inputNames).toContain('showTimestamp');
- expect(inputNames).toContain('userAvatarUrl');
- expect(inputNames).toContain('assistantAvatarUrl');
- });
-
- it('should have sensible default props', () => {
- const config = ComponentRegistry.getConfig('chatbot');
- const defaults = config?.defaultProps;
-
- expect(defaults).toBeDefined();
- expect(defaults?.placeholder).toBe('Type your message...');
- expect(defaults?.showTimestamp).toBe(false);
- expect(defaults?.messages).toBeDefined();
- expect(Array.isArray(defaults?.messages)).toBe(true);
- });
-});
diff --git a/packages/components/src/renderers/complex/index.ts b/packages/components/src/renderers/complex/index.ts
index 1219aa08..5f6e6eac 100644
--- a/packages/components/src/renderers/complex/index.ts
+++ b/packages/components/src/renderers/complex/index.ts
@@ -12,7 +12,6 @@ import './filter-builder';
import './scroll-area';
import './resizable';
import './table';
-import './chatbot';
import './data-table';
-import './timeline';
+
diff --git a/packages/components/src/ui/index.ts b/packages/components/src/ui/index.ts
index 7ae8593a..d944826a 100644
--- a/packages/components/src/ui/index.ts
+++ b/packages/components/src/ui/index.ts
@@ -19,7 +19,6 @@ export * from './calendar';
export * from './calendar-view';
export * from './card';
export * from './carousel';
-export * from './chatbot';
export * from './checkbox';
export * from './collapsible';
export * from './combobox';
@@ -60,7 +59,6 @@ export * from './switch';
export * from './table';
export * from './tabs';
export * from './textarea';
-export * from './timeline';
export * from './toast';
export { Toaster as ToastNotifier } from './toaster';
export * from './toggle-group';
diff --git a/packages/plugin-chatbot/README.md b/packages/plugin-chatbot/README.md
new file mode 100644
index 00000000..0f76636b
--- /dev/null
+++ b/packages/plugin-chatbot/README.md
@@ -0,0 +1,63 @@
+# @object-ui/plugin-chatbot
+
+Chatbot interface plugin for Object UI.
+
+## Installation
+
+```bash
+npm install @object-ui/plugin-chatbot
+```
+
+## Usage
+
+```tsx
+import { Chatbot } from '@object-ui/plugin-chatbot';
+
+function App() {
+ const [messages, setMessages] = useState([
+ {
+ id: '1',
+ role: 'assistant',
+ content: 'Hello! How can I help you today?'
+ }
+ ]);
+
+ const handleSend = (content: string) => {
+ const newMessage = {
+ id: Date.now().toString(),
+ role: 'user',
+ content
+ };
+ setMessages([...messages, newMessage]);
+ };
+
+ return (
+
+ );
+}
+```
+
+## Schema-Driven Usage
+
+This plugin automatically registers with ObjectUI's component registry when imported:
+
+```tsx
+import '@object-ui/plugin-chatbot';
+
+const schema = {
+ component: 'chatbot',
+ messages: [
+ { id: '1', role: 'assistant', content: 'Hello!' }
+ ],
+ placeholder: 'Type your message...',
+ autoResponse: true
+};
+```
+
+## License
+
+MIT © ObjectStack Inc.
diff --git a/packages/plugin-chatbot/package.json b/packages/plugin-chatbot/package.json
new file mode 100644
index 00000000..219bf06d
--- /dev/null
+++ b/packages/plugin-chatbot/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "@object-ui/plugin-chatbot",
+ "version": "0.3.0",
+ "type": "module",
+ "license": "MIT",
+ "description": "Chatbot interface plugin for Object UI",
+ "homepage": "https://www.objectui.org",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/objectstack-ai/objectui.git",
+ "directory": "packages/plugin-chatbot"
+ },
+ "bugs": {
+ "url": "https://github.com/objectstack-ai/objectui/issues"
+ },
+ "main": "dist/index.umd.cjs",
+ "module": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "require": "./dist/index.umd.cjs"
+ }
+ },
+ "scripts": {
+ "build": "vite build",
+ "test": "vitest run",
+ "test:watch": "vitest",
+ "type-check": "tsc --noEmit",
+ "lint": "eslint ."
+ },
+ "dependencies": {
+ "@object-ui/components": "workspace:*",
+ "@object-ui/core": "workspace:*",
+ "@object-ui/react": "workspace:*",
+ "@object-ui/types": "workspace:*",
+ "lucide-react": "^0.468.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "devDependencies": {
+ "@types/react": "^19.0.6",
+ "@types/react-dom": "^19.0.3",
+ "@vitejs/plugin-react": "^4.2.1",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1",
+ "vite-plugin-dts": "^4.5.4"
+ }
+}
diff --git a/packages/components/src/ui/chatbot.tsx b/packages/plugin-chatbot/src/index.tsx
similarity index 96%
rename from packages/components/src/ui/chatbot.tsx
rename to packages/plugin-chatbot/src/index.tsx
index cc58c879..7b4daeaf 100644
--- a/packages/components/src/ui/chatbot.tsx
+++ b/packages/plugin-chatbot/src/index.tsx
@@ -7,11 +7,8 @@
*/
import * as React from "react"
-import { cn } from "../lib/utils"
-import { Button } from "./button"
-import { Input } from "./input"
-import { ScrollArea } from "./scroll-area"
-import { Avatar, AvatarFallback, AvatarImage } from "./avatar"
+import { cn } from "@object-ui/components"
+import { Button, Input, ScrollArea, Avatar, AvatarFallback, AvatarImage } from "@object-ui/components"
import { Send } from "lucide-react"
// Message type definition
@@ -246,3 +243,6 @@ const TypingIndicator = React.forwardRef(
TypingIndicator.displayName = "TypingIndicator"
export { Chatbot, TypingIndicator }
+
+// Export renderer to register the component with ObjectUI
+export * from './renderer';
diff --git a/packages/components/src/renderers/complex/chatbot.tsx b/packages/plugin-chatbot/src/renderer.tsx
similarity index 96%
rename from packages/components/src/renderers/complex/chatbot.tsx
rename to packages/plugin-chatbot/src/renderer.tsx
index 03d0550c..989725ce 100644
--- a/packages/components/src/renderers/complex/chatbot.tsx
+++ b/packages/plugin-chatbot/src/renderer.tsx
@@ -8,7 +8,7 @@
import { ComponentRegistry } from '@object-ui/core';
import type { ChatbotSchema, ChatMessage } from '@object-ui/types';
-import { Chatbot } from '../../ui';
+import { Chatbot } from './index';
import { useState } from 'react';
/**
@@ -41,7 +41,7 @@ ComponentRegistry.register('chatbot',
const handleSendMessage = (content: string) => {
// Create user message with robust ID generation
const userMessage: ChatMessage = {
- id: crypto.randomUUID(),
+ id: crypto?.randomUUID?.() || `msg-${Date.now()}-${Math.random().toString(36).slice(2)}`,
role: 'user',
content,
timestamp: schema.showTimestamp ? new Date().toLocaleTimeString() : undefined,
@@ -59,7 +59,7 @@ ComponentRegistry.register('chatbot',
if (schema.autoResponse) {
setTimeout(() => {
const assistantMessage: ChatMessage = {
- id: crypto.randomUUID(),
+ id: crypto?.randomUUID?.() || `msg-${Date.now()}-${Math.random().toString(36).slice(2)}`,
role: 'assistant',
content: schema.autoResponseText || 'Thank you for your message!',
timestamp: schema.showTimestamp ? new Date().toLocaleTimeString() : undefined,
diff --git a/packages/plugin-chatbot/tsconfig.json b/packages/plugin-chatbot/tsconfig.json
new file mode 100644
index 00000000..22195355
--- /dev/null
+++ b/packages/plugin-chatbot/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "jsx": "react-jsx",
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ },
+ "noEmit": false,
+ "declaration": true,
+ "composite": true,
+ "declarationMap": true,
+ "skipLibCheck": true
+ },
+ "include": ["src"],
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.test.tsx"]
+}
diff --git a/packages/plugin-chatbot/vite.config.ts b/packages/plugin-chatbot/vite.config.ts
new file mode 100644
index 00000000..2fc9f061
--- /dev/null
+++ b/packages/plugin-chatbot/vite.config.ts
@@ -0,0 +1,49 @@
+/**
+ * ObjectUI
+ * Copyright (c) 2024-present ObjectStack Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import dts from 'vite-plugin-dts';
+import { resolve } from 'path';
+
+export default defineConfig({
+ plugins: [
+ react(),
+ dts({
+ insertTypesEntry: true,
+ include: ['src'],
+ exclude: ['**/*.test.ts', '**/*.test.tsx', 'node_modules'],
+ skipDiagnostics: true,
+ }),
+ ],
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, './src'),
+ },
+ },
+ build: {
+ lib: {
+ entry: resolve(__dirname, 'src/index.tsx'),
+ name: 'ObjectUIPluginChatbot',
+ fileName: 'index',
+ },
+ rollupOptions: {
+ external: ['react', 'react-dom', '@object-ui/components', '@object-ui/core', '@object-ui/react', 'lucide-react'],
+ output: {
+ globals: {
+ react: 'React',
+ 'react-dom': 'ReactDOM',
+ '@object-ui/components': 'ObjectUIComponents',
+ '@object-ui/core': 'ObjectUICore',
+ '@object-ui/react': 'ObjectUIReact',
+ 'lucide-react': 'LucideReact',
+ },
+ },
+ },
+ },
+});
diff --git a/packages/plugin-timeline/README.md b/packages/plugin-timeline/README.md
new file mode 100644
index 00000000..9da4081b
--- /dev/null
+++ b/packages/plugin-timeline/README.md
@@ -0,0 +1,80 @@
+# @object-ui/plugin-timeline
+
+Timeline component plugin for Object UI with support for vertical, horizontal, and Gantt-style timelines.
+
+## Installation
+
+```bash
+npm install @object-ui/plugin-timeline
+```
+
+## Usage
+
+### Vertical Timeline
+
+```tsx
+import {
+ Timeline,
+ TimelineItem,
+ TimelineMarker,
+ TimelineContent,
+ TimelineTitle,
+ TimelineTime,
+ TimelineDescription
+} from '@object-ui/plugin-timeline';
+
+function App() {
+ return (
+
+
+
+
+ 2024-01-15
+ Project Started
+
+ Kickoff meeting and initial planning
+
+
+
+
+ );
+}
+```
+
+### Gantt Timeline
+
+```tsx
+import {
+ TimelineGantt,
+ TimelineGanttHeader,
+ TimelineGanttRow,
+ TimelineGanttBar
+} from '@object-ui/plugin-timeline';
+
+// See examples in the source code for Gantt usage
+```
+
+## Schema-Driven Usage
+
+This plugin automatically registers with ObjectUI's component registry when imported:
+
+```tsx
+import '@object-ui/plugin-timeline';
+
+const schema = {
+ component: 'timeline',
+ variant: 'vertical',
+ items: [
+ {
+ time: '2024-01-15',
+ title: 'Project Started',
+ description: 'Kickoff meeting',
+ variant: 'success'
+ }
+ ]
+};
+```
+
+## License
+
+MIT © ObjectStack Inc.
diff --git a/packages/plugin-timeline/package.json b/packages/plugin-timeline/package.json
new file mode 100644
index 00000000..d8b125a7
--- /dev/null
+++ b/packages/plugin-timeline/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@object-ui/plugin-timeline",
+ "version": "0.3.0",
+ "type": "module",
+ "license": "MIT",
+ "description": "Timeline component plugin for Object UI",
+ "homepage": "https://www.objectui.org",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/objectstack-ai/objectui.git",
+ "directory": "packages/plugin-timeline"
+ },
+ "bugs": {
+ "url": "https://github.com/objectstack-ai/objectui/issues"
+ },
+ "main": "dist/index.umd.cjs",
+ "module": "dist/index.js",
+ "types": "dist/index.d.ts",
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "require": "./dist/index.umd.cjs"
+ }
+ },
+ "scripts": {
+ "build": "vite build",
+ "test": "vitest run",
+ "test:watch": "vitest",
+ "type-check": "tsc --noEmit",
+ "lint": "eslint ."
+ },
+ "dependencies": {
+ "@object-ui/components": "workspace:*",
+ "@object-ui/core": "workspace:*",
+ "@object-ui/react": "workspace:*",
+ "@object-ui/types": "workspace:*"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
+ },
+ "devDependencies": {
+ "@types/react": "^19.0.6",
+ "@types/react-dom": "^19.0.3",
+ "@vitejs/plugin-react": "^4.2.1",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1",
+ "vite-plugin-dts": "^4.5.4"
+ }
+}
diff --git a/packages/components/src/ui/timeline.tsx b/packages/plugin-timeline/src/index.tsx
similarity index 98%
rename from packages/components/src/ui/timeline.tsx
rename to packages/plugin-timeline/src/index.tsx
index 38aa846b..9e8f5c53 100644
--- a/packages/components/src/ui/timeline.tsx
+++ b/packages/plugin-timeline/src/index.tsx
@@ -7,7 +7,7 @@
*/
import * as React from "react"
-import { cn } from "../lib/utils"
+import { cn } from "@object-ui/components"
const Timeline = React.forwardRef<
HTMLOListElement,
@@ -272,3 +272,6 @@ export {
TimelineGanttBar,
TimelineGanttBarContent,
}
+
+// Export renderer to register the component with ObjectUI
+export * from './renderer';
diff --git a/packages/components/src/renderers/complex/timeline.tsx b/packages/plugin-timeline/src/renderer.tsx
similarity index 99%
rename from packages/components/src/renderers/complex/timeline.tsx
rename to packages/plugin-timeline/src/renderer.tsx
index 756a1d6f..813c382c 100644
--- a/packages/components/src/renderers/complex/timeline.tsx
+++ b/packages/plugin-timeline/src/renderer.tsx
@@ -26,8 +26,8 @@ import {
TimelineGanttLabel,
TimelineGanttBar,
TimelineGanttBarContent,
-} from '../../ui';
-import { renderChildren } from '../../lib/utils';
+} from './index';
+import { renderChildren } from '@object-ui/components';
// Constants
const MILLISECONDS_PER_WEEK = 7 * 24 * 60 * 60 * 1000;
diff --git a/packages/plugin-timeline/tsconfig.json b/packages/plugin-timeline/tsconfig.json
new file mode 100644
index 00000000..22195355
--- /dev/null
+++ b/packages/plugin-timeline/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "jsx": "react-jsx",
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ },
+ "noEmit": false,
+ "declaration": true,
+ "composite": true,
+ "declarationMap": true,
+ "skipLibCheck": true
+ },
+ "include": ["src"],
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.test.tsx"]
+}
diff --git a/packages/plugin-timeline/vite.config.ts b/packages/plugin-timeline/vite.config.ts
new file mode 100644
index 00000000..b2a0cd66
--- /dev/null
+++ b/packages/plugin-timeline/vite.config.ts
@@ -0,0 +1,48 @@
+/**
+ * ObjectUI
+ * Copyright (c) 2024-present ObjectStack Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import dts from 'vite-plugin-dts';
+import { resolve } from 'path';
+
+export default defineConfig({
+ plugins: [
+ react(),
+ dts({
+ insertTypesEntry: true,
+ include: ['src'],
+ exclude: ['**/*.test.ts', '**/*.test.tsx', 'node_modules'],
+ skipDiagnostics: true,
+ }),
+ ],
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, './src'),
+ },
+ },
+ build: {
+ lib: {
+ entry: resolve(__dirname, 'src/index.tsx'),
+ name: 'ObjectUIPluginTimeline',
+ fileName: 'index',
+ },
+ rollupOptions: {
+ external: ['react', 'react-dom', '@object-ui/components', '@object-ui/core', '@object-ui/react'],
+ output: {
+ globals: {
+ react: 'React',
+ 'react-dom': 'ReactDOM',
+ '@object-ui/components': 'ObjectUIComponents',
+ '@object-ui/core': 'ObjectUICore',
+ '@object-ui/react': 'ObjectUIReact',
+ },
+ },
+ },
+ },
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 370ca8a6..4cbf5992 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -532,6 +532,49 @@ importers:
specifier: ^4.5.4
version: 4.5.4(@types/node@25.0.10)(rollup@4.55.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
+ packages/plugin-chatbot:
+ dependencies:
+ '@object-ui/components':
+ specifier: workspace:*
+ version: link:../components
+ '@object-ui/core':
+ specifier: workspace:*
+ version: link:../core
+ '@object-ui/react':
+ specifier: workspace:*
+ version: link:../react
+ '@object-ui/types':
+ specifier: workspace:*
+ version: link:../types
+ lucide-react:
+ specifier: ^0.468.0
+ version: 0.468.0(react@19.2.3)
+ react:
+ specifier: 19.2.3
+ version: 19.2.3
+ react-dom:
+ specifier: 19.2.3
+ version: 19.2.3(react@19.2.3)
+ devDependencies:
+ '@types/react':
+ specifier: 19.0.6
+ version: 19.0.6
+ '@types/react-dom':
+ specifier: 19.0.3
+ version: 19.0.3(@types/react@19.0.6)
+ '@vitejs/plugin-react':
+ specifier: ^4.2.1
+ version: 4.7.0(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+ vite:
+ specifier: ^7.3.1
+ version: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
+ vite-plugin-dts:
+ specifier: ^4.5.4
+ version: 4.5.4(@types/node@25.0.10)(rollup@4.55.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
+
packages/plugin-editor:
dependencies:
'@monaco-editor/react':
@@ -673,6 +716,46 @@ importers:
specifier: ^4.5.4
version: 4.5.4(@types/node@25.0.10)(rollup@4.55.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
+ packages/plugin-timeline:
+ dependencies:
+ '@object-ui/components':
+ specifier: workspace:*
+ version: link:../components
+ '@object-ui/core':
+ specifier: workspace:*
+ version: link:../core
+ '@object-ui/react':
+ specifier: workspace:*
+ version: link:../react
+ '@object-ui/types':
+ specifier: workspace:*
+ version: link:../types
+ react:
+ specifier: 19.2.3
+ version: 19.2.3
+ react-dom:
+ specifier: 19.2.3
+ version: 19.2.3(react@19.2.3)
+ devDependencies:
+ '@types/react':
+ specifier: 19.0.6
+ version: 19.0.6
+ '@types/react-dom':
+ specifier: 19.0.3
+ version: 19.0.3(@types/react@19.0.6)
+ '@vitejs/plugin-react':
+ specifier: ^4.2.1
+ version: 4.7.0(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+ vite:
+ specifier: ^7.3.1
+ version: 7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2)
+ vite-plugin-dts:
+ specifier: ^4.5.4
+ version: 4.5.4(@types/node@25.0.10)(rollup@4.55.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.0.10)(jiti@2.6.1)(lightningcss@1.30.2))
+
packages/react:
dependencies:
'@object-ui/core':
@@ -4701,6 +4784,11 @@ packages:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
+ lucide-react@0.468.0:
+ resolution: {integrity: sha512-6koYRhnM2N0GGZIdXzSeiNwguv1gt/FAjZOiPl76roBi3xKEXa4WmfpxgQwTTL4KipXjefrnf3oV4IsYhi4JFA==}
+ peerDependencies:
+ react: 19.2.3
+
lucide-react@0.562.0:
resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==}
peerDependencies:
@@ -10499,6 +10587,10 @@ snapshots:
dependencies:
yallist: 4.0.0
+ lucide-react@0.468.0(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+
lucide-react@0.562.0(react@19.2.3):
dependencies:
react: 19.2.3