@q9labsai/chalk-ui 4.0.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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/dist/assets.d.ts +2 -0
  3. package/dist/assets.d.ts.map +1 -0
  4. package/dist/assets.js +2 -0
  5. package/dist/badge.d.ts +14 -0
  6. package/dist/badge.d.ts.map +1 -0
  7. package/dist/badge.js +73 -0
  8. package/dist/button.d.ts +9 -0
  9. package/dist/button.d.ts.map +1 -0
  10. package/dist/button.js +49 -0
  11. package/dist/card.d.ts +12 -0
  12. package/dist/card.d.ts.map +1 -0
  13. package/dist/card.js +63 -0
  14. package/dist/icon-button.d.ts +9 -0
  15. package/dist/icon-button.d.ts.map +1 -0
  16. package/dist/icon-button.js +37 -0
  17. package/dist/index.d.ts +19 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +897 -0
  20. package/dist/input.d.ts +12 -0
  21. package/dist/input.d.ts.map +1 -0
  22. package/dist/input.js +44 -0
  23. package/dist/lib/theme.d.ts +8 -0
  24. package/dist/lib/theme.d.ts.map +1 -0
  25. package/dist/lib/utils.d.ts +3 -0
  26. package/dist/lib/utils.d.ts.map +1 -0
  27. package/dist/lib/utils.js +9 -0
  28. package/dist/logos/chalk-icon.svg +34 -0
  29. package/dist/logos/chalk-logo-on-dark.svg +35 -0
  30. package/dist/logos/chalk-logo.svg +45 -0
  31. package/dist/progress-bar.d.ts +13 -0
  32. package/dist/progress-bar.d.ts.map +1 -0
  33. package/dist/progress-bar.js +35 -0
  34. package/dist/reactions.d.ts +33 -0
  35. package/dist/reactions.d.ts.map +1 -0
  36. package/dist/reactions.js +179 -0
  37. package/dist/select.d.ts +26 -0
  38. package/dist/select.d.ts.map +1 -0
  39. package/dist/select.js +49 -0
  40. package/dist/skeleton.d.ts +11 -0
  41. package/dist/skeleton.d.ts.map +1 -0
  42. package/dist/skeleton.js +25 -0
  43. package/dist/spinner.d.ts +9 -0
  44. package/dist/spinner.d.ts.map +1 -0
  45. package/dist/spinner.js +26 -0
  46. package/dist/status-badge.d.ts +9 -0
  47. package/dist/status-badge.d.ts.map +1 -0
  48. package/dist/status-badge.js +18 -0
  49. package/dist/styles.css +1461 -0
  50. package/dist/test-utils.d.ts +3 -0
  51. package/dist/test-utils.d.ts.map +1 -0
  52. package/dist/textarea.d.ts +10 -0
  53. package/dist/textarea.d.ts.map +1 -0
  54. package/dist/textarea.js +52 -0
  55. package/dist/toast.d.ts +45 -0
  56. package/dist/toast.d.ts.map +1 -0
  57. package/dist/toast.js +131 -0
  58. package/dist/toggle-group.d.ts +11 -0
  59. package/dist/toggle-group.d.ts.map +1 -0
  60. package/dist/toggle-group.js +101 -0
  61. package/dist/toggle.d.ts +20 -0
  62. package/dist/toggle.d.ts.map +1 -0
  63. package/dist/toggle.js +48 -0
  64. package/dist/tooltip.d.ts +15 -0
  65. package/dist/tooltip.d.ts.map +1 -0
  66. package/dist/tooltip.js +101 -0
  67. package/package.json +199 -0
