@schemavaults/ui 0.22.1 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ui/datatable/datatable.js +5 -2
- package/dist/components/ui/datatable/datatable.js.map +1 -1
- package/dist/components/ui/index.d.ts +4 -0
- package/dist/components/ui/index.js +2 -0
- package/dist/components/ui/index.js.map +1 -1
- package/dist/components/ui/pagination/index.d.ts +4 -0
- package/dist/components/ui/pagination/index.js +3 -0
- package/dist/components/ui/pagination/index.js.map +1 -0
- package/dist/components/ui/pagination/pagination-variants.d.ts +6 -0
- package/dist/components/ui/pagination/pagination-variants.js +16 -0
- package/dist/components/ui/pagination/pagination-variants.js.map +1 -0
- package/dist/components/ui/pagination/pagination.d.ts +105 -0
- package/dist/components/ui/pagination/pagination.js +171 -0
- package/dist/components/ui/pagination/pagination.js.map +1 -0
- package/dist/components/ui/rating/index.d.ts +4 -0
- package/dist/components/ui/rating/index.js +3 -0
- package/dist/components/ui/rating/index.js.map +1 -0
- package/dist/components/ui/rating/rating-variants.d.ts +4 -0
- package/dist/components/ui/rating/rating-variants.js +8 -0
- package/dist/components/ui/rating/rating-variants.js.map +1 -0
- package/dist/components/ui/rating/rating.d.ts +41 -0
- package/dist/components/ui/rating/rating.js +123 -0
- package/dist/components/ui/rating/rating.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from "@tanstack/react-table";
|
|
4
|
-
import { ArrowDown, ArrowUp, ArrowUpDown, ChevronDown,
|
|
4
|
+
import { ArrowDown, ArrowUp, ArrowUpDown, ChevronDown, } from "lucide-react";
|
|
5
5
|
import { Button } from "../../ui/button";
|
|
6
6
|
import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger, } from "../../ui/dropdown-menu";
|
|
7
7
|
import { Input } from "../../ui/input";
|
|
8
|
+
import { PaginationControls } from "../../ui/pagination";
|
|
8
9
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../ui/select";
|
|
9
10
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "../../ui/table";
|
|
10
11
|
import { useMemo, useState } from "react";
|
|
@@ -99,7 +100,9 @@ export function Datatable({ data, columns, initialVisibleColumns, datatypeLabel,
|
|
|
99
100
|
return (_jsx(TableHead, { children: header.isPlaceholder ? null : header.column.getCanSort() ? (_jsxs(Button, { variant: "ghost", className: "-ml-4", onClick: () => header.column.toggleSorting(header.column.getIsSorted() === "asc"), children: [flexRender(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === "asc" ? (_jsx(ArrowUp, { className: "ml-2 h-4 w-4" })) : header.column.getIsSorted() === "desc" ? (_jsx(ArrowDown, { className: "ml-2 h-4 w-4" })) : (_jsx(ArrowUpDown, { className: "ml-2 h-4 w-4" }))] })) : (flexRender(header.column.columnDef.header, header.getContext())) }, header.id));
|
|
100
101
|
}) }, headerGroup.id))) }), _jsx(TableBody, { children: table.getRowModel().rows?.length ? (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: columns.length, className: "h-24 text-center", children: "No results." }) })) })] }) }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center justify-between gap-4 py-4 w-full", children: [_jsxs("div", { className: "text-sm text-muted-foreground", children: [table.getFilteredSelectedRowModel().rows.length, " of", " ", table.getFilteredRowModel().rows.length, " row(s) selected."] }), _jsxs("div", { className: "flex flex-col sm:flex-row items-center gap-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-muted-foreground whitespace-nowrap", children: "Rows per page" }), _jsxs(Select, { value: String(table.getState().pagination.pageSize), onValueChange: (value) => {
|
|
101
102
|
table.setPageSize(Number(value));
|
|
102
|
-
}, children: [_jsx(SelectTrigger, { size: "sm", className: "w-[70px]", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: pageSizeOptions.map((size) => (_jsx(SelectItem, { value: String(size), children: size }, size))) })] })] }),
|
|
103
|
+
}, children: [_jsx(SelectTrigger, { size: "sm", className: "w-[70px]", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: pageSizeOptions.map((size) => (_jsx(SelectItem, { value: String(size), children: size }, size))) })] })] }), _jsx(PaginationControls, { className: "mx-0 w-auto justify-end", size: "sm", variant: "outline", page: table.getState().pagination.pageIndex + 1, totalPages: Math.max(1, table.getPageCount()), onPageChange: (nextPage) => {
|
|
104
|
+
table.setPageIndex(nextPage - 1);
|
|
105
|
+
}, showFirstLast: true, iconOnlyPrevNext: true, disabled: table.getPageCount() <= 1 })] })] })] }));
|
|
103
106
|
}
|
|
104
107
|
export default Datatable;
|
|
105
108
|
//# sourceMappingURL=datatable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datatable.js","sourceRoot":"","sources":["../../../../src/components/ui/datatable/datatable.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAML,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,GAEd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,SAAS,EACT,OAAO,EACP,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"datatable.js","sourceRoot":"","sources":["../../../../src/components/ui/datatable/datatable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,8 @@ export * from "./progress-bar";
|
|
|
100
100
|
export type * from "./progress-bar";
|
|
101
101
|
export * from "./breadcrumb";
|
|
102
102
|
export type * from "./breadcrumb";
|
|
103
|
+
export * from "./pagination";
|
|
104
|
+
export type * from "./pagination";
|
|
103
105
|
export * from "./kbd";
|
|
104
106
|
export type * from "./kbd";
|
|
105
107
|
export * from "./copy-button";
|
|
@@ -114,3 +116,5 @@ export * from "./stat-card";
|
|
|
114
116
|
export type * from "./stat-card";
|
|
115
117
|
export * from "./timeline";
|
|
116
118
|
export type * from "./timeline";
|
|
119
|
+
export * from "./rating";
|
|
120
|
+
export type * from "./rating";
|
|
@@ -49,6 +49,7 @@ export * from "./slider";
|
|
|
49
49
|
export * from "./switch";
|
|
50
50
|
export * from "./progress-bar";
|
|
51
51
|
export * from "./breadcrumb";
|
|
52
|
+
export * from "./pagination";
|
|
52
53
|
export * from "./kbd";
|
|
53
54
|
export * from "./copy-button";
|
|
54
55
|
export * from "./spinner";
|
|
@@ -56,4 +57,5 @@ export * from "./banner";
|
|
|
56
57
|
export * from "./empty-state";
|
|
57
58
|
export * from "./stat-card";
|
|
58
59
|
export * from "./timeline";
|
|
60
|
+
export * from "./rating";
|
|
59
61
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Pagination, Pagination as default, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationFirst, PaginationLast, PaginationEllipsis, PaginationControls, paginationLinkVariants, } from "./pagination";
|
|
2
|
+
export type { PaginationProps, PaginationContentProps, PaginationItemProps, PaginationLinkProps, PaginationPreviousProps, PaginationNextProps, PaginationFirstProps, PaginationLastProps, PaginationEllipsisProps, PaginationControlsProps, } from "./pagination";
|
|
3
|
+
export { paginationSizeIds, paginationVariantIds, paginationShapeIds, } from "./pagination-variants";
|
|
4
|
+
export type { PaginationSize, PaginationVariant, PaginationShape, } from "./pagination-variants";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { Pagination, Pagination as default, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationFirst, PaginationLast, PaginationEllipsis, PaginationControls, paginationLinkVariants, } from "./pagination";
|
|
2
|
+
export { paginationSizeIds, paginationVariantIds, paginationShapeIds, } from "./pagination-variants";
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,IAAI,OAAO,EACrB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAatB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const paginationSizeIds: readonly ["sm", "default", "lg"];
|
|
2
|
+
export type PaginationSize = (typeof paginationSizeIds)[number];
|
|
3
|
+
export declare const paginationVariantIds: readonly ["default", "outline", "ghost"];
|
|
4
|
+
export type PaginationVariant = (typeof paginationVariantIds)[number];
|
|
5
|
+
export declare const paginationShapeIds: readonly ["rounded", "square", "pill"];
|
|
6
|
+
export type PaginationShape = (typeof paginationShapeIds)[number];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const paginationSizeIds = [
|
|
2
|
+
"sm",
|
|
3
|
+
"default",
|
|
4
|
+
"lg",
|
|
5
|
+
];
|
|
6
|
+
export const paginationVariantIds = [
|
|
7
|
+
"default",
|
|
8
|
+
"outline",
|
|
9
|
+
"ghost",
|
|
10
|
+
];
|
|
11
|
+
export const paginationShapeIds = [
|
|
12
|
+
"rounded",
|
|
13
|
+
"square",
|
|
14
|
+
"pill",
|
|
15
|
+
];
|
|
16
|
+
//# sourceMappingURL=pagination-variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/pagination/pagination-variants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI;IACJ,SAAS;IACT,IAAI;CACgC,CAAC;AAGvC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,SAAS;IACT,OAAO;CAC6B,CAAC;AAGvC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,QAAQ;IACR,MAAM;CAC8B,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactElement, type Ref } from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
import { type PaginationShape, type PaginationSize, type PaginationVariant } from "./pagination-variants";
|
|
4
|
+
export interface PaginationProps extends ComponentPropsWithoutRef<"nav"> {
|
|
5
|
+
size?: PaginationSize;
|
|
6
|
+
variant?: PaginationVariant;
|
|
7
|
+
shape?: PaginationShape;
|
|
8
|
+
ref?: Ref<HTMLElement>;
|
|
9
|
+
}
|
|
10
|
+
declare function Pagination({ className, size, variant, shape, ref, ...props }: PaginationProps): ReactElement;
|
|
11
|
+
declare namespace Pagination {
|
|
12
|
+
var displayName: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PaginationContentProps extends ComponentPropsWithoutRef<"ul"> {
|
|
15
|
+
ref?: Ref<HTMLUListElement>;
|
|
16
|
+
}
|
|
17
|
+
declare function PaginationContent({ className, ref, ...props }: PaginationContentProps): ReactElement;
|
|
18
|
+
declare namespace PaginationContent {
|
|
19
|
+
var displayName: string;
|
|
20
|
+
}
|
|
21
|
+
export interface PaginationItemProps extends ComponentPropsWithoutRef<"li"> {
|
|
22
|
+
ref?: Ref<HTMLLIElement>;
|
|
23
|
+
}
|
|
24
|
+
declare function PaginationItem({ className, ref, ...props }: PaginationItemProps): ReactElement;
|
|
25
|
+
declare namespace PaginationItem {
|
|
26
|
+
var displayName: string;
|
|
27
|
+
}
|
|
28
|
+
declare const paginationLinkVariants: (props?: ({
|
|
29
|
+
size?: "sm" | "default" | "lg" | null | undefined;
|
|
30
|
+
variant?: "default" | "ghost" | "outline" | null | undefined;
|
|
31
|
+
shape?: "square" | "rounded" | "pill" | null | undefined;
|
|
32
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
33
|
+
export interface PaginationLinkProps extends ComponentPropsWithoutRef<"a">, VariantProps<typeof paginationLinkVariants> {
|
|
34
|
+
isActive?: boolean;
|
|
35
|
+
asChild?: boolean;
|
|
36
|
+
ref?: Ref<HTMLAnchorElement>;
|
|
37
|
+
}
|
|
38
|
+
declare function PaginationLink({ className, isActive, asChild, size, variant, shape, ref, ...props }: PaginationLinkProps): ReactElement;
|
|
39
|
+
declare namespace PaginationLink {
|
|
40
|
+
var displayName: string;
|
|
41
|
+
}
|
|
42
|
+
export interface PaginationPreviousProps extends Omit<PaginationLinkProps, "children"> {
|
|
43
|
+
label?: string;
|
|
44
|
+
showLabel?: boolean;
|
|
45
|
+
}
|
|
46
|
+
declare function PaginationPrevious({ className, label, showLabel, ...props }: PaginationPreviousProps): ReactElement;
|
|
47
|
+
declare namespace PaginationPrevious {
|
|
48
|
+
var displayName: string;
|
|
49
|
+
}
|
|
50
|
+
export interface PaginationNextProps extends Omit<PaginationLinkProps, "children"> {
|
|
51
|
+
label?: string;
|
|
52
|
+
showLabel?: boolean;
|
|
53
|
+
}
|
|
54
|
+
declare function PaginationNext({ className, label, showLabel, ...props }: PaginationNextProps): ReactElement;
|
|
55
|
+
declare namespace PaginationNext {
|
|
56
|
+
var displayName: string;
|
|
57
|
+
}
|
|
58
|
+
export interface PaginationFirstProps extends Omit<PaginationLinkProps, "children"> {
|
|
59
|
+
}
|
|
60
|
+
declare function PaginationFirst({ className, ...props }: PaginationFirstProps): ReactElement;
|
|
61
|
+
declare namespace PaginationFirst {
|
|
62
|
+
var displayName: string;
|
|
63
|
+
}
|
|
64
|
+
export interface PaginationLastProps extends Omit<PaginationLinkProps, "children"> {
|
|
65
|
+
}
|
|
66
|
+
declare function PaginationLast({ className, ...props }: PaginationLastProps): ReactElement;
|
|
67
|
+
declare namespace PaginationLast {
|
|
68
|
+
var displayName: string;
|
|
69
|
+
}
|
|
70
|
+
export interface PaginationEllipsisProps extends ComponentPropsWithoutRef<"span"> {
|
|
71
|
+
ref?: Ref<HTMLSpanElement>;
|
|
72
|
+
}
|
|
73
|
+
declare function PaginationEllipsis({ className, ref, ...props }: PaginationEllipsisProps): ReactElement;
|
|
74
|
+
declare namespace PaginationEllipsis {
|
|
75
|
+
var displayName: string;
|
|
76
|
+
}
|
|
77
|
+
export interface PaginationControlsProps extends Omit<ComponentPropsWithoutRef<"nav">, "onChange"> {
|
|
78
|
+
/** Currently selected page (1-indexed). */
|
|
79
|
+
page: number;
|
|
80
|
+
/** Total number of pages available. */
|
|
81
|
+
totalPages: number;
|
|
82
|
+
/** Called with the new 1-indexed page when the user navigates. */
|
|
83
|
+
onPageChange: (nextPage: number) => void;
|
|
84
|
+
/** Number of pages to show on each side of the current page. Defaults to 1. */
|
|
85
|
+
siblingCount?: number;
|
|
86
|
+
/** Number of pages to always show at the start and end. Defaults to 1. */
|
|
87
|
+
boundaryCount?: number;
|
|
88
|
+
/** Show first/last page jump buttons. Defaults to false. */
|
|
89
|
+
showFirstLast?: boolean;
|
|
90
|
+
/** Show previous/next buttons. Defaults to true. */
|
|
91
|
+
showPrevNext?: boolean;
|
|
92
|
+
/** Hide the textual label on previous/next, leaving only the chevron. */
|
|
93
|
+
iconOnlyPrevNext?: boolean;
|
|
94
|
+
/** Disable the entire control. */
|
|
95
|
+
disabled?: boolean;
|
|
96
|
+
size?: PaginationSize;
|
|
97
|
+
variant?: PaginationVariant;
|
|
98
|
+
shape?: PaginationShape;
|
|
99
|
+
}
|
|
100
|
+
declare function PaginationControls({ page, totalPages, onPageChange, siblingCount, boundaryCount, showFirstLast, showPrevNext, iconOnlyPrevNext, disabled, size, variant, shape, className, ...props }: PaginationControlsProps): ReactElement;
|
|
101
|
+
declare namespace PaginationControls {
|
|
102
|
+
var displayName: string;
|
|
103
|
+
}
|
|
104
|
+
export { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationFirst, PaginationLast, PaginationEllipsis, PaginationControls, paginationLinkVariants, };
|
|
105
|
+
export default Pagination;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useMemo, } from "react";
|
|
4
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
5
|
+
import { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight, MoreHorizontal, } from "lucide-react";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
import { cn } from "../../../lib/utils";
|
|
8
|
+
const PaginationContext = createContext({
|
|
9
|
+
size: "default",
|
|
10
|
+
variant: "default",
|
|
11
|
+
shape: "rounded",
|
|
12
|
+
});
|
|
13
|
+
function usePaginationContext() {
|
|
14
|
+
return useContext(PaginationContext);
|
|
15
|
+
}
|
|
16
|
+
function Pagination({ className, size = "default", variant = "default", shape = "rounded", ref, ...props }) {
|
|
17
|
+
const contextValue = useMemo(() => ({ size, variant, shape }), [size, variant, shape]);
|
|
18
|
+
return (_jsx(PaginationContext.Provider, { value: contextValue, children: _jsx("nav", { ref: ref, role: "navigation", "aria-label": "pagination", "data-slot": "pagination", className: cn("mx-auto flex w-full justify-center", className), ...props }) }));
|
|
19
|
+
}
|
|
20
|
+
Pagination.displayName = "Pagination";
|
|
21
|
+
function PaginationContent({ className, ref, ...props }) {
|
|
22
|
+
return (_jsx("ul", { ref: ref, "data-slot": "pagination-content", className: cn("flex flex-row items-center gap-1", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
PaginationContent.displayName = "PaginationContent";
|
|
25
|
+
function PaginationItem({ className, ref, ...props }) {
|
|
26
|
+
return (_jsx("li", { ref: ref, "data-slot": "pagination-item", className: cn(className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
PaginationItem.displayName = "PaginationItem";
|
|
29
|
+
const paginationLinkVariants = cva("inline-flex items-center justify-center gap-1 whitespace-nowrap font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 select-none", {
|
|
30
|
+
variants: {
|
|
31
|
+
size: {
|
|
32
|
+
sm: "h-8 min-w-8 px-2 text-xs [&_svg]:size-3.5",
|
|
33
|
+
default: "h-10 min-w-10 px-3 text-sm [&_svg]:size-4",
|
|
34
|
+
lg: "h-11 min-w-11 px-4 text-base [&_svg]:size-5",
|
|
35
|
+
},
|
|
36
|
+
variant: {
|
|
37
|
+
default: "text-foreground hover:bg-accent hover:text-accent-foreground data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:hover:bg-primary/90",
|
|
38
|
+
outline: "border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground data-[active=true]:border-primary data-[active=true]:bg-primary data-[active=true]:text-primary-foreground data-[active=true]:hover:bg-primary/90",
|
|
39
|
+
ghost: "text-muted-foreground hover:bg-accent hover:text-accent-foreground data-[active=true]:bg-accent data-[active=true]:text-accent-foreground data-[active=true]:font-semibold",
|
|
40
|
+
},
|
|
41
|
+
shape: {
|
|
42
|
+
rounded: "rounded-md",
|
|
43
|
+
square: "rounded-none",
|
|
44
|
+
pill: "rounded-full",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
defaultVariants: {
|
|
48
|
+
size: "default",
|
|
49
|
+
variant: "default",
|
|
50
|
+
shape: "rounded",
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
function PaginationLink({ className, isActive = false, asChild = false, size, variant, shape, ref, ...props }) {
|
|
54
|
+
const ctx = usePaginationContext();
|
|
55
|
+
const Comp = asChild ? Slot : "a";
|
|
56
|
+
return (_jsx(Comp, { ref: ref, "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive ? "true" : undefined, className: cn(paginationLinkVariants({
|
|
57
|
+
size: size ?? ctx.size,
|
|
58
|
+
variant: variant ?? ctx.variant,
|
|
59
|
+
shape: shape ?? ctx.shape,
|
|
60
|
+
}), className), ...props }));
|
|
61
|
+
}
|
|
62
|
+
PaginationLink.displayName = "PaginationLink";
|
|
63
|
+
function PaginationPrevious({ className, label = "Previous", showLabel = true, ...props }) {
|
|
64
|
+
return (_jsxs(PaginationLink, { "aria-label": "Go to previous page", className: cn(showLabel ? "px-2.5" : undefined, className), ...props, children: [_jsx(ChevronLeft, { "aria-hidden": "true" }), showLabel ? _jsx("span", { children: label }) : null] }));
|
|
65
|
+
}
|
|
66
|
+
PaginationPrevious.displayName = "PaginationPrevious";
|
|
67
|
+
function PaginationNext({ className, label = "Next", showLabel = true, ...props }) {
|
|
68
|
+
return (_jsxs(PaginationLink, { "aria-label": "Go to next page", className: cn(showLabel ? "px-2.5" : undefined, className), ...props, children: [showLabel ? _jsx("span", { children: label }) : null, _jsx(ChevronRight, { "aria-hidden": "true" })] }));
|
|
69
|
+
}
|
|
70
|
+
PaginationNext.displayName = "PaginationNext";
|
|
71
|
+
function PaginationFirst({ className, ...props }) {
|
|
72
|
+
return (_jsx(PaginationLink, { "aria-label": "Go to first page", className: className, ...props, children: _jsx(ChevronsLeft, { "aria-hidden": "true" }) }));
|
|
73
|
+
}
|
|
74
|
+
PaginationFirst.displayName = "PaginationFirst";
|
|
75
|
+
function PaginationLast({ className, ...props }) {
|
|
76
|
+
return (_jsx(PaginationLink, { "aria-label": "Go to last page", className: className, ...props, children: _jsx(ChevronsRight, { "aria-hidden": "true" }) }));
|
|
77
|
+
}
|
|
78
|
+
PaginationLast.displayName = "PaginationLast";
|
|
79
|
+
function PaginationEllipsis({ className, ref, ...props }) {
|
|
80
|
+
const ctx = usePaginationContext();
|
|
81
|
+
const sizeClass = ctx.size === "sm"
|
|
82
|
+
? "h-8 min-w-8 [&_svg]:size-3.5"
|
|
83
|
+
: ctx.size === "lg"
|
|
84
|
+
? "h-11 min-w-11 [&_svg]:size-5"
|
|
85
|
+
: "h-10 min-w-10 [&_svg]:size-4";
|
|
86
|
+
return (_jsxs("span", { ref: ref, role: "presentation", "aria-hidden": "true", "data-slot": "pagination-ellipsis", className: cn("flex items-center justify-center text-muted-foreground", sizeClass, className), ...props, children: [_jsx(MoreHorizontal, {}), _jsx("span", { className: "sr-only", children: "More pages" })] }));
|
|
87
|
+
}
|
|
88
|
+
PaginationEllipsis.displayName = "PaginationEllipsis";
|
|
89
|
+
function buildPageList(page, totalPages, siblingCount, boundaryCount) {
|
|
90
|
+
const totalNumbers = siblingCount * 2 + boundaryCount * 2 + 3;
|
|
91
|
+
if (totalPages <= totalNumbers) {
|
|
92
|
+
return Array.from({ length: totalPages }, (_, i) => ({
|
|
93
|
+
kind: "page",
|
|
94
|
+
page: i + 1,
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
const startPages = Array.from({ length: boundaryCount }, (_, i) => i + 1);
|
|
98
|
+
const endPages = Array.from({ length: boundaryCount }, (_, i) => totalPages - boundaryCount + i + 1);
|
|
99
|
+
const siblingsStart = Math.max(Math.min(page - siblingCount, totalPages - boundaryCount - siblingCount * 2 - 1), boundaryCount + 2);
|
|
100
|
+
const siblingsEnd = Math.min(Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2), endPages.length > 0 ? endPages[0] - 2 : totalPages - 1);
|
|
101
|
+
const items = [];
|
|
102
|
+
for (const p of startPages) {
|
|
103
|
+
items.push({ kind: "page", page: p });
|
|
104
|
+
}
|
|
105
|
+
if (siblingsStart > boundaryCount + 2) {
|
|
106
|
+
items.push({ kind: "ellipsis", key: "start-ellipsis" });
|
|
107
|
+
}
|
|
108
|
+
else if (boundaryCount + 1 < totalPages - boundaryCount) {
|
|
109
|
+
items.push({ kind: "page", page: boundaryCount + 1 });
|
|
110
|
+
}
|
|
111
|
+
for (let p = siblingsStart; p <= siblingsEnd; p++) {
|
|
112
|
+
items.push({ kind: "page", page: p });
|
|
113
|
+
}
|
|
114
|
+
if (siblingsEnd < totalPages - boundaryCount - 1) {
|
|
115
|
+
items.push({ kind: "ellipsis", key: "end-ellipsis" });
|
|
116
|
+
}
|
|
117
|
+
else if (totalPages - boundaryCount > boundaryCount) {
|
|
118
|
+
items.push({ kind: "page", page: totalPages - boundaryCount });
|
|
119
|
+
}
|
|
120
|
+
for (const p of endPages) {
|
|
121
|
+
items.push({ kind: "page", page: p });
|
|
122
|
+
}
|
|
123
|
+
const seen = new Set();
|
|
124
|
+
return items.filter((entry) => {
|
|
125
|
+
if (entry.kind === "ellipsis")
|
|
126
|
+
return true;
|
|
127
|
+
if (seen.has(entry.page))
|
|
128
|
+
return false;
|
|
129
|
+
seen.add(entry.page);
|
|
130
|
+
return true;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
function PaginationControls({ page, totalPages, onPageChange, siblingCount = 1, boundaryCount = 1, showFirstLast = false, showPrevNext = true, iconOnlyPrevNext = false, disabled = false, size, variant, shape, className, ...props }) {
|
|
134
|
+
const safeTotal = Math.max(1, Math.floor(totalPages));
|
|
135
|
+
const safePage = Math.min(Math.max(1, Math.floor(page)), safeTotal);
|
|
136
|
+
const pages = useMemo(() => buildPageList(safePage, safeTotal, Math.max(0, siblingCount), Math.max(0, boundaryCount)), [safePage, safeTotal, siblingCount, boundaryCount]);
|
|
137
|
+
const isFirst = safePage <= 1;
|
|
138
|
+
const isLast = safePage >= safeTotal;
|
|
139
|
+
const goTo = (target) => {
|
|
140
|
+
if (disabled)
|
|
141
|
+
return;
|
|
142
|
+
const clamped = Math.min(Math.max(1, target), safeTotal);
|
|
143
|
+
if (clamped === safePage)
|
|
144
|
+
return;
|
|
145
|
+
onPageChange(clamped);
|
|
146
|
+
};
|
|
147
|
+
return (_jsx(Pagination, { size: size, variant: variant, shape: shape, className: className, ...props, children: _jsxs(PaginationContent, { children: [showFirstLast ? (_jsx(PaginationItem, { children: _jsx(PaginationFirst, { href: "#", "aria-disabled": disabled || isFirst, tabIndex: disabled || isFirst ? -1 : undefined, onClick: (e) => {
|
|
148
|
+
e.preventDefault();
|
|
149
|
+
if (!isFirst)
|
|
150
|
+
goTo(1);
|
|
151
|
+
} }) })) : null, showPrevNext ? (_jsx(PaginationItem, { children: _jsx(PaginationPrevious, { href: "#", "aria-disabled": disabled || isFirst, tabIndex: disabled || isFirst ? -1 : undefined, showLabel: !iconOnlyPrevNext, onClick: (e) => {
|
|
152
|
+
e.preventDefault();
|
|
153
|
+
if (!isFirst)
|
|
154
|
+
goTo(safePage - 1);
|
|
155
|
+
} }) })) : null, pages.map((entry) => entry.kind === "ellipsis" ? (_jsx(PaginationItem, { children: _jsx(PaginationEllipsis, {}) }, entry.key)) : (_jsx(PaginationItem, { children: _jsx(PaginationLink, { href: "#", isActive: entry.page === safePage, "aria-disabled": disabled || undefined, tabIndex: disabled ? -1 : undefined, onClick: (e) => {
|
|
156
|
+
e.preventDefault();
|
|
157
|
+
goTo(entry.page);
|
|
158
|
+
}, children: entry.page }) }, entry.page))), showPrevNext ? (_jsx(PaginationItem, { children: _jsx(PaginationNext, { href: "#", "aria-disabled": disabled || isLast, tabIndex: disabled || isLast ? -1 : undefined, showLabel: !iconOnlyPrevNext, onClick: (e) => {
|
|
159
|
+
e.preventDefault();
|
|
160
|
+
if (!isLast)
|
|
161
|
+
goTo(safePage + 1);
|
|
162
|
+
} }) })) : null, showFirstLast ? (_jsx(PaginationItem, { children: _jsx(PaginationLast, { href: "#", "aria-disabled": disabled || isLast, tabIndex: disabled || isLast ? -1 : undefined, onClick: (e) => {
|
|
163
|
+
e.preventDefault();
|
|
164
|
+
if (!isLast)
|
|
165
|
+
goTo(safeTotal);
|
|
166
|
+
} }) })) : null] }) }));
|
|
167
|
+
}
|
|
168
|
+
PaginationControls.displayName = "PaginationControls";
|
|
169
|
+
export { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationFirst, PaginationLast, PaginationEllipsis, PaginationControls, paginationLinkVariants, };
|
|
170
|
+
export default Pagination;
|
|
171
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../../src/components/ui/pagination/pagination.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/rating/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,MAAM,IAAI,OAAO,EACjB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const ratingSizeIds: readonly ["sm", "md", "lg", "xl"];
|
|
2
|
+
export type RatingSize = (typeof ratingSizeIds)[number];
|
|
3
|
+
export declare const ratingColorIds: readonly ["warning", "primary", "destructive", "foreground"];
|
|
4
|
+
export type RatingColor = (typeof ratingColorIds)[number];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating-variants.js","sourceRoot":"","sources":["../../../../src/components/ui/rating/rating-variants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAsC,CAAC;AAG3F,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,aAAa;IACb,YAAY;CACwB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type ReactElement, type Ref } from "react";
|
|
3
|
+
import { ratingColorIds, ratingSizeIds, type RatingColor, type RatingSize } from "./rating-variants";
|
|
4
|
+
declare const ratingContainerVariants: (props?: ({
|
|
5
|
+
size?: "sm" | "lg" | "xl" | "md" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export interface RatingProps extends VariantProps<typeof ratingContainerVariants> {
|
|
8
|
+
/** Current rating value (0..max). Supports fractional values when `allowHalf` is true. */
|
|
9
|
+
value?: number;
|
|
10
|
+
/** Default uncontrolled value. */
|
|
11
|
+
defaultValue?: number;
|
|
12
|
+
/** Maximum number of stars. Defaults to 5. */
|
|
13
|
+
max?: number;
|
|
14
|
+
/** Color used for filled portions of stars. */
|
|
15
|
+
color?: RatingColor;
|
|
16
|
+
/** When true, allow half-star granularity in interactive mode. */
|
|
17
|
+
allowHalf?: boolean;
|
|
18
|
+
/** Disable interaction; render as a display-only rating. */
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
/** Disabled state — non-interactive and visually muted. */
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
/** Callback fired when the user selects a new value. */
|
|
23
|
+
onValueChange?: (value: number) => void;
|
|
24
|
+
/** Optional accessible label for the rating widget. */
|
|
25
|
+
"aria-label"?: string;
|
|
26
|
+
/** Optional id of an element labelling the rating widget. */
|
|
27
|
+
"aria-labelledby"?: string;
|
|
28
|
+
/** Custom class name forwarded to the root container. */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Optional ref to the root container. */
|
|
31
|
+
ref?: Ref<HTMLDivElement>;
|
|
32
|
+
/** Optional name to render a hidden form input (helpful for native form submission). */
|
|
33
|
+
name?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function Rating({ value, defaultValue, max, size, color, allowHalf, readOnly, disabled, onValueChange, className, ref, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }: RatingProps): ReactElement;
|
|
36
|
+
export declare namespace Rating {
|
|
37
|
+
var displayName: string;
|
|
38
|
+
}
|
|
39
|
+
export { ratingContainerVariants, ratingColorIds, ratingSizeIds };
|
|
40
|
+
export type { RatingColor, RatingSize };
|
|
41
|
+
export default Rating;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Star } from "lucide-react";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { useCallback, useMemo, useState, } from "react";
|
|
6
|
+
import { cn } from "../../../lib/utils";
|
|
7
|
+
import { ratingColorIds, ratingSizeIds, } from "./rating-variants";
|
|
8
|
+
const ratingContainerVariants = cva("inline-flex items-center align-middle text-muted-foreground/40", {
|
|
9
|
+
variants: {
|
|
10
|
+
size: {
|
|
11
|
+
sm: "gap-0.5",
|
|
12
|
+
md: "gap-1",
|
|
13
|
+
lg: "gap-1.5",
|
|
14
|
+
xl: "gap-2",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
defaultVariants: {
|
|
18
|
+
size: "md",
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
const starSizeClasses = {
|
|
22
|
+
sm: "size-3.5",
|
|
23
|
+
md: "size-5",
|
|
24
|
+
lg: "size-6",
|
|
25
|
+
xl: "size-8",
|
|
26
|
+
};
|
|
27
|
+
const filledColorClasses = {
|
|
28
|
+
warning: "text-warning",
|
|
29
|
+
primary: "text-primary",
|
|
30
|
+
destructive: "text-destructive",
|
|
31
|
+
foreground: "text-foreground",
|
|
32
|
+
};
|
|
33
|
+
function clampValue(value, max) {
|
|
34
|
+
if (Number.isNaN(value))
|
|
35
|
+
return 0;
|
|
36
|
+
if (value < 0)
|
|
37
|
+
return 0;
|
|
38
|
+
if (value > max)
|
|
39
|
+
return max;
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
export function Rating({ value, defaultValue, max = 5, size, color = "warning", allowHalf = false, readOnly = false, disabled = false, onValueChange, className, ref, name, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }) {
|
|
43
|
+
const isControlled = value !== undefined;
|
|
44
|
+
const [internal, setInternal] = useState(clampValue(defaultValue ?? 0, max));
|
|
45
|
+
const [hover, setHover] = useState(null);
|
|
46
|
+
const current = clampValue(isControlled ? value : internal, max);
|
|
47
|
+
const display = hover !== null ? hover : current;
|
|
48
|
+
const interactive = !readOnly && !disabled;
|
|
49
|
+
const updateValue = useCallback((next) => {
|
|
50
|
+
const clamped = clampValue(next, max);
|
|
51
|
+
if (!isControlled)
|
|
52
|
+
setInternal(clamped);
|
|
53
|
+
onValueChange?.(clamped);
|
|
54
|
+
}, [isControlled, max, onValueChange]);
|
|
55
|
+
const handleClick = useCallback((event, index) => {
|
|
56
|
+
if (!interactive)
|
|
57
|
+
return;
|
|
58
|
+
let next = index + 1;
|
|
59
|
+
if (allowHalf) {
|
|
60
|
+
const target = event.currentTarget;
|
|
61
|
+
const rect = target.getBoundingClientRect();
|
|
62
|
+
const isLeftHalf = event.clientX - rect.left < rect.width / 2;
|
|
63
|
+
next = index + (isLeftHalf ? 0.5 : 1);
|
|
64
|
+
}
|
|
65
|
+
// Toggle off when clicking the currently selected single-unit value.
|
|
66
|
+
if (!allowHalf && current === next) {
|
|
67
|
+
next = next - 1;
|
|
68
|
+
}
|
|
69
|
+
updateValue(next);
|
|
70
|
+
}, [interactive, allowHalf, current, updateValue]);
|
|
71
|
+
const handleKeyDown = useCallback((event) => {
|
|
72
|
+
if (!interactive)
|
|
73
|
+
return;
|
|
74
|
+
const step = allowHalf ? 0.5 : 1;
|
|
75
|
+
switch (event.key) {
|
|
76
|
+
case "ArrowRight":
|
|
77
|
+
case "ArrowUp":
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
updateValue(current + step);
|
|
80
|
+
break;
|
|
81
|
+
case "ArrowLeft":
|
|
82
|
+
case "ArrowDown":
|
|
83
|
+
event.preventDefault();
|
|
84
|
+
updateValue(current - step);
|
|
85
|
+
break;
|
|
86
|
+
case "Home":
|
|
87
|
+
event.preventDefault();
|
|
88
|
+
updateValue(0);
|
|
89
|
+
break;
|
|
90
|
+
case "End":
|
|
91
|
+
event.preventDefault();
|
|
92
|
+
updateValue(max);
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}, [interactive, allowHalf, current, max, updateValue]);
|
|
98
|
+
const stars = useMemo(() => Array.from({ length: max }, (_, i) => i), [max]);
|
|
99
|
+
const starClass = size ? starSizeClasses[size] : starSizeClasses.md;
|
|
100
|
+
const filledClass = filledColorClasses[color];
|
|
101
|
+
return (_jsxs("div", { ref: ref, role: interactive ? "slider" : "img", "aria-label": ariaLabel ?? `Rating: ${current} out of ${max}`, "aria-labelledby": ariaLabelledBy, "aria-valuemin": interactive ? 0 : undefined, "aria-valuemax": interactive ? max : undefined, "aria-valuenow": interactive ? current : undefined, "aria-valuetext": `${current} out of ${max}`, "aria-readonly": readOnly || undefined, "aria-disabled": disabled || undefined, tabIndex: interactive ? 0 : -1, onKeyDown: handleKeyDown, "data-slot": "rating", className: cn(ratingContainerVariants({ size }), interactive
|
|
102
|
+
? "cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-md"
|
|
103
|
+
: "cursor-default", disabled && "opacity-50 pointer-events-none", className), children: [stars.map((index) => {
|
|
104
|
+
const fill = Math.max(0, Math.min(1, display - index));
|
|
105
|
+
const filledPct = `${Math.round(fill * 100)}%`;
|
|
106
|
+
return (_jsxs("button", { type: "button", tabIndex: -1, disabled: !interactive, "aria-hidden": "true", "data-slot": "rating-star", "data-index": index, "data-fill": fill, onClick: (e) => handleClick(e, index), onMouseMove: (e) => {
|
|
107
|
+
if (!interactive)
|
|
108
|
+
return;
|
|
109
|
+
if (allowHalf) {
|
|
110
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
111
|
+
const isLeftHalf = e.clientX - rect.left < rect.width / 2;
|
|
112
|
+
setHover(index + (isLeftHalf ? 0.5 : 1));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
setHover(index + 1);
|
|
116
|
+
}
|
|
117
|
+
}, onMouseLeave: () => setHover(null), onFocus: () => undefined, className: cn("relative inline-flex items-center justify-center bg-transparent border-0 p-0 m-0", "transition-transform duration-150", interactive && "hover:scale-110 active:scale-95", !interactive && "cursor-default"), children: [_jsx(Star, { className: cn(starClass, "stroke-current fill-none"), "aria-hidden": "true" }), _jsx("span", { "aria-hidden": "true", className: cn("pointer-events-none absolute inset-0 inline-flex items-center justify-center overflow-hidden", filledClass), style: { clipPath: `inset(0 ${100 - parseInt(filledPct, 10)}% 0 0)` }, children: _jsx(Star, { className: cn(starClass, "fill-current stroke-current"), "aria-hidden": "true" }) })] }, index));
|
|
118
|
+
}), name ? (_jsx("input", { type: "hidden", name: name, value: current, readOnly: true })) : null] }));
|
|
119
|
+
}
|
|
120
|
+
Rating.displayName = "Rating";
|
|
121
|
+
export { ratingContainerVariants, ratingColorIds, ratingSizeIds };
|
|
122
|
+
export default Rating;
|
|
123
|
+
//# sourceMappingURL=rating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../../src/components/ui/rating/rating.tsx"],"names":[],"mappings":"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"}
|