@pihanga2/shadcn 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/README.md +114 -0
- package/cards/badge/badge.component.d.ts +14 -0
- package/cards/badge/badge.component.js +18 -0
- package/cards/badge/badge.component.js.map +1 -0
- package/cards/badge/badge.types.d.ts +37 -0
- package/cards/badge/badge.types.js +7 -0
- package/cards/badge/badge.types.js.map +1 -0
- package/cards/badge/index.d.ts +1 -0
- package/cards/badge/index.js +12 -0
- package/cards/badge/index.js.map +1 -0
- package/cards/box/box.component.d.ts +4 -0
- package/cards/box/box.component.js +24 -0
- package/cards/box/box.component.js.map +1 -0
- package/cards/box/box.types.d.ts +71 -0
- package/cards/box/box.types.js +7 -0
- package/cards/box/box.types.js.map +1 -0
- package/cards/box/index.d.ts +1 -0
- package/cards/box/index.js +12 -0
- package/cards/box/index.js.map +1 -0
- package/cards/button/button.component.d.ts +4 -0
- package/cards/button/button.component.js +71 -0
- package/cards/button/button.component.js.map +1 -0
- package/cards/button/button.types.d.ts +106 -0
- package/cards/button/button.types.js +7 -0
- package/cards/button/button.types.js.map +1 -0
- package/cards/button/index.d.ts +1 -0
- package/cards/button/index.js +13 -0
- package/cards/button/index.js.map +1 -0
- package/cards/checkbox/checkbox.component.d.ts +4 -0
- package/cards/checkbox/checkbox.component.js +36 -0
- package/cards/checkbox/checkbox.component.js.map +1 -0
- package/cards/checkbox/checkbox.types.d.ts +37 -0
- package/cards/checkbox/checkbox.types.js +7 -0
- package/cards/checkbox/checkbox.types.js.map +1 -0
- package/cards/checkbox/index.d.ts +1 -0
- package/cards/checkbox/index.js +13 -0
- package/cards/checkbox/index.js.map +1 -0
- package/cards/conditional/conditional.component.d.ts +11 -0
- package/cards/conditional/conditional.component.js +15 -0
- package/cards/conditional/conditional.component.js.map +1 -0
- package/cards/conditional/conditional.types.d.ts +29 -0
- package/cards/conditional/conditional.types.js +7 -0
- package/cards/conditional/conditional.types.js.map +1 -0
- package/cards/conditional/index.d.ts +1 -0
- package/cards/conditional/index.js +12 -0
- package/cards/conditional/index.js.map +1 -0
- package/cards/core-index.d.ts +30 -0
- package/cards/core-index.js +61 -0
- package/cards/dataTable/dataTable.component.d.ts +4 -0
- package/cards/dataTable/dataTable.component.js +209 -0
- package/cards/dataTable/dataTable.component.js.map +1 -0
- package/cards/dataTable/dataTable.types.d.ts +196 -0
- package/cards/dataTable/dataTable.types.js +13 -0
- package/cards/dataTable/dataTable.types.js.map +1 -0
- package/cards/dataTable/dataTableRowDetail.component.d.ts +26 -0
- package/cards/dataTable/dataTableRowDetail.component.js +47 -0
- package/cards/dataTable/dataTableRowDetail.component.js.map +1 -0
- package/cards/dataTable/index.d.ts +1 -0
- package/cards/dataTable/index.js +16 -0
- package/cards/dataTable/index.js.map +1 -0
- package/cards/dialog/dialog.component.d.ts +4 -0
- package/cards/dialog/dialog.component.js +89 -0
- package/cards/dialog/dialog.component.js.map +1 -0
- package/cards/dialog/dialog.types.d.ts +115 -0
- package/cards/dialog/dialog.types.js +11 -0
- package/cards/dialog/dialog.types.js.map +1 -0
- package/cards/dialog/index.d.ts +1 -0
- package/cards/dialog/index.js +13 -0
- package/cards/dialog/index.js.map +1 -0
- package/cards/dropDownMenu/drop-down.component.d.ts +4 -0
- package/cards/dropDownMenu/drop-down.component.js +205 -0
- package/cards/dropDownMenu/drop-down.component.js.map +1 -0
- package/cards/dropDownMenu/drop-down.types.d.ts +131 -0
- package/cards/dropDownMenu/drop-down.types.js +7 -0
- package/cards/dropDownMenu/drop-down.types.js.map +1 -0
- package/cards/dropDownMenu/dropdown-context.d.ts +7 -0
- package/cards/dropDownMenu/dropdown-context.js +7 -0
- package/cards/dropDownMenu/dropdown-context.js.map +1 -0
- package/cards/dropDownMenu/dropdown-menu.ui.d.ts +42 -0
- package/cards/dropDownMenu/dropdown-menu.ui.js +111 -0
- package/cards/dropDownMenu/dropdown-menu.ui.js.map +1 -0
- package/cards/dropDownMenu/index.d.ts +1 -0
- package/cards/dropDownMenu/index.js +13 -0
- package/cards/dropDownMenu/index.js.map +1 -0
- package/cards/emptyCard.d.ts +7 -0
- package/cards/field/field.component.d.ts +4 -0
- package/cards/field/field.component.js +38 -0
- package/cards/field/field.component.js.map +1 -0
- package/cards/field/field.types.d.ts +30 -0
- package/cards/field/field.types.js +7 -0
- package/cards/field/field.types.js.map +1 -0
- package/cards/field/index.d.ts +1 -0
- package/cards/field/index.js +12 -0
- package/cards/field/index.js.map +1 -0
- package/cards/flexGrid/flexGrid.component.d.ts +4 -0
- package/cards/flexGrid/flexGrid.component.js +40 -0
- package/cards/flexGrid/flexGrid.component.js.map +1 -0
- package/cards/flexGrid/flexGrid.types.d.ts +23 -0
- package/cards/flexGrid/flexGrid.types.js +7 -0
- package/cards/flexGrid/flexGrid.types.js.map +1 -0
- package/cards/flexGrid/index.d.ts +1 -0
- package/cards/flexGrid/index.js +12 -0
- package/cards/flexGrid/index.js.map +1 -0
- package/cards/form/form.component.d.ts +4 -0
- package/cards/form/form.component.js +64 -0
- package/cards/form/form.component.js.map +1 -0
- package/cards/form/form.context.d.ts +23 -0
- package/cards/form/form.context.js +13 -0
- package/cards/form/form.context.js.map +1 -0
- package/cards/form/form.types.d.ts +43 -0
- package/cards/form/form.types.js +7 -0
- package/cards/form/form.types.js.map +1 -0
- package/cards/form/index.d.ts +2 -0
- package/cards/form/index.js +14 -0
- package/cards/form/index.js.map +1 -0
- package/cards/framework/framework.component.d.ts +3 -0
- package/cards/framework/framework.component.js +21 -0
- package/cards/framework/framework.component.js.map +1 -0
- package/cards/framework/index.d.ts +2 -0
- package/cards/framework/index.js +12 -0
- package/cards/framework/index.js.map +1 -0
- package/cards/graphin/graphin.component.d.ts +4 -0
- package/cards/graphin/graphin.types.d.ts +18 -0
- package/cards/graphin/index.d.ts +2 -0
- package/cards/graphin/tooltip.component.d.ts +10 -0
- package/cards/icons.d.ts +15 -0
- package/cards/icons.js +15 -0
- package/cards/icons.js.map +1 -0
- package/cards/input/index.d.ts +1 -0
- package/cards/input/index.js +13 -0
- package/cards/input/index.js.map +1 -0
- package/cards/input/input.component.d.ts +4 -0
- package/cards/input/input.component.js +69 -0
- package/cards/input/input.component.js.map +1 -0
- package/cards/input/input.types.d.ts +80 -0
- package/cards/input/input.types.js +7 -0
- package/cards/input/input.types.js.map +1 -0
- package/cards/jsonViewer/index.d.ts +1 -0
- package/cards/jsonViewer/jsonViewer.component.d.ts +4 -0
- package/cards/jsonViewer/jsonViewer.types.d.ts +76 -0
- package/cards/list/index.d.ts +1 -0
- package/cards/list/index.js +13 -0
- package/cards/list/index.js.map +1 -0
- package/cards/list/list.component.d.ts +4 -0
- package/cards/list/list.component.js +102 -0
- package/cards/list/list.component.js.map +1 -0
- package/cards/list/list.types.d.ts +65 -0
- package/cards/list/list.types.js +7 -0
- package/cards/list/list.types.js.map +1 -0
- package/cards/loadingOverlay/index.d.ts +1 -0
- package/cards/loadingOverlay/index.js +12 -0
- package/cards/loadingOverlay/index.js.map +1 -0
- package/cards/loadingOverlay/loadingOverlay.component.d.ts +4 -0
- package/cards/loadingOverlay/loadingOverlay.component.js +31 -0
- package/cards/loadingOverlay/loadingOverlay.component.js.map +1 -0
- package/cards/loadingOverlay/loadingOverlay.types.d.ts +13 -0
- package/cards/loadingOverlay/loadingOverlay.types.js +7 -0
- package/cards/loadingOverlay/loadingOverlay.types.js.map +1 -0
- package/cards/loadingSkeleton/index.d.ts +1 -0
- package/cards/loadingSkeleton/index.js +12 -0
- package/cards/loadingSkeleton/index.js.map +1 -0
- package/cards/loadingSkeleton/loading-skeleton.component.d.ts +19 -0
- package/cards/loadingSkeleton/loading-skeleton.component.js +33 -0
- package/cards/loadingSkeleton/loading-skeleton.component.js.map +1 -0
- package/cards/loadingSkeleton/loading-skeleton.types.d.ts +94 -0
- package/cards/loadingSkeleton/loading-skeleton.types.js +7 -0
- package/cards/loadingSkeleton/loading-skeleton.types.js.map +1 -0
- package/cards/markdownViewer/index.d.ts +1 -0
- package/cards/markdownViewer/markdownViewer.component.d.ts +4 -0
- package/cards/markdownViewer/markdownViewer.types.d.ts +28 -0
- package/cards/menu/index.d.ts +1 -0
- package/cards/menu/index.js +13 -0
- package/cards/menu/index.js.map +1 -0
- package/cards/menu/menu.component.d.ts +4 -0
- package/cards/menu/menu.component.js +23 -0
- package/cards/menu/menu.component.js.map +1 -0
- package/cards/menu/menu.types.d.ts +53 -0
- package/cards/menu/menu.types.js +7 -0
- package/cards/menu/menu.types.js.map +1 -0
- package/cards/modeToggle/index.d.ts +1 -0
- package/cards/modeToggle/index.js +13 -0
- package/cards/modeToggle/index.js.map +1 -0
- package/cards/modeToggle/mode-toggle.component.d.ts +4 -0
- package/cards/modeToggle/mode-toggle.component.js +32 -0
- package/cards/modeToggle/mode-toggle.component.js.map +1 -0
- package/cards/modeToggle/mode-toggle.types.d.ts +20 -0
- package/cards/modeToggle/mode-toggle.types.js +7 -0
- package/cards/modeToggle/mode-toggle.types.js.map +1 -0
- package/cards/navbarSearch/index.d.ts +1 -0
- package/cards/navbarSearch/index.js +13 -0
- package/cards/navbarSearch/index.js.map +1 -0
- package/cards/navbarSearch/navbarSearch.component.d.ts +3 -0
- package/cards/navbarSearch/navbarSearch.component.js +88 -0
- package/cards/navbarSearch/navbarSearch.component.js.map +1 -0
- package/cards/navbarSearch/navbarSearch.type.d.ts +32 -0
- package/cards/navbarSearch/navbarSearch.type.js +11 -0
- package/cards/navbarSearch/navbarSearch.type.js.map +1 -0
- package/cards/pageWithNavbar/index.d.ts +2 -0
- package/cards/pageWithNavbar/index.js +14 -0
- package/cards/pageWithNavbar/index.js.map +1 -0
- package/cards/pageWithNavbar/pageWithNavbar.component.d.ts +12 -0
- package/cards/pageWithNavbar/pageWithNavbar.component.js +153 -0
- package/cards/pageWithNavbar/pageWithNavbar.component.js.map +1 -0
- package/cards/pageWithNavbar/pageWithNavbar.type.d.ts +81 -0
- package/cards/pageWithNavbar/pageWithNavbar.type.js +7 -0
- package/cards/pageWithNavbar/pageWithNavbar.type.js.map +1 -0
- package/cards/pasteTarget/index.d.ts +1 -0
- package/cards/pasteTarget/index.js +13 -0
- package/cards/pasteTarget/index.js.map +1 -0
- package/cards/pasteTarget/pasteTarget.component.d.ts +4 -0
- package/cards/pasteTarget/pasteTarget.component.js +158 -0
- package/cards/pasteTarget/pasteTarget.component.js.map +1 -0
- package/cards/pasteTarget/pasteTarget.types.d.ts +46 -0
- package/cards/pasteTarget/pasteTarget.types.js +11 -0
- package/cards/pasteTarget/pasteTarget.types.js.map +1 -0
- package/cards/resizable/index.d.ts +1 -0
- package/cards/resizable/resizable.component.d.ts +4 -0
- package/cards/resizable/resizable.types.d.ts +49 -0
- package/cards/select/index.d.ts +1 -0
- package/cards/select/index.js +13 -0
- package/cards/select/index.js.map +1 -0
- package/cards/select/select.component.d.ts +4 -0
- package/cards/select/select.component.js +41 -0
- package/cards/select/select.component.js.map +1 -0
- package/cards/select/select.types.d.ts +73 -0
- package/cards/select/select.types.js +11 -0
- package/cards/select/select.types.js.map +1 -0
- package/cards/stack/index.d.ts +1 -0
- package/cards/stack/index.js +12 -0
- package/cards/stack/index.js.map +1 -0
- package/cards/stack/stack.component.d.ts +7 -0
- package/cards/stack/stack.component.js +83 -0
- package/cards/stack/stack.component.js.map +1 -0
- package/cards/stack/stack.types.d.ts +47 -0
- package/cards/stack/stack.types.js +7 -0
- package/cards/stack/stack.types.js.map +1 -0
- package/cards/stepper/index.d.ts +1 -0
- package/cards/stepper/index.js +13 -0
- package/cards/stepper/index.js.map +1 -0
- package/cards/stepper/stepper.component.d.ts +4 -0
- package/cards/stepper/stepper.component.js +48 -0
- package/cards/stepper/stepper.component.js.map +1 -0
- package/cards/stepper/stepper.types.d.ts +96 -0
- package/cards/stepper/stepper.types.js +7 -0
- package/cards/stepper/stepper.types.js.map +1 -0
- package/cards/switch/index.d.ts +1 -0
- package/cards/switch/index.js +13 -0
- package/cards/switch/index.js.map +1 -0
- package/cards/switch/switch.component.d.ts +4 -0
- package/cards/switch/switch.component.js +34 -0
- package/cards/switch/switch.component.js.map +1 -0
- package/cards/switch/switch.types.d.ts +39 -0
- package/cards/switch/switch.types.js +7 -0
- package/cards/switch/switch.types.js.map +1 -0
- package/cards/tabs/index.d.ts +1 -0
- package/cards/tabs/index.js +13 -0
- package/cards/tabs/index.js.map +1 -0
- package/cards/tabs/tabs.component.d.ts +4 -0
- package/cards/tabs/tabs.component.js +42 -0
- package/cards/tabs/tabs.component.js.map +1 -0
- package/cards/tabs/tabs.types.d.ts +72 -0
- package/cards/tabs/tabs.types.js +7 -0
- package/cards/tabs/tabs.types.js.map +1 -0
- package/cards/textField/index.d.ts +1 -0
- package/cards/textField/index.js +13 -0
- package/cards/textField/index.js.map +1 -0
- package/cards/textField/textField.component.d.ts +4 -0
- package/cards/textField/textField.component.js +29 -0
- package/cards/textField/textField.component.js.map +1 -0
- package/cards/textField/textField.types.d.ts +36 -0
- package/cards/textField/textField.types.js +7 -0
- package/cards/textField/textField.types.js.map +1 -0
- package/cards/toast/index.d.ts +1 -0
- package/cards/toast/index.js +13 -0
- package/cards/toast/index.js.map +1 -0
- package/cards/toast/toast.component.d.ts +4 -0
- package/cards/toast/toast.component.js +76 -0
- package/cards/toast/toast.component.js.map +1 -0
- package/cards/toast/toast.types.d.ts +100 -0
- package/cards/toast/toast.types.js +12 -0
- package/cards/toast/toast.types.js.map +1 -0
- package/cards/toggleGroup/index.d.ts +1 -0
- package/cards/toggleGroup/index.js +13 -0
- package/cards/toggleGroup/index.js.map +1 -0
- package/cards/toggleGroup/toggleGroup.component.d.ts +4 -0
- package/cards/toggleGroup/toggleGroup.component.js +55 -0
- package/cards/toggleGroup/toggleGroup.component.js.map +1 -0
- package/cards/toggleGroup/toggleGroup.types.d.ts +96 -0
- package/cards/toggleGroup/toggleGroup.types.js +7 -0
- package/cards/toggleGroup/toggleGroup.types.js.map +1 -0
- package/cards/types.d.ts +72 -0
- package/cards/types.js +22 -0
- package/cards/types.js.map +1 -0
- package/cards/typography/index.d.ts +1 -0
- package/cards/typography/index.js +12 -0
- package/cards/typography/index.js.map +1 -0
- package/cards/typography/typography.component.d.ts +4 -0
- package/cards/typography/typography.component.js +44 -0
- package/cards/typography/typography.component.js.map +1 -0
- package/cards/typography/typography.types.d.ts +23 -0
- package/cards/typography/typography.types.js +7 -0
- package/cards/typography/typography.types.js.map +1 -0
- package/components/hooks/use-is-touch-device.d.ts +1 -0
- package/components/lib/utils.js +10 -0
- package/components/lib/utils.js.map +1 -0
- package/components/theme-provider/index.d.ts +4 -0
- package/components/theme-provider/index.js +12 -0
- package/components/theme-provider/index.js.map +1 -0
- package/components/theme-provider/theme-provider.component.d.ts +2 -0
- package/components/theme-provider/theme-provider.component.js +31 -0
- package/components/theme-provider/theme-provider.component.js.map +1 -0
- package/components/theme-provider/theme-provider.types.d.ts +12 -0
- package/components/theme-provider/theme-provider.types.js +9 -0
- package/components/theme-provider/theme-provider.types.js.map +1 -0
- package/components/ui/avatar.js +30 -0
- package/components/ui/avatar.js.map +1 -0
- package/components/ui/badge.js +26 -0
- package/components/ui/badge.js.map +1 -0
- package/components/ui/button.js +98 -0
- package/components/ui/button.js.map +1 -0
- package/components/ui/dialog.js +109 -0
- package/components/ui/dialog.js.map +1 -0
- package/components/ui/field.js +68 -0
- package/components/ui/field.js.map +1 -0
- package/components/ui/input.js +16 -0
- package/components/ui/input.js.map +1 -0
- package/components/ui/label.js +16 -0
- package/components/ui/label.js.map +1 -0
- package/components/ui/menubar.js +62 -0
- package/components/ui/menubar.js.map +1 -0
- package/components/ui/select.js +84 -0
- package/components/ui/select.js.map +1 -0
- package/components/ui/separator.js +5 -0
- package/components/ui/sheet.js +49 -0
- package/components/ui/sheet.js.map +1 -0
- package/components/ui/spinner.js +35 -0
- package/components/ui/spinner.js.map +1 -0
- package/components/ui/stepper.js +145 -0
- package/components/ui/stepper.js.map +1 -0
- package/components/ui/switch.js +20 -0
- package/components/ui/switch.js.map +1 -0
- package/components/ui/table.js +61 -0
- package/components/ui/table.js.map +1 -0
- package/components/ui/tabs.js +38 -0
- package/components/ui/tabs.js.map +1 -0
- package/components/ui/toggle-group.js +50 -0
- package/components/ui/toggle-group.js.map +1 -0
- package/components/ui/toggle.js +27 -0
- package/components/ui/toggle.js.map +1 -0
- package/components/ui/tooltip.js +38 -0
- package/components/ui/tooltip.js.map +1 -0
- package/lib/utils.d.ts +2 -0
- package/lib/utils.js +10 -0
- package/lib/utils.js.map +1 -0
- package/mountain-snow.svg +4 -0
- package/package.json +203 -0
- package/pihanga-shadcn.css +2 -0
- package/r/badge.json +35 -0
- package/r/box.json +26 -0
- package/r/button.json +39 -0
- package/r/checkbox.json +31 -0
- package/r/conditional.json +30 -0
- package/r/dataTable.json +43 -0
- package/r/dialog.json +36 -0
- package/r/dropDownMenu.json +47 -0
- package/r/field.json +35 -0
- package/r/flexGrid.json +32 -0
- package/r/form.json +37 -0
- package/r/framework.json +28 -0
- package/r/graphin.json +42 -0
- package/r/input.json +35 -0
- package/r/jsonViewer.json +40 -0
- package/r/list.json +39 -0
- package/r/loadingOverlay.json +39 -0
- package/r/loadingSkeleton.json +30 -0
- package/r/markdownViewer.json +51 -0
- package/r/menu.json +34 -0
- package/r/modeToggle.json +36 -0
- package/r/navbarSearch.json +31 -0
- package/r/pageWithNavbar.json +46 -0
- package/r/pasteTarget.json +41 -0
- package/r/pihanga-base.json +11 -0
- package/r/pihanga-cards-icons.json +16 -0
- package/r/pihanga-cards-types.json +16 -0
- package/r/pihanga-hook-use-is-touch-device.json +15 -0
- package/r/pihanga-lib-utils.json +18 -0
- package/r/pihanga-theme-provider.json +25 -0
- package/r/pihanga-ui-extras.json +68 -0
- package/r/registry.json +171 -0
- package/r/resizable.json +35 -0
- package/r/select.json +35 -0
- package/r/stack.json +27 -0
- package/r/stepper.json +39 -0
- package/r/switch.json +36 -0
- package/r/tabs.json +33 -0
- package/r/textField.json +32 -0
- package/r/toast.json +32 -0
- package/r/toggleGroup.json +35 -0
- package/r/typography.json +31 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { cn as e } from "../lib/utils.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
import { XIcon as r } from "lucide-react";
|
|
5
|
+
import * as i from "@radix-ui/react-dialog";
|
|
6
|
+
//#region src/components/ui/sheet.tsx
|
|
7
|
+
function a({ ...e }) {
|
|
8
|
+
return /* @__PURE__ */ t(i.Root, {
|
|
9
|
+
"data-slot": "sheet",
|
|
10
|
+
...e
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function o({ ...e }) {
|
|
14
|
+
return /* @__PURE__ */ t(i.Trigger, {
|
|
15
|
+
"data-slot": "sheet-trigger",
|
|
16
|
+
...e
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function s({ ...e }) {
|
|
20
|
+
return /* @__PURE__ */ t(i.Portal, {
|
|
21
|
+
"data-slot": "sheet-portal",
|
|
22
|
+
...e
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function c({ className: n, ...r }) {
|
|
26
|
+
return /* @__PURE__ */ t(i.Overlay, {
|
|
27
|
+
"data-slot": "sheet-overlay",
|
|
28
|
+
className: e("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", n),
|
|
29
|
+
...r
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function l({ className: a, children: o, side: l = "right", ...u }) {
|
|
33
|
+
return /* @__PURE__ */ n(s, { children: [/* @__PURE__ */ t(c, {}), /* @__PURE__ */ n(i.Content, {
|
|
34
|
+
"data-slot": "sheet-content",
|
|
35
|
+
className: e("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", l === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", l === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", l === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", l === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", a),
|
|
36
|
+
...u,
|
|
37
|
+
children: [o, /* @__PURE__ */ n(i.Close, {
|
|
38
|
+
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
|
|
39
|
+
children: [/* @__PURE__ */ t(r, { className: "size-4" }), /* @__PURE__ */ t("span", {
|
|
40
|
+
className: "sr-only",
|
|
41
|
+
children: "Close"
|
|
42
|
+
})]
|
|
43
|
+
})]
|
|
44
|
+
})] });
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { a as Sheet, l as SheetContent, o as SheetTrigger };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=sheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.js","names":[],"sources":["../../../src/components/ui/sheet.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/components/lib/utils\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":";;;;;;AAMA,SAAS,EAAM,EAAE,GAAG,KAA2D;CAC7E,OAAO,kBAAC,EAAe,MAAhB;EAAqB,aAAU;EAAQ,GAAI;CAAQ,CAAA;AAC5D;AAEA,SAAS,EAAa,EACpB,GAAG,KACmD;CACtD,OAAO,kBAAC,EAAe,SAAhB;EAAwB,aAAU;EAAgB,GAAI;CAAQ,CAAA;AACvE;AAQA,SAAS,EAAY,EACnB,GAAG,KACkD;CACrD,OAAO,kBAAC,EAAe,QAAhB;EAAuB,aAAU;EAAe,GAAI;CAAQ,CAAA;AACrE;AAEA,SAAS,EAAa,EACpB,cACA,GAAG,KACmD;CACtD,OACE,kBAAC,EAAe,SAAhB;EACE,aAAU;EACV,WAAW,EACT,0JACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAa,EACpB,cACA,aACA,UAAO,SACP,GAAG,KAGF;CACD,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,CAAe,CAAA,GACf,kBAAC,EAAe,SAAhB;EACE,aAAU;EACV,WAAW,EACT,8MACA,MAAS,WACP,oIACF,MAAS,UACP,iIACF,MAAS,SACP,4GACF,MAAS,YACP,qHACF,CACF;EACA,GAAI;YAdN,CAgBG,GACD,kBAAC,EAAe,OAAhB;GAAsB,WAAU;aAAhC,CACE,kBAAC,GAAD,EAAO,WAAU,SAAU,CAAA,GAC3B,kBAAC,QAAD;IAAM,WAAU;cAAU;GAAW,CAAA,CACjB;IACA;GACb,EAAA,CAAA;AAEjB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.js";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/ui/spinner.tsx
|
|
4
|
+
var r = {
|
|
5
|
+
default: "size-6",
|
|
6
|
+
sm: "size-4",
|
|
7
|
+
lg: "size-8",
|
|
8
|
+
icon: "size-9"
|
|
9
|
+
};
|
|
10
|
+
function i({ className: i, size: a = "default" }) {
|
|
11
|
+
return /* @__PURE__ */ n("svg", {
|
|
12
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
13
|
+
fill: "none",
|
|
14
|
+
viewBox: "0 0 24 24",
|
|
15
|
+
role: "status",
|
|
16
|
+
"aria-label": "Loading",
|
|
17
|
+
className: e("animate-spin", r[a], i),
|
|
18
|
+
children: [/* @__PURE__ */ t("circle", {
|
|
19
|
+
className: "opacity-25",
|
|
20
|
+
cx: "12",
|
|
21
|
+
cy: "12",
|
|
22
|
+
r: "10",
|
|
23
|
+
stroke: "currentColor",
|
|
24
|
+
strokeWidth: "4"
|
|
25
|
+
}), /* @__PURE__ */ t("path", {
|
|
26
|
+
className: "opacity-75",
|
|
27
|
+
fill: "currentColor",
|
|
28
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
29
|
+
})]
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { i as Spinner };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","names":[],"sources":["../../../src/components/ui/spinner.tsx"],"sourcesContent":["import {cn} from \"@/lib/utils\";\n\ntype SpinnerProps = {\n className?: string;\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\";\n};\n\nconst sizeClasses: Record<string, string> = {\n default: \"size-6\",\n sm: \"size-4\",\n lg: \"size-8\",\n icon: \"size-9\",\n};\n\nfunction Spinner({className, size = \"default\"}: SpinnerProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"animate-spin\", sizeClasses[size], className)}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport {Spinner};\n"],"mappings":";;;AAOA,IAAM,IAAsC;CAC1C,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,SAAS,EAAQ,EAAC,cAAW,UAAO,aAA0B;CAC5D,OACE,kBAAC,OAAD;EACE,OAAM;EACN,MAAK;EACL,SAAQ;EACR,MAAK;EACL,cAAW;EACX,WAAW,EAAG,gBAAgB,EAAY,IAAO,CAAS;YAN5D,CAQE,kBAAC,UAAD;GACE,WAAU;GACV,IAAG;GACH,IAAG;GACH,GAAE;GACF,QAAO;GACP,aAAY;EACb,CAAA,GACD,kBAAC,QAAD;GACE,WAAU;GACV,MAAK;GACL,GAAE;EACH,CAAA,CACE;;AAET"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
4
|
+
import { Check as r } from "lucide-react";
|
|
5
|
+
//#region src/components/ui/stepper.tsx
|
|
6
|
+
function i(e, t) {
|
|
7
|
+
return e < t ? "completed" : e === t ? "active" : "upcoming";
|
|
8
|
+
}
|
|
9
|
+
var a = {
|
|
10
|
+
sm: {
|
|
11
|
+
btn: "h-6 w-6 text-xs",
|
|
12
|
+
icon: "h-3 w-3"
|
|
13
|
+
},
|
|
14
|
+
md: {
|
|
15
|
+
btn: "h-8 w-8 text-sm",
|
|
16
|
+
icon: "h-4 w-4"
|
|
17
|
+
},
|
|
18
|
+
lg: {
|
|
19
|
+
btn: "h-10 w-10 text-base",
|
|
20
|
+
icon: "h-5 w-5"
|
|
21
|
+
}
|
|
22
|
+
}, o = {
|
|
23
|
+
sm: "text-xs",
|
|
24
|
+
md: "text-sm",
|
|
25
|
+
lg: "text-base"
|
|
26
|
+
};
|
|
27
|
+
function s({ state: n, stepIndex: i, size: o, onClick: s }) {
|
|
28
|
+
let c = a[o];
|
|
29
|
+
return /* @__PURE__ */ t("button", {
|
|
30
|
+
type: "button",
|
|
31
|
+
onClick: s,
|
|
32
|
+
disabled: !s,
|
|
33
|
+
"aria-current": n === "active" ? "step" : void 0,
|
|
34
|
+
className: e("pi-stepper__indicator", `pi-stepper__indicator--${n}`, s ? "pi-stepper__indicator--clickable" : "pi-stepper__indicator--static", "flex shrink-0 items-center justify-center rounded-full font-semibold", c.btn, n === "completed" && "bg-primary text-primary-foreground", n === "active" && "bg-primary text-primary-foreground ring-2 ring-primary ring-offset-2", n === "upcoming" && "border-2 border-muted-foreground/40 bg-background text-muted-foreground", s && "cursor-pointer hover:opacity-80", !s && "cursor-default"),
|
|
35
|
+
children: n === "completed" ? /* @__PURE__ */ t(r, {
|
|
36
|
+
className: e("pi-stepper__indicator-icon", c.icon),
|
|
37
|
+
strokeWidth: 2.5
|
|
38
|
+
}) : /* @__PURE__ */ t("span", {
|
|
39
|
+
className: "pi-stepper__indicator-label",
|
|
40
|
+
children: i + 1
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function c({ step: r, state: i, size: a, vertical: s = !1 }) {
|
|
45
|
+
return r.labelNode == null ? /* @__PURE__ */ n("div", {
|
|
46
|
+
className: e("pi-stepper__label", `pi-stepper__label--${i}`, s && "pi-stepper__label--vertical", s ? "ml-4" : "mt-2 text-center", !s && "max-w-[96px]"),
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ n("p", {
|
|
49
|
+
className: e("pi-stepper__label-title", `pi-stepper__label-title--${i}`, o[a], "font-medium leading-tight", i === "upcoming" ? "text-muted-foreground" : "text-foreground", s && "leading-none"),
|
|
50
|
+
children: [r.title, s && r.optional && /* @__PURE__ */ t("span", {
|
|
51
|
+
className: "pi-stepper__label-optional ml-1 text-xs font-normal text-muted-foreground",
|
|
52
|
+
children: "(Optional)"
|
|
53
|
+
})]
|
|
54
|
+
}),
|
|
55
|
+
!s && r.optional && /* @__PURE__ */ t("p", {
|
|
56
|
+
className: "pi-stepper__label-optional text-xs font-normal text-muted-foreground",
|
|
57
|
+
children: "Optional"
|
|
58
|
+
}),
|
|
59
|
+
r.description && /* @__PURE__ */ t("p", {
|
|
60
|
+
className: "pi-stepper__label-description mt-0.5 text-xs text-muted-foreground",
|
|
61
|
+
children: r.description
|
|
62
|
+
})
|
|
63
|
+
]
|
|
64
|
+
}) : /* @__PURE__ */ t("div", {
|
|
65
|
+
className: e("pi-stepper__label-card", `pi-stepper__label-card--${i}`, s && "pi-stepper__label-card--vertical", s ? "ml-4" : "mt-2 text-center"),
|
|
66
|
+
children: r.labelNode
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function l({ steps: r, activeStep: a, size: o = "md", className: l, onStepClick: u }) {
|
|
70
|
+
return /* @__PURE__ */ t("ol", {
|
|
71
|
+
"aria-label": "Steps",
|
|
72
|
+
className: e("pi-stepper pi-stepper--horizontal", `pi-stepper--${o}`, "flex w-full items-start", l),
|
|
73
|
+
children: r.map((l, d) => {
|
|
74
|
+
let f = i(d, a), p = d === 0, m = d === r.length - 1, h = !p && i(d - 1, a) === "completed", g = !m && f === "completed";
|
|
75
|
+
return /* @__PURE__ */ n("li", {
|
|
76
|
+
className: e("pi-stepper__step", `pi-stepper__step--${f}`, p && "pi-stepper__step--first", m && "pi-stepper__step--last", "flex flex-1 flex-col items-center"),
|
|
77
|
+
children: [/* @__PURE__ */ n("div", {
|
|
78
|
+
className: "flex w-full items-center",
|
|
79
|
+
children: [
|
|
80
|
+
p ? /* @__PURE__ */ t("div", {
|
|
81
|
+
className: "flex-1",
|
|
82
|
+
"aria-hidden": "true"
|
|
83
|
+
}) : /* @__PURE__ */ t("div", { className: e("pi-stepper__connector pi-stepper__connector--left", h ? "pi-stepper__connector--completed" : "pi-stepper__connector--upcoming", "h-0.5 flex-1 transition-colors duration-300", h ? "bg-primary" : "bg-border") }),
|
|
84
|
+
/* @__PURE__ */ t(s, {
|
|
85
|
+
state: f,
|
|
86
|
+
stepIndex: d,
|
|
87
|
+
size: o,
|
|
88
|
+
onClick: u ? () => u(d, l.id) : void 0
|
|
89
|
+
}),
|
|
90
|
+
m ? /* @__PURE__ */ t("div", {
|
|
91
|
+
className: "flex-1",
|
|
92
|
+
"aria-hidden": "true"
|
|
93
|
+
}) : /* @__PURE__ */ t("div", { className: e("pi-stepper__connector pi-stepper__connector--right", g ? "pi-stepper__connector--completed" : "pi-stepper__connector--upcoming", "h-0.5 flex-1 transition-colors duration-300", g ? "bg-primary" : "bg-border") })
|
|
94
|
+
]
|
|
95
|
+
}), /* @__PURE__ */ t(c, {
|
|
96
|
+
step: l,
|
|
97
|
+
state: f,
|
|
98
|
+
size: o,
|
|
99
|
+
vertical: !1
|
|
100
|
+
})]
|
|
101
|
+
}, l.id);
|
|
102
|
+
})
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function u({ steps: r, activeStep: a, size: o = "md", className: l, onStepClick: u, renderStepContent: d }) {
|
|
106
|
+
return /* @__PURE__ */ t("ol", {
|
|
107
|
+
className: e("pi-stepper pi-stepper--vertical", `pi-stepper--${o}`, "flex flex-col", l),
|
|
108
|
+
children: r.map((l, f) => {
|
|
109
|
+
let p = i(f, a), m = f === 0, h = f === r.length - 1, g = p === "active" && d ? d(f, l) : null;
|
|
110
|
+
return /* @__PURE__ */ n("li", {
|
|
111
|
+
className: e("pi-stepper__step", `pi-stepper__step--${p}`, m && "pi-stepper__step--first", h && "pi-stepper__step--last", "flex"),
|
|
112
|
+
children: [/* @__PURE__ */ n("div", {
|
|
113
|
+
className: "flex flex-col items-center",
|
|
114
|
+
children: [/* @__PURE__ */ t(s, {
|
|
115
|
+
state: p,
|
|
116
|
+
stepIndex: f,
|
|
117
|
+
size: o,
|
|
118
|
+
onClick: u ? () => u(f, l.id) : void 0
|
|
119
|
+
}), !h && /* @__PURE__ */ t("div", {
|
|
120
|
+
className: e("pi-stepper__connector pi-stepper__connector--vertical", p === "completed" ? "pi-stepper__connector--completed" : "pi-stepper__connector--upcoming", "mb-1 mt-1 w-0.5 flex-1 transition-colors duration-300", p === "completed" ? "bg-primary" : "bg-border"),
|
|
121
|
+
style: { minHeight: "24px" }
|
|
122
|
+
})]
|
|
123
|
+
}), /* @__PURE__ */ n("div", {
|
|
124
|
+
className: e("flex-1", !h && "pb-6"),
|
|
125
|
+
children: [/* @__PURE__ */ t(c, {
|
|
126
|
+
step: l,
|
|
127
|
+
state: p,
|
|
128
|
+
size: o,
|
|
129
|
+
vertical: !0
|
|
130
|
+
}), g && /* @__PURE__ */ t("div", {
|
|
131
|
+
className: "pi-stepper__step-content ml-4 mt-3",
|
|
132
|
+
children: g
|
|
133
|
+
})]
|
|
134
|
+
})]
|
|
135
|
+
}, l.id);
|
|
136
|
+
})
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function d(e) {
|
|
140
|
+
return e.orientation === "vertical" ? /* @__PURE__ */ t(u, { ...e }) : /* @__PURE__ */ t(l, { ...e });
|
|
141
|
+
}
|
|
142
|
+
//#endregion
|
|
143
|
+
export { d as StepperUI };
|
|
144
|
+
|
|
145
|
+
//# sourceMappingURL=stepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stepper.js","names":[],"sources":["../../../src/components/ui/stepper.tsx"],"sourcesContent":["/**\n * Stepper UI primitive — shadcn/Tailwind-based, inspired by MUI Joy UI's Stepper.\n *\n * Architecture\n * ───────────\n * • Tailwind classes handle structural / layout / dimension concerns that are\n * difficult to override with plain CSS (flex layout, width/height, spacing).\n * • BEM class names (`pi-stepper`, `pi-stepper__*`, `pi-stepper__*--state`)\n * are applied to every element so consumers can override visual styles\n * (colours, borders, transitions) in `stepper.css` or any downstream sheet.\n * • Default visual styles live in `src/cards/shadcn/stepper/stepper.css`\n * (imported by the Pihanga card component).\n */\nimport * as React from \"react\";\nimport {Check} from \"lucide-react\";\nimport {cn} from \"@/lib/utils\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type StepState = \"completed\" | \"active\" | \"upcoming\";\n\nexport interface StepData {\n id: string;\n title: string;\n description?: string;\n optional?: boolean;\n /**\n * Optional pre-rendered React node to replace the default title/description\n * label. Produced by the Pihanga card component when `labelCard` is set on\n * a `StepItem`; rendered via `<Card cardName={step.labelCard} />` there.\n */\n labelNode?: React.ReactNode;\n}\n\nexport interface StepperUIProps {\n steps: StepData[];\n /** 0-based index of the currently active step */\n activeStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n /** If provided, steps become clickable */\n onStepClick?: (stepIndex: number, stepId: string) => void;\n /** Optional content rendered below the label in vertical-mode active steps */\n renderStepContent?: (stepIndex: number, step: StepData) => React.ReactNode;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\nfunction getStepState(stepIndex: number, activeStep: number): StepState {\n if (stepIndex < activeStep) return \"completed\";\n if (stepIndex === activeStep) return \"active\";\n return \"upcoming\";\n}\n\n// Tailwind dimension classes for the step-indicator button.\n// Kept here so layout always works even without the CSS file loaded.\nconst INDICATOR_SIZE = {\n sm: {btn: \"h-6 w-6 text-xs\", icon: \"h-3 w-3\"},\n md: {btn: \"h-8 w-8 text-sm\", icon: \"h-4 w-4\"},\n lg: {btn: \"h-10 w-10 text-base\", icon: \"h-5 w-5\"},\n} as const;\n\n// Tailwind label font classes — fallback when CSS file is absent.\nconst LABEL_SIZE = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n} as const;\n\n// ─── Indicator button ─────────────────────────────────────────────────────────\n\nfunction IndicatorButton({\n state,\n stepIndex,\n size,\n onClick,\n}: {\n state: StepState;\n stepIndex: number;\n size: \"sm\" | \"md\" | \"lg\";\n onClick?: () => void;\n}) {\n const s = INDICATOR_SIZE[size];\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={!onClick}\n aria-current={state === \"active\" ? \"step\" : undefined}\n className={cn(\n // ── BEM — visual override target ──\n \"pi-stepper__indicator\",\n `pi-stepper__indicator--${state}`,\n onClick\n ? \"pi-stepper__indicator--clickable\"\n : \"pi-stepper__indicator--static\",\n // ── Tailwind — structural defaults (always applied) ──\n \"flex shrink-0 items-center justify-center rounded-full font-semibold\",\n s.btn,\n // Default visual appearance via Tailwind (overridden by stepper.css rules)\n state === \"completed\" && \"bg-primary text-primary-foreground\",\n state === \"active\" &&\n \"bg-primary text-primary-foreground ring-2 ring-primary ring-offset-2\",\n state === \"upcoming\" &&\n \"border-2 border-muted-foreground/40 bg-background text-muted-foreground\",\n onClick && \"cursor-pointer hover:opacity-80\",\n !onClick && \"cursor-default\",\n )}\n >\n {state === \"completed\" ? (\n <Check\n className={cn(\"pi-stepper__indicator-icon\", s.icon)}\n strokeWidth={2.5}\n />\n ) : (\n <span className=\"pi-stepper__indicator-label\">{stepIndex + 1}</span>\n )}\n </button>\n );\n}\n\n// ─── Label ────────────────────────────────────────────────────────────────────\n\nfunction StepLabel({\n step,\n state,\n size,\n vertical = false,\n}: {\n step: StepData;\n state: StepState;\n size: \"sm\" | \"md\" | \"lg\";\n vertical?: boolean;\n}) {\n // Custom card label takes precedence over the default text label.\n if (step.labelNode != null) {\n return (\n <div\n className={cn(\n \"pi-stepper__label-card\",\n `pi-stepper__label-card--${state}`,\n vertical && \"pi-stepper__label-card--vertical\",\n // Tailwind defaults\n vertical ? \"ml-4\" : \"mt-2 text-center\",\n )}\n >\n {step.labelNode}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"pi-stepper__label\",\n `pi-stepper__label--${state}`,\n vertical && \"pi-stepper__label--vertical\",\n // Tailwind defaults\n vertical ? \"ml-4\" : \"mt-2 text-center\",\n !vertical && \"max-w-[96px]\",\n )}\n >\n <p\n className={cn(\n \"pi-stepper__label-title\",\n `pi-stepper__label-title--${state}`,\n // Tailwind defaults\n LABEL_SIZE[size],\n \"font-medium leading-tight\",\n state === \"upcoming\" ? \"text-muted-foreground\" : \"text-foreground\",\n vertical && \"leading-none\",\n )}\n >\n {step.title}\n {vertical && step.optional && (\n <span className=\"pi-stepper__label-optional ml-1 text-xs font-normal text-muted-foreground\">\n (Optional)\n </span>\n )}\n </p>\n\n {!vertical && step.optional && (\n <p className=\"pi-stepper__label-optional text-xs font-normal text-muted-foreground\">\n Optional\n </p>\n )}\n\n {step.description && (\n <p className=\"pi-stepper__label-description mt-0.5 text-xs text-muted-foreground\">\n {step.description}\n </p>\n )}\n </div>\n );\n}\n\n// ─── Horizontal layout ────────────────────────────────────────────────────────\n\nfunction HorizontalStepper({\n steps,\n activeStep,\n size = \"md\",\n className,\n onStepClick,\n}: StepperUIProps) {\n return (\n <ol\n aria-label=\"Steps\"\n className={cn(\n \"pi-stepper pi-stepper--horizontal\",\n `pi-stepper--${size}`,\n \"flex w-full items-start\",\n className,\n )}\n >\n {steps.map((step, index) => {\n const state = getStepState(index, activeStep);\n const isFirst = index === 0;\n const isLast = index === steps.length - 1;\n\n const leftCompleted =\n !isFirst && getStepState(index - 1, activeStep) === \"completed\";\n const rightCompleted = !isLast && state === \"completed\";\n\n return (\n <li\n key={step.id}\n className={cn(\n \"pi-stepper__step\",\n `pi-stepper__step--${state}`,\n isFirst && \"pi-stepper__step--first\",\n isLast && \"pi-stepper__step--last\",\n \"flex flex-1 flex-col items-center\",\n )}\n >\n {/* ── [left-half] [indicator] [right-half] centred row ── */}\n <div className=\"flex w-full items-center\">\n {isFirst ? (\n <div className=\"flex-1\" aria-hidden=\"true\" />\n ) : (\n <div\n className={cn(\n \"pi-stepper__connector pi-stepper__connector--left\",\n leftCompleted\n ? \"pi-stepper__connector--completed\"\n : \"pi-stepper__connector--upcoming\",\n // Tailwind defaults\n \"h-0.5 flex-1 transition-colors duration-300\",\n leftCompleted ? \"bg-primary\" : \"bg-border\",\n )}\n />\n )}\n\n <IndicatorButton\n state={state}\n stepIndex={index}\n size={size}\n onClick={\n onStepClick ? () => onStepClick(index, step.id) : undefined\n }\n />\n\n {isLast ? (\n <div className=\"flex-1\" aria-hidden=\"true\" />\n ) : (\n <div\n className={cn(\n \"pi-stepper__connector pi-stepper__connector--right\",\n rightCompleted\n ? \"pi-stepper__connector--completed\"\n : \"pi-stepper__connector--upcoming\",\n // Tailwind defaults\n \"h-0.5 flex-1 transition-colors duration-300\",\n rightCompleted ? \"bg-primary\" : \"bg-border\",\n )}\n />\n )}\n </div>\n\n <StepLabel step={step} state={state} size={size} vertical={false} />\n </li>\n );\n })}\n </ol>\n );\n}\n\n// ─── Vertical layout ──────────────────────────────────────────────────────────\n\nfunction VerticalStepper({\n steps,\n activeStep,\n size = \"md\",\n className,\n onStepClick,\n renderStepContent,\n}: StepperUIProps) {\n return (\n <ol\n className={cn(\n \"pi-stepper pi-stepper--vertical\",\n `pi-stepper--${size}`,\n \"flex flex-col\",\n className,\n )}\n >\n {steps.map((step, index) => {\n const state = getStepState(index, activeStep);\n const isFirst = index === 0;\n const isLast = index === steps.length - 1;\n const content =\n state === \"active\" && renderStepContent\n ? renderStepContent(index, step)\n : null;\n\n return (\n <li\n key={step.id}\n className={cn(\n \"pi-stepper__step\",\n `pi-stepper__step--${state}`,\n isFirst && \"pi-stepper__step--first\",\n isLast && \"pi-stepper__step--last\",\n \"flex\",\n )}\n >\n {/* Left col: indicator + connector */}\n <div className=\"flex flex-col items-center\">\n <IndicatorButton\n state={state}\n stepIndex={index}\n size={size}\n onClick={\n onStepClick ? () => onStepClick(index, step.id) : undefined\n }\n />\n {!isLast && (\n <div\n className={cn(\n \"pi-stepper__connector pi-stepper__connector--vertical\",\n state === \"completed\"\n ? \"pi-stepper__connector--completed\"\n : \"pi-stepper__connector--upcoming\",\n // Tailwind defaults\n \"mb-1 mt-1 w-0.5 flex-1 transition-colors duration-300\",\n state === \"completed\" ? \"bg-primary\" : \"bg-border\",\n )}\n style={{minHeight: \"24px\"}}\n />\n )}\n </div>\n\n {/* Right col: label + content */}\n <div className={cn(\"flex-1\", !isLast && \"pb-6\")}>\n <StepLabel\n step={step}\n state={state}\n size={size}\n vertical={true}\n />\n {content && (\n <div className=\"pi-stepper__step-content ml-4 mt-3\">\n {content}\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n\n// ─── Public export ────────────────────────────────────────────────────────────\n\nexport function StepperUI(props: StepperUIProps) {\n return props.orientation === \"vertical\" ? (\n <VerticalStepper {...props} />\n ) : (\n <HorizontalStepper {...props} />\n );\n}\n"],"mappings":";;;;;AAiDA,SAAS,EAAa,GAAmB,GAA+B;CAGtE,OAFI,IAAY,IAAmB,cAC/B,MAAc,IAAmB,WAC9B;AACT;AAIA,IAAM,IAAiB;CACrB,IAAI;EAAC,KAAK;EAAmB,MAAM;CAAS;CAC5C,IAAI;EAAC,KAAK;EAAmB,MAAM;CAAS;CAC5C,IAAI;EAAC,KAAK;EAAuB,MAAM;CAAS;AAClD,GAGM,IAAa;CACjB,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAIA,SAAS,EAAgB,EACvB,UACA,cACA,SACA,cAMC;CACD,IAAM,IAAI,EAAe;CACzB,OACE,kBAAC,UAAD;EACE,MAAK;EACI;EACT,UAAU,CAAC;EACX,gBAAc,MAAU,WAAW,SAAS,KAAA;EAC5C,WAAW,EAET,yBACA,0BAA0B,KAC1B,IACI,qCACA,iCAEJ,wEACA,EAAE,KAEF,MAAU,eAAe,sCACzB,MAAU,YACR,wEACF,MAAU,cACR,2EACF,KAAW,mCACX,CAAC,KAAW,gBACd;YAEC,MAAU,cACT,kBAAC,GAAD;GACE,WAAW,EAAG,8BAA8B,EAAE,IAAI;GAClD,aAAa;EACd,CAAA,IAED,kBAAC,QAAD;GAAM,WAAU;aAA+B,IAAY;EAAQ,CAAA;CAE/D,CAAA;AAEZ;AAIA,SAAS,EAAU,EACjB,SACA,UACA,SACA,cAAW,MAMV;CAkBD,OAhBI,EAAK,aAAa,OAiBpB,kBAAC,OAAD;EACE,WAAW,EACT,qBACA,sBAAsB,KACtB,KAAY,+BAEZ,IAAW,SAAS,oBACpB,CAAC,KAAY,cACf;YARF;GAUE,kBAAC,KAAD;IACE,WAAW,EACT,2BACA,4BAA4B,KAE5B,EAAW,IACX,6BACA,MAAU,aAAa,0BAA0B,mBACjD,KAAY,cACd;cATF,CAWG,EAAK,OACL,KAAY,EAAK,YAChB,kBAAC,QAAD;KAAM,WAAU;eAA4E;IAEtF,CAAA,CAEP;;GAEF,CAAC,KAAY,EAAK,YACjB,kBAAC,KAAD;IAAG,WAAU;cAAuE;GAEjF,CAAA;GAGJ,EAAK,eACJ,kBAAC,KAAD;IAAG,WAAU;cACV,EAAK;GACL,CAAA;EAEF;MAvDH,kBAAC,OAAD;EACE,WAAW,EACT,0BACA,2BAA2B,KAC3B,KAAY,oCAEZ,IAAW,SAAS,kBACtB;YAEC,EAAK;CACH,CAAA;AA+CX;AAIA,SAAS,EAAkB,EACzB,UACA,eACA,UAAO,MACP,cACA,kBACiB;CACjB,OACE,kBAAC,MAAD;EACE,cAAW;EACX,WAAW,EACT,qCACA,eAAe,KACf,2BACA,CACF;YAEC,EAAM,KAAK,GAAM,MAAU;GAC1B,IAAM,IAAQ,EAAa,GAAO,CAAU,GACtC,IAAU,MAAU,GACpB,IAAS,MAAU,EAAM,SAAS,GAElC,IACJ,CAAC,KAAW,EAAa,IAAQ,GAAG,CAAU,MAAM,aAChD,IAAiB,CAAC,KAAU,MAAU;GAE5C,OACE,kBAAC,MAAD;IAEE,WAAW,EACT,oBACA,qBAAqB,KACrB,KAAW,2BACX,KAAU,0BACV,mCACF;cARF,CAWE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACG,IACC,kBAAC,OAAD;OAAK,WAAU;OAAS,eAAY;MAAQ,CAAA,IAE5C,kBAAC,OAAD,EACE,WAAW,EACT,qDACA,IACI,qCACA,mCAEJ,+CACA,IAAgB,eAAe,WACjC,EACD,CAAA;MAGH,kBAAC,GAAD;OACS;OACP,WAAW;OACL;OACN,SACE,UAAoB,EAAY,GAAO,EAAK,EAAE,IAAI,KAAA;MAErD,CAAA;MAEA,IACC,kBAAC,OAAD;OAAK,WAAU;OAAS,eAAY;MAAQ,CAAA,IAE5C,kBAAC,OAAD,EACE,WAAW,EACT,sDACA,IACI,qCACA,mCAEJ,+CACA,IAAiB,eAAe,WAClC,EACD,CAAA;KAEA;QAEL,kBAAC,GAAD;KAAiB;KAAa;KAAa;KAAM,UAAU;IAAQ,CAAA,CACjE;MAtDG,EAAK,EAsDR;EAER,CAAC;CACC,CAAA;AAER;AAIA,SAAS,EAAgB,EACvB,UACA,eACA,UAAO,MACP,cACA,gBACA,wBACiB;CACjB,OACE,kBAAC,MAAD;EACE,WAAW,EACT,mCACA,eAAe,KACf,iBACA,CACF;YAEC,EAAM,KAAK,GAAM,MAAU;GAC1B,IAAM,IAAQ,EAAa,GAAO,CAAU,GACtC,IAAU,MAAU,GACpB,IAAS,MAAU,EAAM,SAAS,GAClC,IACJ,MAAU,YAAY,IAClB,EAAkB,GAAO,CAAI,IAC7B;GAEN,OACE,kBAAC,MAAD;IAEE,WAAW,EACT,oBACA,qBAAqB,KACrB,KAAW,2BACX,KAAU,0BACV,MACF;cARF,CAWE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MACS;MACP,WAAW;MACL;MACN,SACE,UAAoB,EAAY,GAAO,EAAK,EAAE,IAAI,KAAA;KAErD,CAAA,GACA,CAAC,KACA,kBAAC,OAAD;MACE,WAAW,EACT,yDACA,MAAU,cACN,qCACA,mCAEJ,yDACA,MAAU,cAAc,eAAe,WACzC;MACA,OAAO,EAAC,WAAW,OAAM;KAC1B,CAAA,CAEA;QAGL,kBAAC,OAAD;KAAK,WAAW,EAAG,UAAU,CAAC,KAAU,MAAM;eAA9C,CACE,kBAAC,GAAD;MACQ;MACC;MACD;MACN,UAAU;KACX,CAAA,GACA,KACC,kBAAC,OAAD;MAAK,WAAU;gBACZ;KACE,CAAA,CAEJ;MACH;MAjDG,EAAK,EAiDR;EAER,CAAC;CACC,CAAA;AAER;AAIA,SAAgB,EAAU,GAAuB;CAC/C,OAAO,EAAM,gBAAgB,aAC3B,kBAAC,GAAD,EAAiB,GAAI,EAAQ,CAAA,IAE7B,kBAAC,GAAD,EAAmB,GAAI,EAAQ,CAAA;AAEnC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { cn as e } from "../lib/utils.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
import * as n from "@radix-ui/react-switch";
|
|
5
|
+
//#region src/components/ui/switch.tsx
|
|
6
|
+
function r({ className: r, ...i }) {
|
|
7
|
+
return /* @__PURE__ */ t(n.Root, {
|
|
8
|
+
"data-slot": "switch",
|
|
9
|
+
className: e("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", "focus-visible:border-ring focus-visible:ring-ring/50", "dark:data-[state=unchecked]:bg-input/80", "inline-flex h-5 w-9 shrink-0 items-center rounded-full", "border-2 border-transparent shadow-xs transition-all outline-none", "focus-visible:ring-[3px]", "disabled:cursor-not-allowed disabled:opacity-50", r),
|
|
10
|
+
...i,
|
|
11
|
+
children: /* @__PURE__ */ t(n.Thumb, {
|
|
12
|
+
"data-slot": "switch-thumb",
|
|
13
|
+
className: e("bg-background dark:data-[state=unchecked]:bg-foreground", "dark:data-[state=checked]:bg-primary-foreground", "pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform", "data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")
|
|
14
|
+
})
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { r as Switch };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","names":[],"sources":["../../../src/components/ui/switch.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport {cn} from \"@/components/lib/utils\";\n\nfunction Switch({\n className,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n \"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n \"focus-visible:border-ring focus-visible:ring-ring/50\",\n \"dark:data-[state=unchecked]:bg-input/80\",\n \"inline-flex h-5 w-9 shrink-0 items-center rounded-full\",\n \"border-2 border-transparent shadow-xs transition-all outline-none\",\n \"focus-visible:ring-[3px]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n \"bg-background dark:data-[state=unchecked]:bg-foreground\",\n \"dark:data-[state=checked]:bg-primary-foreground\",\n \"pointer-events-none block size-4 rounded-full ring-0 shadow-lg transition-transform\",\n \"data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n )}\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport {Switch};\n"],"mappings":";;;;;AAKA,SAAS,EAAO,EACd,cACA,GAAG,KACiD;CACpD,OACE,kBAAC,EAAgB,MAAjB;EACE,aAAU;EACV,WAAW,EACT,wEACA,wDACA,2CACA,0DACA,qEACA,4BACA,mDACA,CACF;EACA,GAAI;YAEJ,kBAAC,EAAgB,OAAjB;GACE,aAAU;GACV,WAAW,EACT,2DACA,mDACA,uFACA,yEACF;EACD,CAAA;CACmB,CAAA;AAE1B"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { cn as e } from "../../lib/utils.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/ui/table.tsx
|
|
5
|
+
function n({ className: n, ...r }) {
|
|
6
|
+
return /* @__PURE__ */ t("div", {
|
|
7
|
+
"data-slot": "table-container",
|
|
8
|
+
className: "relative w-full overflow-x-auto",
|
|
9
|
+
children: /* @__PURE__ */ t("table", {
|
|
10
|
+
"data-slot": "table",
|
|
11
|
+
className: e("w-full caption-bottom text-sm", n),
|
|
12
|
+
...r
|
|
13
|
+
})
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function r({ className: n, ...r }) {
|
|
17
|
+
return /* @__PURE__ */ t("thead", {
|
|
18
|
+
"data-slot": "table-header",
|
|
19
|
+
className: e("[&_tr]:border-b", n),
|
|
20
|
+
...r
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function i({ className: n, ...r }) {
|
|
24
|
+
return /* @__PURE__ */ t("tbody", {
|
|
25
|
+
"data-slot": "table-body",
|
|
26
|
+
className: e("[&_tr:last-child]:border-0", n),
|
|
27
|
+
...r
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function a({ className: n, ...r }) {
|
|
31
|
+
return /* @__PURE__ */ t("tr", {
|
|
32
|
+
"data-slot": "table-row",
|
|
33
|
+
className: e("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", n),
|
|
34
|
+
...r
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function o({ className: n, ...r }) {
|
|
38
|
+
return /* @__PURE__ */ t("th", {
|
|
39
|
+
"data-slot": "table-head",
|
|
40
|
+
className: e("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", n),
|
|
41
|
+
...r
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function s({ className: n, ...r }) {
|
|
45
|
+
return /* @__PURE__ */ t("td", {
|
|
46
|
+
"data-slot": "table-cell",
|
|
47
|
+
className: e("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", n),
|
|
48
|
+
...r
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function c({ className: n, ...r }) {
|
|
52
|
+
return /* @__PURE__ */ t("caption", {
|
|
53
|
+
"data-slot": "table-caption",
|
|
54
|
+
className: e("mt-4 text-sm text-muted-foreground", n),
|
|
55
|
+
...r
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { n as Table, i as TableBody, c as TableCaption, s as TableCell, o as TableHead, r as TableHeader, a as TableRow };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","names":[],"sources":["../../../src/components/ui/table.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n"],"mappings":";;;;AAIA,SAAS,EAAM,EAAE,cAAW,GAAG,KAAwC;CACrE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAU;YAEV,kBAAC,SAAD;GACE,aAAU;GACV,WAAW,EAAG,iCAAiC,CAAS;GACxD,GAAI;EACL,CAAA;CACE,CAAA;AAET;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAwC;CAC3E,OACE,kBAAC,SAAD;EACE,aAAU;EACV,WAAW,EAAG,mBAAmB,CAAS;EAC1C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAwC;CACzE,OACE,kBAAC,SAAD;EACE,aAAU;EACV,WAAW,EAAG,8BAA8B,CAAS;EACrD,GAAI;CACL,CAAA;AAEL;AAeA,SAAS,EAAS,EAAE,cAAW,GAAG,KAAqC;CACrE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EACT,6GACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAqC;CACtE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EACT,sJACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAqC;CACtE,OACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EACT,0GACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAa,EACpB,cACA,GAAG,KAC+B;CAClC,OACE,kBAAC,WAAD;EACE,aAAU;EACV,WAAW,EAAG,sCAAsC,CAAS;EAC7D,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { cn as e } from "../lib/utils.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
import * as n from "@radix-ui/react-tabs";
|
|
5
|
+
//#region src/components/ui/tabs.tsx
|
|
6
|
+
function r({ className: r, orientation: i, ...a }) {
|
|
7
|
+
return /* @__PURE__ */ t(n.Root, {
|
|
8
|
+
"data-slot": "tabs",
|
|
9
|
+
orientation: i,
|
|
10
|
+
className: e("flex gap-2", i === "vertical" ? "flex-row" : "flex-col", r),
|
|
11
|
+
...a
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function i({ className: r, ...i }) {
|
|
15
|
+
return /* @__PURE__ */ t(n.List, {
|
|
16
|
+
"data-slot": "tabs-list",
|
|
17
|
+
className: e("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", "data-[orientation=vertical]:flex-col data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-auto", r),
|
|
18
|
+
...i
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function a({ className: r, ...i }) {
|
|
22
|
+
return /* @__PURE__ */ t(n.Trigger, {
|
|
23
|
+
"data-slot": "tabs-trigger",
|
|
24
|
+
className: e("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start", r),
|
|
25
|
+
...i
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function o({ className: r, ...i }) {
|
|
29
|
+
return /* @__PURE__ */ t(n.Content, {
|
|
30
|
+
"data-slot": "tabs-content",
|
|
31
|
+
className: e("flex-1 outline-none", r),
|
|
32
|
+
...i
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { r as Tabs, o as TabsContent, i as TabsList, a as TabsTrigger };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/ui/tabs.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport {cn} from \"@/components/lib/utils\";\n\nfunction Tabs({\n className,\n orientation,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\n \"flex gap-2\",\n orientation === \"vertical\" ? \"flex-row\" : \"flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-full data-[orientation=vertical]:justify-start\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport {Tabs, TabsList, TabsTrigger, TabsContent};\n"],"mappings":";;;;;AAKA,SAAS,EAAK,EACZ,cACA,gBACA,GAAG,KAC+C;CAClD,OACE,kBAAC,EAAc,MAAf;EACE,aAAU;EACG;EACb,WAAW,EACT,cACA,MAAgB,aAAa,aAAa,YAC1C,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAS,EAChB,cACA,GAAG,KAC+C;CAClD,OACE,kBAAC,EAAc,MAAf;EACE,aAAU;EACV,WAAW,EACT,uGACA,8GACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EACnB,cACA,GAAG,KACkD;CACrD,OACE,kBAAC,EAAc,SAAf;EACE,aAAU;EACV,WAAW,EACT,mqBACA,mHACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EACnB,cACA,GAAG,KACkD;CACrD,OACE,kBAAC,EAAc,SAAf;EACE,aAAU;EACV,WAAW,EAAG,uBAAuB,CAAS;EAC9C,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../../lib/utils.js";
|
|
3
|
+
import { toggleVariants as t } from "./toggle.js";
|
|
4
|
+
import * as n from "react";
|
|
5
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
6
|
+
import { ToggleGroup as i } from "radix-ui";
|
|
7
|
+
//#region src/components/ui/toggle-group.tsx
|
|
8
|
+
var a = n.createContext({
|
|
9
|
+
size: "default",
|
|
10
|
+
variant: "default",
|
|
11
|
+
spacing: 0
|
|
12
|
+
});
|
|
13
|
+
function o({ className: t, variant: n, size: o, spacing: s = 0, children: c, ...l }) {
|
|
14
|
+
return /* @__PURE__ */ r(i.Root, {
|
|
15
|
+
"data-slot": "toggle-group",
|
|
16
|
+
"data-variant": n,
|
|
17
|
+
"data-size": o,
|
|
18
|
+
"data-spacing": s,
|
|
19
|
+
style: { "--gap": s },
|
|
20
|
+
className: e("group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs", t),
|
|
21
|
+
...l,
|
|
22
|
+
children: /* @__PURE__ */ r(a.Provider, {
|
|
23
|
+
value: {
|
|
24
|
+
variant: n,
|
|
25
|
+
size: o,
|
|
26
|
+
spacing: s
|
|
27
|
+
},
|
|
28
|
+
children: c
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function s({ className: o, children: s, variant: c, size: l, ...u }) {
|
|
33
|
+
let d = n.useContext(a);
|
|
34
|
+
return /* @__PURE__ */ r(i.Item, {
|
|
35
|
+
"data-slot": "toggle-group-item",
|
|
36
|
+
"data-variant": d.variant || c,
|
|
37
|
+
"data-size": d.size || l,
|
|
38
|
+
"data-spacing": d.spacing,
|
|
39
|
+
className: e(t({
|
|
40
|
+
variant: d.variant || c,
|
|
41
|
+
size: d.size || l
|
|
42
|
+
}), "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10", "data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l", o),
|
|
43
|
+
...u,
|
|
44
|
+
children: s
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { o as ToggleGroup, s as ToggleGroupItem };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=toggle-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle-group.js","names":[],"sources":["../../../src/components/ui/toggle-group.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { type VariantProps } from \"class-variance-authority\"\nimport { ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n})\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number\n }) {\n return (\n <ToggleGroupPrimitive.Root\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n \"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n"],"mappings":";;;;;;;AASA,IAAM,IAAqB,EAAM,cAI/B;CACA,MAAM;CACN,SAAS;CACT,SAAS;AACX,CAAC;AAED,SAAS,EAAY,EACnB,cACA,YACA,SACA,aAAU,GACV,aACA,GAAG,KAIA;CACH,OACE,kBAAC,EAAqB,MAAtB;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,gBAAc;EACd,OAAO,EAAE,SAAS,EAAQ;EAC1B,WAAW,EACT,6IACA,CACF;EACA,GAAI;YAEJ,kBAAC,EAAmB,UAApB;GAA6B,OAAO;IAAE;IAAS;IAAM;GAAQ;GAC1D;EAC0B,CAAA;CACJ,CAAA;AAE/B;AAEA,SAAS,EAAgB,EACvB,cACA,aACA,YACA,SACA,GAAG,KAEkC;CACrC,IAAM,IAAU,EAAM,WAAW,CAAkB;CAEnD,OACE,kBAAC,EAAqB,MAAtB;EACE,aAAU;EACV,gBAAc,EAAQ,WAAW;EACjC,aAAW,EAAQ,QAAQ;EAC3B,gBAAc,EAAQ;EACtB,WAAW,EACT,EAAe;GACb,SAAS,EAAQ,WAAW;GAC5B,MAAM,EAAQ,QAAQ;EACxB,CAAC,GACD,8DACA,+OACA,CACF;EACA,GAAI;EAEH;CACwB,CAAA;AAE/B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "../../lib/utils.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { cva as e } from "class-variance-authority";
|
|
4
|
+
import "react/jsx-runtime";
|
|
5
|
+
import "radix-ui";
|
|
6
|
+
//#region src/components/ui/toggle.tsx
|
|
7
|
+
var t = e("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default: "bg-transparent",
|
|
11
|
+
outline: "border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground"
|
|
12
|
+
},
|
|
13
|
+
size: {
|
|
14
|
+
default: "h-9 min-w-9 px-2",
|
|
15
|
+
sm: "h-8 min-w-8 px-1.5",
|
|
16
|
+
lg: "h-10 min-w-10 px-2.5"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default",
|
|
21
|
+
size: "default"
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
//#endregion
|
|
25
|
+
export { t as toggleVariants };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle.js","names":[],"sources":["../../../src/components/ui/toggle.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 min-w-9 px-2\",\n sm: \"h-8 min-w-8 px-1.5\",\n lg: \"h-10 min-w-10 px-2.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive.Root\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Toggle, toggleVariants }\n"],"mappings":";;;;;;AAMA,IAAM,IAAiB,EACrB,ijBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SACE;EACJ;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn as e } from "../lib/utils.js";
|
|
3
|
+
import "react";
|
|
4
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
5
|
+
import * as r from "@radix-ui/react-tooltip";
|
|
6
|
+
//#region src/components/ui/tooltip.tsx
|
|
7
|
+
function i({ delayDuration: e = 0, ...n }) {
|
|
8
|
+
return /* @__PURE__ */ t(r.Provider, {
|
|
9
|
+
"data-slot": "tooltip-provider",
|
|
10
|
+
delayDuration: e,
|
|
11
|
+
...n
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function a({ ...e }) {
|
|
15
|
+
return /* @__PURE__ */ t(i, { children: /* @__PURE__ */ t(r.Root, {
|
|
16
|
+
"data-slot": "tooltip",
|
|
17
|
+
...e
|
|
18
|
+
}) });
|
|
19
|
+
}
|
|
20
|
+
function o({ ...e }) {
|
|
21
|
+
return /* @__PURE__ */ t(r.Trigger, {
|
|
22
|
+
"data-slot": "tooltip-trigger",
|
|
23
|
+
...e
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function s({ className: i, sideOffset: a = 0, children: o, ...s }) {
|
|
27
|
+
return /* @__PURE__ */ t(r.Portal, { children: /* @__PURE__ */ n(r.Content, {
|
|
28
|
+
"data-slot": "tooltip-content",
|
|
29
|
+
sideOffset: a,
|
|
30
|
+
className: e("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", i),
|
|
31
|
+
...s,
|
|
32
|
+
children: [o, /* @__PURE__ */ t(r.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
|
|
33
|
+
}) });
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { a as Tooltip, s as TooltipContent, i as TooltipProvider, o as TooltipTrigger };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","names":[],"sources":["../../../src/components/ui/tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport {cn} from \"@/components/lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport {Tooltip, TooltipTrigger, TooltipContent, TooltipProvider};\n"],"mappings":";;;;;;AAOA,SAAS,EAAgB,EACvB,mBAAgB,GAChB,GAAG,KACsD;CACzD,OACE,kBAAC,EAAiB,UAAlB;EACE,aAAU;EACK;EACf,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAQ,EACf,GAAG,KACkD;CACrD,OACE,kBAAC,GAAD,EAAA,UACE,kBAAC,EAAiB,MAAlB;EAAuB,aAAU;EAAU,GAAI;CAAQ,CAAA,EACxC,CAAA;AAErB;AAEA,SAAS,EAAe,EACtB,GAAG,KACqD;CACxD,OAAO,kBAAC,EAAiB,SAAlB;EAA0B,aAAU;EAAkB,GAAI;CAAQ,CAAA;AAC3E;AAEA,SAAS,EAAe,EACtB,cACA,gBAAa,GACb,aACA,GAAG,KACqD;CACxD,OACE,kBAAC,EAAiB,QAAlB,EAAA,UACE,kBAAC,EAAiB,SAAlB;EACE,aAAU;EACE;EACZ,WAAW,EACT,0aACA,CACF;EACA,GAAI;YAPN,CASG,GACD,kBAAC,EAAiB,OAAlB,EAAwB,WAAU,+FAAgG,CAAA,CAC1G;IACH,CAAA;AAE7B"}
|
package/lib/utils.d.ts
ADDED
package/lib/utils.js
ADDED
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../../src/lib/utils.ts"],"sourcesContent":["import {clsx, type ClassValue} from \"clsx\";\nimport {twMerge} from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;AAGA,SAAgB,EAAG,GAAG,GAAsB;CAC1C,OAAO,EAAQ,EAAK,CAAM,CAAC;AAC7B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#6366f1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="m8 3 4 8 5-5 5 15H2L8 3z"/>
|
|
3
|
+
<path d="M4.14 15.08c2.62-1.57 5.24-1.43 7.86.42 2.74 1.94 5.49 2 8.23.19"/>
|
|
4
|
+
</svg>
|