@@ -0,0 +1,3 @@
1
+ import type * as React from "react";
2
+ export declare function renderForwardRef(component: unknown, props?: Record<string, unknown>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
3
+ //# sourceMappingURL=test-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAMpC,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,0EAEvF"}
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
3
+ readonly label?: string;
4
+ readonly error?: string;
5
+ readonly showCount?: boolean;
6
+ readonly resize?: "none" | "vertical" | "horizontal" | "both";
7
+ }
8
+ declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
9
+ export { Textarea };
10
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../src/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC;IACtF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;CAC/D;AAED,QAAA,MAAM,QAAQ,2FAqCZ,CAAC;AAIH,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,52 @@
1
+ // src/textarea.tsx
2
+ import * as React from "react";
3
+
4
+ // src/lib/utils.ts
5
+ import { clsx } from "clsx";
6
+ import { twMerge } from "tailwind-merge";
7
+ function cn(...inputs) {
8
+ return twMerge(clsx(inputs));
9
+ }
10
+
11
+ // src/textarea.tsx
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ var Textarea = React.forwardRef(function Textarea2({ label, error, showCount = false, resize = "vertical", maxLength, value, className, id, ...props }, ref) {
14
+ const generatedId = React.useId();
15
+ const textareaId = id ?? generatedId;
16
+ const currentLength = typeof value === "string" ? value.length : 0;
17
+ return /* @__PURE__ */ jsxs("label", { className: "flex w-full flex-col gap-1.5", htmlFor: textareaId, children: [
18
+ label ? /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-muted-foreground", children: label }) : null,
19
+ /* @__PURE__ */ jsx(
20
+ "textarea",
21
+ {
22
+ ref,
23
+ id: textareaId,
24
+ value,
25
+ maxLength,
26
+ "aria-invalid": Boolean(error),
27
+ className: cn(
28
+ "border-input bg-background focus-visible:border-ring focus-visible:ring-ring/50 disabled:bg-muted flex min-h-20 w-full rounded-lg border px-3 py-2 text-sm outline-none transition-colors focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
29
+ resize === "none" && "resize-none",
30
+ resize === "vertical" && "resize-y",
31
+ resize === "horizontal" && "resize-x",
32
+ resize === "both" && "resize",
33
+ error && "border-destructive",
34
+ className
35
+ ),
36
+ ...props
37
+ }
38
+ ),
39
+ error || showCount && maxLength ? /* @__PURE__ */ jsxs("span", { className: cn("flex justify-between text-xs text-muted-foreground", error && "text-destructive"), children: [
40
+ /* @__PURE__ */ jsx("span", { children: error }),
41
+ showCount && maxLength ? /* @__PURE__ */ jsxs("span", { children: [
42
+ currentLength,
43
+ " / ",
44
+ maxLength
45
+ ] }) : null
46
+ ] }) : null
47
+ ] });
48
+ });
49
+ Textarea.displayName = "Textarea";
50
+ export {
51
+ Textarea
52
+ };
@@ -0,0 +1,45 @@
1
+ import * as React from "react";
2
+ import { Toast as ToastPrimitive } from "@base-ui/react/toast";
3
+ export type ToastType = "neutral" | "info" | "success" | "warning" | "error" | "danger";
4
+ export interface ToastOptions {
5
+ actionProps?: React.ComponentPropsWithoutRef<"button">;
6
+ data?: Record<string, unknown>;
7
+ description?: React.ReactNode;
8
+ id?: string;
9
+ onClose?: () => void;
10
+ priority?: "low" | "high";
11
+ timeout?: number;
12
+ title?: React.ReactNode;
13
+ type?: ToastType;
14
+ }
15
+ export declare const toastManager: import("@base-ui/react").ToastManager<any>;
16
+ export declare const toast: ((options: ToastOptions) => string) & {
17
+ danger: (options: Omit<ToastOptions, "type">) => string;
18
+ dismiss: (id?: string) => void;
19
+ error: (options: Omit<ToastOptions, "type">) => string;
20
+ info: (options: Omit<ToastOptions, "type">) => string;
21
+ success: (options: Omit<ToastOptions, "type">) => string;
22
+ warning: (options: Omit<ToastOptions, "type">) => string;
23
+ };
24
+ declare function ToastProvider({ toastManager: manager, ...props }: React.ComponentProps<typeof ToastPrimitive.Provider>): import("react/jsx-runtime").JSX.Element;
25
+ declare const ToastRoot: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
26
+ declare const ToastContent: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastContentProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
27
+ declare const ToastTitle: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
28
+ declare const ToastDescription: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
29
+ declare const ToastClose: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
30
+ declare const ToastAction: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastActionProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
31
+ declare function ToastViewport({ className, children, ...props }: React.ComponentPropsWithoutRef<typeof ToastPrimitive.Viewport>): import("react/jsx-runtime").JSX.Element;
32
+ declare function useToast<Data extends object = Record<string, unknown>>(): import("@base-ui/react").UseToastManagerReturnValue<Data>;
33
+ declare const Toast: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>> & {
34
+ Action: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastActionProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
35
+ Close: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastCloseProps, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
36
+ Content: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastContentProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
37
+ Description: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
38
+ Provider: typeof ToastProvider;
39
+ Root: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastRootProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
40
+ Title: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").ToastTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
41
+ Viewport: typeof ToastViewport;
42
+ };
43
+ export type ToastRootProps = React.ComponentPropsWithoutRef<typeof ToastPrimitive.Root>;
44
+ export { Toast, ToastAction, ToastClose, ToastContent, ToastDescription, ToastProvider, ToastRoot, ToastTitle, ToastViewport, useToast };
45
+ //# sourceMappingURL=toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../src/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK/D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExF,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAID,eAAO,MAAM,YAAY,4CAAqB,CAAC;AAE/C,eAAO,MAAM,KAAK,aAA2B,YAAY;sBACrC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;mBAC7B,MAAM;qBACJ,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;oBAC3B,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;uBACvB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;uBAC1B,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;CAC7C,CAAC;AAEH,iBAAS,aAAa,CAAC,EAAE,YAAY,EAAE,OAA4B,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC,2CAEpI;AAED,QAAA,MAAM,SAAS,gLAEb,CAAC;AAEH,QAAA,MAAM,YAAY,mLAEhB,CAAC;AAEH,QAAA,MAAM,UAAU,yLAEd,CAAC;AAEH,QAAA,MAAM,gBAAgB,mMAEpB,CAAC;AAEH,QAAA,MAAM,UAAU,uLAMd,CAAC;AAEH,QAAA,MAAM,WAAW,wLAEf,CAAC;AAEH,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC,2CAsCvH;AAED,iBAAS,QAAQ,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,+DAE9D;AAED,QAAA,MAAM,KAAK;;;;;;;;;CAST,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAExF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC"}
package/dist/toast.js ADDED
@@ -0,0 +1,131 @@
1
+ "use client";
2
+
3
+ // src/toast.tsx
4
+ import * as React from "react";
5
+ import { Toast as ToastPrimitive } from "@base-ui/react/toast";
6
+
7
+ // src/lib/theme.ts
8
+ var THEME_ATTRIBUTE_NAMES = ["data-chalk-theme", "data-theme"];
9
+ var THEME_CLASS_NAMES = ["dark", "light"];
10
+ var SYSTEM_DARK_QUERY = "(prefers-color-scheme: dark)";
11
+ var normalizeTheme = (value) => {
12
+ if (value === "dark" || value === "light") {
13
+ return value;
14
+ }
15
+ return null;
16
+ };
17
+ var resolveThemeFromElement = (element) => {
18
+ if (!element) return null;
19
+ const attributeTheme = THEME_ATTRIBUTE_NAMES.map((attributeName) => normalizeTheme(element.getAttribute(attributeName))).find((theme) => theme !== null);
20
+ const classTheme = THEME_CLASS_NAMES.find((theme) => element.classList.contains(theme));
21
+ return attributeTheme ?? classTheme ?? null;
22
+ };
23
+ var resolveSystemTheme = () => {
24
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return null;
25
+ return window.matchMedia(SYSTEM_DARK_QUERY).matches ? "dark" : "light";
26
+ };
27
+ var resolveExplicitThemeFromDocument = () => {
28
+ if (typeof document === "undefined") return null;
29
+ return resolveThemeFromElement(document.documentElement) ?? resolveThemeFromElement(document.body);
30
+ };
31
+ var resolveFallbackTheme = ({ defaultTheme, allowSystem }) => {
32
+ if (!allowSystem) return defaultTheme;
33
+ return resolveSystemTheme() ?? defaultTheme;
34
+ };
35
+ var resolveThemeFromDocument = ({ defaultTheme = "light", allowSystem = true } = {}) => {
36
+ const explicitTheme = resolveExplicitThemeFromDocument();
37
+ return explicitTheme ?? resolveFallbackTheme({ defaultTheme, allowSystem });
38
+ };
39
+ var resolvePortalThemeFromDocument = ({ defaultTheme = "light", allowSystem = true } = {}) => {
40
+ if (typeof document === "undefined") return defaultTheme;
41
+ const portalTheme = normalizeTheme(document.querySelector("[data-chalk-theme]")?.getAttribute("data-chalk-theme"));
42
+ if (portalTheme) return portalTheme;
43
+ return resolveThemeFromDocument({ defaultTheme, allowSystem });
44
+ };
45
+
46
+ // src/lib/utils.ts
47
+ import { clsx } from "clsx";
48
+ import { twMerge } from "tailwind-merge";
49
+ function cn(...inputs) {
50
+ return twMerge(clsx(inputs));
51
+ }
52
+
53
+ // src/toast.tsx
54
+ import { jsx, jsxs } from "react/jsx-runtime";
55
+ var sharedToastManager = ToastPrimitive.createToastManager();
56
+ var toastManager = sharedToastManager;
57
+ var toast = Object.assign((options) => sharedToastManager.add(options), {
58
+ danger: (options) => sharedToastManager.add({ ...options, type: "danger" }),
59
+ dismiss: (id) => sharedToastManager.close(id),
60
+ error: (options) => sharedToastManager.add({ ...options, type: "error" }),
61
+ info: (options) => sharedToastManager.add({ ...options, type: "info" }),
62
+ success: (options) => sharedToastManager.add({ ...options, type: "success" }),
63
+ warning: (options) => sharedToastManager.add({ ...options, type: "warning" })
64
+ });
65
+ function ToastProvider({ toastManager: manager = sharedToastManager, ...props }) {
66
+ return /* @__PURE__ */ jsx(ToastPrimitive.Provider, { toastManager: manager, ...props });
67
+ }
68
+ var ToastRoot = React.forwardRef(function ToastRoot2({ className, toast: toastObject, ...props }, ref) {
69
+ return /* @__PURE__ */ jsx(ToastPrimitive.Root, { ref, "data-slot": "toast", "data-type": toastObject.type ?? "neutral", toast: toastObject, className: cn("chalk-ui-toast", className), ...props });
70
+ });
71
+ var ToastContent = React.forwardRef(function ToastContent2({ className, ...props }, ref) {
72
+ return /* @__PURE__ */ jsx(ToastPrimitive.Content, { ref, "data-slot": "toast-content", className: cn("chalk-ui-toast-content", className), ...props });
73
+ });
74
+ var ToastTitle = React.forwardRef(function ToastTitle2({ className, ...props }, ref) {
75
+ return /* @__PURE__ */ jsx(ToastPrimitive.Title, { ref, "data-slot": "toast-title", className: cn("chalk-ui-toast-title", className), ...props });
76
+ });
77
+ var ToastDescription = React.forwardRef(function ToastDescription2({ className, ...props }, ref) {
78
+ return /* @__PURE__ */ jsx(ToastPrimitive.Description, { ref, "data-slot": "toast-description", className: cn("chalk-ui-toast-description", className), ...props });
79
+ });
80
+ var ToastClose = React.forwardRef(function ToastClose2({ "aria-label": ariaLabel = "Dismiss notification", children = "\xD7", className, ...props }, ref) {
81
+ return /* @__PURE__ */ jsx(ToastPrimitive.Close, { ref, "aria-label": ariaLabel, "data-slot": "toast-close", className: cn("chalk-ui-toast-close chalk-ui-focusable", className), ...props, children });
82
+ });
83
+ var ToastAction = React.forwardRef(function ToastAction2({ className, ...props }, ref) {
84
+ return /* @__PURE__ */ jsx(ToastPrimitive.Action, { ref, "data-slot": "toast-action", className: cn("chalk-ui-focusable", className), ...props });
85
+ });
86
+ function ToastViewport({ className, children, ...props }) {
87
+ const { toasts } = ToastPrimitive.useToastManager();
88
+ const portalTheme = resolvePortalThemeFromDocument();
89
+ return /* @__PURE__ */ jsxs(ToastPrimitive.Viewport, { "data-chalk": true, "data-chalk-theme": portalTheme, "data-slot": "toast-viewport", className: cn("chalk-ui-root chalk-ui-toast-viewport", className), ...props, children: [
90
+ children,
91
+ toasts.map((toastObject) => {
92
+ const actionProps = toastObject.actionProps;
93
+ const { children: actionLabel, ...restActionProps } = actionProps ?? {};
94
+ return /* @__PURE__ */ jsxs(ToastPrimitive.Root, { "data-slot": "toast", "data-type": toastObject.type ?? "neutral", toast: toastObject, className: "chalk-ui-toast", children: [
95
+ /* @__PURE__ */ jsxs(ToastPrimitive.Content, { "data-slot": "toast-content", className: "chalk-ui-toast-content", children: [
96
+ toastObject.title ? /* @__PURE__ */ jsx(ToastPrimitive.Title, { "data-slot": "toast-title", className: "chalk-ui-toast-title", children: toastObject.title }) : null,
97
+ toastObject.description ? /* @__PURE__ */ jsx(ToastPrimitive.Description, { "data-slot": "toast-description", className: "chalk-ui-toast-description", children: toastObject.description }) : null,
98
+ actionProps ? /* @__PURE__ */ jsx(ToastPrimitive.Action, { "data-slot": "toast-action", className: "chalk-ui-focusable", ...restActionProps, children: actionLabel ?? "Action" }) : null
99
+ ] }),
100
+ /* @__PURE__ */ jsx(ToastPrimitive.Close, { "aria-label": "Dismiss notification", "data-slot": "toast-close", className: "chalk-ui-toast-close chalk-ui-focusable", children: "\xD7" })
101
+ ] }, toastObject.id);
102
+ })
103
+ ] });
104
+ }
105
+ function useToast() {
106
+ return ToastPrimitive.useToastManager();
107
+ }
108
+ var Toast = Object.assign(ToastRoot, {
109
+ Action: ToastAction,
110
+ Close: ToastClose,
111
+ Content: ToastContent,
112
+ Description: ToastDescription,
113
+ Provider: ToastProvider,
114
+ Root: ToastRoot,
115
+ Title: ToastTitle,
116
+ Viewport: ToastViewport
117
+ });
118
+ export {
119
+ Toast,
120
+ ToastAction,
121
+ ToastClose,
122
+ ToastContent,
123
+ ToastDescription,
124
+ ToastProvider,
125
+ ToastRoot,
126
+ ToastTitle,
127
+ ToastViewport,
128
+ toast,
129
+ toastManager,
130
+ useToast
131
+ };
@@ -0,0 +1,11 @@
1
+ import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
2
+ import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ import { toggleVariants } from "./toggle";
5
+ declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: ToggleGroupPrimitive.Props & VariantProps<typeof toggleVariants> & {
6
+ spacing?: number;
7
+ orientation?: "horizontal" | "vertical";
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ declare function ToggleGroupItem({ className, children, variant, size, ...props }: TogglePrimitive.Props & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
10
+ export { ToggleGroup, ToggleGroupItem };
11
+ //# sourceMappingURL=toggle-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../src/toggle-group.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAc1C,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAW,EACX,WAA0B,EAC1B,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,KAAK,GAC3B,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC,2CAeF;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAmB,EAAE,IAAgB,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,2CAwB7J;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use client";
2
+
3
+ // src/toggle-group.tsx
4
+ import * as React2 from "react";
5
+ import { Toggle as TogglePrimitive2 } from "@base-ui/react/toggle";
6
+ import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group";
7
+ import "class-variance-authority";
8
+
9
+ // src/lib/utils.ts
10
+ import { clsx } from "clsx";
11
+ import { twMerge } from "tailwind-merge";
12
+ function cn(...inputs) {
13
+ return twMerge(clsx(inputs));
14
+ }
15
+
16
+ // src/toggle.tsx
17
+ import * as React from "react";
18
+ import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
19
+ import { cva } from "class-variance-authority";
20
+ import { jsx, jsxs } from "react/jsx-runtime";
21
+ var toggleVariants = cva(
22
+ "hover:text-foreground aria-pressed:bg-accent focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-accent data-[state=on]:text-accent-foreground gap-1 rounded-lg text-sm font-medium transition-colors [&_svg:not([class*='size-'])]:size-4 group/toggle hover:bg-accent inline-flex items-center justify-center whitespace-nowrap outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
23
+ {
24
+ variants: {
25
+ variant: {
26
+ default: "bg-transparent",
27
+ outline: "border-input hover:bg-accent border bg-transparent"
28
+ },
29
+ size: {
30
+ default: "h-8 min-w-8 px-2",
31
+ sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]",
32
+ lg: "h-9 min-w-9 px-2.5"
33
+ }
34
+ },
35
+ defaultVariants: {
36
+ variant: "default",
37
+ size: "default"
38
+ }
39
+ }
40
+ );
41
+
42
+ // src/toggle-group.tsx
43
+ import { jsx as jsx2 } from "react/jsx-runtime";
44
+ var ToggleGroupContext = React2.createContext({
45
+ size: "default",
46
+ variant: "default",
47
+ spacing: 0,
48
+ orientation: "horizontal"
49
+ });
50
+ function ToggleGroup({
51
+ className,
52
+ variant,
53
+ size,
54
+ spacing = 0,
55
+ orientation = "horizontal",
56
+ children,
57
+ ...props
58
+ }) {
59
+ return /* @__PURE__ */ jsx2(
60
+ ToggleGroupPrimitive,
61
+ {
62
+ "data-slot": "toggle-group",
63
+ "data-variant": variant,
64
+ "data-size": size,
65
+ "data-spacing": spacing,
66
+ "data-orientation": orientation,
67
+ style: { "--gap": spacing },
68
+ className: cn("rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch", className),
69
+ ...props,
70
+ children: /* @__PURE__ */ jsx2(ToggleGroupContext.Provider, { value: { variant, size, spacing, orientation }, children })
71
+ }
72
+ );
73
+ }
74
+ function ToggleGroupItem({ className, children, variant = "default", size = "default", ...props }) {
75
+ const context = React2.useContext(ToggleGroupContext);
76
+ const resolvedVariant = context.variant || variant;
77
+ const resolvedSize = context.size || size;
78
+ return /* @__PURE__ */ jsx2(
79
+ TogglePrimitive2,
80
+ {
81
+ "data-slot": "toggle-group-item",
82
+ "data-variant": resolvedVariant,
83
+ "data-size": resolvedSize,
84
+ "data-spacing": context.spacing,
85
+ className: cn(
86
+ "group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg shrink-0 focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t",
87
+ toggleVariants({
88
+ variant: resolvedVariant,
89
+ size: resolvedSize
90
+ }),
91
+ className
92
+ ),
93
+ ...props,
94
+ children
95
+ }
96
+ );
97
+ }
98
+ export {
99
+ ToggleGroup,
100
+ ToggleGroupItem
101
+ };
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ declare const toggleVariants: (props?: ({
5
+ variant?: "default" | "outline" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ type ToggleProps = Omit<TogglePrimitive.Props, "pressed" | "onPressedChange" | "onChange"> & VariantProps<typeof toggleVariants> & {
9
+ readonly checked?: boolean;
10
+ readonly enabled?: boolean;
11
+ readonly onChange?: (checked: boolean) => void;
12
+ readonly pressed?: boolean;
13
+ readonly onPressedChange?: (checked: boolean) => void;
14
+ readonly label?: React.ReactNode;
15
+ readonly ariaLabel?: string;
16
+ readonly ariaLabelledby?: string;
17
+ };
18
+ declare function Toggle({ className, variant, size, checked, enabled, onChange, label, ariaLabel, ariaLabelledby, pressed, onPressedChange, id, ...props }: ToggleProps): import("react/jsx-runtime").JSX.Element;
19
+ export { Toggle, toggleVariants };
20
+ //# sourceMappingURL=toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../src/toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,cAAc;;;8EAmBnB,CAAC;AAEF,KAAK,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,UAAU,CAAC,GACxF,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEJ,iBAAS,MAAM,CAAC,EAAE,SAAS,EAAE,OAAmB,EAAE,IAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAatL;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
package/dist/toggle.js ADDED
@@ -0,0 +1,48 @@
1
+ // src/toggle.tsx
2
+ import * as React from "react";
3
+ import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
4
+ import { cva } from "class-variance-authority";
5
+
6
+ // src/lib/utils.ts
7
+ import { clsx } from "clsx";
8
+ import { twMerge } from "tailwind-merge";
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+
13
+ // src/toggle.tsx
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ var toggleVariants = cva(
16
+ "hover:text-foreground aria-pressed:bg-accent focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-accent data-[state=on]:text-accent-foreground gap-1 rounded-lg text-sm font-medium transition-colors [&_svg:not([class*='size-'])]:size-4 group/toggle hover:bg-accent inline-flex items-center justify-center whitespace-nowrap outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
17
+ {
18
+ variants: {
19
+ variant: {
20
+ default: "bg-transparent",
21
+ outline: "border-input hover:bg-accent border bg-transparent"
22
+ },
23
+ size: {
24
+ default: "h-8 min-w-8 px-2",
25
+ sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-1.5 text-[0.8rem]",
26
+ lg: "h-9 min-w-9 px-2.5"
27
+ }
28
+ },
29
+ defaultVariants: {
30
+ variant: "default",
31
+ size: "default"
32
+ }
33
+ }
34
+ );
35
+ function Toggle({ className, variant = "default", size = "default", checked, enabled, onChange, label, ariaLabel, ariaLabelledby, pressed, onPressedChange, id, ...props }) {
36
+ const resolvedPressed = checked ?? enabled ?? pressed;
37
+ const generatedId = React.useId();
38
+ const toggleId = id ?? (label ? `chalk-toggle-${generatedId.replace(/:/g, "")}` : void 0);
39
+ const toggle = /* @__PURE__ */ jsx(TogglePrimitive, { id: toggleId, "data-slot": "toggle", className: cn(toggleVariants({ variant, size, className })), pressed: resolvedPressed, onPressedChange: onPressedChange ?? onChange, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, ...props });
40
+ return label ? /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
41
+ toggle,
42
+ /* @__PURE__ */ jsx("label", { htmlFor: toggleId, children: label })
43
+ ] }) : toggle;
44
+ }
45
+ export {
46
+ Toggle,
47
+ toggleVariants
48
+ };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
3
+ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): import("react/jsx-runtime").JSX.Element;
4
+ type TooltipProps = TooltipPrimitive.Root.Props & {
5
+ readonly content?: React.ReactNode;
6
+ readonly children?: React.ReactNode;
7
+ readonly position?: "top" | "bottom" | "left" | "right";
8
+ readonly delay?: number;
9
+ readonly className?: string;
10
+ };
11
+ declare function Tooltip({ content, children, position, delay, className, ...props }: TooltipProps): import("react/jsx-runtime").JSX.Element;
12
+ declare function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
13
+ declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): import("react/jsx-runtime").JSX.Element;
14
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
15
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../src/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAKrE,iBAAS,eAAe,CAAC,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,2CAEhF;AAED,KAAK,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,GAAG;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,iBAAS,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAgB,EAAE,KAAW,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,2CAyBvG;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,2CAEnE;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,IAAY,EAAE,UAAc,EAAE,KAAgB,EAAE,WAAe,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,CAAC,2CAuBlP;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use client";
2
+
3
+ // src/tooltip.tsx
4
+ import "react";
5
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
6
+
7
+ // src/lib/utils.ts
8
+ import { clsx } from "clsx";
9
+ import { twMerge } from "tailwind-merge";
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+
14
+ // src/lib/theme.ts
15
+ var THEME_ATTRIBUTE_NAMES = ["data-chalk-theme", "data-theme"];
16
+ var THEME_CLASS_NAMES = ["dark", "light"];
17
+ var SYSTEM_DARK_QUERY = "(prefers-color-scheme: dark)";
18
+ var normalizeTheme = (value) => {
19
+ if (value === "dark" || value === "light") {
20
+ return value;
21
+ }
22
+ return null;
23
+ };
24
+ var resolveThemeFromElement = (element) => {
25
+ if (!element) return null;
26
+ const attributeTheme = THEME_ATTRIBUTE_NAMES.map((attributeName) => normalizeTheme(element.getAttribute(attributeName))).find((theme) => theme !== null);
27
+ const classTheme = THEME_CLASS_NAMES.find((theme) => element.classList.contains(theme));
28
+ return attributeTheme ?? classTheme ?? null;
29
+ };
30
+ var resolveSystemTheme = () => {
31
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return null;
32
+ return window.matchMedia(SYSTEM_DARK_QUERY).matches ? "dark" : "light";
33
+ };
34
+ var resolveExplicitThemeFromDocument = () => {
35
+ if (typeof document === "undefined") return null;
36
+ return resolveThemeFromElement(document.documentElement) ?? resolveThemeFromElement(document.body);
37
+ };
38
+ var resolveFallbackTheme = ({ defaultTheme, allowSystem }) => {
39
+ if (!allowSystem) return defaultTheme;
40
+ return resolveSystemTheme() ?? defaultTheme;
41
+ };
42
+ var resolveThemeFromDocument = ({ defaultTheme = "light", allowSystem = true } = {}) => {
43
+ const explicitTheme = resolveExplicitThemeFromDocument();
44
+ return explicitTheme ?? resolveFallbackTheme({ defaultTheme, allowSystem });
45
+ };
46
+ var resolvePortalThemeFromDocument = ({ defaultTheme = "light", allowSystem = true } = {}) => {
47
+ if (typeof document === "undefined") return defaultTheme;
48
+ const portalTheme = normalizeTheme(document.querySelector("[data-chalk-theme]")?.getAttribute("data-chalk-theme"));
49
+ if (portalTheme) return portalTheme;
50
+ return resolveThemeFromDocument({ defaultTheme, allowSystem });
51
+ };
52
+
53
+ // src/tooltip.tsx
54
+ import { jsx, jsxs } from "react/jsx-runtime";
55
+ function TooltipProvider({ delay = 0, ...props }) {
56
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delay, ...props });
57
+ }
58
+ function Tooltip({ content, children, position = "top", delay = 200, className, ...props }) {
59
+ if (content !== void 0) {
60
+ return /* @__PURE__ */ jsx(TooltipProvider, { delay, children: /* @__PURE__ */ jsxs(TooltipPrimitive.Root, { children: [
61
+ /* @__PURE__ */ jsx(
62
+ TooltipPrimitive.Trigger,
63
+ {
64
+ render: (triggerProps) => /* @__PURE__ */ jsx("span", { ...triggerProps, className: "inline-flex", children })
65
+ }
66
+ ),
67
+ /* @__PURE__ */ jsx(TooltipContent, { className, side: position, children: content })
68
+ ] }) });
69
+ }
70
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
71
+ }
72
+ function TooltipTrigger({ ...props }) {
73
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
74
+ }
75
+ function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
76
+ const portalTheme = resolvePortalThemeFromDocument();
77
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Positioner, { align, alignOffset, side, sideOffset, className: "z-[9999]", children: /* @__PURE__ */ jsxs(
78
+ TooltipPrimitive.Popup,
79
+ {
80
+ "data-chalk": true,
81
+ "data-chalk-theme": portalTheme,
82
+ "data-slot": "tooltip-content",
83
+ className: cn(
84
+ "chalk-root",
85
+ "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-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 rounded-lg px-3 py-1.5 text-xs data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 bg-foreground text-background shadow-[var(--chalk-shadow-sm)] z-50 w-fit max-w-xs origin-(--transform-origin)",
86
+ className
87
+ ),
88
+ ...props,
89
+ children: [
90
+ children,
91
+ /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })
92
+ ]
93
+ }
94
+ ) }) });
95
+ }
96
+ export {
97
+ Tooltip,
98
+ TooltipContent,
99
+ TooltipProvider,
100
+ TooltipTrigger
101
+ };