@resq-sw/ui 0.2.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/LICENSE.md +20 -0
- package/README.md +61 -0
- package/lib/components/accordion/accordion.d.ts +27 -0
- package/lib/components/accordion/accordion.d.ts.map +1 -0
- package/lib/components/accordion/accordion.js +71 -0
- package/lib/components/accordion/accordion.js.map +1 -0
- package/lib/components/accordion/index.d.ts +2 -0
- package/lib/components/accordion/index.js +2 -0
- package/lib/components/alert/alert.d.ts +30 -0
- package/lib/components/alert/alert.d.ts.map +1 -0
- package/lib/components/alert/alert.js +59 -0
- package/lib/components/alert/alert.js.map +1 -0
- package/lib/components/alert/index.d.ts +2 -0
- package/lib/components/alert/index.js +2 -0
- package/lib/components/alert-dialog/alert-dialog.d.ts +61 -0
- package/lib/components/alert-dialog/alert-dialog.d.ts.map +1 -0
- package/lib/components/alert-dialog/alert-dialog.js +102 -0
- package/lib/components/alert-dialog/alert-dialog.js.map +1 -0
- package/lib/components/alert-dialog/index.d.ts +2 -0
- package/lib/components/alert-dialog/index.js +2 -0
- package/lib/components/aspect-ratio/aspect-ratio.d.ts +11 -0
- package/lib/components/aspect-ratio/aspect-ratio.d.ts.map +1 -0
- package/lib/components/aspect-ratio/aspect-ratio.js +29 -0
- package/lib/components/aspect-ratio/aspect-ratio.js.map +1 -0
- package/lib/components/aspect-ratio/index.d.ts +2 -0
- package/lib/components/aspect-ratio/index.js +2 -0
- package/lib/components/avatar/avatar.d.ts +36 -0
- package/lib/components/avatar/avatar.d.ts.map +1 -0
- package/lib/components/avatar/avatar.js +67 -0
- package/lib/components/avatar/avatar.js.map +1 -0
- package/lib/components/avatar/index.d.ts +2 -0
- package/lib/components/avatar/index.js +2 -0
- package/lib/components/badge/badge.d.ts +21 -0
- package/lib/components/badge/badge.d.ts.map +1 -0
- package/lib/components/badge/badge.js +43 -0
- package/lib/components/badge/badge.js.map +1 -0
- package/lib/components/badge/index.d.ts +2 -0
- package/lib/components/badge/index.js +2 -0
- package/lib/components/breadcrumb/breadcrumb.d.ts +40 -0
- package/lib/components/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/lib/components/breadcrumb/breadcrumb.js +86 -0
- package/lib/components/breadcrumb/breadcrumb.js.map +1 -0
- package/lib/components/breadcrumb/index.d.ts +2 -0
- package/lib/components/breadcrumb/index.js +2 -0
- package/lib/components/button/button.d.ts +23 -0
- package/lib/components/button/button.d.ts.map +1 -0
- package/lib/components/button/button.js +63 -0
- package/lib/components/button/button.js.map +1 -0
- package/lib/components/button/index.d.ts +2 -0
- package/lib/components/button/index.js +2 -0
- package/lib/components/button-group/button-group.d.ts +30 -0
- package/lib/components/button-group/button-group.d.ts.map +1 -0
- package/lib/components/button-group/button-group.js +55 -0
- package/lib/components/button-group/button-group.js.map +1 -0
- package/lib/components/button-group/index.d.ts +2 -0
- package/lib/components/button-group/index.js +2 -0
- package/lib/components/calendar/calendar.d.ts +32 -0
- package/lib/components/calendar/calendar.d.ts.map +1 -0
- package/lib/components/calendar/calendar.js +126 -0
- package/lib/components/calendar/calendar.js.map +1 -0
- package/lib/components/calendar/index.d.ts +2 -0
- package/lib/components/calendar/index.js +2 -0
- package/lib/components/card/card.d.ts +39 -0
- package/lib/components/card/card.d.ts.map +1 -0
- package/lib/components/card/card.js +57 -0
- package/lib/components/card/card.js.map +1 -0
- package/lib/components/card/index.d.ts +2 -0
- package/lib/components/card/index.js +2 -0
- package/lib/components/carousel/carousel.d.ts +58 -0
- package/lib/components/carousel/carousel.d.ts.map +1 -0
- package/lib/components/carousel/carousel.js +150 -0
- package/lib/components/carousel/carousel.js.map +1 -0
- package/lib/components/carousel/index.d.ts +2 -0
- package/lib/components/carousel/index.js +2 -0
- package/lib/components/chart/chart.d.ts +70 -0
- package/lib/components/chart/chart.d.ts.map +1 -0
- package/lib/components/chart/chart.js +164 -0
- package/lib/components/chart/chart.js.map +1 -0
- package/lib/components/chart/index.d.ts +2 -0
- package/lib/components/chart/index.js +2 -0
- package/lib/components/checkbox/checkbox.d.ts +13 -0
- package/lib/components/checkbox/checkbox.d.ts.map +1 -0
- package/lib/components/checkbox/checkbox.js +37 -0
- package/lib/components/checkbox/checkbox.js.map +1 -0
- package/lib/components/checkbox/index.d.ts +2 -0
- package/lib/components/checkbox/index.js +2 -0
- package/lib/components/collapsible/collapsible.d.ts +17 -0
- package/lib/components/collapsible/collapsible.d.ts.map +1 -0
- package/lib/components/collapsible/collapsible.js +41 -0
- package/lib/components/collapsible/collapsible.js.map +1 -0
- package/lib/components/collapsible/index.d.ts +2 -0
- package/lib/components/collapsible/index.js +2 -0
- package/lib/components/combobox/combobox.d.ts +83 -0
- package/lib/components/combobox/combobox.d.ts.map +1 -0
- package/lib/components/combobox/combobox.js +180 -0
- package/lib/components/combobox/combobox.js.map +1 -0
- package/lib/components/combobox/index.d.ts +2 -0
- package/lib/components/combobox/index.js +2 -0
- package/lib/components/command/command.d.ts +56 -0
- package/lib/components/command/command.d.ts.map +1 -0
- package/lib/components/command/command.js +104 -0
- package/lib/components/command/command.js.map +1 -0
- package/lib/components/command/index.d.ts +2 -0
- package/lib/components/command/index.js +2 -0
- package/lib/components/context-menu/context-menu.d.ts +81 -0
- package/lib/components/context-menu/context-menu.d.ts.map +1 -0
- package/lib/components/context-menu/context-menu.js +139 -0
- package/lib/components/context-menu/context-menu.js.map +1 -0
- package/lib/components/context-menu/index.d.ts +2 -0
- package/lib/components/context-menu/index.js +2 -0
- package/lib/components/dialog/dialog.d.ts +52 -0
- package/lib/components/dialog/dialog.d.ts.map +1 -0
- package/lib/components/dialog/dialog.js +97 -0
- package/lib/components/dialog/dialog.js.map +1 -0
- package/lib/components/dialog/index.d.ts +2 -0
- package/lib/components/dialog/index.js +2 -0
- package/lib/components/direction/direction.d.ts +17 -0
- package/lib/components/direction/direction.d.ts.map +1 -0
- package/lib/components/direction/direction.js +30 -0
- package/lib/components/direction/direction.js.map +1 -0
- package/lib/components/direction/index.d.ts +2 -0
- package/lib/components/direction/index.js +2 -0
- package/lib/components/drawer/drawer.d.ts +46 -0
- package/lib/components/drawer/drawer.d.ts.map +1 -0
- package/lib/components/drawer/drawer.js +94 -0
- package/lib/components/drawer/drawer.js.map +1 -0
- package/lib/components/drawer/index.d.ts +2 -0
- package/lib/components/drawer/index.js +2 -0
- package/lib/components/dropdown-menu/dropdown-menu.d.ts +80 -0
- package/lib/components/dropdown-menu/dropdown-menu.d.ts.map +1 -0
- package/lib/components/dropdown-menu/dropdown-menu.js +142 -0
- package/lib/components/dropdown-menu/dropdown-menu.js.map +1 -0
- package/lib/components/dropdown-menu/index.d.ts +2 -0
- package/lib/components/dropdown-menu/index.js +2 -0
- package/lib/components/empty/empty.d.ts +37 -0
- package/lib/components/empty/empty.d.ts.map +1 -0
- package/lib/components/empty/empty.js +76 -0
- package/lib/components/empty/empty.js.map +1 -0
- package/lib/components/empty/index.d.ts +2 -0
- package/lib/components/empty/index.js +2 -0
- package/lib/components/field/field.d.ts +66 -0
- package/lib/components/field/field.d.ts.map +1 -0
- package/lib/components/field/field.js +127 -0
- package/lib/components/field/field.js.map +1 -0
- package/lib/components/field/index.d.ts +2 -0
- package/lib/components/field/index.js +2 -0
- package/lib/components/hover-card/hover-card.d.ts +21 -0
- package/lib/components/hover-card/hover-card.d.ts.map +1 -0
- package/lib/components/hover-card/hover-card.js +48 -0
- package/lib/components/hover-card/hover-card.js.map +1 -0
- package/lib/components/hover-card/index.d.ts +2 -0
- package/lib/components/hover-card/index.js +2 -0
- package/lib/components/input/index.d.ts +2 -0
- package/lib/components/input/index.js +2 -0
- package/lib/components/input/input.d.ts +13 -0
- package/lib/components/input/input.d.ts.map +1 -0
- package/lib/components/input/input.js +15 -0
- package/lib/components/input/input.js.map +1 -0
- package/lib/components/input-group/index.d.ts +2 -0
- package/lib/components/input-group/index.js +2 -0
- package/lib/components/input-group/input-group.d.ts +45 -0
- package/lib/components/input-group/input-group.d.ts.map +1 -0
- package/lib/components/input-group/input-group.js +95 -0
- package/lib/components/input-group/input-group.js.map +1 -0
- package/lib/components/input-otp/index.d.ts +2 -0
- package/lib/components/input-otp/index.js +2 -0
- package/lib/components/input-otp/input-otp.d.ts +30 -0
- package/lib/components/input-otp/input-otp.d.ts.map +1 -0
- package/lib/components/input-otp/input-otp.js +64 -0
- package/lib/components/input-otp/input-otp.js.map +1 -0
- package/lib/components/item/index.d.ts +2 -0
- package/lib/components/item/index.js +2 -0
- package/lib/components/item/item.d.ts +64 -0
- package/lib/components/item/item.d.ts.map +1 -0
- package/lib/components/item/item.js +133 -0
- package/lib/components/item/item.js.map +1 -0
- package/lib/components/kbd/index.d.ts +2 -0
- package/lib/components/kbd/index.js +2 -0
- package/lib/components/kbd/kbd.d.ts +30 -0
- package/lib/components/kbd/kbd.d.ts.map +1 -0
- package/lib/components/kbd/kbd.js +36 -0
- package/lib/components/kbd/kbd.js.map +1 -0
- package/lib/components/label/index.d.ts +2 -0
- package/lib/components/label/index.js +2 -0
- package/lib/components/label/label.d.ts +13 -0
- package/lib/components/label/label.d.ts.map +1 -0
- package/lib/components/label/label.js +31 -0
- package/lib/components/label/label.js.map +1 -0
- package/lib/components/menubar/index.d.ts +2 -0
- package/lib/components/menubar/index.js +2 -0
- package/lib/components/menubar/menubar.d.ts +86 -0
- package/lib/components/menubar/menubar.d.ts.map +1 -0
- package/lib/components/menubar/menubar.js +149 -0
- package/lib/components/menubar/menubar.js.map +1 -0
- package/lib/components/native-select/index.d.ts +2 -0
- package/lib/components/native-select/index.js +2 -0
- package/lib/components/native-select/native-select.d.ts +23 -0
- package/lib/components/native-select/native-select.d.ts.map +1 -0
- package/lib/components/native-select/native-select.js +53 -0
- package/lib/components/native-select/native-select.js.map +1 -0
- package/lib/components/navigation-menu/index.d.ts +2 -0
- package/lib/components/navigation-menu/index.js +2 -0
- package/lib/components/navigation-menu/navigation-menu.d.ts +48 -0
- package/lib/components/navigation-menu/navigation-menu.d.ts.map +1 -0
- package/lib/components/navigation-menu/navigation-menu.js +96 -0
- package/lib/components/navigation-menu/navigation-menu.js.map +1 -0
- package/lib/components/pagination/index.d.ts +2 -0
- package/lib/components/pagination/index.js +2 -0
- package/lib/components/pagination/pagination.d.ts +47 -0
- package/lib/components/pagination/pagination.d.ts.map +1 -0
- package/lib/components/pagination/pagination.js +95 -0
- package/lib/components/pagination/pagination.js.map +1 -0
- package/lib/components/popover/index.d.ts +2 -0
- package/lib/components/popover/index.js +2 -0
- package/lib/components/popover/popover.d.ts +36 -0
- package/lib/components/popover/popover.d.ts.map +1 -0
- package/lib/components/popover/popover.js +72 -0
- package/lib/components/popover/popover.js.map +1 -0
- package/lib/components/progress/index.d.ts +2 -0
- package/lib/components/progress/index.js +2 -0
- package/lib/components/progress/progress.d.ts +14 -0
- package/lib/components/progress/progress.d.ts.map +1 -0
- package/lib/components/progress/progress.js +36 -0
- package/lib/components/progress/progress.js.map +1 -0
- package/lib/components/radio-group/index.d.ts +2 -0
- package/lib/components/radio-group/index.js +2 -0
- package/lib/components/radio-group/radio-group.d.ts +17 -0
- package/lib/components/radio-group/radio-group.d.ts.map +1 -0
- package/lib/components/radio-group/radio-group.js +44 -0
- package/lib/components/radio-group/radio-group.js.map +1 -0
- package/lib/components/resizable/index.d.ts +2 -0
- package/lib/components/resizable/index.js +2 -0
- package/lib/components/resizable/resizable.d.ts +23 -0
- package/lib/components/resizable/resizable.d.ts.map +1 -0
- package/lib/components/resizable/resizable.js +45 -0
- package/lib/components/resizable/resizable.js.map +1 -0
- package/lib/components/scroll-area/index.d.ts +2 -0
- package/lib/components/scroll-area/index.js +2 -0
- package/lib/components/scroll-area/scroll-area.d.ts +19 -0
- package/lib/components/scroll-area/scroll-area.d.ts.map +1 -0
- package/lib/components/scroll-area/scroll-area.js +53 -0
- package/lib/components/scroll-area/scroll-area.js.map +1 -0
- package/lib/components/select/index.d.ts +2 -0
- package/lib/components/select/index.js +2 -0
- package/lib/components/select/select.d.ts +55 -0
- package/lib/components/select/select.d.ts.map +1 -0
- package/lib/components/select/select.js +116 -0
- package/lib/components/select/select.js.map +1 -0
- package/lib/components/separator/index.d.ts +2 -0
- package/lib/components/separator/index.js +2 -0
- package/lib/components/separator/separator.d.ts +15 -0
- package/lib/components/separator/separator.d.ts.map +1 -0
- package/lib/components/separator/separator.js +33 -0
- package/lib/components/separator/separator.js.map +1 -0
- package/lib/components/sheet/index.d.ts +2 -0
- package/lib/components/sheet/index.js +2 -0
- package/lib/components/sheet/sheet.d.ts +44 -0
- package/lib/components/sheet/sheet.d.ts.map +1 -0
- package/lib/components/sheet/sheet.js +106 -0
- package/lib/components/sheet/sheet.js.map +1 -0
- package/lib/components/sidebar/index.d.ts +2 -0
- package/lib/components/sidebar/index.js +2 -0
- package/lib/components/sidebar/sidebar.d.ts +169 -0
- package/lib/components/sidebar/sidebar.d.ts.map +1 -0
- package/lib/components/sidebar/sidebar.js +388 -0
- package/lib/components/sidebar/sidebar.js.map +1 -0
- package/lib/components/skeleton/index.d.ts +2 -0
- package/lib/components/skeleton/index.js +2 -0
- package/lib/components/skeleton/skeleton.d.ts +26 -0
- package/lib/components/skeleton/skeleton.d.ts.map +1 -0
- package/lib/components/skeleton/skeleton.js +29 -0
- package/lib/components/skeleton/skeleton.js.map +1 -0
- package/lib/components/slider/index.d.ts +2 -0
- package/lib/components/slider/index.js +2 -0
- package/lib/components/slider/slider.d.ts +17 -0
- package/lib/components/slider/slider.d.ts.map +1 -0
- package/lib/components/slider/slider.js +53 -0
- package/lib/components/slider/slider.js.map +1 -0
- package/lib/components/sonner/index.d.ts +2 -0
- package/lib/components/sonner/index.js +2 -0
- package/lib/components/sonner/sonner.d.ts +11 -0
- package/lib/components/sonner/sonner.d.ts.map +1 -0
- package/lib/components/sonner/sonner.js +47 -0
- package/lib/components/sonner/sonner.js.map +1 -0
- package/lib/components/spinner/index.d.ts +2 -0
- package/lib/components/spinner/index.js +2 -0
- package/lib/components/spinner/spinner.d.ts +26 -0
- package/lib/components/spinner/spinner.d.ts.map +1 -0
- package/lib/components/spinner/spinner.js +31 -0
- package/lib/components/spinner/spinner.js.map +1 -0
- package/lib/components/switch/index.d.ts +2 -0
- package/lib/components/switch/index.js +2 -0
- package/lib/components/switch/switch.d.ts +16 -0
- package/lib/components/switch/switch.d.ts.map +1 -0
- package/lib/components/switch/switch.js +36 -0
- package/lib/components/switch/switch.js.map +1 -0
- package/lib/components/table/index.d.ts +2 -0
- package/lib/components/table/index.js +2 -0
- package/lib/components/table/table.d.ts +40 -0
- package/lib/components/table/table.d.ts.map +1 -0
- package/lib/components/table/table.js +83 -0
- package/lib/components/table/table.js.map +1 -0
- package/lib/components/tabs/index.d.ts +2 -0
- package/lib/components/tabs/index.js +2 -0
- package/lib/components/tabs/tabs.d.ts +32 -0
- package/lib/components/tabs/tabs.d.ts.map +1 -0
- package/lib/components/tabs/tabs.js +62 -0
- package/lib/components/tabs/tabs.js.map +1 -0
- package/lib/components/textarea/index.d.ts +2 -0
- package/lib/components/textarea/index.js +2 -0
- package/lib/components/textarea/textarea.d.ts +12 -0
- package/lib/components/textarea/textarea.d.ts.map +1 -0
- package/lib/components/textarea/textarea.js +14 -0
- package/lib/components/textarea/textarea.js.map +1 -0
- package/lib/components/toggle/index.d.ts +2 -0
- package/lib/components/toggle/index.js +2 -0
- package/lib/components/toggle/toggle.d.ts +21 -0
- package/lib/components/toggle/toggle.d.ts.map +1 -0
- package/lib/components/toggle/toggle.js +53 -0
- package/lib/components/toggle/toggle.js.map +1 -0
- package/lib/components/toggle-group/index.d.ts +2 -0
- package/lib/components/toggle-group/index.js +2 -0
- package/lib/components/toggle-group/toggle-group.d.ts +30 -0
- package/lib/components/toggle-group/toggle-group.d.ts.map +1 -0
- package/lib/components/toggle-group/toggle-group.js +68 -0
- package/lib/components/toggle-group/toggle-group.js.map +1 -0
- package/lib/components/tooltip/index.d.ts +2 -0
- package/lib/components/tooltip/index.js +2 -0
- package/lib/components/tooltip/tooltip.d.ts +25 -0
- package/lib/components/tooltip/tooltip.d.ts.map +1 -0
- package/lib/components/tooltip/tooltip.js +52 -0
- package/lib/components/tooltip/tooltip.js.map +1 -0
- package/lib/hooks/use-mobile.d.ts +20 -0
- package/lib/hooks/use-mobile.d.ts.map +1 -0
- package/lib/hooks/use-mobile.js +37 -0
- package/lib/hooks/use-mobile.js.map +1 -0
- package/lib/index.d.ts +58 -0
- package/lib/index.js +113 -0
- package/lib/lib/utils.d.ts +7 -0
- package/lib/lib/utils.d.ts.map +1 -0
- package/lib/lib/utils.js +10 -0
- package/lib/lib/utils.js.map +1 -0
- package/package.json +395 -0
- package/src/styles/globals.css +140 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { Button, buttonVariants } from "../button/button.js";
|
|
4
|
+
import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
8
|
+
//#region src/components/calendar/calendar.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Copyright 2026 ResQ
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
function Calendar({ buttonVariant = "ghost", captionLayout = "label", className, classNames, components, formatters, locale, showOutsideDays = true, ...props }) {
|
|
25
|
+
const defaultClassNames = getDefaultClassNames();
|
|
26
|
+
return /* @__PURE__ */ jsx(DayPicker, {
|
|
27
|
+
captionLayout,
|
|
28
|
+
className: cn("p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] bg-background group/calendar in-data-[slot=card-content]:bg-transparent in-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),
|
|
29
|
+
classNames: {
|
|
30
|
+
button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
|
|
31
|
+
button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
|
|
32
|
+
caption_label: cn("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
|
|
33
|
+
day: cn("relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)", defaultClassNames.day),
|
|
34
|
+
disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
35
|
+
dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
|
|
36
|
+
dropdown_root: cn("relative rounded-(--cell-radius)", defaultClassNames.dropdown_root),
|
|
37
|
+
dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
|
|
38
|
+
hidden: cn("invisible", defaultClassNames.hidden),
|
|
39
|
+
month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
|
|
40
|
+
month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
|
|
41
|
+
months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
|
|
42
|
+
nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
|
|
43
|
+
outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
44
|
+
range_end: cn("rounded-r-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:left-0 -z-0 isolate", defaultClassNames.range_end),
|
|
45
|
+
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
46
|
+
range_start: cn("rounded-l-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 -z-0 isolate", defaultClassNames.range_start),
|
|
47
|
+
root: cn("w-fit", defaultClassNames.root),
|
|
48
|
+
table: "w-full border-collapse",
|
|
49
|
+
today: cn("bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
50
|
+
week: cn("flex w-full mt-2", defaultClassNames.week),
|
|
51
|
+
week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
|
|
52
|
+
week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
|
|
53
|
+
weekday: cn("text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
|
|
54
|
+
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
55
|
+
...classNames
|
|
56
|
+
},
|
|
57
|
+
components: {
|
|
58
|
+
Chevron: ({ className, orientation, ...props }) => {
|
|
59
|
+
if (orientation === "left") return /* @__PURE__ */ jsx(ChevronLeftIcon, {
|
|
60
|
+
className: cn("size-4", className),
|
|
61
|
+
...props
|
|
62
|
+
});
|
|
63
|
+
if (orientation === "right") return /* @__PURE__ */ jsx(ChevronRightIcon, {
|
|
64
|
+
className: cn("size-4", className),
|
|
65
|
+
...props
|
|
66
|
+
});
|
|
67
|
+
return /* @__PURE__ */ jsx(ChevronDownIcon, {
|
|
68
|
+
className: cn("size-4", className),
|
|
69
|
+
...props
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
DayButton: ({ ...props }) => /* @__PURE__ */ jsx(CalendarDayButton, {
|
|
73
|
+
locale,
|
|
74
|
+
...props
|
|
75
|
+
}),
|
|
76
|
+
Root: ({ className, rootRef, ...props }) => {
|
|
77
|
+
return /* @__PURE__ */ jsx("div", {
|
|
78
|
+
className: cn(className),
|
|
79
|
+
"data-slot": "calendar",
|
|
80
|
+
ref: rootRef,
|
|
81
|
+
...props
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
WeekNumber: ({ children, ...props }) => {
|
|
85
|
+
return /* @__PURE__ */ jsx("td", {
|
|
86
|
+
...props,
|
|
87
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
88
|
+
className: "flex size-(--cell-size) items-center justify-center text-center",
|
|
89
|
+
children
|
|
90
|
+
})
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
...components
|
|
94
|
+
},
|
|
95
|
+
formatters: {
|
|
96
|
+
formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
|
|
97
|
+
...formatters
|
|
98
|
+
},
|
|
99
|
+
locale,
|
|
100
|
+
showOutsideDays,
|
|
101
|
+
...props
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function CalendarDayButton({ className, day, locale, modifiers, ...props }) {
|
|
105
|
+
const defaultClassNames = getDefaultClassNames();
|
|
106
|
+
const ref = React.useRef(null);
|
|
107
|
+
React.useEffect(() => {
|
|
108
|
+
if (modifiers.focused) ref.current?.focus();
|
|
109
|
+
}, [modifiers.focused]);
|
|
110
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
111
|
+
className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-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-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 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-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
|
|
112
|
+
"data-day": day.date.toLocaleDateString(locale?.code),
|
|
113
|
+
"data-range-end": modifiers.range_end,
|
|
114
|
+
"data-range-middle": modifiers.range_middle,
|
|
115
|
+
"data-range-start": modifiers.range_start,
|
|
116
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
117
|
+
ref,
|
|
118
|
+
size: "icon",
|
|
119
|
+
variant: "ghost",
|
|
120
|
+
...props
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
export { Calendar, CalendarDayButton };
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","names":[],"sources":["../../../src/components/calendar/calendar.tsx"],"sourcesContent":["/**\n * Copyright 2026 ResQ\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\"use client\";\n\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { type DayButton, DayPicker, getDefaultClassNames, type Locale } from \"react-day-picker\";\n\nimport { cn } from \"../../lib/utils.js\";\nimport { Button, buttonVariants } from \"../button/button.js\";\n\nfunction Calendar({\n\tbuttonVariant = \"ghost\",\n\tcaptionLayout = \"label\",\n\tclassName,\n\tclassNames,\n\tcomponents,\n\tformatters,\n\tlocale,\n\tshowOutsideDays = true,\n\t...props\n}: React.ComponentProps<typeof DayPicker> & {\n\tbuttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n\tconst defaultClassNames = getDefaultClassNames();\n\n\treturn (\n\t\t<DayPicker\n\t\t\tcaptionLayout={captionLayout}\n\t\t\tclassName={cn(\n\t\t\t\t\"p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(7)] bg-background group/calendar in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n\t\t\t\tString.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n\t\t\t\tString.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tclassNames={{\n\t\t\t\tbutton_next: cn(\n\t\t\t\t\tbuttonVariants({ variant: buttonVariant }),\n\t\t\t\t\t\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n\t\t\t\t\tdefaultClassNames.button_next,\n\t\t\t\t),\n\t\t\t\tbutton_previous: cn(\n\t\t\t\t\tbuttonVariants({ variant: buttonVariant }),\n\t\t\t\t\t\"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n\t\t\t\t\tdefaultClassNames.button_previous,\n\t\t\t\t),\n\t\t\t\tcaption_label: cn(\n\t\t\t\t\t\"select-none font-medium\",\n\t\t\t\t\tcaptionLayout === \"label\"\n\t\t\t\t\t\t? \"text-sm\"\n\t\t\t\t\t\t: \"rounded-(--cell-radius) flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n\t\t\t\t\tdefaultClassNames.caption_label,\n\t\t\t\t),\n\t\t\t\tday: cn(\n\t\t\t\t\t\"relative w-full rounded-(--cell-radius) h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius) group/day aspect-square select-none\",\n\t\t\t\t\tprops.showWeekNumber\n\t\t\t\t\t\t? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)\"\n\t\t\t\t\t\t: \"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)\",\n\t\t\t\t\tdefaultClassNames.day,\n\t\t\t\t),\n\t\t\t\tdisabled: cn(\"text-muted-foreground opacity-50\", defaultClassNames.disabled),\n\t\t\t\tdropdown: cn(\"absolute bg-popover inset-0 opacity-0\", defaultClassNames.dropdown),\n\t\t\t\tdropdown_root: cn(\"relative rounded-(--cell-radius)\", defaultClassNames.dropdown_root),\n\t\t\t\tdropdowns: cn(\n\t\t\t\t\t\"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n\t\t\t\t\tdefaultClassNames.dropdowns,\n\t\t\t\t),\n\t\t\t\thidden: cn(\"invisible\", defaultClassNames.hidden),\n\t\t\t\tmonth: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n\t\t\t\tmonth_caption: cn(\n\t\t\t\t\t\"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n\t\t\t\t\tdefaultClassNames.month_caption,\n\t\t\t\t),\n\t\t\t\tmonths: cn(\"flex gap-4 flex-col md:flex-row relative\", defaultClassNames.months),\n\t\t\t\tnav: cn(\n\t\t\t\t\t\"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n\t\t\t\t\tdefaultClassNames.nav,\n\t\t\t\t),\n\t\t\t\toutside: cn(\n\t\t\t\t\t\"text-muted-foreground aria-selected:text-muted-foreground\",\n\t\t\t\t\tdefaultClassNames.outside,\n\t\t\t\t),\n\t\t\t\trange_end: cn(\n\t\t\t\t\t\"rounded-r-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:left-0 -z-0 isolate\",\n\t\t\t\t\tdefaultClassNames.range_end,\n\t\t\t\t),\n\t\t\t\trange_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n\t\t\t\trange_start: cn(\n\t\t\t\t\t\"rounded-l-(--cell-radius) bg-muted relative after:bg-muted after:absolute after:inset-y-0 after:w-4 after:right-0 -z-0 isolate\",\n\t\t\t\t\tdefaultClassNames.range_start,\n\t\t\t\t),\n\t\t\t\troot: cn(\"w-fit\", defaultClassNames.root),\n\t\t\t\ttable: \"w-full border-collapse\",\n\t\t\t\ttoday: cn(\n\t\t\t\t\t\"bg-muted text-foreground rounded-(--cell-radius) data-[selected=true]:rounded-none\",\n\t\t\t\t\tdefaultClassNames.today,\n\t\t\t\t),\n\t\t\t\tweek: cn(\"flex w-full mt-2\", defaultClassNames.week),\n\t\t\t\tweek_number: cn(\n\t\t\t\t\t\"text-[0.8rem] select-none text-muted-foreground\",\n\t\t\t\t\tdefaultClassNames.week_number,\n\t\t\t\t),\n\t\t\t\tweek_number_header: cn(\"select-none w-(--cell-size)\", defaultClassNames.week_number_header),\n\t\t\t\tweekday: cn(\n\t\t\t\t\t\"text-muted-foreground rounded-(--cell-radius) flex-1 font-normal text-[0.8rem] select-none\",\n\t\t\t\t\tdefaultClassNames.weekday,\n\t\t\t\t),\n\t\t\t\tweekdays: cn(\"flex\", defaultClassNames.weekdays),\n\t\t\t\t...classNames,\n\t\t\t}}\n\t\t\tcomponents={{\n\t\t\t\tChevron: ({ className, orientation, ...props }) => {\n\t\t\t\t\tif (orientation === \"left\") {\n\t\t\t\t\t\treturn <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (orientation === \"right\") {\n\t\t\t\t\t\treturn <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />;\n\t\t\t\t},\n\t\t\t\tDayButton: ({ ...props }) => <CalendarDayButton locale={locale} {...props} />,\n\t\t\t\tRoot: ({ className, rootRef, ...props }) => {\n\t\t\t\t\treturn <div className={cn(className)} data-slot=\"calendar\" ref={rootRef} {...props} />;\n\t\t\t\t},\n\t\t\t\tWeekNumber: ({ children, ...props }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<td {...props}>\n\t\t\t\t\t\t\t<div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t...components,\n\t\t\t}}\n\t\t\tformatters={{\n\t\t\t\tformatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: \"short\" }),\n\t\t\t\t...formatters,\n\t\t\t}}\n\t\t\tlocale={locale}\n\t\t\tshowOutsideDays={showOutsideDays}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CalendarDayButton({\n\tclassName,\n\tday,\n\tlocale,\n\tmodifiers,\n\t...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n\tconst defaultClassNames = getDefaultClassNames();\n\n\tconst ref = React.useRef<HTMLButtonElement>(null);\n\tReact.useEffect(() => {\n\t\tif (modifiers.focused) {\n\t\t\tref.current?.focus();\n\t\t}\n\t}, [modifiers.focused]);\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-muted data-[range-middle=true]:text-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-foreground relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 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-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) [&>span]:text-xs [&>span]:opacity-70\",\n\t\t\t\tdefaultClassNames.day,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-day={day.date.toLocaleDateString(locale?.code)}\n\t\t\tdata-range-end={modifiers.range_end}\n\t\t\tdata-range-middle={modifiers.range_middle}\n\t\t\tdata-range-start={modifiers.range_start}\n\t\t\tdata-selected-single={\n\t\t\t\tmodifiers.selected &&\n\t\t\t\t!modifiers.range_start &&\n\t\t\t\t!modifiers.range_end &&\n\t\t\t\t!modifiers.range_middle\n\t\t\t}\n\t\t\tref={ref}\n\t\t\tsize=\"icon\"\n\t\t\tvariant=\"ghost\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Calendar, CalendarDayButton };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as react_jsx_runtime41 from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/card/card.d.ts
|
|
5
|
+
|
|
6
|
+
declare function Card({
|
|
7
|
+
className,
|
|
8
|
+
size,
|
|
9
|
+
...props
|
|
10
|
+
}: React.ComponentProps<"div"> & {
|
|
11
|
+
size?: "default" | "sm";
|
|
12
|
+
}): react_jsx_runtime41.JSX.Element;
|
|
13
|
+
declare function CardAction({
|
|
14
|
+
className,
|
|
15
|
+
...props
|
|
16
|
+
}: React.ComponentProps<"div">): react_jsx_runtime41.JSX.Element;
|
|
17
|
+
declare function CardContent({
|
|
18
|
+
className,
|
|
19
|
+
...props
|
|
20
|
+
}: React.ComponentProps<"div">): react_jsx_runtime41.JSX.Element;
|
|
21
|
+
declare function CardDescription({
|
|
22
|
+
className,
|
|
23
|
+
...props
|
|
24
|
+
}: React.ComponentProps<"div">): react_jsx_runtime41.JSX.Element;
|
|
25
|
+
declare function CardFooter({
|
|
26
|
+
className,
|
|
27
|
+
...props
|
|
28
|
+
}: React.ComponentProps<"div">): react_jsx_runtime41.JSX.Element;
|
|
29
|
+
declare function CardHeader({
|
|
30
|
+
className,
|
|
31
|
+
...props
|
|
32
|
+
}: React.ComponentProps<"div">): react_jsx_runtime41.JSX.Element;
|
|
33
|
+
declare function CardTitle({
|
|
34
|
+
className,
|
|
35
|
+
...props
|
|
36
|
+
}: React.ComponentProps<"div">): react_jsx_runtime41.JSX.Element;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
39
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","names":[],"sources":["../../../src/components/card/card.tsx"],"sourcesContent":[],"mappings":";;;;;iBAoBS,IAAA,CA4Bc;EAAA,SAAA;EAAA,IAAA;EAAA,GAAA;CAAA,EAxBpB,KAAA,CAAM,cAwBc,CAAA,KAAA,CAAA,GAAA;EAAuB,IAAM,CAAA,EAAA,SAAA,GAAA,IAAA;CAAqB,CAAA,EAxBb,mBAAA,CAAA,GAAA,CAAA,OAwBa;iBAVhE,UAAA,CAUgE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAV5B,KAAA,CAAM,cAUsB,CAAA,KAAA,CAAA,CAAA,EAVD,mBAAA,CAAA,GAAA,CAAA,OAUC;AAAA,iBAAhE,WAAA,CAUe;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAVsB,KAAA,CAAM,cAU5B,CAAA,KAAA,CAAA,CAAA,EAViD,mBAAA,CAAA,GAAA,CAAA,OAUjD;iBAAf,eAAA,CAAkB;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAAuB,KAAA,CAAM,cAA7B,CAAA,KAAA,CAAA,CAAA,EAAkD,mBAAA,CAAA,GAAA,CAAA,OAAlD;iBAUlB,UAAA,CAV+C;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAUX,KAAA,CAAM,cAVK,CAAA,KAAA,CAAA,CAAA,EAUgB,mBAAA,CAAA,GAAA,CAAA,OAVhB;iBAuB/C,UAAA,CAvBoE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuBhC,KAAA,CAAM,cAvB0B,CAAA,KAAA,CAAA,CAAA,EAuBL,mBAAA,CAAA,GAAA,CAAA,OAvBK;iBAoCpE,SAAA,CApCoE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAoCjC,KAAA,CAAM,cApC2B,CAAA,KAAA,CAAA,CAAA,EAoCN,mBAAA,CAAA,GAAA,CAAA,OApCM"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/card/card.tsx
|
|
4
|
+
function Card({ className, size = "default", ...props }) {
|
|
5
|
+
return /* @__PURE__ */ jsx("div", {
|
|
6
|
+
className: cn("ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", className),
|
|
7
|
+
"data-size": size,
|
|
8
|
+
"data-slot": "card",
|
|
9
|
+
...props
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function CardAction({ className, ...props }) {
|
|
13
|
+
return /* @__PURE__ */ jsx("div", {
|
|
14
|
+
className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className),
|
|
15
|
+
"data-slot": "card-action",
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function CardContent({ className, ...props }) {
|
|
20
|
+
return /* @__PURE__ */ jsx("div", {
|
|
21
|
+
className: cn("px-4 group-data-[size=sm]/card:px-3", className),
|
|
22
|
+
"data-slot": "card-content",
|
|
23
|
+
...props
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function CardDescription({ className, ...props }) {
|
|
27
|
+
return /* @__PURE__ */ jsx("div", {
|
|
28
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
29
|
+
"data-slot": "card-description",
|
|
30
|
+
...props
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function CardFooter({ className, ...props }) {
|
|
34
|
+
return /* @__PURE__ */ jsx("div", {
|
|
35
|
+
className: cn("bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center", className),
|
|
36
|
+
"data-slot": "card-footer",
|
|
37
|
+
...props
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function CardHeader({ className, ...props }) {
|
|
41
|
+
return /* @__PURE__ */ jsx("div", {
|
|
42
|
+
className: cn("gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]", className),
|
|
43
|
+
"data-slot": "card-header",
|
|
44
|
+
...props
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function CardTitle({ className, ...props }) {
|
|
48
|
+
return /* @__PURE__ */ jsx("div", {
|
|
49
|
+
className: cn("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm", className),
|
|
50
|
+
"data-slot": "card-title",
|
|
51
|
+
...props
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","names":[],"sources":["../../../src/components/card/card.tsx"],"sourcesContent":["/**\n * Copyright 2026 ResQ\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils.js\";\n\nfunction Card({\n\tclassName,\n\tsize = \"default\",\n\t...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-size={size}\n\t\t\tdata-slot=\"card\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", className)}\n\t\t\tdata-slot=\"card-action\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n\t\t\tdata-slot=\"card-content\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"text-muted-foreground text-sm\", className)}\n\t\t\tdata-slot=\"card-description\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-slot=\"card-footer\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-slot=\"card-header\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-slot=\"card-title\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };\n"],"mappings":";;;AAoBA,SAAS,KAAK,EACb,WACA,OAAO,WACP,GAAG,SAC0D;AAC7D,QACC,oBAAC,OAAD;EACC,WAAW,GACV,wVACA,UACA;EACD,aAAW;EACX,aAAU;EACV,GAAI;EACH,CAAA;;AAIJ,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACzE,QACC,oBAAC,OAAD;EACC,WAAW,GAAG,kEAAkE,UAAU;EAC1F,aAAU;EACV,GAAI;EACH,CAAA;;AAIJ,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AAC1E,QACC,oBAAC,OAAD;EACC,WAAW,GAAG,uCAAuC,UAAU;EAC/D,aAAU;EACV,GAAI;EACH,CAAA;;AAIJ,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;AAC9E,QACC,oBAAC,OAAD;EACC,WAAW,GAAG,iCAAiC,UAAU;EACzD,aAAU;EACV,GAAI;EACH,CAAA;;AAIJ,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACzE,QACC,oBAAC,OAAD;EACC,WAAW,GACV,yFACA,UACA;EACD,aAAU;EACV,GAAI;EACH,CAAA;;AAIJ,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACzE,QACC,oBAAC,OAAD;EACC,WAAW,GACV,sSACA,UACA;EACD,aAAU;EACV,GAAI;EACH,CAAA;;AAIJ,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;AACxE,QACC,oBAAC,OAAD;EACC,WAAW,GACV,wEACA,UACA;EACD,aAAU;EACV,GAAI;EACH,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Button } from "../button/button.js";
|
|
2
|
+
import * as react_jsx_runtime48 from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import useEmblaCarousel, { UseEmblaCarouselType } from "embla-carousel-react";
|
|
5
|
+
|
|
6
|
+
//#region src/components/carousel/carousel.d.ts
|
|
7
|
+
|
|
8
|
+
type CarouselApi = UseEmblaCarouselType[1];
|
|
9
|
+
type CarouselContextProps = CarouselProps & {
|
|
10
|
+
api: ReturnType<typeof useEmblaCarousel>[1];
|
|
11
|
+
canScrollNext: boolean;
|
|
12
|
+
canScrollPrev: boolean;
|
|
13
|
+
carouselRef: ReturnType<typeof useEmblaCarousel>[0];
|
|
14
|
+
scrollNext: () => void;
|
|
15
|
+
scrollPrev: () => void;
|
|
16
|
+
};
|
|
17
|
+
type CarouselOptions = UseCarouselParameters[0];
|
|
18
|
+
type CarouselPlugin = UseCarouselParameters[1];
|
|
19
|
+
interface CarouselProps {
|
|
20
|
+
opts?: CarouselOptions;
|
|
21
|
+
orientation?: "horizontal" | "vertical";
|
|
22
|
+
plugins?: CarouselPlugin;
|
|
23
|
+
setApi?: (api: CarouselApi) => void;
|
|
24
|
+
}
|
|
25
|
+
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
26
|
+
declare function Carousel({
|
|
27
|
+
children,
|
|
28
|
+
className,
|
|
29
|
+
opts,
|
|
30
|
+
orientation,
|
|
31
|
+
plugins,
|
|
32
|
+
setApi,
|
|
33
|
+
...props
|
|
34
|
+
}: CarouselProps & React.ComponentProps<"div">): react_jsx_runtime48.JSX.Element;
|
|
35
|
+
declare function CarouselContent({
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}: React.ComponentProps<"div">): react_jsx_runtime48.JSX.Element;
|
|
39
|
+
declare function CarouselItem({
|
|
40
|
+
className,
|
|
41
|
+
...props
|
|
42
|
+
}: React.ComponentProps<"div">): react_jsx_runtime48.JSX.Element;
|
|
43
|
+
declare function CarouselNext({
|
|
44
|
+
className,
|
|
45
|
+
size,
|
|
46
|
+
variant,
|
|
47
|
+
...props
|
|
48
|
+
}: React.ComponentProps<typeof Button>): react_jsx_runtime48.JSX.Element;
|
|
49
|
+
declare function CarouselPrevious({
|
|
50
|
+
className,
|
|
51
|
+
size,
|
|
52
|
+
variant,
|
|
53
|
+
...props
|
|
54
|
+
}: React.ComponentProps<typeof Button>): react_jsx_runtime48.JSX.Element;
|
|
55
|
+
declare function useCarousel(): CarouselContextProps;
|
|
56
|
+
//#endregion
|
|
57
|
+
export { Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel };
|
|
58
|
+
//# sourceMappingURL=carousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","names":[],"sources":["../../../src/components/carousel/carousel.tsx"],"sourcesContent":[],"mappings":";;;;;;;KAyBK,WAAA,GAAc,oBAeR,CAAA,CAAA,CAAA;KAdN,oBAAA,GAAuB,aAeZ,GAAA;EAAW,GAAA,EAdrB,UAcqB,CAAA,OAdH,gBAcG,CAAA,CAAA,CAAA,CAAA;EAGtB,aAAA,EAAA,OAAA;EAII,aAAQ,EAAA,OAAA;EAChB,WAAA,EAnBa,UAmBb,CAAA,OAnB+B,gBAmB/B,CAAA,CAAA,CAAA,CAAA;EACA,UAAA,EAAA,GAAA,GAAA,IAAA;EACA,UAAA,EAAA,GAAA,GAAA,IAAA;CACA;KAlBI,eAAA,GAAkB,qBAmBtB,CAAA,CAAA,CAAA;KAlBI,cAAA,GAAiB,qBAmBrB,CAAA,CAAA,CAAA;UAjBS,aAAA,CAmBP;EAAgB,IAAM,CAAA,EAlBjB,eAkBiB;EAAqB,WAAA,CAAA,EAAA,YAAA,GAAA,UAAA;EAAA,OAAA,CAAA,EAhBnC,cAgBmC;EAwFrC,MAAA,CAAA,EAAA,CAAA,GAAA,EAvGO,WAuGQ,EAAA,GAAA,IAAA;;KApGnB,qBAAA,GAAwB,UAoG2B,CAAA,OApGT,gBAoGS,CAAA;iBAhG/C,QAAA,CAgGoE;EAAA,QAAA;EAAA,SAAA;EAAA,IAAA;EAAA,WAAA;EAAA,OAAA;EAAA,MAAA;EAAA,GAAA;AAAA,CAAA,EAxF1E,aAwF0E,GAxF1D,KAAA,CAAM,cAwFoD,CAAA,KAAA,CAAA,CAAA,EAxF/B,mBAAA,CAAA,GAAA,CAAA,OAwF+B;iBAApE,eAAA,CAAoE;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAA3B,KAAA,CAAM,cAAqB,CAAA,KAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAapE,YAAA,CAAY;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAA0B,KAAA,CAAM,cAAhC,CAAA,KAAA,CAAA,CAAA,EAAqD,mBAAA,CAAA,GAAA,CAAA,OAArD;iBAkBZ,YAAA,CAlBe;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAuBrB,KAAA,CAAM,cAvBe,CAAA,OAuBO,MAvBP,CAAA,CAAA,EAuBc,mBAAA,CAAA,GAAA,CAAA,OAvBd;iBAgDf,gBAAA,CAhD4C;EAAA,SAAA;EAAA,IAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAqDlD,KAAA,CAAM,cArD4C,CAAA,OAqDtB,MArDsB,CAAA,CAAA,EAqDf,mBAAA,CAAA,GAAA,CAAA,OArDe;iBA8E5C,WAAA,CAAA,CA9EiE,EA8EtD,oBA9EsD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { Button } from "../button/button.js";
|
|
4
|
+
import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import useEmblaCarousel from "embla-carousel-react";
|
|
8
|
+
//#region src/components/carousel/carousel.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Copyright 2026 ResQ
|
|
11
|
+
*
|
|
12
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
* you may not use this file except in compliance with the License.
|
|
14
|
+
* You may obtain a copy of the License at
|
|
15
|
+
*
|
|
16
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17
|
+
*
|
|
18
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
19
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
20
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
21
|
+
* See the License for the specific language governing permissions and
|
|
22
|
+
* limitations under the License.
|
|
23
|
+
*/
|
|
24
|
+
const CarouselContext = React.createContext(null);
|
|
25
|
+
function Carousel({ children, className, opts, orientation = "horizontal", plugins, setApi, ...props }) {
|
|
26
|
+
const [carouselRef, api] = useEmblaCarousel({
|
|
27
|
+
...opts,
|
|
28
|
+
axis: orientation === "horizontal" ? "x" : "y"
|
|
29
|
+
}, plugins);
|
|
30
|
+
const [canScrollPrev, setCanScrollPrev] = React.useState(false);
|
|
31
|
+
const [canScrollNext, setCanScrollNext] = React.useState(false);
|
|
32
|
+
const onSelect = React.useCallback((api) => {
|
|
33
|
+
if (!api) return;
|
|
34
|
+
setCanScrollPrev(api.canScrollPrev());
|
|
35
|
+
setCanScrollNext(api.canScrollNext());
|
|
36
|
+
}, []);
|
|
37
|
+
const scrollPrev = React.useCallback(() => {
|
|
38
|
+
api?.scrollPrev();
|
|
39
|
+
}, [api]);
|
|
40
|
+
const scrollNext = React.useCallback(() => {
|
|
41
|
+
api?.scrollNext();
|
|
42
|
+
}, [api]);
|
|
43
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
44
|
+
if (event.key === "ArrowLeft") {
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
scrollPrev();
|
|
47
|
+
} else if (event.key === "ArrowRight") {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
scrollNext();
|
|
50
|
+
}
|
|
51
|
+
}, [scrollPrev, scrollNext]);
|
|
52
|
+
React.useEffect(() => {
|
|
53
|
+
if (!api || !setApi) return;
|
|
54
|
+
setApi(api);
|
|
55
|
+
}, [api, setApi]);
|
|
56
|
+
React.useEffect(() => {
|
|
57
|
+
if (!api) return;
|
|
58
|
+
onSelect(api);
|
|
59
|
+
api.on("reInit", onSelect);
|
|
60
|
+
api.on("select", onSelect);
|
|
61
|
+
return () => {
|
|
62
|
+
api?.off("reInit", onSelect);
|
|
63
|
+
api?.off("select", onSelect);
|
|
64
|
+
};
|
|
65
|
+
}, [api, onSelect]);
|
|
66
|
+
return /* @__PURE__ */ jsx(CarouselContext.Provider, {
|
|
67
|
+
value: {
|
|
68
|
+
api,
|
|
69
|
+
canScrollNext,
|
|
70
|
+
canScrollPrev,
|
|
71
|
+
carouselRef,
|
|
72
|
+
opts,
|
|
73
|
+
orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
|
|
74
|
+
scrollNext,
|
|
75
|
+
scrollPrev
|
|
76
|
+
},
|
|
77
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
78
|
+
"aria-roledescription": "carousel",
|
|
79
|
+
className: cn("relative", className),
|
|
80
|
+
"data-slot": "carousel",
|
|
81
|
+
onKeyDownCapture: handleKeyDown,
|
|
82
|
+
role: "region",
|
|
83
|
+
...props,
|
|
84
|
+
children
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function CarouselContent({ className, ...props }) {
|
|
89
|
+
const { carouselRef, orientation } = useCarousel();
|
|
90
|
+
return /* @__PURE__ */ jsx("div", {
|
|
91
|
+
className: "overflow-hidden",
|
|
92
|
+
"data-slot": "carousel-content",
|
|
93
|
+
ref: carouselRef,
|
|
94
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
95
|
+
className: cn("flex", orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col", className),
|
|
96
|
+
...props
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function CarouselItem({ className, ...props }) {
|
|
101
|
+
const { orientation } = useCarousel();
|
|
102
|
+
return /* @__PURE__ */ jsx("div", {
|
|
103
|
+
"aria-roledescription": "slide",
|
|
104
|
+
className: cn("min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "pl-4" : "pt-4", className),
|
|
105
|
+
"data-slot": "carousel-item",
|
|
106
|
+
role: "group",
|
|
107
|
+
...props
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function CarouselNext({ className, size = "icon-sm", variant = "outline", ...props }) {
|
|
111
|
+
const { canScrollNext, orientation, scrollNext } = useCarousel();
|
|
112
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
113
|
+
className: cn("rounded-full absolute touch-manipulation", orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className),
|
|
114
|
+
"data-slot": "carousel-next",
|
|
115
|
+
disabled: !canScrollNext,
|
|
116
|
+
onClick: scrollNext,
|
|
117
|
+
size,
|
|
118
|
+
variant,
|
|
119
|
+
...props,
|
|
120
|
+
children: [/* @__PURE__ */ jsx(ChevronRightIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
121
|
+
className: "sr-only",
|
|
122
|
+
children: "Next slide"
|
|
123
|
+
})]
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function CarouselPrevious({ className, size = "icon-sm", variant = "outline", ...props }) {
|
|
127
|
+
const { canScrollPrev, orientation, scrollPrev } = useCarousel();
|
|
128
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
129
|
+
className: cn("rounded-full absolute touch-manipulation", orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className),
|
|
130
|
+
"data-slot": "carousel-previous",
|
|
131
|
+
disabled: !canScrollPrev,
|
|
132
|
+
onClick: scrollPrev,
|
|
133
|
+
size,
|
|
134
|
+
variant,
|
|
135
|
+
...props,
|
|
136
|
+
children: [/* @__PURE__ */ jsx(ChevronLeftIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
137
|
+
className: "sr-only",
|
|
138
|
+
children: "Previous slide"
|
|
139
|
+
})]
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function useCarousel() {
|
|
143
|
+
const context = React.useContext(CarouselContext);
|
|
144
|
+
if (!context) throw new Error("useCarousel must be used within a <Carousel />");
|
|
145
|
+
return context;
|
|
146
|
+
}
|
|
147
|
+
//#endregion
|
|
148
|
+
export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel };
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.js","names":[],"sources":["../../../src/components/carousel/carousel.tsx"],"sourcesContent":["/**\n * Copyright 2026 ResQ\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\"use client\";\n\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils.js\";\nimport { Button } from \"../button/button.js\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype CarouselContextProps = CarouselProps & {\n\tapi: ReturnType<typeof useEmblaCarousel>[1];\n\tcanScrollNext: boolean;\n\tcanScrollPrev: boolean;\n\tcarouselRef: ReturnType<typeof useEmblaCarousel>[0];\n\tscrollNext: () => void;\n\tscrollPrev: () => void;\n};\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ninterface CarouselProps {\n\topts?: CarouselOptions;\n\torientation?: \"horizontal\" | \"vertical\";\n\tplugins?: CarouselPlugin;\n\tsetApi?: (api: CarouselApi) => void;\n}\n\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction Carousel({\n\tchildren,\n\tclassName,\n\topts,\n\torientation = \"horizontal\",\n\tplugins,\n\tsetApi,\n\t...props\n}: CarouselProps & React.ComponentProps<\"div\">) {\n\tconst [carouselRef, api] = useEmblaCarousel(\n\t\t{\n\t\t\t...opts,\n\t\t\taxis: orientation === \"horizontal\" ? \"x\" : \"y\",\n\t\t},\n\t\tplugins,\n\t);\n\tconst [canScrollPrev, setCanScrollPrev] = React.useState(false);\n\tconst [canScrollNext, setCanScrollNext] = React.useState(false);\n\n\tconst onSelect = React.useCallback((api: CarouselApi) => {\n\t\tif (!api) {\n\t\t\treturn;\n\t\t}\n\t\tsetCanScrollPrev(api.canScrollPrev());\n\t\tsetCanScrollNext(api.canScrollNext());\n\t}, []);\n\n\tconst scrollPrev = React.useCallback(() => {\n\t\tapi?.scrollPrev();\n\t}, [api]);\n\n\tconst scrollNext = React.useCallback(() => {\n\t\tapi?.scrollNext();\n\t}, [api]);\n\n\tconst handleKeyDown = React.useCallback(\n\t\t(event: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\tif (event.key === \"ArrowLeft\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tscrollPrev();\n\t\t\t} else if (event.key === \"ArrowRight\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tscrollNext();\n\t\t\t}\n\t\t},\n\t\t[scrollPrev, scrollNext],\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (!api || !setApi) {\n\t\t\treturn;\n\t\t}\n\t\tsetApi(api);\n\t}, [api, setApi]);\n\n\tReact.useEffect(() => {\n\t\tif (!api) {\n\t\t\treturn;\n\t\t}\n\t\tonSelect(api);\n\t\tapi.on(\"reInit\", onSelect);\n\t\tapi.on(\"select\", onSelect);\n\n\t\treturn () => {\n\t\t\tapi?.off(\"reInit\", onSelect);\n\t\t\tapi?.off(\"select\", onSelect);\n\t\t};\n\t}, [api, onSelect]);\n\n\treturn (\n\t\t<CarouselContext.Provider\n\t\t\tvalue={{\n\t\t\t\tapi,\n\t\t\t\tcanScrollNext,\n\t\t\t\tcanScrollPrev,\n\t\t\t\tcarouselRef,\n\t\t\t\topts,\n\t\t\t\torientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n\t\t\t\tscrollNext,\n\t\t\t\tscrollPrev,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\taria-roledescription=\"carousel\"\n\t\t\t\tclassName={cn(\"relative\", className)}\n\t\t\t\tdata-slot=\"carousel\"\n\t\t\t\tonKeyDownCapture={handleKeyDown}\n\t\t\t\trole=\"region\"\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</CarouselContext.Provider>\n\t);\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n\tconst { carouselRef, orientation } = useCarousel();\n\n\treturn (\n\t\t<div className=\"overflow-hidden\" data-slot=\"carousel-content\" ref={carouselRef}>\n\t\t\t<div\n\t\t\t\tclassName={cn(\"flex\", orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\", className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n\tconst { orientation } = useCarousel();\n\n\treturn (\n\t\t<div\n\t\t\taria-roledescription=\"slide\"\n\t\t\tclassName={cn(\n\t\t\t\t\"min-w-0 shrink-0 grow-0 basis-full\",\n\t\t\t\torientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-slot=\"carousel-item\"\n\t\t\trole=\"group\"\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction CarouselNext({\n\tclassName,\n\tsize = \"icon-sm\",\n\tvariant = \"outline\",\n\t...props\n}: React.ComponentProps<typeof Button>) {\n\tconst { canScrollNext, orientation, scrollNext } = useCarousel();\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-full absolute touch-manipulation\",\n\t\t\t\torientation === \"horizontal\"\n\t\t\t\t\t? \"top-1/2 -right-12 -translate-y-1/2\"\n\t\t\t\t\t: \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-slot=\"carousel-next\"\n\t\t\tdisabled={!canScrollNext}\n\t\t\tonClick={scrollNext}\n\t\t\tsize={size}\n\t\t\tvariant={variant}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ChevronRightIcon />\n\t\t\t<span className=\"sr-only\">Next slide</span>\n\t\t</Button>\n\t);\n}\n\nfunction CarouselPrevious({\n\tclassName,\n\tsize = \"icon-sm\",\n\tvariant = \"outline\",\n\t...props\n}: React.ComponentProps<typeof Button>) {\n\tconst { canScrollPrev, orientation, scrollPrev } = useCarousel();\n\n\treturn (\n\t\t<Button\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-full absolute touch-manipulation\",\n\t\t\t\torientation === \"horizontal\"\n\t\t\t\t\t? \"top-1/2 -left-12 -translate-y-1/2\"\n\t\t\t\t\t: \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tdata-slot=\"carousel-previous\"\n\t\t\tdisabled={!canScrollPrev}\n\t\t\tonClick={scrollPrev}\n\t\t\tsize={size}\n\t\t\tvariant={variant}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ChevronLeftIcon />\n\t\t\t<span className=\"sr-only\">Previous slide</span>\n\t\t</Button>\n\t);\n}\n\nfunction useCarousel() {\n\tconst context = React.useContext(CarouselContext);\n\n\tif (!context) {\n\t\tthrow new Error(\"useCarousel must be used within a <Carousel />\");\n\t}\n\n\treturn context;\n}\n\nexport {\n\tCarousel,\n\ttype CarouselApi,\n\tCarouselContent,\n\tCarouselItem,\n\tCarouselNext,\n\tCarouselPrevious,\n\tuseCarousel,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as react_jsx_runtime53 from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as RechartsPrimitive from "recharts";
|
|
4
|
+
|
|
5
|
+
//#region src/components/chart/chart.d.ts
|
|
6
|
+
|
|
7
|
+
declare const THEMES: {
|
|
8
|
+
readonly dark: ".dark";
|
|
9
|
+
readonly light: "";
|
|
10
|
+
};
|
|
11
|
+
type ChartConfig = { [k in string]: {
|
|
12
|
+
icon?: React.ComponentType;
|
|
13
|
+
label?: React.ReactNode;
|
|
14
|
+
} & ({
|
|
15
|
+
color?: never;
|
|
16
|
+
theme: Record<keyof typeof THEMES, string>;
|
|
17
|
+
} | {
|
|
18
|
+
color?: string;
|
|
19
|
+
theme?: never;
|
|
20
|
+
}) };
|
|
21
|
+
declare function ChartContainer({
|
|
22
|
+
children,
|
|
23
|
+
className,
|
|
24
|
+
config,
|
|
25
|
+
id,
|
|
26
|
+
...props
|
|
27
|
+
}: React.ComponentProps<"div"> & {
|
|
28
|
+
children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
|
|
29
|
+
config: ChartConfig;
|
|
30
|
+
}): react_jsx_runtime53.JSX.Element;
|
|
31
|
+
declare const ChartStyle: React.NamedExoticComponent<{
|
|
32
|
+
config: ChartConfig;
|
|
33
|
+
id: string;
|
|
34
|
+
}>;
|
|
35
|
+
declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
|
|
36
|
+
declare function ChartTooltipContent({
|
|
37
|
+
active,
|
|
38
|
+
className,
|
|
39
|
+
color,
|
|
40
|
+
formatter,
|
|
41
|
+
hideIndicator,
|
|
42
|
+
hideLabel,
|
|
43
|
+
indicator,
|
|
44
|
+
label,
|
|
45
|
+
labelClassName,
|
|
46
|
+
labelFormatter,
|
|
47
|
+
labelKey,
|
|
48
|
+
nameKey,
|
|
49
|
+
payload
|
|
50
|
+
}: React.ComponentProps<"div"> & React.ComponentProps<typeof RechartsPrimitive.Tooltip> & {
|
|
51
|
+
hideIndicator?: boolean;
|
|
52
|
+
hideLabel?: boolean;
|
|
53
|
+
indicator?: "dashed" | "dot" | "line";
|
|
54
|
+
labelKey?: string;
|
|
55
|
+
nameKey?: string;
|
|
56
|
+
}): react_jsx_runtime53.JSX.Element | null;
|
|
57
|
+
declare const ChartLegend: typeof RechartsPrimitive.Legend;
|
|
58
|
+
declare function ChartLegendContent({
|
|
59
|
+
className,
|
|
60
|
+
hideIcon,
|
|
61
|
+
nameKey,
|
|
62
|
+
payload,
|
|
63
|
+
verticalAlign
|
|
64
|
+
}: Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & React.ComponentProps<"div"> & {
|
|
65
|
+
hideIcon?: boolean;
|
|
66
|
+
nameKey?: string;
|
|
67
|
+
}): react_jsx_runtime53.JSX.Element | null;
|
|
68
|
+
//#endregion
|
|
69
|
+
export { ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
|
|
70
|
+
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.d.ts","names":[],"sources":["../../../src/components/chart/chart.tsx"],"sourcesContent":[],"mappings":";;;;;;cA0BM,MAgDG,EAAA;EAC8B,SAAA,IAAA,EAAkB,OAAA;EAA9C,SAAM,KAAA,EAAA,EAAA;CACR;AACR,KA5CW,WAAA,GA4CX,QAAA,MAAA,GAAA;EAgCK,IAAA,CAAA,EA1EG,KAAA,CAAM,aA8EN;EAsBH,KAAA,CAAA,EAnGI,KAAA,CAAM,SAmGE;AAET,CAAA,GAAA,CAAA;EACR,KAAA,CAAA,EAAA,KAAA;EACA,KAAA,EArG2B,MAqG3B,CAAA,MAAA,OArG+C,MAqG/C,EAAA,MAAA,CAAA;AACA,CAAA,GAAA;EACA,KAAA,CAAA,EAAA,MAAA;EACA,KAAA,CAAA,EAAA,KAAA;AACA,CAAA,CAAA,EACA;iBA5EQ,cAAA,CA6ER;EAAA,QAAA;EAAA,SAAA;EAAA,MAAA;EAAA,EAAA;EAAA,GAAA;CAAA,EAvEE,KAAA,CAAM,cAuER,CAAA,KAAA,CAAA,GAAA;EACA,QAAA,EAvEU,KAAA,CAAM,cAuEhB,CAAA,OAvEsC,iBAAA,CAAkB,mBAuExD,CAAA,CAAA,UAAA,CAAA;EACA,MAAA,EAvEQ,WAuER;CACA,CAAA,EAvEA,mBAAA,CAAA,GAAA,CAAA,OAuEA;cAvCK,UAwCL,EAxCe,KAAA,CAAA,oBAwCf,CAAA;EACA,MAAA,EArCQ,WAqCR;EACE,EAAA,EAAM,MAAA;CACoB,CAAA;cAjBvB,YAiBC,EAAA,OAjBW,iBAAA,CAAA,OAiBX;iBAfE,mBAAA,CAqBP;EAAA,MAAA;EAAA,SAAA;EAAA,KAAA;EAAA,SAAA;EAAA,aAAA;EAAA,SAAA;EAAA,SAAA;EAAA,KAAA;EAAA,cAAA;EAAA,cAAA;EAAA,QAAA;EAAA,OAAA;EAAA;CAAA,EAPC,KAAA,CAAM,cAOP,CAAA,KAAA,CAAA,GAND,KAAA,CAAM,cAML,CAAA,OAN2B,iBAAA,CAAkB,OAM7C,CAAA,GAAA;EAAA,aAAA,CAAA,EAAA,OAAA;EAmHI,SAAA,CAAA,EAAA,OAAsC;EAEnC,SAAA,CAAA,EAAA,QAAA,GAAkB,KAAA,GAAA,MAAA;EAC1B,QAAA,CAAA,EAAA,MAAA;EACA,OAAA,CAAA,EAAA,MAAA;CACA,CAAA,EAxHC,mBAAA,CAAA,GAAA,CAAA,OAAA,GAwHD,IAAA;cALK,WAML,EAAA,OANgB,iBAAA,CAAA,MAMhB;iBAJQ,kBAAA,CAKR;EAAA,SAAA;EAAA,QAAA;EAAA,OAAA;EAAA,OAAA;EAAA;CAAA,EACE,IADF,CACO,iBAAA,CAAkB,WADzB,EAAA,SAAA,GAAA,eAAA,CAAA,GAEA,KAAA,CAAM,cAFN,CAAA,KAAA,CAAA,GAAA;EACO,QAAA,CAAA,EAAA,OAAkB;EAAvB,OAAA,CAAA,EAAA,MAAA;CACF,CAAA,EAGC,mBAAA,CAAA,GAAA,CAAA,OAAA,GAHK,IAAA"}
|