@zentauri-ui/zentauri-components 0.0.91 → 0.0.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -4
- package/dist/chunk-BZSIXBA7.js +70 -0
- package/dist/chunk-BZSIXBA7.js.map +1 -0
- package/dist/chunk-E5UX537J.js +11 -0
- package/dist/chunk-E5UX537J.js.map +1 -0
- package/dist/chunk-MEWYFWBX.mjs +14 -0
- package/dist/chunk-MEWYFWBX.mjs.map +1 -0
- package/dist/chunk-VJHD7QZH.mjs +73 -0
- package/dist/chunk-VJHD7QZH.mjs.map +1 -0
- package/dist/ui/accordion.js +51 -57
- package/dist/ui/accordion.js.map +1 -1
- package/dist/ui/{accordion.cjs → accordion.mjs} +38 -67
- package/dist/ui/accordion.mjs.map +1 -0
- package/dist/ui/{alert.d.cts → alert.d.mts} +1 -1
- package/dist/ui/alert.d.ts +1 -1
- package/dist/ui/alert.js +40 -46
- package/dist/ui/alert.js.map +1 -1
- package/dist/ui/{alert.cjs → alert.mjs} +29 -66
- package/dist/ui/alert.mjs.map +1 -0
- package/dist/ui/{badge.d.cts → badge.d.mts} +1 -1
- package/dist/ui/badge.d.ts +1 -1
- package/dist/ui/badge.js +20 -26
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/{badge.cjs → badge.mjs} +17 -48
- package/dist/ui/badge.mjs.map +1 -0
- package/dist/ui/{buttons.d.cts → buttons.d.mts} +1 -1
- package/dist/ui/buttons.d.ts +1 -1
- package/dist/ui/buttons.js +18 -87
- package/dist/ui/buttons.js.map +1 -1
- package/dist/ui/buttons.mjs +109 -0
- package/dist/ui/buttons.mjs.map +1 -0
- package/dist/ui/{card.d.cts → card.d.mts} +1 -1
- package/dist/ui/card.d.ts +1 -1
- package/dist/ui/card.js +40 -46
- package/dist/ui/card.js.map +1 -1
- package/dist/ui/{card.cjs → card.mjs} +26 -65
- package/dist/ui/card.mjs.map +1 -0
- package/dist/ui/{divider.d.cts → divider.d.mts} +2 -2
- package/dist/ui/divider.d.ts +2 -2
- package/dist/ui/divider.js +30 -36
- package/dist/ui/divider.js.map +1 -1
- package/dist/ui/{divider.cjs → divider.mjs} +22 -55
- package/dist/ui/divider.mjs.map +1 -0
- package/dist/ui/{drawer.d.cts → drawer.d.mts} +3 -3
- package/dist/ui/drawer.d.ts +3 -3
- package/dist/ui/drawer.js +64 -70
- package/dist/ui/drawer.js.map +1 -1
- package/dist/ui/{drawer.cjs → drawer.mjs} +48 -77
- package/dist/ui/drawer.mjs.map +1 -0
- package/dist/ui/{dropdown.d.cts → dropdown.d.mts} +4 -4
- package/dist/ui/dropdown.d.ts +4 -4
- package/dist/ui/dropdown.js +43 -49
- package/dist/ui/dropdown.js.map +1 -1
- package/dist/ui/{dropdown.cjs → dropdown.mjs} +34 -62
- package/dist/ui/dropdown.mjs.map +1 -0
- package/dist/ui/{empty-state.d.cts → empty-state.d.mts} +1 -1
- package/dist/ui/empty-state.d.ts +1 -1
- package/dist/ui/empty-state.js +31 -37
- package/dist/ui/empty-state.js.map +1 -1
- package/dist/ui/empty-state.mjs +150 -0
- package/dist/ui/empty-state.mjs.map +1 -0
- package/dist/ui/{inputs.d.cts → inputs.d.mts} +2 -2
- package/dist/ui/inputs.d.ts +2 -2
- package/dist/ui/inputs.js +26 -32
- package/dist/ui/inputs.js.map +1 -1
- package/dist/ui/{inputs.cjs → inputs.mjs} +21 -51
- package/dist/ui/inputs.mjs.map +1 -0
- package/dist/ui/{modal.d.cts → modal.d.mts} +3 -3
- package/dist/ui/modal.d.ts +3 -3
- package/dist/ui/modal.js +69 -75
- package/dist/ui/modal.js.map +1 -1
- package/dist/ui/{modal.cjs → modal.mjs} +53 -79
- package/dist/ui/modal.mjs.map +1 -0
- package/dist/ui/{pagination.d.cts → pagination.d.mts} +3 -3
- package/dist/ui/pagination.d.ts +3 -3
- package/dist/ui/pagination.js +48 -117
- package/dist/ui/pagination.js.map +1 -1
- package/dist/ui/{pagination.cjs → pagination.mjs} +35 -131
- package/dist/ui/pagination.mjs.map +1 -0
- package/dist/ui/{progress.d.cts → progress.d.mts} +5 -5
- package/dist/ui/progress.d.ts +5 -5
- package/dist/ui/progress.js +37 -43
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/{progress.cjs → progress.mjs} +25 -60
- package/dist/ui/progress.mjs.map +1 -0
- package/dist/ui/{select.d.cts → select.d.mts} +4 -4
- package/dist/ui/select.d.ts +4 -4
- package/dist/ui/select.js +43 -49
- package/dist/ui/select.js.map +1 -1
- package/dist/ui/{select.cjs → select.mjs} +31 -68
- package/dist/ui/select.mjs.map +1 -0
- package/dist/ui/{skeleton.d.cts → skeleton.d.mts} +3 -3
- package/dist/ui/skeleton.d.ts +3 -3
- package/dist/ui/skeleton.js +45 -51
- package/dist/ui/skeleton.js.map +1 -1
- package/dist/ui/{skeleton.cjs → skeleton.mjs} +31 -67
- package/dist/ui/skeleton.mjs.map +1 -0
- package/dist/ui/{spinner.d.cts → spinner.d.mts} +3 -3
- package/dist/ui/spinner.d.ts +3 -3
- package/dist/ui/spinner.js +34 -40
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/{spinner.cjs → spinner.mjs} +27 -57
- package/dist/ui/spinner.mjs.map +1 -0
- package/dist/ui/{table.d.cts → table.d.mts} +4 -4
- package/dist/ui/table.d.ts +4 -4
- package/dist/ui/table.js +43 -49
- package/dist/ui/table.js.map +1 -1
- package/dist/ui/{table.cjs → table.mjs} +26 -65
- package/dist/ui/table.mjs.map +1 -0
- package/dist/ui/{tabs.d.cts → tabs.d.mts} +1 -1
- package/dist/ui/tabs.d.ts +1 -1
- package/dist/ui/tabs.js +41 -47
- package/dist/ui/tabs.js.map +1 -1
- package/dist/ui/{tabs.cjs → tabs.mjs} +29 -59
- package/dist/ui/tabs.mjs.map +1 -0
- package/dist/ui/{toast.d.cts → toast.d.mts} +1 -1
- package/dist/ui/toast.d.ts +1 -1
- package/dist/ui/toast.js +57 -63
- package/dist/ui/toast.js.map +1 -1
- package/dist/ui/{toast.cjs → toast.mjs} +43 -74
- package/dist/ui/toast.mjs.map +1 -0
- package/dist/ui/{toggle.d.cts → toggle.d.mts} +1 -1
- package/dist/ui/toggle.d.ts +1 -1
- package/dist/ui/toggle.js +23 -29
- package/dist/ui/toggle.js.map +1 -1
- package/dist/ui/{toggle.cjs → toggle.mjs} +19 -50
- package/dist/ui/toggle.mjs.map +1 -0
- package/dist/ui/{tooltip.d.cts → tooltip.d.mts} +2 -2
- package/dist/ui/tooltip.d.ts +2 -2
- package/dist/ui/tooltip.js +29 -35
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/{tooltip.cjs → tooltip.mjs} +26 -58
- package/dist/ui/tooltip.mjs.map +1 -0
- package/dist/variants-Dd9pe-ov.d.mts +8 -0
- package/dist/variants-Dd9pe-ov.d.ts +8 -0
- package/package.json +10 -15
- package/dist/ui/accordion.cjs.map +0 -1
- package/dist/ui/alert.cjs.map +0 -1
- package/dist/ui/badge.cjs.map +0 -1
- package/dist/ui/buttons.cjs +0 -202
- package/dist/ui/buttons.cjs.map +0 -1
- package/dist/ui/card.cjs.map +0 -1
- package/dist/ui/divider.cjs.map +0 -1
- package/dist/ui/drawer.cjs.map +0 -1
- package/dist/ui/dropdown.cjs.map +0 -1
- package/dist/ui/empty-state.cjs +0 -186
- package/dist/ui/empty-state.cjs.map +0 -1
- package/dist/ui/index.cjs +0 -5764
- package/dist/ui/index.cjs.map +0 -1
- package/dist/ui/index.d.cts +0 -27
- package/dist/ui/index.d.ts +0 -27
- package/dist/ui/index.js +0 -5626
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/inputs.cjs.map +0 -1
- package/dist/ui/modal.cjs.map +0 -1
- package/dist/ui/pagination.cjs.map +0 -1
- package/dist/ui/progress.cjs.map +0 -1
- package/dist/ui/select.cjs.map +0 -1
- package/dist/ui/skeleton.cjs.map +0 -1
- package/dist/ui/spinner.cjs.map +0 -1
- package/dist/ui/table.cjs.map +0 -1
- package/dist/ui/tabs.cjs.map +0 -1
- package/dist/ui/toast.cjs.map +0 -1
- package/dist/ui/toggle.cjs.map +0 -1
- package/dist/ui/tooltip.cjs.map +0 -1
- package/dist/variants-1Bx3BEeS.d.cts +0 -8
- package/dist/variants-1Bx3BEeS.d.ts +0 -8
- /package/dist/ui/{accordion.d.cts → accordion.d.mts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/tabs/tabs.tsx","../../src/ui/tabs/animations.ts","../../src/ui/tabs/variants.ts"],"sourcesContent":["\"use client\"\n\nimport { motion, useReducedMotion } from \"framer-motion\"\nimport {\n createContext,\n KeyboardEvent,\n useContext,\n useId,\n useState,\n} from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nimport { getTabsContentMotionProps } from \"./animations\"\nimport {\n TabsContentProps,\n TabsListProps,\n TabsProps,\n TabsTriggerProps,\n TabsValue,\n TabsContextType,\n} from \"./types\"\nimport { tabsListVariants, tabsTriggerVariants } from \"./variants\"\n\n\nexport const TabsContext = createContext<TabsContextType | null>(null)\n\nexport const useTabs = () => {\n const ctx = useContext(TabsContext)\n if (!ctx) throw new Error(\"Tabs components must be used within Tabs\")\n return ctx\n}\n\nexport function Tabs({\n value,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n children,\n className,\n}: TabsProps) {\n const [internalValue, setInternalValue] = useState(defaultValue)\n const idPrefix = useId()\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const setValue = (val: string) => {\n if (!isControlled) setInternalValue(val)\n onValueChange?.(val)\n }\n\n const tabTriggerId = (tabValue: TabsValue) =>\n `${idPrefix}zentauri-tab-${tabValue}`\n const tabPanelId = (tabValue: TabsValue) =>\n `${idPrefix}zentauri-panel-${tabValue}`\n\n return (\n <TabsContext.Provider\n value={{\n value: currentValue,\n setValue,\n orientation,\n tabTriggerId,\n tabPanelId,\n }}\n >\n <div data-slot=\"tabs\" className={cn(\"w-full\", className)}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n}\n\nexport function TabsList({\n children,\n className,\n ...props\n}: TabsListProps) {\n const { orientation, size } = useTabs()\n\n return (\n <div\n role=\"tablist\"\n aria-orientation={orientation}\n className={cn(tabsListVariants({ orientation, size }), className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function TabsTrigger({\n value,\n children,\n disabled,\n className,\n ...props\n}: TabsTriggerProps) {\n const { value: activeValue, setValue, tabTriggerId, tabPanelId, size, appearance, variant } = useTabs()\n\n const isActive = activeValue === value\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n const triggers = Array.from(\n document.querySelectorAll('[role=\"tab\"]'),\n ) as HTMLElement[]\n\n const index = triggers.findIndex((el) => el === e.currentTarget)\n\n if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault()\n triggers[index + 1]?.focus()\n }\n\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault()\n triggers[index - 1]?.focus()\n }\n\n if (e.key === \"Home\") {\n e.preventDefault()\n triggers[0]?.focus()\n }\n\n if (e.key === \"End\") {\n e.preventDefault()\n triggers[triggers.length - 1]?.focus()\n }\n }\n\n return (\n <button\n id={tabTriggerId(value)}\n type=\"button\"\n role=\"tab\"\n data-state={isActive ? \"active\" : \"inactive\"}\n aria-selected={isActive}\n aria-controls={tabPanelId(value)}\n disabled={disabled}\n onClick={() => setValue(value)}\n onKeyDown={handleKeyDown}\n className={cn(tabsTriggerVariants({ size, appearance, variant }), className, \"cursor-pointer\")}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport function TabsContent({\n value,\n children,\n className,\n animation = \"fade\",\n ...props\n}: TabsContentProps) {\n const { value: activeValue, orientation, tabTriggerId, tabPanelId } =\n useTabs()\n const prefersReducedMotion = useReducedMotion()\n\n if (activeValue !== value) return null\n\n const motionProps = getTabsContentMotionProps(\n animation,\n orientation,\n Boolean(prefersReducedMotion),\n )\n\n return (\n <motion.div\n id={tabPanelId(value)}\n role=\"tabpanel\"\n aria-labelledby={tabTriggerId(value)}\n {...props}\n {...motionProps}\n className={cn(\"mt-2\", className)}\n >\n {children}\n </motion.div>\n )\n}\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type TabsAnimation = \"none\" | \"fade\" | \"slide\";\n\ntype TabsPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"transition\"\n>;\n\nexport type TabsAnimationPresets = Record<TabsAnimation, TabsPresetMotionProps>;\n\ntype TabsOrientation = \"horizontal\" | \"vertical\";\n\nconst easeOutExpo: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\nexport const tabsContentAnimationPresets: TabsAnimationPresets = {\n none: {},\n fade: {\n initial: { opacity: 0, y: 6 },\n animate: { opacity: 1, y: 0 },\n transition: { duration: 0.2, ease: easeOutExpo },\n },\n slide: {\n initial: { opacity: 0, y: 8 },\n animate: { opacity: 1, y: 0 },\n transition: {\n type: \"spring\",\n stiffness: 420,\n damping: 34,\n mass: 0.82,\n },\n },\n};\n\nexport function getTabsContentMotionProps(\n animation: TabsAnimation,\n orientation: TabsOrientation,\n reducedMotion: boolean,\n): TabsPresetMotionProps {\n if (reducedMotion || animation === \"none\") {\n return {};\n }\n if (animation === \"fade\") {\n return tabsContentAnimationPresets.fade;\n }\n if (animation === \"slide\") {\n const offset = 12;\n return {\n initial:\n orientation === \"horizontal\"\n ? { opacity: 0, x: offset, y: 0 }\n : { opacity: 0, x: 0, y: offset },\n animate: { opacity: 1, x: 0, y: 0 },\n transition: { duration: 0.22, ease: easeOutExpo },\n };\n }\n return {};\n}\n","import { cva } from \"class-variance-authority\"\n\nexport const tabsListVariants = cva(\n \"flex items-center gap-1\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n underline: \"border-b-2 border-transparent\",\n pills: \"rounded-md\",\n },\n size: {\n sm: \"text-sm p-1\",\n md: \"text-base p-1.5\",\n lg: \"text-lg p-2\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n },\n defaultVariants: {\n size: \"md\",\n orientation: \"horizontal\",\n },\n }\n)\n\nexport const tabsTriggerVariants = cva(\n \"px-3 py-1.5 rounded-md transition-all focus:outline-none focus:ring-2 focus:ring-ring\",\n {\n variants: {\n appearance: {\n default: \"bg-transparent\",\n sky: \"bg-sky-500/75\",\n rose: \"bg-rose-500/75\",\n purple: \"bg-purple-500/75\",\n pink: \"bg-pink-500/75\",\n orange: \"bg-orange-500/75\",\n yellow: \"bg-yellow-500/75\",\n teal: \"bg-teal-500/75\",\n indigo: \"bg-indigo-500/75\",\n emerald: \"bg-emerald-500/75\",\n gray: \"bg-gray-500/75\",\n \"gradient-blue\": \"bg-gradient-to-r from-blue-600 to-purple-600\",\n \"gradient-green\": \"bg-gradient-to-r from-green-600 to-lime-600\",\n \"gradient-red\": \"bg-gradient-to-r from-red-600 to-pink-600\",\n \"gradient-yellow\": \"bg-gradient-to-r from-yellow-600 to-orange-600\",\n \"gradient-purple\": \"bg-gradient-to-r from-purple-600 to-pink-600\",\n \"gradient-teal\": \"bg-gradient-to-r from-teal-600 to-cyan-600\",\n \"gradient-indigo\": \"bg-gradient-to-r from-indigo-600 to-purple-600\",\n \"gradient-pink\": \"bg-gradient-to-r from-pink-600 to-rose-600\",\n \"gradient-orange\": \"bg-gradient-to-r from-orange-600 to-red-600\",\n },\n variant: {\n default: \"data-[state=active]:bg-background\",\n underline:\n \"border-b-2 border-transparent data-[state=active]:border-primary rounded-none\",\n pills:\n \"data-[state=active]:bg-primary data-[state=active]:text-white\",\n },\n size: {\n sm: \"px-2 py-1\",\n md: \"px-3 py-1.5\",\n lg: \"px-4 py-2\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)"],"mappings":"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","names":[]}
|
|
@@ -14,7 +14,7 @@ declare const toastViewportVariants: (props?: ({
|
|
|
14
14
|
position?: "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | null | undefined;
|
|
15
15
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
16
16
|
declare const toastRootVariants: (props?: ({
|
|
17
|
-
appearance?: "default" | "
|
|
17
|
+
appearance?: "default" | "success" | "warning" | "error" | "info" | "ghost" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
18
18
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
19
19
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
20
20
|
|
package/dist/ui/toast.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ declare const toastViewportVariants: (props?: ({
|
|
|
14
14
|
position?: "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | null | undefined;
|
|
15
15
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
16
16
|
declare const toastRootVariants: (props?: ({
|
|
17
|
-
appearance?: "default" | "
|
|
17
|
+
appearance?: "default" | "success" | "warning" | "error" | "info" | "ghost" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
|
|
18
18
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
19
19
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
20
20
|
|
package/dist/ui/toast.js
CHANGED
|
@@ -1,25 +1,19 @@
|
|
|
1
|
-
"use
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
|
+
var _chunkE5UX537Jjs = require('../chunk-E5UX537J.js');
|
|
3
4
|
|
|
4
5
|
// src/ui/toast/toast.tsx
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
useMemo,
|
|
12
|
-
useRef,
|
|
13
|
-
useState
|
|
14
|
-
} from "react";
|
|
15
|
-
import { createPortal } from "react-dom";
|
|
6
|
+
var _framermotion = require('framer-motion');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return twMerge(clsx(inputs));
|
|
22
|
-
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _react = require('react');
|
|
16
|
+
var _reactdom = require('react-dom');
|
|
23
17
|
|
|
24
18
|
// src/ui/toast/animations.ts
|
|
25
19
|
var toastAnimationPresets = {
|
|
@@ -39,8 +33,8 @@ var toastAnimationPresets = {
|
|
|
39
33
|
};
|
|
40
34
|
|
|
41
35
|
// src/ui/toast/variants.ts
|
|
42
|
-
|
|
43
|
-
var toastViewportVariants = cva("fixed z-[60] flex max-h-screen flex-col gap-2 p-4", {
|
|
36
|
+
var _classvarianceauthority = require('class-variance-authority');
|
|
37
|
+
var toastViewportVariants = _classvarianceauthority.cva.call(void 0, "fixed z-[60] flex max-h-screen flex-col gap-2 p-4", {
|
|
44
38
|
variants: {
|
|
45
39
|
position: {
|
|
46
40
|
"top-left": "left-0 top-0 items-start",
|
|
@@ -55,7 +49,7 @@ var toastViewportVariants = cva("fixed z-[60] flex max-h-screen flex-col gap-2 p
|
|
|
55
49
|
position: "bottom-right"
|
|
56
50
|
}
|
|
57
51
|
});
|
|
58
|
-
var toastRootVariants = cva(
|
|
52
|
+
var toastRootVariants = _classvarianceauthority.cva.call(void 0,
|
|
59
53
|
"pointer-events-auto w-[min(100vw-2rem,380px)] rounded-xl border border-white/10 bg-slate-950 p-4 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.45)]",
|
|
60
54
|
{
|
|
61
55
|
variants: {
|
|
@@ -100,8 +94,8 @@ var toastRootVariants = cva(
|
|
|
100
94
|
);
|
|
101
95
|
|
|
102
96
|
// src/ui/toast/toast.tsx
|
|
103
|
-
|
|
104
|
-
var ToastStoreContext = createContext(null);
|
|
97
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
98
|
+
var ToastStoreContext = _react.createContext.call(void 0, null);
|
|
105
99
|
var toastDispatcher = null;
|
|
106
100
|
function toast(input) {
|
|
107
101
|
if (!toastDispatcher) {
|
|
@@ -110,16 +104,16 @@ function toast(input) {
|
|
|
110
104
|
return toastDispatcher(input);
|
|
111
105
|
}
|
|
112
106
|
function useToast() {
|
|
113
|
-
const ctx = useContext(ToastStoreContext);
|
|
107
|
+
const ctx = _react.useContext.call(void 0, ToastStoreContext);
|
|
114
108
|
if (!ctx) {
|
|
115
109
|
throw new Error("useToast must be used within <ToastProvider>");
|
|
116
110
|
}
|
|
117
111
|
return { toast: ctx.push, dismiss: ctx.dismiss };
|
|
118
112
|
}
|
|
119
113
|
function ToastProvider({ children }) {
|
|
120
|
-
const [toasts, setToasts] = useState([]);
|
|
121
|
-
const timers = useRef(/* @__PURE__ */ new Map());
|
|
122
|
-
const dismiss = useCallback((id) => {
|
|
114
|
+
const [toasts, setToasts] = _react.useState.call(void 0, []);
|
|
115
|
+
const timers = _react.useRef.call(void 0, /* @__PURE__ */ new Map());
|
|
116
|
+
const dismiss = _react.useCallback.call(void 0, (id) => {
|
|
123
117
|
const timerId = timers.current.get(id);
|
|
124
118
|
if (timerId) {
|
|
125
119
|
window.clearTimeout(timerId);
|
|
@@ -127,15 +121,15 @@ function ToastProvider({ children }) {
|
|
|
127
121
|
}
|
|
128
122
|
setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));
|
|
129
123
|
}, []);
|
|
130
|
-
const push = useCallback(
|
|
124
|
+
const push = _react.useCallback.call(void 0,
|
|
131
125
|
(input) => {
|
|
132
|
-
const id = input.id
|
|
133
|
-
const durationMs = input.durationMs
|
|
126
|
+
const id = _nullishCoalesce(input.id, () => ( `toast-${Math.random().toString(16).slice(2)}`));
|
|
127
|
+
const durationMs = _nullishCoalesce(input.durationMs, () => ( 4500));
|
|
134
128
|
const record = {
|
|
135
129
|
...input,
|
|
136
130
|
id,
|
|
137
131
|
durationMs,
|
|
138
|
-
animation: input.animation
|
|
132
|
+
animation: _nullishCoalesce(input.animation, () => ( "slide"))
|
|
139
133
|
};
|
|
140
134
|
setToasts((prev) => [...prev, record]);
|
|
141
135
|
const timerId = window.setTimeout(() => dismiss(id), durationMs);
|
|
@@ -144,7 +138,7 @@ function ToastProvider({ children }) {
|
|
|
144
138
|
},
|
|
145
139
|
[dismiss]
|
|
146
140
|
);
|
|
147
|
-
const ctx = useMemo(
|
|
141
|
+
const ctx = _react.useMemo.call(void 0,
|
|
148
142
|
() => ({
|
|
149
143
|
toasts,
|
|
150
144
|
push,
|
|
@@ -152,17 +146,17 @@ function ToastProvider({ children }) {
|
|
|
152
146
|
}),
|
|
153
147
|
[dismiss, push, toasts]
|
|
154
148
|
);
|
|
155
|
-
useEffect(() => {
|
|
149
|
+
_react.useEffect.call(void 0, () => {
|
|
156
150
|
toastDispatcher = push;
|
|
157
151
|
return () => {
|
|
158
152
|
toastDispatcher = null;
|
|
159
153
|
};
|
|
160
154
|
}, [push]);
|
|
161
|
-
return /* @__PURE__ */ jsx(ToastStoreContext.Provider, { value: ctx, children });
|
|
155
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToastStoreContext.Provider, { value: ctx, children });
|
|
162
156
|
}
|
|
163
157
|
ToastProvider.displayName = "ToastProvider";
|
|
164
158
|
function ToastViewport({ position = "bottom-right", className }) {
|
|
165
|
-
const ctx = useContext(ToastStoreContext);
|
|
159
|
+
const ctx = _react.useContext.call(void 0, ToastStoreContext);
|
|
166
160
|
if (!ctx) {
|
|
167
161
|
throw new Error("ToastViewport must be used within <ToastProvider>");
|
|
168
162
|
}
|
|
@@ -170,8 +164,8 @@ function ToastViewport({ position = "bottom-right", className }) {
|
|
|
170
164
|
if (!portalTarget) {
|
|
171
165
|
return null;
|
|
172
166
|
}
|
|
173
|
-
return createPortal(
|
|
174
|
-
/* @__PURE__ */ jsx("div", { className: cn(toastViewportVariants({ position }), className), "data-slot": "toast-viewport", children: /* @__PURE__ */ jsx(AnimatePresence, { children: ctx.toasts.map((item) => /* @__PURE__ */ jsxs(
|
|
167
|
+
return _reactdom.createPortal.call(void 0,
|
|
168
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkE5UX537Jjs.cn.call(void 0, toastViewportVariants({ position }), className), "data-slot": "toast-viewport", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _framermotion.AnimatePresence, { children: ctx.toasts.map((item) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
175
169
|
Toast,
|
|
176
170
|
{
|
|
177
171
|
toastId: item.id,
|
|
@@ -179,9 +173,9 @@ function ToastViewport({ position = "bottom-right", className }) {
|
|
|
179
173
|
size: item.size,
|
|
180
174
|
animation: item.animation,
|
|
181
175
|
children: [
|
|
182
|
-
/* @__PURE__ */ jsx(ToastTitle, { children: item.title }),
|
|
183
|
-
item.description ? /* @__PURE__ */ jsx(ToastDescription, { children: item.description }) : null,
|
|
184
|
-
/* @__PURE__ */ jsx(ToastClose, { onClick: () => ctx.dismiss(item.id) })
|
|
176
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToastTitle, { children: item.title }),
|
|
177
|
+
item.description ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToastDescription, { children: item.description }) : null,
|
|
178
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ToastClose, { onClick: () => ctx.dismiss(item.id) })
|
|
185
179
|
]
|
|
186
180
|
},
|
|
187
181
|
item.id
|
|
@@ -193,15 +187,15 @@ ToastViewport.displayName = "ToastViewport";
|
|
|
193
187
|
function Toast({ toastId: _toastId, appearance, size, animation = "slide", className, children }) {
|
|
194
188
|
const motionProps = toastAnimationPresets[animation];
|
|
195
189
|
const live = appearance === "error" ? "assertive" : "polite";
|
|
196
|
-
return /* @__PURE__ */ jsx(
|
|
197
|
-
motion.div,
|
|
190
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
191
|
+
_framermotion.motion.div,
|
|
198
192
|
{
|
|
199
193
|
layout: true,
|
|
200
194
|
"data-slot": "toast",
|
|
201
195
|
role: appearance === "error" ? "alert" : "status",
|
|
202
196
|
"aria-live": live,
|
|
203
197
|
"aria-atomic": "true",
|
|
204
|
-
className: cn("relative", toastRootVariants({ appearance, size }), className),
|
|
198
|
+
className: _chunkE5UX537Jjs.cn.call(void 0, "relative", toastRootVariants({ appearance, size }), className),
|
|
205
199
|
initial: animation === "none" ? false : motionProps.initial,
|
|
206
200
|
animate: animation === "none" ? void 0 : motionProps.animate,
|
|
207
201
|
exit: animation === "none" ? void 0 : motionProps.exit,
|
|
@@ -212,47 +206,47 @@ function Toast({ toastId: _toastId, appearance, size, animation = "slide", class
|
|
|
212
206
|
}
|
|
213
207
|
Toast.displayName = "Toast";
|
|
214
208
|
function ToastTitle({ className, children }) {
|
|
215
|
-
return /* @__PURE__ */ jsx("div", { "data-slot": "toast-title", className: cn("font-semibold", className), children });
|
|
209
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "toast-title", className: _chunkE5UX537Jjs.cn.call(void 0, "font-semibold", className), children });
|
|
216
210
|
}
|
|
217
211
|
ToastTitle.displayName = "ToastTitle";
|
|
218
212
|
function ToastDescription({ className, children }) {
|
|
219
|
-
return /* @__PURE__ */ jsx("div", { "data-slot": "toast-description", className: cn("text-sm text-slate-300", className), children });
|
|
213
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "toast-description", className: _chunkE5UX537Jjs.cn.call(void 0, "text-sm text-slate-300", className), children });
|
|
220
214
|
}
|
|
221
215
|
ToastDescription.displayName = "ToastDescription";
|
|
222
216
|
function ToastAction({ className, children }) {
|
|
223
|
-
return /* @__PURE__ */ jsx("div", { "data-slot": "toast-action", className: cn("mt-3", className), children });
|
|
217
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "toast-action", className: _chunkE5UX537Jjs.cn.call(void 0, "mt-3", className), children });
|
|
224
218
|
}
|
|
225
219
|
ToastAction.displayName = "ToastAction";
|
|
226
220
|
function ToastClose({ className, children, onClick, ...rest }) {
|
|
227
|
-
return /* @__PURE__ */ jsx(
|
|
221
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
228
222
|
"button",
|
|
229
223
|
{
|
|
230
224
|
type: "button",
|
|
231
225
|
"data-slot": "toast-close",
|
|
232
226
|
"aria-label": "Dismiss notification",
|
|
233
|
-
className: cn(
|
|
227
|
+
className: _chunkE5UX537Jjs.cn.call(void 0,
|
|
234
228
|
"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10",
|
|
235
229
|
className
|
|
236
230
|
),
|
|
237
231
|
onClick,
|
|
238
232
|
...rest,
|
|
239
|
-
children: children
|
|
233
|
+
children: _nullishCoalesce(children, () => ( "\xD7"))
|
|
240
234
|
}
|
|
241
235
|
);
|
|
242
236
|
}
|
|
243
237
|
ToastClose.displayName = "ToastClose";
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
exports.Toast = Toast; exports.ToastAction = ToastAction; exports.ToastClose = ToastClose; exports.ToastDescription = ToastDescription; exports.ToastProvider = ToastProvider; exports.ToastTitle = ToastTitle; exports.ToastViewport = ToastViewport; exports.toast = toast; exports.toastAnimationPresets = toastAnimationPresets; exports.toastRootVariants = toastRootVariants; exports.toastViewportVariants = toastViewportVariants; exports.useToast = useToast;
|
|
258
252
|
//# sourceMappingURL=toast.js.map
|
package/dist/ui/toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/toast/toast.tsx","../../src/lib/utils.ts","../../src/ui/toast/animations.ts","../../src/ui/toast/variants.ts"],"sourcesContent":["\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { toastAnimationPresets } from \"./animations\";\nimport type {\n ToastContextValue,\n ToastInput,\n ToastProps,\n ToastProviderProps,\n ToastSectionProps,\n ToastViewportProps,\n} from \"./types\";\nimport { toastRootVariants, toastViewportVariants } from \"./variants\";\n\ntype InternalToast = Required<Pick<ToastInput, \"id\">> &\n Omit<ToastInput, \"id\"> & {\n durationMs: number;\n animation: NonNullable<ToastInput[\"animation\"]>;\n };\n\ntype ToastStoreContextValue = {\n toasts: InternalToast[];\n push: (input: ToastInput) => string;\n dismiss: (id: string) => void;\n};\n\nconst ToastStoreContext = createContext<ToastStoreContextValue | null>(null);\n\nlet toastDispatcher: ToastStoreContextValue[\"push\"] | null = null;\n\nexport function toast(input: ToastInput) {\n if (!toastDispatcher) {\n return \"\";\n }\n return toastDispatcher(input);\n}\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within <ToastProvider>\");\n }\n return { toast: ctx.push, dismiss: ctx.dismiss };\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const timers = useRef<Map<string, number>>(new Map());\n\n const dismiss = useCallback((id: string) => {\n const timerId = timers.current.get(id);\n if (timerId) {\n window.clearTimeout(timerId);\n timers.current.delete(id);\n }\n setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));\n }, []);\n\n const push = useCallback(\n (input: ToastInput) => {\n const id = input.id ?? `toast-${Math.random().toString(16).slice(2)}`;\n const durationMs = input.durationMs ?? 4500;\n const record: InternalToast = {\n ...input,\n id,\n durationMs,\n animation: input.animation ?? \"slide\",\n };\n setToasts((prev) => [...prev, record]);\n const timerId = window.setTimeout(() => dismiss(id), durationMs);\n timers.current.set(id, timerId);\n return id;\n },\n [dismiss],\n );\n\n const ctx = useMemo(\n () => ({\n toasts,\n push,\n dismiss,\n }),\n [dismiss, push, toasts],\n );\n\n useEffect(() => {\n toastDispatcher = push;\n return () => {\n toastDispatcher = null;\n };\n }, [push]);\n\n return <ToastStoreContext.Provider value={ctx}>{children}</ToastStoreContext.Provider>;\n}\n\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport({ position = \"bottom-right\", className }: ToastViewportProps) {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"ToastViewport must be used within <ToastProvider>\");\n }\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <div className={cn(toastViewportVariants({ position }), className)} data-slot=\"toast-viewport\">\n <AnimatePresence>\n {ctx.toasts.map((item) => (\n <Toast\n key={item.id}\n toastId={item.id}\n appearance={item.appearance}\n size={item.size}\n animation={item.animation}\n >\n <ToastTitle>{item.title}</ToastTitle>\n {item.description ? <ToastDescription>{item.description}</ToastDescription> : null}\n <ToastClose onClick={() => ctx.dismiss(item.id)} />\n </Toast>\n ))}\n </AnimatePresence>\n </div>,\n portalTarget,\n );\n}\n\nToastViewport.displayName = \"ToastViewport\";\n\nexport function Toast({ toastId: _toastId, appearance, size, animation = \"slide\", className, children }: ToastProps) {\n const motionProps = toastAnimationPresets[animation];\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n return (\n <motion.div\n layout\n data-slot=\"toast\"\n role={appearance === \"error\" ? \"alert\" : \"status\"}\n aria-live={live}\n aria-atomic=\"true\"\n className={cn(\"relative\", toastRootVariants({ appearance, size }), className)}\n initial={animation === \"none\" ? false : motionProps.initial}\n animate={animation === \"none\" ? undefined : motionProps.animate}\n exit={animation === \"none\" ? undefined : motionProps.exit}\n transition={motionProps.transition}\n >\n {children}\n </motion.div>\n );\n}\n\nToast.displayName = \"Toast\";\n\nexport function ToastTitle({ className, children }: ToastSectionProps) {\n return <div data-slot=\"toast-title\" className={cn(\"font-semibold\", className)}>{children}</div>;\n}\n\nToastTitle.displayName = \"ToastTitle\";\n\nexport function ToastDescription({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-description\" className={cn(\"text-sm text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nToastDescription.displayName = \"ToastDescription\";\n\nexport function ToastAction({ className, children }: ToastSectionProps) {\n return <div data-slot=\"toast-action\" className={cn(\"mt-3\", className)}>{children}</div>;\n}\n\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose({ className, children, onClick, ...rest }: ToastSectionProps & { onClick?: () => void }) {\n return (\n <button\n type=\"button\"\n data-slot=\"toast-close\"\n aria-label=\"Dismiss notification\"\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10\",\n className,\n )}\n onClick={onClick}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nToastClose.displayName = \"ToastClose\";\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type ToastAnimation = \"none\" | \"slide\" | \"fade\";\n\ntype ToastPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type ToastAnimationPresets = Record<ToastAnimation, ToastPresetMotionProps>;\n\nexport const toastAnimationPresets: ToastAnimationPresets = {\n none: {},\n slide: {\n initial: { opacity: 0, x: 24 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 16 },\n transition: { type: \"spring\", stiffness: 380, damping: 28 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.18 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const toastViewportVariants = cva(\"fixed z-[60] flex max-h-screen flex-col gap-2 p-4\", {\n variants: {\n position: {\n \"top-left\": \"left-0 top-0 items-start\",\n \"top-center\": \"left-1/2 top-0 -translate-x-1/2 items-center\",\n \"top-right\": \"right-0 top-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n },\n },\n defaultVariants: {\n position: \"bottom-right\",\n },\n});\n\nexport const toastRootVariants = cva(\n \"pointer-events-auto w-[min(100vw-2rem,380px)] rounded-xl border border-white/10 bg-slate-950 p-4 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.45)]\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n success: \"border-emerald-500/40 bg-emerald-950\",\n warning: \"border-amber-500/40 bg-amber-950\",\n error: \"border-rose-500/50 bg-rose-950\",\n info: \"border-sky-500/40 bg-sky-950\",\n ghost: \"border-transparent bg-transparent text-slate-200\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"p-3 text-xs\",\n md: \"p-4 text-sm\",\n lg: \"p-5 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["/Users/shubham/Desktop/Repos/NEXT%20JS/zentauri-ui/packages/components/dist/ui/toast.js"],"names":[],"mappings":"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AAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,oBAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,0BAAA;AACA,UAAA;AACA,0BAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/shubham/Desktop/Repos/NEXT JS/zentauri-ui/packages/components/dist/ui/toast.js","sourcesContent":[null]}
|
|
@@ -1,51 +1,21 @@
|
|
|
1
|
-
"use
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use client";
|
|
19
2
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Toast: () => Toast,
|
|
24
|
-
ToastAction: () => ToastAction,
|
|
25
|
-
ToastClose: () => ToastClose,
|
|
26
|
-
ToastDescription: () => ToastDescription,
|
|
27
|
-
ToastProvider: () => ToastProvider,
|
|
28
|
-
ToastTitle: () => ToastTitle,
|
|
29
|
-
ToastViewport: () => ToastViewport,
|
|
30
|
-
toast: () => toast,
|
|
31
|
-
toastAnimationPresets: () => toastAnimationPresets,
|
|
32
|
-
toastRootVariants: () => toastRootVariants,
|
|
33
|
-
toastViewportVariants: () => toastViewportVariants,
|
|
34
|
-
useToast: () => useToast
|
|
35
|
-
});
|
|
36
|
-
module.exports = __toCommonJS(toast_exports);
|
|
3
|
+
import {
|
|
4
|
+
cn
|
|
5
|
+
} from "../chunk-MEWYFWBX.mjs";
|
|
37
6
|
|
|
38
7
|
// src/ui/toast/toast.tsx
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
8
|
+
import { AnimatePresence, motion } from "framer-motion";
|
|
9
|
+
import {
|
|
10
|
+
createContext,
|
|
11
|
+
useCallback,
|
|
12
|
+
useContext,
|
|
13
|
+
useEffect,
|
|
14
|
+
useMemo,
|
|
15
|
+
useRef,
|
|
16
|
+
useState
|
|
17
|
+
} from "react";
|
|
18
|
+
import { createPortal } from "react-dom";
|
|
49
19
|
|
|
50
20
|
// src/ui/toast/animations.ts
|
|
51
21
|
var toastAnimationPresets = {
|
|
@@ -65,8 +35,8 @@ var toastAnimationPresets = {
|
|
|
65
35
|
};
|
|
66
36
|
|
|
67
37
|
// src/ui/toast/variants.ts
|
|
68
|
-
|
|
69
|
-
var toastViewportVariants =
|
|
38
|
+
import { cva } from "class-variance-authority";
|
|
39
|
+
var toastViewportVariants = cva("fixed z-[60] flex max-h-screen flex-col gap-2 p-4", {
|
|
70
40
|
variants: {
|
|
71
41
|
position: {
|
|
72
42
|
"top-left": "left-0 top-0 items-start",
|
|
@@ -81,7 +51,7 @@ var toastViewportVariants = (0, import_class_variance_authority.cva)("fixed z-[6
|
|
|
81
51
|
position: "bottom-right"
|
|
82
52
|
}
|
|
83
53
|
});
|
|
84
|
-
var toastRootVariants =
|
|
54
|
+
var toastRootVariants = cva(
|
|
85
55
|
"pointer-events-auto w-[min(100vw-2rem,380px)] rounded-xl border border-white/10 bg-slate-950 p-4 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.45)]",
|
|
86
56
|
{
|
|
87
57
|
variants: {
|
|
@@ -126,8 +96,8 @@ var toastRootVariants = (0, import_class_variance_authority.cva)(
|
|
|
126
96
|
);
|
|
127
97
|
|
|
128
98
|
// src/ui/toast/toast.tsx
|
|
129
|
-
|
|
130
|
-
var ToastStoreContext =
|
|
99
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
100
|
+
var ToastStoreContext = createContext(null);
|
|
131
101
|
var toastDispatcher = null;
|
|
132
102
|
function toast(input) {
|
|
133
103
|
if (!toastDispatcher) {
|
|
@@ -136,16 +106,16 @@ function toast(input) {
|
|
|
136
106
|
return toastDispatcher(input);
|
|
137
107
|
}
|
|
138
108
|
function useToast() {
|
|
139
|
-
const ctx =
|
|
109
|
+
const ctx = useContext(ToastStoreContext);
|
|
140
110
|
if (!ctx) {
|
|
141
111
|
throw new Error("useToast must be used within <ToastProvider>");
|
|
142
112
|
}
|
|
143
113
|
return { toast: ctx.push, dismiss: ctx.dismiss };
|
|
144
114
|
}
|
|
145
115
|
function ToastProvider({ children }) {
|
|
146
|
-
const [toasts, setToasts] =
|
|
147
|
-
const timers =
|
|
148
|
-
const dismiss =
|
|
116
|
+
const [toasts, setToasts] = useState([]);
|
|
117
|
+
const timers = useRef(/* @__PURE__ */ new Map());
|
|
118
|
+
const dismiss = useCallback((id) => {
|
|
149
119
|
const timerId = timers.current.get(id);
|
|
150
120
|
if (timerId) {
|
|
151
121
|
window.clearTimeout(timerId);
|
|
@@ -153,7 +123,7 @@ function ToastProvider({ children }) {
|
|
|
153
123
|
}
|
|
154
124
|
setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));
|
|
155
125
|
}, []);
|
|
156
|
-
const push =
|
|
126
|
+
const push = useCallback(
|
|
157
127
|
(input) => {
|
|
158
128
|
const id = input.id ?? `toast-${Math.random().toString(16).slice(2)}`;
|
|
159
129
|
const durationMs = input.durationMs ?? 4500;
|
|
@@ -170,7 +140,7 @@ function ToastProvider({ children }) {
|
|
|
170
140
|
},
|
|
171
141
|
[dismiss]
|
|
172
142
|
);
|
|
173
|
-
const ctx =
|
|
143
|
+
const ctx = useMemo(
|
|
174
144
|
() => ({
|
|
175
145
|
toasts,
|
|
176
146
|
push,
|
|
@@ -178,17 +148,17 @@ function ToastProvider({ children }) {
|
|
|
178
148
|
}),
|
|
179
149
|
[dismiss, push, toasts]
|
|
180
150
|
);
|
|
181
|
-
|
|
151
|
+
useEffect(() => {
|
|
182
152
|
toastDispatcher = push;
|
|
183
153
|
return () => {
|
|
184
154
|
toastDispatcher = null;
|
|
185
155
|
};
|
|
186
156
|
}, [push]);
|
|
187
|
-
return /* @__PURE__ */
|
|
157
|
+
return /* @__PURE__ */ jsx(ToastStoreContext.Provider, { value: ctx, children });
|
|
188
158
|
}
|
|
189
159
|
ToastProvider.displayName = "ToastProvider";
|
|
190
160
|
function ToastViewport({ position = "bottom-right", className }) {
|
|
191
|
-
const ctx =
|
|
161
|
+
const ctx = useContext(ToastStoreContext);
|
|
192
162
|
if (!ctx) {
|
|
193
163
|
throw new Error("ToastViewport must be used within <ToastProvider>");
|
|
194
164
|
}
|
|
@@ -196,8 +166,8 @@ function ToastViewport({ position = "bottom-right", className }) {
|
|
|
196
166
|
if (!portalTarget) {
|
|
197
167
|
return null;
|
|
198
168
|
}
|
|
199
|
-
return
|
|
200
|
-
/* @__PURE__ */
|
|
169
|
+
return createPortal(
|
|
170
|
+
/* @__PURE__ */ jsx("div", { className: cn(toastViewportVariants({ position }), className), "data-slot": "toast-viewport", children: /* @__PURE__ */ jsx(AnimatePresence, { children: ctx.toasts.map((item) => /* @__PURE__ */ jsxs(
|
|
201
171
|
Toast,
|
|
202
172
|
{
|
|
203
173
|
toastId: item.id,
|
|
@@ -205,9 +175,9 @@ function ToastViewport({ position = "bottom-right", className }) {
|
|
|
205
175
|
size: item.size,
|
|
206
176
|
animation: item.animation,
|
|
207
177
|
children: [
|
|
208
|
-
/* @__PURE__ */
|
|
209
|
-
item.description ? /* @__PURE__ */
|
|
210
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ jsx(ToastTitle, { children: item.title }),
|
|
179
|
+
item.description ? /* @__PURE__ */ jsx(ToastDescription, { children: item.description }) : null,
|
|
180
|
+
/* @__PURE__ */ jsx(ToastClose, { onClick: () => ctx.dismiss(item.id) })
|
|
211
181
|
]
|
|
212
182
|
},
|
|
213
183
|
item.id
|
|
@@ -219,8 +189,8 @@ ToastViewport.displayName = "ToastViewport";
|
|
|
219
189
|
function Toast({ toastId: _toastId, appearance, size, animation = "slide", className, children }) {
|
|
220
190
|
const motionProps = toastAnimationPresets[animation];
|
|
221
191
|
const live = appearance === "error" ? "assertive" : "polite";
|
|
222
|
-
return /* @__PURE__ */
|
|
223
|
-
|
|
192
|
+
return /* @__PURE__ */ jsx(
|
|
193
|
+
motion.div,
|
|
224
194
|
{
|
|
225
195
|
layout: true,
|
|
226
196
|
"data-slot": "toast",
|
|
@@ -238,19 +208,19 @@ function Toast({ toastId: _toastId, appearance, size, animation = "slide", class
|
|
|
238
208
|
}
|
|
239
209
|
Toast.displayName = "Toast";
|
|
240
210
|
function ToastTitle({ className, children }) {
|
|
241
|
-
return /* @__PURE__ */
|
|
211
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "toast-title", className: cn("font-semibold", className), children });
|
|
242
212
|
}
|
|
243
213
|
ToastTitle.displayName = "ToastTitle";
|
|
244
214
|
function ToastDescription({ className, children }) {
|
|
245
|
-
return /* @__PURE__ */
|
|
215
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "toast-description", className: cn("text-sm text-slate-300", className), children });
|
|
246
216
|
}
|
|
247
217
|
ToastDescription.displayName = "ToastDescription";
|
|
248
218
|
function ToastAction({ className, children }) {
|
|
249
|
-
return /* @__PURE__ */
|
|
219
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "toast-action", className: cn("mt-3", className), children });
|
|
250
220
|
}
|
|
251
221
|
ToastAction.displayName = "ToastAction";
|
|
252
222
|
function ToastClose({ className, children, onClick, ...rest }) {
|
|
253
|
-
return /* @__PURE__ */
|
|
223
|
+
return /* @__PURE__ */ jsx(
|
|
254
224
|
"button",
|
|
255
225
|
{
|
|
256
226
|
type: "button",
|
|
@@ -267,8 +237,7 @@ function ToastClose({ className, children, onClick, ...rest }) {
|
|
|
267
237
|
);
|
|
268
238
|
}
|
|
269
239
|
ToastClose.displayName = "ToastClose";
|
|
270
|
-
|
|
271
|
-
0 && (module.exports = {
|
|
240
|
+
export {
|
|
272
241
|
Toast,
|
|
273
242
|
ToastAction,
|
|
274
243
|
ToastClose,
|
|
@@ -281,5 +250,5 @@ ToastClose.displayName = "ToastClose";
|
|
|
281
250
|
toastRootVariants,
|
|
282
251
|
toastViewportVariants,
|
|
283
252
|
useToast
|
|
284
|
-
}
|
|
285
|
-
//# sourceMappingURL=toast.
|
|
253
|
+
};
|
|
254
|
+
//# sourceMappingURL=toast.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/toast/toast.tsx","../../src/ui/toast/animations.ts","../../src/ui/toast/variants.ts"],"sourcesContent":["\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport { toastAnimationPresets } from \"./animations\";\nimport type {\n ToastContextValue,\n ToastInput,\n ToastProps,\n ToastProviderProps,\n ToastSectionProps,\n ToastViewportProps,\n} from \"./types\";\nimport { toastRootVariants, toastViewportVariants } from \"./variants\";\n\ntype InternalToast = Required<Pick<ToastInput, \"id\">> &\n Omit<ToastInput, \"id\"> & {\n durationMs: number;\n animation: NonNullable<ToastInput[\"animation\"]>;\n };\n\ntype ToastStoreContextValue = {\n toasts: InternalToast[];\n push: (input: ToastInput) => string;\n dismiss: (id: string) => void;\n};\n\nconst ToastStoreContext = createContext<ToastStoreContextValue | null>(null);\n\nlet toastDispatcher: ToastStoreContextValue[\"push\"] | null = null;\n\nexport function toast(input: ToastInput) {\n if (!toastDispatcher) {\n return \"\";\n }\n return toastDispatcher(input);\n}\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within <ToastProvider>\");\n }\n return { toast: ctx.push, dismiss: ctx.dismiss };\n}\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const timers = useRef<Map<string, number>>(new Map());\n\n const dismiss = useCallback((id: string) => {\n const timerId = timers.current.get(id);\n if (timerId) {\n window.clearTimeout(timerId);\n timers.current.delete(id);\n }\n setToasts((prev) => prev.filter((toastItem) => toastItem.id !== id));\n }, []);\n\n const push = useCallback(\n (input: ToastInput) => {\n const id = input.id ?? `toast-${Math.random().toString(16).slice(2)}`;\n const durationMs = input.durationMs ?? 4500;\n const record: InternalToast = {\n ...input,\n id,\n durationMs,\n animation: input.animation ?? \"slide\",\n };\n setToasts((prev) => [...prev, record]);\n const timerId = window.setTimeout(() => dismiss(id), durationMs);\n timers.current.set(id, timerId);\n return id;\n },\n [dismiss],\n );\n\n const ctx = useMemo(\n () => ({\n toasts,\n push,\n dismiss,\n }),\n [dismiss, push, toasts],\n );\n\n useEffect(() => {\n toastDispatcher = push;\n return () => {\n toastDispatcher = null;\n };\n }, [push]);\n\n return <ToastStoreContext.Provider value={ctx}>{children}</ToastStoreContext.Provider>;\n}\n\nToastProvider.displayName = \"ToastProvider\";\n\nexport function ToastViewport({ position = \"bottom-right\", className }: ToastViewportProps) {\n const ctx = useContext(ToastStoreContext);\n if (!ctx) {\n throw new Error(\"ToastViewport must be used within <ToastProvider>\");\n }\n\n const portalTarget = typeof document !== \"undefined\" ? document.body : null;\n if (!portalTarget) {\n return null;\n }\n\n return createPortal(\n <div className={cn(toastViewportVariants({ position }), className)} data-slot=\"toast-viewport\">\n <AnimatePresence>\n {ctx.toasts.map((item) => (\n <Toast\n key={item.id}\n toastId={item.id}\n appearance={item.appearance}\n size={item.size}\n animation={item.animation}\n >\n <ToastTitle>{item.title}</ToastTitle>\n {item.description ? <ToastDescription>{item.description}</ToastDescription> : null}\n <ToastClose onClick={() => ctx.dismiss(item.id)} />\n </Toast>\n ))}\n </AnimatePresence>\n </div>,\n portalTarget,\n );\n}\n\nToastViewport.displayName = \"ToastViewport\";\n\nexport function Toast({ toastId: _toastId, appearance, size, animation = \"slide\", className, children }: ToastProps) {\n const motionProps = toastAnimationPresets[animation];\n const live = appearance === \"error\" ? \"assertive\" : \"polite\";\n\n return (\n <motion.div\n layout\n data-slot=\"toast\"\n role={appearance === \"error\" ? \"alert\" : \"status\"}\n aria-live={live}\n aria-atomic=\"true\"\n className={cn(\"relative\", toastRootVariants({ appearance, size }), className)}\n initial={animation === \"none\" ? false : motionProps.initial}\n animate={animation === \"none\" ? undefined : motionProps.animate}\n exit={animation === \"none\" ? undefined : motionProps.exit}\n transition={motionProps.transition}\n >\n {children}\n </motion.div>\n );\n}\n\nToast.displayName = \"Toast\";\n\nexport function ToastTitle({ className, children }: ToastSectionProps) {\n return <div data-slot=\"toast-title\" className={cn(\"font-semibold\", className)}>{children}</div>;\n}\n\nToastTitle.displayName = \"ToastTitle\";\n\nexport function ToastDescription({ className, children }: ToastSectionProps) {\n return (\n <div data-slot=\"toast-description\" className={cn(\"text-sm text-slate-300\", className)}>\n {children}\n </div>\n );\n}\n\nToastDescription.displayName = \"ToastDescription\";\n\nexport function ToastAction({ className, children }: ToastSectionProps) {\n return <div data-slot=\"toast-action\" className={cn(\"mt-3\", className)}>{children}</div>;\n}\n\nToastAction.displayName = \"ToastAction\";\n\nexport function ToastClose({ className, children, onClick, ...rest }: ToastSectionProps & { onClick?: () => void }) {\n return (\n <button\n type=\"button\"\n data-slot=\"toast-close\"\n aria-label=\"Dismiss notification\"\n className={cn(\n \"absolute right-3 top-3 inline-flex size-8 items-center justify-center rounded-md text-slate-200 transition hover:bg-white/10\",\n className,\n )}\n onClick={onClick}\n {...rest}\n >\n {children ?? \"×\"}\n </button>\n );\n}\n\nToastClose.displayName = \"ToastClose\";\n","import type { HTMLMotionProps } from \"framer-motion\";\n\nexport type ToastAnimation = \"none\" | \"slide\" | \"fade\";\n\ntype ToastPresetMotionProps = Pick<\n HTMLMotionProps<\"div\">,\n \"initial\" | \"animate\" | \"exit\" | \"transition\"\n>;\n\nexport type ToastAnimationPresets = Record<ToastAnimation, ToastPresetMotionProps>;\n\nexport const toastAnimationPresets: ToastAnimationPresets = {\n none: {},\n slide: {\n initial: { opacity: 0, x: 24 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 16 },\n transition: { type: \"spring\", stiffness: 380, damping: 28 },\n },\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.18 },\n },\n};\n","import { cva } from \"class-variance-authority\";\n\nexport const toastViewportVariants = cva(\"fixed z-[60] flex max-h-screen flex-col gap-2 p-4\", {\n variants: {\n position: {\n \"top-left\": \"left-0 top-0 items-start\",\n \"top-center\": \"left-1/2 top-0 -translate-x-1/2 items-center\",\n \"top-right\": \"right-0 top-0 items-end\",\n \"bottom-left\": \"bottom-0 left-0 items-start\",\n \"bottom-center\": \"bottom-0 left-1/2 -translate-x-1/2 items-center\",\n \"bottom-right\": \"bottom-0 right-0 items-end\",\n },\n },\n defaultVariants: {\n position: \"bottom-right\",\n },\n});\n\nexport const toastRootVariants = cva(\n \"pointer-events-auto w-[min(100vw-2rem,380px)] rounded-xl border border-white/10 bg-slate-950 p-4 text-slate-50 shadow-[0_18px_48px_rgba(15,23,42,0.45)]\",\n {\n variants: {\n appearance: {\n default: \"bg-slate-950\",\n success: \"border-emerald-500/40 bg-emerald-950\",\n warning: \"border-amber-500/40 bg-amber-950\",\n error: \"border-rose-500/50 bg-rose-950\",\n info: \"border-sky-500/40 bg-sky-950\",\n ghost: \"border-transparent bg-transparent text-slate-200\",\n purple: \"border-purple-600 bg-purple-950/70 backdrop-blur-xl\",\n pink: \"border-pink-600 bg-pink-950/70 backdrop-blur-xl\",\n orange: \"border-orange-600 bg-orange-950/70 backdrop-blur-xl\",\n yellow: \"border-yellow-600 bg-yellow-950/70 backdrop-blur-xl\",\n teal: \"border-teal-600 bg-teal-950/70 backdrop-blur-xl\",\n indigo: \"border-indigo-600 bg-indigo-950/70 backdrop-blur-xl\",\n emerald: \"border-emerald-600 bg-emerald-950/70 backdrop-blur-xl\",\n gray: \"border-gray-600 bg-gray-950/70 backdrop-blur-xl\",\n amber: \"border-amber-600 bg-amber-950/70 backdrop-blur-xl\",\n violet: \"border-violet-600 bg-violet-950/70 backdrop-blur-xl\",\n \"gradient-blue\": \"border-gradient-to-r from-blue-600 to-purple-600 bg-gradient-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-green\": \"border-gradient-to-r from-green-600 to-lime-600 bg-gradient-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl\",\n \"gradient-red\": \"border-gradient-to-r from-red-600 to-pink-600 bg-gradient-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-yellow\": \"border-gradient-to-r from-yellow-600 to-orange-600 bg-gradient-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl\",\n \"gradient-purple\": \"border-gradient-to-r from-purple-600 to-pink-600 bg-gradient-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl\",\n \"gradient-teal\": \"border-gradient-to-r from-teal-600 to-cyan-600 bg-gradient-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl\",\n \"gradient-indigo\": \"border-gradient-to-r from-indigo-600 to-purple-600 bg-gradient-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl\",\n \"gradient-pink\": \"border-gradient-to-r from-pink-600 to-rose-600 bg-gradient-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl\",\n \"gradient-orange\": \"border-gradient-to-r from-orange-600 to-red-600 bg-gradient-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl\",\n },\n size: {\n sm: \"p-3 text-xs\",\n md: \"p-4 text-sm\",\n lg: \"p-5 text-base\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n },\n },\n);\n"],"mappings":"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","names":[]}
|