@prototyperco/ui 0.5.0-alpha.0 → 0.5.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/components/accordion.cjs +154 -0
- package/dist/components/accordion.cjs.map +1 -0
- package/dist/components/accordion.d.cts +14 -0
- package/dist/components/accordion.d.ts +14 -0
- package/dist/components/accordion.js +127 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.cjs +324 -0
- package/dist/components/alert-dialog.cjs.map +1 -0
- package/dist/components/alert-dialog.d.cts +30 -0
- package/dist/components/alert-dialog.d.ts +30 -0
- package/dist/components/alert-dialog.js +289 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.cjs +105 -0
- package/dist/components/alert.cjs.map +1 -0
- package/dist/components/alert.d.cts +17 -0
- package/dist/components/alert.d.ts +17 -0
- package/dist/components/alert.js +78 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/autocomplete.cjs +512 -0
- package/dist/components/autocomplete.cjs.map +1 -0
- package/dist/components/autocomplete.d.cts +31 -0
- package/dist/components/autocomplete.d.ts +31 -0
- package/dist/components/autocomplete.js +472 -0
- package/dist/components/autocomplete.js.map +1 -0
- package/dist/components/avatar.cjs +144 -0
- package/dist/components/avatar.cjs.map +1 -0
- package/dist/components/avatar.d.cts +18 -0
- package/dist/components/avatar.d.ts +18 -0
- package/dist/components/avatar.js +115 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.cjs +81 -0
- package/dist/components/badge.cjs.map +1 -0
- package/dist/components/badge.d.cts +13 -0
- package/dist/components/badge.d.ts +13 -0
- package/dist/components/badge.js +56 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.cjs +142 -0
- package/dist/components/breadcrumb.cjs.map +1 -0
- package/dist/components/breadcrumb.d.cts +20 -0
- package/dist/components/breadcrumb.d.ts +20 -0
- package/dist/components/breadcrumb.js +112 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button.cjs +145 -0
- package/dist/components/button.cjs.map +1 -0
- package/dist/components/button.d.cts +16 -0
- package/dist/components/button.d.ts +16 -0
- package/dist/components/button.js +120 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.cjs +141 -0
- package/dist/components/card.cjs.map +1 -0
- package/dist/components/card.d.cts +23 -0
- package/dist/components/card.d.ts +23 -0
- package/dist/components/card.js +111 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox-group.cjs +56 -0
- package/dist/components/checkbox-group.cjs.map +1 -0
- package/dist/components/checkbox-group.d.cts +8 -0
- package/dist/components/checkbox-group.d.ts +8 -0
- package/dist/components/checkbox-group.js +32 -0
- package/dist/components/checkbox-group.js.map +1 -0
- package/dist/components/checkbox.cjs +152 -0
- package/dist/components/checkbox.cjs.map +1 -0
- package/dist/components/checkbox.d.cts +12 -0
- package/dist/components/checkbox.d.ts +12 -0
- package/dist/components/checkbox.js +126 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.cjs +89 -0
- package/dist/components/collapsible.cjs.map +1 -0
- package/dist/components/collapsible.d.cts +12 -0
- package/dist/components/collapsible.d.ts +12 -0
- package/dist/components/collapsible.js +63 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/color-picker.cjs +983 -0
- package/dist/components/color-picker.cjs.map +1 -0
- package/dist/components/color-picker.d.cts +41 -0
- package/dist/components/color-picker.d.ts +41 -0
- package/dist/components/color-picker.js +939 -0
- package/dist/components/color-picker.js.map +1 -0
- package/dist/components/columns.cjs +163 -0
- package/dist/components/columns.cjs.map +1 -0
- package/dist/components/columns.d.cts +16 -0
- package/dist/components/columns.d.ts +16 -0
- package/dist/components/columns.js +136 -0
- package/dist/components/columns.js.map +1 -0
- package/dist/components/combobox.cjs +633 -0
- package/dist/components/combobox.cjs.map +1 -0
- package/dist/components/combobox.d.cts +40 -0
- package/dist/components/combobox.d.ts +40 -0
- package/dist/components/combobox.js +576 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command-palette.cjs +370 -0
- package/dist/components/command-palette.cjs.map +1 -0
- package/dist/components/command-palette.d.cts +42 -0
- package/dist/components/command-palette.d.ts +42 -0
- package/dist/components/command-palette.js +329 -0
- package/dist/components/command-palette.js.map +1 -0
- package/dist/components/container.cjs +80 -0
- package/dist/components/container.cjs.map +1 -0
- package/dist/components/container.d.cts +27 -0
- package/dist/components/container.d.ts +27 -0
- package/dist/components/container.js +54 -0
- package/dist/components/container.js.map +1 -0
- package/dist/components/context-menu.cjs +309 -0
- package/dist/components/context-menu.cjs.map +1 -0
- package/dist/components/context-menu.d.cts +37 -0
- package/dist/components/context-menu.d.ts +37 -0
- package/dist/components/context-menu.js +271 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.cjs +319 -0
- package/dist/components/dialog.cjs.map +1 -0
- package/dist/components/dialog.d.cts +32 -0
- package/dist/components/dialog.d.ts +32 -0
- package/dist/components/dialog.js +285 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.cjs +185 -0
- package/dist/components/drawer.cjs.map +1 -0
- package/dist/components/drawer.d.cts +32 -0
- package/dist/components/drawer.d.ts +32 -0
- package/dist/components/drawer.js +151 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/field.cjs +334 -0
- package/dist/components/field.cjs.map +1 -0
- package/dist/components/field.d.cts +39 -0
- package/dist/components/field.d.ts +39 -0
- package/dist/components/field.js +299 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/fieldset.cjs +75 -0
- package/dist/components/fieldset.cjs.map +1 -0
- package/dist/components/fieldset.d.cts +12 -0
- package/dist/components/fieldset.d.ts +12 -0
- package/dist/components/fieldset.js +50 -0
- package/dist/components/fieldset.js.map +1 -0
- package/dist/components/form.cjs +52 -0
- package/dist/components/form.cjs.map +1 -0
- package/dist/components/form.d.cts +8 -0
- package/dist/components/form.d.ts +8 -0
- package/dist/components/form.js +28 -0
- package/dist/components/form.js.map +1 -0
- package/dist/components/input-group.cjs +338 -0
- package/dist/components/input-group.cjs.map +1 -0
- package/dist/components/input-group.d.cts +27 -0
- package/dist/components/input-group.d.ts +27 -0
- package/dist/components/input-group.js +307 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input.cjs +63 -0
- package/dist/components/input.cjs.map +1 -0
- package/dist/components/input.d.cts +8 -0
- package/dist/components/input.d.ts +8 -0
- package/dist/components/input.js +39 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.cjs +54 -0
- package/dist/components/label.cjs.map +1 -0
- package/dist/components/label.d.cts +8 -0
- package/dist/components/label.d.ts +8 -0
- package/dist/components/label.js +28 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/menu.cjs +305 -0
- package/dist/components/menu.cjs.map +1 -0
- package/dist/components/menu.d.cts +37 -0
- package/dist/components/menu.d.ts +37 -0
- package/dist/components/menu.js +267 -0
- package/dist/components/menu.js.map +1 -0
- package/dist/components/menubar.cjs +503 -0
- package/dist/components/menubar.cjs.map +1 -0
- package/dist/components/menubar.d.cts +37 -0
- package/dist/components/menubar.d.ts +37 -0
- package/dist/components/menubar.js +464 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/meter.cjs +152 -0
- package/dist/components/meter.cjs.map +1 -0
- package/dist/components/meter.d.cts +23 -0
- package/dist/components/meter.d.ts +23 -0
- package/dist/components/meter.js +122 -0
- package/dist/components/meter.js.map +1 -0
- package/dist/components/navigation-menu.cjs +315 -0
- package/dist/components/navigation-menu.cjs.map +1 -0
- package/dist/components/navigation-menu.d.cts +22 -0
- package/dist/components/navigation-menu.d.ts +22 -0
- package/dist/components/navigation-menu.js +283 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/number-field.cjs +217 -0
- package/dist/components/number-field.cjs.map +1 -0
- package/dist/components/number-field.d.cts +23 -0
- package/dist/components/number-field.d.ts +23 -0
- package/dist/components/number-field.js +185 -0
- package/dist/components/number-field.js.map +1 -0
- package/dist/components/popover.cjs +125 -0
- package/dist/components/popover.cjs.map +1 -0
- package/dist/components/popover.d.cts +16 -0
- package/dist/components/popover.d.ts +16 -0
- package/dist/components/popover.js +96 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/preview-card.cjs +86 -0
- package/dist/components/preview-card.cjs.map +1 -0
- package/dist/components/preview-card.d.cts +12 -0
- package/dist/components/preview-card.d.ts +12 -0
- package/dist/components/preview-card.js +60 -0
- package/dist/components/preview-card.js.map +1 -0
- package/dist/components/progress.cjs +167 -0
- package/dist/components/progress.cjs.map +1 -0
- package/dist/components/progress.d.cts +23 -0
- package/dist/components/progress.d.ts +23 -0
- package/dist/components/progress.js +137 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.cjs +98 -0
- package/dist/components/radio-group.cjs.map +1 -0
- package/dist/components/radio-group.d.cts +11 -0
- package/dist/components/radio-group.d.ts +11 -0
- package/dist/components/radio-group.js +73 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable-panel.cjs +91 -0
- package/dist/components/resizable-panel.cjs.map +1 -0
- package/dist/components/resizable-panel.d.cts +14 -0
- package/dist/components/resizable-panel.d.ts +14 -0
- package/dist/components/resizable-panel.js +69 -0
- package/dist/components/resizable-panel.js.map +1 -0
- package/dist/components/row.cjs +94 -0
- package/dist/components/row.cjs.map +1 -0
- package/dist/components/row.d.cts +27 -0
- package/dist/components/row.d.ts +27 -0
- package/dist/components/row.js +68 -0
- package/dist/components/row.js.map +1 -0
- package/dist/components/scroll-area.cjs +96 -0
- package/dist/components/scroll-area.cjs.map +1 -0
- package/dist/components/scroll-area.d.cts +10 -0
- package/dist/components/scroll-area.d.ts +10 -0
- package/dist/components/scroll-area.js +71 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/section.cjs +104 -0
- package/dist/components/section.cjs.map +1 -0
- package/dist/components/section.d.cts +26 -0
- package/dist/components/section.d.ts +26 -0
- package/dist/components/section.js +79 -0
- package/dist/components/section.js.map +1 -0
- package/dist/components/segmented-control.cjs +117 -0
- package/dist/components/segmented-control.cjs.map +1 -0
- package/dist/components/segmented-control.d.cts +16 -0
- package/dist/components/segmented-control.d.ts +16 -0
- package/dist/components/segmented-control.js +91 -0
- package/dist/components/segmented-control.js.map +1 -0
- package/dist/components/select.cjs +273 -0
- package/dist/components/select.cjs.map +1 -0
- package/dist/components/select.d.cts +26 -0
- package/dist/components/select.d.ts +26 -0
- package/dist/components/select.js +239 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.cjs +60 -0
- package/dist/components/separator.cjs.map +1 -0
- package/dist/components/separator.d.cts +8 -0
- package/dist/components/separator.d.ts +8 -0
- package/dist/components/separator.js +36 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/skeleton.cjs +54 -0
- package/dist/components/skeleton.cjs.map +1 -0
- package/dist/components/skeleton.d.cts +8 -0
- package/dist/components/skeleton.d.ts +8 -0
- package/dist/components/skeleton.js +28 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.cjs +221 -0
- package/dist/components/slider.cjs.map +1 -0
- package/dist/components/slider.d.cts +16 -0
- package/dist/components/slider.d.ts +16 -0
- package/dist/components/slider.js +182 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.cjs +97 -0
- package/dist/components/spinner.cjs.map +1 -0
- package/dist/components/spinner.d.cts +13 -0
- package/dist/components/spinner.d.ts +13 -0
- package/dist/components/spinner.js +72 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/switch.cjs +177 -0
- package/dist/components/switch.cjs.map +1 -0
- package/dist/components/switch.d.cts +22 -0
- package/dist/components/switch.d.ts +22 -0
- package/dist/components/switch.js +139 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.cjs +123 -0
- package/dist/components/tabs.cjs.map +1 -0
- package/dist/components/tabs.d.cts +19 -0
- package/dist/components/tabs.d.ts +19 -0
- package/dist/components/tabs.js +95 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/text-field.cjs +290 -0
- package/dist/components/text-field.cjs.map +1 -0
- package/dist/components/text-field.d.cts +27 -0
- package/dist/components/text-field.d.ts +27 -0
- package/dist/components/text-field.js +262 -0
- package/dist/components/text-field.js.map +1 -0
- package/dist/components/textarea.cjs +60 -0
- package/dist/components/textarea.cjs.map +1 -0
- package/dist/components/textarea.d.cts +8 -0
- package/dist/components/textarea.d.ts +8 -0
- package/dist/components/textarea.js +34 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.cjs +167 -0
- package/dist/components/toast.cjs.map +1 -0
- package/dist/components/toast.d.cts +28 -0
- package/dist/components/toast.d.ts +28 -0
- package/dist/components/toast.js +147 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/toggle-group.cjs +171 -0
- package/dist/components/toggle-group.cjs.map +1 -0
- package/dist/components/toggle-group.d.cts +18 -0
- package/dist/components/toggle-group.d.ts +18 -0
- package/dist/components/toggle-group.js +136 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.cjs +92 -0
- package/dist/components/toggle.cjs.map +1 -0
- package/dist/components/toggle.d.cts +14 -0
- package/dist/components/toggle.d.ts +14 -0
- package/dist/components/toggle.js +67 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/toolbar.cjs +160 -0
- package/dist/components/toolbar.cjs.map +1 -0
- package/dist/components/toolbar.d.cts +14 -0
- package/dist/components/toolbar.d.ts +14 -0
- package/dist/components/toolbar.js +131 -0
- package/dist/components/toolbar.js.map +1 -0
- package/dist/components/tooltip.cjs +116 -0
- package/dist/components/tooltip.cjs.map +1 -0
- package/dist/components/tooltip.d.cts +13 -0
- package/dist/components/tooltip.d.ts +13 -0
- package/dist/components/tooltip.js +89 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/tree-view.cjs +472 -0
- package/dist/components/tree-view.cjs.map +1 -0
- package/dist/components/tree-view.d.cts +33 -0
- package/dist/components/tree-view.d.ts +33 -0
- package/dist/components/tree-view.js +435 -0
- package/dist/components/tree-view.js.map +1 -0
- package/dist/index.cjs +11 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +101 -903
- package/dist/index.d.ts +101 -903
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/color-utils.cjs +315 -0
- package/dist/lib/color-utils.cjs.map +1 -0
- package/dist/lib/color-utils.d.cts +24 -0
- package/dist/lib/color-utils.d.ts +24 -0
- package/dist/lib/color-utils.js +280 -0
- package/dist/lib/color-utils.js.map +1 -0
- package/dist/lib/utils.cjs +35 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.d.cts +5 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +10 -0
- package/dist/lib/utils.js.map +1 -0
- package/package.json +24 -5
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ToastManagerPromiseOptions } from '@base-ui/react/toast';
|
|
4
|
+
|
|
5
|
+
declare function Toaster(): react_jsx_runtime.JSX.Element;
|
|
6
|
+
declare function ToastProvider({ children }: {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}): react_jsx_runtime.JSX.Element;
|
|
9
|
+
interface ToastOptions {
|
|
10
|
+
description?: React.ReactNode;
|
|
11
|
+
action?: {
|
|
12
|
+
label: string;
|
|
13
|
+
onClick: () => void;
|
|
14
|
+
};
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
declare function toast(title: string, opts?: ToastOptions): string;
|
|
18
|
+
declare namespace toast {
|
|
19
|
+
var success: (title: string, opts?: ToastOptions) => string;
|
|
20
|
+
var error: (title: string, opts?: ToastOptions) => string;
|
|
21
|
+
var warning: (title: string, opts?: ToastOptions) => string;
|
|
22
|
+
var info: (title: string, opts?: ToastOptions) => string;
|
|
23
|
+
var promise: <T>(promise: Promise<T>, opts: ToastManagerPromiseOptions<T, object>) => Promise<T>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type ToastProviderProps = React.ComponentProps<typeof ToastProvider>;
|
|
27
|
+
|
|
28
|
+
export { type ToastOptions, ToastProvider, type ToastProviderProps, Toaster, toast };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ToastManagerPromiseOptions } from '@base-ui/react/toast';
|
|
4
|
+
|
|
5
|
+
declare function Toaster(): react_jsx_runtime.JSX.Element;
|
|
6
|
+
declare function ToastProvider({ children }: {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}): react_jsx_runtime.JSX.Element;
|
|
9
|
+
interface ToastOptions {
|
|
10
|
+
description?: React.ReactNode;
|
|
11
|
+
action?: {
|
|
12
|
+
label: string;
|
|
13
|
+
onClick: () => void;
|
|
14
|
+
};
|
|
15
|
+
duration?: number;
|
|
16
|
+
}
|
|
17
|
+
declare function toast(title: string, opts?: ToastOptions): string;
|
|
18
|
+
declare namespace toast {
|
|
19
|
+
var success: (title: string, opts?: ToastOptions) => string;
|
|
20
|
+
var error: (title: string, opts?: ToastOptions) => string;
|
|
21
|
+
var warning: (title: string, opts?: ToastOptions) => string;
|
|
22
|
+
var info: (title: string, opts?: ToastOptions) => string;
|
|
23
|
+
var promise: <T>(promise: Promise<T>, opts: ToastManagerPromiseOptions<T, object>) => Promise<T>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type ToastProviderProps = React.ComponentProps<typeof ToastProvider>;
|
|
27
|
+
|
|
28
|
+
export { type ToastOptions, ToastProvider, type ToastProviderProps, Toaster, toast };
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/toast.tsx
|
|
4
|
+
import { Toast as ToastPrimitive } from "@base-ui/react/toast";
|
|
5
|
+
import {
|
|
6
|
+
CircleCheckIcon,
|
|
7
|
+
InfoIcon,
|
|
8
|
+
TriangleAlertIcon,
|
|
9
|
+
OctagonXIcon,
|
|
10
|
+
Loader2Icon
|
|
11
|
+
} from "lucide-react";
|
|
12
|
+
|
|
13
|
+
// src/lib/utils.ts
|
|
14
|
+
import { clsx } from "clsx";
|
|
15
|
+
import { twMerge } from "tailwind-merge";
|
|
16
|
+
function cn(...inputs) {
|
|
17
|
+
return twMerge(clsx(inputs));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/components/toast.tsx
|
|
21
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
var toastManager = ToastPrimitive.createToastManager();
|
|
23
|
+
var toastIcons = {
|
|
24
|
+
success: /* @__PURE__ */ jsx(
|
|
25
|
+
CircleCheckIcon,
|
|
26
|
+
{
|
|
27
|
+
"data-slot": "toast-icon",
|
|
28
|
+
className: "size-4 shrink-0 text-success"
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
info: /* @__PURE__ */ jsx(InfoIcon, { "data-slot": "toast-icon", className: "size-4 shrink-0 text-info" }),
|
|
32
|
+
warning: /* @__PURE__ */ jsx(
|
|
33
|
+
TriangleAlertIcon,
|
|
34
|
+
{
|
|
35
|
+
"data-slot": "toast-icon",
|
|
36
|
+
className: "size-4 shrink-0 text-warning"
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
error: /* @__PURE__ */ jsx(
|
|
40
|
+
OctagonXIcon,
|
|
41
|
+
{
|
|
42
|
+
"data-slot": "toast-icon",
|
|
43
|
+
className: "size-4 shrink-0 text-destructive"
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
loading: /* @__PURE__ */ jsx(
|
|
47
|
+
Loader2Icon,
|
|
48
|
+
{
|
|
49
|
+
"data-slot": "toast-icon",
|
|
50
|
+
className: "size-4 shrink-0 text-muted-foreground animate-spin motion-reduce:animate-none"
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
};
|
|
54
|
+
function ToastItem({ toast: toast2 }) {
|
|
55
|
+
const icon = toast2.type ? toastIcons[toast2.type] : void 0;
|
|
56
|
+
return /* @__PURE__ */ jsxs(
|
|
57
|
+
ToastPrimitive.Root,
|
|
58
|
+
{
|
|
59
|
+
"data-slot": "toast",
|
|
60
|
+
toast: toast2,
|
|
61
|
+
className: cn(
|
|
62
|
+
"bg-overlay text-overlay-foreground shadow-overlay flex items-center gap-3 rounded-lg border p-4 text-sm",
|
|
63
|
+
"transition-[opacity,transform] duration-250 ease-out-fluid",
|
|
64
|
+
"data-ending-style:opacity-0 data-ending-style:translate-y-2",
|
|
65
|
+
"data-starting-style:opacity-0 data-starting-style:translate-y-2",
|
|
66
|
+
"data-[swipe-direction]:translate-x-[var(--toast-swipe-movement-x)] data-[swipe-direction]:translate-y-[var(--toast-swipe-movement-y)]",
|
|
67
|
+
"motion-reduce:animate-none motion-reduce:transition-none"
|
|
68
|
+
),
|
|
69
|
+
children: [
|
|
70
|
+
icon,
|
|
71
|
+
/* @__PURE__ */ jsxs("div", { "data-slot": "toast-content", className: "flex-1 min-w-0", children: [
|
|
72
|
+
toast2.title && /* @__PURE__ */ jsx(ToastPrimitive.Title, { "data-slot": "toast-title", className: "font-medium", children: toast2.title }),
|
|
73
|
+
toast2.description && /* @__PURE__ */ jsx(
|
|
74
|
+
ToastPrimitive.Description,
|
|
75
|
+
{
|
|
76
|
+
"data-slot": "toast-description",
|
|
77
|
+
className: "text-muted-foreground text-sm",
|
|
78
|
+
children: toast2.description
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ jsx(
|
|
83
|
+
ToastPrimitive.Action,
|
|
84
|
+
{
|
|
85
|
+
"data-slot": "toast-action",
|
|
86
|
+
className: "shrink-0 rounded-md border bg-surface px-2.5 py-1 text-xs font-medium transition-[color,background-color,border-color,box-shadow,opacity] duration-150 ease-smooth hover-only:hover:bg-surface-secondary motion-reduce:transition-none"
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
/* @__PURE__ */ jsx(
|
|
90
|
+
ToastPrimitive.Close,
|
|
91
|
+
{
|
|
92
|
+
"data-slot": "toast-close",
|
|
93
|
+
className: "shrink-0 rounded-md p-0.5 text-muted-foreground transition-[color,background-color,border-color,box-shadow,opacity] duration-150 ease-smooth hover-only:hover:text-foreground motion-reduce:transition-none",
|
|
94
|
+
"aria-label": "Dismiss",
|
|
95
|
+
children: "\xD7"
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
function Toaster() {
|
|
103
|
+
const { toasts } = ToastPrimitive.useToastManager();
|
|
104
|
+
return /* @__PURE__ */ jsx(
|
|
105
|
+
ToastPrimitive.Viewport,
|
|
106
|
+
{
|
|
107
|
+
"data-slot": "toaster",
|
|
108
|
+
className: "fixed bottom-4 right-4 z-[100] flex w-[356px] max-w-[calc(100vw-2rem)] flex-col gap-2",
|
|
109
|
+
children: toasts.map((t) => /* @__PURE__ */ jsx(ToastItem, { toast: t }, t.id))
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
function ToastProvider({ children }) {
|
|
114
|
+
return /* @__PURE__ */ jsxs(ToastPrimitive.Provider, { toastManager, children: [
|
|
115
|
+
children,
|
|
116
|
+
/* @__PURE__ */ jsx(Toaster, {})
|
|
117
|
+
] });
|
|
118
|
+
}
|
|
119
|
+
function addToast(title, type, opts) {
|
|
120
|
+
const options = {
|
|
121
|
+
title,
|
|
122
|
+
...type && { type },
|
|
123
|
+
...opts?.description && { description: opts.description },
|
|
124
|
+
...opts?.duration !== void 0 && { timeout: opts.duration },
|
|
125
|
+
...opts?.action && {
|
|
126
|
+
actionProps: {
|
|
127
|
+
children: opts.action.label,
|
|
128
|
+
onClick: opts.action.onClick
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
return toastManager.add(options);
|
|
133
|
+
}
|
|
134
|
+
function toast(title, opts) {
|
|
135
|
+
return addToast(title, void 0, opts);
|
|
136
|
+
}
|
|
137
|
+
toast.success = (title, opts) => addToast(title, "success", opts);
|
|
138
|
+
toast.error = (title, opts) => addToast(title, "error", opts);
|
|
139
|
+
toast.warning = (title, opts) => addToast(title, "warning", opts);
|
|
140
|
+
toast.info = (title, opts) => addToast(title, "info", opts);
|
|
141
|
+
toast.promise = (promise, opts) => toastManager.promise(promise, opts);
|
|
142
|
+
export {
|
|
143
|
+
ToastProvider,
|
|
144
|
+
Toaster,
|
|
145
|
+
toast
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/toast.tsx","../../src/lib/utils.ts"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Toast as ToastPrimitive } from \"@base-ui/react/toast\";\nimport type {\n ToastObject,\n ToastManagerAddOptions,\n ToastManagerPromiseOptions,\n} from \"@base-ui/react/toast\";\nimport {\n CircleCheckIcon,\n InfoIcon,\n TriangleAlertIcon,\n OctagonXIcon,\n Loader2Icon,\n} from \"lucide-react\";\n\nimport { cn } from \"../lib/utils\";\n\n// ── Global manager (imperative API from outside React) ──────────────────────\n\nconst toastManager = ToastPrimitive.createToastManager();\n\n// ── Icons per type ──────────────────────────────────────────────────────────\n\nconst toastIcons: Record<string, React.ReactNode> = {\n success: (\n <CircleCheckIcon\n data-slot=\"toast-icon\"\n className=\"size-4 shrink-0 text-success\"\n />\n ),\n info: (\n <InfoIcon data-slot=\"toast-icon\" className=\"size-4 shrink-0 text-info\" />\n ),\n warning: (\n <TriangleAlertIcon\n data-slot=\"toast-icon\"\n className=\"size-4 shrink-0 text-warning\"\n />\n ),\n error: (\n <OctagonXIcon\n data-slot=\"toast-icon\"\n className=\"size-4 shrink-0 text-destructive\"\n />\n ),\n loading: (\n <Loader2Icon\n data-slot=\"toast-icon\"\n className=\"size-4 shrink-0 text-muted-foreground animate-spin motion-reduce:animate-none\"\n />\n ),\n};\n\n// ── ToastItem (renders a single toast) ──────────────────────────────────────\n\nfunction ToastItem({ toast }: { toast: ToastObject<object> }) {\n const icon = toast.type ? toastIcons[toast.type] : undefined;\n\n return (\n <ToastPrimitive.Root\n data-slot=\"toast\"\n toast={toast}\n className={cn(\n \"bg-overlay text-overlay-foreground shadow-overlay flex items-center gap-3 rounded-lg border p-4 text-sm\",\n \"transition-[opacity,transform] duration-250 ease-out-fluid\",\n \"data-ending-style:opacity-0 data-ending-style:translate-y-2\",\n \"data-starting-style:opacity-0 data-starting-style:translate-y-2\",\n \"data-[swipe-direction]:translate-x-[var(--toast-swipe-movement-x)] data-[swipe-direction]:translate-y-[var(--toast-swipe-movement-y)]\",\n \"motion-reduce:animate-none motion-reduce:transition-none\",\n )}\n >\n {icon}\n <div data-slot=\"toast-content\" className=\"flex-1 min-w-0\">\n {toast.title && (\n <ToastPrimitive.Title data-slot=\"toast-title\" className=\"font-medium\">\n {toast.title}\n </ToastPrimitive.Title>\n )}\n {toast.description && (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className=\"text-muted-foreground text-sm\"\n >\n {toast.description}\n </ToastPrimitive.Description>\n )}\n </div>\n <ToastPrimitive.Action\n data-slot=\"toast-action\"\n className=\"shrink-0 rounded-md border bg-surface px-2.5 py-1 text-xs font-medium transition-[color,background-color,border-color,box-shadow,opacity] duration-150 ease-smooth hover-only:hover:bg-surface-secondary motion-reduce:transition-none\"\n />\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n className=\"shrink-0 rounded-md p-0.5 text-muted-foreground transition-[color,background-color,border-color,box-shadow,opacity] duration-150 ease-smooth hover-only:hover:text-foreground motion-reduce:transition-none\"\n aria-label=\"Dismiss\"\n >\n ×\n </ToastPrimitive.Close>\n </ToastPrimitive.Root>\n );\n}\n\n// ── Toaster (viewport + renders toast list) ─────────────────────────────────\n\nfunction Toaster() {\n const { toasts } = ToastPrimitive.useToastManager();\n\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toaster\"\n className=\"fixed bottom-4 right-4 z-[100] flex w-[356px] max-w-[calc(100vw-2rem)] flex-col gap-2\"\n >\n {toasts.map((t) => (\n <ToastItem key={t.id} toast={t} />\n ))}\n </ToastPrimitive.Viewport>\n );\n}\n\n// ── ToastProvider (wraps app) ───────────────────────────────────────────────\n\nfunction ToastProvider({ children }: { children: React.ReactNode }) {\n return (\n <ToastPrimitive.Provider toastManager={toastManager}>\n {children}\n <Toaster />\n </ToastPrimitive.Provider>\n );\n}\n\n// ── Imperative API ──────────────────────────────────────────────────────────\n\ninterface ToastOptions {\n description?: React.ReactNode;\n action?: { label: string; onClick: () => void };\n duration?: number;\n}\n\nfunction addToast(title: string, type?: string, opts?: ToastOptions) {\n const options: ToastManagerAddOptions<object> = {\n title,\n ...(type && { type }),\n ...(opts?.description && { description: opts.description }),\n ...(opts?.duration !== undefined && { timeout: opts.duration }),\n ...(opts?.action && {\n actionProps: {\n children: opts.action.label,\n onClick: opts.action.onClick,\n },\n }),\n };\n return toastManager.add(options);\n}\n\nfunction toast(title: string, opts?: ToastOptions) {\n return addToast(title, undefined, opts);\n}\n\ntoast.success = (title: string, opts?: ToastOptions) =>\n addToast(title, \"success\", opts);\n\ntoast.error = (title: string, opts?: ToastOptions) =>\n addToast(title, \"error\", opts);\n\ntoast.warning = (title: string, opts?: ToastOptions) =>\n addToast(title, \"warning\", opts);\n\ntoast.info = (title: string, opts?: ToastOptions) =>\n addToast(title, \"info\", opts);\n\ntoast.promise = <T,>(\n promise: Promise<T>,\n opts: ToastManagerPromiseOptions<T, object>,\n) => toastManager.promise(promise, opts);\n\n// ── Exports ─────────────────────────────────────────────────────────────────\n\nexport { ToastProvider, Toaster, toast };\n\nexport type ToastProviderProps = React.ComponentProps<typeof ToastProvider>;\nexport type { ToastOptions };\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;AAGA,SAAS,SAAS,sBAAsB;AAMxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACfP,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADsBI,cA+CE,YA/CF;AANJ,IAAM,eAAe,eAAe,mBAAmB;AAIvD,IAAM,aAA8C;AAAA,EAClD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA;AAAA,EACZ;AAAA,EAEF,MACE,oBAAC,YAAS,aAAU,cAAa,WAAU,6BAA4B;AAAA,EAEzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA;AAAA,EACZ;AAAA,EAEF,OACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA;AAAA,EACZ;AAAA,EAEF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA;AAAA,EACZ;AAEJ;AAIA,SAAS,UAAU,EAAE,OAAAA,OAAM,GAAmC;AAC5D,QAAM,OAAOA,OAAM,OAAO,WAAWA,OAAM,IAAI,IAAI;AAEnD,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,OAAOA;AAAA,MACP,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,QACD,qBAAC,SAAI,aAAU,iBAAgB,WAAU,kBACtC;AAAA,UAAAA,OAAM,SACL,oBAAC,eAAe,OAAf,EAAqB,aAAU,eAAc,WAAU,eACrD,UAAAA,OAAM,OACT;AAAA,UAEDA,OAAM,eACL;AAAA,YAAC,eAAe;AAAA,YAAf;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA,cAET,UAAAA,OAAM;AAAA;AAAA,UACT;AAAA,WAEJ;AAAA,QACA;AAAA,UAAC,eAAe;AAAA,UAAf;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC,eAAe;AAAA,UAAf;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA,YACV,cAAW;AAAA,YACZ;AAAA;AAAA,QAED;AAAA;AAAA;AAAA,EACF;AAEJ;AAIA,SAAS,UAAU;AACjB,QAAM,EAAE,OAAO,IAAI,eAAe,gBAAgB;AAElD,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MAET,iBAAO,IAAI,CAAC,MACX,oBAAC,aAAqB,OAAO,KAAb,EAAE,EAAc,CACjC;AAAA;AAAA,EACH;AAEJ;AAIA,SAAS,cAAc,EAAE,SAAS,GAAkC;AAClE,SACE,qBAAC,eAAe,UAAf,EAAwB,cACtB;AAAA;AAAA,IACD,oBAAC,WAAQ;AAAA,KACX;AAEJ;AAUA,SAAS,SAAS,OAAe,MAAe,MAAqB;AACnE,QAAM,UAA0C;AAAA,IAC9C;AAAA,IACA,GAAI,QAAQ,EAAE,KAAK;AAAA,IACnB,GAAI,MAAM,eAAe,EAAE,aAAa,KAAK,YAAY;AAAA,IACzD,GAAI,MAAM,aAAa,UAAa,EAAE,SAAS,KAAK,SAAS;AAAA,IAC7D,GAAI,MAAM,UAAU;AAAA,MAClB,aAAa;AAAA,QACX,UAAU,KAAK,OAAO;AAAA,QACtB,SAAS,KAAK,OAAO;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACA,SAAO,aAAa,IAAI,OAAO;AACjC;AAEA,SAAS,MAAM,OAAe,MAAqB;AACjD,SAAO,SAAS,OAAO,QAAW,IAAI;AACxC;AAEA,MAAM,UAAU,CAAC,OAAe,SAC9B,SAAS,OAAO,WAAW,IAAI;AAEjC,MAAM,QAAQ,CAAC,OAAe,SAC5B,SAAS,OAAO,SAAS,IAAI;AAE/B,MAAM,UAAU,CAAC,OAAe,SAC9B,SAAS,OAAO,WAAW,IAAI;AAEjC,MAAM,OAAO,CAAC,OAAe,SAC3B,SAAS,OAAO,QAAQ,IAAI;AAE9B,MAAM,UAAU,CACd,SACA,SACG,aAAa,QAAQ,SAAS,IAAI;","names":["toast"]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/components/toggle-group.tsx
|
|
32
|
+
var toggle_group_exports = {};
|
|
33
|
+
__export(toggle_group_exports, {
|
|
34
|
+
ToggleGroup: () => ToggleGroup,
|
|
35
|
+
ToggleGroupItem: () => ToggleGroupItem
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(toggle_group_exports);
|
|
38
|
+
var React = __toESM(require("react"), 1);
|
|
39
|
+
var import_toggle2 = require("@base-ui/react/toggle");
|
|
40
|
+
var import_toggle_group = require("@base-ui/react/toggle-group");
|
|
41
|
+
|
|
42
|
+
// src/lib/utils.ts
|
|
43
|
+
var import_clsx = require("clsx");
|
|
44
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
45
|
+
function cn(...inputs) {
|
|
46
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/components/toggle.tsx
|
|
50
|
+
var import_toggle = require("@base-ui/react/toggle");
|
|
51
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
52
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
53
|
+
var toggleVariants = (0, import_class_variance_authority.cva)(
|
|
54
|
+
[
|
|
55
|
+
"inline-flex items-center justify-center rounded-md text-sm font-medium transform-gpu transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-smooth",
|
|
56
|
+
"motion-safe:active:scale-[0.97]",
|
|
57
|
+
"motion-reduce:transition-none",
|
|
58
|
+
"no-highlight",
|
|
59
|
+
"focus-visible:focus-ring",
|
|
60
|
+
"disabled:status-disabled",
|
|
61
|
+
"hover-only:bg-muted hover-only:text-muted-foreground",
|
|
62
|
+
"aria-pressed:bg-primary-soft aria-pressed:text-primary",
|
|
63
|
+
"hover-only:aria-pressed:bg-primary-soft-hover hover-only:aria-pressed:text-primary",
|
|
64
|
+
"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
65
|
+
"group/toggle"
|
|
66
|
+
],
|
|
67
|
+
{
|
|
68
|
+
variants: {
|
|
69
|
+
variant: {
|
|
70
|
+
default: "bg-transparent",
|
|
71
|
+
outline: "border border-field-border bg-transparent shadow-field hover-only:bg-accent hover-only:text-accent-foreground aria-pressed:shadow-none aria-pressed:border-transparent"
|
|
72
|
+
},
|
|
73
|
+
size: {
|
|
74
|
+
default: "h-9 px-3",
|
|
75
|
+
sm: "h-8 px-2",
|
|
76
|
+
lg: "h-10 px-3"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
defaultVariants: {
|
|
80
|
+
variant: "default",
|
|
81
|
+
size: "default"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
// src/components/toggle-group.tsx
|
|
87
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
88
|
+
var ToggleGroupContext = React.createContext({
|
|
89
|
+
size: "default",
|
|
90
|
+
variant: "default",
|
|
91
|
+
spacing: 0,
|
|
92
|
+
orientation: "horizontal"
|
|
93
|
+
});
|
|
94
|
+
function ToggleGroup({
|
|
95
|
+
className,
|
|
96
|
+
variant,
|
|
97
|
+
size,
|
|
98
|
+
spacing = 0,
|
|
99
|
+
orientation = "horizontal",
|
|
100
|
+
children,
|
|
101
|
+
...props
|
|
102
|
+
}) {
|
|
103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
104
|
+
import_toggle_group.ToggleGroup,
|
|
105
|
+
{
|
|
106
|
+
"data-slot": "toggle-group",
|
|
107
|
+
"data-variant": variant,
|
|
108
|
+
"data-size": size,
|
|
109
|
+
"data-spacing": spacing,
|
|
110
|
+
"data-orientation": orientation,
|
|
111
|
+
style: { "--gap": spacing },
|
|
112
|
+
className: cn(
|
|
113
|
+
/* Base */
|
|
114
|
+
"group/toggle-group flex w-fit flex-row items-center rounded-md data-vertical:flex-col data-vertical:items-stretch",
|
|
115
|
+
/* Spaced: gap from CSS var */
|
|
116
|
+
"gap-[--spacing(var(--gap))]",
|
|
117
|
+
/* Flush (spacing=0): container treatment à la Base UI */
|
|
118
|
+
"data-[spacing=0]:gap-px data-[spacing=0]:p-0.5 data-[spacing=0]:bg-surface-secondary",
|
|
119
|
+
/* Flush + outline: add border & shadow to container */
|
|
120
|
+
"data-[spacing=0]:data-[variant=outline]:border data-[spacing=0]:data-[variant=outline]:border-field-border data-[spacing=0]:data-[variant=outline]:shadow-field",
|
|
121
|
+
className
|
|
122
|
+
),
|
|
123
|
+
...props,
|
|
124
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
125
|
+
ToggleGroupContext.Provider,
|
|
126
|
+
{
|
|
127
|
+
value: { variant, size, spacing, orientation },
|
|
128
|
+
children
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
function ToggleGroupItem({
|
|
135
|
+
className,
|
|
136
|
+
children,
|
|
137
|
+
variant = "default",
|
|
138
|
+
size = "default",
|
|
139
|
+
...props
|
|
140
|
+
}) {
|
|
141
|
+
const context = React.useContext(ToggleGroupContext);
|
|
142
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
143
|
+
import_toggle2.Toggle,
|
|
144
|
+
{
|
|
145
|
+
"data-slot": "toggle-group-item",
|
|
146
|
+
"data-variant": context.variant || variant,
|
|
147
|
+
"data-size": context.size || size,
|
|
148
|
+
"data-spacing": context.spacing,
|
|
149
|
+
className: cn(
|
|
150
|
+
/* Flush (spacing=0): strip item chrome, small inner radius */
|
|
151
|
+
"group-data-[spacing=0]/toggle-group:rounded-sm group-data-[spacing=0]/toggle-group:border-0 group-data-[spacing=0]/toggle-group:shadow-none group-data-[spacing=0]/toggle-group:px-2",
|
|
152
|
+
/* Flush: disable press scale (items are tightly packed) */
|
|
153
|
+
"group-data-[spacing=0]/toggle-group:motion-safe:active:!scale-100",
|
|
154
|
+
"shrink-0 focus:z-10 focus-visible:z-10",
|
|
155
|
+
toggleVariants({
|
|
156
|
+
variant: context.variant || variant,
|
|
157
|
+
size: context.size || size
|
|
158
|
+
}),
|
|
159
|
+
className
|
|
160
|
+
),
|
|
161
|
+
...props,
|
|
162
|
+
children
|
|
163
|
+
}
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
167
|
+
0 && (module.exports = {
|
|
168
|
+
ToggleGroup,
|
|
169
|
+
ToggleGroupItem
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=toggle-group.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/toggle-group.tsx","../../src/lib/utils.ts","../../src/components/toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { toggleVariants } from \"./toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n orientation?: \"horizontal\" | \"vertical\";\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n orientation: \"horizontal\",\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n orientation = \"horizontal\",\n children,\n ...props\n}: ToggleGroupPrimitive.Props &\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n orientation?: \"horizontal\" | \"vertical\";\n }) {\n return (\n <ToggleGroupPrimitive\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n data-orientation={orientation}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n /* Base */\n \"group/toggle-group flex w-fit flex-row items-center rounded-md data-vertical:flex-col data-vertical:items-stretch\",\n /* Spaced: gap from CSS var */\n \"gap-[--spacing(var(--gap))]\",\n /* Flush (spacing=0): container treatment à la Base UI */\n \"data-[spacing=0]:gap-px data-[spacing=0]:p-0.5 data-[spacing=0]:bg-surface-secondary\",\n /* Flush + outline: add border & shadow to container */\n \"data-[spacing=0]:data-[variant=outline]:border data-[spacing=0]:data-[variant=outline]:border-field-border data-[spacing=0]:data-[variant=outline]:shadow-field\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider\n value={{ variant, size, spacing, orientation }}\n >\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <TogglePrimitive\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n /* Flush (spacing=0): strip item chrome, small inner radius */\n \"group-data-[spacing=0]/toggle-group:rounded-sm group-data-[spacing=0]/toggle-group:border-0 group-data-[spacing=0]/toggle-group:shadow-none group-data-[spacing=0]/toggle-group:px-2\",\n /* Flush: disable press scale (items are tightly packed) */\n \"group-data-[spacing=0]/toggle-group:motion-safe:active:!scale-100\",\n \"shrink-0 focus:z-10 focus-visible:z-10\",\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className,\n )}\n {...props}\n >\n {children}\n </TogglePrimitive>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup>;\nexport type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupItem>;\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst toggleVariants = cva(\n [\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transform-gpu transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-smooth\",\n \"motion-safe:active:scale-[0.97]\",\n \"motion-reduce:transition-none\",\n \"no-highlight\",\n \"focus-visible:focus-ring\",\n \"disabled:status-disabled\",\n \"hover-only:bg-muted hover-only:text-muted-foreground\",\n \"aria-pressed:bg-primary-soft aria-pressed:text-primary\",\n \"hover-only:aria-pressed:bg-primary-soft-hover hover-only:aria-pressed:text-primary\",\n \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group/toggle\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-field-border bg-transparent shadow-field hover-only:bg-accent hover-only:text-accent-foreground aria-pressed:shadow-none aria-pressed:border-transparent\",\n },\n size: {\n default: \"h-9 px-3\",\n sm: \"h-8 px-2\",\n lg: \"h-10 px-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n\nexport type ToggleProps = React.ComponentProps<typeof Toggle>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,YAAuB;AACvB,IAAAA,iBAA0C;AAC1C,0BAAoD;;;ACJpD,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ACHA,oBAA0C;AAC1C,sCAAuC;AA6CnC;AAzCJ,IAAM,qBAAiB;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;AFiBM,IAAAC,sBAAA;AA9CN,IAAM,qBAA2B,oBAK/B;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AACf,CAAC;AAED,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAIK;AACH,SACE;AAAA,IAAC,oBAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,gBAAc;AAAA,MACd,oBAAkB;AAAA,MAClB,OAAO,EAAE,SAAS,QAAQ;AAAA,MAC1B,WAAW;AAAA;AAAA,QAET;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,QAAC,mBAAmB;AAAA,QAAnB;AAAA,UACC,OAAO,EAAE,SAAS,MAAM,SAAS,YAAY;AAAA,UAE5C;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAgE;AAC9D,QAAM,UAAgB,iBAAW,kBAAkB;AAEnD,SACE;AAAA,IAAC,eAAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,QAAQ,WAAW;AAAA,MACjC,aAAW,QAAQ,QAAQ;AAAA,MAC3B,gBAAc,QAAQ;AAAA,MACtB,WAAW;AAAA;AAAA,QAET;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,UACb,SAAS,QAAQ,WAAW;AAAA,UAC5B,MAAM,QAAQ,QAAQ;AAAA,QACxB,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;","names":["import_toggle","import_jsx_runtime","ToggleGroupPrimitive","TogglePrimitive"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Toggle } from '@base-ui/react/toggle';
|
|
4
|
+
import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
|
|
5
|
+
import { VariantProps } from 'class-variance-authority';
|
|
6
|
+
import { toggleVariants } from './toggle.cjs';
|
|
7
|
+
import 'class-variance-authority/types';
|
|
8
|
+
|
|
9
|
+
declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: ToggleGroup$1.Props & VariantProps<typeof toggleVariants> & {
|
|
10
|
+
spacing?: number;
|
|
11
|
+
orientation?: "horizontal" | "vertical";
|
|
12
|
+
}): react_jsx_runtime.JSX.Element;
|
|
13
|
+
declare function ToggleGroupItem({ className, children, variant, size, ...props }: Toggle.Props & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
|
|
14
|
+
|
|
15
|
+
type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup>;
|
|
16
|
+
type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupItem>;
|
|
17
|
+
|
|
18
|
+
export { ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Toggle } from '@base-ui/react/toggle';
|
|
4
|
+
import { ToggleGroup as ToggleGroup$1 } from '@base-ui/react/toggle-group';
|
|
5
|
+
import { VariantProps } from 'class-variance-authority';
|
|
6
|
+
import { toggleVariants } from './toggle.js';
|
|
7
|
+
import 'class-variance-authority/types';
|
|
8
|
+
|
|
9
|
+
declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: ToggleGroup$1.Props & VariantProps<typeof toggleVariants> & {
|
|
10
|
+
spacing?: number;
|
|
11
|
+
orientation?: "horizontal" | "vertical";
|
|
12
|
+
}): react_jsx_runtime.JSX.Element;
|
|
13
|
+
declare function ToggleGroupItem({ className, children, variant, size, ...props }: Toggle.Props & VariantProps<typeof toggleVariants>): react_jsx_runtime.JSX.Element;
|
|
14
|
+
|
|
15
|
+
type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup>;
|
|
16
|
+
type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupItem>;
|
|
17
|
+
|
|
18
|
+
export { ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps, type ToggleGroupProps };
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/toggle-group.tsx
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { Toggle as TogglePrimitive2 } from "@base-ui/react/toggle";
|
|
6
|
+
import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group";
|
|
7
|
+
|
|
8
|
+
// src/lib/utils.ts
|
|
9
|
+
import { clsx } from "clsx";
|
|
10
|
+
import { twMerge } from "tailwind-merge";
|
|
11
|
+
function cn(...inputs) {
|
|
12
|
+
return twMerge(clsx(inputs));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// src/components/toggle.tsx
|
|
16
|
+
import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
|
|
17
|
+
import { cva } from "class-variance-authority";
|
|
18
|
+
import { jsx } from "react/jsx-runtime";
|
|
19
|
+
var toggleVariants = cva(
|
|
20
|
+
[
|
|
21
|
+
"inline-flex items-center justify-center rounded-md text-sm font-medium transform-gpu transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-smooth",
|
|
22
|
+
"motion-safe:active:scale-[0.97]",
|
|
23
|
+
"motion-reduce:transition-none",
|
|
24
|
+
"no-highlight",
|
|
25
|
+
"focus-visible:focus-ring",
|
|
26
|
+
"disabled:status-disabled",
|
|
27
|
+
"hover-only:bg-muted hover-only:text-muted-foreground",
|
|
28
|
+
"aria-pressed:bg-primary-soft aria-pressed:text-primary",
|
|
29
|
+
"hover-only:aria-pressed:bg-primary-soft-hover hover-only:aria-pressed:text-primary",
|
|
30
|
+
"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
31
|
+
"group/toggle"
|
|
32
|
+
],
|
|
33
|
+
{
|
|
34
|
+
variants: {
|
|
35
|
+
variant: {
|
|
36
|
+
default: "bg-transparent",
|
|
37
|
+
outline: "border border-field-border bg-transparent shadow-field hover-only:bg-accent hover-only:text-accent-foreground aria-pressed:shadow-none aria-pressed:border-transparent"
|
|
38
|
+
},
|
|
39
|
+
size: {
|
|
40
|
+
default: "h-9 px-3",
|
|
41
|
+
sm: "h-8 px-2",
|
|
42
|
+
lg: "h-10 px-3"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
defaultVariants: {
|
|
46
|
+
variant: "default",
|
|
47
|
+
size: "default"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
// src/components/toggle-group.tsx
|
|
53
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
54
|
+
var ToggleGroupContext = React.createContext({
|
|
55
|
+
size: "default",
|
|
56
|
+
variant: "default",
|
|
57
|
+
spacing: 0,
|
|
58
|
+
orientation: "horizontal"
|
|
59
|
+
});
|
|
60
|
+
function ToggleGroup({
|
|
61
|
+
className,
|
|
62
|
+
variant,
|
|
63
|
+
size,
|
|
64
|
+
spacing = 0,
|
|
65
|
+
orientation = "horizontal",
|
|
66
|
+
children,
|
|
67
|
+
...props
|
|
68
|
+
}) {
|
|
69
|
+
return /* @__PURE__ */ jsx2(
|
|
70
|
+
ToggleGroupPrimitive,
|
|
71
|
+
{
|
|
72
|
+
"data-slot": "toggle-group",
|
|
73
|
+
"data-variant": variant,
|
|
74
|
+
"data-size": size,
|
|
75
|
+
"data-spacing": spacing,
|
|
76
|
+
"data-orientation": orientation,
|
|
77
|
+
style: { "--gap": spacing },
|
|
78
|
+
className: cn(
|
|
79
|
+
/* Base */
|
|
80
|
+
"group/toggle-group flex w-fit flex-row items-center rounded-md data-vertical:flex-col data-vertical:items-stretch",
|
|
81
|
+
/* Spaced: gap from CSS var */
|
|
82
|
+
"gap-[--spacing(var(--gap))]",
|
|
83
|
+
/* Flush (spacing=0): container treatment à la Base UI */
|
|
84
|
+
"data-[spacing=0]:gap-px data-[spacing=0]:p-0.5 data-[spacing=0]:bg-surface-secondary",
|
|
85
|
+
/* Flush + outline: add border & shadow to container */
|
|
86
|
+
"data-[spacing=0]:data-[variant=outline]:border data-[spacing=0]:data-[variant=outline]:border-field-border data-[spacing=0]:data-[variant=outline]:shadow-field",
|
|
87
|
+
className
|
|
88
|
+
),
|
|
89
|
+
...props,
|
|
90
|
+
children: /* @__PURE__ */ jsx2(
|
|
91
|
+
ToggleGroupContext.Provider,
|
|
92
|
+
{
|
|
93
|
+
value: { variant, size, spacing, orientation },
|
|
94
|
+
children
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
function ToggleGroupItem({
|
|
101
|
+
className,
|
|
102
|
+
children,
|
|
103
|
+
variant = "default",
|
|
104
|
+
size = "default",
|
|
105
|
+
...props
|
|
106
|
+
}) {
|
|
107
|
+
const context = React.useContext(ToggleGroupContext);
|
|
108
|
+
return /* @__PURE__ */ jsx2(
|
|
109
|
+
TogglePrimitive2,
|
|
110
|
+
{
|
|
111
|
+
"data-slot": "toggle-group-item",
|
|
112
|
+
"data-variant": context.variant || variant,
|
|
113
|
+
"data-size": context.size || size,
|
|
114
|
+
"data-spacing": context.spacing,
|
|
115
|
+
className: cn(
|
|
116
|
+
/* Flush (spacing=0): strip item chrome, small inner radius */
|
|
117
|
+
"group-data-[spacing=0]/toggle-group:rounded-sm group-data-[spacing=0]/toggle-group:border-0 group-data-[spacing=0]/toggle-group:shadow-none group-data-[spacing=0]/toggle-group:px-2",
|
|
118
|
+
/* Flush: disable press scale (items are tightly packed) */
|
|
119
|
+
"group-data-[spacing=0]/toggle-group:motion-safe:active:!scale-100",
|
|
120
|
+
"shrink-0 focus:z-10 focus-visible:z-10",
|
|
121
|
+
toggleVariants({
|
|
122
|
+
variant: context.variant || variant,
|
|
123
|
+
size: context.size || size
|
|
124
|
+
}),
|
|
125
|
+
className
|
|
126
|
+
),
|
|
127
|
+
...props,
|
|
128
|
+
children
|
|
129
|
+
}
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
export {
|
|
133
|
+
ToggleGroup,
|
|
134
|
+
ToggleGroupItem
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=toggle-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/toggle-group.tsx","../../src/lib/utils.ts","../../src/components/toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\nimport { toggleVariants } from \"./toggle\";\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n orientation?: \"horizontal\" | \"vertical\";\n }\n>({\n size: \"default\",\n variant: \"default\",\n spacing: 0,\n orientation: \"horizontal\",\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n orientation = \"horizontal\",\n children,\n ...props\n}: ToggleGroupPrimitive.Props &\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n orientation?: \"horizontal\" | \"vertical\";\n }) {\n return (\n <ToggleGroupPrimitive\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n data-orientation={orientation}\n style={{ \"--gap\": spacing } as React.CSSProperties}\n className={cn(\n /* Base */\n \"group/toggle-group flex w-fit flex-row items-center rounded-md data-vertical:flex-col data-vertical:items-stretch\",\n /* Spaced: gap from CSS var */\n \"gap-[--spacing(var(--gap))]\",\n /* Flush (spacing=0): container treatment à la Base UI */\n \"data-[spacing=0]:gap-px data-[spacing=0]:p-0.5 data-[spacing=0]:bg-surface-secondary\",\n /* Flush + outline: add border & shadow to container */\n \"data-[spacing=0]:data-[variant=outline]:border data-[spacing=0]:data-[variant=outline]:border-field-border data-[spacing=0]:data-[variant=outline]:shadow-field\",\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider\n value={{ variant, size, spacing, orientation }}\n >\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <TogglePrimitive\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n /* Flush (spacing=0): strip item chrome, small inner radius */\n \"group-data-[spacing=0]/toggle-group:rounded-sm group-data-[spacing=0]/toggle-group:border-0 group-data-[spacing=0]/toggle-group:shadow-none group-data-[spacing=0]/toggle-group:px-2\",\n /* Flush: disable press scale (items are tightly packed) */\n \"group-data-[spacing=0]/toggle-group:motion-safe:active:!scale-100\",\n \"shrink-0 focus:z-10 focus-visible:z-10\",\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n className,\n )}\n {...props}\n >\n {children}\n </TogglePrimitive>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup>;\nexport type ToggleGroupItemProps = React.ComponentProps<typeof ToggleGroupItem>;\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/utils\";\n\nconst toggleVariants = cva(\n [\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transform-gpu transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-smooth\",\n \"motion-safe:active:scale-[0.97]\",\n \"motion-reduce:transition-none\",\n \"no-highlight\",\n \"focus-visible:focus-ring\",\n \"disabled:status-disabled\",\n \"hover-only:bg-muted hover-only:text-muted-foreground\",\n \"aria-pressed:bg-primary-soft aria-pressed:text-primary\",\n \"hover-only:aria-pressed:bg-primary-soft-hover hover-only:aria-pressed:text-primary\",\n \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"group/toggle\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-field-border bg-transparent shadow-field hover-only:bg-accent hover-only:text-accent-foreground aria-pressed:shadow-none aria-pressed:border-transparent\",\n },\n size: {\n default: \"h-9 px-3\",\n sm: \"h-8 px-2\",\n lg: \"h-10 px-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n\nexport type ToggleProps = React.ComponentProps<typeof Toggle>;\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,SAAS,UAAUA,wBAAuB;AAC1C,SAAS,eAAe,4BAA4B;;;ACJpD,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ACHA,SAAS,UAAU,uBAAuB;AAC1C,SAAS,WAA8B;AA6CnC;AAzCJ,IAAM,iBAAiB;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SACE;AAAA,MACJ;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;;;AFiBM,gBAAAC,YAAA;AA9CN,IAAM,qBAA2B,oBAK/B;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AACf,CAAC;AAED,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACL,GAIK;AACH,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,gBAAc;AAAA,MACd,oBAAkB;AAAA,MAClB,OAAO,EAAE,SAAS,QAAQ;AAAA,MAC1B,WAAW;AAAA;AAAA,QAET;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ,0BAAAA;AAAA,QAAC,mBAAmB;AAAA,QAAnB;AAAA,UACC,OAAO,EAAE,SAAS,MAAM,SAAS,YAAY;AAAA,UAE5C;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACL,GAAgE;AAC9D,QAAM,UAAgB,iBAAW,kBAAkB;AAEnD,SACE,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAc,QAAQ,WAAW;AAAA,MACjC,aAAW,QAAQ,QAAQ;AAAA,MAC3B,gBAAc,QAAQ;AAAA,MACtB,WAAW;AAAA;AAAA,QAET;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,UACb,SAAS,QAAQ,WAAW;AAAA,UAC5B,MAAM,QAAQ,QAAQ;AAAA,QACxB,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;","names":["TogglePrimitive","jsx","TogglePrimitive"]}
|