@stackframe/stack-ui 2.6.20 → 2.6.23
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/CHANGELOG.md +24 -0
- package/dist/components/data-table/data-table.d.ts +4 -2
- package/dist/components/data-table/data-table.js +7 -7
- package/dist/components/data-table/toolbar-items.d.ts +1 -0
- package/dist/components/data-table/toolbar-items.js +2 -2
- package/dist/components/data-table/toolbar.d.ts +2 -1
- package/dist/components/data-table/toolbar.js +33 -33
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/input.d.ts +2 -2
- package/dist/components/ui/input.js +9 -4
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @stackframe/stack-ui
|
|
2
2
|
|
|
3
|
+
## 2.6.23
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bugfixes
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @stackframe/stack-shared@2.6.23
|
|
10
|
+
|
|
11
|
+
## 2.6.22
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Bugfixes
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @stackframe/stack-shared@2.6.22
|
|
18
|
+
|
|
19
|
+
## 2.6.21
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Fixed inviteUser
|
|
24
|
+
- Updated dependencies
|
|
25
|
+
- @stackframe/stack-shared@2.6.21
|
|
26
|
+
|
|
3
27
|
## 2.6.20
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
|
@@ -4,6 +4,7 @@ export declare function TableView<TData, TValue>(props: {
|
|
|
4
4
|
table: TableType<TData>;
|
|
5
5
|
columns: ColumnDef<TData, TValue>[];
|
|
6
6
|
toolbarRender?: (table: TableType<TData>) => React.ReactNode;
|
|
7
|
+
showDefaultToolbar?: boolean;
|
|
7
8
|
}): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
type DataTableProps<TData, TValue> = {
|
|
9
10
|
columns: ColumnDef<TData, TValue>[];
|
|
@@ -12,8 +13,9 @@ type DataTableProps<TData, TValue> = {
|
|
|
12
13
|
defaultVisibility?: VisibilityState;
|
|
13
14
|
defaultColumnFilters?: ColumnFiltersState;
|
|
14
15
|
defaultSorting?: SortingState;
|
|
16
|
+
showDefaultToolbar?: boolean;
|
|
15
17
|
};
|
|
16
|
-
export declare function DataTable<TData, TValue>({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function DataTable<TData, TValue>({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, showDefaultToolbar, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
17
19
|
type DataTableManualPaginationProps<TData, TValue> = DataTableProps<TData, TValue> & {
|
|
18
20
|
onUpdate: (options: {
|
|
19
21
|
cursor: string;
|
|
@@ -25,5 +27,5 @@ type DataTableManualPaginationProps<TData, TValue> = DataTableProps<TData, TValu
|
|
|
25
27
|
nextCursor: string | null;
|
|
26
28
|
}>;
|
|
27
29
|
};
|
|
28
|
-
export declare function DataTableManualPagination<TData, TValue>({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, onUpdate, }: DataTableManualPaginationProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function DataTableManualPagination<TData, TValue>({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, onUpdate, showDefaultToolbar, }: DataTableManualPaginationProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
29
31
|
export {};
|
|
@@ -6,13 +6,13 @@ import React from "react";
|
|
|
6
6
|
import { DataTablePagination } from "./pagination";
|
|
7
7
|
import { DataTableToolbar } from "./toolbar";
|
|
8
8
|
export function TableView(props) {
|
|
9
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsx(DataTableToolbar, { table: props.table, toolbarRender: props.toolbarRender }), _jsx("div", { className: "rounded-md border", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: props.table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { children: headerGroup.headers.map((header) => {
|
|
9
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsx(DataTableToolbar, { table: props.table, toolbarRender: props.toolbarRender, showDefaultToolbar: props.showDefaultToolbar }), _jsx("div", { className: "rounded-md border", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: props.table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { children: headerGroup.headers.map((header) => {
|
|
10
10
|
return (_jsx(TableHead, { colSpan: header.colSpan, children: header.isPlaceholder
|
|
11
11
|
? null
|
|
12
12
|
: flexRender(header.column.columnDef.header, header.getContext()) }, header.id));
|
|
13
13
|
}) }, headerGroup.id))) }), _jsx(TableBody, { children: props.table.getRowModel().rows.length ? (props.table.getRowModel().rows.map((row) => (_jsx(TableRow, { "data-state": row.getIsSelected() && "selected", children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id)))) : (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: props.columns.length, className: "h-24 text-center", children: "No results." }) })) })] }) }), _jsx(DataTablePagination, { table: props.table })] }));
|
|
14
14
|
}
|
|
15
|
-
export function DataTable({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, }) {
|
|
15
|
+
export function DataTable({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, showDefaultToolbar = true, }) {
|
|
16
16
|
const [sorting, setSorting] = React.useState(defaultSorting || []);
|
|
17
17
|
const [columnFilters, setColumnFilters] = React.useState(defaultColumnFilters || []);
|
|
18
18
|
const [pagination, setPagination] = React.useState({
|
|
@@ -20,9 +20,9 @@ export function DataTable({ columns, data, toolbarRender, defaultVisibility, def
|
|
|
20
20
|
pageSize: 10,
|
|
21
21
|
});
|
|
22
22
|
const [globalFilter, setGlobalFilter] = React.useState();
|
|
23
|
-
return _jsx(DataTableBase, { columns: columns, data: data, toolbarRender: toolbarRender, defaultVisibility: defaultVisibility, sorting: sorting, setSorting: setSorting, columnFilters: columnFilters, setColumnFilters: setColumnFilters, manualPagination: false, manualFiltering: false, pagination: pagination, setPagination: setPagination, globalFilter: globalFilter, setGlobalFilter: setGlobalFilter });
|
|
23
|
+
return _jsx(DataTableBase, { columns: columns, data: data, toolbarRender: toolbarRender, defaultVisibility: defaultVisibility, sorting: sorting, setSorting: setSorting, columnFilters: columnFilters, setColumnFilters: setColumnFilters, manualPagination: false, manualFiltering: false, pagination: pagination, setPagination: setPagination, globalFilter: globalFilter, setGlobalFilter: setGlobalFilter, showDefaultToolbar: showDefaultToolbar });
|
|
24
24
|
}
|
|
25
|
-
export function DataTableManualPagination({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, onUpdate, }) {
|
|
25
|
+
export function DataTableManualPagination({ columns, data, toolbarRender, defaultVisibility, defaultColumnFilters, defaultSorting, onUpdate, showDefaultToolbar = true, }) {
|
|
26
26
|
const [sorting, setSorting] = React.useState(defaultSorting || []);
|
|
27
27
|
const [pagination, setPagination] = React.useState({ pageIndex: 0, pageSize: 10 });
|
|
28
28
|
const [cursors, setCursors] = React.useState({});
|
|
@@ -52,9 +52,9 @@ export function DataTableManualPagination({ columns, data, toolbarRender, defaul
|
|
|
52
52
|
}, 500);
|
|
53
53
|
return () => clearTimeout(timer);
|
|
54
54
|
}, [globalFilter]);
|
|
55
|
-
return _jsx(DataTableBase, { columns: columns, data: data, toolbarRender: toolbarRender, sorting: sorting, setSorting: setSorting, pagination: pagination, setPagination: setPagination, columnFilters: columnFilters, setColumnFilters: setColumnFilters, rowCount: pagination.pageSize * Object.keys(cursors).length + (cursors[pagination.pageIndex + 1] ? 1 : 0), globalFilter: globalFilter, setGlobalFilter: setGlobalFilter, defaultColumnFilters: defaultColumnFilters, defaultSorting: defaultSorting, defaultVisibility: defaultVisibility });
|
|
55
|
+
return _jsx(DataTableBase, { columns: columns, data: data, toolbarRender: toolbarRender, sorting: sorting, setSorting: setSorting, pagination: pagination, setPagination: setPagination, columnFilters: columnFilters, setColumnFilters: setColumnFilters, rowCount: pagination.pageSize * Object.keys(cursors).length + (cursors[pagination.pageIndex + 1] ? 1 : 0), globalFilter: globalFilter, setGlobalFilter: setGlobalFilter, defaultColumnFilters: defaultColumnFilters, defaultSorting: defaultSorting, defaultVisibility: defaultVisibility, showDefaultToolbar: showDefaultToolbar });
|
|
56
56
|
}
|
|
57
|
-
function DataTableBase({ columns, data, toolbarRender, defaultVisibility, sorting, setSorting, pagination, setPagination, rowCount, columnFilters, setColumnFilters, globalFilter, setGlobalFilter, manualPagination = true, manualFiltering = true, }) {
|
|
57
|
+
function DataTableBase({ columns, data, toolbarRender, defaultVisibility, sorting, setSorting, pagination, setPagination, rowCount, columnFilters, setColumnFilters, globalFilter, setGlobalFilter, manualPagination = true, manualFiltering = true, showDefaultToolbar = true, }) {
|
|
58
58
|
const [rowSelection, setRowSelection] = React.useState({});
|
|
59
59
|
const [columnVisibility, setColumnVisibility] = React.useState(defaultVisibility || {});
|
|
60
60
|
const table = useReactTable({
|
|
@@ -87,5 +87,5 @@ function DataTableBase({ columns, data, toolbarRender, defaultVisibility, sortin
|
|
|
87
87
|
manualFiltering,
|
|
88
88
|
rowCount,
|
|
89
89
|
});
|
|
90
|
-
return _jsx(TableView, { table: table, columns: columns, toolbarRender: toolbarRender });
|
|
90
|
+
return _jsx(TableView, { table: table, columns: columns, toolbarRender: toolbarRender, showDefaultToolbar: showDefaultToolbar });
|
|
91
91
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Input } from "../..";
|
|
2
|
+
import { Input, cn } from "../..";
|
|
3
3
|
export function SearchToolbarItem(props) {
|
|
4
|
-
return (_jsx(Input, { placeholder: props.placeholder, value: props.keyName ? `${props.table.getColumn(props.keyName)?.getFilterValue() ?? ""}` : props.table.getState().globalFilter ?? "", onChange: (event) => props.keyName ? props.table.getColumn(props.keyName)?.setFilterValue(event.target.value) : props.table.setGlobalFilter(event.target.value), className: "h-8 w-[
|
|
4
|
+
return (_jsx(Input, { placeholder: props.placeholder, value: props.keyName ? `${props.table.getColumn(props.keyName)?.getFilterValue() ?? ""}` : props.table.getState().globalFilter ?? "", onChange: (event) => props.keyName ? props.table.getColumn(props.keyName)?.setFilterValue(event.target.value) : props.table.setGlobalFilter(event.target.value), className: cn("h-8 w-[250px]", props.className) }));
|
|
5
5
|
}
|
|
@@ -3,6 +3,7 @@ import { Table } from "@tanstack/react-table";
|
|
|
3
3
|
interface DataTableToolbarProps<TData> {
|
|
4
4
|
table: Table<TData>;
|
|
5
5
|
toolbarRender?: (table: Table<TData>) => React.ReactNode;
|
|
6
|
+
showDefaultToolbar?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function DataTableToolbar<TData>({ table, toolbarRender }: DataTableToolbarProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function DataTableToolbar<TData>({ table, toolbarRender, showDefaultToolbar }: DataTableToolbarProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
export {};
|
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { Cross2Icon } from "@radix-ui/react-icons";
|
|
4
4
|
import { Button } from "@stackframe/stack-ui";
|
|
5
5
|
import { DataTableViewOptions } from "./view-options";
|
|
6
6
|
import { DownloadIcon } from "lucide-react";
|
|
7
7
|
import { mkConfig, generateCsv, download } from 'export-to-csv';
|
|
8
|
-
export function DataTableToolbar({ table, toolbarRender }) {
|
|
8
|
+
export function DataTableToolbar({ table, toolbarRender, showDefaultToolbar }) {
|
|
9
9
|
const isFiltered = table.getState().columnFilters.length > 0;
|
|
10
10
|
const isSorted = table.getState().sorting.length > 0;
|
|
11
|
-
return (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [toolbarRender?.(table), (isFiltered || isSorted) && (_jsxs(Button, { variant: "ghost", onClick: () => {
|
|
11
|
+
return (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-2 flex-wrap flex-1", children: [toolbarRender?.(table), (isFiltered || isSorted) && (_jsxs(Button, { variant: "ghost", onClick: () => {
|
|
12
12
|
table.resetColumnFilters();
|
|
13
13
|
table.resetSorting();
|
|
14
|
-
}, className: "h-8 px-2 lg:px-3", children: ["Reset", _jsx(Cross2Icon, { className: "ml-2 h-4 w-4" })] }))] }), _jsx(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
}, className: "h-8 px-2 lg:px-3", children: ["Reset", _jsx(Cross2Icon, { className: "ml-2 h-4 w-4" })] }))] }), showDefaultToolbar && (_jsx(_Fragment, { children: _jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [_jsx(DataTableViewOptions, { table: table }), _jsxs(Button, { variant: "outline", size: "sm", className: "ml-auto hidden h-8 lg:flex", onClick: () => {
|
|
15
|
+
const csvConfig = mkConfig({
|
|
16
|
+
fieldSeparator: ',',
|
|
17
|
+
filename: 'data',
|
|
18
|
+
decimalSeparator: '.',
|
|
19
|
+
useKeysAsHeaders: true,
|
|
20
|
+
});
|
|
21
|
+
const renderCellValue = (cell) => {
|
|
22
|
+
const rendered = cell.renderValue();
|
|
23
|
+
if (rendered === null) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (['string', 'number', 'boolean', 'undefined'].includes(typeof rendered)) {
|
|
27
|
+
return rendered;
|
|
28
|
+
}
|
|
29
|
+
if (rendered instanceof Date) {
|
|
30
|
+
return rendered.toISOString();
|
|
31
|
+
}
|
|
32
|
+
if (typeof rendered === 'object') {
|
|
33
|
+
return JSON.stringify(rendered);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const rowModel = table.getCoreRowModel();
|
|
37
|
+
const rows = rowModel.rows.map(row => Object.fromEntries(row.getAllCells().map(c => [c.column.id, renderCellValue(c)]).filter(([_, v]) => v !== undefined)));
|
|
38
|
+
if (rows.length === 0) {
|
|
39
|
+
alert("No data to export");
|
|
40
|
+
return;
|
|
25
41
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (rendered instanceof Date) {
|
|
30
|
-
return rendered.toISOString();
|
|
31
|
-
}
|
|
32
|
-
if (typeof rendered === 'object') {
|
|
33
|
-
return JSON.stringify(rendered);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
const rowModel = table.getCoreRowModel();
|
|
37
|
-
const rows = rowModel.rows.map(row => Object.fromEntries(row.getAllCells().map(c => [c.column.id, renderCellValue(c)]).filter(([_, v]) => v !== undefined)));
|
|
38
|
-
if (rows.length === 0) {
|
|
39
|
-
alert("No data to export");
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const csv = generateCsv(csvConfig)(rows);
|
|
43
|
-
download(csvConfig)(csv);
|
|
44
|
-
}, children: [_jsx(DownloadIcon, { className: "mr-2 h-4 w-4" }), "Export CSV"] })] })] }));
|
|
42
|
+
const csv = generateCsv(csvConfig)(rows);
|
|
43
|
+
download(csvConfig)(csv);
|
|
44
|
+
}, children: [_jsx(DownloadIcon, { className: "mr-2 h-4 w-4" }), "Export CSV"] })] }) }))] }));
|
|
45
45
|
}
|
|
@@ -9,6 +9,6 @@ const AccordionItem = forwardRefIfNeeded(({ className, ...props }, ref) => (_jsx
|
|
|
9
9
|
AccordionItem.displayName = "AccordionItem";
|
|
10
10
|
const AccordionTrigger = forwardRefIfNeeded(({ className, children, disabled, ...props }, ref) => (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { ref: ref, className: cn("flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, !disabled && _jsx(ChevronDownIcon, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })] }) })));
|
|
11
11
|
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
12
|
-
const AccordionContent = forwardRefIfNeeded(({ className, children, ...props }, ref) => (_jsx(AccordionPrimitive.Content, { ref: ref, className: "
|
|
12
|
+
const AccordionContent = forwardRefIfNeeded(({ className, children, ...props }, ref) => (_jsx(AccordionPrimitive.Content, { ref: ref, className: "text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down", ...props, children: _jsx("div", { className: cn("pb-4 pt-0", className), children: children }) })));
|
|
13
13
|
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
14
14
|
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
prefixItem?: React.ReactNode;
|
|
3
4
|
}
|
|
4
|
-
declare const Input: React.FC<InputProps & {
|
|
5
|
+
export declare const Input: React.FC<InputProps & {
|
|
5
6
|
ref?: React.Ref<HTMLInputElement> | undefined;
|
|
6
7
|
}>;
|
|
7
|
-
export { Input };
|
|
8
8
|
export interface DelayedInputProps extends InputProps {
|
|
9
9
|
delay?: number;
|
|
10
10
|
}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { forwardRefIfNeeded } from "@stackframe/stack-shared/dist/utils/react";
|
|
4
4
|
import { cn } from "../../lib/utils";
|
|
5
|
-
const Input = forwardRefIfNeeded(({ className, type, ...props }, ref) => {
|
|
6
|
-
|
|
5
|
+
export const Input = forwardRefIfNeeded(({ className, type, prefixItem, ...props }, ref) => {
|
|
6
|
+
const baseClasses = "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
|
|
7
|
+
if (prefixItem) {
|
|
8
|
+
return (_jsxs("div", { className: "flex flex-row items-center", children: [_jsx("div", { className: 'flex self-stretch justify-center items-center text-muted-foreground pl-3 select-none bg-muted/70 pr-3 border-r border-input rounded-l-md', children: prefixItem }), _jsx("input", { type: type, className: cn(baseClasses, 'rounded-l-none', className), ref: ref, ...props })] }));
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return (_jsx("input", { type: type, className: cn(baseClasses, className), ref: ref, ...props }));
|
|
12
|
+
}
|
|
7
13
|
});
|
|
8
14
|
Input.displayName = "Input";
|
|
9
|
-
export { Input };
|
|
10
15
|
export const DelayedInput = forwardRefIfNeeded(({ delay = 500, defaultValue, ...props }, ref) => {
|
|
11
16
|
const [value, setValue] = React.useState(defaultValue ?? "");
|
|
12
17
|
const timeout = React.useRef(null);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackframe/stack-ui",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.23",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"react": ">=18.2",
|
|
20
|
-
"react-dom": ">=18.2",
|
|
21
|
-
"@types/react": ">=18.2.12",
|
|
22
|
-
"@types/react-dom": ">=18.2.12",
|
|
23
|
-
"next": ">=14.1.0",
|
|
19
|
+
"react": ">=18.2 || >=19.0.0-rc.0",
|
|
20
|
+
"react-dom": ">=18.2 || >=19.0.0-rc.0",
|
|
21
|
+
"@types/react": ">=18.2.12 || >=19.0.0-rc.0",
|
|
22
|
+
"@types/react-dom": ">=18.2.12 || >=19.0.0-rc.0",
|
|
23
|
+
"next": ">=14.1.0 || >=15.0.0-rc.0",
|
|
24
24
|
"yup": "^1.4.0"
|
|
25
25
|
},
|
|
26
26
|
"peerDependenciesMeta": {
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"react-hook-form": "^7.53.1",
|
|
77
77
|
"react-resizable-panels": "^2.1.6",
|
|
78
78
|
"tailwind-merge": "^2.5.4",
|
|
79
|
-
"@stackframe/stack-shared": "2.6.
|
|
79
|
+
"@stackframe/stack-shared": "2.6.23"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"rimraf": "^5.0.10",
|