ikoncomponents 1.6.4 → 1.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +36 -36
  2. package/dist/ikoncomponents/assistant-ui/Assistant.d.ts +16 -2
  3. package/dist/ikoncomponents/assistant-ui/Assistant.js +297 -11
  4. package/dist/ikoncomponents/assistant-ui/agent-dropdown.d.ts +24 -0
  5. package/dist/ikoncomponents/assistant-ui/agent-dropdown.js +16 -0
  6. package/dist/ikoncomponents/assistant-ui/agentTextChatTransport.d.ts +2 -0
  7. package/dist/ikoncomponents/assistant-ui/agentTextChatTransport.js +12 -2
  8. package/dist/ikoncomponents/assistant-ui/thread.d.ts +5 -0
  9. package/dist/ikoncomponents/assistant-ui/thread.js +12 -6
  10. package/dist/ikoncomponents/main-layout/RefreshContext.js +1 -0
  11. package/dist/ikoncomponents/main-layout/footer.js +1 -0
  12. package/dist/ikoncomponents/main-layout/header.js +1 -0
  13. package/dist/ikoncomponents/main-layout/index.js +1 -0
  14. package/dist/ikoncomponents/reload-component/index.d.ts +6 -0
  15. package/dist/ikoncomponents/reload-component/index.js +8 -0
  16. package/dist/ikoncomponents/table/DataTable/index.d.ts +2 -0
  17. package/dist/ikoncomponents/table/DataTable/index.js +9 -0
  18. package/dist/ikoncomponents/table/DataTablePageSize/index.d.ts +1 -0
  19. package/dist/ikoncomponents/table/DataTablePageSize/index.js +16 -0
  20. package/dist/ikoncomponents/table/DataTablePagination/index.d.ts +6 -0
  21. package/dist/ikoncomponents/table/DataTablePagination/index.js +14 -0
  22. package/dist/ikoncomponents/table/DataTableSearch/index.d.ts +1 -0
  23. package/dist/ikoncomponents/table/DataTableSearch/index.js +27 -0
  24. package/dist/ikoncomponents/table/component/DataTable.d.ts +14 -0
  25. package/dist/ikoncomponents/table/component/DataTable.js +10 -0
  26. package/dist/ikoncomponents/table/component/DataTablePageSize.d.ts +1 -0
  27. package/dist/ikoncomponents/table/component/DataTablePageSize.js +16 -0
  28. package/dist/ikoncomponents/table/component/DataTablePagination.d.ts +6 -0
  29. package/dist/ikoncomponents/table/component/DataTablePagination.js +14 -0
  30. package/dist/ikoncomponents/table/component/DataTableSearch.d.ts +1 -0
  31. package/dist/ikoncomponents/table/component/DataTableSearch.js +27 -0
  32. package/dist/ikoncomponents/table/index.d.ts +2 -0
  33. package/dist/ikoncomponents/table/index.js +12 -0
  34. package/dist/ikoncomponents/table/type.d.ts +24 -0
  35. package/dist/ikoncomponents/table/type.js +1 -0
  36. package/dist/index.d.ts +4 -2
  37. package/dist/index.js +3 -1
  38. package/dist/styles.css +162 -1
  39. package/dist/utils/api/loginService/index.js +2 -1
  40. package/package.json +23 -14
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRouter, usePathname, useSearchParams } from "next/navigation";
4
+ export function DataTablePageSize() {
5
+ const router = useRouter();
6
+ const pathname = usePathname();
7
+ const searchParams = useSearchParams();
8
+ const currentSize = searchParams.get("size") || "10";
9
+ const handleSizeChange = (e) => {
10
+ const params = new URLSearchParams(searchParams.toString());
11
+ params.set("size", e.target.value);
12
+ params.set("page", "1");
13
+ router.push(`${pathname}?${params.toString()}`);
14
+ };
15
+ return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: "Rows per page:" }), _jsxs("select", { className: "h-9 rounded-md border border-border bg-background text-foreground px-2 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-primary", value: currentSize, onChange: handleSizeChange, children: [_jsx("option", { value: "10", children: "10" }), _jsx("option", { value: "20", children: "20" }), _jsx("option", { value: "50", children: "50" }), _jsx("option", { value: "100", children: "100" })] })] }));
16
+ }
@@ -0,0 +1,6 @@
1
+ interface PaginationProps {
2
+ totalPages: number;
3
+ currentPage: number;
4
+ }
5
+ export declare function DataTablePagination({ totalPages, currentPage }: PaginationProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRouter, usePathname, useSearchParams } from "next/navigation";
4
+ export function DataTablePagination({ totalPages, currentPage }) {
5
+ const router = useRouter();
6
+ const pathname = usePathname();
7
+ const searchParams = useSearchParams();
8
+ const handlePageChange = (newPage) => {
9
+ const params = new URLSearchParams(searchParams.toString());
10
+ params.set("page", newPage.toString());
11
+ router.push(`${pathname}?${params.toString()}`);
12
+ };
13
+ return (_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("button", { onClick: () => handlePageChange(currentPage - 1), disabled: currentPage <= 1, className: "h-9 px-3 py-1 text-sm font-medium border border-border rounded-md bg-background text-foreground hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: "Previous" }), _jsxs("span", { className: "text-sm text-muted-foreground px-2", children: ["Page ", _jsx("span", { className: "font-semibold", children: currentPage }), " of", " ", _jsx("span", { className: "font-semibold", children: Math.max(totalPages, 1) })] }), _jsx("button", { onClick: () => handlePageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "h-9 px-3 py-1 text-sm font-medium border border-border rounded-md bg-background text-foreground hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: "Next" })] }));
14
+ }
@@ -0,0 +1 @@
1
+ export declare function DataTableSearch(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRouter, usePathname, useSearchParams } from "next/navigation";
4
+ import { useState, useEffect } from "react";
5
+ import { useDebounce } from "use-debounce";
6
+ import { Search } from "lucide-react";
7
+ export function DataTableSearch() {
8
+ const router = useRouter();
9
+ const pathname = usePathname();
10
+ const searchParams = useSearchParams();
11
+ const [searchTerm, setSearchTerm] = useState(searchParams.get("search") || "");
12
+ const [debouncedSearch] = useDebounce(searchTerm, 500);
13
+ useEffect(() => {
14
+ const params = new URLSearchParams(searchParams.toString());
15
+ if (debouncedSearch) {
16
+ params.set("search", debouncedSearch);
17
+ }
18
+ else {
19
+ params.delete("search");
20
+ }
21
+ if (params.get("search") !== searchParams.get("search")) {
22
+ params.set("page", "1");
23
+ router.push(`${pathname}?${params.toString()}`);
24
+ }
25
+ }, [debouncedSearch, pathname, router, searchParams]);
26
+ return (_jsxs("div", { className: "relative w-full max-w-sm", children: [_jsx(Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { type: "text", placeholder: "Search ...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "flex h-9 w-full rounded-md border border-border bg-transparent pl-9 pr-3 py-1 text-sm shadow-sm transition-colors text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary" })] }));
27
+ }
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ export interface ColumnDef<T> {
3
+ header: string | (() => React.ReactNode);
4
+ accessorKey?: keyof T;
5
+ cell?: (row: T) => React.ReactNode;
6
+ }
7
+ interface DataTableProps<T> {
8
+ data: T[];
9
+ columns: ColumnDef<T>[];
10
+ keyExtractor: (row: T) => string | number;
11
+ onRowClick?: (row: T) => void;
12
+ }
13
+ export declare function DataTable<T>({ data, columns, keyExtractor, onRowClick }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { TableHeader, TableRow, TableHead, TableBody, TableCell } from "@/shadcn/table";
3
+ import { Table } from "lucide-react";
4
+ export function DataTable({ data, columns, keyExtractor, onRowClick }) {
5
+ return (_jsx("div", { className: "rounded-md border bg-background shadow-sm overflow-hidden", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsx(TableRow, { className: "bg-muted border-b border-border", children: columns.map((col, index) => (_jsx(TableHead, { className: "font-semibold text-muted-foreground", children: typeof col.header === "function" ? col.header() : col.header }, index))) }) }), _jsx(TableBody, { children: data && data.length > 0 ? (data.map((row) => (_jsx(TableRow, { onClick: () => onRowClick && onRowClick(row), className: `hover:bg-muted/50 transition-colors border-b border-border ${onRowClick ? "cursor-pointer" : ""}`, children: columns.map((col, colIndex) => (_jsx(TableCell, { className: colIndex === 0 ? "font-medium" : "", children: col.cell
6
+ ? col.cell(row)
7
+ : col.accessorKey
8
+ ? String(row[col.accessorKey] || "N/A")
9
+ : null }, colIndex))) }, keyExtractor(onRowClick ? row : row))))) : (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: columns.length, className: "h-24 text-center text-muted-foreground", children: "No records found." }) })) })] }) }));
10
+ }
@@ -0,0 +1 @@
1
+ export declare function DataTablePageSize(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRouter, usePathname, useSearchParams } from "next/navigation";
4
+ export function DataTablePageSize() {
5
+ const router = useRouter();
6
+ const pathname = usePathname();
7
+ const searchParams = useSearchParams();
8
+ const currentSize = searchParams.get("size") || "10";
9
+ const handleSizeChange = (e) => {
10
+ const params = new URLSearchParams(searchParams.toString());
11
+ params.set("size", e.target.value);
12
+ params.set("page", "1");
13
+ router.push(`${pathname}?${params.toString()}`);
14
+ };
15
+ return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground", children: "Rows per page:" }), _jsxs("select", { className: "h-9 rounded-md border border-border bg-background text-foreground px-2 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-primary", value: currentSize, onChange: handleSizeChange, children: [_jsx("option", { value: "10", children: "10" }), _jsx("option", { value: "20", children: "20" }), _jsx("option", { value: "50", children: "50" }), _jsx("option", { value: "100", children: "100" })] })] }));
16
+ }
@@ -0,0 +1,6 @@
1
+ interface PaginationProps {
2
+ totalPages: number;
3
+ currentPage: number;
4
+ }
5
+ export declare function DataTablePagination({ totalPages, currentPage }: PaginationProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRouter, usePathname, useSearchParams } from "next/navigation";
4
+ export function DataTablePagination({ totalPages, currentPage }) {
5
+ const router = useRouter();
6
+ const pathname = usePathname();
7
+ const searchParams = useSearchParams();
8
+ const handlePageChange = (newPage) => {
9
+ const params = new URLSearchParams(searchParams.toString());
10
+ params.set("page", newPage.toString());
11
+ router.push(`${pathname}?${params.toString()}`);
12
+ };
13
+ return (_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("button", { onClick: () => handlePageChange(currentPage - 1), disabled: currentPage <= 1, className: "h-9 px-3 py-1 text-sm font-medium border border-border rounded-md bg-background text-foreground hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: "Previous" }), _jsxs("span", { className: "text-sm text-muted-foreground px-2", children: ["Page ", _jsx("span", { className: "font-semibold", children: currentPage }), " of", " ", _jsx("span", { className: "font-semibold", children: Math.max(totalPages, 1) })] }), _jsx("button", { onClick: () => handlePageChange(currentPage + 1), disabled: currentPage >= totalPages, className: "h-9 px-3 py-1 text-sm font-medium border border-border rounded-md bg-background text-foreground hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors", children: "Next" })] }));
14
+ }
@@ -0,0 +1 @@
1
+ export declare function DataTableSearch(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRouter, usePathname, useSearchParams } from "next/navigation";
4
+ import { useState, useEffect } from "react";
5
+ import { useDebounce } from "use-debounce";
6
+ import { Search } from "lucide-react";
7
+ export function DataTableSearch() {
8
+ const router = useRouter();
9
+ const pathname = usePathname();
10
+ const searchParams = useSearchParams();
11
+ const [searchTerm, setSearchTerm] = useState(searchParams.get("search") || "");
12
+ const [debouncedSearch] = useDebounce(searchTerm, 500);
13
+ useEffect(() => {
14
+ const params = new URLSearchParams(searchParams.toString());
15
+ if (debouncedSearch) {
16
+ params.set("search", debouncedSearch);
17
+ }
18
+ else {
19
+ params.delete("search");
20
+ }
21
+ if (params.get("search") !== searchParams.get("search")) {
22
+ params.set("page", "1");
23
+ router.push(`${pathname}?${params.toString()}`);
24
+ }
25
+ }, [debouncedSearch, pathname, router, searchParams]);
26
+ return (_jsxs("div", { className: "relative w-full max-w-sm", children: [_jsx(Search, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }), _jsx("input", { type: "text", placeholder: "Search ...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "flex h-9 w-full rounded-md border border-border bg-transparent pl-9 pr-3 py-1 text-sm shadow-sm transition-colors text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary" })] }));
27
+ }
@@ -0,0 +1,2 @@
1
+ import { DataTableLayoutProps } from "./type";
2
+ export declare function DataTableLayout<T>({ data, columns, keyExtractor, totalPages, currentPage, filterComponent, actionNode, onRowClick, gridComponent, isLoading, onReload, }: DataTableLayoutProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { LayoutGrid, List } from "lucide-react";
4
+ import { Reload } from "../reload-component";
5
+ import { DataTable } from "./DataTable";
6
+ import { DataTableSearch } from "./DataTableSearch";
7
+ import { DataTablePagination } from "./DataTablePagination";
8
+ import { DataTablePageSize } from "./DataTablePageSize";
9
+ export function DataTableLayout({ data, columns, keyExtractor, totalPages, currentPage, filterComponent, actionNode, onRowClick, gridComponent, isLoading = false, onReload, }) {
10
+ const [viewMode, setViewMode] = useState("list");
11
+ return (_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 mb-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(DataTableSearch, {}), filterComponent && filterComponent] }), _jsxs("div", { className: "flex items-center gap-2", children: [actionNode && actionNode, _jsxs("div", { className: "flex items-center border border-border rounded-md bg-background overflow-hidden h-9", children: [_jsx("button", { onClick: () => setViewMode("list"), className: `px-2.5 h-full flex items-center justify-center transition-colors ${viewMode === "list" ? "bg-muted text-foreground" : "text-muted-foreground hover:bg-muted/50"}`, title: "List View", children: _jsx(List, { className: "w-4 h-4" }) }), _jsx("button", { onClick: () => setViewMode("grid"), className: `px-2.5 h-full flex items-center justify-center transition-colors ${viewMode === "grid" ? "bg-muted text-foreground" : "text-muted-foreground hover:bg-muted/50"}`, title: "Grid View", children: _jsx(LayoutGrid, { className: "w-4 h-4" }) })] })] })] }), _jsxs("div", { className: "relative min-h-[300px]", children: [_jsx(Reload, { isLoading: isLoading, onReload: onReload || (() => window.location.reload()) }), _jsx("div", { className: `transition-all duration-300 ${isLoading ? 'opacity-50 pointer-events-none' : ''}`, children: viewMode === "list" ? (_jsx(DataTable, { data: data, columns: columns, keyExtractor: keyExtractor, onRowClick: onRowClick })) : ((gridComponent ? gridComponent(data) : (_jsx("div", { className: "p-12 text-center text-muted-foreground border border-border border-dashed rounded-md bg-muted/20", children: "Grid view not implemented for this component yet." })))) })] }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 pt-4 border-t border-border mt-4", children: [_jsx(DataTablePageSize, {}), _jsx(DataTablePagination, { totalPages: totalPages, currentPage: currentPage })] })] }));
12
+ }
@@ -0,0 +1,24 @@
1
+ export interface DataTableLayoutProps<T> {
2
+ data: T[];
3
+ columns: ColumnDef<T>[];
4
+ keyExtractor: (row: T) => string | number;
5
+ totalPages: number;
6
+ currentPage: number;
7
+ filterComponent?: React.ReactNode;
8
+ actionNode?: React.ReactNode;
9
+ onRowClick?: (row: T) => void;
10
+ gridComponent?: (data: T[]) => React.ReactNode;
11
+ isLoading?: boolean;
12
+ onReload?: () => void;
13
+ }
14
+ export interface ColumnDef<T> {
15
+ header: string | (() => React.ReactNode);
16
+ accessorKey?: keyof T;
17
+ cell?: (row: T) => React.ReactNode;
18
+ }
19
+ export interface DataTableProps<T> {
20
+ data: T[];
21
+ columns: ColumnDef<T>[];
22
+ keyExtractor: (row: T) => string | number;
23
+ onRowClick?: (row: T) => void;
24
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.d.ts CHANGED
@@ -60,6 +60,9 @@ export { DataTableToolbar } from "./ikoncomponents/data-table/datatable-toolbar"
60
60
  export { getDataTableColumnTitle } from "./ikoncomponents/data-table/function";
61
61
  export { DataTable } from "./ikoncomponents/data-table";
62
62
  export type { DataTableProps, DTColumnsProps, DTExtraParamsProps, DTActionMenuProps, DataTableViewOptionsProps, DTToolBarProps, DataTableFilterProps, DataTableFacetedFilterProps, DataTablePaginationProps, DragDropHeaderProp, } from "./ikoncomponents/data-table/type";
63
+ export { DataTableLayout } from "./ikoncomponents/table";
64
+ export type { DataTableLayoutProps, ColumnDef } from "./ikoncomponents/table/type";
65
+ export { Reload } from "./ikoncomponents/reload-component";
63
66
  export { EChart } from "./ikoncomponents/e-chart";
64
67
  export { FileInput } from "./ikoncomponents/file-input";
65
68
  export { GlowingEffect } from "./ikoncomponents/glowing-effect";
@@ -126,6 +129,7 @@ export { NewImageForm } from "./ikoncomponents/image-cropper-upload/components/n
126
129
  export type { ImageFormProps } from "./ikoncomponents/image-cropper-upload/components/newImageUploadForm";
127
130
  export { WorkInProgress } from "./ikoncomponents/work-in-progress";
128
131
  export { CustomComboboxInput } from "./ikoncomponents/custom-combo-dropdown";
132
+ export { AssistantComponent } from "./ikoncomponents/assistant-ui/Assistant";
129
133
  export { ThemeProvider } from "./utils/theme-provider";
130
134
  export { RadiusProvider, useRadius } from "./utils/border-radius-provider";
131
135
  export { FontProvider, useFont } from "./utils/font-provider";
@@ -136,5 +140,3 @@ export { getValidAccessToken, refreshAccessToken, decodeAccessToken, logOut } fr
136
140
  export type { TokenResponse } from "./utils/token-management/types";
137
141
  export { useIsMobile } from "./hooks/use-mobile";
138
142
  export { useRefresh } from "./ikoncomponents/main-layout/RefreshContext";
139
- export { AssistantComponent } from "./ikoncomponents/assistant-ui/Assistant";
140
- export type { UserData } from "./utils/userType";
package/dist/index.js CHANGED
@@ -55,6 +55,8 @@ export { DataTablePagination } from "./ikoncomponents/data-table/datatable-pagin
55
55
  export { DataTableToolbar } from "./ikoncomponents/data-table/datatable-toolbar";
56
56
  export { getDataTableColumnTitle } from "./ikoncomponents/data-table/function";
57
57
  export { DataTable } from "./ikoncomponents/data-table";
58
+ export { DataTableLayout } from "./ikoncomponents/table";
59
+ export { Reload } from "./ikoncomponents/reload-component";
58
60
  export { EChart } from "./ikoncomponents/e-chart";
59
61
  export { FileInput } from "./ikoncomponents/file-input";
60
62
  export { GlowingEffect } from "./ikoncomponents/glowing-effect";
@@ -106,6 +108,7 @@ export { NewCropperImg } from "./ikoncomponents/image-cropper-upload/components/
106
108
  export { NewImageForm } from "./ikoncomponents/image-cropper-upload/components/newImageUploadForm";
107
109
  export { WorkInProgress } from "./ikoncomponents/work-in-progress";
108
110
  export { CustomComboboxInput } from "./ikoncomponents/custom-combo-dropdown";
111
+ export { AssistantComponent } from "./ikoncomponents/assistant-ui/Assistant";
109
112
  export { ThemeProvider } from "./utils/theme-provider";
110
113
  export { RadiusProvider, useRadius } from "./utils/border-radius-provider";
111
114
  export { FontProvider, useFont } from "./utils/font-provider";
@@ -114,4 +117,3 @@ export { setCookieSession, getCookieSession, clearCookieSession, clearAllCookieS
114
117
  export { getValidAccessToken, refreshAccessToken, decodeAccessToken, logOut } from "./utils/token-management";
115
118
  export { useIsMobile } from "./hooks/use-mobile";
116
119
  export { useRefresh } from "./ikoncomponents/main-layout/RefreshContext";
117
- export { AssistantComponent } from "./ikoncomponents/assistant-ui/Assistant";
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -59,11 +59,14 @@
59
59
  --tracking-widest: 0.1em;
60
60
  --leading-relaxed: 1.625;
61
61
  --radius-xs: 0.125rem;
62
+ --radius-2xl: 1rem;
62
63
  --radius-3xl: 1.5rem;
63
64
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
64
65
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
65
66
  --animate-spin: spin 1s linear infinite;
66
67
  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
68
+ --blur-md: 12px;
69
+ --blur-xl: 24px;
67
70
  --default-transition-duration: 150ms;
68
71
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
69
72
  --default-font-family: var(--font-geist-sans);
@@ -330,6 +333,9 @@
330
333
  .left-2 {
331
334
  left: calc(var(--spacing) * 2);
332
335
  }
336
+ .left-2\.5 {
337
+ left: calc(var(--spacing) * 2.5);
338
+ }
333
339
  .left-\[50\%\] {
334
340
  left: 50%;
335
341
  }
@@ -767,6 +773,9 @@
767
773
  .min-h-\[60px\] {
768
774
  min-height: 60px;
769
775
  }
776
+ .min-h-\[300px\] {
777
+ min-height: 300px;
778
+ }
770
779
  .min-h-screen {
771
780
  min-height: 100vh;
772
781
  }
@@ -956,6 +965,9 @@
956
965
  .min-w-\[8rem\] {
957
966
  min-width: 8rem;
958
967
  }
968
+ .min-w-\[200px\] {
969
+ min-width: 200px;
970
+ }
959
971
  .min-w-\[var\(--radix-popover-trigger-width\)\] {
960
972
  min-width: var(--radix-popover-trigger-width);
961
973
  }
@@ -1210,6 +1222,13 @@
1210
1222
  margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
1211
1223
  }
1212
1224
  }
1225
+ .space-y-6 {
1226
+ :where(& > :not(:last-child)) {
1227
+ --tw-space-y-reverse: 0;
1228
+ margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
1229
+ margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
1230
+ }
1231
+ }
1213
1232
  .space-x-1 {
1214
1233
  :where(& > :not(:last-child)) {
1215
1234
  --tw-space-x-reverse: 0;
@@ -1274,6 +1293,9 @@
1274
1293
  .rounded {
1275
1294
  border-radius: 0.25rem;
1276
1295
  }
1296
+ .rounded-2xl {
1297
+ border-radius: var(--radius-2xl);
1298
+ }
1277
1299
  .rounded-3xl {
1278
1300
  border-radius: var(--radius-3xl);
1279
1301
  }
@@ -1435,6 +1457,12 @@
1435
1457
  .border-border {
1436
1458
  border-color: var(--border);
1437
1459
  }
1460
+ .border-border\/50 {
1461
+ border-color: var(--border);
1462
+ @supports (color: color-mix(in lab, red, red)) {
1463
+ border-color: color-mix(in oklab, var(--border) 50%, transparent);
1464
+ }
1465
+ }
1438
1466
  .border-destructive {
1439
1467
  border-color: var(--destructive);
1440
1468
  }
@@ -1543,6 +1571,18 @@
1543
1571
  .bg-background {
1544
1572
  background-color: var(--background);
1545
1573
  }
1574
+ .bg-background\/60 {
1575
+ background-color: var(--background);
1576
+ @supports (color: color-mix(in lab, red, red)) {
1577
+ background-color: color-mix(in oklab, var(--background) 60%, transparent);
1578
+ }
1579
+ }
1580
+ .bg-background\/80 {
1581
+ background-color: var(--background);
1582
+ @supports (color: color-mix(in lab, red, red)) {
1583
+ background-color: color-mix(in oklab, var(--background) 80%, transparent);
1584
+ }
1585
+ }
1546
1586
  .bg-black {
1547
1587
  background-color: var(--color-black);
1548
1588
  }
@@ -1591,6 +1631,12 @@
1591
1631
  background-color: color-mix(in oklab, var(--muted-foreground) 15%, transparent);
1592
1632
  }
1593
1633
  }
1634
+ .bg-muted\/20 {
1635
+ background-color: var(--muted);
1636
+ @supports (color: color-mix(in lab, red, red)) {
1637
+ background-color: color-mix(in oklab, var(--muted) 20%, transparent);
1638
+ }
1639
+ }
1594
1640
  .bg-muted\/30 {
1595
1641
  background-color: var(--muted);
1596
1642
  @supports (color: color-mix(in lab, red, red)) {
@@ -1678,6 +1724,9 @@
1678
1724
  .p-6 {
1679
1725
  padding: calc(var(--spacing) * 6);
1680
1726
  }
1727
+ .p-12 {
1728
+ padding: calc(var(--spacing) * 12);
1729
+ }
1681
1730
  .p-\[3px\] {
1682
1731
  padding: 3px;
1683
1732
  }
@@ -1780,6 +1829,9 @@
1780
1829
  .pr-2\.5 {
1781
1830
  padding-right: calc(var(--spacing) * 2.5);
1782
1831
  }
1832
+ .pr-3 {
1833
+ padding-right: calc(var(--spacing) * 3);
1834
+ }
1783
1835
  .pr-8 {
1784
1836
  padding-right: calc(var(--spacing) * 8);
1785
1837
  }
@@ -1810,6 +1862,9 @@
1810
1862
  .pl-8 {
1811
1863
  padding-left: calc(var(--spacing) * 8);
1812
1864
  }
1865
+ .pl-9 {
1866
+ padding-left: calc(var(--spacing) * 9);
1867
+ }
1813
1868
  .text-center {
1814
1869
  text-align: center;
1815
1870
  }
@@ -2113,6 +2168,10 @@
2113
2168
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2114
2169
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2115
2170
  }
2171
+ .shadow-xl {
2172
+ --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2173
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2174
+ }
2116
2175
  .shadow-xs {
2117
2176
  --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
2118
2177
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2163,6 +2222,16 @@
2163
2222
  .filter {
2164
2223
  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,);
2165
2224
  }
2225
+ .backdrop-blur-md {
2226
+ --tw-backdrop-blur: blur(var(--blur-md));
2227
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2228
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2229
+ }
2230
+ .backdrop-blur-xl {
2231
+ --tw-backdrop-blur: blur(var(--blur-xl));
2232
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2233
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
2234
+ }
2166
2235
  .transition {
2167
2236
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
2168
2237
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -2286,6 +2355,9 @@
2286
2355
  .slide-in-from-bottom-1 {
2287
2356
  --tw-enter-translate-y: calc(1*var(--spacing));
2288
2357
  }
2358
+ .zoom-in {
2359
+ --tw-enter-scale: 0;
2360
+ }
2289
2361
  .group-focus-within\/menu-item\:opacity-100 {
2290
2362
  &:is(:where(.group\/menu-item):focus-within *) {
2291
2363
  opacity: 100%;
@@ -2811,6 +2883,16 @@
2811
2883
  display: none;
2812
2884
  }
2813
2885
  }
2886
+ .hover\:scale-110 {
2887
+ &:hover {
2888
+ @media (hover: hover) {
2889
+ --tw-scale-x: 110%;
2890
+ --tw-scale-y: 110%;
2891
+ --tw-scale-z: 110%;
2892
+ scale: var(--tw-scale-x) var(--tw-scale-y);
2893
+ }
2894
+ }
2895
+ }
2814
2896
  .hover\:border-primary {
2815
2897
  &:hover {
2816
2898
  @media (hover: hover) {
@@ -2930,6 +3012,16 @@
2930
3012
  }
2931
3013
  }
2932
3014
  }
3015
+ .hover\:bg-primary\/20 {
3016
+ &:hover {
3017
+ @media (hover: hover) {
3018
+ background-color: var(--primary);
3019
+ @supports (color: color-mix(in lab, red, red)) {
3020
+ background-color: color-mix(in oklab, var(--primary) 20%, transparent);
3021
+ }
3022
+ }
3023
+ }
3024
+ }
2933
3025
  .hover\:bg-primary\/75 {
2934
3026
  &:hover {
2935
3027
  @media (hover: hover) {
@@ -3132,6 +3224,11 @@
3132
3224
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3133
3225
  }
3134
3226
  }
3227
+ .focus\:ring-primary {
3228
+ &:focus {
3229
+ --tw-ring-color: var(--primary);
3230
+ }
3231
+ }
3135
3232
  .focus\:ring-ring {
3136
3233
  &:focus {
3137
3234
  --tw-ring-color: var(--ring);
@@ -3153,6 +3250,12 @@
3153
3250
  }
3154
3251
  }
3155
3252
  }
3253
+ .focus\:outline-none {
3254
+ &:focus {
3255
+ --tw-outline-style: none;
3256
+ outline-style: none;
3257
+ }
3258
+ }
3156
3259
  .focus-visible\:z-10 {
3157
3260
  &:focus-visible {
3158
3261
  z-index: 10;
@@ -3206,6 +3309,11 @@
3206
3309
  }
3207
3310
  }
3208
3311
  }
3312
+ .focus-visible\:ring-primary {
3313
+ &:focus-visible {
3314
+ --tw-ring-color: var(--primary);
3315
+ }
3316
+ }
3209
3317
  .focus-visible\:ring-ring {
3210
3318
  &:focus-visible {
3211
3319
  --tw-ring-color: var(--ring);
@@ -3246,6 +3354,14 @@
3246
3354
  outline-style: none;
3247
3355
  }
3248
3356
  }
3357
+ .active\:scale-95 {
3358
+ &:active {
3359
+ --tw-scale-x: 95%;
3360
+ --tw-scale-y: 95%;
3361
+ --tw-scale-z: 95%;
3362
+ scale: var(--tw-scale-x) var(--tw-scale-y);
3363
+ }
3364
+ }
3249
3365
  .active\:bg-sidebar-accent {
3250
3366
  &:active {
3251
3367
  background-color: var(--sidebar-accent);
@@ -6725,6 +6841,42 @@
6725
6841
  syntax: "*";
6726
6842
  inherits: false;
6727
6843
  }
6844
+ @property --tw-backdrop-blur {
6845
+ syntax: "*";
6846
+ inherits: false;
6847
+ }
6848
+ @property --tw-backdrop-brightness {
6849
+ syntax: "*";
6850
+ inherits: false;
6851
+ }
6852
+ @property --tw-backdrop-contrast {
6853
+ syntax: "*";
6854
+ inherits: false;
6855
+ }
6856
+ @property --tw-backdrop-grayscale {
6857
+ syntax: "*";
6858
+ inherits: false;
6859
+ }
6860
+ @property --tw-backdrop-hue-rotate {
6861
+ syntax: "*";
6862
+ inherits: false;
6863
+ }
6864
+ @property --tw-backdrop-invert {
6865
+ syntax: "*";
6866
+ inherits: false;
6867
+ }
6868
+ @property --tw-backdrop-opacity {
6869
+ syntax: "*";
6870
+ inherits: false;
6871
+ }
6872
+ @property --tw-backdrop-saturate {
6873
+ syntax: "*";
6874
+ inherits: false;
6875
+ }
6876
+ @property --tw-backdrop-sepia {
6877
+ syntax: "*";
6878
+ inherits: false;
6879
+ }
6728
6880
  @property --tw-duration {
6729
6881
  syntax: "*";
6730
6882
  inherits: false;
@@ -6841,6 +6993,15 @@
6841
6993
  --tw-drop-shadow-color: initial;
6842
6994
  --tw-drop-shadow-alpha: 100%;
6843
6995
  --tw-drop-shadow-size: initial;
6996
+ --tw-backdrop-blur: initial;
6997
+ --tw-backdrop-brightness: initial;
6998
+ --tw-backdrop-contrast: initial;
6999
+ --tw-backdrop-grayscale: initial;
7000
+ --tw-backdrop-hue-rotate: initial;
7001
+ --tw-backdrop-invert: initial;
7002
+ --tw-backdrop-opacity: initial;
7003
+ --tw-backdrop-saturate: initial;
7004
+ --tw-backdrop-sepia: initial;
6844
7005
  --tw-duration: initial;
6845
7006
  --tw-ease: initial;
6846
7007
  --tw-content: "";
@@ -67,6 +67,7 @@ export const updateUserProfile = async ({ userName, userPassword, userPhone, use
67
67
  operation: "updateUserProfile",
68
68
  arguments_: [userName, userPassword, userPhone, userEmail, userThumbnail],
69
69
  });
70
- revalidateTag("profile");
70
+ // revalidateTag("profile");
71
+ revalidateTag("profile", "default");
71
72
  return result.data;
72
73
  };