@tleblancureta/proto 0.1.0

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 (231) hide show
  1. package/core-web/src/ProtoApp.tsx +163 -0
  2. package/core-web/src/components/Shell.tsx +276 -0
  3. package/core-web/src/components/shell/EmptyState.tsx +33 -0
  4. package/core-web/src/components/shell/FocusView.tsx +55 -0
  5. package/core-web/src/components/shell/Toolbar.tsx +233 -0
  6. package/core-web/src/components/shell/persistence.ts +20 -0
  7. package/core-web/src/components/shell/types.ts +14 -0
  8. package/core-web/src/components/ui/avatar.tsx +18 -0
  9. package/core-web/src/components/ui/badge.tsx +28 -0
  10. package/core-web/src/components/ui/button.tsx +40 -0
  11. package/core-web/src/components/ui/card.tsx +32 -0
  12. package/core-web/src/components/ui/inline-edit.tsx +120 -0
  13. package/core-web/src/components/ui/input.tsx +18 -0
  14. package/core-web/src/components/ui/scroll-area.tsx +12 -0
  15. package/core-web/src/components/ui/separator.tsx +23 -0
  16. package/core-web/src/components/ui/shell-dialog.tsx +79 -0
  17. package/core-web/src/components/ui/skeleton.tsx +9 -0
  18. package/core-web/src/components/ui/textarea.tsx +17 -0
  19. package/core-web/src/components/widgets/agent/Generative.tsx +74 -0
  20. package/core-web/src/components/widgets/agent/Primitives.tsx +225 -0
  21. package/core-web/src/components/widgets/agent/actions.ts +52 -0
  22. package/core-web/src/hooks/useAuth.ts +80 -0
  23. package/core-web/src/hooks/useData.ts +44 -0
  24. package/core-web/src/hooks/useMountEffect.ts +10 -0
  25. package/core-web/src/hooks/useTheme.ts +37 -0
  26. package/core-web/src/index.ts +52 -0
  27. package/core-web/src/lib/api.ts +231 -0
  28. package/core-web/src/lib/config.ts +14 -0
  29. package/core-web/src/lib/define-widget.ts +71 -0
  30. package/core-web/src/lib/drag.ts +45 -0
  31. package/core-web/src/lib/supabase.ts +6 -0
  32. package/core-web/src/lib/utils.ts +6 -0
  33. package/core-web/src/lib/widgetCache.ts +29 -0
  34. package/core-web/src/vite-env.d.ts +1 -0
  35. package/dist/core-mcp/src/app.d.ts +40 -0
  36. package/dist/core-mcp/src/app.d.ts.map +1 -0
  37. package/dist/core-mcp/src/app.js +141 -0
  38. package/dist/core-mcp/src/app.js.map +1 -0
  39. package/dist/core-mcp/src/define-tool.d.ts +70 -0
  40. package/dist/core-mcp/src/define-tool.d.ts.map +1 -0
  41. package/dist/core-mcp/src/define-tool.js +38 -0
  42. package/dist/core-mcp/src/define-tool.js.map +1 -0
  43. package/dist/core-mcp/src/entity-tools.d.ts +27 -0
  44. package/dist/core-mcp/src/entity-tools.d.ts.map +1 -0
  45. package/dist/core-mcp/src/entity-tools.js +99 -0
  46. package/dist/core-mcp/src/entity-tools.js.map +1 -0
  47. package/dist/core-mcp/src/index.d.ts +36 -0
  48. package/dist/core-mcp/src/index.d.ts.map +1 -0
  49. package/dist/core-mcp/src/index.js +116 -0
  50. package/dist/core-mcp/src/index.js.map +1 -0
  51. package/dist/core-mcp/src/supabase.d.ts +7 -0
  52. package/dist/core-mcp/src/supabase.d.ts.map +1 -0
  53. package/dist/core-mcp/src/supabase.js +18 -0
  54. package/dist/core-mcp/src/supabase.js.map +1 -0
  55. package/dist/core-mcp/src/tools/_helpers.d.ts +44 -0
  56. package/dist/core-mcp/src/tools/_helpers.d.ts.map +1 -0
  57. package/dist/core-mcp/src/tools/_helpers.js +23 -0
  58. package/dist/core-mcp/src/tools/_helpers.js.map +1 -0
  59. package/dist/core-mcp/src/tools/ui.d.ts +9 -0
  60. package/dist/core-mcp/src/tools/ui.d.ts.map +1 -0
  61. package/dist/core-mcp/src/tools/ui.js +100 -0
  62. package/dist/core-mcp/src/tools/ui.js.map +1 -0
  63. package/dist/core-mcp/src/workflow-tools.d.ts +41 -0
  64. package/dist/core-mcp/src/workflow-tools.d.ts.map +1 -0
  65. package/dist/core-mcp/src/workflow-tools.js +382 -0
  66. package/dist/core-mcp/src/workflow-tools.js.map +1 -0
  67. package/dist/core-shared/src/define-entity.d.ts +73 -0
  68. package/dist/core-shared/src/define-entity.d.ts.map +1 -0
  69. package/dist/core-shared/src/define-entity.js +47 -0
  70. package/dist/core-shared/src/define-entity.js.map +1 -0
  71. package/dist/core-shared/src/define-workflow.d.ts +111 -0
  72. package/dist/core-shared/src/define-workflow.d.ts.map +1 -0
  73. package/dist/core-shared/src/define-workflow.js +92 -0
  74. package/dist/core-shared/src/define-workflow.js.map +1 -0
  75. package/dist/core-shared/src/index.d.ts +5 -0
  76. package/dist/core-shared/src/index.d.ts.map +1 -0
  77. package/dist/core-shared/src/index.js +7 -0
  78. package/dist/core-shared/src/index.js.map +1 -0
  79. package/dist/core-shared/src/scheduling.d.ts +69 -0
  80. package/dist/core-shared/src/scheduling.d.ts.map +1 -0
  81. package/dist/core-shared/src/scheduling.js +39 -0
  82. package/dist/core-shared/src/scheduling.js.map +1 -0
  83. package/dist/core-shared/src/schemas.d.ts +51 -0
  84. package/dist/core-shared/src/schemas.d.ts.map +1 -0
  85. package/dist/core-shared/src/schemas.js +18 -0
  86. package/dist/core-shared/src/schemas.js.map +1 -0
  87. package/dist/core-web/src/ProtoApp.d.ts +19 -0
  88. package/dist/core-web/src/ProtoApp.d.ts.map +1 -0
  89. package/dist/core-web/src/ProtoApp.js +92 -0
  90. package/dist/core-web/src/ProtoApp.js.map +1 -0
  91. package/dist/core-web/src/components/Shell.d.ts +46 -0
  92. package/dist/core-web/src/components/Shell.d.ts.map +1 -0
  93. package/dist/core-web/src/components/Shell.js +104 -0
  94. package/dist/core-web/src/components/Shell.js.map +1 -0
  95. package/dist/core-web/src/components/shell/EmptyState.d.ts +13 -0
  96. package/dist/core-web/src/components/shell/EmptyState.d.ts.map +1 -0
  97. package/dist/core-web/src/components/shell/EmptyState.js +7 -0
  98. package/dist/core-web/src/components/shell/EmptyState.js.map +1 -0
  99. package/dist/core-web/src/components/shell/FocusView.d.ts +16 -0
  100. package/dist/core-web/src/components/shell/FocusView.d.ts.map +1 -0
  101. package/dist/core-web/src/components/shell/FocusView.js +12 -0
  102. package/dist/core-web/src/components/shell/FocusView.js.map +1 -0
  103. package/dist/core-web/src/components/shell/Toolbar.d.ts +35 -0
  104. package/dist/core-web/src/components/shell/Toolbar.d.ts.map +1 -0
  105. package/dist/core-web/src/components/shell/Toolbar.js +42 -0
  106. package/dist/core-web/src/components/shell/Toolbar.js.map +1 -0
  107. package/dist/core-web/src/components/shell/persistence.d.ts +8 -0
  108. package/dist/core-web/src/components/shell/persistence.d.ts.map +1 -0
  109. package/dist/core-web/src/components/shell/persistence.js +20 -0
  110. package/dist/core-web/src/components/shell/persistence.js.map +1 -0
  111. package/dist/core-web/src/components/shell/types.d.ts +13 -0
  112. package/dist/core-web/src/components/shell/types.d.ts.map +1 -0
  113. package/dist/core-web/src/components/shell/types.js +2 -0
  114. package/dist/core-web/src/components/shell/types.js.map +1 -0
  115. package/dist/core-web/src/components/ui/avatar.d.ts +5 -0
  116. package/dist/core-web/src/components/ui/avatar.d.ts.map +1 -0
  117. package/dist/core-web/src/components/ui/avatar.js +9 -0
  118. package/dist/core-web/src/components/ui/avatar.js.map +1 -0
  119. package/dist/core-web/src/components/ui/badge.d.ts +13 -0
  120. package/dist/core-web/src/components/ui/badge.d.ts.map +1 -0
  121. package/dist/core-web/src/components/ui/badge.js +13 -0
  122. package/dist/core-web/src/components/ui/badge.js.map +1 -0
  123. package/dist/core-web/src/components/ui/button.d.ts +22 -0
  124. package/dist/core-web/src/components/ui/button.d.ts.map +1 -0
  125. package/dist/core-web/src/components/ui/button.js +21 -0
  126. package/dist/core-web/src/components/ui/button.js.map +1 -0
  127. package/dist/core-web/src/components/ui/card.d.ts +7 -0
  128. package/dist/core-web/src/components/ui/card.d.ts.map +1 -0
  129. package/dist/core-web/src/components/ui/card.js +13 -0
  130. package/dist/core-web/src/components/ui/card.js.map +1 -0
  131. package/dist/core-web/src/components/ui/inline-edit.d.ts +20 -0
  132. package/dist/core-web/src/components/ui/inline-edit.d.ts.map +1 -0
  133. package/dist/core-web/src/components/ui/inline-edit.js +63 -0
  134. package/dist/core-web/src/components/ui/inline-edit.js.map +1 -0
  135. package/dist/core-web/src/components/ui/input.d.ts +4 -0
  136. package/dist/core-web/src/components/ui/input.d.ts.map +1 -0
  137. package/dist/core-web/src/components/ui/input.js +7 -0
  138. package/dist/core-web/src/components/ui/input.js.map +1 -0
  139. package/dist/core-web/src/components/ui/scroll-area.d.ts +4 -0
  140. package/dist/core-web/src/components/ui/scroll-area.d.ts.map +1 -0
  141. package/dist/core-web/src/components/ui/scroll-area.js +7 -0
  142. package/dist/core-web/src/components/ui/scroll-area.js.map +1 -0
  143. package/dist/core-web/src/components/ui/separator.d.ts +7 -0
  144. package/dist/core-web/src/components/ui/separator.d.ts.map +1 -0
  145. package/dist/core-web/src/components/ui/separator.js +7 -0
  146. package/dist/core-web/src/components/ui/separator.js.map +1 -0
  147. package/dist/core-web/src/components/ui/shell-dialog.d.ts +16 -0
  148. package/dist/core-web/src/components/ui/shell-dialog.d.ts.map +1 -0
  149. package/dist/core-web/src/components/ui/shell-dialog.js +36 -0
  150. package/dist/core-web/src/components/ui/shell-dialog.js.map +1 -0
  151. package/dist/core-web/src/components/ui/skeleton.d.ts +3 -0
  152. package/dist/core-web/src/components/ui/skeleton.d.ts.map +1 -0
  153. package/dist/core-web/src/components/ui/skeleton.js +7 -0
  154. package/dist/core-web/src/components/ui/skeleton.js.map +1 -0
  155. package/dist/core-web/src/components/ui/textarea.d.ts +4 -0
  156. package/dist/core-web/src/components/ui/textarea.d.ts.map +1 -0
  157. package/dist/core-web/src/components/ui/textarea.js +7 -0
  158. package/dist/core-web/src/components/ui/textarea.js.map +1 -0
  159. package/dist/core-web/src/components/widgets/agent/Generative.d.ts +13 -0
  160. package/dist/core-web/src/components/widgets/agent/Generative.d.ts.map +1 -0
  161. package/dist/core-web/src/components/widgets/agent/Generative.js +42 -0
  162. package/dist/core-web/src/components/widgets/agent/Generative.js.map +1 -0
  163. package/dist/core-web/src/components/widgets/agent/Primitives.d.ts +79 -0
  164. package/dist/core-web/src/components/widgets/agent/Primitives.d.ts.map +1 -0
  165. package/dist/core-web/src/components/widgets/agent/Primitives.js +116 -0
  166. package/dist/core-web/src/components/widgets/agent/Primitives.js.map +1 -0
  167. package/dist/core-web/src/components/widgets/agent/actions.d.ts +3 -0
  168. package/dist/core-web/src/components/widgets/agent/actions.d.ts.map +1 -0
  169. package/dist/core-web/src/components/widgets/agent/actions.js +33 -0
  170. package/dist/core-web/src/components/widgets/agent/actions.js.map +1 -0
  171. package/dist/core-web/src/hooks/useAuth.d.ts +25 -0
  172. package/dist/core-web/src/hooks/useAuth.d.ts.map +1 -0
  173. package/dist/core-web/src/hooks/useAuth.js +53 -0
  174. package/dist/core-web/src/hooks/useAuth.js.map +1 -0
  175. package/dist/core-web/src/hooks/useData.d.ts +10 -0
  176. package/dist/core-web/src/hooks/useData.d.ts.map +1 -0
  177. package/dist/core-web/src/hooks/useData.js +37 -0
  178. package/dist/core-web/src/hooks/useData.js.map +1 -0
  179. package/dist/core-web/src/hooks/useMountEffect.d.ts +6 -0
  180. package/dist/core-web/src/hooks/useMountEffect.d.ts.map +1 -0
  181. package/dist/core-web/src/hooks/useMountEffect.js +10 -0
  182. package/dist/core-web/src/hooks/useMountEffect.js.map +1 -0
  183. package/dist/core-web/src/hooks/useTheme.d.ts +6 -0
  184. package/dist/core-web/src/hooks/useTheme.d.ts.map +1 -0
  185. package/dist/core-web/src/hooks/useTheme.js +31 -0
  186. package/dist/core-web/src/hooks/useTheme.js.map +1 -0
  187. package/dist/core-web/src/index.d.ts +33 -0
  188. package/dist/core-web/src/index.d.ts.map +1 -0
  189. package/dist/core-web/src/index.js +38 -0
  190. package/dist/core-web/src/index.js.map +1 -0
  191. package/dist/core-web/src/lib/api.d.ts +60 -0
  192. package/dist/core-web/src/lib/api.d.ts.map +1 -0
  193. package/dist/core-web/src/lib/api.js +204 -0
  194. package/dist/core-web/src/lib/api.js.map +1 -0
  195. package/dist/core-web/src/lib/config.d.ts +10 -0
  196. package/dist/core-web/src/lib/config.d.ts.map +1 -0
  197. package/dist/core-web/src/lib/config.js +10 -0
  198. package/dist/core-web/src/lib/config.js.map +1 -0
  199. package/dist/core-web/src/lib/define-widget.d.ts +52 -0
  200. package/dist/core-web/src/lib/define-widget.d.ts.map +1 -0
  201. package/dist/core-web/src/lib/define-widget.js +14 -0
  202. package/dist/core-web/src/lib/define-widget.js.map +1 -0
  203. package/dist/core-web/src/lib/drag.d.ts +20 -0
  204. package/dist/core-web/src/lib/drag.d.ts.map +1 -0
  205. package/dist/core-web/src/lib/drag.js +33 -0
  206. package/dist/core-web/src/lib/drag.js.map +1 -0
  207. package/dist/core-web/src/lib/supabase.d.ts +2 -0
  208. package/dist/core-web/src/lib/supabase.d.ts.map +1 -0
  209. package/dist/core-web/src/lib/supabase.js +5 -0
  210. package/dist/core-web/src/lib/supabase.js.map +1 -0
  211. package/dist/core-web/src/lib/utils.d.ts +3 -0
  212. package/dist/core-web/src/lib/utils.d.ts.map +1 -0
  213. package/dist/core-web/src/lib/utils.js +6 -0
  214. package/dist/core-web/src/lib/utils.js.map +1 -0
  215. package/dist/core-web/src/lib/widgetCache.d.ts +18 -0
  216. package/dist/core-web/src/lib/widgetCache.d.ts.map +1 -0
  217. package/dist/core-web/src/lib/widgetCache.js +28 -0
  218. package/dist/core-web/src/lib/widgetCache.js.map +1 -0
  219. package/dist/mcp.d.ts +2 -0
  220. package/dist/mcp.d.ts.map +1 -0
  221. package/dist/mcp.js +2 -0
  222. package/dist/mcp.js.map +1 -0
  223. package/dist/shared.d.ts +2 -0
  224. package/dist/shared.d.ts.map +1 -0
  225. package/dist/shared.js +2 -0
  226. package/dist/shared.js.map +1 -0
  227. package/dist/web.d.ts +2 -0
  228. package/dist/web.d.ts.map +1 -0
  229. package/dist/web.js +2 -0
  230. package/dist/web.js.map +1 -0
  231. package/package.json +62 -0
