@contractspec/lib.ui-kit-web 1.61.0 → 1.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/ui/alert-dialog.js +9 -4
- package/dist/browser/ui/atoms/Pagination/Pagination.js +9 -4
- package/dist/browser/ui/atoms/Pagination/index.js +9 -4
- package/dist/browser/ui/atoms/SearchInput/SearchInput.js +9 -4
- package/dist/browser/ui/atoms/SearchInput/index.js +9 -4
- package/dist/browser/ui/button.js +9 -4
- package/dist/browser/ui/calendar.js +12 -7
- package/dist/browser/ui/carousel.js +20 -15
- package/dist/browser/ui/confirm-dialog.js +9 -4
- package/dist/browser/ui/context-menu.js +178 -85
- package/dist/browser/ui/cta.js +13 -9
- package/dist/browser/ui/date-picker.js +17 -12
- package/dist/browser/ui/date-range-picker.js +14 -9
- package/dist/browser/ui/datetime-picker.js +21 -16
- package/dist/browser/ui/empty-state.js +32 -10
- package/dist/browser/ui/input-group.js +9 -4
- package/dist/browser/ui/input-otp.js +37 -18
- package/dist/browser/ui/link.js +6 -4
- package/dist/browser/ui/loading-button.js +41 -14
- package/dist/browser/ui/marketing/Hero.js +9 -4
- package/dist/browser/ui/marketing/PricingTable.js +9 -4
- package/dist/browser/ui/marketing/index.js +9 -4
- package/dist/browser/ui/molecules/Autocomplete/index.js +15 -10
- package/dist/browser/ui/molecules/SearchAndFilter/SearchAndFilter.js +9 -4
- package/dist/browser/ui/molecules/SearchAndFilter/index.js +9 -4
- package/dist/browser/ui/organisms/ErrorBoundary/ErrorBoundary.js +12 -7
- package/dist/browser/ui/organisms/ErrorBoundary/index.js +12 -7
- package/dist/browser/ui/organisms/ListPage/ListPage.js +41 -14
- package/dist/browser/ui/organisms/ListPage/index.js +41 -14
- package/dist/browser/ui/page-header.js +32 -10
- package/dist/browser/ui/pagination.js +98 -79
- package/dist/browser/ui/resizable.js +6 -9
- package/dist/browser/ui/section.js +12 -4
- package/dist/browser/ui/sidebar.js +22 -17
- package/dist/browser/ui/stack.js +32 -10
- package/dist/browser/ui/stat-card-group.js +32 -10
- package/dist/browser/ui/stepper.js +32 -10
- package/dist/browser/ui/time-picker.js +13 -8
- package/dist/browser/ui/toast.js +57 -29
- package/dist/browser/ui/toaster.js +60 -32
- package/dist/browser/ui/usecases/UseCaseCard.js +41 -14
- package/dist/browser/ui/usecases/UserStoryCard.js +32 -10
- package/dist/browser/ui/usecases/index.js +41 -14
- package/dist/browser/ui/visually-hidden.js +8 -4
- package/dist/ui/alert-dialog.js +9 -4
- package/dist/ui/atoms/Pagination/Pagination.js +9 -4
- package/dist/ui/atoms/Pagination/index.js +9 -4
- package/dist/ui/atoms/SearchInput/SearchInput.js +9 -4
- package/dist/ui/atoms/SearchInput/index.js +9 -4
- package/dist/ui/button.d.ts +2 -6
- package/dist/ui/button.d.ts.map +1 -1
- package/dist/ui/button.js +9 -4
- package/dist/ui/calendar.js +12 -7
- package/dist/ui/carousel.js +20 -15
- package/dist/ui/confirm-dialog.js +9 -4
- package/dist/ui/context-menu.d.ts +26 -22
- package/dist/ui/context-menu.d.ts.map +1 -1
- package/dist/ui/context-menu.js +178 -85
- package/dist/ui/cta.d.ts +2 -8
- package/dist/ui/cta.d.ts.map +1 -1
- package/dist/ui/cta.js +13 -9
- package/dist/ui/date-picker.js +17 -12
- package/dist/ui/date-range-picker.js +14 -9
- package/dist/ui/datetime-picker.js +21 -16
- package/dist/ui/empty-state.js +32 -10
- package/dist/ui/input-group.js +9 -4
- package/dist/ui/input-otp.d.ts +13 -31
- package/dist/ui/input-otp.d.ts.map +1 -1
- package/dist/ui/input-otp.js +37 -18
- package/dist/ui/link.d.ts +4 -2
- package/dist/ui/link.d.ts.map +1 -1
- package/dist/ui/link.js +6 -4
- package/dist/ui/loading-button.js +41 -14
- package/dist/ui/marketing/Hero.js +9 -4
- package/dist/ui/marketing/PricingTable.js +9 -4
- package/dist/ui/marketing/index.js +9 -4
- package/dist/ui/molecules/Autocomplete/index.js +15 -10
- package/dist/ui/molecules/SearchAndFilter/SearchAndFilter.js +9 -4
- package/dist/ui/molecules/SearchAndFilter/index.js +9 -4
- package/dist/ui/organisms/ErrorBoundary/ErrorBoundary.js +12 -7
- package/dist/ui/organisms/ErrorBoundary/index.js +12 -7
- package/dist/ui/organisms/ListPage/ListPage.js +41 -14
- package/dist/ui/organisms/ListPage/index.js +41 -14
- package/dist/ui/page-header.js +32 -10
- package/dist/ui/pagination.d.ts +11 -22
- package/dist/ui/pagination.d.ts.map +1 -1
- package/dist/ui/pagination.js +98 -79
- package/dist/ui/resizable.d.ts +5 -20
- package/dist/ui/resizable.d.ts.map +1 -1
- package/dist/ui/resizable.js +6 -9
- package/dist/ui/section.d.ts +2 -9
- package/dist/ui/section.d.ts.map +1 -1
- package/dist/ui/section.js +12 -4
- package/dist/ui/sidebar.js +22 -17
- package/dist/ui/stack.d.ts +15 -23
- package/dist/ui/stack.d.ts.map +1 -1
- package/dist/ui/stack.js +32 -10
- package/dist/ui/stat-card-group.js +32 -10
- package/dist/ui/stepper.js +32 -10
- package/dist/ui/time-picker.js +13 -8
- package/dist/ui/toast.d.ts +20 -7
- package/dist/ui/toast.d.ts.map +1 -1
- package/dist/ui/toast.js +57 -29
- package/dist/ui/toaster.js +60 -32
- package/dist/ui/usecases/UseCaseCard.js +41 -14
- package/dist/ui/usecases/UserStoryCard.js +32 -10
- package/dist/ui/usecases/index.js +41 -14
- package/dist/ui/visually-hidden.d.ts +4 -2
- package/dist/ui/visually-hidden.d.ts.map +1 -1
- package/dist/ui/visually-hidden.js +8 -4
- package/package.json +11 -10
package/dist/ui/button.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
4
|
// ui/button.tsx
|
|
5
|
-
import * as React from "react";
|
|
6
5
|
import { Slot } from "@radix-ui/react-slot";
|
|
7
6
|
import { cva } from "class-variance-authority";
|
|
8
7
|
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
@@ -29,7 +28,14 @@ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespa
|
|
|
29
28
|
size: "default"
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
|
-
|
|
31
|
+
function Button({
|
|
32
|
+
className,
|
|
33
|
+
variant,
|
|
34
|
+
size,
|
|
35
|
+
asChild = false,
|
|
36
|
+
ref,
|
|
37
|
+
...props
|
|
38
|
+
}) {
|
|
33
39
|
if (asChild) {
|
|
34
40
|
return /* @__PURE__ */ jsxDEV(Slot, {
|
|
35
41
|
"data-slot": "button",
|
|
@@ -43,8 +49,7 @@ var Button = React.forwardRef(({ className, variant, size, asChild = false, ...p
|
|
|
43
49
|
className: cn(buttonVariants({ variant, size, className })),
|
|
44
50
|
...props
|
|
45
51
|
}, undefined, false, undefined, this);
|
|
46
|
-
}
|
|
47
|
-
Button.displayName = "Button";
|
|
52
|
+
}
|
|
48
53
|
export {
|
|
49
54
|
buttonVariants,
|
|
50
55
|
Button
|
package/dist/ui/calendar.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
4
|
// ui/button.tsx
|
|
5
|
-
import * as React from "react";
|
|
6
5
|
import { Slot } from "@radix-ui/react-slot";
|
|
7
6
|
import { cva } from "class-variance-authority";
|
|
8
7
|
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
@@ -29,7 +28,14 @@ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespa
|
|
|
29
28
|
size: "default"
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
|
-
|
|
31
|
+
function Button({
|
|
32
|
+
className,
|
|
33
|
+
variant,
|
|
34
|
+
size,
|
|
35
|
+
asChild = false,
|
|
36
|
+
ref,
|
|
37
|
+
...props
|
|
38
|
+
}) {
|
|
33
39
|
if (asChild) {
|
|
34
40
|
return /* @__PURE__ */ jsxDEV(Slot, {
|
|
35
41
|
"data-slot": "button",
|
|
@@ -43,10 +49,9 @@ var Button = React.forwardRef(({ className, variant, size, asChild = false, ...p
|
|
|
43
49
|
className: cn(buttonVariants({ variant, size, className })),
|
|
44
50
|
...props
|
|
45
51
|
}, undefined, false, undefined, this);
|
|
46
|
-
}
|
|
47
|
-
Button.displayName = "Button";
|
|
52
|
+
}
|
|
48
53
|
// ui/calendar.tsx
|
|
49
|
-
import * as
|
|
54
|
+
import * as React from "react";
|
|
50
55
|
import {
|
|
51
56
|
ChevronDownIcon,
|
|
52
57
|
ChevronLeftIcon,
|
|
@@ -152,8 +157,8 @@ function CalendarDayButton({
|
|
|
152
157
|
...props
|
|
153
158
|
}) {
|
|
154
159
|
const defaultClassNames = getDefaultClassNames();
|
|
155
|
-
const ref =
|
|
156
|
-
|
|
160
|
+
const ref = React.useRef(null);
|
|
161
|
+
React.useEffect(() => {
|
|
157
162
|
if (modifiers.focused)
|
|
158
163
|
ref.current?.focus();
|
|
159
164
|
}, [modifiers.focused]);
|
package/dist/ui/carousel.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
4
|
// ui/button.tsx
|
|
5
|
-
import * as React from "react";
|
|
6
5
|
import { Slot } from "@radix-ui/react-slot";
|
|
7
6
|
import { cva } from "class-variance-authority";
|
|
8
7
|
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
@@ -29,7 +28,14 @@ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespa
|
|
|
29
28
|
size: "default"
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
|
-
|
|
31
|
+
function Button({
|
|
32
|
+
className,
|
|
33
|
+
variant,
|
|
34
|
+
size,
|
|
35
|
+
asChild = false,
|
|
36
|
+
ref,
|
|
37
|
+
...props
|
|
38
|
+
}) {
|
|
33
39
|
if (asChild) {
|
|
34
40
|
return /* @__PURE__ */ jsxDEV(Slot, {
|
|
35
41
|
"data-slot": "button",
|
|
@@ -43,8 +49,7 @@ var Button = React.forwardRef(({ className, variant, size, asChild = false, ...p
|
|
|
43
49
|
className: cn(buttonVariants({ variant, size, className })),
|
|
44
50
|
...props
|
|
45
51
|
}, undefined, false, undefined, this);
|
|
46
|
-
}
|
|
47
|
-
Button.displayName = "Button";
|
|
52
|
+
}
|
|
48
53
|
// ui/utils.ts
|
|
49
54
|
import { clsx } from "clsx";
|
|
50
55
|
import { twMerge } from "tailwind-merge";
|
|
@@ -53,14 +58,14 @@ function cn2(...inputs) {
|
|
|
53
58
|
}
|
|
54
59
|
|
|
55
60
|
// ui/carousel.tsx
|
|
56
|
-
import * as
|
|
61
|
+
import * as React from "react";
|
|
57
62
|
import useEmblaCarousel from "embla-carousel-react";
|
|
58
63
|
import { ArrowLeft, ArrowRight } from "lucide-react";
|
|
59
64
|
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
|
|
60
65
|
"use client";
|
|
61
|
-
var CarouselContext =
|
|
66
|
+
var CarouselContext = React.createContext(null);
|
|
62
67
|
function useCarousel() {
|
|
63
|
-
const context =
|
|
68
|
+
const context = React.useContext(CarouselContext);
|
|
64
69
|
if (!context) {
|
|
65
70
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
66
71
|
}
|
|
@@ -79,21 +84,21 @@ function Carousel({
|
|
|
79
84
|
...opts,
|
|
80
85
|
axis: orientation === "horizontal" ? "x" : "y"
|
|
81
86
|
}, plugins);
|
|
82
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
83
|
-
const [canScrollNext, setCanScrollNext] =
|
|
84
|
-
const onSelect =
|
|
87
|
+
const [canScrollPrev, setCanScrollPrev] = React.useState(false);
|
|
88
|
+
const [canScrollNext, setCanScrollNext] = React.useState(false);
|
|
89
|
+
const onSelect = React.useCallback((api2) => {
|
|
85
90
|
if (!api2)
|
|
86
91
|
return;
|
|
87
92
|
setCanScrollPrev(api2.canScrollPrev());
|
|
88
93
|
setCanScrollNext(api2.canScrollNext());
|
|
89
94
|
}, []);
|
|
90
|
-
const scrollPrev =
|
|
95
|
+
const scrollPrev = React.useCallback(() => {
|
|
91
96
|
api?.scrollPrev();
|
|
92
97
|
}, [api]);
|
|
93
|
-
const scrollNext =
|
|
98
|
+
const scrollNext = React.useCallback(() => {
|
|
94
99
|
api?.scrollNext();
|
|
95
100
|
}, [api]);
|
|
96
|
-
const handleKeyDown =
|
|
101
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
97
102
|
if (event.key === "ArrowLeft") {
|
|
98
103
|
event.preventDefault();
|
|
99
104
|
scrollPrev();
|
|
@@ -102,12 +107,12 @@ function Carousel({
|
|
|
102
107
|
scrollNext();
|
|
103
108
|
}
|
|
104
109
|
}, [scrollPrev, scrollNext]);
|
|
105
|
-
|
|
110
|
+
React.useEffect(() => {
|
|
106
111
|
if (!api || !setApi)
|
|
107
112
|
return;
|
|
108
113
|
setApi(api);
|
|
109
114
|
}, [api, setApi]);
|
|
110
|
-
|
|
115
|
+
React.useEffect(() => {
|
|
111
116
|
if (!api)
|
|
112
117
|
return;
|
|
113
118
|
onSelect(api);
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
4
|
// ui/button.tsx
|
|
5
|
-
import * as React from "react";
|
|
6
5
|
import { Slot } from "@radix-ui/react-slot";
|
|
7
6
|
import { cva } from "class-variance-authority";
|
|
8
7
|
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
@@ -29,7 +28,14 @@ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespa
|
|
|
29
28
|
size: "default"
|
|
30
29
|
}
|
|
31
30
|
});
|
|
32
|
-
|
|
31
|
+
function Button({
|
|
32
|
+
className,
|
|
33
|
+
variant,
|
|
34
|
+
size,
|
|
35
|
+
asChild = false,
|
|
36
|
+
ref,
|
|
37
|
+
...props
|
|
38
|
+
}) {
|
|
33
39
|
if (asChild) {
|
|
34
40
|
return /* @__PURE__ */ jsxDEV(Slot, {
|
|
35
41
|
"data-slot": "button",
|
|
@@ -43,8 +49,7 @@ var Button = React.forwardRef(({ className, variant, size, asChild = false, ...p
|
|
|
43
49
|
className: cn(buttonVariants({ variant, size, className })),
|
|
44
50
|
...props
|
|
45
51
|
}, undefined, false, undefined, this);
|
|
46
|
-
}
|
|
47
|
-
Button.displayName = "Button";
|
|
52
|
+
}
|
|
48
53
|
// ui/alert-dialog.tsx
|
|
49
54
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
50
55
|
import { cn as cn2 } from "@contractspec/lib.ui-kit-core/utils";
|
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import
|
|
3
|
-
declare
|
|
4
|
-
declare
|
|
5
|
-
declare
|
|
6
|
-
declare
|
|
7
|
-
declare
|
|
8
|
-
declare
|
|
9
|
-
declare
|
|
2
|
+
import { ContextMenu as ContextMenuPrimitive } from 'radix-ui';
|
|
3
|
+
declare function ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function ContextMenuTrigger({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function ContextMenuRadioGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function ContextMenuContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Content> & {
|
|
10
|
+
side?: 'top' | 'right' | 'bottom' | 'left';
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function ContextMenuItem({ className, inset, variant, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {
|
|
10
13
|
inset?: boolean;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
declare
|
|
14
|
-
declare const ContextMenuItem: React.ForwardRefExoticComponent<Omit<ContextMenuPrimitive.ContextMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
14
|
+
variant?: 'default' | 'destructive';
|
|
15
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare function ContextMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
|
|
15
17
|
inset?: boolean;
|
|
16
|
-
}
|
|
17
|
-
declare
|
|
18
|
-
declare
|
|
19
|
-
declare const ContextMenuLabel: React.ForwardRefExoticComponent<Omit<ContextMenuPrimitive.ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
18
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare function ContextMenuSubContent({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function ContextMenuCheckboxItem({ className, children, checked, inset, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {
|
|
20
21
|
inset?: boolean;
|
|
21
|
-
}
|
|
22
|
-
declare
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare function ContextMenuRadioItem({ className, children, inset, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {
|
|
24
|
+
inset?: boolean;
|
|
25
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
declare function ContextMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {
|
|
27
|
+
inset?: boolean;
|
|
28
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
declare function ContextMenuSeparator({ className, ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
declare function ContextMenuShortcut({ className, ...props }: React.ComponentProps<'span'>): import("react/jsx-runtime").JSX.Element;
|
|
27
31
|
export { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, ContextMenuShortcut, ContextMenuGroup, ContextMenuPortal, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuRadioGroup, };
|
|
28
32
|
//# sourceMappingURL=context-menu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../ui/context-menu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../ui/context-menu.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/context-menu.js
CHANGED
|
@@ -1,108 +1,201 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
+
// ui/utils.ts
|
|
5
|
+
import { clsx } from "clsx";
|
|
6
|
+
import { twMerge } from "tailwind-merge";
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return twMerge(clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
|
|
4
11
|
// ui/context-menu.tsx
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { Check, ChevronRight, Circle } from "lucide-react";
|
|
8
|
-
import { cn } from "@contractspec/lib.ui-kit-core/utils";
|
|
12
|
+
import { ContextMenu as ContextMenuPrimitive } from "radix-ui";
|
|
13
|
+
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
9
14
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
10
15
|
"use client";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
function ContextMenu({
|
|
17
|
+
...props
|
|
18
|
+
}) {
|
|
19
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Root, {
|
|
20
|
+
"data-slot": "context-menu",
|
|
21
|
+
...props
|
|
22
|
+
}, undefined, false, undefined, this);
|
|
23
|
+
}
|
|
24
|
+
function ContextMenuTrigger({
|
|
25
|
+
className,
|
|
26
|
+
...props
|
|
27
|
+
}) {
|
|
28
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Trigger, {
|
|
29
|
+
"data-slot": "context-menu-trigger",
|
|
30
|
+
className: cn("select-none", className),
|
|
31
|
+
...props
|
|
32
|
+
}, undefined, false, undefined, this);
|
|
33
|
+
}
|
|
34
|
+
function ContextMenuGroup({
|
|
35
|
+
...props
|
|
36
|
+
}) {
|
|
37
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Group, {
|
|
38
|
+
"data-slot": "context-menu-group",
|
|
39
|
+
...props
|
|
40
|
+
}, undefined, false, undefined, this);
|
|
41
|
+
}
|
|
42
|
+
function ContextMenuPortal({
|
|
43
|
+
...props
|
|
44
|
+
}) {
|
|
45
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Portal, {
|
|
46
|
+
"data-slot": "context-menu-portal",
|
|
47
|
+
...props
|
|
48
|
+
}, undefined, false, undefined, this);
|
|
49
|
+
}
|
|
50
|
+
function ContextMenuSub({
|
|
51
|
+
...props
|
|
52
|
+
}) {
|
|
53
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Sub, {
|
|
54
|
+
"data-slot": "context-menu-sub",
|
|
55
|
+
...props
|
|
56
|
+
}, undefined, false, undefined, this);
|
|
57
|
+
}
|
|
58
|
+
function ContextMenuRadioGroup({
|
|
59
|
+
...props
|
|
60
|
+
}) {
|
|
61
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.RadioGroup, {
|
|
62
|
+
"data-slot": "context-menu-radio-group",
|
|
63
|
+
...props
|
|
64
|
+
}, undefined, false, undefined, this);
|
|
65
|
+
}
|
|
66
|
+
function ContextMenuContent({
|
|
67
|
+
className,
|
|
68
|
+
...props
|
|
69
|
+
}) {
|
|
70
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Portal, {
|
|
71
|
+
children: /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Content, {
|
|
72
|
+
"data-slot": "context-menu-content",
|
|
73
|
+
className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-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 ring-foreground/10 bg-popover text-popover-foreground z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg p-1 shadow-md ring-1 duration-100", className),
|
|
74
|
+
...props
|
|
25
75
|
}, undefined, false, undefined, this)
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
76
|
+
}, undefined, false, undefined, this);
|
|
77
|
+
}
|
|
78
|
+
function ContextMenuItem({
|
|
79
|
+
className,
|
|
80
|
+
inset,
|
|
81
|
+
variant = "default",
|
|
32
82
|
...props
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
className: cn("bg-
|
|
83
|
+
}) {
|
|
84
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Item, {
|
|
85
|
+
"data-slot": "context-menu-item",
|
|
86
|
+
"data-inset": inset,
|
|
87
|
+
"data-variant": variant,
|
|
88
|
+
className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground group/context-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
39
89
|
...props
|
|
40
|
-
}, undefined, false, undefined, this)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
90
|
+
}, undefined, false, undefined, this);
|
|
91
|
+
}
|
|
92
|
+
function ContextMenuSubTrigger({
|
|
93
|
+
className,
|
|
94
|
+
inset,
|
|
95
|
+
children,
|
|
46
96
|
...props
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
97
|
+
}) {
|
|
98
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.SubTrigger, {
|
|
99
|
+
"data-slot": "context-menu-sub-trigger",
|
|
100
|
+
"data-inset": inset,
|
|
101
|
+
className: cn("focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
102
|
+
...props,
|
|
103
|
+
children: [
|
|
104
|
+
children,
|
|
105
|
+
/* @__PURE__ */ jsxDEV(ChevronRightIcon, {
|
|
106
|
+
className: "cn-rtl-flip ml-auto"
|
|
107
|
+
}, undefined, false, undefined, this)
|
|
108
|
+
]
|
|
109
|
+
}, undefined, true, undefined, this);
|
|
110
|
+
}
|
|
111
|
+
function ContextMenuSubContent({
|
|
112
|
+
className,
|
|
113
|
+
...props
|
|
114
|
+
}) {
|
|
115
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.SubContent, {
|
|
116
|
+
"data-slot": "context-menu-sub-content",
|
|
117
|
+
className: cn("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-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 bg-popover text-popover-foreground z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-lg border p-1 shadow-lg duration-100", className),
|
|
118
|
+
...props
|
|
119
|
+
}, undefined, false, undefined, this);
|
|
120
|
+
}
|
|
121
|
+
function ContextMenuCheckboxItem({
|
|
122
|
+
className,
|
|
123
|
+
children,
|
|
52
124
|
checked,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
125
|
+
inset,
|
|
126
|
+
...props
|
|
127
|
+
}) {
|
|
128
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.CheckboxItem, {
|
|
129
|
+
"data-slot": "context-menu-checkbox-item",
|
|
130
|
+
"data-inset": inset,
|
|
131
|
+
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
132
|
+
checked,
|
|
133
|
+
...props,
|
|
134
|
+
children: [
|
|
135
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
136
|
+
className: "pointer-events-none absolute right-2",
|
|
137
|
+
children: /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.ItemIndicator, {
|
|
138
|
+
children: /* @__PURE__ */ jsxDEV(CheckIcon, {}, undefined, false, undefined, this)
|
|
60
139
|
}, undefined, false, undefined, this)
|
|
61
|
-
}, undefined, false, undefined, this)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
...props
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
140
|
+
}, undefined, false, undefined, this),
|
|
141
|
+
children
|
|
142
|
+
]
|
|
143
|
+
}, undefined, true, undefined, this);
|
|
144
|
+
}
|
|
145
|
+
function ContextMenuRadioItem({
|
|
146
|
+
className,
|
|
147
|
+
children,
|
|
148
|
+
inset,
|
|
149
|
+
...props
|
|
150
|
+
}) {
|
|
151
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.RadioItem, {
|
|
152
|
+
"data-slot": "context-menu-radio-item",
|
|
153
|
+
"data-inset": inset,
|
|
154
|
+
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-7 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
155
|
+
...props,
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ jsxDEV("span", {
|
|
158
|
+
className: "pointer-events-none absolute right-2",
|
|
159
|
+
children: /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.ItemIndicator, {
|
|
160
|
+
children: /* @__PURE__ */ jsxDEV(CheckIcon, {}, undefined, false, undefined, this)
|
|
77
161
|
}, undefined, false, undefined, this)
|
|
78
|
-
}, undefined, false, undefined, this)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
className: cn("text-foreground px-2 py-1.5 text-base font-semibold", inset && "pl-8", className),
|
|
162
|
+
}, undefined, false, undefined, this),
|
|
163
|
+
children
|
|
164
|
+
]
|
|
165
|
+
}, undefined, true, undefined, this);
|
|
166
|
+
}
|
|
167
|
+
function ContextMenuLabel({
|
|
168
|
+
className,
|
|
169
|
+
inset,
|
|
87
170
|
...props
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
171
|
+
}) {
|
|
172
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Label, {
|
|
173
|
+
"data-slot": "context-menu-label",
|
|
174
|
+
"data-inset": inset,
|
|
175
|
+
className: cn("text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7", className),
|
|
176
|
+
...props
|
|
177
|
+
}, undefined, false, undefined, this);
|
|
178
|
+
}
|
|
179
|
+
function ContextMenuSeparator({
|
|
180
|
+
className,
|
|
93
181
|
...props
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
182
|
+
}) {
|
|
183
|
+
return /* @__PURE__ */ jsxDEV(ContextMenuPrimitive.Separator, {
|
|
184
|
+
"data-slot": "context-menu-separator",
|
|
185
|
+
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
186
|
+
...props
|
|
187
|
+
}, undefined, false, undefined, this);
|
|
188
|
+
}
|
|
189
|
+
function ContextMenuShortcut({
|
|
97
190
|
className,
|
|
98
191
|
...props
|
|
99
|
-
})
|
|
192
|
+
}) {
|
|
100
193
|
return /* @__PURE__ */ jsxDEV("span", {
|
|
101
|
-
|
|
194
|
+
"data-slot": "context-menu-shortcut",
|
|
195
|
+
className: cn("text-muted-foreground group-focus/context-menu-item:text-accent-foreground ml-auto text-xs tracking-widest", className),
|
|
102
196
|
...props
|
|
103
197
|
}, undefined, false, undefined, this);
|
|
104
|
-
}
|
|
105
|
-
ContextMenuShortcut.displayName = "ContextMenuShortcut";
|
|
198
|
+
}
|
|
106
199
|
export {
|
|
107
200
|
ContextMenuTrigger,
|
|
108
201
|
ContextMenuSubTrigger,
|
package/dist/ui/cta.d.ts
CHANGED
|
@@ -7,13 +7,7 @@ export type CtaProps = Omit<ButtonProps, 'onClick'> & {
|
|
|
7
7
|
href?: string;
|
|
8
8
|
onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;
|
|
9
9
|
children?: React.ReactNode;
|
|
10
|
+
ref?: React.Ref<HTMLButtonElement | HTMLAnchorElement>;
|
|
10
11
|
};
|
|
11
|
-
export declare
|
|
12
|
-
capture?: (cta: string) => void;
|
|
13
|
-
ctaName?: string;
|
|
14
|
-
as?: "button" | "a";
|
|
15
|
-
href?: string;
|
|
16
|
-
onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;
|
|
17
|
-
children?: React.ReactNode;
|
|
18
|
-
} & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
12
|
+
export declare function Cta({ capture, ctaName, className, as, href, onClick, size, children, ref, ...props }: CtaProps): import("react/jsx-runtime").JSX.Element;
|
|
19
13
|
//# sourceMappingURL=cta.d.ts.map
|
package/dist/ui/cta.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cta.d.ts","sourceRoot":"","sources":["../../ui/cta.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG;IACpD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cta.d.ts","sourceRoot":"","sources":["../../ui/cta.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG;IACpD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;IACzE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,CAAC;CACxD,CAAC;AAEF,wBAAgB,GAAG,CAAC,EAClB,OAAO,EACP,OAAO,EACP,SAAS,EACT,EAAa,EACb,IAAI,EACJ,OAAO,EACP,IAAW,EACX,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,QAAQ,2CA4CV"}
|