@decido/shell 4.0.3 → 4.0.4

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 (70) hide show
  1. package/dist/CenterComposite-V3LL23PG.mjs +64 -0
  2. package/dist/DebugPanel-NFXQOZQ6.mjs +1 -0
  3. package/dist/MorphShell-4JGDAN46.mjs +1 -0
  4. package/dist/PlaygroundAppSidebar-QI73PNRI.mjs +1 -0
  5. package/dist/PlaygroundChat-CBIIQMWU.mjs +1 -0
  6. package/dist/PlaygroundTerminal-MVZKXTYW.mjs +1 -0
  7. package/dist/PluginSandbox-MUNBFWGH.mjs +1 -0
  8. package/dist/ReactFlowEditor-2ALQWCHQ.mjs +6 -0
  9. package/dist/ReactFlowEditor-ROZ6RF3K.css +1 -0
  10. package/dist/TimelineEditor-UPRRXXVM.mjs +3 -0
  11. package/dist/WidgetSlotPanel-YX2VBQAP.mjs +1 -0
  12. package/dist/chunk-3YEFIKFH.mjs +1 -0
  13. package/dist/chunk-53FADIUX.mjs +1 -0
  14. package/dist/chunk-5FWJFDER.mjs +285 -0
  15. package/dist/chunk-6K3AFDP5.mjs +1 -0
  16. package/dist/chunk-AGAAZ2MU.mjs +1 -0
  17. package/dist/chunk-BCP43BRV.mjs +2 -0
  18. package/dist/chunk-BSJBW64M.mjs +1 -0
  19. package/dist/chunk-C5FD536O.mjs +1 -0
  20. package/dist/chunk-DTH34ILQ.mjs +1 -0
  21. package/dist/chunk-DWP77YZU.mjs +1 -0
  22. package/dist/chunk-O3OWL3Q2.mjs +1 -0
  23. package/dist/chunk-POBZMHZ5.mjs +7 -0
  24. package/dist/chunk-S3AQ4QDD.mjs +42 -0
  25. package/dist/chunk-XDA6ZRIQ.mjs +1 -0
  26. package/dist/chunk-XTDMHHMW.mjs +5 -0
  27. package/dist/chunk-YAYNNUEX.mjs +12 -0
  28. package/dist/chunk-YEKQJ4YC.mjs +1 -0
  29. package/dist/chunk-YHFKY5MB.mjs +1 -0
  30. package/dist/chunk-ZKD74U4X.mjs +1 -0
  31. package/dist/index.css +1 -561
  32. package/dist/index.js +462 -65086
  33. package/dist/index.mjs +50 -40209
  34. package/dist/useIntentLens-OCAUBNOQ.mjs +1 -0
  35. package/dist/useSuggestionsStore-Q4KVPU7L.mjs +1 -0
  36. package/dist/wasm-A4BTVJWV.mjs +1 -0
  37. package/package.json +15 -15
  38. package/dist/CenterComposite-RPEGBKQU.mjs +0 -1697
  39. package/dist/DebugPanel-KEKDMHDN.mjs +0 -14
  40. package/dist/MorphShell-FKDBB7E5.mjs +0 -14
  41. package/dist/PlaygroundAppSidebar-ALYJJGAO.mjs +0 -9
  42. package/dist/PlaygroundChat-MI2KXMK6.mjs +0 -15
  43. package/dist/PlaygroundTerminal-5AV4BJAI.mjs +0 -7
  44. package/dist/PluginSandbox-WMNAUQOJ.mjs +0 -188
  45. package/dist/ReactFlowEditor-RTF2652X.mjs +0 -3574
  46. package/dist/ReactFlowEditor-ZW5MCN5Y.css +0 -561
  47. package/dist/TimelineEditor-N4HRMHTB.mjs +0 -226
  48. package/dist/WidgetSlotPanel-KJI4CHHD.mjs +0 -11
  49. package/dist/chunk-2YMI4N5I.mjs +0 -2004
  50. package/dist/chunk-3BZX7LF2.mjs +0 -139
  51. package/dist/chunk-3P4P3M54.mjs +0 -136
  52. package/dist/chunk-F3OTFHNO.mjs +0 -40
  53. package/dist/chunk-IMHORBTL.mjs +0 -48
  54. package/dist/chunk-JF5QSJYT.mjs +0 -295
  55. package/dist/chunk-LWMMFTJC.mjs +0 -382
  56. package/dist/chunk-MSVEFEXE.mjs +0 -179
  57. package/dist/chunk-OCHGY2MN.mjs +0 -1662
  58. package/dist/chunk-PMYAM764.mjs +0 -813
  59. package/dist/chunk-Q64KZXPK.mjs +0 -43
  60. package/dist/chunk-QHQW2HMU.mjs +0 -155
  61. package/dist/chunk-RWZ4BOIN.mjs +0 -385
  62. package/dist/chunk-UHT6FIYF.mjs +0 -195
  63. package/dist/chunk-UJCSKKID.mjs +0 -30
  64. package/dist/chunk-V3CYNPGL.mjs +0 -8758
  65. package/dist/chunk-VBPGEFNM.mjs +0 -2381
  66. package/dist/chunk-XMSU6UWD.mjs +0 -158
  67. package/dist/chunk-ZCCCBHE6.mjs +0 -55
  68. package/dist/useIntentLens-LEQCAXCK.mjs +0 -13
  69. package/dist/useSuggestionsStore-4L2AIZ2D.mjs +0 -7
  70. package/dist/wasm-QFXGEYGP.mjs +0 -81
