@hot-updater/console 0.1.5 → 0.2.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.
- package/dist/index.cjs +1909 -2236
- package/dist/index.html +1 -1
- package/dist/index.js +1868 -2219
- package/dist/src/App.d.ts +2 -0
- package/dist/src/components/spash-screen.d.ts +1 -0
- package/dist/src/components/ui/button.d.ts +15 -0
- package/dist/src/components/ui/label.d.ts +3 -0
- package/dist/src/components/ui/navigation-menu.d.ts +35 -0
- package/dist/src/components/ui/pagination.d.ts +27 -0
- package/dist/src/components/ui/sheet.d.ts +26 -0
- package/dist/src/components/ui/sonner.d.ts +5 -0
- package/dist/src/components/ui/switch.d.ts +20 -0
- package/dist/src/components/ui/table.d.ts +10 -0
- package/dist/src/components/ui/text-field.d.ts +26 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/lib/api.d.ts +98 -0
- package/dist/src/lib/extract-timestamp-from-uuidv7.d.ts +1 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/routes/_components/columns.d.ts +3 -0
- package/dist/src/routes/_components/data-table.d.ts +9 -0
- package/dist/src/routes/_components/edit-bundle-sheet-content.d.ts +5 -0
- package/dist/src/routes/index.d.ts +1 -0
- package/dist/src-server/index.d.ts +112 -0
- package/dist/src-server/rpc.d.ts +112 -0
- package/dist/src-server/type.test.d.ts +1 -0
- package/dist/static/css/index.4ed6b07e.css +1 -0
- package/dist/static/js/742.e04944e6.js +5 -0
- package/dist/static/js/index.7055a4a0.js +1 -0
- package/package.json +8 -5
- package/dist/index.d.cts +0 -101
- package/dist/index.d.ts +0 -101
- package/dist/static/css/index.8b7116d7.css +0 -1
- package/dist/static/js/85.cfaeff33.js +0 -5
- package/dist/static/js/index.566f7a26.js +0 -1
- /package/dist/static/js/{85.cfaeff33.js.LICENSE.txt → 742.e04944e6.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SplashScreen: () => import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { JSX, ValidComponent } from "solid-js";
|
|
2
|
+
import * as ButtonPrimitive from "@kobalte/core/button";
|
|
3
|
+
import type { PolymorphicProps } from "@kobalte/core/polymorphic";
|
|
4
|
+
import type { VariantProps } from "class-variance-authority";
|
|
5
|
+
declare const buttonVariants: (props?: ({
|
|
6
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
7
|
+
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
8
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
9
|
+
type ButtonProps<T extends ValidComponent = "button"> = ButtonPrimitive.ButtonRootProps<T> & VariantProps<typeof buttonVariants> & {
|
|
10
|
+
class?: string | undefined;
|
|
11
|
+
children?: JSX.Element;
|
|
12
|
+
};
|
|
13
|
+
declare const Button: <T extends ValidComponent = "button">(props: PolymorphicProps<T, ButtonProps<T>>) => JSX.Element;
|
|
14
|
+
export type { ButtonProps };
|
|
15
|
+
export { Button, buttonVariants };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { JSX, ValidComponent } from "solid-js";
|
|
2
|
+
import type { PolymorphicProps } from "@kobalte/core";
|
|
3
|
+
import * as NavigationMenuPrimitive from "@kobalte/core/navigation-menu";
|
|
4
|
+
declare const NavigationMenuItem: typeof NavigationMenuPrimitive.Menu;
|
|
5
|
+
type NavigationMenuProps<T extends ValidComponent = "ul"> = NavigationMenuPrimitive.NavigationMenuRootProps<T> & {
|
|
6
|
+
class?: string | undefined;
|
|
7
|
+
children?: JSX.Element;
|
|
8
|
+
};
|
|
9
|
+
declare const NavigationMenu: <T extends ValidComponent = "ul">(props: PolymorphicProps<T, NavigationMenuProps<T>>) => JSX.Element;
|
|
10
|
+
type NavigationMenuTriggerProps<T extends ValidComponent = "button"> = NavigationMenuPrimitive.NavigationMenuTriggerProps<T> & {
|
|
11
|
+
class?: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
declare const NavigationMenuTrigger: <T extends ValidComponent = "button">(props: PolymorphicProps<T, NavigationMenuTriggerProps<T>>) => JSX.Element;
|
|
14
|
+
declare const NavigationMenuIcon: () => JSX.Element;
|
|
15
|
+
type NavigationMenuViewportProps<T extends ValidComponent = "li"> = NavigationMenuPrimitive.NavigationMenuViewportProps<T> & {
|
|
16
|
+
class?: string | undefined;
|
|
17
|
+
};
|
|
18
|
+
declare const NavigationMenuViewport: <T extends ValidComponent = "li">(props: PolymorphicProps<T, NavigationMenuViewportProps<T>>) => JSX.Element;
|
|
19
|
+
type NavigationMenuContentProps<T extends ValidComponent = "ul"> = NavigationMenuPrimitive.NavigationMenuContentProps<T> & {
|
|
20
|
+
class?: string | undefined;
|
|
21
|
+
};
|
|
22
|
+
declare const NavigationMenuContent: <T extends ValidComponent = "ul">(props: PolymorphicProps<T, NavigationMenuContentProps<T>>) => JSX.Element;
|
|
23
|
+
type NavigationMenuLinkProps<T extends ValidComponent = "a"> = NavigationMenuPrimitive.NavigationMenuItemProps<T> & {
|
|
24
|
+
class?: string | undefined;
|
|
25
|
+
};
|
|
26
|
+
declare const NavigationMenuLink: <T extends ValidComponent = "a">(props: PolymorphicProps<T, NavigationMenuLinkProps<T>>) => JSX.Element;
|
|
27
|
+
type NavigationMenuLabelProps<T extends ValidComponent = "div"> = NavigationMenuPrimitive.NavigationMenuItemLabelProps<T> & {
|
|
28
|
+
class?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
declare const NavigationMenuLabel: <T extends ValidComponent = "div">(props: PolymorphicProps<T, NavigationMenuLabelProps<T>>) => JSX.Element;
|
|
31
|
+
type NavigationMenuDescriptionProps<T extends ValidComponent = "div"> = NavigationMenuPrimitive.NavigationMenuItemDescriptionProps<T> & {
|
|
32
|
+
class?: string | undefined;
|
|
33
|
+
};
|
|
34
|
+
declare const NavigationMenuDescription: <T extends ValidComponent = "div">(props: PolymorphicProps<T, NavigationMenuDescriptionProps<T>>) => JSX.Element;
|
|
35
|
+
export { NavigationMenu, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuIcon, NavigationMenuViewport, NavigationMenuContent, NavigationMenuLink, NavigationMenuLabel, NavigationMenuDescription, };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { JSX, ValidComponent } from "solid-js";
|
|
2
|
+
import * as PaginationPrimitive from "@kobalte/core/pagination";
|
|
3
|
+
import type { PolymorphicProps } from "@kobalte/core/polymorphic";
|
|
4
|
+
declare const PaginationItems: typeof PaginationPrimitive.Items;
|
|
5
|
+
type PaginationRootProps<T extends ValidComponent = "nav"> = PaginationPrimitive.PaginationRootProps<T> & {
|
|
6
|
+
class?: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
declare const Pagination: <T extends ValidComponent = "nav">(props: PolymorphicProps<T, PaginationRootProps<T>>) => JSX.Element;
|
|
9
|
+
type PaginationItemProps<T extends ValidComponent = "button"> = PaginationPrimitive.PaginationItemProps<T> & {
|
|
10
|
+
class?: string | undefined;
|
|
11
|
+
};
|
|
12
|
+
declare const PaginationItem: <T extends ValidComponent = "button">(props: PolymorphicProps<T, PaginationItemProps<T>>) => JSX.Element;
|
|
13
|
+
type PaginationEllipsisProps<T extends ValidComponent = "div"> = PaginationPrimitive.PaginationEllipsisProps<T> & {
|
|
14
|
+
class?: string | undefined;
|
|
15
|
+
};
|
|
16
|
+
declare const PaginationEllipsis: <T extends ValidComponent = "div">(props: PolymorphicProps<T, PaginationEllipsisProps<T>>) => JSX.Element;
|
|
17
|
+
type PaginationPreviousProps<T extends ValidComponent = "button"> = PaginationPrimitive.PaginationPreviousProps<T> & {
|
|
18
|
+
class?: string | undefined;
|
|
19
|
+
children?: JSX.Element;
|
|
20
|
+
};
|
|
21
|
+
declare const PaginationPrevious: <T extends ValidComponent = "button">(props: PolymorphicProps<T, PaginationPreviousProps<T>>) => JSX.Element;
|
|
22
|
+
type PaginationNextProps<T extends ValidComponent = "button"> = PaginationPrimitive.PaginationNextProps<T> & {
|
|
23
|
+
class?: string | undefined;
|
|
24
|
+
children?: JSX.Element;
|
|
25
|
+
};
|
|
26
|
+
declare const PaginationNext: <T extends ValidComponent = "button">(props: PolymorphicProps<T, PaginationNextProps<T>>) => JSX.Element;
|
|
27
|
+
export { Pagination, PaginationItems, PaginationItem, PaginationEllipsis, PaginationPrevious, PaginationNext, };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Component, ComponentProps, JSX, ValidComponent } from "solid-js";
|
|
2
|
+
import * as SheetPrimitive from "@kobalte/core/dialog";
|
|
3
|
+
import type { PolymorphicProps } from "@kobalte/core/polymorphic";
|
|
4
|
+
import { type VariantProps } from "class-variance-authority";
|
|
5
|
+
declare const Sheet: typeof SheetPrimitive.Root;
|
|
6
|
+
declare const SheetTrigger: typeof SheetPrimitive.Trigger;
|
|
7
|
+
declare const SheetClose: typeof SheetPrimitive.CloseButton;
|
|
8
|
+
declare const sheetVariants: (props?: ({
|
|
9
|
+
position?: "top" | "bottom" | "left" | "right" | null | undefined;
|
|
10
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
11
|
+
type DialogContentProps<T extends ValidComponent = "div"> = SheetPrimitive.DialogContentProps<T> & VariantProps<typeof sheetVariants> & {
|
|
12
|
+
class?: string | undefined;
|
|
13
|
+
children?: JSX.Element;
|
|
14
|
+
};
|
|
15
|
+
declare const SheetContent: <T extends ValidComponent = "div">(props: PolymorphicProps<T, DialogContentProps<T>>) => JSX.Element;
|
|
16
|
+
declare const SheetHeader: Component<ComponentProps<"div">>;
|
|
17
|
+
declare const SheetFooter: Component<ComponentProps<"div">>;
|
|
18
|
+
type DialogTitleProps<T extends ValidComponent = "h2"> = SheetPrimitive.DialogTitleProps<T> & {
|
|
19
|
+
class?: string | undefined;
|
|
20
|
+
};
|
|
21
|
+
declare const SheetTitle: <T extends ValidComponent = "h2">(props: PolymorphicProps<T, DialogTitleProps<T>>) => JSX.Element;
|
|
22
|
+
type DialogDescriptionProps<T extends ValidComponent = "p"> = SheetPrimitive.DialogDescriptionProps<T> & {
|
|
23
|
+
class?: string | undefined;
|
|
24
|
+
};
|
|
25
|
+
declare const SheetDescription: <T extends ValidComponent = "p">(props: PolymorphicProps<T, DialogDescriptionProps<T>>) => JSX.Element;
|
|
26
|
+
export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { JSX, ValidComponent } from "solid-js";
|
|
2
|
+
import type { PolymorphicProps } from "@kobalte/core";
|
|
3
|
+
import * as SwitchPrimitive from "@kobalte/core/switch";
|
|
4
|
+
declare const Switch: typeof SwitchPrimitive.Root;
|
|
5
|
+
declare const SwitchDescription: typeof SwitchPrimitive.Description;
|
|
6
|
+
declare const SwitchErrorMessage: typeof SwitchPrimitive.ErrorMessage;
|
|
7
|
+
type SwitchControlProps = SwitchPrimitive.SwitchControlProps & {
|
|
8
|
+
class?: string | undefined;
|
|
9
|
+
children?: JSX.Element;
|
|
10
|
+
};
|
|
11
|
+
declare const SwitchControl: <T extends ValidComponent = "input">(props: PolymorphicProps<T, SwitchControlProps>) => JSX.Element;
|
|
12
|
+
type SwitchThumbProps = SwitchPrimitive.SwitchThumbProps & {
|
|
13
|
+
class?: string | undefined;
|
|
14
|
+
};
|
|
15
|
+
declare const SwitchThumb: <T extends ValidComponent = "div">(props: PolymorphicProps<T, SwitchThumbProps>) => JSX.Element;
|
|
16
|
+
type SwitchLabelProps = SwitchPrimitive.SwitchLabelProps & {
|
|
17
|
+
class?: string | undefined;
|
|
18
|
+
};
|
|
19
|
+
declare const SwitchLabel: <T extends ValidComponent = "label">(props: PolymorphicProps<T, SwitchLabelProps>) => JSX.Element;
|
|
20
|
+
export { Switch, SwitchControl, SwitchThumb, SwitchLabel, SwitchDescription, SwitchErrorMessage, };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Component, ComponentProps } from "solid-js";
|
|
2
|
+
declare const Table: Component<ComponentProps<"table">>;
|
|
3
|
+
declare const TableHeader: Component<ComponentProps<"thead">>;
|
|
4
|
+
declare const TableBody: Component<ComponentProps<"tbody">>;
|
|
5
|
+
declare const TableFooter: Component<ComponentProps<"tfoot">>;
|
|
6
|
+
declare const TableRow: Component<ComponentProps<"tr">>;
|
|
7
|
+
declare const TableHead: Component<ComponentProps<"th">>;
|
|
8
|
+
declare const TableCell: Component<ComponentProps<"td">>;
|
|
9
|
+
declare const TableCaption: Component<ComponentProps<"caption">>;
|
|
10
|
+
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ValidComponent } from "solid-js";
|
|
2
|
+
import type { PolymorphicProps } from "@kobalte/core";
|
|
3
|
+
import * as TextFieldPrimitive from "@kobalte/core/text-field";
|
|
4
|
+
declare const TextField: typeof TextFieldPrimitive.Root;
|
|
5
|
+
type TextFieldInputProps<T extends ValidComponent = "input"> = TextFieldPrimitive.TextFieldInputProps<T> & {
|
|
6
|
+
class?: string | undefined;
|
|
7
|
+
type: "button" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "submit" | "tel" | "text" | "time" | "url" | "week";
|
|
8
|
+
};
|
|
9
|
+
declare const TextFieldInput: <T extends ValidComponent = "input">(props: PolymorphicProps<T, TextFieldInputProps<T>>) => import("solid-js").JSX.Element;
|
|
10
|
+
type TextFieldTextAreaProps<T extends ValidComponent = "textarea"> = TextFieldPrimitive.TextFieldTextAreaProps<T> & {
|
|
11
|
+
class?: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
declare const TextFieldTextArea: <T extends ValidComponent = "textarea">(props: PolymorphicProps<T, TextFieldTextAreaProps<T>>) => import("solid-js").JSX.Element;
|
|
14
|
+
type TextFieldLabelProps<T extends ValidComponent = "label"> = TextFieldPrimitive.TextFieldLabelProps<T> & {
|
|
15
|
+
class?: string | undefined;
|
|
16
|
+
};
|
|
17
|
+
declare const TextFieldLabel: <T extends ValidComponent = "label">(props: PolymorphicProps<T, TextFieldLabelProps<T>>) => import("solid-js").JSX.Element;
|
|
18
|
+
type TextFieldDescriptionProps<T extends ValidComponent = "div"> = TextFieldPrimitive.TextFieldDescriptionProps<T> & {
|
|
19
|
+
class?: string | undefined;
|
|
20
|
+
};
|
|
21
|
+
declare const TextFieldDescription: <T extends ValidComponent = "div">(props: PolymorphicProps<T, TextFieldDescriptionProps<T>>) => import("solid-js").JSX.Element;
|
|
22
|
+
type TextFieldErrorMessageProps<T extends ValidComponent = "div"> = TextFieldPrimitive.TextFieldErrorMessageProps<T> & {
|
|
23
|
+
class?: string | undefined;
|
|
24
|
+
};
|
|
25
|
+
declare const TextFieldErrorMessage: <T extends ValidComponent = "div">(props: PolymorphicProps<T, TextFieldErrorMessageProps<T>>) => import("solid-js").JSX.Element;
|
|
26
|
+
export { TextField, TextFieldInput, TextFieldTextArea, TextFieldLabel, TextFieldDescription, TextFieldErrorMessage, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export declare const api: {
|
|
2
|
+
loadConfig: import("hono/client").ClientRequest<{
|
|
3
|
+
$get: {
|
|
4
|
+
input: {};
|
|
5
|
+
output: true;
|
|
6
|
+
outputFormat: "json";
|
|
7
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
10
|
+
} & {
|
|
11
|
+
getConfig: import("hono/client").ClientRequest<{
|
|
12
|
+
$get: {
|
|
13
|
+
input: {};
|
|
14
|
+
output: {
|
|
15
|
+
console: {
|
|
16
|
+
gitUrl?: string | undefined;
|
|
17
|
+
port?: number | undefined;
|
|
18
|
+
} | undefined;
|
|
19
|
+
};
|
|
20
|
+
outputFormat: "json";
|
|
21
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
} & {
|
|
25
|
+
isConfigLoaded: import("hono/client").ClientRequest<{
|
|
26
|
+
$get: {
|
|
27
|
+
input: {};
|
|
28
|
+
output: boolean;
|
|
29
|
+
outputFormat: "json";
|
|
30
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
31
|
+
};
|
|
32
|
+
}>;
|
|
33
|
+
} & {
|
|
34
|
+
getBundles: import("hono/client").ClientRequest<{
|
|
35
|
+
$get: {
|
|
36
|
+
input: {};
|
|
37
|
+
output: {
|
|
38
|
+
id: string;
|
|
39
|
+
platform: import("@hot-updater/core").Platform;
|
|
40
|
+
targetAppVersion: string;
|
|
41
|
+
forceUpdate: boolean;
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
fileUrl: string;
|
|
44
|
+
fileHash: string;
|
|
45
|
+
gitCommitHash: string | null;
|
|
46
|
+
message: string | null;
|
|
47
|
+
}[];
|
|
48
|
+
outputFormat: "json";
|
|
49
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
50
|
+
};
|
|
51
|
+
}>;
|
|
52
|
+
} & {
|
|
53
|
+
getBundleById: import("hono/client").ClientRequest<{
|
|
54
|
+
$post: {
|
|
55
|
+
input: {
|
|
56
|
+
json: {
|
|
57
|
+
bundleId: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
output: {
|
|
61
|
+
id: string;
|
|
62
|
+
platform: import("@hot-updater/core").Platform;
|
|
63
|
+
targetAppVersion: string;
|
|
64
|
+
forceUpdate: boolean;
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
fileUrl: string;
|
|
67
|
+
fileHash: string;
|
|
68
|
+
gitCommitHash: string | null;
|
|
69
|
+
message: string | null;
|
|
70
|
+
} | null;
|
|
71
|
+
outputFormat: "json";
|
|
72
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
73
|
+
};
|
|
74
|
+
}>;
|
|
75
|
+
} & {
|
|
76
|
+
updateBundle: import("hono/client").ClientRequest<{
|
|
77
|
+
$post: {
|
|
78
|
+
input: {
|
|
79
|
+
json: {
|
|
80
|
+
bundle: {
|
|
81
|
+
platform?: "ios" | "android" | undefined;
|
|
82
|
+
gitCommitHash?: string | null | undefined;
|
|
83
|
+
message?: string | null | undefined;
|
|
84
|
+
targetAppVersion?: string | undefined;
|
|
85
|
+
forceUpdate?: boolean | undefined;
|
|
86
|
+
enabled?: boolean | undefined;
|
|
87
|
+
fileUrl?: string | undefined;
|
|
88
|
+
fileHash?: string | undefined;
|
|
89
|
+
};
|
|
90
|
+
targetBundleId: string;
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
output: true;
|
|
94
|
+
outputFormat: "json";
|
|
95
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
96
|
+
};
|
|
97
|
+
}>;
|
|
98
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const extractTimestampFromUUIDv7: (uuid: string) => number;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ColumnDef } from "@tanstack/solid-table";
|
|
2
|
+
import { type Accessor } from "solid-js";
|
|
3
|
+
interface DataTableProps<TData, TValue> {
|
|
4
|
+
columns: ColumnDef<TData, TValue>[];
|
|
5
|
+
data: Accessor<TData[] | undefined>;
|
|
6
|
+
onRowClick: (data: TData) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function DataTable<TData, TValue>(props: DataTableProps<TData, TValue>): import("solid-js").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function Home(): import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
declare const app: Hono<{}, {
|
|
3
|
+
"/static/*": {
|
|
4
|
+
$get: {
|
|
5
|
+
input: {};
|
|
6
|
+
output: "pong";
|
|
7
|
+
outputFormat: "text";
|
|
8
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
9
|
+
};
|
|
10
|
+
} | {
|
|
11
|
+
$get: {
|
|
12
|
+
input: {};
|
|
13
|
+
output: true;
|
|
14
|
+
outputFormat: "json";
|
|
15
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
16
|
+
};
|
|
17
|
+
} | {
|
|
18
|
+
$get: {
|
|
19
|
+
input: {};
|
|
20
|
+
output: {
|
|
21
|
+
console: {
|
|
22
|
+
gitUrl?: string | undefined;
|
|
23
|
+
port?: number | undefined;
|
|
24
|
+
} | undefined;
|
|
25
|
+
};
|
|
26
|
+
outputFormat: "json";
|
|
27
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
28
|
+
};
|
|
29
|
+
} | {
|
|
30
|
+
$get: {
|
|
31
|
+
input: {};
|
|
32
|
+
output: boolean;
|
|
33
|
+
outputFormat: "json";
|
|
34
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
35
|
+
};
|
|
36
|
+
} | {
|
|
37
|
+
$get: {
|
|
38
|
+
input: {};
|
|
39
|
+
output: {
|
|
40
|
+
id: string;
|
|
41
|
+
platform: import("@hot-updater/core").Platform;
|
|
42
|
+
targetAppVersion: string;
|
|
43
|
+
forceUpdate: boolean;
|
|
44
|
+
enabled: boolean;
|
|
45
|
+
fileUrl: string;
|
|
46
|
+
fileHash: string;
|
|
47
|
+
gitCommitHash: string | null;
|
|
48
|
+
message: string | null;
|
|
49
|
+
}[];
|
|
50
|
+
outputFormat: "json";
|
|
51
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
52
|
+
};
|
|
53
|
+
} | {
|
|
54
|
+
$post: {
|
|
55
|
+
input: {
|
|
56
|
+
json: {
|
|
57
|
+
bundleId: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
output: {
|
|
61
|
+
id: string;
|
|
62
|
+
platform: import("@hot-updater/core").Platform;
|
|
63
|
+
targetAppVersion: string;
|
|
64
|
+
forceUpdate: boolean;
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
fileUrl: string;
|
|
67
|
+
fileHash: string;
|
|
68
|
+
gitCommitHash: string | null;
|
|
69
|
+
message: string | null;
|
|
70
|
+
} | null;
|
|
71
|
+
outputFormat: "json";
|
|
72
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
73
|
+
};
|
|
74
|
+
} | {
|
|
75
|
+
$post: {
|
|
76
|
+
input: {
|
|
77
|
+
json: {
|
|
78
|
+
bundle: {
|
|
79
|
+
platform?: "ios" | "android" | undefined;
|
|
80
|
+
gitCommitHash?: string | null | undefined;
|
|
81
|
+
message?: string | null | undefined;
|
|
82
|
+
targetAppVersion?: string | undefined;
|
|
83
|
+
forceUpdate?: boolean | undefined;
|
|
84
|
+
enabled?: boolean | undefined;
|
|
85
|
+
fileUrl?: string | undefined;
|
|
86
|
+
fileHash?: string | undefined;
|
|
87
|
+
};
|
|
88
|
+
targetBundleId: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
output: true;
|
|
92
|
+
outputFormat: "json";
|
|
93
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
} & {
|
|
97
|
+
"*": {
|
|
98
|
+
$get: {
|
|
99
|
+
input: {};
|
|
100
|
+
output: {};
|
|
101
|
+
outputFormat: string;
|
|
102
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
103
|
+
} | {
|
|
104
|
+
input: {};
|
|
105
|
+
output: {};
|
|
106
|
+
outputFormat: string;
|
|
107
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
}, "/">;
|
|
111
|
+
export type AppType = typeof app;
|
|
112
|
+
export default app;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
export declare const bundleSchema: v.ObjectSchema<{
|
|
4
|
+
readonly platform: v.UnionSchema<[v.LiteralSchema<"ios", undefined>, v.LiteralSchema<"android", undefined>], undefined>;
|
|
5
|
+
readonly targetAppVersion: v.StringSchema<undefined>;
|
|
6
|
+
readonly id: v.StringSchema<undefined>;
|
|
7
|
+
readonly forceUpdate: v.BooleanSchema<undefined>;
|
|
8
|
+
readonly enabled: v.BooleanSchema<undefined>;
|
|
9
|
+
readonly fileUrl: v.StringSchema<undefined>;
|
|
10
|
+
readonly fileHash: v.StringSchema<undefined>;
|
|
11
|
+
readonly gitCommitHash: v.NullableSchema<v.StringSchema<undefined>, never>;
|
|
12
|
+
readonly message: v.NullableSchema<v.StringSchema<undefined>, never>;
|
|
13
|
+
}, undefined>;
|
|
14
|
+
export declare const rpc: Hono<import("hono/types").BlankEnv, {
|
|
15
|
+
"/loadConfig": {
|
|
16
|
+
$get: {
|
|
17
|
+
input: {};
|
|
18
|
+
output: true;
|
|
19
|
+
outputFormat: "json";
|
|
20
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
} & {
|
|
24
|
+
"/getConfig": {
|
|
25
|
+
$get: {
|
|
26
|
+
input: {};
|
|
27
|
+
output: {
|
|
28
|
+
console: {
|
|
29
|
+
gitUrl?: string | undefined;
|
|
30
|
+
port?: number | undefined;
|
|
31
|
+
} | undefined;
|
|
32
|
+
};
|
|
33
|
+
outputFormat: "json";
|
|
34
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
} & {
|
|
38
|
+
"/isConfigLoaded": {
|
|
39
|
+
$get: {
|
|
40
|
+
input: {};
|
|
41
|
+
output: boolean;
|
|
42
|
+
outputFormat: "json";
|
|
43
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
} & {
|
|
47
|
+
"/getBundles": {
|
|
48
|
+
$get: {
|
|
49
|
+
input: {};
|
|
50
|
+
output: {
|
|
51
|
+
id: string;
|
|
52
|
+
platform: import("@hot-updater/core").Platform;
|
|
53
|
+
targetAppVersion: string;
|
|
54
|
+
forceUpdate: boolean;
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
fileUrl: string;
|
|
57
|
+
fileHash: string;
|
|
58
|
+
gitCommitHash: string | null;
|
|
59
|
+
message: string | null;
|
|
60
|
+
}[];
|
|
61
|
+
outputFormat: "json";
|
|
62
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
} & {
|
|
66
|
+
"/getBundleById": {
|
|
67
|
+
$post: {
|
|
68
|
+
input: {
|
|
69
|
+
json: {
|
|
70
|
+
bundleId: string;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
output: {
|
|
74
|
+
id: string;
|
|
75
|
+
platform: import("@hot-updater/core").Platform;
|
|
76
|
+
targetAppVersion: string;
|
|
77
|
+
forceUpdate: boolean;
|
|
78
|
+
enabled: boolean;
|
|
79
|
+
fileUrl: string;
|
|
80
|
+
fileHash: string;
|
|
81
|
+
gitCommitHash: string | null;
|
|
82
|
+
message: string | null;
|
|
83
|
+
} | null;
|
|
84
|
+
outputFormat: "json";
|
|
85
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
} & {
|
|
89
|
+
"/updateBundle": {
|
|
90
|
+
$post: {
|
|
91
|
+
input: {
|
|
92
|
+
json: {
|
|
93
|
+
bundle: {
|
|
94
|
+
platform?: "ios" | "android" | undefined;
|
|
95
|
+
gitCommitHash?: string | null | undefined;
|
|
96
|
+
message?: string | null | undefined;
|
|
97
|
+
targetAppVersion?: string | undefined;
|
|
98
|
+
forceUpdate?: boolean | undefined;
|
|
99
|
+
enabled?: boolean | undefined;
|
|
100
|
+
fileUrl?: string | undefined;
|
|
101
|
+
fileHash?: string | undefined;
|
|
102
|
+
};
|
|
103
|
+
targetBundleId: string;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
output: true;
|
|
107
|
+
outputFormat: "json";
|
|
108
|
+
status: import("hono/utils/http-status").StatusCode;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
}, "/">;
|
|
112
|
+
export type RpcType = typeof rpc;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap";*,: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:#3b82f680;--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:#3b82f680;--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:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family: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{-webkit-appearance:button;background-color:#0000;background-image:none}input:where([type=button]){-webkit-appearance:button;background-color:#0000;background-image:none}input:where([type=reset]){-webkit-appearance:button;background-color:#0000;background-image:none}input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-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{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}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{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:0 0% 100%;--foreground:240 10% 3.9%;--muted:240 4.8% 95.9%;--muted-foreground:240 3.8% 46.1%;--popover:0 0% 100%;--popover-foreground:240 10% 3.9%;--border:240 5.9% 90%;--input:240 5.9% 90%;--card:0 0% 100%;--card-foreground:240 10% 3.9%;--primary:240 5.9% 10%;--primary-foreground:0 0% 98%;--secondary:240 4.8% 95.9%;--secondary-foreground:240 5.9% 10%;--accent:240 4.8% 95.9%;--accent-foreground:240 5.9% 10%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--info:204 94% 94%;--info-foreground:199 89% 48%;--success:149 80% 90%;--success-foreground:160 84% 39%;--warning:48 96% 89%;--warning-foreground:25 95% 53%;--error:0 93% 94%;--error-foreground:0 84% 60%;--ring:240 5.9% 10%;--radius:.5rem}.dark,[data-kb-theme=dark]{--background:240 10% 3.9%;--foreground:0 0% 98%;--muted:240 3.7% 15.9%;--muted-foreground:240 5% 64.9%;--accent:240 3.7% 15.9%;--accent-foreground:0 0% 98%;--popover:240 10% 3.9%;--popover-foreground:0 0% 98%;--border:240 3.7% 15.9%;--input:240 3.7% 15.9%;--card:240 10% 3.9%;--card-foreground:0 0% 98%;--primary:0 0% 98%;--primary-foreground:240 5.9% 10%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--info:204 94% 94%;--info-foreground:199 89% 48%;--success:149 80% 90%;--success-foreground:160 84% 39%;--warning:48 96% 89%;--warning-foreground:25 95% 53%;--error:0 93% 94%;--error-foreground:0 84% 60%;--ring:240 4.9% 83.9%;--radius:.5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-feature-settings:"rlig" 1,"calt" 1}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;bottom:0;left:0;right:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.top-px{top:1px}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.mt-2\.5{margin-top:.625rem}.mt-4{margin-top:1rem}.mt-\[2px\]{margin-top:2px}.box-border{box-sizing:border-box}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.grid{display:grid}.hidden{display:none}.size-10{width:2.5rem;height:2.5rem}.size-3{width:.75rem;height:.75rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-24{height:6rem}.h-32{height:8rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\[var\(--kb-navigation-menu-viewport-height\)\]{height:var(--kb-navigation-menu-viewport-height)}.h-full{height:100%}.max-h-screen{max-height:100vh}.min-h-\[80px\]{min-height:80px}.w-11{width:2.75rem}.w-12{width:3rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-\[var\(--kb-navigation-menu-viewport-width\)\]{width:var(--kb-navigation-menu-viewport-width)}.w-full{width:100%}.w-max{width:max-content}.max-w-sm{max-width:24rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\[var\(--kb-menu-content-transform-origin\)\]{transform-origin:var(--kb-menu-content-transform-origin)}.translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@keyframes content-hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.animate-content-hide{animation:.2s ease-out content-hide}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.list-none{list-style-type:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.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))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-visible{overflow-y:visible}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.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-input{border-color:hsl(var(--input))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:#000c}.bg-destructive{background-color:hsl(var(--destructive))}.bg-input{background-color:hsl(var(--input))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:#0000}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-2\.5{padding-left:.625rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-none{line-height:1}.leading-snug{line-height:1.375}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,-webkit-backdrop-filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[color\,background-color\,box-shadow\]{transition-property:color,background-color,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\,height\]{transition-property:width,height;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}@media (max-width:640px){.container{padding-left:1rem;padding-right:1rem}}::-webkit-scrollbar{width:16px}::-webkit-scrollbar-thumb{background-clip:content-box;background-color:hsl(var(--accent));border:4px solid #0000;border-radius:9999px}::-webkit-scrollbar-corner{display:none}body{font-family:Lato,sans-serif}.file\:border-0::-webkit-file-upload-button{border-width:0}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::-webkit-file-upload-button{background-color:#0000}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::-webkit-file-upload-button{font-size:.875rem;line-height:1.25rem}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::-webkit-file-upload-button{font-weight:500}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[expanded\]\:pointer-events-auto[data-expanded]{pointer-events:auto}.data-\[checked\]\:translate-x-5[data-checked]{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@keyframes content-show{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.data-\[expanded\]\:animate-content-show[data-expanded]{animation:.2s ease-out content-show}.data-\[disabled\]\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=vertical\]\:overflow-y-clip[data-orientation=vertical]{overflow-y:clip}.data-\[orientation\=vertical\]\:overflow-x-visible[data-orientation=vertical]{overflow-x:visible}.data-\[expanded\]\:rounded-md[data-expanded]{border-radius:calc(var(--radius) - 2px)}.data-\[current\]\:border[data-current]{border-width:1px}.data-\[active\]\:bg-accent\/50[data-active]{background-color:hsl(var(--accent)/.5)}.data-\[checked\]\:bg-primary[data-checked]{background-color:hsl(var(--primary))}.data-\[expanded\]\:bg-accent\/50[data-expanded]{background-color:hsl(var(--accent)/.5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[invalid\]\:text-destructive[data-invalid]{color:hsl(var(--destructive))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\]\:opacity-70[data-disabled]{opacity:.7}.data-\[expanded\]\:opacity-100[data-expanded]{opacity:1}.data-\[closed\=\]\:duration-300[data-closed=""]{transition-duration:.3s}.data-\[expanded\=\]\:duration-500[data-expanded=""]{transition-duration:.5s}.data-\[expanded\]\:ease-out[data-expanded]{transition-timing-function:cubic-bezier(0,0,.2,1)}.data-\[expanded\=\]\:animate-in[data-expanded=""],.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[closed\=\]\:animate-out[data-closed=""],.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[closed\=\]\:fade-out-0[data-closed=""]{--tw-exit-opacity:0}.data-\[expanded\=\]\:fade-in-0[data-expanded=""],.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity:0}.data-\[closed\=\]\:slide-out-to-bottom[data-closed=""]{--tw-exit-translate-y:100%}.data-\[closed\=\]\:slide-out-to-left[data-closed=""]{--tw-exit-translate-x:-100%}.data-\[closed\=\]\:slide-out-to-right[data-closed=""]{--tw-exit-translate-x:100%}.data-\[closed\=\]\:slide-out-to-top[data-closed=""]{--tw-exit-translate-y:-100%}.data-\[expanded\=\]\:slide-in-from-bottom[data-expanded=""]{--tw-enter-translate-y:100%}.data-\[expanded\=\]\:slide-in-from-right[data-expanded=""]{--tw-enter-translate-x:100%}.data-\[expanded\=\]\:slide-in-from-top[data-expanded=""]{--tw-enter-translate-y:-100%}.data-\[expanded\]\:slide-in-from-left[data-expanded]{--tw-enter-translate-x:-100%}.data-\[orientation\=horizontal\]\:data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end][data-orientation=horizontal]{--tw-enter-translate-x:13rem}.data-\[orientation\=horizontal\]\:data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start][data-orientation=horizontal]{--tw-enter-translate-x:-13rem}.data-\[orientation\=horizontal\]\:data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end][data-orientation=horizontal]{--tw-exit-translate-x:13rem}.data-\[orientation\=horizontal\]\:data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start][data-orientation=horizontal]{--tw-exit-translate-x:-13rem}.data-\[orientation\=vertical\]\:data-\[motion\=from-end\]\:slide-in-from-bottom-52[data-motion=from-end][data-orientation=vertical]{--tw-enter-translate-y:13rem}.data-\[orientation\=vertical\]\:data-\[motion\=from-start\]\:slide-in-from-top-52[data-motion=from-start][data-orientation=vertical]{--tw-enter-translate-y:-13rem}.data-\[orientation\=vertical\]\:data-\[motion\=to-end\]\:slide-out-to-bottom-52[data-motion=to-end][data-orientation=vertical],.data-\[orientation\=vertical\]\:data-\[motion\=to-start\]\:slide-out-to-bottom-52[data-motion=to-start][data-orientation=vertical]{--tw-exit-translate-y:13rem}.data-\[closed\=\]\:duration-300[data-closed=""]{animation-duration:.3s}.data-\[expanded\=\]\:duration-500[data-expanded=""]{animation-duration:.5s}.data-\[expanded\]\:ease-out[data-expanded]{animation-timing-function:cubic-bezier(0,0,.2,1)}.group\/trigger[data-expanded] .group-data-\[expanded\]\/trigger\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group\/menu[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/menu\:-rotate-90{--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group\/menu[data-orientation=vertical] .group\/trigger[data-expanded] .group-data-\[orientation\=vertical\]\/menu\:group-data-\[expanded\]\/trigger\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@media (min-width:640px){.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.sm\:text-left{text-align:left}}@media (min-width:768px){.md\:h-48{height:12rem}.md\:w-48{width:12rem}}.\[\&\:focus-visible\+div\]\:outline-none:focus-visible+div{outline-offset:2px;outline:2px solid #0000}.\[\&\:focus-visible\+div\]\:ring-2:focus-visible+div{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:focus-visible\+div\]\:ring-ring:focus-visible+div{--tw-ring-color:hsl(var(--ring))}.\[\&\:focus-visible\+div\]\:ring-offset-2:focus-visible+div{--tw-ring-offset-width:2px}.\[\&\:focus-visible\+div\]\:ring-offset-background:focus-visible+div{--tw-ring-offset-color:hsl(var(--background))}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\*\]\:flex>*{display:flex}.\[\&\>\*\]\:flex-row>*{flex-direction:row}.\[\&\>\*\]\:items-center>*{align-items:center}.\[\&\>\*\]\:gap-1>*{gap:.25rem}.\[\&\>li\]\:w-full>li{width:100%}.\[\&\>ul\]\:justify-center>ul{justify-content:center}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}
|