@agilant/toga-blox 1.0.313 → 1.0.315-beta.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Table/Table.d.ts +5 -0
- package/dist/components/Table/Table.js +10 -0
- package/dist/components/Table/Table.stories.d.ts +24 -0
- package/dist/components/Table/Table.stories.js +40 -0
- package/dist/components/Table/Table.tanstack.stories.d.ts +21 -0
- package/dist/components/Table/Table.tanstack.stories.js +124 -0
- package/dist/components/Table/TableBody.d.ts +5 -0
- package/dist/components/Table/TableBody.js +5 -0
- package/dist/components/Table/TableCell.d.ts +5 -0
- package/dist/components/Table/TableCell.js +5 -0
- package/dist/components/Table/TableHead.d.ts +6 -0
- package/dist/components/Table/TableHead.js +5 -0
- package/dist/components/Table/TableHeaderCell.d.ts +5 -0
- package/dist/components/Table/TableHeaderCell.js +5 -0
- package/dist/components/Table/TableRow.d.ts +5 -0
- package/dist/components/Table/TableRow.js +5 -0
- package/dist/components/Table/index.d.ts +6 -0
- package/dist/components/Table/index.js +6 -0
- package/dist/main.css +1 -1
- package/dist/reactQuery/queryHelpers.js +11 -4
- package/dist/utils/getEndpointFromEnvironment.d.ts +18 -0
- package/dist/utils/getEndpointFromEnvironment.js +44 -0
- package/dist/utils/getFontAwesomeIcon.d.ts +5 -1
- package/dist/utils/getFontAwesomeIcon.js +6 -2
- package/package.json +5 -5
- package/dist/hooks/useApiMutation.d.ts +0 -2
- package/dist/hooks/useApiMutation.js +0 -25
- package/dist/hooks/useApiQuery.d.ts +0 -2
- package/dist/hooks/useApiQuery.js +0 -9
- package/dist/index.d.ts +0 -104
- package/dist/index.js +0 -110
- package/dist/utils/queryHelpers.d.ts +0 -67
- package/dist/utils/queryHelpers.js +0 -132
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn";
|
|
4
|
+
// forwardRef lets a parent component get a direct reference to the underlying <table> DOM element.
|
|
5
|
+
// This enables the parent to imperatively scroll, measure, focus, or animate the table.
|
|
6
|
+
export const Table = React.forwardRef(({ children, className, fullWidth, style, ...props }, ref) => (_jsx("table", { ref: ref, className: cn(fullWidth && "w-full", className), style: {
|
|
7
|
+
borderCollapse: "collapse",
|
|
8
|
+
...style,
|
|
9
|
+
}, ...props, children: children })));
|
|
10
|
+
Table.displayName = "Table";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { StoryFn } from "@storybook/react";
|
|
3
|
+
import { Table } from "./index";
|
|
4
|
+
declare const _default: {
|
|
5
|
+
title: string;
|
|
6
|
+
component: React.ForwardRefExoticComponent<import("./Table").TableProps & React.RefAttributes<HTMLTableElement>>;
|
|
7
|
+
tags: string[];
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: string;
|
|
10
|
+
};
|
|
11
|
+
argTypes: {
|
|
12
|
+
fullWidth: {
|
|
13
|
+
control: string;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export default _default;
|
|
19
|
+
/** Default table */
|
|
20
|
+
export declare const Default: StoryFn<typeof Table>;
|
|
21
|
+
/** Default table with basic styles */
|
|
22
|
+
export declare const DefaultWithStyles: StoryFn<typeof Table>;
|
|
23
|
+
/** Sticky header — scroll to see the header stay pinned */
|
|
24
|
+
export declare const StickyHeader: StoryFn<typeof Table>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Table, TableHead, TableBody, TableRow, TableHeaderCell, TableCell, } from "./index";
|
|
3
|
+
export default {
|
|
4
|
+
title: "Components/Table",
|
|
5
|
+
component: Table,
|
|
6
|
+
tags: ["autodocs"],
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: "centered",
|
|
9
|
+
},
|
|
10
|
+
argTypes: {
|
|
11
|
+
fullWidth: {
|
|
12
|
+
control: "boolean",
|
|
13
|
+
description: "Whether the table takes the full width of its container.",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
const columns = [
|
|
18
|
+
{ key: "name", header: "Name" },
|
|
19
|
+
{ key: "email", header: "Email" },
|
|
20
|
+
{ key: "role", header: "Role" },
|
|
21
|
+
];
|
|
22
|
+
const rows = [
|
|
23
|
+
{ name: "Alice", email: "alice@example.com", role: "Admin" },
|
|
24
|
+
{ name: "Bob", email: "bob@example.com", role: "Editor" },
|
|
25
|
+
{ name: "Carol", email: "carol@example.com", role: "Viewer" },
|
|
26
|
+
];
|
|
27
|
+
/** Default table */
|
|
28
|
+
export const Default = (args) => (_jsxs(Table, { ...args, children: [_jsx(TableHead, { children: _jsx(TableRow, { children: columns.map((col) => (_jsx(TableHeaderCell, { children: col.header }, col.key))) }) }), _jsx(TableBody, { children: rows.map((row) => (_jsx(TableRow, { children: columns.map((col) => (_jsx(TableCell, { children: row[col.key] }, col.key))) }, row.email))) })] }));
|
|
29
|
+
Default.args = {
|
|
30
|
+
fullWidth: true,
|
|
31
|
+
};
|
|
32
|
+
/** Default table with basic styles */
|
|
33
|
+
export const DefaultWithStyles = (args) => (_jsxs(Table, { ...args, className: "w-96", children: [_jsx(TableHead, { children: _jsx(TableRow, { className: "bg-gray-50", children: columns.map((col) => (_jsx(TableHeaderCell, { className: "px-4 py-3 text-left font-bold", children: col.header }, col.key))) }) }), _jsx(TableBody, { className: "bg-white", children: rows.map((row) => (_jsx(TableRow, { className: "hover:bg-gray-200 border-b", children: columns.map((col) => (_jsx(TableCell, { className: "px-4 py-2 text-sm", children: row[col.key] }, col.key))) }, row.email))) })] }));
|
|
34
|
+
const manyRows = Array.from({ length: 20 }, (_, i) => ({
|
|
35
|
+
name: `User ${i + 1}`,
|
|
36
|
+
email: `user${i + 1}@example.com`,
|
|
37
|
+
role: i % 3 === 0 ? "Admin" : i % 3 === 1 ? "Editor" : "Viewer",
|
|
38
|
+
}));
|
|
39
|
+
/** Sticky header — scroll to see the header stay pinned */
|
|
40
|
+
export const StickyHeader = () => (_jsx("div", { className: "h-64 overflow-auto w-[500px]", children: _jsxs(Table, { fullWidth: true, children: [_jsx(TableHead, { sticky: true, children: _jsx(TableRow, { className: "bg-gray-50", children: columns.map((col) => (_jsx(TableHeaderCell, { className: "px-4 py-3 text-left font-bold border-b", children: col.header }, col.key))) }) }), _jsx(TableBody, { children: manyRows.map((row) => (_jsx(TableRow, { className: "hover:bg-gray-100 border-b", children: columns.map((col) => (_jsx(TableCell, { className: "px-4 py-2 text-sm", children: row[col.key] }, col.key))) }, row.email))) })] }) }));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { StoryFn } from "@storybook/react";
|
|
3
|
+
declare const _default: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: React.ForwardRefExoticComponent<import("./Table").TableProps & React.RefAttributes<HTMLTableElement>>;
|
|
6
|
+
tags: string[];
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
12
|
+
/** Shows the minimum wiring needed: column defs, data, `getCoreRowModel`, and your Table primitives. */
|
|
13
|
+
export declare const Basic: StoryFn;
|
|
14
|
+
/** Click any column header to cycle through ascending → descending → unsorted. */
|
|
15
|
+
export declare const Sorting: StoryFn;
|
|
16
|
+
/** Type in the search box to filter all columns at once. */
|
|
17
|
+
export declare const Filtering: StoryFn;
|
|
18
|
+
/** Rows are split into pages of 5. Use the controls below the table to navigate. */
|
|
19
|
+
export declare const Pagination: StoryFn;
|
|
20
|
+
/** All features enabled together: sort by clicking headers, search with the text input, and paginate with the controls. */
|
|
21
|
+
export declare const Combined: StoryFn;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { useReactTable, getCoreRowModel, getSortedRowModel, getFilteredRowModel, getPaginationRowModel, flexRender, createColumnHelper, } from "@tanstack/react-table";
|
|
4
|
+
import { Table, TableHead, TableBody, TableRow, TableHeaderCell, TableCell, } from "./index";
|
|
5
|
+
export default {
|
|
6
|
+
title: "Demos/TanStack Table",
|
|
7
|
+
component: Table,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
parameters: {
|
|
10
|
+
layout: "centered",
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
const data = [
|
|
14
|
+
{ name: "Alice", email: "alice@example.com", role: "Admin", age: 32 },
|
|
15
|
+
{ name: "Bob", email: "bob@example.com", role: "Editor", age: 25 },
|
|
16
|
+
{ name: "Carol", email: "carol@example.com", role: "Viewer", age: 28 },
|
|
17
|
+
{ name: "Dan", email: "dan@example.com", role: "Admin", age: 41 },
|
|
18
|
+
{ name: "Eve", email: "eve@example.com", role: "Editor", age: 35 },
|
|
19
|
+
{ name: "Frank", email: "frank@example.com", role: "Viewer", age: 23 },
|
|
20
|
+
{ name: "Grace", email: "grace@example.com", role: "Admin", age: 29 },
|
|
21
|
+
{ name: "Hank", email: "hank@example.com", role: "Editor", age: 37 },
|
|
22
|
+
{ name: "Iris", email: "iris@example.com", role: "Viewer", age: 26 },
|
|
23
|
+
{ name: "Jack", email: "jack@example.com", role: "Admin", age: 44 },
|
|
24
|
+
{ name: "Kate", email: "kate@example.com", role: "Editor", age: 31 },
|
|
25
|
+
{ name: "Leo", email: "leo@example.com", role: "Viewer", age: 22 },
|
|
26
|
+
];
|
|
27
|
+
const columnHelper = createColumnHelper();
|
|
28
|
+
const columns = [
|
|
29
|
+
columnHelper.accessor("name", { header: "Name" }),
|
|
30
|
+
columnHelper.accessor("email", { header: "Email" }),
|
|
31
|
+
columnHelper.accessor("role", { header: "Role" }),
|
|
32
|
+
columnHelper.accessor("age", { header: "Age" }),
|
|
33
|
+
];
|
|
34
|
+
// ── Shared style classes ──
|
|
35
|
+
const headerCellClasses = "px-4 py-3 text-left font-bold";
|
|
36
|
+
const cellClasses = "px-4 py-2 text-sm";
|
|
37
|
+
const headerRowClasses = "bg-gray-50";
|
|
38
|
+
const bodyRowClasses = "hover:bg-gray-100 border-b";
|
|
39
|
+
// ────────────────────────────────────────────
|
|
40
|
+
// 1. Basic — minimal TanStack Table wiring
|
|
41
|
+
// ────────────────────────────────────────────
|
|
42
|
+
/** Shows the minimum wiring needed: column defs, data, `getCoreRowModel`, and your Table primitives. */
|
|
43
|
+
export const Basic = () => {
|
|
44
|
+
const table = useReactTable({
|
|
45
|
+
data,
|
|
46
|
+
columns,
|
|
47
|
+
getCoreRowModel: getCoreRowModel(),
|
|
48
|
+
});
|
|
49
|
+
return (_jsxs(Table, { fullWidth: true, className: "w-[600px]", children: [_jsx(TableHead, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { className: headerRowClasses, children: headerGroup.headers.map((header) => (_jsx(TableHeaderCell, { className: headerCellClasses, children: flexRender(header.column.columnDef.header, header.getContext()) }, header.id))) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows.map((row) => (_jsx(TableRow, { className: bodyRowClasses, children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: cellClasses, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id))) })] }));
|
|
50
|
+
};
|
|
51
|
+
// ────────────────────────────────────────────
|
|
52
|
+
// 2. Sorting — click headers to sort
|
|
53
|
+
// ────────────────────────────────────────────
|
|
54
|
+
/** Click any column header to cycle through ascending → descending → unsorted. */
|
|
55
|
+
export const Sorting = () => {
|
|
56
|
+
const [sorting, setSorting] = useState([]);
|
|
57
|
+
const table = useReactTable({
|
|
58
|
+
data,
|
|
59
|
+
columns,
|
|
60
|
+
state: { sorting },
|
|
61
|
+
onSortingChange: setSorting,
|
|
62
|
+
getCoreRowModel: getCoreRowModel(),
|
|
63
|
+
getSortedRowModel: getSortedRowModel(),
|
|
64
|
+
});
|
|
65
|
+
return (_jsxs(Table, { fullWidth: true, className: "w-[600px]", children: [_jsx(TableHead, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { className: headerRowClasses, children: headerGroup.headers.map((header) => (_jsx(TableHeaderCell, { className: `${headerCellClasses} cursor-pointer select-none`, onClick: header.column.getToggleSortingHandler(), children: _jsxs("span", { className: "flex items-center gap-1", children: [flexRender(header.column.columnDef.header, header.getContext()), {
|
|
66
|
+
asc: " ▲",
|
|
67
|
+
desc: " ▼",
|
|
68
|
+
}[header.column.getIsSorted()] ??
|
|
69
|
+
null] }) }, header.id))) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows.map((row) => (_jsx(TableRow, { className: bodyRowClasses, children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: cellClasses, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id))) })] }));
|
|
70
|
+
};
|
|
71
|
+
// ────────────────────────────────────────────
|
|
72
|
+
// 3. Filtering — global text filter
|
|
73
|
+
// ────────────────────────────────────────────
|
|
74
|
+
/** Type in the search box to filter all columns at once. */
|
|
75
|
+
export const Filtering = () => {
|
|
76
|
+
const [globalFilter, setGlobalFilter] = useState("");
|
|
77
|
+
const table = useReactTable({
|
|
78
|
+
data,
|
|
79
|
+
columns,
|
|
80
|
+
state: { globalFilter },
|
|
81
|
+
onGlobalFilterChange: setGlobalFilter,
|
|
82
|
+
getCoreRowModel: getCoreRowModel(),
|
|
83
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
84
|
+
});
|
|
85
|
+
return (_jsxs("div", { className: "w-[600px] flex flex-col gap-3", children: [_jsx("input", { value: globalFilter, onChange: (e) => setGlobalFilter(e.target.value), placeholder: "Search all columns\u2026", className: "px-3 py-2 border rounded-md text-sm w-60" }), _jsxs(Table, { fullWidth: true, children: [_jsx(TableHead, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { className: headerRowClasses, children: headerGroup.headers.map((header) => (_jsx(TableHeaderCell, { className: headerCellClasses, children: flexRender(header.column.columnDef.header, header.getContext()) }, header.id))) }, headerGroup.id))) }), _jsxs(TableBody, { children: [table.getRowModel().rows.map((row) => (_jsx(TableRow, { className: bodyRowClasses, children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: cellClasses, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id))), table.getRowModel().rows.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: columns.length, className: "px-4 py-8 text-center text-gray-400 text-sm", children: "No results found." }) }))] })] })] }));
|
|
86
|
+
};
|
|
87
|
+
// ────────────────────────────────────────────
|
|
88
|
+
// 4. Pagination — navigate pages of rows
|
|
89
|
+
// ────────────────────────────────────────────
|
|
90
|
+
/** Rows are split into pages of 5. Use the controls below the table to navigate. */
|
|
91
|
+
export const Pagination = () => {
|
|
92
|
+
const table = useReactTable({
|
|
93
|
+
data,
|
|
94
|
+
columns,
|
|
95
|
+
getCoreRowModel: getCoreRowModel(),
|
|
96
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
97
|
+
initialState: { pagination: { pageSize: 5 } },
|
|
98
|
+
});
|
|
99
|
+
return (_jsxs("div", { className: "w-[600px] flex flex-col gap-3", children: [_jsxs(Table, { fullWidth: true, children: [_jsx(TableHead, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { className: headerRowClasses, children: headerGroup.headers.map((header) => (_jsx(TableHeaderCell, { className: headerCellClasses, children: flexRender(header.column.columnDef.header, header.getContext()) }, header.id))) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows.map((row) => (_jsx(TableRow, { className: bodyRowClasses, children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: cellClasses, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id))) })] }), _jsxs("div", { className: "flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-gray-500", children: ["Page ", table.getState().pagination.pageIndex + 1, " of", " ", table.getPageCount()] }), _jsxs("span", { className: "flex gap-2", children: [_jsx("button", { className: "px-3 py-1 border rounded disabled:opacity-40", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: "Previous" }), _jsx("button", { className: "px-3 py-1 border rounded disabled:opacity-40", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: "Next" })] })] })] }));
|
|
100
|
+
};
|
|
101
|
+
// ────────────────────────────────────────────
|
|
102
|
+
// 5. Combined — sorting + filtering + pagination
|
|
103
|
+
// ────────────────────────────────────────────
|
|
104
|
+
/** All features enabled together: sort by clicking headers, search with the text input, and paginate with the controls. */
|
|
105
|
+
export const Combined = () => {
|
|
106
|
+
const [sorting, setSorting] = useState([]);
|
|
107
|
+
const [globalFilter, setGlobalFilter] = useState("");
|
|
108
|
+
const table = useReactTable({
|
|
109
|
+
data,
|
|
110
|
+
columns,
|
|
111
|
+
state: { sorting, globalFilter },
|
|
112
|
+
onSortingChange: setSorting,
|
|
113
|
+
onGlobalFilterChange: setGlobalFilter,
|
|
114
|
+
getCoreRowModel: getCoreRowModel(),
|
|
115
|
+
getSortedRowModel: getSortedRowModel(),
|
|
116
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
117
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
118
|
+
initialState: { pagination: { pageSize: 5 } },
|
|
119
|
+
});
|
|
120
|
+
return (_jsxs("div", { className: "w-[600px] flex flex-col gap-3", children: [_jsx("input", { value: globalFilter, onChange: (e) => setGlobalFilter(e.target.value), placeholder: "Search all columns\u2026", className: "px-3 py-2 border rounded-md text-sm w-60" }), _jsxs(Table, { fullWidth: true, children: [_jsx(TableHead, { children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { className: headerRowClasses, children: headerGroup.headers.map((header) => (_jsx(TableHeaderCell, { className: `${headerCellClasses} cursor-pointer select-none`, onClick: header.column.getToggleSortingHandler(), children: _jsxs("span", { className: "flex items-center gap-1", children: [flexRender(header.column.columnDef.header, header.getContext()), {
|
|
121
|
+
asc: " ▲",
|
|
122
|
+
desc: " ▼",
|
|
123
|
+
}[header.column.getIsSorted()] ?? null] }) }, header.id))) }, headerGroup.id))) }), _jsxs(TableBody, { children: [table.getRowModel().rows.map((row) => (_jsx(TableRow, { className: bodyRowClasses, children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: cellClasses, children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id))), table.getRowModel().rows.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: columns.length, className: "px-4 py-8 text-center text-gray-400 text-sm", children: "No results found." }) }))] })] }), _jsxs("div", { className: "flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-gray-500", children: ["Page ", table.getState().pagination.pageIndex + 1, " of", " ", table.getPageCount()] }), _jsxs("span", { className: "flex gap-2", children: [_jsx("button", { className: "px-3 py-1 border rounded disabled:opacity-40", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: "Previous" }), _jsx("button", { className: "px-3 py-1 border rounded disabled:opacity-40", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: "Next" })] })] })] }));
|
|
124
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn";
|
|
4
|
+
export const TableBody = React.forwardRef(({ children, className, ...props }, ref) => (_jsx("tbody", { ref: ref, className: cn(className), ...props, children: children })));
|
|
5
|
+
TableBody.displayName = "TableBody";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn";
|
|
4
|
+
export const TableCell = React.forwardRef(({ children, className, ...props }, ref) => (_jsx("td", { ref: ref, className: cn(className), ...props, children: children })));
|
|
5
|
+
TableCell.displayName = "TableCell";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface TableHeadProps extends React.HTMLAttributes<HTMLTableSectionElement> {
|
|
3
|
+
sticky?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare const TableHead: React.ForwardRefExoticComponent<TableHeadProps & React.RefAttributes<HTMLTableSectionElement>>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn";
|
|
4
|
+
export const TableHead = React.forwardRef(({ children, className, sticky, style, ...props }, ref) => (_jsx("thead", { ref: ref, className: cn(sticky && "sticky top-0", className), style: style, ...props, children: children })));
|
|
5
|
+
TableHead.displayName = "TableHead";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn";
|
|
4
|
+
export const TableHeaderCell = React.forwardRef(({ children, className, ...props }, ref) => (_jsx("th", { ref: ref, className: cn(className), ...props, children: children })));
|
|
5
|
+
TableHeaderCell.displayName = "TableHeaderCell";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { cn } from "../../utils/cn";
|
|
4
|
+
export const TableRow = React.forwardRef(({ children, className, ...props }, ref) => (_jsx("tr", { ref: ref, className: cn(className), ...props, children: children })));
|
|
5
|
+
TableRow.displayName = "TableRow";
|
package/dist/main.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! tailwindcss v3.4.6 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{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;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,pre,samp{font-family:ui-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:initial}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:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--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: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.bottom-1{bottom:.25rem}.left-1{left:.25rem}.left-2{left:.5rem}.left-3{left:.75rem}.right-1{right:.25rem}.top-0{top:0}.top-1{top:.25rem}.top-10{top:2.5rem}.top-16{top:4rem}.top-2{top:.5rem}.top-3{top:.75rem}.z-10{z-index:10}.z-\[1000\]{z-index:1000}.order-first{order:-9999}.order-last{order:9999}.col-span-6{grid-column:span 6/span 6}.m-0{margin:0}.m-2{margin:.5rem}.m-4{margin:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-auto{margin-top:auto;margin-bottom:auto}.-ml-\[20px\]{margin-left:-20px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mr-2{margin-right:.5rem}.mr-8{margin-right:2rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-3{height:.75rem}.h-36{height:9rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[100\%\]{height:100%}.h-\[100px\]{height:100px}.h-\[30px\]{height:30px}.h-\[32px\]{height:32px}.h-\[80px\]{height:80px}.h-\[fit-content\]{height:-moz-fit-content;height:fit-content}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-0{max-height:0}.max-h-60{max-height:15rem}.max-h-96{max-height:24rem}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.max-h-full{max-height:100%}.min-h-20{min-height:5rem}.min-h-72{min-height:18rem}.min-h-96{min-height:24rem}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-72{width:18rem}.w-8{width:2rem}.w-96{width:24rem}.w-\[10\%\]{width:10%}.w-\[100px\]{width:100px}.w-\[30px\]{width:30px}.w-\[40rem\]{width:40rem}.w-\[80px\]{width:80px}.w-\[fit-content\]{width:-moz-fit-content;width:fit-content}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-14{min-width:3.5rem}.min-w-\[120px\]{min-width:120px}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.min-w-navDropDown{min-width:25em}.max-w-72{max-width:18rem}.max-w-\[320px\]{max-width:320px}.max-w-\[408px\]{max-width:408px}.max-w-pageSectionMaxWidth{max-width:1500px}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-shrink-0{flex-shrink:0}.rotate-180{--tw-rotate:180deg}.rotate-180,.transform{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))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.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}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.gap-\[4px\]{gap:4px}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-12{row-gap:3rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px*var(--tw-divide-x-reverse));border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-scroll{overflow-x:scroll}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-none{border-style:none}.border-\[\#00B9A8\]{--tw-border-opacity:1;border-color:rgb(0 185 168/var(--tw-border-opacity))}.border-\[\#DFE4EA\]{--tw-border-opacity:1;border-color:rgb(223 228 234/var(--tw-border-opacity))}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity))}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.border-b-blue-700{--tw-border-opacity:1;border-bottom-color:rgb(29 78 216/var(--tw-border-opacity))}.border-b-teal-700{--tw-border-opacity:1;border-bottom-color:rgb(15 118 110/var(--tw-border-opacity))}.bg-\[\#9ca3af\]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity))}.bg-\[\#DAF8E6\]{--tw-bg-opacity:1;background-color:rgb(218 248 230/var(--tw-bg-opacity))}.bg-\[\#DBEAFE\]{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-cyan-700{--tw-gradient-from:#0e7490 var(--tw-gradient-from-position);--tw-gradient-to:#0e749000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-900{--tw-gradient-to:#1e3a8a var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.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-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[10px\]{padding-left:10px;padding-right:10px}.px-\[8px\]{padding-left:8px;padding-right:8px}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-\[3px\]{padding-top:3px;padding-bottom:3px}.py-\[4px\]{padding-top:4px;padding-bottom:4px}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-1{padding-left:.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace}.font-sans{font-family:ui-sans-serif}.font-serif{font-family:ui-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl,.text-4xl{font-size:2.25rem}.text-4xl{line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.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}.uppercase{text-transform:uppercase}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px 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:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[max-height\]{transition-property:max-height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-150{transition-delay:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-1:hover,.hover\:scale-110:hover{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))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-none:hover{border-style:none}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity))}.hover\:border-green-900:hover{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}.hover\:border-teal-500:hover{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity))}.hover\:bg-\[\#FFEBEE\]:hover{--tw-bg-opacity:1;background-color:rgb(255 235 238/var(--tw-bg-opacity))}.hover\:bg-black:hover{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}.hover\:bg-teal-700:hover{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity))}.hover\:bg-teal-800:hover{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity))}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-inner:hover{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 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)}.group:hover .group-hover\:bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}@media not all and (min-width:1280px){.max-xl\:flex{display:flex}.max-xl\:hidden{display:none}.max-xl\:justify-end{justify-content:flex-end}.max-xl\:gap-1{gap:.25rem}.max-xl\:gap-10{gap:2.5rem}.max-xl\:px-2{padding-left:.5rem;padding-right:.5rem}.max-xl\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media not all and (min-width:1024px){.max-lg\:flex{display:flex}.max-lg\:w-full{width:100%}.max-lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.max-lg\:flex-col{flex-direction:column}.max-lg\:justify-between{justify-content:space-between}.max-lg\:justify-items-center{justify-items:center}.max-lg\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.max-lg\:gap-y-12{row-gap:3rem}.max-lg\:gap-y-24{row-gap:6rem}.max-lg\:text-xl{font-size:1.25rem;line-height:1.75rem}.max-lg\:transition-none{transition-property:none}.max-lg\:hover\:transform-none:hover{transform:none}}@media not all and (min-width:768px){.max-md\:flex{display:flex}.max-md\:hidden{display:none}.max-md\:gap-12{gap:3rem}.max-md\:p-0{padding:0}.max-md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media not all and (min-width:640px){.max-sm\:mb-1{margin-bottom:.25rem}.max-sm\:mb-2{margin-bottom:.5rem}.max-sm\:flex{display:flex}.max-sm\:hidden{display:none}.max-sm\:w-1\/2{width:50%}.max-sm\:w-3\/4{width:75%}.max-sm\:w-\[90\%\]{width:90%}.max-sm\:w-full{width:100%}.max-sm\:flex-row{flex-direction:row}.max-sm\:flex-col{flex-direction:column}.max-sm\:items-end{align-items:flex-end}.max-sm\:justify-between{justify-content:space-between}.max-sm\:gap-8{gap:2rem}.max-sm\:p-2{padding:.5rem}.max-sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.max-sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.max-sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:640px){.sm\:static{position:static}.sm\:left-5{left:1.25rem}.sm\:top-5{top:1.25rem}.sm\:m-20{margin:5rem}.sm\:m-5{margin:1.25rem}.sm\:mb-0{margin-bottom:0}.sm\:mb-2{margin-bottom:.5rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:ml-5{margin-left:1.25rem}.sm\:mt-0{margin-top:0}.sm\:mt-20{margin-top:5rem}.sm\:mt-4{margin-top:1rem}.sm\:mt-auto{margin-top:auto}.sm\:h-20{height:5rem}.sm\:h-64{height:16rem}.sm\:h-8{height:2rem}.sm\:h-\[100px\]{height:100px}.sm\:h-\[120px\]{height:120px}.sm\:h-\[255px\]{height:255px}.sm\:h-\[300px\]{height:300px}.sm\:h-\[350px\]{height:350px}.sm\:h-\[40px\]{height:40px}.sm\:h-\[500px\]{height:500px}.sm\:h-auto{height:auto}.sm\:w-24{width:6rem}.sm\:w-8{width:2rem}.sm\:w-\[100px\]{width:100px}.sm\:w-\[120px\]{width:120px}.sm\:w-\[244px\]{width:244px}.sm\:w-\[300px\]{width:300px}.sm\:w-auto{width:auto}.sm\:min-w-\[150px\]{min-width:150px}.sm\:max-w-\[408px\]{max-width:408px}.sm\:max-w-full{max-width:100%}.sm\:flex-row{flex-direction:row}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:px-\[14px\]{padding-left:14px;padding-right:14px}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:py-\[8px\]{padding-top:8px;padding-bottom:8px}.sm\:pb-5{padding-bottom:1.25rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:768px){.md\:p-8{padding:2rem}.md\:text-3xl{font-size:2.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:max-h-view-page{max-height:1000px}.lg\:gap-10{gap:2.5rem}.lg\:p-10{padding:2.5rem}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width:1536px){.\32xl\:flex{display:flex}}.rtl\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.\[\&\:has\(\:focus-visible\)\]\:ring-2:has(: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)}
|
|
1
|
+
*,:after,:before{--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:rgba(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:rgba(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: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{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;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,pre,samp{font-family:ui-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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-2{right:-.5rem}.-right-4{right:-1rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-1\.5{bottom:.375rem}.bottom-4{bottom:1rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-4{left:1rem}.left-\[10px\]{left:10px}.left-\[3px\]{left:3px}.left-\[5px\]{left:5px}.left-full{left:100%}.right-0{right:0}.right-16{right:4rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-6{right:1.5rem}.right-full{right:100%}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-12{top:3rem}.top-16{top:4rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-6{top:1.5rem}.top-\[-14px\]{top:-14px}.top-\[-5px\]{top:-5px}.top-\[10px\]{top:10px}.top-\[12px\]{top:12px}.top-\[3px\]{top:3px}.top-\[5px\]{top:5px}.top-\[8px\]{top:8px}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[9989\]{z-index:9989}.order-first{order:-9999}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.m-0{margin:0}.m-2{margin:.5rem}.m-4{margin:1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-20{margin-top:5rem;margin-bottom:5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-auto{margin-top:auto;margin-bottom:auto}.-ml-\[20px\]{margin-left:-20px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-8{margin-right:2rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.size-5{width:1.25rem;height:1.25rem}.size-80{width:20rem;height:20rem}.size-96{width:24rem;height:24rem}.size-\[18px\]{width:18px;height:18px}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-18px{height:18px}.h-2{height:.5rem}.h-20{height:5rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-36{height:9rem}.h-4{height:1rem}.h-42px{height:42px}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-72{height:18rem}.h-8{height:2rem}.h-\[1\.25rem\]{height:1.25rem}.h-\[100\%\]{height:100%}.h-\[100px\]{height:100px}.h-\[300px\]{height:300px}.h-\[30px\]{height:30px}.h-\[32px\]{height:32px}.h-\[50px\]{height:50px}.h-\[75px\]{height:75px}.h-\[80px\]{height:80px}.h-\[9px\]{height:9px}.h-\[fit-content\]{height:-moz-fit-content;height:fit-content}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0}.max-h-11{max-height:2.75rem}.max-h-16{max-height:4rem}.max-h-36{max-height:9rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[300px\]{max-height:300px}.max-h-fit{max-height:-moz-fit-content;max-height:fit-content}.max-h-full{max-height:100%}.min-h-12{min-height:3rem}.min-h-20{min-height:5rem}.min-h-72{min-height:18rem}.min-h-8{min-height:2rem}.min-h-96{min-height:24rem}.min-h-\[40px\]{min-height:40px}.min-h-fit{min-height:-moz-fit-content;min-height:fit-content}.min-h-full{min-height:100%}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-18px{width:18px}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-26px{width:26px}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-42px{width:42px}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-96{width:24rem}.w-\[10\%\]{width:10%}.w-\[100px\]{width:100px}.w-\[200px\]{width:200px}.w-\[2rem\]{width:2rem}.w-\[300px\]{width:300px}.w-\[30px\]{width:30px}.w-\[344px\]{width:344px}.w-\[40rem\]{width:40rem}.w-\[425px\]{width:425px}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-\[75px\]{width:75px}.w-\[80px\]{width:80px}.w-\[9px\]{width:9px}.w-\[fit-content\]{width:-moz-fit-content;width:fit-content}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-10{min-width:2.5rem}.min-w-14{min-width:3.5rem}.min-w-20{min-width:5rem}.min-w-28{min-width:7rem}.min-w-4{min-width:1rem}.min-w-40{min-width:10rem}.min-w-44{min-width:11rem}.min-w-52{min-width:13rem}.min-w-96{min-width:24rem}.min-w-\[120px\]{min-width:120px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[250px\]{min-width:250px}.min-w-\[300px\]{min-width:300px}.min-w-\[700px\]{min-width:700px}.min-w-full{min-width:100%}.min-w-navDropDown{min-width:25em}.max-w-14{max-width:3.5rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-44{max-width:11rem}.max-w-52{max-width:13rem}.max-w-72{max-width:18rem}.max-w-\[180px\]{max-width:180px}.max-w-\[250px\]{max-width:250px}.max-w-\[320px\]{max-width:320px}.max-w-\[408px\]{max-width:408px}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-lg{max-width:32rem}.max-w-pageSectionMaxWidth{max-width:1500px}.flex-1{flex:1 1 0%}.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{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))}.-translate-y-1\/2{--tw-translate-y:-50%}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-180{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))}.rotate-180{--tw-rotate:180deg}.scale-0{--tw-scale-x:0;--tw-scale-y:0}.scale-0,.transform{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))}.cursor-default{cursor:default}.cursor-none{cursor:none}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.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}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-12{row-gap:3rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.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*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px*var(--tw-divide-x-reverse));border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.text-nowrap{text-wrap:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-tl-none{border-top-left-radius:0}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-4{border-width:4px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-none{border-style:none}.border-\[\#00B9A8\]{--tw-border-opacity:1;border-color:rgb(0 185 168/var(--tw-border-opacity,1))}.border-\[\#DFE4EA\]{--tw-border-opacity:1;border-color:rgb(223 228 234/var(--tw-border-opacity,1))}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity,1))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.border-orange-900{--tw-border-opacity:1;border-color:rgb(124 45 18/var(--tw-border-opacity,1))}.border-purple-300{--tw-border-opacity:1;border-color:rgb(216 180 254/var(--tw-border-opacity,1))}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(248 250 252/var(--tw-border-opacity,1))}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity,1))}.border-b-blue-700{--tw-border-opacity:1;border-bottom-color:rgb(29 78 216/var(--tw-border-opacity,1))}.border-b-teal-700{--tw-border-opacity:1;border-bottom-color:rgb(15 118 110/var(--tw-border-opacity,1))}.bg-\[\#9ca3af\]{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-\[\#DAF8E6\]{--tw-bg-opacity:1;background-color:rgb(218 248 230/var(--tw-bg-opacity,1))}.bg-\[\#DBEAFE\]{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-200{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity,1))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/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-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/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-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/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-200{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity,1))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-pink-100{--tw-bg-opacity:1;background-color:rgb(252 231 243/var(--tw-bg-opacity,1))}.bg-pink-300{--tw-bg-opacity:1;background-color:rgb(249 168 212/var(--tw-bg-opacity,1))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgb(233 213 255/var(--tw-bg-opacity,1))}.bg-purple-300{--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-200{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity,1))}.bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity,1))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity,1))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.bg-teal-700{--tw-bg-opacity:1;background-color:rgb(15 118 110/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-none{background-image:none}.from-cyan-700{--tw-gradient-from:#0e7490 var(--tw-gradient-from-position);--tw-gradient-to:rgba(14,116,144,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-900{--tw-gradient-to:#1e3a8a var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-no-repeat{background-repeat:no-repeat}.fill-blue-500{fill:#3b82f6}.fill-current{fill:currentColor}.fill-red-500{fill:#ef4444}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.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-5{padding-left:1.25rem;padding-right:1.25rem}.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-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-1{padding-left:.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-5{padding-right:1.25rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-\[1px\]{padding-top:1px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace}.font-sans{font-family:ui-sans-serif}.font-serif{font-family:ui-serif}.text-11px{font-size:11px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl,.text-4xl{font-size:2.25rem}.text-4xl{line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.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}.text-xxs{font-size:.6rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-\[18px\]{line-height:18px}.leading-relaxed{line-height:1.625}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/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-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity,1))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity,1))}.text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/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-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity,1))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity,1))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity,1))}.text-teal-800{--tw-text-opacity:1;color:rgb(17 94 89/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-inner{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(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)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.outline-0{outline-width:0}.blur{--tw-blur:blur(8px)}.blur,.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[max-height\]{transition-property:max-height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-150{transition-delay:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.placeholder\:text-green-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.placeholder\:text-green-500::placeholder{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[3px\]:after{content:var(--tw-content);left:3px}.after\:left-\[4px\]:after{content:var(--tw-content);left:4px}.after\:top-1:after{content:var(--tw-content);top:.25rem}.after\:top-\[4\.5px\]:after{content:var(--tw-content);top:4.5px}.after\:h-3:after{content:var(--tw-content);height:.75rem}.after\:h-\[19px\]:after{content:var(--tw-content);height:19px}.after\:w-3:after{content:var(--tw-content);width:.75rem}.after\:w-\[19px\]:after{content:var(--tw-content);width:19px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-gray-300:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.after\:bg-purple-300:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(216 180 254/var(--tw-bg-opacity,1))}.after\:bg-red-300:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.checked\:border-blue-600:checked{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.checked\:bg-blue-600:checked{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-1:hover,.hover\:scale-105:hover{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))}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1;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))}.hover\:cursor-not-allowed:hover{cursor:not-allowed}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-2:hover{border-width:2px}.hover\:border-none:hover{border-style:none}.hover\:border-black:hover{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.hover\:border-blue-500:hover{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.hover\:border-blue-700:hover{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity,1))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.hover\:border-green-500:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.hover\:border-green-900:hover{--tw-border-opacity:1;border-color:rgb(20 83 45/var(--tw-border-opacity,1))}.hover\:border-red-700:hover{--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity,1))}.hover\:border-teal-500:hover{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity,1))}.hover\:border-teal-600:hover{--tw-border-opacity:1;border-color:rgb(13 148 136/var(--tw-border-opacity,1))}.hover\:bg-\[\#FFEBEE\]:hover{--tw-bg-opacity:1;background-color:rgb(255 235 238/var(--tw-bg-opacity,1))}.hover\:bg-black:hover{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.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-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/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-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/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-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.hover\:bg-purple-500:hover{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity,1))}.hover\:bg-sky-600:hover{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity,1))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.hover\:bg-teal-800:hover{--tw-bg-opacity:1;background-color:rgb(17 94 89/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-none:hover{background-image:none}.hover\:text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.hover\:text-neutral-400:hover{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity,1))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-inner:hover{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 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)}.focus\:border-l-2:focus{border-left-width:2px}.focus\:border-blue-600:focus{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline-4:focus{outline-width:4px}.focus\:ring-0: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(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-1:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-1: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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.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-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity,1))}.focus\:ring-transparent:focus{--tw-ring-color:transparent}.disabled\:opacity-40:disabled{opacity:.4}.group:hover .group-hover\:inline{display:inline}.group:hover .group-hover\:bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.group:hover .group-hover\:bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.group:hover .group-hover\:text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.peer:checked~.peer-checked\:scale-100{--tw-scale-x:1;--tw-scale-y:1;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))}.peer:checked~.peer-checked\:opacity-100{opacity:1}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x:100%;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))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:after\:bg-purple-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:after\:bg-red-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:after\:bg-sky-500:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}@media not all and (min-width:1280px){.max-xl\:flex{display:flex}.max-xl\:hidden{display:none}.max-xl\:justify-end{justify-content:flex-end}.max-xl\:gap-1{gap:.25rem}.max-xl\:gap-10{gap:2.5rem}.max-xl\:px-2{padding-left:.5rem;padding-right:.5rem}.max-xl\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media not all and (min-width:1024px){.max-lg\:flex{display:flex}.max-lg\:w-full{width:100%}.max-lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.max-lg\:flex-col{flex-direction:column}.max-lg\:justify-between{justify-content:space-between}.max-lg\:justify-items-center{justify-items:center}.max-lg\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.max-lg\:gap-y-12{row-gap:3rem}.max-lg\:gap-y-24{row-gap:6rem}.max-lg\:text-xl{font-size:1.25rem;line-height:1.75rem}.max-lg\:transition-none{transition-property:none}.max-lg\:hover\:transform-none:hover{transform:none}}@media not all and (min-width:768px){.max-md\:flex{display:flex}.max-md\:hidden{display:none}.max-md\:gap-12{gap:3rem}.max-md\:p-0{padding:0}.max-md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media not all and (min-width:640px){.max-sm\:mb-1{margin-bottom:.25rem}.max-sm\:mb-2{margin-bottom:.5rem}.max-sm\:flex{display:flex}.max-sm\:hidden{display:none}.max-sm\:w-1\/2{width:50%}.max-sm\:w-3\/4{width:75%}.max-sm\:w-\[90\%\]{width:90%}.max-sm\:w-full{width:100%}.max-sm\:flex-row{flex-direction:row}.max-sm\:flex-col{flex-direction:column}.max-sm\:items-end{align-items:flex-end}.max-sm\:justify-between{justify-content:space-between}.max-sm\:gap-8{gap:2rem}.max-sm\:p-2{padding:.5rem}.max-sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.max-sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.max-sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:640px){.sm\:left-5{left:1.25rem}.sm\:top-5{top:1.25rem}.sm\:m-20{margin:5rem}.sm\:m-5{margin:1.25rem}.sm\:mb-0{margin-bottom:0}.sm\:mb-2{margin-bottom:.5rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:ml-5{margin-left:1.25rem}.sm\:mt-0{margin-top:0}.sm\:mt-20{margin-top:5rem}.sm\:mt-4{margin-top:1rem}.sm\:mt-auto{margin-top:auto}.sm\:h-20{height:5rem}.sm\:h-64{height:16rem}.sm\:h-8{height:2rem}.sm\:h-\[100px\]{height:100px}.sm\:h-\[120px\]{height:120px}.sm\:h-\[255px\]{height:255px}.sm\:h-\[300px\]{height:300px}.sm\:h-\[350px\]{height:350px}.sm\:h-\[40px\]{height:40px}.sm\:h-\[500px\]{height:500px}.sm\:h-auto{height:auto}.sm\:w-24{width:6rem}.sm\:w-8{width:2rem}.sm\:w-\[100px\]{width:100px}.sm\:w-\[120px\]{width:120px}.sm\:w-\[244px\]{width:244px}.sm\:w-\[300px\]{width:300px}.sm\:w-auto{width:auto}.sm\:min-w-\[150px\]{min-width:150px}.sm\:max-w-\[408px\]{max-width:408px}.sm\:max-w-full{max-width:100%}.sm\:flex-row{flex-direction:row}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-5{padding-bottom:1.25rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width:768px){.md\:w-full{width:100%}.md\:p-8{padding:2rem}.md\:text-center{text-align:center}.md\:text-3xl{font-size:2.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:max-h-view-page{max-height:1000px}.lg\:gap-10{gap:2.5rem}.lg\:p-10{padding:2.5rem}.lg\:text-center{text-align:center}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-3xl,.lg\:text-4xl{font-size:2.25rem}.lg\:text-4xl{line-height:2.5rem}}@media (min-width:1536px){.\32xl\:flex{display:flex}}.rtl\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.\[\&\:has\(\:focus-visible\)\]\:ring-2:has(: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)}
|
|
@@ -114,19 +114,26 @@ export function assembleOptionsSort(input) {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
export function urlEncode(input, encodeSpecialChars = true) {
|
|
117
|
-
if (
|
|
118
|
-
|
|
117
|
+
if (input == null) {
|
|
118
|
+
return "";
|
|
119
|
+
}
|
|
120
|
+
if (encodeSpecialChars) {
|
|
121
|
+
// Encode special URL characters including # which marks fragment identifiers
|
|
122
|
+
input = input.replace(/[%&?#]/g, (match) => {
|
|
119
123
|
return encodeURIComponent(match);
|
|
120
124
|
});
|
|
125
|
+
if (!input) {
|
|
126
|
+
return "";
|
|
127
|
+
}
|
|
121
128
|
input = input.replace(/[!'()*\-._~,]/g, (c) => {
|
|
122
129
|
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
123
130
|
});
|
|
124
131
|
return input;
|
|
125
132
|
}
|
|
126
133
|
else {
|
|
127
|
-
return encodeURIComponent(input);
|
|
134
|
+
return input ? encodeURIComponent(input) : "";
|
|
128
135
|
}
|
|
129
136
|
}
|
|
130
137
|
export function toCamelCase(slug) {
|
|
131
|
-
return slug.replace(/-([a-z])/g, (letter) => letter.toUpperCase());
|
|
138
|
+
return slug.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
132
139
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the name of the API endpoint currently being used (e.g. "alpha", "beta", "production").
|
|
3
|
+
* This is used by the EnvironmentBadge to show developers which backend they are talking to.
|
|
4
|
+
*
|
|
5
|
+
* How endpoints are determined:
|
|
6
|
+
* - In "development" mode (local dev server), the endpoint is read from an environment variable.
|
|
7
|
+
* Vite supports hostname-specific overrides: if your local hostname is "localhost", it looks
|
|
8
|
+
* for VITE_API_LOCALHOST first, then falls back to VITE_API. The value is expected to be a URL
|
|
9
|
+
* like "https://api.alpha.togahub.com", and we extract the subdomain ("alpha") from that URL.
|
|
10
|
+
* This mirrors exactly how axiosInstance picks its base URL, so the badge always shows the
|
|
11
|
+
* same endpoint the app is actually making API calls to.
|
|
12
|
+
*
|
|
13
|
+
* - In any named environment mode (alpha, beta, gamma, etc.), the mode name IS the endpoint name,
|
|
14
|
+
* so we just return it directly.
|
|
15
|
+
*
|
|
16
|
+
* - In production mode, the EnvironmentBadge is hidden entirely, so this function is never called.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getEndPointFromEnvironment: () => string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the name of the API endpoint currently being used (e.g. "alpha", "beta", "production").
|
|
3
|
+
* This is used by the EnvironmentBadge to show developers which backend they are talking to.
|
|
4
|
+
*
|
|
5
|
+
* How endpoints are determined:
|
|
6
|
+
* - In "development" mode (local dev server), the endpoint is read from an environment variable.
|
|
7
|
+
* Vite supports hostname-specific overrides: if your local hostname is "localhost", it looks
|
|
8
|
+
* for VITE_API_LOCALHOST first, then falls back to VITE_API. The value is expected to be a URL
|
|
9
|
+
* like "https://api.alpha.togahub.com", and we extract the subdomain ("alpha") from that URL.
|
|
10
|
+
* This mirrors exactly how axiosInstance picks its base URL, so the badge always shows the
|
|
11
|
+
* same endpoint the app is actually making API calls to.
|
|
12
|
+
*
|
|
13
|
+
* - In any named environment mode (alpha, beta, gamma, etc.), the mode name IS the endpoint name,
|
|
14
|
+
* so we just return it directly.
|
|
15
|
+
*
|
|
16
|
+
* - In production mode, the EnvironmentBadge is hidden entirely, so this function is never called.
|
|
17
|
+
*/
|
|
18
|
+
export const getEndPointFromEnvironment = () => {
|
|
19
|
+
switch (import.meta.env.MODE) {
|
|
20
|
+
case "development": {
|
|
21
|
+
// Build the hostname-specific env var key, e.g. "VITE_API_LOCALHOST" or "VITE_API_MYAPP"
|
|
22
|
+
// This matches the same lookup axiosInstance uses for its base URL.
|
|
23
|
+
const hostKey = "VITE_API_" +
|
|
24
|
+
window.location.hostname.toUpperCase().split(".")[0];
|
|
25
|
+
// Prefer the hostname-specific variable; fall back to the generic VITE_API
|
|
26
|
+
const baseUrl = import.meta.env[hostKey] ||
|
|
27
|
+
import.meta.env.VITE_API ||
|
|
28
|
+
"";
|
|
29
|
+
// Extract the environment name from the URL, e.g. "https://api.alpha.togahub.com" → "alpha"
|
|
30
|
+
const match = baseUrl.match(/api\.([\w-]+)\.togahub\.com/);
|
|
31
|
+
return match ? match[1] : "production";
|
|
32
|
+
}
|
|
33
|
+
// For named build modes, the mode string is the environment name (e.g. MODE="alpha" → "alpha")
|
|
34
|
+
case "alpha":
|
|
35
|
+
case "beta":
|
|
36
|
+
case "gamma":
|
|
37
|
+
case "sprint":
|
|
38
|
+
case "stage":
|
|
39
|
+
case "test":
|
|
40
|
+
return import.meta.env.MODE;
|
|
41
|
+
default:
|
|
42
|
+
return "Unknown";
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export declare const getFontAwesomeIcon: (iconName: string, iconStyle?: "solid" | "regular" | "light" | undefined
|
|
2
|
+
export declare const getFontAwesomeIcon: (iconName: string, iconStyle?: "solid" | "regular" | "light" | undefined, options?: {
|
|
3
|
+
size?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
style?: React.CSSProperties;
|
|
6
|
+
}) => React.ReactElement | null;
|
|
@@ -3,7 +3,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
|
3
3
|
import * as SolidIcons from "@fortawesome/pro-solid-svg-icons";
|
|
4
4
|
import * as RegularIcons from "@fortawesome/pro-regular-svg-icons";
|
|
5
5
|
import * as LightIcons from "@fortawesome/pro-light-svg-icons";
|
|
6
|
-
export const getFontAwesomeIcon = (iconName, iconStyle = "solid") => {
|
|
6
|
+
export const getFontAwesomeIcon = (iconName, iconStyle = "solid", options) => {
|
|
7
7
|
try {
|
|
8
8
|
const iconKey = `fa${iconName.charAt(0).toUpperCase()}${iconName.slice(1)}`;
|
|
9
9
|
let icon;
|
|
@@ -23,7 +23,11 @@ export const getFontAwesomeIcon = (iconName, iconStyle = "solid") => {
|
|
|
23
23
|
if (!icon) {
|
|
24
24
|
throw new Error(`Icon not found: ${iconKey}`);
|
|
25
25
|
}
|
|
26
|
-
return _jsx(FontAwesomeIcon, { icon: icon
|
|
26
|
+
return (_jsx(FontAwesomeIcon, { icon: icon, className: options?.className,
|
|
27
|
+
// FontAwesome's style prop is typed CSSProperties & CSSVariables, which
|
|
28
|
+
// requires a `--fa-*` custom-property index signature that plain
|
|
29
|
+
// CSSProperties lacks. Widen the value to satisfy that index signature.
|
|
30
|
+
style: options?.style }));
|
|
27
31
|
}
|
|
28
32
|
catch (error) {
|
|
29
33
|
console.error(`Error loading Font Awesome icon: ${iconName}`, error);
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agilant/toga-blox",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
5
|
-
"description": "",
|
|
4
|
+
"version": "1.0.315-beta.103",
|
|
5
|
+
"description": "Toga-Blox is a comprehensive and reusable React component library",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"scripts": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@storybook/addon-viewport": "^7.6.10",
|
|
31
31
|
"@tanstack/react-virtual": "^3.1.3",
|
|
32
32
|
"@tanstack/virtual-core": "^3.1.3",
|
|
33
|
-
"axios": "
|
|
33
|
+
"axios": "1.8.4",
|
|
34
34
|
"classnames": "^2.5.1",
|
|
35
35
|
"clsx": "^2.1.1",
|
|
36
36
|
"dayjs": "^1.11.19",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"@tanstack/react-query": "^5.59.19",
|
|
67
67
|
"@tanstack/react-query-devtools": "^5.59.19",
|
|
68
68
|
"@tanstack/react-query-persist-client": "^5.59.20",
|
|
69
|
+
"@tanstack/react-table": "^8.21.3",
|
|
69
70
|
"@testing-library/jest-dom": "^6.6.3",
|
|
70
71
|
"@testing-library/react": "^16.2.0",
|
|
71
72
|
"@testing-library/user-event": "^14.5.2",
|
|
@@ -98,9 +99,8 @@
|
|
|
98
99
|
"@tanstack/react-query": "^5.59.19",
|
|
99
100
|
"@tanstack/react-query-devtools": "^5.59.19",
|
|
100
101
|
"@tanstack/react-query-persist-client": "^5.59.20",
|
|
101
|
-
"axios": "
|
|
102
|
+
"axios": "1.8.4",
|
|
102
103
|
"react-hook-form": "^7.43.9",
|
|
103
104
|
"react-router-dom": "^6.16.0"
|
|
104
|
-
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
|
|
2
|
-
export declare const useApiMutation: <TData = unknown, TError = unknown, TVariables extends Record<string, any> = {}, TContext = unknown>(method: "POST" | "PUT" | "DELETE", route: string, options?: Record<string, any>, mutationOptions?: Omit<UseMutationOptions<TData, TError, TVariables, TContext>, "mutationFn">) => UseMutationResult<TData, TError, TVariables, TContext>;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { useMutation, useQueryClient, } from "@tanstack/react-query";
|
|
2
|
-
import { apiDelete, apiPost, apiPut } from "../api/apiFunctions";
|
|
3
|
-
export const useApiMutation = (method, route, options = {}, mutationOptions) => {
|
|
4
|
-
const queryClient = useQueryClient();
|
|
5
|
-
const mutationFn = (payload) => {
|
|
6
|
-
switch (method) {
|
|
7
|
-
case "POST":
|
|
8
|
-
return apiPost(route, payload, options);
|
|
9
|
-
case "PUT":
|
|
10
|
-
return apiPut(route, payload, options);
|
|
11
|
-
case "DELETE":
|
|
12
|
-
return apiDelete(route, payload, options);
|
|
13
|
-
default:
|
|
14
|
-
throw new Error(`Unsupported method: ${method}`);
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
return useMutation({
|
|
18
|
-
mutationFn,
|
|
19
|
-
onSuccess: () => {
|
|
20
|
-
// Invalidate all queries (or scope it to specific keys)
|
|
21
|
-
queryClient.invalidateQueries();
|
|
22
|
-
},
|
|
23
|
-
...mutationOptions,
|
|
24
|
-
});
|
|
25
|
-
};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { UseQueryOptions, QueryKey } from "@tanstack/react-query";
|
|
2
|
-
export declare const useApiQuery: <TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = readonly unknown[]>(key: TQueryKey, route: string, options?: {}, payload?: {}, queryOptions?: Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, "queryKey" | "queryFn">) => import("@tanstack/react-query").UseQueryResult<TData, TError>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { useQuery } from "@tanstack/react-query";
|
|
2
|
-
import { apiGet } from "../api/apiFunctions";
|
|
3
|
-
export const useApiQuery = (key, route, options = {}, payload = {}, queryOptions) => {
|
|
4
|
-
return useQuery({
|
|
5
|
-
queryKey: key,
|
|
6
|
-
queryFn: () => apiGet(route, options, payload),
|
|
7
|
-
...queryOptions,
|
|
8
|
-
});
|
|
9
|
-
};
|
package/dist/index.d.ts
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
export { default as Badge } from "./components/Badge";
|
|
2
|
-
export * from "./components/Badge";
|
|
3
|
-
export { default as BaseButton } from "./components/BaseButton";
|
|
4
|
-
export * from "./components/BaseButton";
|
|
5
|
-
export { default as BaseInput } from "./components/BaseInput";
|
|
6
|
-
export * from "./components/BaseInput";
|
|
7
|
-
export { default as BaseToolTip } from "./components/BaseToolTip";
|
|
8
|
-
export * from "./components/BaseToolTip";
|
|
9
|
-
export { default as Card } from "./components/Card";
|
|
10
|
-
export * from "./components/Card";
|
|
11
|
-
export { default as CounterButton } from "./components/CounterButton";
|
|
12
|
-
export * from "./components/CounterButton";
|
|
13
|
-
export { default as Description } from "./components/Description";
|
|
14
|
-
export * from "./components/Description";
|
|
15
|
-
export { default as Dropdown } from "./components/Dropdown";
|
|
16
|
-
export * from "./components/Dropdown";
|
|
17
|
-
export { default as DropdownContainer } from "./components/DropdownContainer";
|
|
18
|
-
export * from "./components/DropdownContainer";
|
|
19
|
-
export { default as DropDownIconButton } from "./components/DropDownIconButton";
|
|
20
|
-
export * from "./components/DropDownIconButton";
|
|
21
|
-
export { default as DynamicSection } from "./components/DynamicSection";
|
|
22
|
-
export * from "./components/DynamicSection";
|
|
23
|
-
export * from "./components/FeatureList";
|
|
24
|
-
export { default as Footer } from "./components/Footer";
|
|
25
|
-
export * from "./components/Footer";
|
|
26
|
-
export { default as GenericList } from "./components/GenericList";
|
|
27
|
-
export * from "./components/GenericList";
|
|
28
|
-
export { default as GetSupport } from "./components/GetSupport";
|
|
29
|
-
export * from "./components/GetSupport";
|
|
30
|
-
export { default as HamburgerButton } from "./components/HamburgerButton";
|
|
31
|
-
export * from "./components/HamburgerButton";
|
|
32
|
-
export { default as Header } from "./components/Header";
|
|
33
|
-
export * from "./components/Header";
|
|
34
|
-
export { default as HeaderFilterIcon } from "./components/HeaderFilterIcon";
|
|
35
|
-
export * from "./components/HeaderFilterIcon";
|
|
36
|
-
export { default as Hero } from "./components/Hero";
|
|
37
|
-
export * from "./components/Hero";
|
|
38
|
-
export { default as IconButton } from "./components/IconButton";
|
|
39
|
-
export * from "./components/IconButton";
|
|
40
|
-
export { default as Image } from "./components/Image";
|
|
41
|
-
export * from "./components/Image";
|
|
42
|
-
export { default as ImageContainer } from "./components/ImageContainer";
|
|
43
|
-
export * from "./components/ImageContainer";
|
|
44
|
-
export { default as InfoBanner } from "./components/InfoBanner";
|
|
45
|
-
export * from "./components/InfoBanner";
|
|
46
|
-
export { default as InitialsAvatar } from "./components/InitialsAvatar";
|
|
47
|
-
export * from "./components/InitialsAvatar";
|
|
48
|
-
export { default as Input } from "./components/Input";
|
|
49
|
-
export * from "./components/Input";
|
|
50
|
-
export { default as InputAndCheck } from "./components/InputAndCheck";
|
|
51
|
-
export * from "./components/InputAndCheck";
|
|
52
|
-
export { default as MobileMenu } from "./components/MobileMenu";
|
|
53
|
-
export * from "./components/MobileMenu";
|
|
54
|
-
export { default as MultiSelect } from "./components/MultiSelect";
|
|
55
|
-
export * from "./components/MultiSelect";
|
|
56
|
-
export { default as Nav } from "./components/Nav";
|
|
57
|
-
export * from "./components/Nav";
|
|
58
|
-
export { default as NotesList } from "./components/NotesList";
|
|
59
|
-
export * from "./components/NotesList";
|
|
60
|
-
export { default as Page } from "./components/Page";
|
|
61
|
-
export * from "./components/Page";
|
|
62
|
-
export { default as PageSection } from "./components/PageSection";
|
|
63
|
-
export * from "./components/PageSection";
|
|
64
|
-
export { default as PrimaryTableHeader } from "./components/PrimaryTableHeader";
|
|
65
|
-
export * from "./components/PrimaryTableHeader";
|
|
66
|
-
export { default as SearchInput } from "./components/SearchInput";
|
|
67
|
-
export * from "./components/SearchInput";
|
|
68
|
-
export { default as Slider } from "./components/Slider";
|
|
69
|
-
export * from "./components/Slider";
|
|
70
|
-
export { default as SortArrowIcon } from "./components/SortArrowIcon";
|
|
71
|
-
export * from "./components/SortArrowIcon";
|
|
72
|
-
export { default as SortArrows } from "./components/SortArrows";
|
|
73
|
-
export * from "./components/SortArrows";
|
|
74
|
-
export { default as Submenus } from "./components/Submenus";
|
|
75
|
-
export * from "./components/Submenus";
|
|
76
|
-
export { default as TableCell } from "./components/TableCell";
|
|
77
|
-
export * from "./components/TableCell";
|
|
78
|
-
export { default as TableHeaderContent } from "./components/TableHeaderContent";
|
|
79
|
-
export * from "./components/TableHeaderContent";
|
|
80
|
-
export { default as TableHeaderInput } from "./components/TableHeaderInput";
|
|
81
|
-
export * from "./components/TableHeaderInput";
|
|
82
|
-
export { default as TableRow } from "./components/TableRow";
|
|
83
|
-
export * from "./components/TableRow";
|
|
84
|
-
export * from "./components/TabList";
|
|
85
|
-
export { default as Text } from "./components/Text";
|
|
86
|
-
export * from "./components/Text";
|
|
87
|
-
export { default as Toaster } from "./components/Toaster";
|
|
88
|
-
export * from "./components/Toaster";
|
|
89
|
-
export { default as ToggleButton } from "./components/ToggleButton";
|
|
90
|
-
export * from "./components/ToggleButton";
|
|
91
|
-
export * from "./hooks";
|
|
92
|
-
export * from "./utils";
|
|
93
|
-
export * from "./hoc";
|
|
94
|
-
export * from "./reactQuery/queryHelpers";
|
|
95
|
-
export * from "./reactQuery/useApiMutation";
|
|
96
|
-
export * from "./reactQuery/useApiQuery";
|
|
97
|
-
export * from "./api/apiFunctions";
|
|
98
|
-
export * from "./api/auth";
|
|
99
|
-
export * from "./api/axiosInstance";
|
|
100
|
-
export * from "./api/checkSsoAuth";
|
|
101
|
-
export * from "./api/events";
|
|
102
|
-
export * from "./api/genericApi";
|
|
103
|
-
export * from "./api/handleSamlAuth";
|
|
104
|
-
export * from "./api/types";
|
package/dist/index.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
// Components
|
|
2
|
-
export { default as Badge } from "./components/Badge";
|
|
3
|
-
export * from "./components/Badge";
|
|
4
|
-
export { default as BaseButton } from "./components/BaseButton";
|
|
5
|
-
export * from "./components/BaseButton";
|
|
6
|
-
export { default as BaseInput } from "./components/BaseInput";
|
|
7
|
-
export * from "./components/BaseInput";
|
|
8
|
-
export { default as BaseToolTip } from "./components/BaseToolTip";
|
|
9
|
-
export * from "./components/BaseToolTip";
|
|
10
|
-
export { default as Card } from "./components/Card";
|
|
11
|
-
export * from "./components/Card";
|
|
12
|
-
export { default as CounterButton } from "./components/CounterButton";
|
|
13
|
-
export * from "./components/CounterButton";
|
|
14
|
-
export { default as Description } from "./components/Description";
|
|
15
|
-
export * from "./components/Description";
|
|
16
|
-
export { default as Dropdown } from "./components/Dropdown";
|
|
17
|
-
export * from "./components/Dropdown";
|
|
18
|
-
export { default as DropdownContainer } from "./components/DropdownContainer";
|
|
19
|
-
export * from "./components/DropdownContainer";
|
|
20
|
-
export { default as DropDownIconButton } from "./components/DropDownIconButton";
|
|
21
|
-
export * from "./components/DropDownIconButton";
|
|
22
|
-
export { default as DynamicSection } from "./components/DynamicSection";
|
|
23
|
-
export * from "./components/DynamicSection";
|
|
24
|
-
export * from "./components/FeatureList";
|
|
25
|
-
export { default as Footer } from "./components/Footer";
|
|
26
|
-
export * from "./components/Footer";
|
|
27
|
-
export { default as GenericList } from "./components/GenericList";
|
|
28
|
-
export * from "./components/GenericList";
|
|
29
|
-
export { default as GetSupport } from "./components/GetSupport";
|
|
30
|
-
export * from "./components/GetSupport";
|
|
31
|
-
export { default as HamburgerButton } from "./components/HamburgerButton";
|
|
32
|
-
export * from "./components/HamburgerButton";
|
|
33
|
-
export { default as Header } from "./components/Header";
|
|
34
|
-
export * from "./components/Header";
|
|
35
|
-
export { default as HeaderFilterIcon } from "./components/HeaderFilterIcon";
|
|
36
|
-
export * from "./components/HeaderFilterIcon";
|
|
37
|
-
export { default as Hero } from "./components/Hero";
|
|
38
|
-
export * from "./components/Hero";
|
|
39
|
-
export { default as IconButton } from "./components/IconButton";
|
|
40
|
-
export * from "./components/IconButton";
|
|
41
|
-
export { default as Image } from "./components/Image";
|
|
42
|
-
export * from "./components/Image";
|
|
43
|
-
export { default as ImageContainer } from "./components/ImageContainer";
|
|
44
|
-
export * from "./components/ImageContainer";
|
|
45
|
-
export { default as InfoBanner } from "./components/InfoBanner";
|
|
46
|
-
export * from "./components/InfoBanner";
|
|
47
|
-
export { default as InitialsAvatar } from "./components/InitialsAvatar";
|
|
48
|
-
export * from "./components/InitialsAvatar";
|
|
49
|
-
export { default as Input } from "./components/Input";
|
|
50
|
-
export * from "./components/Input";
|
|
51
|
-
export { default as InputAndCheck } from "./components/InputAndCheck";
|
|
52
|
-
export * from "./components/InputAndCheck";
|
|
53
|
-
export { default as MobileMenu } from "./components/MobileMenu";
|
|
54
|
-
export * from "./components/MobileMenu";
|
|
55
|
-
export { default as MultiSelect } from "./components/MultiSelect";
|
|
56
|
-
export * from "./components/MultiSelect";
|
|
57
|
-
export { default as Nav } from "./components/Nav";
|
|
58
|
-
export * from "./components/Nav";
|
|
59
|
-
export { default as NotesList } from "./components/NotesList";
|
|
60
|
-
export * from "./components/NotesList";
|
|
61
|
-
export { default as Page } from "./components/Page";
|
|
62
|
-
export * from "./components/Page";
|
|
63
|
-
export { default as PageSection } from "./components/PageSection";
|
|
64
|
-
export * from "./components/PageSection";
|
|
65
|
-
export { default as PrimaryTableHeader } from "./components/PrimaryTableHeader";
|
|
66
|
-
export * from "./components/PrimaryTableHeader";
|
|
67
|
-
export { default as SearchInput } from "./components/SearchInput";
|
|
68
|
-
export * from "./components/SearchInput";
|
|
69
|
-
export { default as Slider } from "./components/Slider";
|
|
70
|
-
export * from "./components/Slider";
|
|
71
|
-
export { default as SortArrowIcon } from "./components/SortArrowIcon";
|
|
72
|
-
export * from "./components/SortArrowIcon";
|
|
73
|
-
export { default as SortArrows } from "./components/SortArrows";
|
|
74
|
-
export * from "./components/SortArrows";
|
|
75
|
-
export { default as Submenus } from "./components/Submenus";
|
|
76
|
-
export * from "./components/Submenus";
|
|
77
|
-
export { default as TableCell } from "./components/TableCell";
|
|
78
|
-
export * from "./components/TableCell";
|
|
79
|
-
export { default as TableHeaderContent } from "./components/TableHeaderContent";
|
|
80
|
-
export * from "./components/TableHeaderContent";
|
|
81
|
-
export { default as TableHeaderInput } from "./components/TableHeaderInput";
|
|
82
|
-
export * from "./components/TableHeaderInput";
|
|
83
|
-
export { default as TableRow } from "./components/TableRow";
|
|
84
|
-
export * from "./components/TableRow";
|
|
85
|
-
export * from "./components/TabList";
|
|
86
|
-
export { default as Text } from "./components/Text";
|
|
87
|
-
export * from "./components/Text";
|
|
88
|
-
export { default as Toaster } from "./components/Toaster";
|
|
89
|
-
export * from "./components/Toaster";
|
|
90
|
-
export { default as ToggleButton } from "./components/ToggleButton";
|
|
91
|
-
export * from "./components/ToggleButton";
|
|
92
|
-
// Hooks
|
|
93
|
-
export * from "./hooks";
|
|
94
|
-
// Utils
|
|
95
|
-
export * from "./utils";
|
|
96
|
-
// HOC
|
|
97
|
-
export * from "./hoc";
|
|
98
|
-
// React Query helpers
|
|
99
|
-
export * from "./reactQuery/queryHelpers";
|
|
100
|
-
export * from "./reactQuery/useApiMutation";
|
|
101
|
-
export * from "./reactQuery/useApiQuery";
|
|
102
|
-
// API
|
|
103
|
-
export * from "./api/apiFunctions";
|
|
104
|
-
export * from "./api/auth";
|
|
105
|
-
export * from "./api/axiosInstance";
|
|
106
|
-
export * from "./api/checkSsoAuth";
|
|
107
|
-
export * from "./api/events";
|
|
108
|
-
export * from "./api/genericApi";
|
|
109
|
-
export * from "./api/handleSamlAuth";
|
|
110
|
-
export * from "./api/types";
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
export interface Options {
|
|
2
|
-
fields?: any;
|
|
3
|
-
where?: any;
|
|
4
|
-
join?: any;
|
|
5
|
-
ojoin?: any;
|
|
6
|
-
sort?: any;
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
}
|
|
9
|
-
export interface OptionsType {
|
|
10
|
-
transactionId?: string;
|
|
11
|
-
fields?: (string | Field | {
|
|
12
|
-
location: string[];
|
|
13
|
-
shipToAddress: string[];
|
|
14
|
-
})[];
|
|
15
|
-
sort?: any;
|
|
16
|
-
slug?: string;
|
|
17
|
-
id?: string;
|
|
18
|
-
join?: Array<{
|
|
19
|
-
[key: string]: {
|
|
20
|
-
[key: string]: string;
|
|
21
|
-
};
|
|
22
|
-
}>;
|
|
23
|
-
where?: {
|
|
24
|
-
[key: string]: any;
|
|
25
|
-
and?: any[];
|
|
26
|
-
or?: any[];
|
|
27
|
-
};
|
|
28
|
-
recordsPerPage?: number;
|
|
29
|
-
page?: number;
|
|
30
|
-
}
|
|
31
|
-
export interface ExtendedOptionsType extends Omit<OptionsType, "fields"> {
|
|
32
|
-
depth?: number;
|
|
33
|
-
fields?: (string | Field | {
|
|
34
|
-
location: string[];
|
|
35
|
-
shipToAddress: string[];
|
|
36
|
-
})[];
|
|
37
|
-
where?: any;
|
|
38
|
-
join?: any;
|
|
39
|
-
ojoin?: any;
|
|
40
|
-
sort?: any;
|
|
41
|
-
recordsPerPage?: number;
|
|
42
|
-
page?: number;
|
|
43
|
-
}
|
|
44
|
-
export interface Field {
|
|
45
|
-
[key: string]: string | string[] | Field;
|
|
46
|
-
}
|
|
47
|
-
export interface ExtendedOptionsType extends Omit<OptionsType, "fields"> {
|
|
48
|
-
depth?: number;
|
|
49
|
-
fields?: (string | Field | {
|
|
50
|
-
location: string[];
|
|
51
|
-
shipToAddress: string[];
|
|
52
|
-
})[];
|
|
53
|
-
where?: any;
|
|
54
|
-
join?: any;
|
|
55
|
-
ojoin?: any;
|
|
56
|
-
sort?: any;
|
|
57
|
-
recordsPerPage?: number;
|
|
58
|
-
page?: number;
|
|
59
|
-
[key: string]: any;
|
|
60
|
-
}
|
|
61
|
-
export declare function assembleOptions(options: Options): string;
|
|
62
|
-
export declare function assembleOptionsFields(fields: any, prefix?: string): string[];
|
|
63
|
-
export declare function assembleOptionsWhere(input: Record<string, any>): string;
|
|
64
|
-
export declare function assembleOptionsJoin(input: Record<string, any>): string;
|
|
65
|
-
export declare function assembleOptionsSort(input: any): string;
|
|
66
|
-
export declare function urlEncode(input: string, encodeSpecialChars?: boolean): string;
|
|
67
|
-
export declare function toCamelCase(slug: string): string;
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
export function assembleOptions(options) {
|
|
2
|
-
const queryString = new URLSearchParams();
|
|
3
|
-
for (const optionKey in options) {
|
|
4
|
-
const optionVal = options[optionKey];
|
|
5
|
-
switch (optionKey.toLowerCase()) {
|
|
6
|
-
case "fields":
|
|
7
|
-
queryString.set("fields", assembleOptionsFields(optionVal).join(","));
|
|
8
|
-
break;
|
|
9
|
-
case "where":
|
|
10
|
-
queryString.set("where", assembleOptionsWhere(optionVal));
|
|
11
|
-
break;
|
|
12
|
-
case "join":
|
|
13
|
-
queryString.set("join", assembleOptionsJoin(optionVal));
|
|
14
|
-
break;
|
|
15
|
-
case "ojoin":
|
|
16
|
-
queryString.set("ojoin", assembleOptionsJoin(optionVal));
|
|
17
|
-
break;
|
|
18
|
-
case "sort":
|
|
19
|
-
queryString.set("sort", assembleOptionsSort(optionVal));
|
|
20
|
-
break;
|
|
21
|
-
default:
|
|
22
|
-
queryString.set(optionKey, optionVal);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
// Decode URI because URLSearchParams automatically encodes URI components
|
|
26
|
-
return decodeURIComponent(queryString.toString());
|
|
27
|
-
}
|
|
28
|
-
export function assembleOptionsFields(fields, prefix = "") {
|
|
29
|
-
let output = [];
|
|
30
|
-
for (const key in fields) {
|
|
31
|
-
const value = fields[key];
|
|
32
|
-
if (typeof value === "object" && value !== null) {
|
|
33
|
-
let newPrefix = prefix + (isNaN(Number(key)) ? key : "") + ".";
|
|
34
|
-
if (newPrefix === ".") {
|
|
35
|
-
newPrefix = "";
|
|
36
|
-
}
|
|
37
|
-
if (newPrefix.slice(-2) === "..") {
|
|
38
|
-
newPrefix = newPrefix.slice(0, -1);
|
|
39
|
-
}
|
|
40
|
-
output = output.concat(assembleOptionsFields(value, newPrefix));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
output.push(prefix + value);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return output;
|
|
47
|
-
}
|
|
48
|
-
export function assembleOptionsWhere(input) {
|
|
49
|
-
const output = [];
|
|
50
|
-
let operator = "and";
|
|
51
|
-
for (const key in input) {
|
|
52
|
-
const value = input[key];
|
|
53
|
-
operator = key.toUpperCase();
|
|
54
|
-
for (const fieldConditions of value) {
|
|
55
|
-
for (const field in fieldConditions) {
|
|
56
|
-
const conditions = fieldConditions[field];
|
|
57
|
-
const childOperator = field.toUpperCase();
|
|
58
|
-
if (childOperator === "AND" || childOperator === "OR") {
|
|
59
|
-
output.push(assembleOptionsWhere({ [childOperator]: conditions }));
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
for (let comparison in conditions) {
|
|
63
|
-
let conditionValue = conditions[comparison];
|
|
64
|
-
comparison = comparison.replace(/<>/g, "ne");
|
|
65
|
-
comparison = comparison.replace(/>=/g, "ge");
|
|
66
|
-
comparison = comparison.replace(/>/g, "gt");
|
|
67
|
-
comparison = comparison.replace(/<=/g, "le");
|
|
68
|
-
comparison = comparison.replace(/</g, "lt");
|
|
69
|
-
comparison = comparison.replace(/==/g, "eq");
|
|
70
|
-
comparison = comparison.replace(/!=/g, "ne");
|
|
71
|
-
comparison = comparison.replace(/=/g, "eq");
|
|
72
|
-
comparison = comparison.replace(/not/g, "not");
|
|
73
|
-
comparison = comparison.replace(/like/g, "like");
|
|
74
|
-
comparison = comparison.replace(/contains/g, "contains");
|
|
75
|
-
comparison = comparison.replace(/starts/g, "starts");
|
|
76
|
-
comparison = comparison.replace(/ends/g, "ends");
|
|
77
|
-
comparison = comparison.replace(/excludes/g, "excludes");
|
|
78
|
-
conditionValue = urlEncode(conditionValue);
|
|
79
|
-
output.push(`${field}:${comparison}:${conditionValue}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return `(${output.join(`,${operator},`)})`;
|
|
86
|
-
}
|
|
87
|
-
export function assembleOptionsJoin(input) {
|
|
88
|
-
const out = [];
|
|
89
|
-
for (const item of Object.values(input)) {
|
|
90
|
-
let thisJoin = "";
|
|
91
|
-
for (const table in item) {
|
|
92
|
-
const value = item[table];
|
|
93
|
-
thisJoin += table + ":";
|
|
94
|
-
const thisJoinConditions = [];
|
|
95
|
-
for (const fieldA in value) {
|
|
96
|
-
const fieldB = value[fieldA];
|
|
97
|
-
thisJoinConditions.push(`${fieldA}=${fieldB}`);
|
|
98
|
-
}
|
|
99
|
-
thisJoin += thisJoinConditions.join(";");
|
|
100
|
-
}
|
|
101
|
-
out.push(thisJoin);
|
|
102
|
-
}
|
|
103
|
-
return out.join(",");
|
|
104
|
-
}
|
|
105
|
-
export function assembleOptionsSort(input) {
|
|
106
|
-
if (Array.isArray(input)) {
|
|
107
|
-
return input.join(",");
|
|
108
|
-
}
|
|
109
|
-
else if (typeof input === "string") {
|
|
110
|
-
return input;
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
return "";
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
export function urlEncode(input, encodeSpecialChars = true) {
|
|
117
|
-
if (encodeSpecialChars && input) {
|
|
118
|
-
input = input.replace(/[%&?]/g, (match) => {
|
|
119
|
-
return encodeURIComponent(match);
|
|
120
|
-
});
|
|
121
|
-
input = input.replace(/[!'()*\-._~]/g, (c) => {
|
|
122
|
-
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
123
|
-
});
|
|
124
|
-
return input;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
return encodeURIComponent(input);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
export function toCamelCase(slug) {
|
|
131
|
-
return slug.replace(/-([a-z])/g, (letter) => letter.toUpperCase());
|
|
132
|
-
}
|