@uipath/apollo-wind 0.9.1 → 0.10.0-pr219.61d64eb
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/dist/components/custom/canvas.cjs +44 -0
- package/dist/components/custom/canvas.d.ts +14 -0
- package/dist/components/custom/canvas.js +10 -0
- package/dist/components/custom/chat-composer.cjs +105 -0
- package/dist/components/custom/chat-composer.d.ts +15 -0
- package/dist/components/custom/chat-composer.js +71 -0
- package/dist/components/custom/chat-first-experience.cjs +87 -0
- package/dist/components/custom/chat-first-experience.d.ts +24 -0
- package/dist/components/custom/chat-first-experience.js +53 -0
- package/dist/components/custom/chat-prompt-suggestions.cjs +48 -0
- package/dist/components/custom/chat-prompt-suggestions.d.ts +18 -0
- package/dist/components/custom/chat-prompt-suggestions.js +14 -0
- package/dist/components/custom/chat-steps-view.cjs +307 -0
- package/dist/components/custom/chat-steps-view.d.ts +38 -0
- package/dist/components/custom/chat-steps-view.js +273 -0
- package/dist/components/custom/flow-node.cjs +76 -0
- package/dist/components/custom/flow-node.d.ts +20 -0
- package/dist/components/custom/flow-node.js +42 -0
- package/dist/components/custom/flow-properties-bar.cjs +101 -0
- package/dist/components/custom/flow-properties-bar.d.ts +21 -0
- package/dist/components/custom/flow-properties-bar.js +67 -0
- package/dist/components/custom/flow-properties-expanded.cjs +324 -0
- package/dist/components/custom/flow-properties-expanded.d.ts +19 -0
- package/dist/components/custom/flow-properties-expanded.js +290 -0
- package/dist/components/custom/flow-properties-simple.cjs +357 -0
- package/dist/components/custom/flow-properties-simple.d.ts +62 -0
- package/dist/components/custom/flow-properties-simple.js +323 -0
- package/dist/components/custom/flow-properties.cjs +56 -0
- package/dist/components/custom/flow-properties.d.ts +28 -0
- package/dist/components/custom/flow-properties.js +22 -0
- package/dist/components/custom/global-header.cjs +415 -0
- package/dist/components/custom/global-header.d.ts +38 -0
- package/dist/components/custom/global-header.js +381 -0
- package/dist/components/custom/grid-maestro.cjs +62 -0
- package/dist/components/custom/grid-maestro.d.ts +19 -0
- package/dist/components/custom/grid-maestro.js +22 -0
- package/dist/components/custom/panel-delegate.cjs +280 -0
- package/dist/components/custom/panel-delegate.d.ts +34 -0
- package/dist/components/custom/panel-delegate.js +246 -0
- package/dist/components/custom/panel-flow.cjs +260 -0
- package/dist/components/custom/panel-flow.d.ts +38 -0
- package/dist/components/custom/panel-flow.js +223 -0
- package/dist/components/custom/panel-maestro.cjs +73 -0
- package/dist/components/custom/panel-maestro.d.ts +30 -0
- package/dist/components/custom/panel-maestro.js +39 -0
- package/dist/components/custom/toolbar-canvas.cjs +121 -0
- package/dist/components/custom/toolbar-canvas.d.ts +15 -0
- package/dist/components/custom/toolbar-canvas.js +87 -0
- package/dist/components/custom/toolbar-view.cjs +119 -0
- package/dist/components/custom/toolbar-view.d.ts +14 -0
- package/dist/components/custom/toolbar-view.js +85 -0
- package/dist/components/custom/viewport-guard.cjs +92 -0
- package/dist/components/custom/viewport-guard.d.ts +23 -0
- package/dist/components/custom/viewport-guard.js +55 -0
- package/dist/components/ui/button.cjs +3 -3
- package/dist/components/ui/button.js +3 -3
- package/dist/components/ui/chart.cjs +218 -0
- package/dist/components/ui/chart.d.ts +40 -0
- package/dist/components/ui/chart.js +169 -0
- package/dist/components/ui/data-table.cjs +14 -2
- package/dist/components/ui/data-table.d.ts +4 -1
- package/dist/components/ui/data-table.js +15 -3
- package/dist/components/ui/empty-state.cjs +17 -6
- package/dist/components/ui/empty-state.d.ts +7 -0
- package/dist/components/ui/empty-state.js +17 -6
- package/dist/components/ui/file-upload.cjs +82 -42
- package/dist/components/ui/file-upload.d.ts +3 -1
- package/dist/components/ui/file-upload.js +82 -42
- package/dist/components/ui/index.cjs +289 -149
- package/dist/components/ui/index.d.ts +2 -3
- package/dist/components/ui/index.js +2 -3
- package/dist/components/ui/tree-view.cjs +1101 -0
- package/dist/components/ui/tree-view.d.ts +95 -0
- package/dist/components/ui/tree-view.js +1067 -0
- package/dist/foundation/Future/colors.cjs +92 -0
- package/dist/foundation/Future/colors.d.ts +132 -0
- package/dist/foundation/Future/colors.js +43 -0
- package/dist/foundation/Future/radius.cjs +46 -0
- package/dist/foundation/Future/radius.d.ts +33 -0
- package/dist/foundation/Future/radius.js +12 -0
- package/dist/foundation/Future/responsive.cjs +49 -0
- package/dist/foundation/Future/responsive.d.ts +40 -0
- package/dist/foundation/Future/responsive.js +12 -0
- package/dist/foundation/Future/shadows.cjs +48 -0
- package/dist/foundation/Future/shadows.d.ts +29 -0
- package/dist/foundation/Future/shadows.js +11 -0
- package/dist/foundation/Future/spacing.cjs +71 -0
- package/dist/foundation/Future/spacing.d.ts +80 -0
- package/dist/foundation/Future/spacing.js +31 -0
- package/dist/foundation/Future/strokes.cjs +59 -0
- package/dist/foundation/Future/strokes.d.ts +49 -0
- package/dist/foundation/Future/strokes.js +19 -0
- package/dist/foundation/Future/types.cjs +18 -0
- package/dist/foundation/Future/types.d.ts +18 -0
- package/dist/foundation/Future/types.js +0 -0
- package/dist/foundation/Future/typography.cjs +79 -0
- package/dist/foundation/Future/typography.d.ts +86 -0
- package/dist/foundation/Future/typography.js +33 -0
- package/dist/index.cjs +125 -219
- package/dist/index.d.ts +2 -3
- package/dist/index.js +2 -4
- package/dist/src/foundation/Future/themes.css +371 -0
- package/dist/styles.css +1704 -582
- package/dist/tailwind.css +4 -0
- package/dist/templates/Admin/settings-admin.d.ts +5 -0
- package/dist/templates/Admin/template-admin.d.ts +105 -0
- package/dist/templates/Delegate/template-delegate.d.ts +26 -0
- package/dist/templates/EmptyErrors/error-components.d.ts +3 -0
- package/dist/templates/Experiments/ideas-AnimatedGradientText.d.ts +23 -0
- package/dist/templates/Flow/template-flow.d.ts +52 -0
- package/dist/templates/Maestro/template-maestro.d.ts +52 -0
- package/dist/templates/{vscode-example.d.ts → VisualStudio/shell.d.ts} +1 -1
- package/package.json +10 -1
- package/dist/components/ui/menubar.cjs +0 -210
- package/dist/components/ui/menubar.d.ts +0 -28
- package/dist/components/ui/menubar.js +0 -131
- package/dist/components/ui/navigation-menu.cjs +0 -122
- package/dist/components/ui/navigation-menu.d.ts +0 -12
- package/dist/components/ui/navigation-menu.js +0 -64
- package/dist/examples/admin-layout-example.cjs +0 -490
- package/dist/examples/admin-layout-example.d.ts +0 -92
- package/dist/examples/admin-layout-example.js +0 -411
- package/dist/examples/app-shell-example.cjs +0 -452
- package/dist/examples/app-shell-example.d.ts +0 -52
- package/dist/examples/app-shell-example.js +0 -418
- package/dist/examples/dashboard-example.cjs +0 -590
- package/dist/examples/dashboard-example.d.ts +0 -11
- package/dist/examples/dashboard-example.js +0 -556
- package/dist/examples/data-management-example.cjs +0 -584
- package/dist/examples/data-management-example.d.ts +0 -1
- package/dist/examples/data-management-example.js +0 -550
- package/dist/examples/flow-editor-layout-example.cjs +0 -309
- package/dist/examples/flow-editor-layout-example.d.ts +0 -22
- package/dist/examples/flow-editor-layout-example.js +0 -269
- package/dist/examples/flow-start-example.cjs +0 -467
- package/dist/examples/flow-start-example.d.ts +0 -30
- package/dist/examples/flow-start-example.js +0 -433
- package/dist/examples/form-builder-example.cjs +0 -674
- package/dist/examples/form-builder-example.js +0 -640
- package/dist/examples/new-project-example.cjs +0 -550
- package/dist/examples/new-project-example.d.ts +0 -30
- package/dist/examples/new-project-example.js +0 -516
- package/dist/examples/settings-example.cjs +0 -864
- package/dist/examples/settings-example.d.ts +0 -1
- package/dist/examples/settings-example.js +0 -830
- package/dist/examples/vscode-example.cjs +0 -340
- package/dist/examples/vscode-example.d.ts +0 -80
- package/dist/examples/vscode-example.js +0 -270
- package/dist/templates/admin-layout-example.d.ts +0 -92
- package/dist/templates/app-shell-example.d.ts +0 -52
- package/dist/templates/dashboard-example.d.ts +0 -11
- package/dist/templates/data-management-example.d.ts +0 -1
- package/dist/templates/flow-editor-layout-example.d.ts +0 -22
- package/dist/templates/flow-start-example.d.ts +0 -30
- package/dist/templates/form-builder-example.d.ts +0 -1
- package/dist/templates/new-project-example.d.ts +0 -30
- package/dist/templates/settings-example.d.ts +0 -1
- /package/dist/{examples → templates/Forms}/form-builder-example.d.ts +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
FlowPanel: ()=>FlowPanel,
|
|
28
|
+
defaultFlowNavItems: ()=>defaultFlowNavItems
|
|
29
|
+
});
|
|
30
|
+
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
31
|
+
const external_lucide_react_namespaceObject = require("lucide-react");
|
|
32
|
+
const external_react_namespaceObject = require("react");
|
|
33
|
+
const avatar_cjs_namespaceObject = require("../ui/avatar.cjs");
|
|
34
|
+
const tooltip_cjs_namespaceObject = require("../ui/tooltip.cjs");
|
|
35
|
+
const index_cjs_namespaceObject = require("../../lib/index.cjs");
|
|
36
|
+
function UiPathLogo() {
|
|
37
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
38
|
+
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-brand shadow-sm",
|
|
39
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
40
|
+
className: "text-xs font-bold text-foreground-on-accent select-none",
|
|
41
|
+
children: "Ui"
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function IconRail({ navItems, activeId, onNavClick, hasShadow }) {
|
|
46
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
47
|
+
className: (0, index_cjs_namespaceObject.cn)('flex w-[60px] shrink-0 flex-col justify-between bg-surface-overlay', hasShadow && 'shadow-[0px_4px_16px_0px_rgba(0,0,0,0.25)]'),
|
|
48
|
+
children: [
|
|
49
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
50
|
+
className: "flex flex-col",
|
|
51
|
+
children: [
|
|
52
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
53
|
+
className: "flex h-[60px] w-[60px] shrink-0 items-center justify-center",
|
|
54
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(UiPathLogo, {})
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("nav", {
|
|
57
|
+
className: "flex flex-col items-center pt-[18px]",
|
|
58
|
+
children: navItems.map((item)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(tooltip_cjs_namespaceObject.Tooltip, {
|
|
59
|
+
children: [
|
|
60
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(tooltip_cjs_namespaceObject.TooltipTrigger, {
|
|
61
|
+
asChild: true,
|
|
62
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
63
|
+
className: (0, index_cjs_namespaceObject.cn)('flex h-12 w-full items-center justify-center text-foreground-muted transition-colors hover:text-foreground', activeId === item.id && 'text-brand-foreground'),
|
|
64
|
+
onClick: ()=>onNavClick(item.id),
|
|
65
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
66
|
+
className: (0, index_cjs_namespaceObject.cn)('flex h-9 w-9 items-center justify-center rounded-lg transition-colors', activeId === item.id && 'bg-surface-hover'),
|
|
67
|
+
children: item.icon
|
|
68
|
+
})
|
|
69
|
+
})
|
|
70
|
+
}),
|
|
71
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(tooltip_cjs_namespaceObject.TooltipContent, {
|
|
72
|
+
side: "right",
|
|
73
|
+
children: item.label
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
}, item.id))
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
}),
|
|
80
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
81
|
+
className: "flex h-[60px] shrink-0 items-center justify-center",
|
|
82
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(avatar_cjs_namespaceObject.Avatar, {
|
|
83
|
+
className: "h-8 w-8 bg-surface-raised",
|
|
84
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(avatar_cjs_namespaceObject.AvatarFallback, {
|
|
85
|
+
className: "bg-surface-raised text-xs text-foreground-muted",
|
|
86
|
+
children: "U"
|
|
87
|
+
})
|
|
88
|
+
})
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function DefaultChatContent({ chatMessages }) {
|
|
94
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
95
|
+
className: "flex flex-1 flex-col justify-end gap-7 overflow-y-auto",
|
|
96
|
+
children: chatMessages.map((msg)=>'user' === msg.role ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
97
|
+
className: "flex flex-col items-end pr-6",
|
|
98
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
99
|
+
className: "max-w-[360px] rounded-tl-2xl rounded-tr-2xl rounded-bl-2xl rounded-br-[4px] bg-surface-raised px-6 py-4",
|
|
100
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("p", {
|
|
101
|
+
className: "text-base leading-6 tracking-[-0.4px] text-foreground",
|
|
102
|
+
children: msg.content
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
}, msg.id) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
106
|
+
className: "flex items-center gap-2",
|
|
107
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("p", {
|
|
108
|
+
className: "text-base font-medium leading-5 text-foreground-muted",
|
|
109
|
+
children: msg.content
|
|
110
|
+
})
|
|
111
|
+
}, msg.id))
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function ChatInput() {
|
|
115
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
116
|
+
className: "flex flex-col gap-3",
|
|
117
|
+
children: [
|
|
118
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
119
|
+
className: "flex h-12 items-center rounded-2xl border border-border bg-surface-raised px-4",
|
|
120
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("input", {
|
|
121
|
+
type: "text",
|
|
122
|
+
placeholder: "Ask me to help build your Flow",
|
|
123
|
+
className: "flex-1 bg-transparent text-sm text-foreground placeholder:text-foreground-subtle outline-none",
|
|
124
|
+
readOnly: true
|
|
125
|
+
})
|
|
126
|
+
}),
|
|
127
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
128
|
+
className: "flex items-center justify-between",
|
|
129
|
+
children: [
|
|
130
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
131
|
+
className: "flex items-center gap-2",
|
|
132
|
+
children: [
|
|
133
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
134
|
+
type: "button",
|
|
135
|
+
className: "flex h-8 w-8 items-center justify-center rounded-lg text-foreground-muted hover:text-foreground",
|
|
136
|
+
"aria-label": "Add attachment",
|
|
137
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Plus, {
|
|
138
|
+
className: "h-5 w-5"
|
|
139
|
+
})
|
|
140
|
+
}),
|
|
141
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
142
|
+
type: "button",
|
|
143
|
+
className: "flex h-8 w-8 items-center justify-center rounded-lg text-foreground-muted hover:text-foreground",
|
|
144
|
+
"aria-label": "Add workflow",
|
|
145
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Workflow, {
|
|
146
|
+
className: "h-5 w-5"
|
|
147
|
+
})
|
|
148
|
+
})
|
|
149
|
+
]
|
|
150
|
+
}),
|
|
151
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
152
|
+
type: "button",
|
|
153
|
+
className: "flex h-8 w-8 items-center justify-center rounded-full bg-brand text-foreground-on-accent",
|
|
154
|
+
"aria-label": "Submit message",
|
|
155
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.CornerDownLeft, {
|
|
156
|
+
className: "h-4 w-4"
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
]
|
|
160
|
+
})
|
|
161
|
+
]
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
function ExpandedPanel({ chatMessages, expandedContent, onClose }) {
|
|
165
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
166
|
+
className: "flex h-full w-[420px] shrink-0 flex-col justify-between overflow-hidden bg-surface-overlay px-4 pb-4 pt-3",
|
|
167
|
+
children: [
|
|
168
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
169
|
+
className: "flex items-center justify-between",
|
|
170
|
+
children: [
|
|
171
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
172
|
+
className: "flex items-center gap-4 text-base tracking-[-0.6px] leading-9",
|
|
173
|
+
children: [
|
|
174
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
175
|
+
className: "font-bold text-foreground",
|
|
176
|
+
children: "Flow"
|
|
177
|
+
}),
|
|
178
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
|
|
179
|
+
className: "font-medium text-foreground-subtle",
|
|
180
|
+
children: "Autopilot"
|
|
181
|
+
})
|
|
182
|
+
]
|
|
183
|
+
}),
|
|
184
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
185
|
+
className: "text-foreground-muted transition-colors hover:text-foreground",
|
|
186
|
+
onClick: onClose,
|
|
187
|
+
"aria-label": "Close panel",
|
|
188
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.PanelRightOpen, {
|
|
189
|
+
className: "h-5 w-5"
|
|
190
|
+
})
|
|
191
|
+
})
|
|
192
|
+
]
|
|
193
|
+
}),
|
|
194
|
+
expandedContent ?? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DefaultChatContent, {
|
|
195
|
+
chatMessages: chatMessages
|
|
196
|
+
}),
|
|
197
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ChatInput, {})
|
|
198
|
+
]
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function FlowPanel({ className, open = false, onOpenChange, navItems = [], activeNavId, onNavChange, chatMessages = [], expandedContent }) {
|
|
202
|
+
const [internalActiveId, setInternalActiveId] = external_react_namespaceObject.useState(navItems[0]?.id ?? '');
|
|
203
|
+
const activeId = activeNavId ?? internalActiveId;
|
|
204
|
+
const handleNavClick = (id)=>{
|
|
205
|
+
setInternalActiveId(id);
|
|
206
|
+
onNavChange?.(id);
|
|
207
|
+
onOpenChange?.(true);
|
|
208
|
+
};
|
|
209
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(tooltip_cjs_namespaceObject.TooltipProvider, {
|
|
210
|
+
delayDuration: 300,
|
|
211
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
212
|
+
className: (0, index_cjs_namespaceObject.cn)('flex h-full', className),
|
|
213
|
+
children: [
|
|
214
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(IconRail, {
|
|
215
|
+
navItems: navItems,
|
|
216
|
+
activeId: activeId,
|
|
217
|
+
onNavClick: handleNavClick,
|
|
218
|
+
hasShadow: open
|
|
219
|
+
}),
|
|
220
|
+
open && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ExpandedPanel, {
|
|
221
|
+
chatMessages: chatMessages,
|
|
222
|
+
expandedContent: expandedContent,
|
|
223
|
+
onClose: ()=>onOpenChange?.(false)
|
|
224
|
+
})
|
|
225
|
+
]
|
|
226
|
+
})
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
const defaultFlowNavItems = [
|
|
230
|
+
{
|
|
231
|
+
id: 'chat',
|
|
232
|
+
label: 'Chat',
|
|
233
|
+
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.MessageCircle, {
|
|
234
|
+
className: "h-5 w-5"
|
|
235
|
+
})
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
id: 'home',
|
|
239
|
+
label: 'Home',
|
|
240
|
+
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.House, {
|
|
241
|
+
className: "h-5 w-5"
|
|
242
|
+
})
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
id: 'flows',
|
|
246
|
+
label: 'Flows',
|
|
247
|
+
icon: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.Workflow, {
|
|
248
|
+
className: "h-5 w-5"
|
|
249
|
+
})
|
|
250
|
+
}
|
|
251
|
+
];
|
|
252
|
+
exports.FlowPanel = __webpack_exports__.FlowPanel;
|
|
253
|
+
exports.defaultFlowNavItems = __webpack_exports__.defaultFlowNavItems;
|
|
254
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
255
|
+
"FlowPanel",
|
|
256
|
+
"defaultFlowNavItems"
|
|
257
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
258
|
+
Object.defineProperty(exports, '__esModule', {
|
|
259
|
+
value: true
|
|
260
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface FlowPanelNavItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
icon: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface FlowPanelChatMessage {
|
|
8
|
+
id: string;
|
|
9
|
+
role: 'user' | 'assistant';
|
|
10
|
+
content: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FlowPanelProps {
|
|
13
|
+
className?: string;
|
|
14
|
+
/** Whether the expanded panel is open */
|
|
15
|
+
open?: boolean;
|
|
16
|
+
/** Callback to toggle expanded panel */
|
|
17
|
+
onOpenChange?: (open: boolean) => void;
|
|
18
|
+
/** Navigation items shown as icon buttons */
|
|
19
|
+
navItems?: FlowPanelNavItem[];
|
|
20
|
+
/** Currently active nav item ID */
|
|
21
|
+
activeNavId?: string;
|
|
22
|
+
/** Callback when a nav item is clicked */
|
|
23
|
+
onNavChange?: (navId: string) => void;
|
|
24
|
+
/** Chat messages to display in the expanded panel */
|
|
25
|
+
chatMessages?: FlowPanelChatMessage[];
|
|
26
|
+
/** Content to render inside the expanded panel (overrides default chat UI) */
|
|
27
|
+
expandedContent?: React.ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Flow template left panel with collapsed icon rail and optional expanded
|
|
31
|
+
* chat panel.
|
|
32
|
+
*
|
|
33
|
+
* - **Collapsed**: 60px icon rail with logo, nav icons, and avatar
|
|
34
|
+
* - **Expanded**: Icon rail + 420px chat panel with Flow/Autopilot tabs,
|
|
35
|
+
* chat messages, and input field
|
|
36
|
+
*/
|
|
37
|
+
export declare function FlowPanel({ className, open, onOpenChange, navItems, activeNavId, onNavChange, chatMessages, expandedContent, }: FlowPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export declare const defaultFlowNavItems: FlowPanelNavItem[];
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CornerDownLeft, House, MessageCircle, PanelRightOpen, Plus, Workflow } from "lucide-react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Avatar, AvatarFallback } from "../ui/avatar.js";
|
|
5
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip.js";
|
|
6
|
+
import { cn } from "../../lib/index.js";
|
|
7
|
+
function UiPathLogo() {
|
|
8
|
+
return /*#__PURE__*/ jsx("div", {
|
|
9
|
+
className: "flex h-9 w-9 items-center justify-center rounded-lg bg-brand shadow-sm",
|
|
10
|
+
children: /*#__PURE__*/ jsx("span", {
|
|
11
|
+
className: "text-xs font-bold text-foreground-on-accent select-none",
|
|
12
|
+
children: "Ui"
|
|
13
|
+
})
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function IconRail({ navItems, activeId, onNavClick, hasShadow }) {
|
|
17
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
18
|
+
className: cn('flex w-[60px] shrink-0 flex-col justify-between bg-surface-overlay', hasShadow && 'shadow-[0px_4px_16px_0px_rgba(0,0,0,0.25)]'),
|
|
19
|
+
children: [
|
|
20
|
+
/*#__PURE__*/ jsxs("div", {
|
|
21
|
+
className: "flex flex-col",
|
|
22
|
+
children: [
|
|
23
|
+
/*#__PURE__*/ jsx("div", {
|
|
24
|
+
className: "flex h-[60px] w-[60px] shrink-0 items-center justify-center",
|
|
25
|
+
children: /*#__PURE__*/ jsx(UiPathLogo, {})
|
|
26
|
+
}),
|
|
27
|
+
/*#__PURE__*/ jsx("nav", {
|
|
28
|
+
className: "flex flex-col items-center pt-[18px]",
|
|
29
|
+
children: navItems.map((item)=>/*#__PURE__*/ jsxs(Tooltip, {
|
|
30
|
+
children: [
|
|
31
|
+
/*#__PURE__*/ jsx(TooltipTrigger, {
|
|
32
|
+
asChild: true,
|
|
33
|
+
children: /*#__PURE__*/ jsx("button", {
|
|
34
|
+
className: cn('flex h-12 w-full items-center justify-center text-foreground-muted transition-colors hover:text-foreground', activeId === item.id && 'text-brand-foreground'),
|
|
35
|
+
onClick: ()=>onNavClick(item.id),
|
|
36
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
37
|
+
className: cn('flex h-9 w-9 items-center justify-center rounded-lg transition-colors', activeId === item.id && 'bg-surface-hover'),
|
|
38
|
+
children: item.icon
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ jsx(TooltipContent, {
|
|
43
|
+
side: "right",
|
|
44
|
+
children: item.label
|
|
45
|
+
})
|
|
46
|
+
]
|
|
47
|
+
}, item.id))
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
}),
|
|
51
|
+
/*#__PURE__*/ jsx("div", {
|
|
52
|
+
className: "flex h-[60px] shrink-0 items-center justify-center",
|
|
53
|
+
children: /*#__PURE__*/ jsx(Avatar, {
|
|
54
|
+
className: "h-8 w-8 bg-surface-raised",
|
|
55
|
+
children: /*#__PURE__*/ jsx(AvatarFallback, {
|
|
56
|
+
className: "bg-surface-raised text-xs text-foreground-muted",
|
|
57
|
+
children: "U"
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function DefaultChatContent({ chatMessages }) {
|
|
65
|
+
return /*#__PURE__*/ jsx("div", {
|
|
66
|
+
className: "flex flex-1 flex-col justify-end gap-7 overflow-y-auto",
|
|
67
|
+
children: chatMessages.map((msg)=>'user' === msg.role ? /*#__PURE__*/ jsx("div", {
|
|
68
|
+
className: "flex flex-col items-end pr-6",
|
|
69
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
70
|
+
className: "max-w-[360px] rounded-tl-2xl rounded-tr-2xl rounded-bl-2xl rounded-br-[4px] bg-surface-raised px-6 py-4",
|
|
71
|
+
children: /*#__PURE__*/ jsx("p", {
|
|
72
|
+
className: "text-base leading-6 tracking-[-0.4px] text-foreground",
|
|
73
|
+
children: msg.content
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
}, msg.id) : /*#__PURE__*/ jsx("div", {
|
|
77
|
+
className: "flex items-center gap-2",
|
|
78
|
+
children: /*#__PURE__*/ jsx("p", {
|
|
79
|
+
className: "text-base font-medium leading-5 text-foreground-muted",
|
|
80
|
+
children: msg.content
|
|
81
|
+
})
|
|
82
|
+
}, msg.id))
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function ChatInput() {
|
|
86
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
87
|
+
className: "flex flex-col gap-3",
|
|
88
|
+
children: [
|
|
89
|
+
/*#__PURE__*/ jsx("div", {
|
|
90
|
+
className: "flex h-12 items-center rounded-2xl border border-border bg-surface-raised px-4",
|
|
91
|
+
children: /*#__PURE__*/ jsx("input", {
|
|
92
|
+
type: "text",
|
|
93
|
+
placeholder: "Ask me to help build your Flow",
|
|
94
|
+
className: "flex-1 bg-transparent text-sm text-foreground placeholder:text-foreground-subtle outline-none",
|
|
95
|
+
readOnly: true
|
|
96
|
+
})
|
|
97
|
+
}),
|
|
98
|
+
/*#__PURE__*/ jsxs("div", {
|
|
99
|
+
className: "flex items-center justify-between",
|
|
100
|
+
children: [
|
|
101
|
+
/*#__PURE__*/ jsxs("div", {
|
|
102
|
+
className: "flex items-center gap-2",
|
|
103
|
+
children: [
|
|
104
|
+
/*#__PURE__*/ jsx("button", {
|
|
105
|
+
type: "button",
|
|
106
|
+
className: "flex h-8 w-8 items-center justify-center rounded-lg text-foreground-muted hover:text-foreground",
|
|
107
|
+
"aria-label": "Add attachment",
|
|
108
|
+
children: /*#__PURE__*/ jsx(Plus, {
|
|
109
|
+
className: "h-5 w-5"
|
|
110
|
+
})
|
|
111
|
+
}),
|
|
112
|
+
/*#__PURE__*/ jsx("button", {
|
|
113
|
+
type: "button",
|
|
114
|
+
className: "flex h-8 w-8 items-center justify-center rounded-lg text-foreground-muted hover:text-foreground",
|
|
115
|
+
"aria-label": "Add workflow",
|
|
116
|
+
children: /*#__PURE__*/ jsx(Workflow, {
|
|
117
|
+
className: "h-5 w-5"
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
]
|
|
121
|
+
}),
|
|
122
|
+
/*#__PURE__*/ jsx("button", {
|
|
123
|
+
type: "button",
|
|
124
|
+
className: "flex h-8 w-8 items-center justify-center rounded-full bg-brand text-foreground-on-accent",
|
|
125
|
+
"aria-label": "Submit message",
|
|
126
|
+
children: /*#__PURE__*/ jsx(CornerDownLeft, {
|
|
127
|
+
className: "h-4 w-4"
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
]
|
|
131
|
+
})
|
|
132
|
+
]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function ExpandedPanel({ chatMessages, expandedContent, onClose }) {
|
|
136
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
137
|
+
className: "flex h-full w-[420px] shrink-0 flex-col justify-between overflow-hidden bg-surface-overlay px-4 pb-4 pt-3",
|
|
138
|
+
children: [
|
|
139
|
+
/*#__PURE__*/ jsxs("div", {
|
|
140
|
+
className: "flex items-center justify-between",
|
|
141
|
+
children: [
|
|
142
|
+
/*#__PURE__*/ jsxs("div", {
|
|
143
|
+
className: "flex items-center gap-4 text-base tracking-[-0.6px] leading-9",
|
|
144
|
+
children: [
|
|
145
|
+
/*#__PURE__*/ jsx("span", {
|
|
146
|
+
className: "font-bold text-foreground",
|
|
147
|
+
children: "Flow"
|
|
148
|
+
}),
|
|
149
|
+
/*#__PURE__*/ jsx("span", {
|
|
150
|
+
className: "font-medium text-foreground-subtle",
|
|
151
|
+
children: "Autopilot"
|
|
152
|
+
})
|
|
153
|
+
]
|
|
154
|
+
}),
|
|
155
|
+
/*#__PURE__*/ jsx("button", {
|
|
156
|
+
className: "text-foreground-muted transition-colors hover:text-foreground",
|
|
157
|
+
onClick: onClose,
|
|
158
|
+
"aria-label": "Close panel",
|
|
159
|
+
children: /*#__PURE__*/ jsx(PanelRightOpen, {
|
|
160
|
+
className: "h-5 w-5"
|
|
161
|
+
})
|
|
162
|
+
})
|
|
163
|
+
]
|
|
164
|
+
}),
|
|
165
|
+
expandedContent ?? /*#__PURE__*/ jsx(DefaultChatContent, {
|
|
166
|
+
chatMessages: chatMessages
|
|
167
|
+
}),
|
|
168
|
+
/*#__PURE__*/ jsx(ChatInput, {})
|
|
169
|
+
]
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function FlowPanel({ className, open = false, onOpenChange, navItems = [], activeNavId, onNavChange, chatMessages = [], expandedContent }) {
|
|
173
|
+
const [internalActiveId, setInternalActiveId] = useState(navItems[0]?.id ?? '');
|
|
174
|
+
const activeId = activeNavId ?? internalActiveId;
|
|
175
|
+
const handleNavClick = (id)=>{
|
|
176
|
+
setInternalActiveId(id);
|
|
177
|
+
onNavChange?.(id);
|
|
178
|
+
onOpenChange?.(true);
|
|
179
|
+
};
|
|
180
|
+
return /*#__PURE__*/ jsx(TooltipProvider, {
|
|
181
|
+
delayDuration: 300,
|
|
182
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
183
|
+
className: cn('flex h-full', className),
|
|
184
|
+
children: [
|
|
185
|
+
/*#__PURE__*/ jsx(IconRail, {
|
|
186
|
+
navItems: navItems,
|
|
187
|
+
activeId: activeId,
|
|
188
|
+
onNavClick: handleNavClick,
|
|
189
|
+
hasShadow: open
|
|
190
|
+
}),
|
|
191
|
+
open && /*#__PURE__*/ jsx(ExpandedPanel, {
|
|
192
|
+
chatMessages: chatMessages,
|
|
193
|
+
expandedContent: expandedContent,
|
|
194
|
+
onClose: ()=>onOpenChange?.(false)
|
|
195
|
+
})
|
|
196
|
+
]
|
|
197
|
+
})
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
const defaultFlowNavItems = [
|
|
201
|
+
{
|
|
202
|
+
id: 'chat',
|
|
203
|
+
label: 'Chat',
|
|
204
|
+
icon: /*#__PURE__*/ jsx(MessageCircle, {
|
|
205
|
+
className: "h-5 w-5"
|
|
206
|
+
})
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
id: 'home',
|
|
210
|
+
label: 'Home',
|
|
211
|
+
icon: /*#__PURE__*/ jsx(House, {
|
|
212
|
+
className: "h-5 w-5"
|
|
213
|
+
})
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
id: 'flows',
|
|
217
|
+
label: 'Flows',
|
|
218
|
+
icon: /*#__PURE__*/ jsx(Workflow, {
|
|
219
|
+
className: "h-5 w-5"
|
|
220
|
+
})
|
|
221
|
+
}
|
|
222
|
+
];
|
|
223
|
+
export { FlowPanel, defaultFlowNavItems };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
Panel: ()=>Panel
|
|
28
|
+
});
|
|
29
|
+
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
30
|
+
require("react");
|
|
31
|
+
const external_lucide_react_namespaceObject = require("lucide-react");
|
|
32
|
+
const index_cjs_namespaceObject = require("../../lib/index.cjs");
|
|
33
|
+
function Panel({ side, children, className, isCollapsed = false, onToggle }) {
|
|
34
|
+
const isExpanded = !isCollapsed;
|
|
35
|
+
const isLeft = 'left' === side;
|
|
36
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
37
|
+
className: (0, index_cjs_namespaceObject.cn)('relative flex h-full shrink-0 flex-col bg-surface transition-all duration-300', isLeft ? 'border-r border-border-subtle' : 'border-l border-border-subtle', isExpanded ? 'w-[300px]' : 'w-8', className),
|
|
38
|
+
children: [
|
|
39
|
+
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
|
|
40
|
+
className: "absolute z-10 flex h-7 w-7 items-center justify-center rounded-full border border-border bg-surface text-foreground-muted transition-colors hover:bg-surface-hover hover:text-foreground",
|
|
41
|
+
style: {
|
|
42
|
+
top: 28,
|
|
43
|
+
...isLeft ? {
|
|
44
|
+
right: 0,
|
|
45
|
+
transform: 'translateX(50%)'
|
|
46
|
+
} : {
|
|
47
|
+
left: 0,
|
|
48
|
+
transform: 'translateX(-50%)'
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
onClick: onToggle,
|
|
52
|
+
"aria-label": isExpanded ? 'Collapse panel' : 'Expand panel',
|
|
53
|
+
children: isLeft ? isExpanded ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronLeft, {
|
|
54
|
+
className: "h-4 w-4"
|
|
55
|
+
}) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronRight, {
|
|
56
|
+
className: "h-4 w-4"
|
|
57
|
+
}) : isExpanded ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronRight, {
|
|
58
|
+
className: "h-4 w-4"
|
|
59
|
+
}) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronLeft, {
|
|
60
|
+
className: "h-4 w-4"
|
|
61
|
+
})
|
|
62
|
+
}),
|
|
63
|
+
isExpanded && children
|
|
64
|
+
]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
exports.Panel = __webpack_exports__.Panel;
|
|
68
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
69
|
+
"Panel"
|
|
70
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
71
|
+
Object.defineProperty(exports, '__esModule', {
|
|
72
|
+
value: true
|
|
73
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface PanelProps {
|
|
3
|
+
/** Determines border side, arrow direction, and arrow position */
|
|
4
|
+
side: 'left' | 'right';
|
|
5
|
+
/** Panel content — only rendered when expanded */
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/** Additional CSS classes */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Controlled collapsed state */
|
|
10
|
+
isCollapsed?: boolean;
|
|
11
|
+
/** Callback when the toggle button is clicked */
|
|
12
|
+
onToggle?: () => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Collapsible panel for the Maestro template (controlled).
|
|
16
|
+
*
|
|
17
|
+
* Dimensions:
|
|
18
|
+
* - **Expanded**: 300px wide
|
|
19
|
+
* - **Collapsed**: 32px wide
|
|
20
|
+
* - **Height**: fills parent (`h-full`)
|
|
21
|
+
*
|
|
22
|
+
* The expand/collapse toggle button is a 28×28px circle that straddles
|
|
23
|
+
* the panel border — half inside the panel, half outside — positioned
|
|
24
|
+
* 28px from the top.
|
|
25
|
+
*
|
|
26
|
+
* Content is only rendered when expanded. Transition is 300ms.
|
|
27
|
+
*
|
|
28
|
+
* State is managed by the parent — pass `isCollapsed` and `onToggle`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function Panel({ side, children, className, isCollapsed, onToggle, }: PanelProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
4
|
+
import { cn } from "../../lib/index.js";
|
|
5
|
+
function Panel({ side, children, className, isCollapsed = false, onToggle }) {
|
|
6
|
+
const isExpanded = !isCollapsed;
|
|
7
|
+
const isLeft = 'left' === side;
|
|
8
|
+
return /*#__PURE__*/ jsxs("div", {
|
|
9
|
+
className: cn('relative flex h-full shrink-0 flex-col bg-surface transition-all duration-300', isLeft ? 'border-r border-border-subtle' : 'border-l border-border-subtle', isExpanded ? 'w-[300px]' : 'w-8', className),
|
|
10
|
+
children: [
|
|
11
|
+
/*#__PURE__*/ jsx("button", {
|
|
12
|
+
className: "absolute z-10 flex h-7 w-7 items-center justify-center rounded-full border border-border bg-surface text-foreground-muted transition-colors hover:bg-surface-hover hover:text-foreground",
|
|
13
|
+
style: {
|
|
14
|
+
top: 28,
|
|
15
|
+
...isLeft ? {
|
|
16
|
+
right: 0,
|
|
17
|
+
transform: 'translateX(50%)'
|
|
18
|
+
} : {
|
|
19
|
+
left: 0,
|
|
20
|
+
transform: 'translateX(-50%)'
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
onClick: onToggle,
|
|
24
|
+
"aria-label": isExpanded ? 'Collapse panel' : 'Expand panel',
|
|
25
|
+
children: isLeft ? isExpanded ? /*#__PURE__*/ jsx(ChevronLeft, {
|
|
26
|
+
className: "h-4 w-4"
|
|
27
|
+
}) : /*#__PURE__*/ jsx(ChevronRight, {
|
|
28
|
+
className: "h-4 w-4"
|
|
29
|
+
}) : isExpanded ? /*#__PURE__*/ jsx(ChevronRight, {
|
|
30
|
+
className: "h-4 w-4"
|
|
31
|
+
}) : /*#__PURE__*/ jsx(ChevronLeft, {
|
|
32
|
+
className: "h-4 w-4"
|
|
33
|
+
})
|
|
34
|
+
}),
|
|
35
|
+
isExpanded && children
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export { Panel };
|