@enadhq/enad-react-sdk 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/cart/components/cart-drawer.mjs +3 -3
- package/dist/client/cart/components/cart-drawer.mjs.map +1 -1
- package/dist/client/cart/components/cart-trigger.mjs +1 -1
- package/dist/client/cart/components/cart-trigger.mjs.map +1 -1
- package/dist/client/storefront/checkout/cart-summary.mjs +1 -1
- package/dist/client/storefront/checkout/cart-summary.mjs.map +1 -1
- package/dist/client/storefront/components/language-selector.d.ts.map +1 -1
- package/dist/client/storefront/components/language-selector.mjs +1 -1
- package/dist/client/storefront/components/language-selector.mjs.map +1 -1
- package/dist/client/storefront/filters/filter-chip.mjs +1 -1
- package/dist/client/storefront/filters/filter-chip.mjs.map +1 -1
- package/dist/client/storefront/filters/filter-panel.mjs +1 -1
- package/dist/client/storefront/filters/filter-panel.mjs.map +1 -1
- package/dist/client/storefront/filters/toggle-list-view.mjs +1 -1
- package/dist/client/storefront/filters/toggle-list-view.mjs.map +1 -1
- package/dist/client/storefront/layout/promotion-bar.d.ts.map +1 -1
- package/dist/client/storefront/layout/promotion-bar.mjs +3 -3
- package/dist/client/storefront/layout/promotion-bar.mjs.map +1 -1
- package/dist/client/storefront/primitives/button.d.ts +2 -2
- package/dist/client/storefront/primitives/button.d.ts.map +1 -1
- package/dist/client/storefront/primitives/button.mjs +4 -4
- package/dist/client/storefront/primitives/button.mjs.map +1 -1
- package/dist/client/storefront/primitives/input.d.ts +1 -1
- package/dist/client/storefront/primitives/input.mjs.map +1 -1
- package/dist/client/storefront/primitives/pagination.mjs +2 -2
- package/dist/client/storefront/primitives/pagination.mjs.map +1 -1
- package/dist/client/storefront/product/quantity-picker.mjs +2 -2
- package/dist/client/storefront/product/quantity-picker.mjs.map +1 -1
- package/dist/client/storefront/types.d.ts +1 -1
- package/dist/client/storefront/types.d.ts.map +1 -1
- package/dist/client/storefront/types.mjs.map +1 -1
- package/dist/client/ui/accordion.d.ts +12 -1
- package/dist/client/ui/accordion.d.ts.map +1 -1
- package/dist/client/ui/accordion.mjs +23 -5
- package/dist/client/ui/accordion.mjs.map +1 -1
- package/dist/client/ui/alert.d.ts +16 -7
- package/dist/client/ui/alert.d.ts.map +1 -1
- package/dist/client/ui/alert.mjs +21 -8
- package/dist/client/ui/alert.mjs.map +1 -1
- package/dist/client/ui/avatar.d.ts +10 -1
- package/dist/client/ui/avatar.d.ts.map +1 -1
- package/dist/client/ui/avatar.mjs +18 -4
- package/dist/client/ui/avatar.mjs.map +1 -1
- package/dist/client/ui/breadcrumb.d.ts +13 -1
- package/dist/client/ui/breadcrumb.d.ts.map +1 -1
- package/dist/client/ui/breadcrumb.mjs +27 -7
- package/dist/client/ui/breadcrumb.mjs.map +1 -1
- package/dist/client/ui/button.d.ts +28 -10
- package/dist/client/ui/button.d.ts.map +1 -1
- package/dist/client/ui/button.mjs +45 -20
- package/dist/client/ui/button.mjs.map +1 -1
- package/dist/client/ui/card.d.ts +20 -1
- package/dist/client/ui/card.d.ts.map +1 -1
- package/dist/client/ui/card.mjs +36 -8
- package/dist/client/ui/card.mjs.map +1 -1
- package/dist/client/ui/carousel.d.ts.map +1 -1
- package/dist/client/ui/carousel.mjs +2 -2
- package/dist/client/ui/carousel.mjs.map +1 -1
- package/dist/client/ui/checkbox.d.ts +9 -1
- package/dist/client/ui/checkbox.d.ts.map +1 -1
- package/dist/client/ui/checkbox.mjs +12 -3
- package/dist/client/ui/checkbox.mjs.map +1 -1
- package/dist/client/ui/dialog.d.ts +13 -1
- package/dist/client/ui/dialog.d.ts.map +1 -1
- package/dist/client/ui/dialog.mjs +27 -7
- package/dist/client/ui/dialog.mjs.map +1 -1
- package/dist/client/ui/hover-card.d.ts +6 -1
- package/dist/client/ui/hover-card.d.ts.map +1 -1
- package/dist/client/ui/hover-card.mjs +4 -2
- package/dist/client/ui/hover-card.mjs.map +1 -1
- package/dist/client/ui/input.d.ts +20 -7
- package/dist/client/ui/input.d.ts.map +1 -1
- package/dist/client/ui/input.mjs +33 -9
- package/dist/client/ui/input.mjs.map +1 -1
- package/dist/client/ui/label.d.ts +6 -1
- package/dist/client/ui/label.d.ts.map +1 -1
- package/dist/client/ui/label.mjs +4 -2
- package/dist/client/ui/label.mjs.map +1 -1
- package/dist/client/ui/navigation-menu.d.ts +20 -3
- package/dist/client/ui/navigation-menu.d.ts.map +1 -1
- package/dist/client/ui/navigation-menu.mjs +34 -12
- package/dist/client/ui/navigation-menu.mjs.map +1 -1
- package/dist/client/ui/pagination.d.ts.map +1 -1
- package/dist/client/ui/pagination.mjs +3 -3
- package/dist/client/ui/pagination.mjs.map +1 -1
- package/dist/client/ui/popover.d.ts +11 -1
- package/dist/client/ui/popover.d.ts.map +1 -1
- package/dist/client/ui/popover.mjs +21 -5
- package/dist/client/ui/popover.mjs.map +1 -1
- package/dist/client/ui/progress.d.ts +9 -1
- package/dist/client/ui/progress.d.ts.map +1 -1
- package/dist/client/ui/progress.mjs +12 -3
- package/dist/client/ui/progress.mjs.map +1 -1
- package/dist/client/ui/select.d.ts +14 -2
- package/dist/client/ui/select.d.ts.map +1 -1
- package/dist/client/ui/select.mjs +35 -9
- package/dist/client/ui/select.mjs.map +1 -1
- package/dist/client/ui/separator.d.ts +6 -1
- package/dist/client/ui/separator.d.ts.map +1 -1
- package/dist/client/ui/separator.mjs +4 -2
- package/dist/client/ui/separator.mjs.map +1 -1
- package/dist/client/ui/sheet.d.ts +13 -1
- package/dist/client/ui/sheet.d.ts.map +1 -1
- package/dist/client/ui/sheet.mjs +35 -7
- package/dist/client/ui/sheet.mjs.map +1 -1
- package/dist/client/ui/slot-wrapper.d.ts +28 -0
- package/dist/client/ui/slot-wrapper.d.ts.map +1 -0
- package/dist/client/ui/slot-wrapper.mjs +38 -0
- package/dist/client/ui/slot-wrapper.mjs.map +1 -0
- package/dist/client/ui/tabs.d.ts +11 -1
- package/dist/client/ui/tabs.d.ts.map +1 -1
- package/dist/client/ui/tabs.mjs +21 -5
- package/dist/client/ui/tabs.mjs.map +1 -1
- package/dist/client/ui/toggle-group.d.ts +7 -4
- package/dist/client/ui/toggle-group.d.ts.map +1 -1
- package/dist/client/ui/toggle-group.mjs +4 -4
- package/dist/client/ui/toggle-group.mjs.map +1 -1
- package/dist/client/ui/toggle.d.ts +17 -8
- package/dist/client/ui/toggle.d.ts.map +1 -1
- package/dist/client/ui/toggle.mjs +11 -9
- package/dist/client/ui/toggle.mjs.map +1 -1
- package/dist/client/ui/tooltip.d.ts +6 -1
- package/dist/client/ui/tooltip.d.ts.map +1 -1
- package/dist/client/ui/tooltip.mjs +4 -2
- package/dist/client/ui/tooltip.mjs.map +1 -1
- package/dist/client/ui-resolver/button.d.ts +3 -4
- package/dist/client/ui-resolver/button.d.ts.map +1 -1
- package/dist/client/ui-resolver/button.mjs +2 -2
- package/dist/client/ui-resolver/button.mjs.map +1 -1
- package/dist/client/ui-resolver/card.d.ts +14 -1
- package/dist/client/ui-resolver/card.d.ts.map +1 -1
- package/dist/client/ui-resolver/card.mjs +3 -2
- package/dist/client/ui-resolver/card.mjs.map +1 -1
- package/dist/client/ui-resolver/context.mjs +1 -1
- package/dist/client/ui-resolver/context.mjs.map +1 -1
- package/dist/client/ui-resolver/index.d.ts +7 -4
- package/dist/client/ui-resolver/index.mjs +6 -4
- package/dist/client/ui-resolver/input.d.ts +3 -4
- package/dist/client/ui-resolver/input.d.ts.map +1 -1
- package/dist/client/ui-resolver/input.mjs +2 -2
- package/dist/client/ui-resolver/input.mjs.map +1 -1
- package/dist/client/ui-resolver/navigation-menu.d.ts +1 -2
- package/dist/client/ui-resolver/navigation-menu.d.ts.map +1 -1
- package/dist/client/ui-resolver/recipe.d.ts +95 -0
- package/dist/client/ui-resolver/recipe.d.ts.map +1 -0
- package/dist/client/ui-resolver/recipe.mjs +134 -0
- package/dist/client/ui-resolver/recipe.mjs.map +1 -0
- package/dist/client/ui-resolver/toggle.d.ts +2 -2
- package/dist/client/ui-resolver/toggle.mjs +2 -2
- package/dist/client/ui-resolver/toggle.mjs.map +1 -1
- package/dist/client/ui-resolver/types.d.ts +14 -0
- package/dist/client/ui-resolver/types.d.ts.map +1 -0
- package/dist/client/ui-resolver/types.mjs +1 -0
- package/dist/client/wishlist/wishlist-drawer.mjs +4 -4
- package/dist/client/wishlist/wishlist-drawer.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
|
@@ -1,22 +1,40 @@
|
|
|
1
|
+
import { SemanticColor, Variant } from "../ui-resolver/types.js";
|
|
1
2
|
import * as React$1 from "react";
|
|
2
3
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
|
-
import { VariantProps } from "class-variance-authority";
|
|
4
|
-
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
5
4
|
|
|
6
5
|
//#region src/client/ui/button.d.ts
|
|
7
|
-
declare const
|
|
8
|
-
variant?: "
|
|
9
|
-
size?: "
|
|
10
|
-
} &
|
|
6
|
+
declare const buttonRecipe: (props?: ({
|
|
7
|
+
variant?: "destructive" | "link" | "solid" | "soft" | "outlined" | "plain" | "secondary" | "inverse" | undefined;
|
|
8
|
+
size?: "xs" | "sm" | "md" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
|
|
9
|
+
} & {
|
|
10
|
+
className?: string;
|
|
11
|
+
}) | undefined) => string;
|
|
12
|
+
type ButtonVariant = Variant | "destructive" | "secondary" | "inverse" | "link";
|
|
13
|
+
type ButtonSize = "xs" | "sm" | "md" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg";
|
|
14
|
+
interface ButtonProps extends Omit<React$1.ComponentProps<"button">, "color"> {
|
|
15
|
+
variant?: ButtonVariant;
|
|
16
|
+
size?: ButtonSize;
|
|
17
|
+
color?: SemanticColor;
|
|
18
|
+
asChild?: boolean;
|
|
19
|
+
startSlot?: React$1.ReactNode;
|
|
20
|
+
endSlot?: React$1.ReactNode;
|
|
21
|
+
}
|
|
11
22
|
declare function Button({
|
|
12
23
|
className,
|
|
13
24
|
variant,
|
|
14
25
|
size,
|
|
15
26
|
asChild,
|
|
27
|
+
startSlot,
|
|
28
|
+
endSlot,
|
|
29
|
+
children,
|
|
16
30
|
...props
|
|
17
|
-
}:
|
|
18
|
-
|
|
19
|
-
|
|
31
|
+
}: ButtonProps): react_jsx_runtime0.JSX.Element;
|
|
32
|
+
declare const buttonVariants: (props?: ({
|
|
33
|
+
variant?: "destructive" | "link" | "solid" | "soft" | "outlined" | "plain" | "secondary" | "inverse" | undefined;
|
|
34
|
+
size?: "xs" | "sm" | "md" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
|
|
35
|
+
} & {
|
|
36
|
+
className?: string;
|
|
37
|
+
}) | undefined) => string;
|
|
20
38
|
//#endregion
|
|
21
|
-
export { Button, buttonVariants };
|
|
39
|
+
export { Button, type ButtonProps, type ButtonSize, type ButtonVariant, buttonRecipe, buttonVariants };
|
|
22
40
|
//# sourceMappingURL=button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","names":[],"sources":["../../../src/client/ui/button.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"button.d.ts","names":[],"sources":["../../../src/client/ui/button.tsx"],"mappings":";;;;;cAOM,YAAA,GAAY,KAAA;;;;;;KAkCb,aAAA,GAAgB,OAAA;AAAA,KAChB,UAAA;AAAA,UAEK,WAAA,SAAoB,IAAA,CAAK,OAAA,CAAM,cAAA;EACvC,OAAA,GAAU,aAAA;EACV,IAAA,GAAO,UAAA;EACP,KAAA,GAAQ,aAAA;EACR,OAAA;EACA,SAAA,GAAY,OAAA,CAAM,SAAA;EAClB,OAAA,GAAU,OAAA,CAAM,SAAA;AAAA;AAAA,iBAGT,MAAA,CAAA;EACP,SAAA;EACA,OAAA;EACA,IAAA;EACA,OAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,cAsCR,cAAA,GAAc,KAAA"}
|
|
@@ -1,51 +1,76 @@
|
|
|
1
1
|
import { cn } from "./utils.mjs";
|
|
2
|
+
import { defineRecipe } from "../ui-resolver/recipe.mjs";
|
|
2
3
|
import "react";
|
|
3
|
-
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
import { cva } from "class-variance-authority";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { Slot } from "radix-ui";
|
|
6
6
|
//#region src/client/ui/button.tsx
|
|
7
|
-
const
|
|
7
|
+
const buttonRecipe = defineRecipe({
|
|
8
|
+
base: "inline-flex shrink-0 items-center justify-center gap-[var(--enad-button-gap)] rounded-[var(--enad-button-radius)] text-[length:var(--enad-button-font-size)] font-medium whitespace-nowrap transition-[color,box-shadow] outline-none 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 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
8
9
|
variants: {
|
|
9
10
|
variant: {
|
|
10
|
-
|
|
11
|
+
solid: "bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
12
|
+
soft: "bg-muted text-foreground hover:bg-primary-hover hover:text-primary-foreground",
|
|
13
|
+
outlined: "border bg-background text-foreground shadow-xs hover:bg-accent-muted hover:text-accent-muted-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
14
|
+
plain: "hover:bg-accent-muted hover:text-accent-muted-foreground dark:hover:bg-accent-muted/50",
|
|
11
15
|
destructive: "bg-destructive text-white hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
12
|
-
outline: "border bg-background text-foreground shadow-xs hover:bg-accent-muted hover:text-accent-muted-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
|
|
13
16
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover",
|
|
14
|
-
ghost: "hover:bg-accent-muted hover:text-accent-muted-foreground dark:hover:bg-accent-muted/50",
|
|
15
|
-
soft: "bg-muted text-foreground hover:bg-primary-hover hover:text-primary-foreground",
|
|
16
17
|
inverse: "bg-foreground text-background hover:bg-primary-hover hover:text-primary-foreground",
|
|
17
18
|
link: "text-primary underline-offset-4 hover:underline"
|
|
18
19
|
},
|
|
19
20
|
size: {
|
|
20
|
-
default: "h-[var(--enad-control-height)] px-4 py-2 has-[>svg]:px-3",
|
|
21
21
|
xs: "h-[var(--enad-control-height-xs)] gap-1 px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
22
22
|
sm: "h-[var(--enad-control-height-sm)] gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
23
|
+
md: "h-[var(--enad-button-height)] px-[var(--enad-button-px)] py-2 has-[>svg]:px-3",
|
|
23
24
|
lg: "h-[var(--enad-control-height-lg)] px-6 has-[>svg]:px-4",
|
|
24
|
-
icon: "size-[var(--enad-
|
|
25
|
+
icon: "size-[var(--enad-button-height)]",
|
|
25
26
|
"icon-xs": "relative size-[var(--enad-control-height-xs)] hit-area-3 [&_svg:not([class*='size-'])]:size-3",
|
|
26
27
|
"icon-sm": "size-[var(--enad-control-height-sm)]",
|
|
27
28
|
"icon-lg": "size-[var(--enad-control-height-lg)]"
|
|
28
29
|
}
|
|
29
30
|
},
|
|
30
31
|
defaultVariants: {
|
|
31
|
-
variant: "
|
|
32
|
-
size: "
|
|
32
|
+
variant: "solid",
|
|
33
|
+
size: "md"
|
|
33
34
|
}
|
|
34
35
|
});
|
|
35
|
-
function Button({ className, variant = "
|
|
36
|
-
|
|
36
|
+
function Button({ className, variant = "solid", size = "md", asChild = false, startSlot, endSlot, children, ...props }) {
|
|
37
|
+
const Comp = asChild ? Slot.Root : "button";
|
|
38
|
+
const classes = cn(buttonRecipe({
|
|
39
|
+
variant,
|
|
40
|
+
size,
|
|
41
|
+
className
|
|
42
|
+
}));
|
|
43
|
+
if (asChild) return /* @__PURE__ */ jsx(Comp, {
|
|
44
|
+
"data-slot": "button",
|
|
45
|
+
"data-variant": variant,
|
|
46
|
+
"data-size": size,
|
|
47
|
+
className: classes,
|
|
48
|
+
...props,
|
|
49
|
+
children
|
|
50
|
+
});
|
|
51
|
+
return /* @__PURE__ */ jsxs(Comp, {
|
|
37
52
|
"data-slot": "button",
|
|
38
53
|
"data-variant": variant,
|
|
39
54
|
"data-size": size,
|
|
40
|
-
className:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
className: classes,
|
|
56
|
+
...props,
|
|
57
|
+
children: [
|
|
58
|
+
startSlot && /* @__PURE__ */ jsx("span", {
|
|
59
|
+
"aria-hidden": "true",
|
|
60
|
+
className: "shrink-0 [&_svg]:size-[var(--slot-icon-size,1em)]",
|
|
61
|
+
children: startSlot
|
|
62
|
+
}),
|
|
63
|
+
children,
|
|
64
|
+
endSlot && /* @__PURE__ */ jsx("span", {
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
className: "shrink-0 [&_svg]:size-[var(--slot-icon-size,1em)]",
|
|
67
|
+
children: endSlot
|
|
68
|
+
})
|
|
69
|
+
]
|
|
46
70
|
});
|
|
47
71
|
}
|
|
72
|
+
const buttonVariants = buttonRecipe;
|
|
48
73
|
//#endregion
|
|
49
|
-
export { Button, buttonVariants };
|
|
74
|
+
export { Button, buttonRecipe, buttonVariants };
|
|
50
75
|
|
|
51
76
|
//# sourceMappingURL=button.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.mjs","names":[],"sources":["../../../src/client/ui/button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"button.mjs","names":[],"sources":["../../../src/client/ui/button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"radix-ui\";\n\nimport { defineRecipe } from \"../ui-resolver/recipe\";\nimport type { SemanticColor, Variant } from \"../ui-resolver/types\";\nimport { cn } from \"./utils\";\n\nconst buttonRecipe = defineRecipe({\n base: \"inline-flex shrink-0 items-center justify-center gap-[var(--enad-button-gap)] rounded-[var(--enad-button-radius)] text-[length:var(--enad-button-font-size)] font-medium whitespace-nowrap transition-[color,box-shadow] outline-none 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 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n variants: {\n variant: {\n solid: \"bg-primary text-primary-foreground hover:bg-primary-hover\",\n soft: \"bg-muted text-foreground hover:bg-primary-hover hover:text-primary-foreground\",\n outlined:\n \"border bg-background text-foreground shadow-xs hover:bg-accent-muted hover:text-accent-muted-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n plain:\n \"hover:bg-accent-muted hover:text-accent-muted-foreground dark:hover:bg-accent-muted/50\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive-hover focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary-hover\",\n inverse: \"bg-foreground text-background hover:bg-primary-hover hover:text-primary-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n xs: \"h-[var(--enad-control-height-xs)] gap-1 px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-[var(--enad-control-height-sm)] gap-1.5 px-3 has-[>svg]:px-2.5\",\n md: \"h-[var(--enad-button-height)] px-[var(--enad-button-px)] py-2 has-[>svg]:px-3\",\n lg: \"h-[var(--enad-control-height-lg)] px-6 has-[>svg]:px-4\",\n icon: \"size-[var(--enad-button-height)]\",\n \"icon-xs\":\n \"relative size-[var(--enad-control-height-xs)] hit-area-3 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-[var(--enad-control-height-sm)]\",\n \"icon-lg\": \"size-[var(--enad-control-height-lg)]\",\n },\n },\n defaultVariants: {\n variant: \"solid\",\n size: \"md\",\n },\n});\n\ntype ButtonVariant = Variant | \"destructive\" | \"secondary\" | \"inverse\" | \"link\";\ntype ButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-xs\" | \"icon-sm\" | \"icon-lg\";\n\ninterface ButtonProps extends Omit<React.ComponentProps<\"button\">, \"color\"> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n color?: SemanticColor;\n asChild?: boolean;\n startSlot?: React.ReactNode;\n endSlot?: React.ReactNode;\n}\n\nfunction Button({\n className,\n variant = \"solid\",\n size = \"md\",\n asChild = false,\n startSlot,\n endSlot,\n children,\n ...props\n}: ButtonProps) {\n const Comp = asChild ? Slot.Root : \"button\";\n const classes = cn(buttonRecipe({ variant, size, className }));\n\n if (asChild) {\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={classes}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp data-slot=\"button\" data-variant={variant} data-size={size} className={classes} {...props}>\n {startSlot && (\n <span aria-hidden=\"true\" className=\"shrink-0 [&_svg]:size-[var(--slot-icon-size,1em)]\">\n {startSlot}\n </span>\n )}\n {children}\n {endSlot && (\n <span aria-hidden=\"true\" className=\"shrink-0 [&_svg]:size-[var(--slot-icon-size,1em)]\">\n {endSlot}\n </span>\n )}\n </Comp>\n );\n}\n\nexport { Button, buttonRecipe, type ButtonProps, type ButtonVariant, type ButtonSize };\n\n// Backward compat: export buttonVariants as an alias for buttonRecipe\nconst buttonVariants = buttonRecipe;\nexport { buttonVariants };\n"],"mappings":";;;;;;AAOA,MAAM,eAAe,aAAa;CAChC,MAAM;CACN,UAAU;EACR,SAAS;GACP,OAAO;GACP,MAAM;GACN,UACE;GACF,OACE;GACF,aACE;GACF,WAAW;GACX,SAAS;GACT,MAAM;GACP;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,MAAM;GACN,WACE;GACF,WAAW;GACX,WAAW;GACZ;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CAAC;AAcF,SAAS,OAAO,EACd,WACA,UAAU,SACV,OAAO,MACP,UAAU,OACV,WACA,SACA,UACA,GAAG,SACW;CACd,MAAM,OAAO,UAAU,KAAK,OAAO;CACnC,MAAM,UAAU,GAAG,aAAa;EAAE;EAAS;EAAM;EAAW,CAAC,CAAC;AAE9D,KAAI,QACF,QACE,oBAAC,MAAD;EACE,aAAU;EACV,gBAAc;EACd,aAAW;EACX,WAAW;EACX,GAAI;EAEH;EACI,CAAA;AAIX,QACE,qBAAC,MAAD;EAAM,aAAU;EAAS,gBAAc;EAAS,aAAW;EAAM,WAAW;EAAS,GAAI;YAAzF;GACG,aACC,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;cAChC;IACI,CAAA;GAER;GACA,WACC,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;cAChC;IACI,CAAA;GAEJ;;;AAOX,MAAM,iBAAiB"}
|
package/dist/client/ui/card.d.ts
CHANGED
|
@@ -2,6 +2,25 @@ import * as React$1 from "react";
|
|
|
2
2
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/client/ui/card.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Card recipe with 7 slots. Base classes produce the same output as the
|
|
7
|
+
* previous inline implementation. CSS variable references use the new
|
|
8
|
+
* component-level tokens (--enad-card-px, --enad-card-py) which fall
|
|
9
|
+
* back to --enad-card-padding for backward compatibility.
|
|
10
|
+
*/
|
|
11
|
+
declare const cardRecipe: (props?: ({
|
|
12
|
+
[x: string]: string | undefined;
|
|
13
|
+
} & {
|
|
14
|
+
className?: Partial<Record<"root" | "content" | "title" | "description" | "header" | "action" | "footer", string>> | undefined;
|
|
15
|
+
}) | undefined) => {
|
|
16
|
+
root: string;
|
|
17
|
+
content: string;
|
|
18
|
+
title: string;
|
|
19
|
+
description: string;
|
|
20
|
+
header: string;
|
|
21
|
+
action: string;
|
|
22
|
+
footer: string;
|
|
23
|
+
};
|
|
5
24
|
declare function Card({
|
|
6
25
|
className,
|
|
7
26
|
...props
|
|
@@ -31,5 +50,5 @@ declare function CardFooter({
|
|
|
31
50
|
...props
|
|
32
51
|
}: React$1.ComponentProps<"div">): react_jsx_runtime0.JSX.Element;
|
|
33
52
|
//#endregion
|
|
34
|
-
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
53
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardRecipe };
|
|
35
54
|
//# sourceMappingURL=card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.d.ts","names":[],"sources":["../../../src/client/ui/card.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"card.d.ts","names":[],"sources":["../../../src/client/ui/card.tsx"],"mappings":";;;;;;;AAA+B;;;cAWzB,UAAA,GAAU,KAAA;EAAA;;cAYd,OAAA,CAAA,MAAA;AAAA;;;;;;;;;iBAIO,IAAA,CAAA;EAAO,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIzD,UAAA,CAAA;EAAa,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAM/D,SAAA,CAAA;EAAY,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI9D,eAAA,CAAA;EAAkB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAUpE,UAAA,CAAA;EAAa,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAM/D,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAMhE,UAAA,CAAA;EAAa,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
package/dist/client/ui/card.mjs
CHANGED
|
@@ -1,57 +1,85 @@
|
|
|
1
1
|
import { cn } from "./utils.mjs";
|
|
2
|
+
import { defineSlotRecipe } from "../ui-resolver/recipe.mjs";
|
|
2
3
|
import "react";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/client/ui/card.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Card recipe with 7 slots. Base classes produce the same output as the
|
|
8
|
+
* previous inline implementation. CSS variable references use the new
|
|
9
|
+
* component-level tokens (--enad-card-px, --enad-card-py) which fall
|
|
10
|
+
* back to --enad-card-padding for backward compatibility.
|
|
11
|
+
*/
|
|
12
|
+
const cardRecipe = defineSlotRecipe({
|
|
13
|
+
slots: [
|
|
14
|
+
"root",
|
|
15
|
+
"header",
|
|
16
|
+
"title",
|
|
17
|
+
"description",
|
|
18
|
+
"action",
|
|
19
|
+
"content",
|
|
20
|
+
"footer"
|
|
21
|
+
],
|
|
22
|
+
base: {
|
|
23
|
+
root: "flex flex-col gap-[var(--enad-card-gap)] rounded-[var(--enad-card-radius)] border bg-card py-[var(--enad-card-py)] text-card-foreground shadow-[var(--enad-shadow-sm)]",
|
|
24
|
+
header: "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-[var(--enad-card-header-gap)] px-[var(--enad-card-px)] has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-[var(--enad-card-py)]",
|
|
25
|
+
title: "leading-none font-semibold",
|
|
26
|
+
description: "text-sm text-muted-foreground",
|
|
27
|
+
action: "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
28
|
+
content: "px-[var(--enad-card-px)]",
|
|
29
|
+
footer: "flex items-center px-[var(--enad-card-px)] [.border-t]:pt-[var(--enad-card-py)]"
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const defaultClasses = cardRecipe();
|
|
5
33
|
function Card({ className, ...props }) {
|
|
6
34
|
return /* @__PURE__ */ jsx("div", {
|
|
7
35
|
"data-slot": "card",
|
|
8
|
-
className: cn(
|
|
36
|
+
className: cn(defaultClasses.root, className),
|
|
9
37
|
...props
|
|
10
38
|
});
|
|
11
39
|
}
|
|
12
40
|
function CardHeader({ className, ...props }) {
|
|
13
41
|
return /* @__PURE__ */ jsx("div", {
|
|
14
42
|
"data-slot": "card-header",
|
|
15
|
-
className: cn(
|
|
43
|
+
className: cn(defaultClasses.header, className),
|
|
16
44
|
...props
|
|
17
45
|
});
|
|
18
46
|
}
|
|
19
47
|
function CardTitle({ className, ...props }) {
|
|
20
48
|
return /* @__PURE__ */ jsx("div", {
|
|
21
49
|
"data-slot": "card-title",
|
|
22
|
-
className: cn(
|
|
50
|
+
className: cn(defaultClasses.title, className),
|
|
23
51
|
...props
|
|
24
52
|
});
|
|
25
53
|
}
|
|
26
54
|
function CardDescription({ className, ...props }) {
|
|
27
55
|
return /* @__PURE__ */ jsx("div", {
|
|
28
56
|
"data-slot": "card-description",
|
|
29
|
-
className: cn(
|
|
57
|
+
className: cn(defaultClasses.description, className),
|
|
30
58
|
...props
|
|
31
59
|
});
|
|
32
60
|
}
|
|
33
61
|
function CardAction({ className, ...props }) {
|
|
34
62
|
return /* @__PURE__ */ jsx("div", {
|
|
35
63
|
"data-slot": "card-action",
|
|
36
|
-
className: cn(
|
|
64
|
+
className: cn(defaultClasses.action, className),
|
|
37
65
|
...props
|
|
38
66
|
});
|
|
39
67
|
}
|
|
40
68
|
function CardContent({ className, ...props }) {
|
|
41
69
|
return /* @__PURE__ */ jsx("div", {
|
|
42
70
|
"data-slot": "card-content",
|
|
43
|
-
className: cn(
|
|
71
|
+
className: cn(defaultClasses.content, className),
|
|
44
72
|
...props
|
|
45
73
|
});
|
|
46
74
|
}
|
|
47
75
|
function CardFooter({ className, ...props }) {
|
|
48
76
|
return /* @__PURE__ */ jsx("div", {
|
|
49
77
|
"data-slot": "card-footer",
|
|
50
|
-
className: cn(
|
|
78
|
+
className: cn(defaultClasses.footer, className),
|
|
51
79
|
...props
|
|
52
80
|
});
|
|
53
81
|
}
|
|
54
82
|
//#endregion
|
|
55
|
-
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
83
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, cardRecipe };
|
|
56
84
|
|
|
57
85
|
//# sourceMappingURL=card.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.mjs","names":[],"sources":["../../../src/client/ui/card.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\
|
|
1
|
+
{"version":3,"file":"card.mjs","names":[],"sources":["../../../src/client/ui/card.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { defineSlotRecipe } from \"../ui-resolver/recipe\";\nimport { cn } from \"./utils\";\n\n/**\n * Card recipe with 7 slots. Base classes produce the same output as the\n * previous inline implementation. CSS variable references use the new\n * component-level tokens (--enad-card-px, --enad-card-py) which fall\n * back to --enad-card-padding for backward compatibility.\n */\nconst cardRecipe = defineSlotRecipe({\n slots: [\"root\", \"header\", \"title\", \"description\", \"action\", \"content\", \"footer\"] as const,\n base: {\n root: \"flex flex-col gap-[var(--enad-card-gap)] rounded-[var(--enad-card-radius)] border bg-card py-[var(--enad-card-py)] text-card-foreground shadow-[var(--enad-shadow-sm)]\",\n header:\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-[var(--enad-card-header-gap)] px-[var(--enad-card-px)] has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-[var(--enad-card-py)]\",\n title: \"leading-none font-semibold\",\n description: \"text-sm text-muted-foreground\",\n action: \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n content: \"px-[var(--enad-card-px)]\",\n footer: \"flex items-center px-[var(--enad-card-px)] [.border-t]:pt-[var(--enad-card-py)]\",\n },\n});\n\nconst defaultClasses = cardRecipe();\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card\" className={cn(defaultClasses.root, className)} {...props} />;\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-header\" className={cn(defaultClasses.header, className)} {...props} />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-title\" className={cn(defaultClasses.title, className)} {...props} />;\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(defaultClasses.description, className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-action\" className={cn(defaultClasses.action, className)} {...props} />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-content\" className={cn(defaultClasses.content, className)} {...props} />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-footer\" className={cn(defaultClasses.footer, className)} {...props} />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n cardRecipe,\n};\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,aAAa,iBAAiB;CAClC,OAAO;EAAC;EAAQ;EAAU;EAAS;EAAe;EAAU;EAAW;EAAS;CAChF,MAAM;EACJ,MAAM;EACN,QACE;EACF,OAAO;EACP,aAAa;EACb,QAAQ;EACR,SAAS;EACT,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,iBAAiB,YAAY;AAEnC,SAAS,KAAK,EAAE,WAAW,GAAG,SAAsC;AAClE,QAAO,oBAAC,OAAD;EAAK,aAAU;EAAO,WAAW,GAAG,eAAe,MAAM,UAAU;EAAE,GAAI;EAAS,CAAA;;AAG3F,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC,OAAD;EAAK,aAAU;EAAc,WAAW,GAAG,eAAe,QAAQ,UAAU;EAAE,GAAI;EAAS,CAAA;;AAI/F,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;AACvE,QAAO,oBAAC,OAAD;EAAK,aAAU;EAAa,WAAW,GAAG,eAAe,OAAO,UAAU;EAAE,GAAI;EAAS,CAAA;;AAGlG,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;AAC7E,QACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,eAAe,aAAa,UAAU;EACpD,GAAI;EACJ,CAAA;;AAIN,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC,OAAD;EAAK,aAAU;EAAc,WAAW,GAAG,eAAe,QAAQ,UAAU;EAAE,GAAI;EAAS,CAAA;;AAI/F,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC,OAAD;EAAK,aAAU;EAAe,WAAW,GAAG,eAAe,SAAS,UAAU;EAAE,GAAI;EAAS,CAAA;;AAIjG,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC,OAAD;EAAK,aAAU;EAAc,WAAW,GAAG,eAAe,QAAQ,UAAU;EAAE,GAAI;EAAS,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.d.ts","names":[],"sources":["../../../src/client/ui/carousel.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","names":[],"sources":["../../../src/client/ui/carousel.tsx"],"mappings":";;;;;;KASK,WAAA,GAAc,oBAAA;AAAA,KACd,qBAAA,GAAwB,UAAA,QAAkB,gBAAA;AAAA,KAC1C,eAAA,GAAkB,qBAAA;AAAA,KAClB,cAAA,GAAiB,qBAAA;AAAA,KAEjB,aAAA;EACH,IAAA,GAAO,eAAA;EACP,OAAA,GAAU,cAAA;EACV,WAAA;EACA,MAAA,IAAU,GAAA,EAAK,WAAA;AAAA;AAAA,iBAwBR,QAAA,CAAA;EACP,WAAA;EACA,IAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,UAAwB,aAAA,GAAa,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAiFrC,eAAA,CAAA;EAAkB,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAapE,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAkBjE,gBAAA,CAAA;EACP,SAAA;EACA,OAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,MAAA,IAAO,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBA0B7B,YAAA,CAAA;EACP,SAAA;EACA,OAAA;EACA,IAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,MAAA,IAAO,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -96,7 +96,7 @@ function CarouselItem({ className, ...props }) {
|
|
|
96
96
|
...props
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
|
-
function CarouselPrevious({ className, variant = "
|
|
99
|
+
function CarouselPrevious({ className, variant = "outlined", size = "icon", ...props }) {
|
|
100
100
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
101
101
|
const ArrowLeftIcon = useIcon("arrowLeft");
|
|
102
102
|
return /* @__PURE__ */ jsxs(Button, {
|
|
@@ -113,7 +113,7 @@ function CarouselPrevious({ className, variant = "outline", size = "icon", ...pr
|
|
|
113
113
|
})]
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
|
-
function CarouselNext({ className, variant = "
|
|
116
|
+
function CarouselNext({ className, variant = "outlined", size = "icon", ...props }) {
|
|
117
117
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
118
118
|
const ArrowRightIcon = useIcon("arrowRight");
|
|
119
119
|
return /* @__PURE__ */ jsxs(Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.mjs","names":["React"],"sources":["../../../src/client/ui/carousel.tsx"],"sourcesContent":["\"use client\"
|
|
1
|
+
{"version":3,"file":"carousel.mjs","names":["React"],"sources":["../../../src/client/ui/carousel.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\";\nimport { useIcon } from \"../icons/icon-context\";\n\nimport { cn } from \"./utils\";\nimport { Button } from \"./button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div\n className={cn(\"flex\", orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outlined\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n const ArrowLeftIcon = useIcon(\"arrowLeft\");\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeftIcon />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outlined\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n const ArrowRightIcon = useIcon(\"arrowRight\");\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRightIcon />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n"],"mappings":"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"}
|
|
@@ -3,10 +3,18 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
|
3
3
|
import { Checkbox as Checkbox$1 } from "radix-ui";
|
|
4
4
|
|
|
5
5
|
//#region src/client/ui/checkbox.d.ts
|
|
6
|
+
declare const checkboxRecipe: (props?: ({
|
|
7
|
+
[x: string]: string | undefined;
|
|
8
|
+
} & {
|
|
9
|
+
className?: Partial<Record<"root" | "indicator", string>> | undefined;
|
|
10
|
+
}) | undefined) => {
|
|
11
|
+
root: string;
|
|
12
|
+
indicator: string;
|
|
13
|
+
};
|
|
6
14
|
declare function Checkbox({
|
|
7
15
|
className,
|
|
8
16
|
...props
|
|
9
17
|
}: React$1.ComponentProps<typeof Checkbox$1.Root>): react_jsx_runtime0.JSX.Element;
|
|
10
18
|
//#endregion
|
|
11
|
-
export { Checkbox };
|
|
19
|
+
export { Checkbox, checkboxRecipe };
|
|
12
20
|
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","names":[],"sources":["../../../src/client/ui/checkbox.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","names":[],"sources":["../../../src/client/ui/checkbox.tsx"],"mappings":";;;;;cASM,cAAA,GAAc,KAAA;EAAA;;cAMlB,OAAA,CAAA,MAAA;AAAA;;;;iBAIO,QAAA,CAAA;EAAW,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,UAAA,CAAkB,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useIcon } from "../icons/icon-context.mjs";
|
|
3
3
|
import { cn } from "./utils.mjs";
|
|
4
|
+
import { defineSlotRecipe } from "../ui-resolver/recipe.mjs";
|
|
4
5
|
import "react";
|
|
5
6
|
import { jsx } from "react/jsx-runtime";
|
|
6
7
|
import { Checkbox as Checkbox$1 } from "radix-ui";
|
|
7
8
|
//#region src/client/ui/checkbox.tsx
|
|
9
|
+
const checkboxRecipe = defineSlotRecipe({
|
|
10
|
+
slots: ["root", "indicator"],
|
|
11
|
+
base: {
|
|
12
|
+
root: "peer relative size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none hit-area-4 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary",
|
|
13
|
+
indicator: "grid place-content-center text-current transition-none"
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
const defaultClasses = checkboxRecipe();
|
|
8
17
|
function Checkbox({ className, ...props }) {
|
|
9
18
|
const CheckIcon = useIcon("check");
|
|
10
19
|
return /* @__PURE__ */ jsx(Checkbox$1.Root, {
|
|
11
20
|
"data-slot": "checkbox",
|
|
12
|
-
className: cn(
|
|
21
|
+
className: cn(defaultClasses.root, className),
|
|
13
22
|
...props,
|
|
14
23
|
children: /* @__PURE__ */ jsx(Checkbox$1.Indicator, {
|
|
15
24
|
"data-slot": "checkbox-indicator",
|
|
16
|
-
className:
|
|
25
|
+
className: defaultClasses.indicator,
|
|
17
26
|
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
|
|
18
27
|
})
|
|
19
28
|
});
|
|
20
29
|
}
|
|
21
30
|
//#endregion
|
|
22
|
-
export { Checkbox };
|
|
31
|
+
export { Checkbox, checkboxRecipe };
|
|
23
32
|
|
|
24
33
|
//# sourceMappingURL=checkbox.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.mjs","names":["CheckboxPrimitive"],"sources":["../../../src/client/ui/checkbox.tsx"],"sourcesContent":["\"use client\"
|
|
1
|
+
{"version":3,"file":"checkbox.mjs","names":["CheckboxPrimitive"],"sources":["../../../src/client/ui/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { useIcon } from \"../icons/icon-context\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { defineSlotRecipe } from \"../ui-resolver/recipe\";\nimport { cn } from \"./utils\";\n\nconst checkboxRecipe = defineSlotRecipe({\n slots: [\"root\", \"indicator\"] as const,\n base: {\n root: \"peer relative size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none hit-area-4 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary\",\n indicator: \"grid place-content-center text-current transition-none\",\n },\n});\n\nconst defaultClasses = checkboxRecipe();\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n const CheckIcon = useIcon(\"check\");\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(defaultClasses.root, className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className={defaultClasses.indicator}\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox, checkboxRecipe };\n"],"mappings":";;;;;;;;AASA,MAAM,iBAAiB,iBAAiB;CACtC,OAAO,CAAC,QAAQ,YAAY;CAC5B,MAAM;EACJ,MAAM;EACN,WAAW;EACZ;CACF,CAAC;AAEF,MAAM,iBAAiB,gBAAgB;AAEvC,SAAS,SAAS,EAAE,WAAW,GAAG,SAA8D;CAC9F,MAAM,YAAY,QAAQ,QAAQ;AAElC,QACE,oBAACA,WAAkB,MAAnB;EACE,aAAU;EACV,WAAW,GAAG,eAAe,MAAM,UAAU;EAC7C,GAAI;YAEJ,oBAACA,WAAkB,WAAnB;GACE,aAAU;GACV,WAAW,eAAe;aAE1B,oBAAC,WAAD,EAAW,WAAU,YAAa,CAAA;GACN,CAAA;EACP,CAAA"}
|
|
@@ -3,6 +3,18 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
|
3
3
|
import { Dialog as Dialog$1 } from "radix-ui";
|
|
4
4
|
|
|
5
5
|
//#region src/client/ui/dialog.d.ts
|
|
6
|
+
declare const dialogRecipe: (props?: ({
|
|
7
|
+
[x: string]: string | undefined;
|
|
8
|
+
} & {
|
|
9
|
+
className?: Partial<Record<"overlay" | "content" | "title" | "description" | "header" | "footer", string>> | undefined;
|
|
10
|
+
}) | undefined) => {
|
|
11
|
+
overlay: string;
|
|
12
|
+
content: string;
|
|
13
|
+
title: string;
|
|
14
|
+
description: string;
|
|
15
|
+
header: string;
|
|
16
|
+
footer: string;
|
|
17
|
+
};
|
|
6
18
|
declare function Dialog({
|
|
7
19
|
...props
|
|
8
20
|
}: React$1.ComponentProps<typeof Dialog$1.Root>): react_jsx_runtime0.JSX.Element;
|
|
@@ -41,5 +53,5 @@ declare function DialogDescription({
|
|
|
41
53
|
...props
|
|
42
54
|
}: React$1.ComponentProps<typeof Dialog$1.Description>): react_jsx_runtime0.JSX.Element;
|
|
43
55
|
//#endregion
|
|
44
|
-
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
|
|
56
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, dialogRecipe };
|
|
45
57
|
//# sourceMappingURL=dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.d.ts","names":[],"sources":["../../../src/client/ui/dialog.tsx"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"dialog.d.ts","names":[],"sources":["../../../src/client/ui/dialog.tsx"],"mappings":";;;;;cAQM,YAAA,GAAY,KAAA;EAAA;;cAYhB,OAAA,CAAA,MAAA;AAAA;;;;;;;;iBAIO,MAAA,CAAA;EAAA,GAAY;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,IAAA,IAAK,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAItE,aAAA,CAAA;EAAA,GAAmB;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,OAAA,IAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAIhF,YAAA,CAAA;EAAA,GAAkB;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,MAAA,IAAO,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI9E,WAAA,CAAA;EAAA,GAAiB;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAI5E,aAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,OAAA,IAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAU9C,aAAA,CAAA;EACP,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,OAAA,IAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAe9C,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAMjE,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAMjE,WAAA,CAAA;EAAc,SAAA;EAAA,GAAc;AAAA,GAAS,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,KAAA,IAAM,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAUvF,iBAAA,CAAA;EACP,SAAA;EAAA,GACG;AAAA,GACF,OAAA,CAAM,cAAA,QAAsB,QAAA,CAAgB,WAAA,IAAY,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|