@@ -0,0 +1,13 @@
1
+ import type { WidgetType } from './types';
2
+ interface CatalogEntry {
3
+ type: WidgetType;
4
+ title: string;
5
+ icon: string;
6
+ }
7
+ interface Props {
8
+ onAddWidget: (type: WidgetType) => void;
9
+ widgetCatalog: CatalogEntry[];
10
+ }
11
+ export declare function EmptyState({ onAddWidget, widgetCatalog }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/EmptyState.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,KAAK;IACb,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACvC,aAAa,EAAE,YAAY,EAAE,CAAA;CAC9B;AAED,wBAAgB,UAAU,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,KAAK,2CAiB/D"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PlusIcon } from 'lucide-react';
3
+ import { Button } from '../ui/button';
4
+ export function EmptyState({ onAddWidget, widgetCatalog }) {
5
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center h-[calc(100%-40px)] text-center px-4", children: [_jsx("div", { className: "w-12 h-12 rounded-xl border-2 border-dashed border-border flex items-center justify-center mb-3", children: _jsx(PlusIcon, { className: "w-5 h-5 text-muted-foreground/30" }) }), _jsx("p", { className: "text-sm text-muted-foreground/60 mb-1", children: "Shell vacio" }), _jsx("p", { className: "text-xs text-muted-foreground/30 mb-4", children: "Agrega widgets para ver tus datos." }), _jsx("div", { className: "flex flex-wrap gap-1.5 justify-center", children: widgetCatalog.map(w => (_jsxs(Button, { variant: "outline", size: "sm", className: "h-7 text-xs gap-1.5", onClick: () => onAddWidget(w.type), children: [_jsx("span", { children: w.icon }), " ", w.title] }, w.type))) })] }));
6
+ }
7
+ //# sourceMappingURL=EmptyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.js","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/EmptyState.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAcrC,MAAM,UAAU,UAAU,CAAC,EAAE,WAAW,EAAE,aAAa,EAAS;IAC9D,OAAO,CACL,eAAK,SAAS,EAAC,gFAAgF,aAC7F,cAAK,SAAS,EAAC,iGAAiG,YAC9G,KAAC,QAAQ,IAAC,SAAS,EAAC,kCAAkC,GAAG,GACrD,EACN,YAAG,SAAS,EAAC,uCAAuC,4BAAgB,EACpE,YAAG,SAAS,EAAC,uCAAuC,mDAAuC,EAC3F,cAAK,SAAS,EAAC,uCAAuC,YACnD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACtB,MAAC,MAAM,IAAc,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aACjH,yBAAO,CAAC,CAAC,IAAI,GAAQ,OAAE,CAAC,CAAC,KAAK,KADnB,CAAC,CAAC,IAAI,CAEV,CACV,CAAC,GACE,IACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { WidgetInstance } from './types';
2
+ interface Props {
3
+ spec: any;
4
+ title?: string;
5
+ widgets: WidgetInstance[];
6
+ onDismiss?: () => void;
7
+ onSendToChat: (msg: string) => void;
8
+ }
9
+ /**
10
+ * Agent-generated focused view — replaces the normal widget grid while active.
11
+ * Shows a minimized strip of the original widgets for context so the user can
12
+ * see they're in a temporary view and not lost their layout.
13
+ */
14
+ export declare function FocusView({ spec, title, widgets, onDismiss, onSendToChat }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=FocusView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocusView.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/FocusView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,UAAU,KAAK;IACb,IAAI,EAAE,GAAG,CAAA;IACT,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,KAAK,2CAqCjF"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { XIcon, SparklesIcon } from 'lucide-react';
3
+ import { Generative } from '../widgets/agent/Generative';
4
+ /**
5
+ * Agent-generated focused view — replaces the normal widget grid while active.
6
+ * Shows a minimized strip of the original widgets for context so the user can
7
+ * see they're in a temporary view and not lost their layout.
8
+ */
9
+ export function FocusView({ spec, title, widgets, onDismiss, onSendToChat }) {
10
+ return (_jsxs("div", { className: "p-2", children: [_jsxs("div", { className: "flex items-center gap-1.5 mb-2 overflow-x-auto scrollbar-thin pb-1", children: [_jsx("span", { className: "text-[10px] text-muted-foreground/60 flex-shrink-0", children: "Widgets:" }), widgets.map(w => (_jsx("span", { className: "flex-shrink-0 text-[10px] px-2 py-0.5 rounded-full border border-border/60 bg-card text-muted-foreground", children: w.title }, w.id)))] }), _jsxs("div", { className: "bg-card border border-primary/30 rounded-lg overflow-hidden flex flex-col shadow-lg shadow-primary/5", children: [_jsxs("div", { className: "flex items-center justify-between px-3 py-1.5 border-b border-border/50 bg-gradient-to-r from-primary/5 to-transparent", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(SparklesIcon, { className: "w-3 h-3 text-primary" }), _jsx("span", { className: "text-sm font-medium", children: title || 'Vista generada' })] }), _jsx("button", { onClick: onDismiss, className: "p-1 -m-1 text-muted-foreground/40 hover:text-foreground transition-colors", "aria-label": "Cerrar vista", children: _jsx(XIcon, { className: "w-4 h-4" }) })] }), _jsx("div", { className: "flex-1 overflow-y-auto scrollbar-thin p-3", children: _jsx(Generative, { spec: spec, onSendToChat: onSendToChat }) })] })] }));
11
+ }
12
+ //# sourceMappingURL=FocusView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocusView.js","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/FocusView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAWxD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAS;IAChF,OAAO,CACL,eAAK,SAAS,EAAC,KAAK,aAElB,eAAK,SAAS,EAAC,oEAAoE,aACjF,eAAM,SAAS,EAAC,oDAAoD,yBAAgB,EACnF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAChB,eAEE,SAAS,EAAC,0GAA0G,YAEnH,CAAC,CAAC,KAAK,IAHH,CAAC,CAAC,EAAE,CAIJ,CACR,CAAC,IACE,EAGN,eAAK,SAAS,EAAC,sGAAsG,aACnH,eAAK,SAAS,EAAC,wHAAwH,aACrI,eAAK,SAAS,EAAC,2BAA2B,aACxC,KAAC,YAAY,IAAC,SAAS,EAAC,sBAAsB,GAAG,EACjD,eAAM,SAAS,EAAC,qBAAqB,YAAE,KAAK,IAAI,gBAAgB,GAAQ,IACpE,EACN,iBACE,OAAO,EAAE,SAAS,EAClB,SAAS,EAAC,2EAA2E,gBAC1E,cAAc,YAEzB,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,GAAG,GACtB,IACL,EACN,cAAK,SAAS,EAAC,2CAA2C,YACxD,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI,GAClD,IACF,IACF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ActiveEntity, WidgetType } from './types';
3
+ interface CatalogEntry {
4
+ type: WidgetType;
5
+ title: string;
6
+ icon: string;
7
+ }
8
+ interface Props {
9
+ widgetCount: number;
10
+ cockpitMode: boolean;
11
+ activeEntity: ActiveEntity | null | undefined;
12
+ onDeactivateEntity: (() => void) | undefined;
13
+ onReset: () => void;
14
+ onAddWidget: (type: WidgetType) => void;
15
+ widgetCatalog: CatalogEntry[];
16
+ onOpenSettings?: () => void;
17
+ editingLayout?: boolean;
18
+ onToggleEditLayout?: () => void;
19
+ openEntities?: ActiveEntity[];
20
+ onSelectEntity?: (e: ActiveEntity) => void;
21
+ onCloseTab?: (e: ActiveEntity) => void;
22
+ role?: string | null;
23
+ companies?: Array<{
24
+ id: string;
25
+ name: string;
26
+ }>;
27
+ effectiveCompanyId?: string;
28
+ setCompanyId?: (id: string) => void;
29
+ onSignOut?: () => void;
30
+ userEmail?: string;
31
+ rightActions?: ReactNode;
32
+ }
33
+ export declare function Toolbar({ widgetCount, cockpitMode, activeEntity, onDeactivateEntity, onReset, onAddWidget, widgetCatalog, onOpenSettings, editingLayout, onToggleEditLayout, openEntities, onSelectEntity, onCloseTab, role, companies, effectiveCompanyId, setCompanyId, onSignOut, userEmail, rightActions, }: Props): import("react/jsx-runtime").JSX.Element;
34
+ export {};
35
+ //# sourceMappingURL=Toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK7D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEvD,UAAU,YAAY;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,KAAK;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAA;IAC7C,kBAAkB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IACvC,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAA;IAC7B,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,SAAS,CAAA;CACzB;AAED,wBAAgB,OAAO,CAAC,EACtB,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,EAChF,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAChE,YAAY,EAAE,cAAc,EAAE,UAAU,EACxC,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EACvE,YAAY,GACb,EAAE,KAAK,2CA8KP"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { useMountEffect } from '../../hooks/useMountEffect';
4
+ import { Button } from '../ui/button';
5
+ import { PlusIcon, RotateCcwIcon, SunIcon, MoonIcon, MonitorIcon, UserIcon, LogOutIcon, Building2Icon, ChevronDownIcon, CheckIcon, XIcon, HomeIcon, SettingsIcon, LayoutGridIcon } from 'lucide-react';
6
+ import { useTheme } from '../../hooks/useTheme';
7
+ export function Toolbar({ widgetCount, cockpitMode, activeEntity, onDeactivateEntity, onReset, onAddWidget, widgetCatalog, onOpenSettings, editingLayout, onToggleEditLayout, openEntities, onSelectEntity, onCloseTab, role, companies, effectiveCompanyId, setCompanyId, onSignOut, userEmail, rightActions, }) {
8
+ const [openDropdown, setOpenDropdown] = useState(null);
9
+ const showCatalog = openDropdown === 'catalog';
10
+ const showProfile = openDropdown === 'profile';
11
+ const showCompany = openDropdown === 'company';
12
+ const toggleDropdown = (d) => setOpenDropdown(prev => prev === d ? null : d);
13
+ useMountEffect(() => {
14
+ const handler = (e) => {
15
+ if (e.key === 'Escape')
16
+ setOpenDropdown(null);
17
+ };
18
+ document.addEventListener('keydown', handler);
19
+ return () => document.removeEventListener('keydown', handler);
20
+ });
21
+ const currentCompany = companies?.find(c => c.id === effectiveCompanyId);
22
+ return (_jsxs("div", { className: "sticky top-0 z-20 bg-background/80 backdrop-blur border-b border-border px-3 py-1.5 flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-1 min-w-0 flex-1", children: [_jsx("button", { onClick: onDeactivateEntity, className: `p-1.5 rounded-md transition-colors shrink-0 ${!cockpitMode ? 'bg-accent text-foreground' : 'text-muted-foreground hover:text-foreground hover:bg-accent'}`, "aria-label": "Inicio", title: "Inicio", children: _jsx(HomeIcon, { className: "w-3.5 h-3.5" }) }), openEntities && openEntities.length > 0 ? (_jsx("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-thin", children: openEntities.map(e => {
23
+ const isActive = !!(cockpitMode && activeEntity && activeEntity.type === e.type && activeEntity.id === e.id);
24
+ return (_jsxs("button", { role: "tab", "aria-selected": isActive, className: `group flex items-center gap-1.5 pl-2 pr-1 py-1 rounded-md border text-[11px] cursor-pointer transition-colors shrink-0 max-w-[200px] ${isActive
25
+ ? 'bg-primary/10 border-primary/40 text-foreground'
26
+ : 'bg-background border-border text-muted-foreground hover:text-foreground hover:bg-accent/50'}`, onClick: () => onSelectEntity?.(e), children: [_jsx("div", { className: `w-1.5 h-1.5 rounded-full shrink-0 ${isActive ? 'bg-primary animate-pulse' : 'bg-muted-foreground/40'}` }), _jsx("span", { className: "truncate", children: e.label }), _jsx("span", { role: "button", tabIndex: 0, onClick: (ev) => { ev.stopPropagation(); onCloseTab?.(e); }, onKeyDown: (ev) => { if (ev.key === 'Enter' || ev.key === ' ') {
27
+ ev.stopPropagation();
28
+ onCloseTab?.(e);
29
+ } }, className: `p-0.5 rounded-full hover:text-foreground hover:bg-accent shrink-0 transition-opacity ${isActive ? 'text-muted-foreground/60' : 'text-muted-foreground/50 opacity-0 group-hover:opacity-100'}`, "aria-label": `Close ${e.label}`, children: _jsx(XIcon, { className: "w-3 h-3" }) })] }, `${e.type}-${e.id}`));
30
+ }) })) : (_jsxs("span", { className: "text-xs text-muted-foreground pl-1", children: [widgetCount, " widgets"] }))] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsxs(Button, { variant: "ghost", size: "sm", className: "h-7 text-xs gap-1", onClick: onReset, children: [_jsx(RotateCcwIcon, { className: "w-3 h-3" }), " Reset"] }), onToggleEditLayout && !cockpitMode && (_jsx(Button, { variant: editingLayout ? 'default' : 'ghost', size: "sm", className: `h-7 text-xs gap-1 ${editingLayout ? 'bg-primary text-primary-foreground' : ''}`, onClick: onToggleEditLayout, children: editingLayout ? _jsxs(_Fragment, { children: [_jsx(CheckIcon, { className: "w-3 h-3" }), " Listo"] }) : _jsxs(_Fragment, { children: [_jsx(LayoutGridIcon, { className: "w-3 h-3" }), " Editar"] }) })), role === 'admin' && companies && companies.length > 1 && setCompanyId && (_jsxs("div", { className: "relative", children: [_jsxs(Button, { variant: "ghost", size: "sm", className: "h-7 text-xs gap-1.5 max-w-[180px]", onClick: () => toggleDropdown('company'), children: [_jsx(Building2Icon, { className: "w-3 h-3 shrink-0" }), _jsx("span", { className: "truncate", children: currentCompany?.name || 'Empresa' }), _jsx(ChevronDownIcon, { className: "w-3 h-3 shrink-0 opacity-60" })] }), showCompany && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-20", onClick: () => setOpenDropdown(null) }), _jsxs("div", { className: "absolute right-0 top-8 bg-card border border-border rounded-lg shadow-lg p-1 z-30 w-60 max-h-80 overflow-y-auto scrollbar-thin", children: [_jsx("div", { className: "px-2 py-1 text-[10px] uppercase tracking-wide text-muted-foreground/60", children: "Empresas" }), companies.map(c => {
31
+ const active = c.id === effectiveCompanyId;
32
+ return (_jsxs("button", { onClick: () => { setCompanyId(c.id); setOpenDropdown(null); }, className: `w-full text-left px-2 py-1.5 text-sm rounded hover:bg-accent transition-colors flex items-center gap-2 ${active ? 'bg-accent/50' : ''}`, children: [_jsx(Building2Icon, { className: "w-3.5 h-3.5 shrink-0 text-muted-foreground" }), _jsx("span", { className: "flex-1 truncate", children: c.name }), active && _jsx(CheckIcon, { className: "w-3.5 h-3.5 text-primary shrink-0" })] }, c.id));
33
+ })] })] }))] })), rightActions, _jsxs("div", { className: "relative", children: [_jsxs(Button, { variant: "ghost", size: "sm", className: "h-7 text-xs gap-1", onClick: () => toggleDropdown('catalog'), children: [_jsx(PlusIcon, { className: "w-3 h-3" }), " Agregar"] }), showCatalog && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-20", onClick: () => setOpenDropdown(null) }), _jsx("div", { className: "absolute right-0 top-8 bg-card border border-border rounded-lg shadow-lg p-1 z-30 w-40", children: widgetCatalog.map(w => (_jsxs("button", { onClick: () => { onAddWidget(w.type); setOpenDropdown(null); }, className: "w-full text-left px-3 py-1.5 text-sm rounded hover:bg-accent transition-colors flex items-center gap-2", children: [_jsx("span", { children: w.icon }), " ", w.title] }, w.type))) })] }))] }), onSignOut && (_jsxs("div", { className: "relative ml-1", children: [_jsx(Button, { variant: "ghost", size: "sm", className: "h-7 w-7 p-0", onClick: () => toggleDropdown('profile'), "aria-label": "Perfil", children: _jsx(UserIcon, { className: "w-3.5 h-3.5" }) }), showProfile && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-20", onClick: () => setOpenDropdown(null) }), _jsxs("div", { className: "absolute right-0 top-8 bg-card border border-border rounded-lg shadow-lg p-1 z-30 w-48", children: [userEmail && (_jsx("div", { className: "px-3 py-1.5 text-[11px] text-muted-foreground truncate border-b border-border/50 mb-1", children: userEmail })), onOpenSettings && (_jsxs("button", { onClick: () => { setOpenDropdown(null); onOpenSettings(); }, className: "w-full text-left px-3 py-1.5 text-sm rounded hover:bg-accent transition-colors flex items-center gap-2", children: [_jsx(SettingsIcon, { className: "w-3.5 h-3.5" }), " Configuracion"] })), _jsx(ThemeToggleRow, {}), _jsx("div", { className: "border-t border-border/50 mt-1 pt-1", children: _jsxs("button", { onClick: () => { setOpenDropdown(null); onSignOut(); }, className: "w-full text-left px-3 py-1.5 text-sm rounded hover:bg-accent transition-colors flex items-center gap-2", children: [_jsx(LogOutIcon, { className: "w-3.5 h-3.5" }), " Salir"] }) })] })] }))] }))] })] }));
34
+ }
35
+ function ThemeToggleRow() {
36
+ const { theme, setTheme } = useTheme();
37
+ const next = { light: 'dark', dark: 'system', system: 'light' };
38
+ const Icon = theme === 'dark' ? MoonIcon : theme === 'light' ? SunIcon : MonitorIcon;
39
+ const label = theme === 'dark' ? 'Oscuro' : theme === 'light' ? 'Claro' : 'Auto';
40
+ return (_jsxs("button", { onClick: () => setTheme(next[theme]), className: "w-full text-left px-3 py-1.5 text-sm rounded hover:bg-accent transition-colors flex items-center gap-2", children: [_jsx(Icon, { className: "w-3.5 h-3.5" }), " Tema: ", label] }));
41
+ }
42
+ //# sourceMappingURL=Toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/Toolbar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { WidgetInstance } from './types';
2
+ export declare function loadShellState(): {
3
+ widgets: WidgetInstance[];
4
+ layouts: any;
5
+ } | null;
6
+ export declare function saveShellState(widgets: WidgetInstance[], layouts: any): void;
7
+ export declare function clearShellState(): void;
8
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAKnF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,GAAG,QAIrE;AAED,wBAAgB,eAAe,SAE9B"}
@@ -0,0 +1,20 @@
1
+ const KEY = 'proto-shell';
2
+ export function loadShellState() {
3
+ try {
4
+ const raw = localStorage.getItem(KEY);
5
+ return raw ? JSON.parse(raw) : null;
6
+ }
7
+ catch {
8
+ return null;
9
+ }
10
+ }
11
+ export function saveShellState(widgets, layouts) {
12
+ try {
13
+ localStorage.setItem(KEY, JSON.stringify({ widgets, layouts }));
14
+ }
15
+ catch { }
16
+ }
17
+ export function clearShellState() {
18
+ localStorage.removeItem(KEY);
19
+ }
20
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/persistence.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,aAAa,CAAA;AAEzB,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACrC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAyB,EAAE,OAAY;IACpE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IACjE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type WidgetType = string;
2
+ export interface WidgetInstance {
3
+ id: string;
4
+ type: WidgetType;
5
+ title: string;
6
+ props?: Record<string, any>;
7
+ }
8
+ export interface ActiveEntity {
9
+ type: string;
10
+ id: string;
11
+ label: string;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../core-web/src/components/shell/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ declare const Avatar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
+ declare const AvatarFallback: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
4
+ export { Avatar, AvatarFallback };
5
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,MAAM,6GAIX,CAAA;AAGD,QAAA,MAAM,cAAc,6GAInB,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const Avatar = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('relative flex h-8 w-8 shrink-0 overflow-hidden rounded-full', className), ...props })));
5
+ Avatar.displayName = 'Avatar';
6
+ const AvatarFallback = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props })));
7
+ AvatarFallback.displayName = 'AvatarFallback';
8
+ export { Avatar, AvatarFallback };
9
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,6DAA6D,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACtH,CACF,CAAA;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAE7B,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,sEAAsE,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAC/H,CACF,CAAA;AACD,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ declare const variantStyles: {
3
+ default: string;
4
+ secondary: string;
5
+ destructive: string;
6
+ outline: string;
7
+ };
8
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
9
+ variant?: keyof typeof variantStyles;
10
+ }
11
+ declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
12
+ export { Badge };
13
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,aAAa;;;;;CAKlB,CAAA;AAED,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IACvE,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAA;CACrC;AAED,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAWtE;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../lib/utils';
3
+ const variantStyles = {
4
+ default: 'bg-primary text-primary-foreground',
5
+ secondary: 'bg-secondary text-secondary-foreground',
6
+ destructive: 'bg-destructive/10 text-destructive',
7
+ outline: 'border border-border text-foreground',
8
+ };
9
+ function Badge({ className, variant = 'default', ...props }) {
10
+ return (_jsx("span", { className: cn('inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium', variantStyles[variant], className), ...props }));
11
+ }
12
+ export { Badge };
13
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/badge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,oCAAoC;IAC7C,SAAS,EAAE,wCAAwC;IACnD,WAAW,EAAE,oCAAoC;IACjD,OAAO,EAAE,sCAAsC;CAChD,CAAA;AAMD,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,KAAK,EAAc;IACrE,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,uEAAuE,EACvE,aAAa,CAAC,OAAO,CAAC,EACtB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ declare const variantStyles: {
3
+ default: string;
4
+ destructive: string;
5
+ outline: string;
6
+ secondary: string;
7
+ ghost: string;
8
+ link: string;
9
+ };
10
+ declare const sizeStyles: {
11
+ default: string;
12
+ sm: string;
13
+ lg: string;
14
+ icon: string;
15
+ };
16
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
17
+ variant?: keyof typeof variantStyles;
18
+ size?: keyof typeof sizeStyles;
19
+ }
20
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
21
+ export { Button };
22
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,aAAa;;;;;;;CAOlB,CAAA;AAED,QAAA,MAAM,UAAU;;;;;CAKf,CAAA;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAChF,OAAO,CAAC,EAAE,MAAM,OAAO,aAAa,CAAA;IACpC,IAAI,CAAC,EAAE,MAAM,OAAO,UAAU,CAAA;CAC/B;AAED,QAAA,MAAM,MAAM,uFAaX,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const variantStyles = {
5
+ default: 'bg-primary text-primary-foreground hover:bg-primary/90',
6
+ destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',
7
+ outline: 'border border-border bg-background hover:bg-accent hover:text-accent-foreground',
8
+ secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
9
+ ghost: 'hover:bg-accent hover:text-accent-foreground',
10
+ link: 'text-primary underline-offset-4 hover:underline',
11
+ };
12
+ const sizeStyles = {
13
+ default: 'h-9 px-4 py-2',
14
+ sm: 'h-8 rounded-md px-3 text-xs',
15
+ lg: 'h-11 rounded-md px-8',
16
+ icon: 'h-9 w-9',
17
+ };
18
+ const Button = React.forwardRef(({ className, variant = 'default', size = 'default', ...props }, ref) => (_jsx("button", { className: cn('inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:w-4 [&_svg]:h-4', variantStyles[variant], sizeStyles[size], className), ref: ref, ...props })));
19
+ Button.displayName = 'Button';
20
+ export { Button };
21
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/button.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,wDAAwD;IACjE,WAAW,EAAE,oEAAoE;IACjF,OAAO,EAAE,iFAAiF;IAC1F,SAAS,EAAE,8DAA8D;IACzE,KAAK,EAAE,8CAA8C;IACrD,IAAI,EAAE,iDAAiD;CACxD,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,eAAe;IACxB,EAAE,EAAE,6BAA6B;IACjC,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,SAAS;CAChB,CAAA;AAOD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACvE,iBACE,SAAS,EAAE,EAAE,CACX,2OAA2O,EAC3O,aAAa,CAAC,OAAO,CAAC,EACtB,UAAU,CAAC,IAAI,CAAC,EAChB,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
+ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
6
+ export { Card, CardHeader, CardContent, CardFooter };
7
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,IAAI,6GAIT,CAAA;AAGD,QAAA,MAAM,UAAU,6GAIf,CAAA;AAGD,QAAA,MAAM,WAAW,6GAIhB,CAAA;AAGD,QAAA,MAAM,UAAU,6GAIf,CAAA;AAGD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const Card = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('rounded-xl border bg-card text-card-foreground', className), ...props })));
5
+ Card.displayName = 'Card';
6
+ const CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex flex-col space-y-1.5 p-4', className), ...props })));
7
+ CardHeader.displayName = 'CardHeader';
8
+ const CardContent = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('p-4 pt-0', className), ...props })));
9
+ CardContent.displayName = 'CardContent';
10
+ const CardFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex items-center p-4 pt-0', className), ...props })));
11
+ CardFooter.displayName = 'CardFooter';
12
+ export { Card, CardHeader, CardContent, CardFooter };
13
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACzG,CACF,CAAA;AACD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;AAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACjC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACxF,CACF,CAAA;AACD,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAClC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACnE,CACF,CAAA;AACD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACjC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CACrF,CACF,CAAA;AACD,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,20 @@
1
+ interface InlineEditProps {
2
+ value: string | null | undefined;
3
+ onSave: (next: string) => Promise<void> | void;
4
+ placeholder?: string;
5
+ className?: string;
6
+ inputClassName?: string;
7
+ /** Render the display value when not editing. Defaults to plain text. */
8
+ display?: (value: string) => React.ReactNode;
9
+ /** Allow empty string to clear the field. Defaults to true. */
10
+ allowEmpty?: boolean;
11
+ /** Input type (text, date, number). Defaults to text. */
12
+ type?: 'text' | 'date' | 'number';
13
+ }
14
+ /**
15
+ * Hover to reveal a pencil icon, click to edit inline. Enter or check icon
16
+ * saves, Escape or X discards. Keeps display markup flexible via `display`.
17
+ */
18
+ export declare function InlineEdit({ value, onSave, placeholder, className, inputClassName, display, allowEmpty, type, }: InlineEditProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=inline-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-edit.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/inline-edit.tsx"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IAC5C,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;CAClC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,MAAM,EACN,WAAiB,EACjB,SAAc,EACd,cAAmB,EACnB,OAAO,EACP,UAAiB,EACjB,IAAa,GACd,EAAE,eAAe,2CAyFjB"}
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useRef, useState } from 'react';
3
+ import { Pencil, Check, X } from 'lucide-react';
4
+ /**
5
+ * Hover to reveal a pencil icon, click to edit inline. Enter or check icon
6
+ * saves, Escape or X discards. Keeps display markup flexible via `display`.
7
+ */
8
+ export function InlineEdit({ value, onSave, placeholder = '—', className = '', inputClassName = '', display, allowEmpty = true, type = 'text', }) {
9
+ const [editing, setEditing] = useState(false);
10
+ const [draft, setDraft] = useState(value ?? '');
11
+ const [saving, setSaving] = useState(false);
12
+ const inputRef = useRef(null);
13
+ // Sync draft when value changes externally while not editing
14
+ const prevValueRef = useRef(value);
15
+ if (prevValueRef.current !== value) {
16
+ prevValueRef.current = value;
17
+ if (!editing)
18
+ setDraft(value ?? '');
19
+ }
20
+ // Callback ref: auto-focus and select when the input mounts (editing starts)
21
+ const inputCallbackRef = useCallback((node) => {
22
+ inputRef.current = node;
23
+ if (node) {
24
+ node.focus();
25
+ node.select();
26
+ }
27
+ }, []);
28
+ const commit = async () => {
29
+ const next = draft.trim();
30
+ if (!allowEmpty && next === '') {
31
+ setEditing(false);
32
+ return;
33
+ }
34
+ if (next === (value ?? '')) {
35
+ setEditing(false);
36
+ return;
37
+ }
38
+ try {
39
+ setSaving(true);
40
+ await onSave(next);
41
+ setEditing(false);
42
+ }
43
+ finally {
44
+ setSaving(false);
45
+ }
46
+ };
47
+ const cancel = () => {
48
+ setDraft(value ?? '');
49
+ setEditing(false);
50
+ };
51
+ if (editing) {
52
+ return (_jsxs("span", { className: `inline-flex items-center gap-1 ${className}`, children: [_jsx("input", { ref: inputCallbackRef, type: type, value: draft, disabled: saving, onChange: (e) => setDraft(e.target.value), onKeyDown: (e) => {
53
+ if (e.key === 'Enter')
54
+ commit();
55
+ if (e.key === 'Escape')
56
+ cancel();
57
+ }, onBlur: commit, className: `bg-background border border-primary/50 rounded px-1.5 py-0.5 outline-none focus:border-primary ${inputClassName}` }), _jsx("button", { onMouseDown: (e) => { e.preventDefault(); commit(); }, className: "text-emerald-600 hover:text-emerald-500 shrink-0", disabled: saving, "aria-label": "Guardar", children: _jsx(Check, { className: "h-3 w-3" }) }), _jsx("button", { onMouseDown: (e) => { e.preventDefault(); cancel(); }, className: "text-muted-foreground hover:text-foreground shrink-0", disabled: saving, "aria-label": "Cancelar", children: _jsx(X, { className: "h-3 w-3" }) })] }));
58
+ }
59
+ const shown = value && value.trim() !== '' ? value : placeholder;
60
+ return (_jsxs("span", { className: `group inline-flex items-center gap-1 cursor-text ${className}`, onClick: () => setEditing(true), role: "button", tabIndex: 0, onKeyDown: (e) => { if (e.key === 'Enter')
61
+ setEditing(true); }, children: [_jsx("span", { className: "truncate", children: display && value ? display(value) : shown }), _jsx(Pencil, { className: "h-3 w-3 opacity-0 group-hover:opacity-60 transition-opacity shrink-0" })] }));
62
+ }
63
+ //# sourceMappingURL=inline-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-edit.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/inline-edit.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ declare const Input: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & React.RefAttributes<HTMLInputElement>>;
3
+ export { Input };
4
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,KAAK,sHAYV,CAAA;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const Input = React.forwardRef(({ className, type, ...props }, ref) => (_jsx("input", { type: type, className: cn('flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50', className), ref: ref, ...props })));
5
+ Input.displayName = 'Input';
6
+ export { Input };
7
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACtC,gBACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACX,6PAA6P,EAC7P,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ declare const ScrollArea: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
+ export { ScrollArea };
4
+ //# sourceMappingURL=scroll-area.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/scroll-area.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,UAAU,6GAMf,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('relative overflow-auto', className), ...props, children: children })));
5
+ ScrollArea.displayName = 'ScrollArea';
6
+ export { ScrollArea };
7
+ //# sourceMappingURL=scroll-area.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/scroll-area.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACjC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,KAAM,KAAK,YACzE,QAAQ,GACL,CACP,CACF,CAAA;AACD,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ orientation?: 'horizontal' | 'vertical';
4
+ }
5
+ declare const Separator: React.ForwardRefExoticComponent<SeparatorProps & React.RefAttributes<HTMLDivElement>>;
6
+ export { Separator };
7
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnE,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;CACxC;AAED,QAAA,MAAM,SAAS,uFAad,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '../../lib/utils';
4
+ const Separator = React.forwardRef(({ className, orientation = 'horizontal', ...props }, ref) => (_jsx("div", { ref: ref, role: "separator", className: cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px', className), ...props })));
5
+ Separator.displayName = 'Separator';
6
+ export { Separator };
7
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.js","sourceRoot":"","sources":["../../../../../core-web/src/components/ui/separator.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAMpC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,WAAW,GAAG,YAAY,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5D,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,WAAW,EAChB,SAAS,EAAE,EAAE,CACX,oBAAoB,EACpB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAC5D,SAAS,CACV,KACG,KAAK,GACT,CACH,CACF,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,CAAA"}