@@ -1,226 +0,0 @@
1
- import {
2
- usePlaygroundStore
3
- } from "./chunk-XMSU6UWD.mjs";
4
- import "./chunk-UJCSKKID.mjs";
5
-
6
- // src/components/studio/TimelineEditor.tsx
7
- import { useTimelineStore } from "@decido/engine";
8
- import { Plus, MonitorPlay } from "lucide-react";
9
- import { AnimatePresence } from "motion/react";
10
-
11
- // src/components/studio/TimelineKeyframeCard.tsx
12
- import React from "react";
13
- import { Trash2, Clock } from "lucide-react";
14
- import { motion } from "motion/react";
15
- import { jsx, jsxs } from "react/jsx-runtime";
16
- var trackColors = {
17
- dialogue: { clock: "text-purple-400/70", input: "focus:border-purple-500/50", text: "text-purple-300", label: "text-purple-400/70" },
18
- ui: { clock: "text-cyan-400/70", input: "focus:border-cyan-500/50", text: "text-text-primary", label: "text-cyan-400/70" },
19
- logic: { clock: "text-orange-400/70", input: "focus:border-orange-500/50", text: "text-text-primary", label: "text-orange-400/70" }
20
- };
21
- var TimelineKeyframeCard = React.memo(function TimelineKeyframeCard2({
22
- kf,
23
- track,
24
- activeTimelineId,
25
- updateKeyframe,
26
- removeKeyframe
27
- }) {
28
- const colors = trackColors[track];
29
- return /* @__PURE__ */ jsxs(
30
- motion.div,
31
- {
32
- layout: true,
33
- initial: { opacity: 0, scale: 0.9 },
34
- animate: { opacity: 1, scale: 1 },
35
- exit: { opacity: 0, scale: 0.9 },
36
- transition: { duration: 0.2 },
37
- style: { left: `${kf.t * 100}px`, width: "260px" },
38
- className: "absolute top-2 bottom-2 bg-surface-secondary border border-border-default rounded-xl p-3 flex flex-col gap-2 group hover:border-border-subtle0 shadow-[0_8px_30px_rgb(0,0,0,0.5)] hover:shadow-[0_8px_30px_rgb(0,0,0,0.8)] transition-all z-10",
39
- children: [
40
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-border-subtle pb-1.5", children: [
41
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 bg-surface-overlay px-1.5 py-0.5 rounded border border-border-default transition-colors", children: [
42
- /* @__PURE__ */ jsx(Clock, { size: 10, className: colors.clock }),
43
- /* @__PURE__ */ jsx(
44
- "input",
45
- {
46
- type: "number",
47
- step: "0.1",
48
- className: "bg-transparent w-10 text-xs text-text-primary font-mono focus:outline-hidden text-center",
49
- value: kf.t,
50
- onChange: (e) => updateKeyframe(activeTimelineId, kf.id, { t: parseFloat(e.target.value) || 0 })
51
- }
52
- )
53
- ] }),
54
- /* @__PURE__ */ jsx(
55
- "button",
56
- {
57
- onClick: () => removeKeyframe(activeTimelineId, kf.id),
58
- className: "p-1 text-text-muted hover:text-red-400 hover:bg-red-500/10 rounded transition-colors opacity-0 group-hover:opacity-100",
59
- title: "Eliminar Keyframe",
60
- children: /* @__PURE__ */ jsx(Trash2, { size: 12 })
61
- }
62
- )
63
- ] }),
64
- track === "dialogue" && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 flex-1", children: [
65
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
66
- /* @__PURE__ */ jsx("span", { className: `text-[9px] uppercase tracking-wider ${colors.label} w-10`, children: "Actor" }),
67
- /* @__PURE__ */ jsx(
68
- "input",
69
- {
70
- type: "text",
71
- className: `flex-1 bg-surface-glass border border-border-subtle rounded px-2 py-1 text-xs ${colors.text} focus:outline-hidden ${colors.input}`,
72
- value: kf.actorId || "",
73
- placeholder: "system",
74
- onChange: (e) => updateKeyframe(activeTimelineId, kf.id, { actorId: e.target.value })
75
- }
76
- )
77
- ] }),
78
- /* @__PURE__ */ jsx(
79
- "textarea",
80
- {
81
- className: `w-full bg-surface-glass border border-border-subtle rounded px-2 py-1.5 text-xs text-text-primary focus:outline-hidden ${colors.input} resize-none flex-1 min-h-0`,
82
- placeholder: "Texto a sintetizar...",
83
- value: kf.speech || "",
84
- onChange: (e) => updateKeyframe(activeTimelineId, kf.id, { speech: e.target.value })
85
- }
86
- )
87
- ] }),
88
- track === "ui" && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 flex-1 justify-center", children: [
89
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
90
- /* @__PURE__ */ jsx("span", { className: `text-[9px] uppercase tracking-wider ${colors.label}`, children: "App State" }),
91
- /* @__PURE__ */ jsx(
92
- "input",
93
- {
94
- type: "text",
95
- className: `w-full bg-surface-glass border border-border-subtle rounded px-2 py-1.5 text-xs text-text-primary focus:outline-hidden ${colors.input}`,
96
- value: kf.state || "",
97
- placeholder: "idle",
98
- onChange: (e) => updateKeyframe(activeTimelineId, kf.id, { state: e.target.value })
99
- }
100
- )
101
- ] }),
102
- /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 p-1.5 mt-1 rounded hover:bg-surface-glass cursor-pointer border border-transparent hover:border-border-subtle transition-colors", children: [
103
- /* @__PURE__ */ jsx(
104
- "input",
105
- {
106
- type: "checkbox",
107
- checked: kf.canvas || false,
108
- onChange: (e) => updateKeyframe(activeTimelineId, kf.id, { canvas: e.target.checked }),
109
- className: "rounded border-border-strong bg-surface-glass text-cyan-500 w-3.5 h-3.5"
110
- }
111
- ),
112
- /* @__PURE__ */ jsx("span", { className: "text-[10px] uppercase tracking-wider text-cyan-300", children: "Mostrar Lienzo 3D" })
113
- ] })
114
- ] }),
115
- track === "logic" && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 flex-1 justify-center", children: [
116
- /* @__PURE__ */ jsx("span", { className: `text-[9px] uppercase tracking-wider ${colors.label}`, children: "Intent / Action" }),
117
- /* @__PURE__ */ jsx(
118
- "input",
119
- {
120
- type: "text",
121
- className: `w-full bg-surface-glass border border-border-subtle rounded px-2 py-1.5 text-xs text-text-primary focus:outline-hidden ${colors.input} font-mono mt-1`,
122
- value: kf.intent || "",
123
- placeholder: "action_name",
124
- onChange: (e) => updateKeyframe(activeTimelineId, kf.id, { intent: e.target.value })
125
- }
126
- ),
127
- /* @__PURE__ */ jsx("span", { className: "text-[9px] text-text-muted leading-tight mt-2 px-1", children: "Dispara un trigger local o llamada MCP." })
128
- ] })
129
- ]
130
- }
131
- );
132
- });
133
-
134
- // src/components/studio/TimelineEditor.tsx
135
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
136
- var TimelineEditor = () => {
137
- const activeTimelineId = usePlaygroundStore((state) => state.prototypeBrand);
138
- const timelines = useTimelineStore((state) => state.timelines);
139
- const addKeyframe = useTimelineStore((state) => state.addKeyframe);
140
- const updateKeyframe = useTimelineStore((state) => state.updateKeyframe);
141
- const removeKeyframe = useTimelineStore((state) => state.removeKeyframe);
142
- const updateDuration = useTimelineStore((state) => state.updateDuration);
143
- const activeTimeline = timelines[activeTimelineId];
144
- if (!activeTimeline) return null;
145
- const handleAdd = (trackName) => {
146
- addKeyframe(activeTimelineId, {
147
- t: activeTimeline.duration,
148
- track: trackName,
149
- ...trackName === "dialogue" ? { speech: "", actorId: "system" } : {},
150
- ...trackName === "ui" ? { state: "new_state", canvas: false } : {},
151
- ...trackName === "logic" ? { intent: "" } : {}
152
- });
153
- };
154
- const tracks = ["dialogue", "ui", "logic"];
155
- return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col h-full bg-surface-secondary text-text-primary border-l border-border-default w-full shadow-2xl z-40 overflow-hidden relative", children: [
156
- /* @__PURE__ */ jsx2("div", { className: "absolute inset-0 bg-[url('data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E')] opacity-[0.10] mix-blend-overlay pointer-events-none z-0" }),
157
- /* @__PURE__ */ jsxs2("div", { className: "p-4 border-b border-border-default relative z-10 flex justify-between items-center bg-surface-glass", children: [
158
- /* @__PURE__ */ jsxs2("div", { children: [
159
- /* @__PURE__ */ jsxs2("h2", { className: "text-lg font-bold text-text-primary flex items-center gap-2", children: [
160
- /* @__PURE__ */ jsx2(MonitorPlay, { size: 18, className: "text-purple-400" }),
161
- "Multi-Track Sequence"
162
- ] }),
163
- /* @__PURE__ */ jsxs2("p", { className: "text-xs text-text-secondary mt-1 font-mono uppercase tracking-wider", children: [
164
- "Editando: ",
165
- activeTimeline.name
166
- ] })
167
- ] }),
168
- /* @__PURE__ */ jsxs2("div", { className: "text-right flex flex-col items-end gap-1", children: [
169
- /* @__PURE__ */ jsx2("span", { className: "text-xs text-text-muted font-mono", children: "Duraci\xF3n Global (s)" }),
170
- /* @__PURE__ */ jsx2(
171
- "input",
172
- {
173
- type: "number",
174
- className: "bg-surface-glass border border-border-strong rounded px-2 py-1 w-20 text-text-primary text-right text-sm focus:outline-hidden focus:border-purple-400",
175
- value: activeTimeline.duration,
176
- onChange: (e) => updateDuration(activeTimelineId, parseFloat(e.target.value) || 0)
177
- }
178
- )
179
- ] })
180
- ] }),
181
- /* @__PURE__ */ jsxs2("div", { className: "flex-1 flex overflow-hidden w-full relative z-10", children: [
182
- /* @__PURE__ */ jsxs2("div", { className: "w-[220px] shrink-0 flex flex-col border-r border-border-default bg-surface-primary z-20", children: [
183
- /* @__PURE__ */ jsx2("div", { className: "h-8 border-b border-border-default shrink-0 bg-surface-secondary" }),
184
- tracks.map((track) => /* @__PURE__ */ jsxs2("div", { className: `h-[170px] flex flex-col justify-center p-4 border-b border-border-subtle relative
185
- ${track === "dialogue" ? "bg-purple-500/5" : track === "ui" ? "bg-cyan-500/5" : "bg-orange-500/5"}`, children: [
186
- /* @__PURE__ */ jsx2("div", { className: `text-[10px] font-bold uppercase tracking-widest
187
- ${track === "dialogue" ? "text-purple-400" : track === "ui" ? "text-cyan-400" : "text-orange-400"}`, children: track === "dialogue" ? "Track 1: Di\xE1logo & Audio" : track === "ui" ? "Track 2: UI & Canvas" : "Track 3: L\xF3gica & MCP" }),
188
- /* @__PURE__ */ jsxs2(
189
- "button",
190
- {
191
- onClick: () => handleAdd(track),
192
- className: "mt-3 w-fit py-1.5 px-3 rounded text-xs transition-colors flex items-center gap-1 border border-border-default hover:bg-surface-glass text-text-primary/70 hover:text-text-primary",
193
- children: [
194
- /* @__PURE__ */ jsx2(Plus, { size: 12 }),
195
- " Add Node"
196
- ]
197
- }
198
- )
199
- ] }, track))
200
- ] }),
201
- /* @__PURE__ */ jsx2("div", { className: "flex-1 overflow-x-auto overflow-y-hidden custom-scrollbar bg-surface-secondary relative", children: /* @__PURE__ */ jsxs2("div", { className: "h-full relative min-w-max pb-10", style: { width: `${Math.max(activeTimeline.duration, 15) * 100 + 400}px` }, children: [
202
- /* @__PURE__ */ jsx2("div", { className: "h-8 border-b border-border-default sticky top-0 bg-surface-secondary z-20 flex items-end", children: Array.from({ length: Math.ceil(Math.max(activeTimeline.duration, 15)) + 5 }).map((_, i) => /* @__PURE__ */ jsxs2("div", { className: "absolute h-3 border-l border-border-strong", style: { left: `${i * 100}px` }, children: [
203
- /* @__PURE__ */ jsxs2("span", { className: "absolute -top-5 -left-1.5 text-[10px] text-text-primary/30 font-mono tracking-tighter", children: [
204
- i,
205
- "s"
206
- ] }),
207
- /* @__PURE__ */ jsx2("div", { className: "absolute left-[50px] -bottom-3 h-1.5 border-l border-border-default" })
208
- ] }, i)) }),
209
- /* @__PURE__ */ jsx2("div", { className: "flex flex-col w-full relative", children: tracks.map((track) => /* @__PURE__ */ jsx2("div", { className: "h-[170px] border-b border-border-subtle relative hover:bg-surface-glass transition-colors group/lane", children: /* @__PURE__ */ jsx2(AnimatePresence, { children: activeTimeline.keyframes.filter((kf) => kf.track === track).map((kf) => /* @__PURE__ */ jsx2(
210
- TimelineKeyframeCard,
211
- {
212
- kf,
213
- track,
214
- activeTimelineId,
215
- updateKeyframe,
216
- removeKeyframe
217
- },
218
- kf.id
219
- )) }) }, track)) })
220
- ] }) })
221
- ] })
222
- ] });
223
- };
224
- export {
225
- TimelineEditor
226
- };
@@ -1,11 +0,0 @@
1
- import {
2
- WidgetSlotPanel,
3
- pluginWidgetStore
4
- } from "./chunk-PMYAM764.mjs";
5
- import "./chunk-MSVEFEXE.mjs";
6
- import "./chunk-3P4P3M54.mjs";
7
- import "./chunk-UJCSKKID.mjs";
8
- export {
9
- WidgetSlotPanel,
10
- pluginWidgetStore
11
- };