@tablecraft/table 0.1.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/auto/auto-columns.d.ts +9 -0
- package/dist/auto/auto-columns.d.ts.map +1 -0
- package/dist/auto/auto-columns.js +39 -0
- package/dist/auto/auto-columns.js.map +1 -0
- package/dist/auto/auto-filters.d.ts +22 -0
- package/dist/auto/auto-filters.d.ts.map +1 -0
- package/dist/auto/auto-filters.js +15 -0
- package/dist/auto/auto-filters.js.map +1 -0
- package/dist/auto/rest-adapter.d.ts +34 -0
- package/dist/auto/rest-adapter.d.ts.map +1 -0
- package/dist/auto/rest-adapter.js +31 -0
- package/dist/auto/rest-adapter.js.map +1 -0
- package/dist/auto/static-adapter.d.ts +21 -0
- package/dist/auto/static-adapter.d.ts.map +1 -0
- package/dist/auto/static-adapter.js +116 -0
- package/dist/auto/static-adapter.js.map +1 -0
- package/dist/auto/tablecraft-adapter.d.ts +26 -0
- package/dist/auto/tablecraft-adapter.d.ts.map +1 -0
- package/dist/auto/tablecraft-adapter.js +143 -0
- package/dist/auto/tablecraft-adapter.js.map +1 -0
- package/dist/auto/use-auto-columns.d.ts +13 -0
- package/dist/auto/use-auto-columns.d.ts.map +1 -0
- package/dist/auto/use-auto-columns.js +53 -0
- package/dist/auto/use-auto-columns.js.map +1 -0
- package/dist/column-header.d.ts +8 -0
- package/dist/column-header.d.ts.map +1 -0
- package/dist/column-header.js +33 -0
- package/dist/column-header.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +35 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar-date-picker.d.ts +21 -0
- package/dist/components/calendar-date-picker.d.ts.map +1 -0
- package/dist/components/calendar-date-picker.js +333 -0
- package/dist/components/calendar-date-picker.js.map +1 -0
- package/dist/components/calendar.d.ts +9 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +77 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +10 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/command.d.ts +79 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +26 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/popover.d.ts +11 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +27 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/select.d.ts +14 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +28 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/table-dropdown.d.ts +26 -0
- package/dist/components/table-dropdown.d.ts.map +1 -0
- package/dist/components/table-dropdown.js +52 -0
- package/dist/components/table-dropdown.js.map +1 -0
- package/dist/core/table-config.d.ts +12 -0
- package/dist/core/table-config.d.ts.map +1 -0
- package/dist/core/table-config.js +33 -0
- package/dist/core/table-config.js.map +1 -0
- package/dist/core/use-column-resize.d.ts +10 -0
- package/dist/core/use-column-resize.d.ts.map +1 -0
- package/dist/core/use-column-resize.js +83 -0
- package/dist/core/use-column-resize.js.map +1 -0
- package/dist/core/use-conditional-state.d.ts +14 -0
- package/dist/core/use-conditional-state.d.ts.map +1 -0
- package/dist/core/use-conditional-state.js +27 -0
- package/dist/core/use-conditional-state.js.map +1 -0
- package/dist/core/use-table-data.d.ts +64 -0
- package/dist/core/use-table-data.d.ts.map +1 -0
- package/dist/core/use-table-data.js +141 -0
- package/dist/core/use-table-data.js.map +1 -0
- package/dist/core/use-url-state.d.ts +14 -0
- package/dist/core/use-url-state.d.ts.map +1 -0
- package/dist/core/use-url-state.js +269 -0
- package/dist/core/use-url-state.js.map +1 -0
- package/dist/data-table.d.ts +3 -0
- package/dist/data-table.d.ts.map +1 -0
- package/dist/data-table.js +278 -0
- package/dist/data-table.js.map +1 -0
- package/dist/expand-icon.d.ts +9 -0
- package/dist/expand-icon.d.ts.map +1 -0
- package/dist/expand-icon.js +13 -0
- package/dist/expand-icon.js.map +1 -0
- package/dist/export.d.ts +13 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +122 -0
- package/dist/export.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +11 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +49 -0
- package/dist/pagination.js.map +1 -0
- package/dist/renderers/actions.d.ts +8 -0
- package/dist/renderers/actions.d.ts.map +1 -0
- package/dist/renderers/actions.js +10 -0
- package/dist/renderers/actions.js.map +1 -0
- package/dist/renderers/badge.d.ts +3 -0
- package/dist/renderers/badge.d.ts.map +1 -0
- package/dist/renderers/badge.js +18 -0
- package/dist/renderers/badge.js.map +1 -0
- package/dist/renderers/boolean.d.ts +3 -0
- package/dist/renderers/boolean.d.ts.map +1 -0
- package/dist/renderers/boolean.js +10 -0
- package/dist/renderers/boolean.js.map +1 -0
- package/dist/renderers/date.d.ts +3 -0
- package/dist/renderers/date.d.ts.map +1 -0
- package/dist/renderers/date.js +56 -0
- package/dist/renderers/date.js.map +1 -0
- package/dist/renderers/image.d.ts +3 -0
- package/dist/renderers/image.d.ts.map +1 -0
- package/dist/renderers/image.js +18 -0
- package/dist/renderers/image.js.map +1 -0
- package/dist/renderers/index.d.ts +23 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +43 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/link.d.ts +3 -0
- package/dist/renderers/link.d.ts.map +1 -0
- package/dist/renderers/link.js +9 -0
- package/dist/renderers/link.js.map +1 -0
- package/dist/renderers/number.d.ts +3 -0
- package/dist/renderers/number.d.ts.map +1 -0
- package/dist/renderers/number.js +29 -0
- package/dist/renderers/number.js.map +1 -0
- package/dist/renderers/progress.d.ts +3 -0
- package/dist/renderers/progress.d.ts.map +1 -0
- package/dist/renderers/progress.js +10 -0
- package/dist/renderers/progress.js.map +1 -0
- package/dist/renderers/tags.d.ts +3 -0
- package/dist/renderers/tags.d.ts.map +1 -0
- package/dist/renderers/tags.js +28 -0
- package/dist/renderers/tags.js.map +1 -0
- package/dist/renderers/text.d.ts +3 -0
- package/dist/renderers/text.d.ts.map +1 -0
- package/dist/renderers/text.js +8 -0
- package/dist/renderers/text.js.map +1 -0
- package/dist/resizer.d.ts +6 -0
- package/dist/resizer.d.ts.map +1 -0
- package/dist/resizer.js +10 -0
- package/dist/resizer.js.map +1 -0
- package/dist/row-actions.d.ts +10 -0
- package/dist/row-actions.d.ts.map +1 -0
- package/dist/row-actions.js +36 -0
- package/dist/row-actions.js.map +1 -0
- package/dist/toolbar.d.ts +35 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +119 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/types.d.ts +230 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/column-sizing.d.ts +18 -0
- package/dist/utils/column-sizing.d.ts.map +1 -0
- package/dist/utils/column-sizing.js +78 -0
- package/dist/utils/column-sizing.js.map +1 -0
- package/dist/utils/date-format.d.ts +13 -0
- package/dist/utils/date-format.d.ts.map +1 -0
- package/dist/utils/date-format.js +30 -0
- package/dist/utils/date-format.js.map +1 -0
- package/dist/utils/deep-utils.d.ts +15 -0
- package/dist/utils/deep-utils.d.ts.map +1 -0
- package/dist/utils/deep-utils.js +111 -0
- package/dist/utils/deep-utils.js.map +1 -0
- package/dist/utils/export-utils.d.ts +25 -0
- package/dist/utils/export-utils.d.ts.map +1 -0
- package/dist/utils/export-utils.js +170 -0
- package/dist/utils/export-utils.js.map +1 -0
- package/dist/utils/history-sync.d.ts +11 -0
- package/dist/utils/history-sync.d.ts.map +1 -0
- package/dist/utils/history-sync.js +45 -0
- package/dist/utils/history-sync.js.map +1 -0
- package/dist/utils/keyboard-navigation.d.ts +11 -0
- package/dist/utils/keyboard-navigation.d.ts.map +1 -0
- package/dist/utils/keyboard-navigation.js +39 -0
- package/dist/utils/keyboard-navigation.js.map +1 -0
- package/dist/utils/search.d.ts +10 -0
- package/dist/utils/search.d.ts.map +1 -0
- package/dist/utils/search.js +33 -0
- package/dist/utils/search.js.map +1 -0
- package/dist/utils/size-variants.d.ts +15 -0
- package/dist/utils/size-variants.d.ts.map +1 -0
- package/dist/utils/size-variants.js +42 -0
- package/dist/utils/size-variants.js.map +1 -0
- package/dist/utils/url-events.d.ts +2 -0
- package/dist/utils/url-events.d.ts.map +1 -0
- package/dist/utils/url-events.js +4 -0
- package/dist/utils/url-events.js.map +1 -0
- package/dist/view-options.d.ts +10 -0
- package/dist/view-options.d.ts.map +1 -0
- package/dist/view-options.js +104 -0
- package/dist/view-options.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ArrowDown, ArrowUp, ChevronsUpDown, EyeOff, } from "lucide-react";
|
|
4
|
+
import { cn } from "./utils/cn";
|
|
5
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "./components/table-dropdown";
|
|
6
|
+
export function DataTableColumnHeader({ column, title, className, }) {
|
|
7
|
+
if (!column.getCanSort()) {
|
|
8
|
+
return _jsx("div", { className: cn(className), children: title });
|
|
9
|
+
}
|
|
10
|
+
// Get the current sort direction for this column
|
|
11
|
+
const currentDirection = column.getIsSorted();
|
|
12
|
+
// Use direct method to set sort with an explicit direction
|
|
13
|
+
const setSorting = (direction) => {
|
|
14
|
+
// If we're clearing sort, use an empty array
|
|
15
|
+
if (direction === false) {
|
|
16
|
+
column.toggleSorting(undefined, false);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
// Set explicit sort with the direction
|
|
20
|
+
// The second param (false) prevents multi-sort
|
|
21
|
+
column.toggleSorting(direction === "desc", false);
|
|
22
|
+
};
|
|
23
|
+
return (_jsx("div", { className: cn("flex items-center space-x-2", className), children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs("button", { className: cn(
|
|
24
|
+
// Button base styles (matching shadcn/ui Button)
|
|
25
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm 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",
|
|
26
|
+
// Variant "ghost"
|
|
27
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
28
|
+
// Size "sm"
|
|
29
|
+
"-ml-2 h-8 px-2",
|
|
30
|
+
// Custom overrides from tnks-data-table
|
|
31
|
+
"data-[state=open]:bg-accent focus-visible:ring-0 focus-visible:ring-offset-0"), children: [_jsx("span", { children: title }), currentDirection === "desc" ? (_jsx(ArrowDown, { className: "ml-2 h-4 w-4" })) : currentDirection === "asc" ? (_jsx(ArrowUp, { className: "ml-2 h-4 w-4" })) : (_jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4" }))] }) }), _jsxs(DropdownMenuContent, { align: "start", children: [_jsxs(DropdownMenuItem, { onClick: () => setSorting("asc"), children: [_jsx(ArrowUp, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Asc"] }), _jsxs(DropdownMenuItem, { onClick: () => setSorting("desc"), children: [_jsx(ArrowDown, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Desc"] }), _jsx(DropdownMenuSeparator, {}), _jsxs(DropdownMenuItem, { onClick: () => column.toggleVisibility(false), children: [_jsx(EyeOff, { className: "mr-2 h-3.5 w-3.5 text-muted-foreground/70" }), "Hide"] })] })] }) }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=column-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-header.js","sourceRoot":"","sources":["../src/column-header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EACL,SAAS,EACT,OAAO,EACP,cAAc,EACd,MAAM,GACP,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAQrC,MAAM,UAAU,qBAAqB,CAAgB,EACnD,MAAM,EACN,KAAK,EACL,SAAS,GACiC;IAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QACzB,OAAO,cAAK,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,YAAG,KAAK,GAAO,CAAC;IACtD,CAAC;IAED,iDAAiD;IACjD,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAE9C,2DAA2D;IAC3D,MAAM,UAAU,GAAG,CAAC,SAAiC,EAAE,EAAE;QACvD,6CAA6C;QAC7C,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,+CAA+C;QAC/C,MAAM,CAAC,aAAa,CAAC,SAAS,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,YAC1D,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,kBACE,SAAS,EAAE,EAAE;wBACX,iDAAiD;wBACjD,wRAAwR;wBACxR,kBAAkB;wBAClB,8CAA8C;wBAC9C,YAAY;wBACZ,gBAAgB;wBAChB,wCAAwC;wBACxC,8EAA8E,CAC/E,aAED,yBAAO,KAAK,GAAQ,EACnB,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,CAC7B,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,CACvC,CAAC,CAAC,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,CAC/B,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,CACrC,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IAAC,SAAS,EAAC,cAAc,GAAG,CAC5C,IACM,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,OAAO,aAChC,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,aAChD,KAAC,OAAO,IAAC,SAAS,EAAC,2CAA2C,GAAG,WAEhD,EACnB,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,aACjD,KAAC,SAAS,IAAC,SAAS,EAAC,2CAA2C,GAAG,YAElD,EACnB,KAAC,qBAAqB,KAAG,EACzB,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAC7D,KAAC,MAAM,IAAC,SAAS,EAAC,2CAA2C,GAAG,YAE/C,IACC,IACT,GACX,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
5
|
+
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
export { Button, buttonVariants };
|
|
12
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,cAAc;;;8EA2BnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFAWX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
import { cn } from "../utils/cn";
|
|
7
|
+
const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
11
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
12
|
+
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
13
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
14
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
15
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
16
|
+
},
|
|
17
|
+
size: {
|
|
18
|
+
default: "h-9 px-3 py-2",
|
|
19
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
20
|
+
lg: "h-10 rounded-md px-4",
|
|
21
|
+
icon: "size-9",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
defaultVariants: {
|
|
25
|
+
variant: "default",
|
|
26
|
+
size: "default",
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
30
|
+
const Comp = asChild ? Slot : "button";
|
|
31
|
+
return (_jsx(Comp, { className: cn(buttonVariants({ variant, size, className })), ref: ref, ...props }));
|
|
32
|
+
});
|
|
33
|
+
Button.displayName = "Button";
|
|
34
|
+
export { Button, buttonVariants };
|
|
35
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,cAAc,GAAG,GAAG,CACxB,0VAA0V,EAC1V;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,wDAAwD;YACjE,WAAW,EACT,oEAAoE;YACtE,OAAO,EACL,gFAAgF;YAClF,SAAS,EACP,8DAA8D;YAChE,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,EAAE,EAAE,6BAA6B;YACjC,EAAE,EAAE,sBAAsB;YAC1B,IAAI,EAAE,QAAQ;SACf;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC;AAQF,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvC,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAC3D,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AACF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { DateRange } from "react-day-picker";
|
|
3
|
+
import { type VariantProps } from "class-variance-authority";
|
|
4
|
+
declare const multiSelectVariants: (props?: ({
|
|
5
|
+
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
interface CalendarDatePickerProps extends React.HTMLAttributes<HTMLButtonElement>, VariantProps<typeof multiSelectVariants> {
|
|
8
|
+
id?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
date: DateRange;
|
|
11
|
+
closeOnSelect?: boolean;
|
|
12
|
+
numberOfMonths?: 1 | 2;
|
|
13
|
+
yearsRange?: number;
|
|
14
|
+
onDateSelect: (range: {
|
|
15
|
+
from: Date;
|
|
16
|
+
to: Date;
|
|
17
|
+
}) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const CalendarDatePicker: React.ForwardRefExoticComponent<CalendarDatePickerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=calendar-date-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-date-picker.d.ts","sourceRoot":"","sources":["../../src/components/calendar-date-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiClE,QAAA,MAAM,mBAAmB;;8EAoBxB,CAAC;AAEF,UAAU,uBACR,SAAQ,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAC7C,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACzD;AAED,eAAO,MAAM,kBAAkB,mGAsmB9B,CAAC"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { CalendarIcon } from "lucide-react";
|
|
5
|
+
import { startOfWeek, endOfWeek, subDays, subYears, startOfMonth, endOfMonth, startOfYear, endOfYear, startOfDay, endOfDay, } from "date-fns";
|
|
6
|
+
import { toDate, formatInTimeZone } from "date-fns-tz";
|
|
7
|
+
import { cva } from "class-variance-authority";
|
|
8
|
+
import { cn } from "../utils/cn";
|
|
9
|
+
import { Button } from "./button";
|
|
10
|
+
import { Popover, PopoverContent, PopoverTrigger, } from "./popover";
|
|
11
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "./select";
|
|
12
|
+
import { Calendar } from "./calendar";
|
|
13
|
+
const months = [
|
|
14
|
+
"January",
|
|
15
|
+
"February",
|
|
16
|
+
"March",
|
|
17
|
+
"April",
|
|
18
|
+
"May",
|
|
19
|
+
"June",
|
|
20
|
+
"July",
|
|
21
|
+
"August",
|
|
22
|
+
"September",
|
|
23
|
+
"October",
|
|
24
|
+
"November",
|
|
25
|
+
"December",
|
|
26
|
+
];
|
|
27
|
+
const multiSelectVariants = cva("flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium text-foreground 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", {
|
|
28
|
+
variants: {
|
|
29
|
+
variant: {
|
|
30
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
31
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
32
|
+
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
33
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
34
|
+
ghost: "hover:bg-accent hover:text-accent-foreground text-background",
|
|
35
|
+
link: " underline-offset-4 hover:underline text-background",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
defaultVariants: {
|
|
39
|
+
variant: "default",
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
export const CalendarDatePicker = React.forwardRef(({ id = "calendar-date-picker", className, date, closeOnSelect = false, numberOfMonths = 2, yearsRange = 10, onDateSelect, variant, ...props }, ref) => {
|
|
43
|
+
const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);
|
|
44
|
+
const [selectedRange, setSelectedRange] = React.useState(numberOfMonths === 2 ? "This Year" : "Today");
|
|
45
|
+
const [monthFrom, setMonthFrom] = React.useState(date?.from);
|
|
46
|
+
const [yearFrom, setYearFrom] = React.useState(date?.from?.getFullYear());
|
|
47
|
+
const [monthTo, setMonthTo] = React.useState(numberOfMonths === 2 ? date?.to : date?.from);
|
|
48
|
+
const [yearTo, setYearTo] = React.useState(numberOfMonths === 2
|
|
49
|
+
? date?.to?.getFullYear()
|
|
50
|
+
: date?.from?.getFullYear());
|
|
51
|
+
const [highlightedPart, setHighlightedPart] = React.useState(null);
|
|
52
|
+
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
53
|
+
const handleClose = () => setIsPopoverOpen(false);
|
|
54
|
+
const handleTogglePopover = () => setIsPopoverOpen((prev) => !prev);
|
|
55
|
+
const selectDateRange = (from, to, range) => {
|
|
56
|
+
const startDate = startOfDay(toDate(from, { timeZone }));
|
|
57
|
+
const endDate = numberOfMonths === 2 ? endOfDay(toDate(to, { timeZone })) : startDate;
|
|
58
|
+
onDateSelect({ from: startDate, to: endDate });
|
|
59
|
+
setSelectedRange(range);
|
|
60
|
+
setMonthFrom(from);
|
|
61
|
+
setYearFrom(from.getFullYear());
|
|
62
|
+
setMonthTo(to);
|
|
63
|
+
setYearTo(to.getFullYear());
|
|
64
|
+
closeOnSelect && setIsPopoverOpen(false);
|
|
65
|
+
};
|
|
66
|
+
const handleDateSelect = (range) => {
|
|
67
|
+
if (range) {
|
|
68
|
+
let from = startOfDay(toDate(range.from, { timeZone }));
|
|
69
|
+
let to = range.to ? endOfDay(toDate(range.to, { timeZone })) : from;
|
|
70
|
+
if (numberOfMonths === 1) {
|
|
71
|
+
if (range.from !== date.from) {
|
|
72
|
+
to = from;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
from = startOfDay(toDate(range.to, { timeZone }));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
onDateSelect({ from, to });
|
|
79
|
+
setMonthFrom(from);
|
|
80
|
+
setYearFrom(from.getFullYear());
|
|
81
|
+
setMonthTo(to);
|
|
82
|
+
setYearTo(to.getFullYear());
|
|
83
|
+
}
|
|
84
|
+
setSelectedRange(null);
|
|
85
|
+
};
|
|
86
|
+
const handleMonthChange = (newMonthIndex, part) => {
|
|
87
|
+
setSelectedRange(null);
|
|
88
|
+
if (part === "from") {
|
|
89
|
+
if (yearFrom !== undefined) {
|
|
90
|
+
if (newMonthIndex < 0 || newMonthIndex > 11)
|
|
91
|
+
return;
|
|
92
|
+
const newMonth = new Date(yearFrom, newMonthIndex, 1);
|
|
93
|
+
const from = numberOfMonths === 2
|
|
94
|
+
? startOfMonth(toDate(newMonth, { timeZone }))
|
|
95
|
+
: date?.from
|
|
96
|
+
? new Date(date.from.getFullYear(), newMonth.getMonth(), date.from.getDate())
|
|
97
|
+
: newMonth;
|
|
98
|
+
const to = numberOfMonths === 2
|
|
99
|
+
? date.to
|
|
100
|
+
? endOfDay(toDate(date.to, { timeZone }))
|
|
101
|
+
: endOfMonth(toDate(newMonth, { timeZone }))
|
|
102
|
+
: from;
|
|
103
|
+
if (from <= to) {
|
|
104
|
+
onDateSelect({ from, to });
|
|
105
|
+
setMonthFrom(newMonth);
|
|
106
|
+
setMonthTo(date.to);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (yearTo !== undefined) {
|
|
112
|
+
if (newMonthIndex < 0 || newMonthIndex > 11)
|
|
113
|
+
return;
|
|
114
|
+
const newMonth = new Date(yearTo, newMonthIndex, 1);
|
|
115
|
+
const from = date.from
|
|
116
|
+
? startOfDay(toDate(date.from, { timeZone }))
|
|
117
|
+
: startOfMonth(toDate(newMonth, { timeZone }));
|
|
118
|
+
const to = numberOfMonths === 2
|
|
119
|
+
? endOfMonth(toDate(newMonth, { timeZone }))
|
|
120
|
+
: from;
|
|
121
|
+
if (from <= to) {
|
|
122
|
+
onDateSelect({ from, to });
|
|
123
|
+
setMonthTo(newMonth);
|
|
124
|
+
setMonthFrom(date.from);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const handleYearChange = (newYear, part) => {
|
|
130
|
+
setSelectedRange(null);
|
|
131
|
+
if (part === "from") {
|
|
132
|
+
if (years.includes(newYear)) {
|
|
133
|
+
const newMonth = monthFrom
|
|
134
|
+
? new Date(newYear, monthFrom ? monthFrom.getMonth() : 0, 1)
|
|
135
|
+
: new Date(newYear, 0, 1);
|
|
136
|
+
const from = numberOfMonths === 2
|
|
137
|
+
? startOfMonth(toDate(newMonth, { timeZone }))
|
|
138
|
+
: date.from
|
|
139
|
+
? new Date(newYear, newMonth.getMonth(), date.from.getDate())
|
|
140
|
+
: newMonth;
|
|
141
|
+
const to = numberOfMonths === 2
|
|
142
|
+
? date.to
|
|
143
|
+
? endOfDay(toDate(date.to, { timeZone }))
|
|
144
|
+
: endOfMonth(toDate(newMonth, { timeZone }))
|
|
145
|
+
: from;
|
|
146
|
+
if (from <= to) {
|
|
147
|
+
onDateSelect({ from, to });
|
|
148
|
+
setYearFrom(newYear);
|
|
149
|
+
setMonthFrom(newMonth);
|
|
150
|
+
setYearTo(date.to?.getFullYear());
|
|
151
|
+
setMonthTo(date.to);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
if (years.includes(newYear)) {
|
|
157
|
+
const newMonth = monthTo
|
|
158
|
+
? new Date(newYear, monthTo.getMonth(), 1)
|
|
159
|
+
: new Date(newYear, 0, 1);
|
|
160
|
+
const from = date.from
|
|
161
|
+
? startOfDay(toDate(date.from, { timeZone }))
|
|
162
|
+
: startOfMonth(toDate(newMonth, { timeZone }));
|
|
163
|
+
const to = numberOfMonths === 2
|
|
164
|
+
? endOfMonth(toDate(newMonth, { timeZone }))
|
|
165
|
+
: from;
|
|
166
|
+
if (from <= to) {
|
|
167
|
+
onDateSelect({ from, to });
|
|
168
|
+
setYearTo(newYear);
|
|
169
|
+
setMonthTo(newMonth);
|
|
170
|
+
setYearFrom(date.from?.getFullYear());
|
|
171
|
+
setMonthFrom(date.from);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const today = new Date();
|
|
177
|
+
const years = Array.from({ length: yearsRange + 1 }, (_, i) => today.getFullYear() - yearsRange / 2 + i);
|
|
178
|
+
const dateRanges = [
|
|
179
|
+
{ label: "Today", start: today, end: today },
|
|
180
|
+
{ label: "Yesterday", start: subDays(today, 1), end: subDays(today, 1) },
|
|
181
|
+
{
|
|
182
|
+
label: "This Week",
|
|
183
|
+
start: startOfWeek(today, { weekStartsOn: 1 }),
|
|
184
|
+
end: endOfWeek(today, { weekStartsOn: 1 }),
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
label: "Last Week",
|
|
188
|
+
start: subDays(startOfWeek(today, { weekStartsOn: 1 }), 7),
|
|
189
|
+
end: subDays(endOfWeek(today, { weekStartsOn: 1 }), 7),
|
|
190
|
+
},
|
|
191
|
+
{ label: "Last 7 Days", start: subDays(today, 6), end: today },
|
|
192
|
+
{
|
|
193
|
+
label: "This Month",
|
|
194
|
+
start: startOfMonth(today),
|
|
195
|
+
end: endOfMonth(today),
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
label: "Last Month",
|
|
199
|
+
start: startOfMonth(subDays(today, today.getDate())),
|
|
200
|
+
end: endOfMonth(subDays(today, today.getDate())),
|
|
201
|
+
},
|
|
202
|
+
{ label: "This Year", start: startOfYear(today), end: endOfYear(today) },
|
|
203
|
+
{
|
|
204
|
+
label: "Last Year",
|
|
205
|
+
start: startOfYear(subYears(today, 1)),
|
|
206
|
+
end: endOfYear(subYears(today, 1)),
|
|
207
|
+
},
|
|
208
|
+
];
|
|
209
|
+
const handleMouseOver = (part) => {
|
|
210
|
+
setHighlightedPart(part);
|
|
211
|
+
};
|
|
212
|
+
const handleMouseLeave = () => {
|
|
213
|
+
setHighlightedPart(null);
|
|
214
|
+
};
|
|
215
|
+
const handleWheel = (event, _part) => {
|
|
216
|
+
event.preventDefault();
|
|
217
|
+
setSelectedRange(null);
|
|
218
|
+
if (highlightedPart === "firstDay") {
|
|
219
|
+
const newDate = new Date(date.from);
|
|
220
|
+
const increment = event.deltaY > 0 ? -1 : 1;
|
|
221
|
+
newDate.setDate(newDate.getDate() + increment);
|
|
222
|
+
if (newDate <= date.to) {
|
|
223
|
+
numberOfMonths === 2
|
|
224
|
+
? onDateSelect({ from: newDate, to: new Date(date.to) })
|
|
225
|
+
: onDateSelect({ from: newDate, to: newDate });
|
|
226
|
+
setMonthFrom(newDate);
|
|
227
|
+
}
|
|
228
|
+
else if (newDate > date.to && numberOfMonths === 1) {
|
|
229
|
+
onDateSelect({ from: newDate, to: newDate });
|
|
230
|
+
setMonthFrom(newDate);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else if (highlightedPart === "firstMonth") {
|
|
234
|
+
const currentMonth = monthFrom ? monthFrom.getMonth() : 0;
|
|
235
|
+
const newMonthIndex = currentMonth + (event.deltaY > 0 ? -1 : 1);
|
|
236
|
+
handleMonthChange(newMonthIndex, "from");
|
|
237
|
+
}
|
|
238
|
+
else if (highlightedPart === "firstYear" && yearFrom !== undefined) {
|
|
239
|
+
const newYear = yearFrom + (event.deltaY > 0 ? -1 : 1);
|
|
240
|
+
handleYearChange(newYear, "from");
|
|
241
|
+
}
|
|
242
|
+
else if (highlightedPart === "secondDay") {
|
|
243
|
+
const newDate = new Date(date.to);
|
|
244
|
+
const increment = event.deltaY > 0 ? -1 : 1;
|
|
245
|
+
newDate.setDate(newDate.getDate() + increment);
|
|
246
|
+
if (newDate >= date.from) {
|
|
247
|
+
onDateSelect({ from: new Date(date.from), to: newDate });
|
|
248
|
+
setMonthTo(newDate);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
else if (highlightedPart === "secondMonth") {
|
|
252
|
+
const currentMonth = monthTo ? monthTo.getMonth() : 0;
|
|
253
|
+
const newMonthIndex = currentMonth + (event.deltaY > 0 ? -1 : 1);
|
|
254
|
+
handleMonthChange(newMonthIndex, "to");
|
|
255
|
+
}
|
|
256
|
+
else if (highlightedPart === "secondYear" && yearTo !== undefined) {
|
|
257
|
+
const newYear = yearTo + (event.deltaY > 0 ? -1 : 1);
|
|
258
|
+
handleYearChange(newYear, "to");
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
const handleWheelRef = React.useRef(handleWheel);
|
|
262
|
+
handleWheelRef.current = handleWheel;
|
|
263
|
+
React.useEffect(() => {
|
|
264
|
+
const firstDayElement = document.getElementById(`firstDay-${id}`);
|
|
265
|
+
const firstMonthElement = document.getElementById(`firstMonth-${id}`);
|
|
266
|
+
const firstYearElement = document.getElementById(`firstYear-${id}`);
|
|
267
|
+
const secondDayElement = document.getElementById(`secondDay-${id}`);
|
|
268
|
+
const secondMonthElement = document.getElementById(`secondMonth-${id}`);
|
|
269
|
+
const secondYearElement = document.getElementById(`secondYear-${id}`);
|
|
270
|
+
const elements = [
|
|
271
|
+
firstDayElement,
|
|
272
|
+
firstMonthElement,
|
|
273
|
+
firstYearElement,
|
|
274
|
+
secondDayElement,
|
|
275
|
+
secondMonthElement,
|
|
276
|
+
secondYearElement,
|
|
277
|
+
];
|
|
278
|
+
const wheelHandler = (e) => {
|
|
279
|
+
handleWheelRef.current(e, "");
|
|
280
|
+
};
|
|
281
|
+
const addPassiveEventListener = (element) => {
|
|
282
|
+
if (element) {
|
|
283
|
+
element.addEventListener("wheel", wheelHandler, {
|
|
284
|
+
passive: false,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
elements.forEach(addPassiveEventListener);
|
|
289
|
+
return () => {
|
|
290
|
+
elements.forEach((element) => {
|
|
291
|
+
if (element) {
|
|
292
|
+
element.removeEventListener("wheel", wheelHandler);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
};
|
|
296
|
+
}, [id]);
|
|
297
|
+
const formatWithTz = (date, fmt) => formatInTimeZone(date, timeZone, fmt);
|
|
298
|
+
return (_jsxs(_Fragment, { children: [_jsx("style", { children: `
|
|
299
|
+
.date-part {
|
|
300
|
+
touch-action: none;
|
|
301
|
+
}
|
|
302
|
+
` }), _jsxs(Popover, { open: isPopoverOpen, onOpenChange: setIsPopoverOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { id: "date", ref: ref, ...props, className: cn("w-auto", multiSelectVariants({ variant, className })), size: "default", onClick: handleTogglePopover, suppressHydrationWarning: true, children: [_jsx(CalendarIcon, { className: "mr-2 h-4 w-4" }), _jsx("span", { children: date?.from ? (date.to ? (_jsxs(_Fragment, { children: [_jsx("span", { id: `firstDay-${id}`, className: cn("date-part", highlightedPart === "firstDay" &&
|
|
303
|
+
"underline font-bold"), onMouseOver: () => handleMouseOver("firstDay"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.from, "dd") }), " ", _jsx("span", { id: `firstMonth-${id}`, className: cn("date-part", highlightedPart === "firstMonth" &&
|
|
304
|
+
"underline font-bold"), onMouseOver: () => handleMouseOver("firstMonth"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.from, "LLL") }), ",", " ", _jsx("span", { id: `firstYear-${id}`, className: cn("date-part", highlightedPart === "firstYear" &&
|
|
305
|
+
"underline font-bold"), onMouseOver: () => handleMouseOver("firstYear"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.from, "y") }), numberOfMonths === 2 && (_jsxs(_Fragment, { children: [" - ", _jsx("span", { id: `secondDay-${id}`, className: cn("date-part", highlightedPart === "secondDay" &&
|
|
306
|
+
"underline font-bold"), onMouseOver: () => handleMouseOver("secondDay"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.to, "dd") }), " ", _jsx("span", { id: `secondMonth-${id}`, className: cn("date-part", highlightedPart === "secondMonth" &&
|
|
307
|
+
"underline font-bold"), onMouseOver: () => handleMouseOver("secondMonth"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.to, "LLL") }), ",", " ", _jsx("span", { id: `secondYear-${id}`, className: cn("date-part", highlightedPart === "secondYear" &&
|
|
308
|
+
"underline font-bold"), onMouseOver: () => handleMouseOver("secondYear"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.to, "y") })] }))] })) : (_jsxs(_Fragment, { children: [_jsx("span", { id: "day", className: cn("date-part", highlightedPart === "day" && "underline font-bold"), onMouseOver: () => handleMouseOver("day"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.from, "dd") }), " ", _jsx("span", { id: "month", className: cn("date-part", highlightedPart === "month" && "underline font-bold"), onMouseOver: () => handleMouseOver("month"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.from, "LLL") }), ",", " ", _jsx("span", { id: "year", className: cn("date-part", highlightedPart === "year" && "underline font-bold"), onMouseOver: () => handleMouseOver("year"), onMouseLeave: handleMouseLeave, children: formatWithTz(date.from, "y") })] }))) : (_jsx("span", { children: "Select a date" })) })] }) }), isPopoverOpen && (_jsx(PopoverContent, { className: "w-auto", align: "start", avoidCollisions: false, onInteractOutside: handleClose, onEscapeKeyDown: handleClose, style: {
|
|
309
|
+
maxHeight: "var(--radix-popover-content-available-height)",
|
|
310
|
+
overflowY: "auto",
|
|
311
|
+
}, children: _jsxs("div", { className: "flex", children: [numberOfMonths === 2 && (_jsx("div", { className: "flex flex-col gap-1 pr-4 text-left border-r border-foreground/10", children: dateRanges.map(({ label, start, end }) => (_jsx(Button, { variant: "ghost", size: "default", className: cn("justify-start hover:bg-primary/90 hover:text-background", selectedRange === label &&
|
|
312
|
+
"bg-primary text-background hover:bg-primary/90 hover:text-background"), onClick: () => {
|
|
313
|
+
selectDateRange(start, end, label);
|
|
314
|
+
setMonthFrom(start);
|
|
315
|
+
setYearFrom(start.getFullYear());
|
|
316
|
+
setMonthTo(end);
|
|
317
|
+
setYearTo(end.getFullYear());
|
|
318
|
+
}, children: label }, label))) })), _jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("div", { className: "flex gap-2 ml-3", children: [_jsxs(Select, { onValueChange: (value) => {
|
|
319
|
+
handleMonthChange(months.indexOf(value), "from");
|
|
320
|
+
setSelectedRange(null);
|
|
321
|
+
}, value: monthFrom ? months[monthFrom.getMonth()] : undefined, children: [_jsx(SelectTrigger, { className: "w-[122px] focus:ring-0 focus:ring-offset-0 font-medium hover:bg-accent hover:text-accent-foreground", children: _jsx(SelectValue, { placeholder: "Month" }) }), _jsx(SelectContent, { children: months.map((month, idx) => (_jsx(SelectItem, { value: month, children: month }, idx))) })] }), _jsxs(Select, { onValueChange: (value) => {
|
|
322
|
+
handleYearChange(Number(value), "from");
|
|
323
|
+
setSelectedRange(null);
|
|
324
|
+
}, value: yearFrom ? yearFrom.toString() : undefined, children: [_jsx(SelectTrigger, { className: "w-[122px] focus:ring-0 focus:ring-offset-0 font-medium hover:bg-accent hover:text-accent-foreground", children: _jsx(SelectValue, { placeholder: "Year" }) }), _jsx(SelectContent, { children: years.map((year, idx) => (_jsx(SelectItem, { value: year.toString(), children: year }, idx))) })] })] }), numberOfMonths === 2 && (_jsxs("div", { className: "flex gap-2", children: [_jsxs(Select, { onValueChange: (value) => {
|
|
325
|
+
handleMonthChange(months.indexOf(value), "to");
|
|
326
|
+
setSelectedRange(null);
|
|
327
|
+
}, value: monthTo ? months[monthTo.getMonth()] : undefined, children: [_jsx(SelectTrigger, { className: "w-[122px] focus:ring-0 focus:ring-offset-0 font-medium hover:bg-accent hover:text-accent-foreground", children: _jsx(SelectValue, { placeholder: "Month" }) }), _jsx(SelectContent, { children: months.map((month, idx) => (_jsx(SelectItem, { value: month, children: month }, idx))) })] }), _jsxs(Select, { onValueChange: (value) => {
|
|
328
|
+
handleYearChange(Number(value), "to");
|
|
329
|
+
setSelectedRange(null);
|
|
330
|
+
}, value: yearTo ? yearTo.toString() : undefined, children: [_jsx(SelectTrigger, { className: "w-[122px] focus:ring-0 focus:ring-offset-0 font-medium hover:bg-accent hover:text-accent-foreground", children: _jsx(SelectValue, { placeholder: "Year" }) }), _jsx(SelectContent, { children: years.map((year, idx) => (_jsx(SelectItem, { value: year.toString(), children: year }, idx))) })] })] }))] }), _jsx("div", { className: "flex", children: _jsx(Calendar, { mode: "range", defaultMonth: monthFrom, month: monthFrom, onMonthChange: setMonthFrom, selected: date, onSelect: handleDateSelect, numberOfMonths: numberOfMonths, showOutsideDays: false, className: className }) })] })] }) }))] })] }));
|
|
331
|
+
});
|
|
332
|
+
CalendarDatePicker.displayName = "CalendarDatePicker";
|
|
333
|
+
//# sourceMappingURL=calendar-date-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-date-picker.js","sourceRoot":"","sources":["../../src/components/calendar-date-picker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { DayPicker, type DayButton } from "react-day-picker";
|
|
3
|
+
import { Button } from "./button";
|
|
4
|
+
declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React.ComponentProps<typeof DayPicker> & {
|
|
5
|
+
buttonVariant?: React.ComponentProps<typeof Button>["variant"];
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function CalendarDayButton({ className, day, modifiers, ...props }: React.ComponentProps<typeof DayButton>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export { Calendar, CalendarDayButton };
|
|
9
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EACL,SAAS,EAET,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAkB,MAAM,UAAU,CAAC;AAElD,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,UAAU,EACV,eAAsB,EACtB,aAAuB,EACvB,aAAuB,EACvB,UAAU,EACV,UAAU,EACV,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IAC1C,aAAa,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;CAChE,2CAuJA;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,2CA+BxC;AAED,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, } from "lucide-react";
|
|
5
|
+
import { DayPicker, getDefaultClassNames, } from "react-day-picker";
|
|
6
|
+
import { cn } from "../utils/cn";
|
|
7
|
+
import { Button, buttonVariants } from "./button";
|
|
8
|
+
function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", formatters, components, ...props }) {
|
|
9
|
+
const defaultClassNames = getDefaultClassNames();
|
|
10
|
+
return (_jsx(DayPicker, { showOutsideDays: showOutsideDays, className: cn("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw `rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw `rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className), captionLayout: captionLayout, formatters: {
|
|
11
|
+
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
|
|
12
|
+
...formatters,
|
|
13
|
+
}, classNames: {
|
|
14
|
+
root: cn("w-fit", defaultClassNames.root),
|
|
15
|
+
months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
|
|
16
|
+
month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
|
|
17
|
+
nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
|
|
18
|
+
button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
|
|
19
|
+
button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
|
|
20
|
+
month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
|
|
21
|
+
dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
|
|
22
|
+
dropdown_root: cn("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
|
|
23
|
+
dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
|
|
24
|
+
caption_label: cn("select-none font-medium", captionLayout === "label"
|
|
25
|
+
? "text-sm"
|
|
26
|
+
: "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
|
|
27
|
+
table: "w-full border-collapse",
|
|
28
|
+
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
29
|
+
weekday: cn("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
|
|
30
|
+
week: cn("flex w-full mt-2", defaultClassNames.week),
|
|
31
|
+
week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
|
|
32
|
+
week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
|
|
33
|
+
day: cn("relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", props.showWeekNumber
|
|
34
|
+
? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md"
|
|
35
|
+
: "[&:first-child[data-selected=true]_button]:rounded-l-md", defaultClassNames.day),
|
|
36
|
+
range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
|
|
37
|
+
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
38
|
+
range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
|
|
39
|
+
today: cn("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
40
|
+
outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
41
|
+
disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
42
|
+
hidden: cn("invisible", defaultClassNames.hidden),
|
|
43
|
+
...classNames,
|
|
44
|
+
}, components: {
|
|
45
|
+
Root: ({ className, rootRef, ...props }) => {
|
|
46
|
+
return (_jsx("div", { "data-slot": "calendar", ref: rootRef, className: cn(className), ...props }));
|
|
47
|
+
},
|
|
48
|
+
Chevron: ({ className, orientation, ...props }) => {
|
|
49
|
+
if (orientation === "left") {
|
|
50
|
+
return (_jsx(ChevronLeftIcon, { className: cn("size-4", className), ...props }));
|
|
51
|
+
}
|
|
52
|
+
if (orientation === "right") {
|
|
53
|
+
return (_jsx(ChevronRightIcon, { className: cn("size-4", className), ...props }));
|
|
54
|
+
}
|
|
55
|
+
return (_jsx(ChevronDownIcon, { className: cn("size-4", className), ...props }));
|
|
56
|
+
},
|
|
57
|
+
DayButton: CalendarDayButton,
|
|
58
|
+
WeekNumber: ({ children, ...props }) => {
|
|
59
|
+
return (_jsx("td", { ...props, children: _jsx("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children: children }) }));
|
|
60
|
+
},
|
|
61
|
+
...components,
|
|
62
|
+
}, ...props }));
|
|
63
|
+
}
|
|
64
|
+
function CalendarDayButton({ className, day, modifiers, ...props }) {
|
|
65
|
+
const defaultClassNames = getDefaultClassNames();
|
|
66
|
+
const ref = React.useRef(null);
|
|
67
|
+
React.useEffect(() => {
|
|
68
|
+
if (modifiers.focused)
|
|
69
|
+
ref.current?.focus();
|
|
70
|
+
}, [modifiers.focused]);
|
|
71
|
+
return (_jsx(Button, { ref: ref, variant: "ghost", size: "icon", "data-day": day.date.toLocaleDateString(), "data-selected-single": modifiers.selected &&
|
|
72
|
+
!modifiers.range_start &&
|
|
73
|
+
!modifiers.range_end &&
|
|
74
|
+
!modifiers.range_middle, "data-range-start": modifiers.range_start, "data-range-end": modifiers.range_end, "data-range-middle": modifiers.range_middle, className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day_button, className), ...props }));
|
|
75
|
+
}
|
|
76
|
+
export { Calendar, CalendarDayButton };
|
|
77
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/components/calendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
3
|
+
declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
4
|
+
export { Checkbox };
|
|
5
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/components/checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAA;AAK7D,QAAA,MAAM,QAAQ,iKAoBZ,CAAA;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|