@castlemilk/omega 0.1.3 → 0.1.5
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/cli.js +71 -15
- package/dist/server.js +418 -0
- package/dist/web/App.d.ts +3 -0
- package/dist/web/App.d.ts.map +1 -0
- package/dist/web/App.js +39 -0
- package/dist/web/App.js.map +1 -0
- package/dist/web/assets/index-BD8kY1aj.css +1 -0
- package/dist/web/assets/index-Dkm6k3Ip.js +40 -0
- package/dist/web/components/ProjectSidebar.d.ts +18 -0
- package/dist/web/components/ProjectSidebar.d.ts.map +1 -0
- package/dist/web/components/ProjectSidebar.js +16 -0
- package/dist/web/components/ProjectSidebar.js.map +1 -0
- package/dist/web/components/ProviderSettings.d.ts +16 -0
- package/dist/web/components/ProviderSettings.d.ts.map +1 -0
- package/dist/web/components/ProviderSettings.js +41 -0
- package/dist/web/components/ProviderSettings.js.map +1 -0
- package/dist/web/components/RouterPanel.d.ts +2 -0
- package/dist/web/components/RouterPanel.d.ts.map +1 -0
- package/dist/web/components/RouterPanel.js +31 -0
- package/dist/web/components/RouterPanel.js.map +1 -0
- package/dist/web/components/TaskBoard.d.ts +20 -0
- package/dist/web/components/TaskBoard.d.ts.map +1 -0
- package/dist/web/components/TaskBoard.js +60 -0
- package/dist/web/components/TaskBoard.js.map +1 -0
- package/dist/web/dist/assets/index-BD8kY1aj.css +1 -0
- package/dist/web/dist/assets/index-Dkm6k3Ip.js +40 -0
- package/dist/web/dist/index.html +13 -0
- package/dist/web/index.html +13 -0
- package/dist/web/lib/api.d.ts +30 -0
- package/dist/web/lib/api.d.ts.map +1 -0
- package/dist/web/lib/api.js +27 -0
- package/dist/web/lib/api.js.map +1 -0
- package/dist/web/main.d.ts +2 -0
- package/dist/web/main.d.ts.map +1 -0
- package/dist/web/main.js +7 -0
- package/dist/web/main.js.map +1 -0
- package/package.json +10 -4
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { api } from '../lib/api.js';
|
|
4
|
+
export function RouterPanel() {
|
|
5
|
+
const [form, setForm] = useState({ title: '', complexity: 'simple', tags: '' });
|
|
6
|
+
const [result, setResult] = useState(null);
|
|
7
|
+
const [error, setError] = useState('');
|
|
8
|
+
const [loading, setLoading] = useState(false);
|
|
9
|
+
async function handleSubmit(e) {
|
|
10
|
+
e.preventDefault();
|
|
11
|
+
setLoading(true);
|
|
12
|
+
setError('');
|
|
13
|
+
setResult(null);
|
|
14
|
+
try {
|
|
15
|
+
const data = await api.selectProvider({
|
|
16
|
+
title: form.title,
|
|
17
|
+
complexity: form.complexity,
|
|
18
|
+
tags: form.tags.split(',').map((t) => t.trim()).filter(Boolean),
|
|
19
|
+
});
|
|
20
|
+
setResult(data);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
setLoading(false);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return (_jsxs("div", { className: "p-4", children: [_jsx("h3", { className: "font-semibold text-sm mb-3", children: "Route preview" }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-2", children: [_jsx("input", { className: "w-full border rounded px-2 py-1 text-xs", placeholder: "Task title", value: form.title, onChange: (e) => setForm({ ...form, title: e.target.value }), required: true }), _jsxs("select", { className: "w-full border rounded px-2 py-1 text-xs", value: form.complexity, onChange: (e) => setForm({ ...form, complexity: e.target.value }), children: [_jsx("option", { value: "simple", children: "Simple" }), _jsx("option", { value: "medium", children: "Medium" }), _jsx("option", { value: "complex", children: "Complex" })] }), _jsx("input", { className: "w-full border rounded px-2 py-1 text-xs", placeholder: "Tags (comma separated)", value: form.tags, onChange: (e) => setForm({ ...form, tags: e.target.value }) }), _jsx("button", { type: "submit", disabled: loading, className: "w-full px-2 py-1 bg-purple-600 text-white rounded text-xs hover:bg-purple-700 disabled:opacity-50", children: loading ? 'Routing…' : 'Select provider' })] }), result && (_jsxs("div", { className: "mt-3 p-2 bg-purple-50 rounded text-xs", children: [_jsx("div", { className: "font-medium text-purple-800", children: "Selected" }), _jsxs("div", { children: [result.provider, " / ", result.model] })] })), error && _jsx("div", { className: "mt-3 text-xs text-red-600", children: error })] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=RouterPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterPanel.js","sourceRoot":"","sources":["../../src/components/RouterPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface Task {
|
|
2
|
+
id: string;
|
|
3
|
+
projectId: string;
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
status: string;
|
|
7
|
+
complexity: string;
|
|
8
|
+
tags?: string;
|
|
9
|
+
provider?: string | null;
|
|
10
|
+
model?: string | null;
|
|
11
|
+
result?: string | null;
|
|
12
|
+
error?: string | null;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
}
|
|
15
|
+
interface Props {
|
|
16
|
+
projectId?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function TaskBoard({ projectId }: Props): import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=TaskBoard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskBoard.d.ts","sourceRoot":"","sources":["../../src/components/TaskBoard.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,+BA4J7C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { api } from '../lib/api.js';
|
|
4
|
+
const statuses = ['todo', 'in_progress', 'done', 'failed'];
|
|
5
|
+
export function TaskBoard({ projectId }) {
|
|
6
|
+
const [tasks, setTasks] = useState([]);
|
|
7
|
+
const [loading, setLoading] = useState(false);
|
|
8
|
+
const [form, setForm] = useState({
|
|
9
|
+
title: '',
|
|
10
|
+
description: '',
|
|
11
|
+
complexity: 'simple',
|
|
12
|
+
tags: '',
|
|
13
|
+
});
|
|
14
|
+
async function load() {
|
|
15
|
+
if (!projectId)
|
|
16
|
+
return;
|
|
17
|
+
setLoading(true);
|
|
18
|
+
const data = await api.getTasks(projectId);
|
|
19
|
+
setTasks(data);
|
|
20
|
+
setLoading(false);
|
|
21
|
+
}
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
load();
|
|
24
|
+
}, [projectId]);
|
|
25
|
+
async function handleCreate(e) {
|
|
26
|
+
e.preventDefault();
|
|
27
|
+
if (!projectId)
|
|
28
|
+
return;
|
|
29
|
+
await api.createTask({
|
|
30
|
+
projectId,
|
|
31
|
+
title: form.title,
|
|
32
|
+
description: form.description,
|
|
33
|
+
complexity: form.complexity,
|
|
34
|
+
tags: form.tags.split(',').map((t) => t.trim()).filter(Boolean),
|
|
35
|
+
});
|
|
36
|
+
setForm({ title: '', description: '', complexity: 'simple', tags: '' });
|
|
37
|
+
await load();
|
|
38
|
+
}
|
|
39
|
+
async function handleRun(id) {
|
|
40
|
+
await api.runTask(id);
|
|
41
|
+
await load();
|
|
42
|
+
}
|
|
43
|
+
function tagsList(t) {
|
|
44
|
+
if (!t.tags)
|
|
45
|
+
return [];
|
|
46
|
+
try {
|
|
47
|
+
return JSON.parse(t.tags);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!projectId) {
|
|
54
|
+
return (_jsx("div", { className: "flex-1 flex items-center justify-center text-gray-400", children: "Select a project to view tasks" }));
|
|
55
|
+
}
|
|
56
|
+
return (_jsxs("main", { className: "flex-1 flex flex-col h-screen overflow-hidden", children: [_jsx("header", { className: "px-6 py-4 border-b border-gray-200 bg-white", children: _jsx("h2", { className: "text-xl font-semibold", children: "Tasks" }) }), _jsx("div", { className: "p-4 bg-gray-50 border-b border-gray-200", children: _jsxs("form", { onSubmit: handleCreate, className: "flex flex-wrap gap-2 items-end", children: [_jsx("input", { className: "border rounded px-3 py-1.5 text-sm flex-1 min-w-[200px]", placeholder: "Task title", value: form.title, onChange: (e) => setForm({ ...form, title: e.target.value }), required: true }), _jsx("input", { className: "border rounded px-3 py-1.5 text-sm flex-1 min-w-[200px]", placeholder: "Description", value: form.description, onChange: (e) => setForm({ ...form, description: e.target.value }) }), _jsxs("select", { className: "border rounded px-3 py-1.5 text-sm", value: form.complexity, onChange: (e) => setForm({ ...form, complexity: e.target.value }), children: [_jsx("option", { value: "simple", children: "Simple" }), _jsx("option", { value: "medium", children: "Medium" }), _jsx("option", { value: "complex", children: "Complex" })] }), _jsx("input", { className: "border rounded px-3 py-1.5 text-sm w-32", placeholder: "Tags", value: form.tags, onChange: (e) => setForm({ ...form, tags: e.target.value }) }), _jsx("button", { type: "submit", className: "px-4 py-1.5 bg-blue-600 text-white rounded text-sm hover:bg-blue-700", children: "Add task" })] }) }), _jsx("div", { className: "flex-1 overflow-x-auto p-4", children: loading ? (_jsx("div", { className: "text-sm text-gray-500", children: "Loading tasks\u2026" })) : (_jsx("div", { className: "grid grid-cols-4 gap-4 min-w-[800px]", children: statuses.map((status) => (_jsxs("div", { className: "bg-gray-100 rounded-lg p-3", children: [_jsx("h3", { className: "text-xs font-bold uppercase tracking-wide text-gray-500 mb-3", children: status.replace('_', ' ') }), _jsx("div", { className: "space-y-2", children: tasks
|
|
57
|
+
.filter((t) => t.status === status)
|
|
58
|
+
.map((t) => (_jsxs("div", { className: "bg-white rounded-md p-3 shadow-sm text-sm", children: [_jsx("div", { className: "font-medium mb-1", children: t.title }), t.description && (_jsx("div", { className: "text-gray-500 text-xs mb-2 line-clamp-2", children: t.description })), _jsxs("div", { className: "flex flex-wrap gap-1 mb-2", children: [_jsx("span", { className: "px-1.5 py-0.5 bg-gray-200 rounded text-xs", children: t.complexity }), tagsList(t).map((tag) => (_jsx("span", { className: "px-1.5 py-0.5 bg-blue-100 text-blue-700 rounded text-xs", children: tag }, tag)))] }), t.provider && (_jsxs("div", { className: "text-xs text-gray-400 mb-2", children: [t.provider, "/", t.model] })), t.error && _jsx("div", { className: "text-xs text-red-600 mb-2", children: t.error }), t.result && (_jsx("div", { className: "text-xs text-gray-700 bg-gray-50 p-2 rounded mb-2 max-h-32 overflow-auto", children: t.result })), status !== 'in_progress' && (_jsx("button", { onClick: () => handleRun(t.id), className: "w-full px-2 py-1 bg-green-600 text-white rounded text-xs hover:bg-green-700", children: "Run" }))] }, t.id))) })] }, status))) })) })] }));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=TaskBoard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskBoard.js","sourceRoot":"","sources":["../../src/components/TaskBoard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mt-3{margin-top:.75rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.flex{display:flex}.grid{display:grid}.h-screen{height:100vh}.max-h-32{max-height:8rem}.w-32{width:8rem}.w-72{width:18rem}.w-80{width:20rem}.w-full{width:100%}.w-screen{width:100vw}.min-w-\[200px\]{min-width:200px}.min-w-\[800px\]{min-width:800px}.flex-1{flex:1 1 0%}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-red-100{--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.025em}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}body{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-700:hover{--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}
|