bynana-ui 1.1.0 → 1.4.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/accordion/index.js +2 -0
- package/dist/accordion/index.js.map +1 -0
- package/dist/accordion/index.mjs +2 -0
- package/dist/accordion/index.mjs.map +1 -0
- package/dist/alert/index.js +2 -0
- package/dist/alert/index.js.map +1 -0
- package/dist/alert/index.mjs +2 -0
- package/dist/alert/index.mjs.map +1 -0
- package/dist/ascii-text/index.js +3 -0
- package/dist/ascii-text/index.js.map +1 -0
- package/dist/ascii-text/index.mjs +3 -0
- package/dist/ascii-text/index.mjs.map +1 -0
- package/dist/attract-button/index.js +2 -0
- package/dist/attract-button/index.js.map +1 -0
- package/dist/attract-button/index.mjs +2 -0
- package/dist/attract-button/index.mjs.map +1 -0
- package/dist/blur-fade/index.js +2 -0
- package/dist/blur-fade/index.js.map +1 -0
- package/dist/blur-fade/index.mjs +2 -0
- package/dist/blur-fade/index.mjs.map +1 -0
- package/dist/card/index.js +2 -0
- package/dist/card/index.js.map +1 -0
- package/dist/card/index.mjs +2 -0
- package/dist/card/index.mjs.map +1 -0
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox/index.js.map +1 -0
- package/dist/checkbox/index.mjs +2 -0
- package/dist/checkbox/index.mjs.map +1 -0
- package/dist/circular-text/index.js +2 -0
- package/dist/circular-text/index.js.map +1 -0
- package/dist/circular-text/index.mjs +2 -0
- package/dist/circular-text/index.mjs.map +1 -0
- package/dist/click-spark/index.js +2 -0
- package/dist/click-spark/index.js.map +1 -0
- package/dist/click-spark/index.mjs +2 -0
- package/dist/click-spark/index.mjs.map +1 -0
- package/dist/command-button/index.js +2 -0
- package/dist/command-button/index.js.map +1 -0
- package/dist/command-button/index.mjs +2 -0
- package/dist/command-button/index.mjs.map +1 -0
- package/dist/copy-button/index.js +2 -0
- package/dist/copy-button/index.js.map +1 -0
- package/dist/copy-button/index.mjs +2 -0
- package/dist/copy-button/index.mjs.map +1 -0
- package/dist/counter/index.js +2 -0
- package/dist/counter/index.js.map +1 -0
- package/dist/counter/index.mjs +2 -0
- package/dist/counter/index.mjs.map +1 -0
- package/dist/decrypted-text/index.js +2 -0
- package/dist/decrypted-text/index.js.map +1 -0
- package/dist/decrypted-text/index.mjs +2 -0
- package/dist/decrypted-text/index.mjs.map +1 -0
- package/dist/dock/index.js +2 -0
- package/dist/dock/index.js.map +1 -0
- package/dist/dock/index.mjs +2 -0
- package/dist/dock/index.mjs.map +1 -0
- package/dist/drawer/index.js +2 -0
- package/dist/drawer/index.js.map +1 -0
- package/dist/drawer/index.mjs +2 -0
- package/dist/drawer/index.mjs.map +1 -0
- package/dist/elastic-text/index.js +2 -0
- package/dist/elastic-text/index.js.map +1 -0
- package/dist/elastic-text/index.mjs +2 -0
- package/dist/elastic-text/index.mjs.map +1 -0
- package/dist/falling-text/index.js +2 -0
- package/dist/falling-text/index.js.map +1 -0
- package/dist/falling-text/index.mjs +2 -0
- package/dist/falling-text/index.mjs.map +1 -0
- package/dist/file-tree/index.js +2 -0
- package/dist/file-tree/index.js.map +1 -0
- package/dist/file-tree/index.mjs +2 -0
- package/dist/file-tree/index.mjs.map +1 -0
- package/dist/float-effect/index.js +2 -0
- package/dist/float-effect/index.js.map +1 -0
- package/dist/float-effect/index.mjs +2 -0
- package/dist/float-effect/index.mjs.map +1 -0
- package/dist/glow-effect/index.js +2 -0
- package/dist/glow-effect/index.js.map +1 -0
- package/dist/glow-effect/index.mjs +2 -0
- package/dist/glow-effect/index.mjs.map +1 -0
- package/dist/glowing-text/index.js +2 -0
- package/dist/glowing-text/index.js.map +1 -0
- package/dist/glowing-text/index.mjs +2 -0
- package/dist/glowing-text/index.mjs.map +1 -0
- package/dist/hamburger-basic/index.js +2 -0
- package/dist/hamburger-basic/index.js.map +1 -0
- package/dist/hamburger-basic/index.mjs +2 -0
- package/dist/hamburger-basic/index.mjs.map +1 -0
- package/dist/hamburger-spin/index.js +2 -0
- package/dist/hamburger-spin/index.js.map +1 -0
- package/dist/hamburger-spin/index.mjs +2 -0
- package/dist/hamburger-spin/index.mjs.map +1 -0
- package/dist/index.js +34 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +34 -3
- package/dist/index.mjs.map +1 -1
- package/dist/infinite-scroll/index.js +11 -0
- package/dist/infinite-scroll/index.js.map +1 -0
- package/dist/infinite-scroll/index.mjs +11 -0
- package/dist/infinite-scroll/index.mjs.map +1 -0
- package/dist/input/index.js +2 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/index.mjs +2 -0
- package/dist/input/index.mjs.map +1 -0
- package/dist/input-otp/index.js +2 -0
- package/dist/input-otp/index.js.map +1 -0
- package/dist/input-otp/index.mjs +2 -0
- package/dist/input-otp/index.mjs.map +1 -0
- package/dist/loading-flower/index.js +7 -0
- package/dist/loading-flower/index.js.map +1 -0
- package/dist/loading-flower/index.mjs +7 -0
- package/dist/loading-flower/index.mjs.map +1 -0
- package/dist/loading-geometric/index.js +7 -0
- package/dist/loading-geometric/index.js.map +1 -0
- package/dist/loading-geometric/index.mjs +7 -0
- package/dist/loading-geometric/index.mjs.map +1 -0
- package/dist/loading-morph/index.js +5 -0
- package/dist/loading-morph/index.js.map +1 -0
- package/dist/loading-morph/index.mjs +5 -0
- package/dist/loading-morph/index.mjs.map +1 -0
- package/dist/loading-rings/index.js +4 -0
- package/dist/loading-rings/index.js.map +1 -0
- package/dist/loading-rings/index.mjs +4 -0
- package/dist/loading-rings/index.mjs.map +1 -0
- package/dist/loading-text/index.js +6 -0
- package/dist/loading-text/index.js.map +1 -0
- package/dist/loading-text/index.mjs +6 -0
- package/dist/loading-text/index.mjs.map +1 -0
- package/dist/loading-words/index.js +4 -0
- package/dist/loading-words/index.js.map +1 -0
- package/dist/loading-words/index.mjs +4 -0
- package/dist/loading-words/index.mjs.map +1 -0
- package/dist/modal/index.js +2 -0
- package/dist/modal/index.js.map +1 -0
- package/dist/modal/index.mjs +2 -0
- package/dist/modal/index.mjs.map +1 -0
- package/dist/morph-text/index.js +2 -0
- package/dist/morph-text/index.js.map +1 -0
- package/dist/morph-text/index.mjs +2 -0
- package/dist/morph-text/index.mjs.map +1 -0
- package/dist/multi-step-loader/index.js +2 -0
- package/dist/multi-step-loader/index.js.map +1 -0
- package/dist/multi-step-loader/index.mjs +2 -0
- package/dist/multi-step-loader/index.mjs.map +1 -0
- package/dist/particle-button/index.js +2 -0
- package/dist/particle-button/index.js.map +1 -0
- package/dist/particle-button/index.mjs +2 -0
- package/dist/particle-button/index.mjs.map +1 -0
- package/dist/perspective-text/index.js +2 -0
- package/dist/perspective-text/index.js.map +1 -0
- package/dist/perspective-text/index.mjs +2 -0
- package/dist/perspective-text/index.mjs.map +1 -0
- package/dist/pixel-card/index.js +2 -0
- package/dist/pixel-card/index.js.map +1 -0
- package/dist/pixel-card/index.mjs +2 -0
- package/dist/pixel-card/index.mjs.map +1 -0
- package/dist/radio/index.js +2 -0
- package/dist/radio/index.js.map +1 -0
- package/dist/radio/index.mjs +2 -0
- package/dist/radio/index.mjs.map +1 -0
- package/dist/reveal-text/index.js +2 -0
- package/dist/reveal-text/index.js.map +1 -0
- package/dist/reveal-text/index.mjs +2 -0
- package/dist/reveal-text/index.mjs.map +1 -0
- package/dist/select/index.js +2 -0
- package/dist/select/index.js.map +1 -0
- package/dist/select/index.mjs +2 -0
- package/dist/select/index.mjs.map +1 -0
- package/dist/sliced-text/index.js +2 -0
- package/dist/sliced-text/index.js.map +1 -0
- package/dist/sliced-text/index.mjs +2 -0
- package/dist/sliced-text/index.mjs.map +1 -0
- package/dist/smooth-cursor/index.js +2 -0
- package/dist/smooth-cursor/index.js.map +1 -0
- package/dist/smooth-cursor/index.mjs +2 -0
- package/dist/smooth-cursor/index.mjs.map +1 -0
- package/dist/split-text/index.js +2 -0
- package/dist/split-text/index.js.map +1 -0
- package/dist/split-text/index.mjs +2 -0
- package/dist/split-text/index.mjs.map +1 -0
- package/dist/stepper/index.js +2 -0
- package/dist/stepper/index.js.map +1 -0
- package/dist/stepper/index.mjs +2 -0
- package/dist/stepper/index.mjs.map +1 -0
- package/dist/tabs/index.js +2 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/tabs/index.mjs +2 -0
- package/dist/tabs/index.mjs.map +1 -0
- package/dist/terminal/index.js +2 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/index.mjs +2 -0
- package/dist/terminal/index.mjs.map +1 -0
- package/dist/textarea/index.js +2 -0
- package/dist/textarea/index.js.map +1 -0
- package/dist/textarea/index.mjs +2 -0
- package/dist/textarea/index.mjs.map +1 -0
- package/dist/tilted-card/index.js +2 -0
- package/dist/tilted-card/index.js.map +1 -0
- package/dist/tilted-card/index.mjs +2 -0
- package/dist/tilted-card/index.mjs.map +1 -0
- package/dist/toolbar/index.js +2 -0
- package/dist/toolbar/index.js.map +1 -0
- package/dist/toolbar/index.mjs +2 -0
- package/dist/toolbar/index.mjs.map +1 -0
- package/dist/tooltip-animated/index.js +2 -0
- package/dist/tooltip-animated/index.js.map +1 -0
- package/dist/tooltip-animated/index.mjs +2 -0
- package/dist/tooltip-animated/index.mjs.map +1 -0
- package/dist/tooltip-minimal/index.js +2 -0
- package/dist/tooltip-minimal/index.js.map +1 -0
- package/dist/tooltip-minimal/index.mjs +2 -0
- package/dist/tooltip-minimal/index.mjs.map +1 -0
- package/dist/true-focus/index.js +2 -0
- package/dist/true-focus/index.js.map +1 -0
- package/dist/true-focus/index.mjs +2 -0
- package/dist/true-focus/index.mjs.map +1 -0
- package/package.json +108 -275
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function n(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function v({children:t,speed:o=30,direction:a="left",pauseOnHover:s=true,className:c}){let r=react.useRef(null),e=react.useRef(null);return react.useEffect(()=>{if(!r.current||!e.current)return;Array.from(e.current.children).forEach(f=>{let m=f.cloneNode(true);e.current&&e.current.appendChild(m);}),r.current.style.setProperty("--animation-duration",`${o}s`),r.current.style.setProperty("--animation-direction",a==="left"?"forwards":"reverse");},[o,a]),jsxRuntime.jsxs("div",{ref:r,className:n("group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]",c),children:[jsxRuntime.jsx("div",{ref:e,className:n("flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap","animate-scroll",s&&"group-hover:[animation-play-state:paused]"),style:{animation:"scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite"},children:t}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes scroll {
|
|
3
|
+
from {
|
|
4
|
+
transform: translateX(0);
|
|
5
|
+
}
|
|
6
|
+
to {
|
|
7
|
+
transform: translateX(calc(-50% - 0.5rem));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
`})]})}var R=v;exports.InfiniteScroll=v;exports.default=R;//# sourceMappingURL=index.js.map
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/infinite-scroll/index.tsx"],"names":["cn","inputs","twMerge","clsx","InfiniteScroll","children","speed","direction","pauseOnHover","className","scrollerRef","useRef","scrollerInnerRef","useEffect","item","duplicatedItem","jsxs","jsx","infinite_scroll_default"],"mappings":"sMAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,CAAAA,CAAe,CAC7B,SAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,EAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,MAAA,CACZ,YAAA,CAAAC,EAAe,IAAA,CACf,SAAA,CAAAC,CACF,CAAA,CAAwB,CACtB,IAAMC,CAAAA,CAAcC,YAAAA,CAAuB,IAAI,EACzCC,CAAAA,CAAmBD,YAAAA,CAAuB,IAAI,CAAA,CAEpD,OAAAE,eAAAA,CAAU,IAAM,CACd,GAAI,CAACH,CAAAA,CAAY,OAAA,EAAW,CAACE,CAAAA,CAAiB,QAAS,OAE/B,KAAA,CAAM,IAAA,CAAKA,CAAAA,CAAiB,QAAQ,QAAQ,CAAA,CAEpD,OAAA,CAASE,CAAAA,EAAS,CAChC,IAAMC,CAAAA,CAAiBD,CAAAA,CAAK,UAAU,IAAI,CAAA,CACtCF,CAAAA,CAAiB,OAAA,EACnBA,EAAiB,OAAA,CAAQ,WAAA,CAAYG,CAAc,EAEvD,CAAC,CAAA,CAEDL,CAAAA,CAAY,OAAA,CAAQ,KAAA,CAAM,WAAA,CAAY,sBAAA,CAAwB,CAAA,EAAGJ,CAAK,GAAG,CAAA,CACzEI,CAAAA,CAAY,OAAA,CAAQ,KAAA,CAAM,YACxB,uBAAA,CACAH,CAAAA,GAAc,MAAA,CAAS,UAAA,CAAa,SACtC,EACF,CAAA,CAAG,CAACD,CAAAA,CAAOC,CAAS,CAAC,CAAA,CAGnBS,eAAAA,CAAC,OACC,GAAA,CAAKN,CAAAA,CACL,SAAA,CAAWV,CAAAA,CACT,yHACAS,CACF,CAAA,CAEA,QAAA,CAAA,CAAAQ,cAAAA,CAAC,OACC,GAAA,CAAKL,CAAAA,CACL,SAAA,CAAWZ,CAAAA,CACT,wDACA,gBAAA,CACAQ,CAAAA,EAAgB,2CAClB,CAAA,CACA,MAAO,CACL,SAAA,CAAW,4FACb,CAAA,CAEC,SAAAH,CAAAA,CACH,CAAA,CACAY,cAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CASV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQd","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InfiniteScrollProps {\r\n children: ReactNode;\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n pauseOnHover?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function InfiniteScroll({\r\n children,\r\n speed = 30,\r\n direction = \"left\",\r\n pauseOnHover = true,\r\n className,\r\n}: InfiniteScrollProps) {\r\n const scrollerRef = useRef<HTMLDivElement>(null);\r\n const scrollerInnerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!scrollerRef.current || !scrollerInnerRef.current) return;\r\n\r\n const scrollerContent = Array.from(scrollerInnerRef.current.children);\r\n\r\n scrollerContent.forEach((item) => {\r\n const duplicatedItem = item.cloneNode(true);\r\n if (scrollerInnerRef.current) {\r\n scrollerInnerRef.current.appendChild(duplicatedItem);\r\n }\r\n });\r\n\r\n scrollerRef.current.style.setProperty(\"--animation-duration\", `${speed}s`);\r\n scrollerRef.current.style.setProperty(\r\n \"--animation-direction\",\r\n direction === \"left\" ? \"forwards\" : \"reverse\"\r\n );\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div\r\n ref={scrollerRef}\r\n className={cn(\r\n \"group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n ref={scrollerInnerRef}\r\n className={cn(\r\n \"flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap\",\r\n \"animate-scroll\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{\r\n animation: `scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n <style jsx>{`\r\n @keyframes scroll {\r\n from {\r\n transform: translateX(0);\r\n }\r\n to {\r\n transform: translateX(calc(-50% - 0.5rem));\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InfiniteScroll;\r\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {useRef,useEffect}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function n(...t){return twMerge(clsx(t))}function v({children:t,speed:o=30,direction:a="left",pauseOnHover:s=true,className:c}){let r=useRef(null),e=useRef(null);return useEffect(()=>{if(!r.current||!e.current)return;Array.from(e.current.children).forEach(f=>{let m=f.cloneNode(true);e.current&&e.current.appendChild(m);}),r.current.style.setProperty("--animation-duration",`${o}s`),r.current.style.setProperty("--animation-direction",a==="left"?"forwards":"reverse");},[o,a]),jsxs("div",{ref:r,className:n("group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]",c),children:[jsx("div",{ref:e,className:n("flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap","animate-scroll",s&&"group-hover:[animation-play-state:paused]"),style:{animation:"scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite"},children:t}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes scroll {
|
|
3
|
+
from {
|
|
4
|
+
transform: translateX(0);
|
|
5
|
+
}
|
|
6
|
+
to {
|
|
7
|
+
transform: translateX(calc(-50% - 0.5rem));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
`})]})}var R=v;export{v as InfiniteScroll,R as default};//# sourceMappingURL=index.mjs.map
|
|
11
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/infinite-scroll/index.tsx"],"names":["cn","inputs","twMerge","clsx","InfiniteScroll","children","speed","direction","pauseOnHover","className","scrollerRef","useRef","scrollerInnerRef","useEffect","item","duplicatedItem","jsxs","jsx","infinite_scroll_default"],"mappings":"2IAGO,SAASA,KAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCQO,SAASG,CAAAA,CAAe,CAC7B,SAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CAAQ,EAAA,CACR,SAAA,CAAAC,CAAAA,CAAY,MAAA,CACZ,YAAA,CAAAC,EAAe,IAAA,CACf,SAAA,CAAAC,CACF,CAAA,CAAwB,CACtB,IAAMC,CAAAA,CAAcC,MAAAA,CAAuB,IAAI,EACzCC,CAAAA,CAAmBD,MAAAA,CAAuB,IAAI,CAAA,CAEpD,OAAAE,SAAAA,CAAU,IAAM,CACd,GAAI,CAACH,CAAAA,CAAY,OAAA,EAAW,CAACE,CAAAA,CAAiB,QAAS,OAE/B,KAAA,CAAM,IAAA,CAAKA,CAAAA,CAAiB,QAAQ,QAAQ,CAAA,CAEpD,OAAA,CAASE,CAAAA,EAAS,CAChC,IAAMC,CAAAA,CAAiBD,CAAAA,CAAK,UAAU,IAAI,CAAA,CACtCF,CAAAA,CAAiB,OAAA,EACnBA,EAAiB,OAAA,CAAQ,WAAA,CAAYG,CAAc,EAEvD,CAAC,CAAA,CAEDL,CAAAA,CAAY,OAAA,CAAQ,KAAA,CAAM,WAAA,CAAY,sBAAA,CAAwB,CAAA,EAAGJ,CAAK,GAAG,CAAA,CACzEI,CAAAA,CAAY,OAAA,CAAQ,KAAA,CAAM,YACxB,uBAAA,CACAH,CAAAA,GAAc,MAAA,CAAS,UAAA,CAAa,SACtC,EACF,CAAA,CAAG,CAACD,CAAAA,CAAOC,CAAS,CAAC,CAAA,CAGnBS,IAAAA,CAAC,OACC,GAAA,CAAKN,CAAAA,CACL,SAAA,CAAWV,CAAAA,CACT,yHACAS,CACF,CAAA,CAEA,QAAA,CAAA,CAAAQ,GAAAA,CAAC,OACC,GAAA,CAAKL,CAAAA,CACL,SAAA,CAAWZ,CAAAA,CACT,wDACA,gBAAA,CACAQ,CAAAA,EAAgB,2CAClB,CAAA,CACA,MAAO,CACL,SAAA,CAAW,4FACb,CAAA,CAEC,SAAAH,CAAAA,CACH,CAAA,CACAY,GAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CASV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQd","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useRef, ReactNode } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InfiniteScrollProps {\r\n children: ReactNode;\r\n speed?: number;\r\n direction?: \"left\" | \"right\";\r\n pauseOnHover?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function InfiniteScroll({\r\n children,\r\n speed = 30,\r\n direction = \"left\",\r\n pauseOnHover = true,\r\n className,\r\n}: InfiniteScrollProps) {\r\n const scrollerRef = useRef<HTMLDivElement>(null);\r\n const scrollerInnerRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n if (!scrollerRef.current || !scrollerInnerRef.current) return;\r\n\r\n const scrollerContent = Array.from(scrollerInnerRef.current.children);\r\n\r\n scrollerContent.forEach((item) => {\r\n const duplicatedItem = item.cloneNode(true);\r\n if (scrollerInnerRef.current) {\r\n scrollerInnerRef.current.appendChild(duplicatedItem);\r\n }\r\n });\r\n\r\n scrollerRef.current.style.setProperty(\"--animation-duration\", `${speed}s`);\r\n scrollerRef.current.style.setProperty(\r\n \"--animation-direction\",\r\n direction === \"left\" ? \"forwards\" : \"reverse\"\r\n );\r\n }, [speed, direction]);\r\n\r\n return (\r\n <div\r\n ref={scrollerRef}\r\n className={cn(\r\n \"group relative flex overflow-hidden [mask-image:linear-gradient(to_right,transparent,white_20%,white_80%,transparent)]\",\r\n className\r\n )}\r\n >\r\n <div\r\n ref={scrollerInnerRef}\r\n className={cn(\r\n \"flex min-w-full shrink-0 gap-4 py-4 w-max flex-nowrap\",\r\n \"animate-scroll\",\r\n pauseOnHover && \"group-hover:[animation-play-state:paused]\"\r\n )}\r\n style={{\r\n animation: `scroll var(--animation-duration, 30s) var(--animation-direction, forwards) linear infinite`,\r\n }}\r\n >\r\n {children}\r\n </div>\r\n <style jsx>{`\r\n @keyframes scroll {\r\n from {\r\n transform: translateX(0);\r\n }\r\n to {\r\n transform: translateX(calc(-50% - 0.5rem));\r\n }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default InfiniteScroll;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function l(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var o=react.forwardRef(({className:t,label:a,error:r,icon:n,...s},c)=>jsxRuntime.jsxs("div",{className:"w-full",children:[a&&jsxRuntime.jsx("label",{className:"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1",children:a}),jsxRuntime.jsxs("div",{className:"relative",children:[n&&jsxRuntime.jsx("div",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400",children:n}),jsxRuntime.jsx("input",{ref:c,className:l("w-full px-4 py-2 rounded-lg","bg-white dark:bg-zinc-900","border border-zinc-300 dark:border-zinc-700","text-zinc-900 dark:text-zinc-100","placeholder:text-zinc-400 dark:placeholder:text-zinc-500","focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent","transition-all duration-200",n&&"pl-10",r&&"border-red-500 focus:ring-red-500",t),...s})]}),r&&jsxRuntime.jsx("p",{className:"mt-1 text-sm text-red-500",children:r})]}));o.displayName="Input";var g=o;exports.Input=o;exports.default=g;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/input/index.tsx"],"names":["cn","inputs","twMerge","clsx","Input","forwardRef","className","label","error","icon","props","ref","jsxs","jsx","input_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,IAAMG,CAAAA,CAAQC,gBAAAA,CACnB,CAAC,CAAE,UAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAO,KAAA,CAAAC,CAAAA,CAAO,IAAA,CAAAC,EAAM,GAAGC,CAAM,CAAA,CAAGC,CAAAA,GAE1CC,eAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,QAAA,CACZ,QAAA,CAAA,CAAAL,CAAAA,EACCM,cAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,kEACd,QAAA,CAAAN,CAAAA,CACH,CAAA,CAEFK,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WACZ,QAAA,CAAA,CAAAH,CAAAA,EACCI,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDAAA,CACZ,SAAAJ,CAAAA,CACH,CAAA,CAEFI,cAAAA,CAAC,OAAA,CAAA,CACC,GAAA,CAAKF,CAAAA,CACL,UAAWX,CAAAA,CACT,6BAAA,CACA,2BAAA,CACA,6CAAA,CACA,kCAAA,CACA,0DAAA,CACA,+EACA,6BAAA,CACAS,CAAAA,EAAQ,OAAA,CACRD,CAAAA,EAAS,mCAAA,CACTF,CACF,EACC,GAAGI,CAAAA,CACN,CAAA,CAAA,CACF,CAAA,CACCF,CAAAA,EAASK,cAAAA,CAAC,KAAE,SAAA,CAAU,2BAAA,CAA6B,QAAA,CAAAL,CAAAA,CAAM,CAAA,CAAA,CAC5D,CAGN,EAEAJ,CAAAA,CAAM,WAAA,CAAc,OAAA,CAEpB,IAAOU,CAAAA,CAAQV","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, icon, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n icon && \"pl-10\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport default Input;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {forwardRef}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function l(...t){return twMerge(clsx(t))}var o=forwardRef(({className:t,label:a,error:r,icon:n,...s},c)=>jsxs("div",{className:"w-full",children:[a&&jsx("label",{className:"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1",children:a}),jsxs("div",{className:"relative",children:[n&&jsx("div",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400",children:n}),jsx("input",{ref:c,className:l("w-full px-4 py-2 rounded-lg","bg-white dark:bg-zinc-900","border border-zinc-300 dark:border-zinc-700","text-zinc-900 dark:text-zinc-100","placeholder:text-zinc-400 dark:placeholder:text-zinc-500","focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent","transition-all duration-200",n&&"pl-10",r&&"border-red-500 focus:ring-red-500",t),...s})]}),r&&jsx("p",{className:"mt-1 text-sm text-red-500",children:r})]}));o.displayName="Input";var g=o;export{o as Input,g as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/input/index.tsx"],"names":["cn","inputs","twMerge","clsx","Input","forwardRef","className","label","error","icon","props","ref","jsxs","jsx","input_default"],"mappings":"qIAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMO,IAAMG,CAAAA,CAAQC,UAAAA,CACnB,CAAC,CAAE,UAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAAA,CAAO,KAAA,CAAAC,CAAAA,CAAO,IAAA,CAAAC,EAAM,GAAGC,CAAM,CAAA,CAAGC,CAAAA,GAE1CC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,QAAA,CACZ,QAAA,CAAA,CAAAL,CAAAA,EACCM,GAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAU,kEACd,QAAA,CAAAN,CAAAA,CACH,CAAA,CAEFK,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WACZ,QAAA,CAAA,CAAAH,CAAAA,EACCI,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wDAAA,CACZ,SAAAJ,CAAAA,CACH,CAAA,CAEFI,GAAAA,CAAC,OAAA,CAAA,CACC,GAAA,CAAKF,CAAAA,CACL,UAAWX,CAAAA,CACT,6BAAA,CACA,2BAAA,CACA,6CAAA,CACA,kCAAA,CACA,0DAAA,CACA,+EACA,6BAAA,CACAS,CAAAA,EAAQ,OAAA,CACRD,CAAAA,EAAS,mCAAA,CACTF,CACF,EACC,GAAGI,CAAAA,CACN,CAAA,CAAA,CACF,CAAA,CACCF,CAAAA,EAASK,GAAAA,CAAC,KAAE,SAAA,CAAU,2BAAA,CAA6B,QAAA,CAAAL,CAAAA,CAAM,CAAA,CAAA,CAC5D,CAGN,EAEAJ,CAAAA,CAAM,WAAA,CAAc,OAAA,CAEpB,IAAOU,CAAAA,CAAQV","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n icon?: React.ReactNode;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, icon, ...props }, ref) => {\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {icon && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-zinc-400\">\r\n {icon}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={cn(\r\n \"w-full px-4 py-2 rounded-lg\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"border border-zinc-300 dark:border-zinc-700\",\r\n \"text-zinc-900 dark:text-zinc-100\",\r\n \"placeholder:text-zinc-400 dark:placeholder:text-zinc-500\",\r\n \"focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\",\r\n \"transition-all duration-200\",\r\n icon && \"pl-10\",\r\n error && \"border-red-500 focus:ring-red-500\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n </div>\r\n {error && <p className=\"mt-1 text-sm text-red-500\">{error}</p>}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport default Input;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function u(...n){return tailwindMerge.twMerge(clsx.clsx(n))}function z({maxLength:n=6,onComplete:l,onChange:a,className:m=""}){let[s,c]=react.useState(new Array(n).fill("")),o=react.useRef([]);react.useEffect(()=>{let e=s.join("");a?.(e),e.length===n&&l?.(e);},[s,n,a,l]);let b=(e,t)=>{if(t.length>1){let r=t.slice(0,n).split(""),f=[...s];r.forEach((h,i)=>{e+i<n&&(f[e+i]=h);}),c(f);let d=Math.min(e+r.length,n-1);o.current[d]?.focus();return}if(/^\d*$/.test(t)){let r=[...s];r[e]=t,c(r),t&&e<n-1&&o.current[e+1]?.focus();}},w=(e,t)=>{if(t.key==="Backspace")if(!s[e]&&e>0)o.current[e-1]?.focus();else {let r=[...s];r[e]="",c(r);}else t.key==="ArrowLeft"&&e>0?o.current[e-1]?.focus():t.key==="ArrowRight"&&e<n-1&&o.current[e+1]?.focus();},g=e=>{o.current[e]?.select();};return jsxRuntime.jsx("div",{className:u("flex items-center gap-2",m),children:s.map((e,t)=>jsxRuntime.jsx("input",{ref:r=>{o.current[t]=r;},type:"text",inputMode:"numeric",maxLength:1,value:e,onChange:r=>b(t,r.target.value),onKeyDown:r=>w(t,r),onFocus:()=>g(t),className:u("w-12 h-12 text-center text-lg font-semibold","border-2 border-zinc-300 dark:border-zinc-600 rounded-md","focus:border-zinc-900 dark:focus:border-white focus:outline-none","bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white","transition-colors")},t))})}var R=z;exports.InputOTP=z;exports.default=R;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/input-otp/index.tsx"],"names":["cn","inputs","twMerge","clsx","InputOTP","maxLength","onComplete","onChange","className","values","setValues","useState","inputRefs","useRef","useEffect","currentValue","handleChange","index","value","pastedValues","newValues","val","nextIndex","handleKeyDown","e","handleFocus","jsx","el","input_otp_default"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputOTPProps {\r\n maxLength?: number;\r\n onComplete?: (value: string) => void;\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function InputOTP({\r\n maxLength = 6,\r\n onComplete,\r\n onChange,\r\n className = \"\",\r\n}: InputOTPProps) {\r\n const [values, setValues] = useState<string[]>(new Array(maxLength).fill(\"\"));\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const currentValue = values.join(\"\");\r\n onChange?.(currentValue);\r\n\r\n if (currentValue.length === maxLength) {\r\n onComplete?.(currentValue);\r\n }\r\n }, [values, maxLength, onChange, onComplete]);\r\n\r\n const handleChange = (index: number, value: string) => {\r\n if (value.length > 1) {\r\n const pastedValues = value.slice(0, maxLength).split(\"\");\r\n const newValues = [...values];\r\n pastedValues.forEach((val, i) => {\r\n if (index + i < maxLength) {\r\n newValues[index + i] = val;\r\n }\r\n });\r\n setValues(newValues);\r\n\r\n const nextIndex = Math.min(index + pastedValues.length, maxLength - 1);\r\n inputRefs.current[nextIndex]?.focus();\r\n return;\r\n }\r\n\r\n if (/^\\d*$/.test(value)) {\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n\r\n if (value && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement>\r\n ) => {\r\n if (e.key === \"Backspace\") {\r\n if (!values[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else {\r\n const newValues = [...values];\r\n newValues[index] = \"\";\r\n setValues(newValues);\r\n }\r\n } else if (e.key === \"ArrowLeft\" && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else if (e.key === \"ArrowRight\" && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n };\r\n\r\n const handleFocus = (index: number) => {\r\n inputRefs.current[index]?.select();\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n {values.map((value, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onFocus={() => handleFocus(index)}\r\n className={cn(\r\n \"w-12 h-12 text-center text-lg font-semibold\",\r\n \"border-2 border-zinc-300 dark:border-zinc-600 rounded-md\",\r\n \"focus:border-zinc-900 dark:focus:border-white focus:outline-none\",\r\n \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white\",\r\n \"transition-colors\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useState,useRef,useEffect}from'react';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function u(...n){return twMerge(clsx(n))}function z({maxLength:n=6,onComplete:l,onChange:a,className:m=""}){let[s,c]=useState(new Array(n).fill("")),o=useRef([]);useEffect(()=>{let e=s.join("");a?.(e),e.length===n&&l?.(e);},[s,n,a,l]);let b=(e,t)=>{if(t.length>1){let r=t.slice(0,n).split(""),f=[...s];r.forEach((h,i)=>{e+i<n&&(f[e+i]=h);}),c(f);let d=Math.min(e+r.length,n-1);o.current[d]?.focus();return}if(/^\d*$/.test(t)){let r=[...s];r[e]=t,c(r),t&&e<n-1&&o.current[e+1]?.focus();}},w=(e,t)=>{if(t.key==="Backspace")if(!s[e]&&e>0)o.current[e-1]?.focus();else {let r=[...s];r[e]="",c(r);}else t.key==="ArrowLeft"&&e>0?o.current[e-1]?.focus():t.key==="ArrowRight"&&e<n-1&&o.current[e+1]?.focus();},g=e=>{o.current[e]?.select();};return jsx("div",{className:u("flex items-center gap-2",m),children:s.map((e,t)=>jsx("input",{ref:r=>{o.current[t]=r;},type:"text",inputMode:"numeric",maxLength:1,value:e,onChange:r=>b(t,r.target.value),onKeyDown:r=>w(t,r),onFocus:()=>g(t),className:u("w-12 h-12 text-center text-lg font-semibold","border-2 border-zinc-300 dark:border-zinc-600 rounded-md","focus:border-zinc-900 dark:focus:border-white focus:outline-none","bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white","transition-colors")},t))})}var R=z;export{z as InputOTP,R as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/input-otp/index.tsx"],"names":["cn","inputs","twMerge","clsx","InputOTP","maxLength","onComplete","onChange","className","values","setValues","useState","inputRefs","useRef","useEffect","currentValue","handleChange","index","value","pastedValues","newValues","val","nextIndex","handleKeyDown","e","handleFocus","jsx","el","input_otp_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface InputOTPProps {\r\n maxLength?: number;\r\n onComplete?: (value: string) => void;\r\n onChange?: (value: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function InputOTP({\r\n maxLength = 6,\r\n onComplete,\r\n onChange,\r\n className = \"\",\r\n}: InputOTPProps) {\r\n const [values, setValues] = useState<string[]>(new Array(maxLength).fill(\"\"));\r\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n const currentValue = values.join(\"\");\r\n onChange?.(currentValue);\r\n\r\n if (currentValue.length === maxLength) {\r\n onComplete?.(currentValue);\r\n }\r\n }, [values, maxLength, onChange, onComplete]);\r\n\r\n const handleChange = (index: number, value: string) => {\r\n if (value.length > 1) {\r\n const pastedValues = value.slice(0, maxLength).split(\"\");\r\n const newValues = [...values];\r\n pastedValues.forEach((val, i) => {\r\n if (index + i < maxLength) {\r\n newValues[index + i] = val;\r\n }\r\n });\r\n setValues(newValues);\r\n\r\n const nextIndex = Math.min(index + pastedValues.length, maxLength - 1);\r\n inputRefs.current[nextIndex]?.focus();\r\n return;\r\n }\r\n\r\n if (/^\\d*$/.test(value)) {\r\n const newValues = [...values];\r\n newValues[index] = value;\r\n setValues(newValues);\r\n\r\n if (value && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (\r\n index: number,\r\n e: React.KeyboardEvent<HTMLInputElement>\r\n ) => {\r\n if (e.key === \"Backspace\") {\r\n if (!values[index] && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else {\r\n const newValues = [...values];\r\n newValues[index] = \"\";\r\n setValues(newValues);\r\n }\r\n } else if (e.key === \"ArrowLeft\" && index > 0) {\r\n inputRefs.current[index - 1]?.focus();\r\n } else if (e.key === \"ArrowRight\" && index < maxLength - 1) {\r\n inputRefs.current[index + 1]?.focus();\r\n }\r\n };\r\n\r\n const handleFocus = (index: number) => {\r\n inputRefs.current[index]?.select();\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex items-center gap-2\", className)}>\r\n {values.map((value, index) => (\r\n <input\r\n key={index}\r\n ref={(el) => {\r\n inputRefs.current[index] = el;\r\n }}\r\n type=\"text\"\r\n inputMode=\"numeric\"\r\n maxLength={1}\r\n value={value}\r\n onChange={(e) => handleChange(index, e.target.value)}\r\n onKeyDown={(e) => handleKeyDown(index, e)}\r\n onFocus={() => handleFocus(index)}\r\n className={cn(\r\n \"w-12 h-12 text-center text-lg font-semibold\",\r\n \"border-2 border-zinc-300 dark:border-zinc-600 rounded-md\",\r\n \"focus:border-zinc-900 dark:focus:border-white focus:outline-none\",\r\n \"bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white\",\r\n \"transition-colors\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputOTP;\r\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function s(...a){return tailwindMerge.twMerge(clsx.clsx(a))}function o({className:a=""}){return jsxRuntime.jsxs("div",{className:s("w-full h-full min-h-[400px] flex items-center justify-center",a),children:[jsxRuntime.jsx("div",{className:"relative",children:jsxRuntime.jsxs("div",{className:"flex items-center justify-center",children:[[...Array(8)].map((n,l)=>jsxRuntime.jsx("div",{className:"absolute w-3 h-3 rounded-full bg-black dark:bg-white",style:{transform:`rotate(${l*45}deg) translateY(-20px)`,animation:"flower-pulse 1.5s ease-in-out infinite",animationDelay:`${l*.1}s`}},l)),jsxRuntime.jsx("div",{className:"w-4 h-4 rounded-full bg-zinc-400"})]})}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes flower-pulse {
|
|
3
|
+
0%, 100% { opacity: 0.3; scale: 0.8; }
|
|
4
|
+
50% { opacity: 1; scale: 1.2; }
|
|
5
|
+
}
|
|
6
|
+
`})]})}var d=o;exports.LoadingFlower=o;exports.default=d;//# sourceMappingURL=index.js.map
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-flower/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingFlower","className","jsxs","jsx","_","i","loading_flower_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,EAAc,CAAE,SAAA,CAAAC,EAAY,EAAG,CAAA,CAAuB,CACpE,OACEC,eAAAA,CAAC,OAAI,SAAA,CAAWN,CAAAA,CAAG,+DAAgEK,CAAS,CAAA,CAC1F,UAAAE,cAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,UAAA,CACb,QAAA,CAAAD,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCACZ,QAAA,CAAA,CAAA,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,GAAA,CAAI,CAACE,EAAGC,CAAAA,GACrBF,cAAAA,CAAC,OAEC,SAAA,CAAU,sDAAA,CACV,MAAO,CACL,SAAA,CAAW,UAAUE,CAAAA,CAAI,EAAE,yBAC3B,SAAA,CAAW,wCAAA,CACX,eAAgB,CAAA,EAAGA,CAAAA,CAAI,EAAG,CAAA,CAAA,CAC5B,CAAA,CAAA,CANKA,CAOP,CACD,CAAA,CACDF,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCAAmC,CAAA,CAAA,CACpD,CAAA,CACF,EACAA,cAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOG,CAAAA,CAAQN","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingFlowerProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingFlower({ className = \"\" }: LoadingFlowerProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative\">\r\n <div className=\"flex items-center justify-center\">\r\n {[...Array(8)].map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"absolute w-3 h-3 rounded-full bg-black dark:bg-white\"\r\n style={{\r\n transform: `rotate(${i * 45}deg) translateY(-20px)`,\r\n animation: `flower-pulse 1.5s ease-in-out infinite`,\r\n animationDelay: `${i * 0.1}s`,\r\n }}\r\n />\r\n ))}\r\n <div className=\"w-4 h-4 rounded-full bg-zinc-400\" />\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes flower-pulse {\r\n 0%, 100% { opacity: 0.3; scale: 0.8; }\r\n 50% { opacity: 1; scale: 1.2; }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingFlower;\r\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function s(...a){return twMerge(clsx(a))}function o({className:a=""}){return jsxs("div",{className:s("w-full h-full min-h-[400px] flex items-center justify-center",a),children:[jsx("div",{className:"relative",children:jsxs("div",{className:"flex items-center justify-center",children:[[...Array(8)].map((n,l)=>jsx("div",{className:"absolute w-3 h-3 rounded-full bg-black dark:bg-white",style:{transform:`rotate(${l*45}deg) translateY(-20px)`,animation:"flower-pulse 1.5s ease-in-out infinite",animationDelay:`${l*.1}s`}},l)),jsx("div",{className:"w-4 h-4 rounded-full bg-zinc-400"})]})}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes flower-pulse {
|
|
3
|
+
0%, 100% { opacity: 0.3; scale: 0.8; }
|
|
4
|
+
50% { opacity: 1; scale: 1.2; }
|
|
5
|
+
}
|
|
6
|
+
`})]})}var d=o;export{o as LoadingFlower,d as default};//# sourceMappingURL=index.mjs.map
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-flower/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingFlower","className","jsxs","jsx","_","i","loading_flower_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,EAAc,CAAE,SAAA,CAAAC,EAAY,EAAG,CAAA,CAAuB,CACpE,OACEC,IAAAA,CAAC,OAAI,SAAA,CAAWN,CAAAA,CAAG,+DAAgEK,CAAS,CAAA,CAC1F,UAAAE,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,UAAA,CACb,QAAA,CAAAD,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCACZ,QAAA,CAAA,CAAA,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,GAAA,CAAI,CAACE,EAAGC,CAAAA,GACrBF,GAAAA,CAAC,OAEC,SAAA,CAAU,sDAAA,CACV,MAAO,CACL,SAAA,CAAW,UAAUE,CAAAA,CAAI,EAAE,yBAC3B,SAAA,CAAW,wCAAA,CACX,eAAgB,CAAA,EAAGA,CAAAA,CAAI,EAAG,CAAA,CAAA,CAC5B,CAAA,CAAA,CANKA,CAOP,CACD,CAAA,CACDF,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mCAAmC,CAAA,CAAA,CACpD,CAAA,CACF,EACAA,GAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOG,CAAAA,CAAQN","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingFlowerProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingFlower({ className = \"\" }: LoadingFlowerProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative\">\r\n <div className=\"flex items-center justify-center\">\r\n {[...Array(8)].map((_, i) => (\r\n <div\r\n key={i}\r\n className=\"absolute w-3 h-3 rounded-full bg-black dark:bg-white\"\r\n style={{\r\n transform: `rotate(${i * 45}deg) translateY(-20px)`,\r\n animation: `flower-pulse 1.5s ease-in-out infinite`,\r\n animationDelay: `${i * 0.1}s`,\r\n }}\r\n />\r\n ))}\r\n <div className=\"w-4 h-4 rounded-full bg-zinc-400\" />\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes flower-pulse {\r\n 0%, 100% { opacity: 0.3; scale: 0.8; }\r\n 50% { opacity: 1; scale: 1.2; }\r\n }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingFlower;\r\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function i(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function s({className:t=""}){return jsxRuntime.jsxs("div",{className:i("w-full h-full min-h-[400px] flex items-center justify-center",t),children:[jsxRuntime.jsx("div",{className:"flex justify-center items-center",children:jsxRuntime.jsxs("div",{className:"w-36 h-36 flex justify-center items-center relative",children:[jsxRuntime.jsx("div",{className:"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]"}),jsxRuntime.jsx("div",{className:"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]"}),jsxRuntime.jsx("div",{className:"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]",children:"X"}),jsxRuntime.jsx("div",{className:"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]",children:"*"})]})}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }
|
|
3
|
+
@keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }
|
|
4
|
+
@keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }
|
|
5
|
+
@keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }
|
|
6
|
+
`})]})}var f=s;exports.LoadingGeometric=s;exports.default=f;//# sourceMappingURL=index.js.map
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-geometric/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingGeometric","className","jsxs","jsx","loading_geometric_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,EAAiB,CAAE,SAAA,CAAAC,CAAAA,CAAY,EAAG,EAA0B,CAC1E,OACEC,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAWN,EAAG,8DAAA,CAAgEK,CAAS,CAAA,CAC1F,QAAA,CAAA,CAAAE,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCAAA,CACb,QAAA,CAAAD,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qDAAA,CACb,QAAA,CAAA,CAAAC,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8GAAA,CAA+G,CAAA,CAC9HA,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wHAAA,CAAyH,CAAA,CACxIA,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gIAAA,CAAiI,QAAA,CAAA,GAAA,CAAC,EACjJA,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uIAAA,CAAwI,aAAC,CAAA,CAAA,CAC1J,CAAA,CACF,EACAA,cAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQJ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingGeometricProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingGeometric({ className = \"\" }: LoadingGeometricProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-36 h-36 flex justify-center items-center relative\">\r\n <div className=\"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">X</div>\r\n <div className=\"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">*</div>\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }\r\n @keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }\r\n @keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingGeometric;\r\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function i(...t){return twMerge(clsx(t))}function s({className:t=""}){return jsxs("div",{className:i("w-full h-full min-h-[400px] flex items-center justify-center",t),children:[jsx("div",{className:"flex justify-center items-center",children:jsxs("div",{className:"w-36 h-36 flex justify-center items-center relative",children:[jsx("div",{className:"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]"}),jsx("div",{className:"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]"}),jsx("div",{className:"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]",children:"X"}),jsx("div",{className:"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]",children:"*"})]})}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }
|
|
3
|
+
@keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }
|
|
4
|
+
@keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }
|
|
5
|
+
@keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }
|
|
6
|
+
`})]})}var f=s;export{s as LoadingGeometric,f as default};//# sourceMappingURL=index.mjs.map
|
|
7
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-geometric/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingGeometric","className","jsxs","jsx","loading_geometric_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,EAAiB,CAAE,SAAA,CAAAC,CAAAA,CAAY,EAAG,EAA0B,CAC1E,OACEC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAWN,EAAG,8DAAA,CAAgEK,CAAS,CAAA,CAC1F,QAAA,CAAA,CAAAE,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCAAA,CACb,QAAA,CAAAD,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qDAAA,CACb,QAAA,CAAA,CAAAC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8GAAA,CAA+G,CAAA,CAC9HA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wHAAA,CAAyH,CAAA,CACxIA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gIAAA,CAAiI,QAAA,CAAA,GAAA,CAAC,EACjJA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uIAAA,CAAwI,aAAC,CAAA,CAAA,CAC1J,CAAA,CACF,EACAA,GAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAKV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOC,CAAAA,CAAQJ","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingGeometricProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingGeometric({ className = \"\" }: LoadingGeometricProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"flex justify-center items-center\">\r\n <div className=\"w-36 h-36 flex justify-center items-center relative\">\r\n <div className=\"w-4 h-16 absolute bg-zinc-600 dark:bg-zinc-400 animate-[move-h_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"w-4 h-16 absolute bg-zinc-800 dark:bg-zinc-200 rotate-90 animate-[move-v_1.2s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\" />\r\n <div className=\"absolute top-4 left-5 font-black text-lg text-black dark:text-white animate-[rot_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">X</div>\r\n <div className=\"absolute bottom-0 right-0 font-black text-3xl text-black dark:text-white animate-[scale_0.8s_infinite_cubic-bezier(0.65,0.05,0.36,1)]\">*</div>\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes move-h { 0% { top: 0; opacity: 0; } 25% { opacity: 1; } 50% { top: 30%; opacity: 1; } 75% { opacity: 1; } 100% { top: 100%; opacity: 0; } }\r\n @keyframes move-v { 0% { left: 0; opacity: 0; } 25% { opacity: 1; } 50% { left: 45%; opacity: 1; } 75% { opacity: 1; } 100% { left: 100%; opacity: 0; } }\r\n @keyframes rot { 0% { transform: rotate(0deg); } 50% { transform: rotate(180deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes scale { 0% { scale: 1; } 50% { scale: 1.9; } 100% { scale: 1; } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingGeometric;\r\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function o(...r){return tailwindMerge.twMerge(clsx.clsx(r))}function a({className:r=""}){return jsxRuntime.jsx("div",{className:o("w-full h-full min-h-[400px] flex items-center justify-center",r),children:jsxRuntime.jsx("div",{className:"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]",children:jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
|
3
|
+
@keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }
|
|
4
|
+
`})})})}var c=a;exports.LoadingMorph=a;exports.default=c;//# sourceMappingURL=index.js.map
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-morph/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingMorph","className","jsx","loading_morph_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,CAAAA,CAAa,CAAE,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAsB,CAClE,OACEC,cAAAA,CAAC,KAAA,CAAA,CAAI,UAAWN,CAAAA,CAAG,8DAAA,CAAgEK,CAAS,CAAA,CAC1F,QAAA,CAAAC,eAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2RACb,QAAA,CAAAA,cAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAGV,CAAA,CACJ,CAAA,CACF,CAEJ,KAEOC,CAAAA,CAAQH","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingMorphProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingMorph({ className = \"\" }: LoadingMorphProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]\">\r\n <style jsx>{`\r\n @keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingMorph;\r\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function o(...r){return twMerge(clsx(r))}function a({className:r=""}){return jsx("div",{className:o("w-full h-full min-h-[400px] flex items-center justify-center",r),children:jsx("div",{className:"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]",children:jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
|
3
|
+
@keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }
|
|
4
|
+
`})})})}var c=a;export{a as LoadingMorph,c as default};//# sourceMappingURL=index.mjs.map
|
|
5
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-morph/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingMorph","className","jsx","loading_morph_default"],"mappings":"iGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,CAAAA,CAAa,CAAE,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAsB,CAClE,OACEC,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWN,CAAAA,CAAG,8DAAA,CAAgEK,CAAS,CAAA,CAC1F,QAAA,CAAAC,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,2RACb,QAAA,CAAAA,GAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAGV,CAAA,CACJ,CAAA,CACF,CAEJ,KAEOC,CAAAA,CAAQH","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingMorphProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingMorph({ className = \"\" }: LoadingMorphProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-20 h-20 rounded-full border-8 border-transparent border-t-black dark:border-t-white border-r-zinc-600 dark:border-r-zinc-400 border-b-zinc-400 dark:border-b-zinc-600 border-l-zinc-200 dark:border-l-zinc-800 animate-[morph_2s_ease-in-out_infinite,rotate-color_2s_linear_infinite]\">\r\n <style jsx>{`\r\n @keyframes rotate-color { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n @keyframes morph { 0%, 100% { border-radius: 50%; width: 80px; height: 80px; } 50% { border-radius: 10%; width: 100px; height: 100px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingMorph;\r\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function o(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function i({className:e=""}){return jsxRuntime.jsx("div",{className:o("w-full h-full min-h-[400px] flex items-center justify-center",e),children:jsxRuntime.jsxs("div",{className:"w-16 h-16",children:[jsxRuntime.jsx("div",{className:"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]",children:jsxRuntime.jsx("div",{className:"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]"})}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }
|
|
3
|
+
`})]})})}var f=i;exports.LoadingRings=i;exports.default=f;//# sourceMappingURL=index.js.map
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-rings/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingRings","className","jsx","jsxs","loading_rings_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,CAAAA,CAAa,CAAE,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAsB,CAClE,OACEC,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWN,CAAAA,CAAG,8DAAA,CAAgEK,CAAS,CAAA,CAC1F,QAAA,CAAAE,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAAD,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yLAAA,CACb,QAAA,CAAAA,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4MAAA,CAA6M,CAAA,CAC9N,CAAA,CACAA,cAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA,QAAA,CAAA,CAEV,CAAA,CAAA,CACJ,CAAA,CACF,CAEJ,KAEOE,CAAAA,CAAQJ","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingRingsProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingRings({ className = \"\" }: LoadingRingsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-16 h-16\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]\" />\r\n </div>\r\n <style jsx>{`\r\n @keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingRings;\r\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function o(...e){return twMerge(clsx(e))}function i({className:e=""}){return jsx("div",{className:o("w-full h-full min-h-[400px] flex items-center justify-center",e),children:jsxs("div",{className:"w-16 h-16",children:[jsx("div",{className:"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]",children:jsx("div",{className:"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]"})}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }
|
|
3
|
+
`})]})})}var f=i;export{i as LoadingRings,f as default};//# sourceMappingURL=index.mjs.map
|
|
4
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-rings/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingRings","className","jsx","jsxs","loading_rings_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCGO,SAASG,CAAAA,CAAa,CAAE,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAsB,CAClE,OACEC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWN,CAAAA,CAAG,8DAAA,CAAgEK,CAAS,CAAA,CAC1F,QAAA,CAAAE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WAAA,CACb,QAAA,CAAA,CAAAD,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,yLAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,4MAAA,CAA6M,CAAA,CAC9N,CAAA,CACAA,GAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA,QAAA,CAAA,CAEV,CAAA,CAAA,CACJ,CAAA,CACF,CAEJ,KAEOE,CAAAA,CAAQJ","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingRingsProps {\r\n className?: string;\r\n}\r\n\r\nexport function LoadingRings({ className = \"\" }: LoadingRingsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"w-16 h-16\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-700 dark:border-t-zinc-200 border-b-zinc-500 rounded-full animate-[rotate_5s_linear_infinite]\">\r\n <div className=\"box-border w-full h-full border-[10px] border-zinc-300 dark:border-zinc-800 border-t-zinc-600 dark:border-t-zinc-400 border-b-black dark:border-b-white rounded-full animate-[rotate_2.5s_linear_infinite]\" />\r\n </div>\r\n <style jsx>{`\r\n @keyframes rotate { 0% { transform: scale(1) rotate(360deg); } 50% { transform: scale(0.8) rotate(-360deg); } 100% { transform: scale(1) rotate(360deg); } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingRings;\r\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function e(...a){return tailwindMerge.twMerge(clsx.clsx(a))}function i({text:a="loading",className:r=""}){return jsxRuntime.jsx("div",{className:e("w-full h-full min-h-[400px] flex items-center justify-center",r),children:jsxRuntime.jsxs("div",{className:"relative w-20 h-12",children:[jsxRuntime.jsx("span",{className:"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]",children:a}),jsxRuntime.jsx("span",{className:"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]",children:jsxRuntime.jsx("span",{className:"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]"})}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }
|
|
3
|
+
@keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }
|
|
4
|
+
@keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }
|
|
5
|
+
`})]})})}var m=i;exports.LoadingText=i;exports.default=m;//# sourceMappingURL=index.js.map
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingText","text","className","jsx","jsxs","loading_text_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAY,CAAE,KAAAC,CAAAA,CAAO,SAAA,CAAW,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAqB,CAClF,OACEC,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWP,CAAAA,CAAG,8DAAA,CAAgEM,CAAS,CAAA,CAC1F,QAAA,CAAAE,eAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBAAA,CACb,QAAA,CAAA,CAAAD,cAAAA,CAAC,QAAK,SAAA,CAAU,gIAAA,CACb,QAAA,CAAAF,CAAAA,CACH,CAAA,CACAE,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,2HACd,QAAA,CAAAA,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,kHAAkH,CAAA,CACpI,CAAA,CACAA,cAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAIV,CAAA,CAAA,CACJ,CAAA,CACF,CAEJ,KAEOE,CAAAA,CAAQL","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingText({ text = \"loading\", className = \"\" }: LoadingTextProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative w-20 h-12\">\r\n <span className=\"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]\">\r\n {text}\r\n </span>\r\n <span className=\"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]\">\r\n <span className=\"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]\" />\r\n </span>\r\n <style jsx>{`\r\n @keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }\r\n @keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }\r\n @keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingText;\r\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function e(...a){return twMerge(clsx(a))}function i({text:a="loading",className:r=""}){return jsx("div",{className:e("w-full h-full min-h-[400px] flex items-center justify-center",r),children:jsxs("div",{className:"relative w-20 h-12",children:[jsx("span",{className:"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]",children:a}),jsx("span",{className:"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]",children:jsx("span",{className:"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]"})}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }
|
|
3
|
+
@keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }
|
|
4
|
+
@keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }
|
|
5
|
+
`})]})})}var m=i;export{i as LoadingText,m as default};//# sourceMappingURL=index.mjs.map
|
|
6
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingText","text","className","jsx","jsxs","loading_text_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAY,CAAE,KAAAC,CAAAA,CAAO,SAAA,CAAW,SAAA,CAAAC,CAAAA,CAAY,EAAG,CAAA,CAAqB,CAClF,OACEC,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAWP,CAAAA,CAAG,8DAAA,CAAgEM,CAAS,CAAA,CAC1F,QAAA,CAAAE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBAAA,CACb,QAAA,CAAA,CAAAD,GAAAA,CAAC,QAAK,SAAA,CAAU,gIAAA,CACb,QAAA,CAAAF,CAAAA,CACH,CAAA,CACAE,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,2HACd,QAAA,CAAAA,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,kHAAkH,CAAA,CACpI,CAAA,CACAA,GAAAA,CAAC,OAAA,CAAA,CAAM,IAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA,QAAA,CAAA,CAIV,CAAA,CAAA,CACJ,CAAA,CACF,CAEJ,KAEOE,CAAAA,CAAQL","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingTextProps {\r\n text?: string;\r\n className?: string;\r\n}\r\n\r\nexport function LoadingText({ text = \"loading\", className = \"\" }: LoadingTextProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"relative w-20 h-12\">\r\n <span className=\"absolute top-0 left-0 m-0 p-0 text-black dark:text-white text-sm tracking-wider animate-[loading-text_3.5s_ease_both_infinite]\">\r\n {text}\r\n </span>\r\n <span className=\"absolute bottom-0 left-0 block h-4 w-4 rounded-full bg-black dark:bg-white animate-[loading-bar_3.5s_ease_both_infinite]\">\r\n <span className=\"absolute inset-0 rounded-full bg-zinc-400 dark:bg-zinc-500 animate-[loading-bar-before_3.5s_ease_both_infinite]\" />\r\n </span>\r\n <style jsx>{`\r\n @keyframes loading-text { 0% { letter-spacing: 1px; transform: translateX(0px); } 40% { letter-spacing: 2px; transform: translateX(26px); } 80% { letter-spacing: 1px; transform: translateX(32px); } 90% { letter-spacing: 2px; transform: translateX(0px); } 100% { letter-spacing: 1px; transform: translateX(0px); } }\r\n @keyframes loading-bar { 0% { width: 16px; transform: translateX(0px); } 40% { width: 100%; transform: translateX(0px); } 80% { width: 16px; transform: translateX(64px); } 90% { width: 100%; transform: translateX(0px); } 100% { width: 16px; transform: translateX(0px); } }\r\n @keyframes loading-bar-before { 0% { transform: translateX(0px); width: 16px; } 40% { transform: translateX(0%); width: 80%; } 80% { width: 100%; transform: translateX(0px); } 90% { width: 80%; transform: translateX(15px); } 100% { transform: translateX(0px); width: 16px; } }\r\n `}</style>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingText;\r\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function e(...a){return tailwindMerge.twMerge(clsx.clsx(a))}function m({words:a=["buttons","forms","switches","cards","loaders"],className:n=""}){return jsxRuntime.jsxs("div",{className:e("w-full h-full min-h-[400px] flex items-center justify-center",n),children:[jsxRuntime.jsxs("div",{className:"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg",children:[jsxRuntime.jsx("span",{className:"mr-2",children:"loading"}),jsxRuntime.jsxs("div",{className:"overflow-hidden relative h-full",children:[jsxRuntime.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10"}),a.map((o,s)=>jsxRuntime.jsx("span",{className:"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]",style:{animationDelay:`${s*.8}s`},children:o},s))]})]}),jsxRuntime.jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }
|
|
3
|
+
`})]})}var u=m;exports.LoadingWords=m;exports.default=u;//# sourceMappingURL=index.js.map
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-words/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingWords","words","className","jsxs","jsx","word","index","loading_words_default"],"mappings":"+KAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,UAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAa,CAC3B,MAAAC,CAAAA,CAAQ,CAAC,UAAW,OAAA,CAAS,UAAA,CAAY,QAAS,SAAS,CAAA,CAC3D,UAAAC,CAAAA,CAAY,EACd,EAAsB,CACpB,OACEC,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAWP,CAAAA,CAAG,8DAAA,CAAgEM,CAAS,CAAA,CAC1F,UAAAC,eAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gHAAA,CACb,QAAA,CAAA,CAAAC,eAAC,MAAA,CAAA,CAAK,SAAA,CAAU,OAAO,QAAA,CAAA,SAAA,CAAO,CAAA,CAC9BD,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCACb,QAAA,CAAA,CAAAC,cAAAA,CAAC,OAAI,SAAA,CAAU,qIAAA,CAAsI,CAAA,CACpJH,CAAAA,CAAM,GAAA,CAAI,CAACI,EAAMC,CAAAA,GAChBF,cAAAA,CAAC,QAEC,SAAA,CAAU,iFAAA,CACV,MAAO,CAAE,cAAA,CAAgB,CAAA,EAAGE,CAAAA,CAAQ,EAAG,CAAA,CAAA,CAAI,EAE1C,QAAA,CAAAD,CAAAA,CAAAA,CAJIC,CAKP,CACD,CAAA,CAAA,CACH,GACF,CAAA,CACAF,cAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA,MAAA,CAAA,CAEV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOG,CAAAA,CAAQP","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingWordsProps {\r\n words?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function LoadingWords({\r\n words = [\"buttons\", \"forms\", \"switches\", \"cards\", \"loaders\"],\r\n className = \"\",\r\n}: LoadingWordsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg\">\r\n <span className=\"mr-2\">loading</span>\r\n <div className=\"overflow-hidden relative h-full\">\r\n <div className=\"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10\" />\r\n {words.map((word, index) => (\r\n <span\r\n key={index}\r\n className=\"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]\"\r\n style={{ animationDelay: `${index * 0.8}s` }}\r\n >\r\n {word}\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingWords;\r\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,jsx}from'react/jsx-runtime';function e(...a){return twMerge(clsx(a))}function m({words:a=["buttons","forms","switches","cards","loaders"],className:n=""}){return jsxs("div",{className:e("w-full h-full min-h-[400px] flex items-center justify-center",n),children:[jsxs("div",{className:"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg",children:[jsx("span",{className:"mr-2",children:"loading"}),jsxs("div",{className:"overflow-hidden relative h-full",children:[jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10"}),a.map((o,s)=>jsx("span",{className:"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]",style:{animationDelay:`${s*.8}s`},children:o},s))]})]}),jsx("style",{jsx:true,children:`
|
|
2
|
+
@keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }
|
|
3
|
+
`})]})}var u=m;export{m as LoadingWords,u as default};//# sourceMappingURL=index.mjs.map
|
|
4
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/loading-words/index.tsx"],"names":["cn","inputs","twMerge","clsx","LoadingWords","words","className","jsxs","jsx","word","index","loading_words_default"],"mappings":"sGAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,KAAKF,CAAM,CAAC,CAC7B,CCIO,SAASG,CAAAA,CAAa,CAC3B,MAAAC,CAAAA,CAAQ,CAAC,UAAW,OAAA,CAAS,UAAA,CAAY,QAAS,SAAS,CAAA,CAC3D,UAAAC,CAAAA,CAAY,EACd,EAAsB,CACpB,OACEC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAWP,CAAAA,CAAG,8DAAA,CAAgEM,CAAS,CAAA,CAC1F,UAAAC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,gHAAA,CACb,QAAA,CAAA,CAAAC,IAAC,MAAA,CAAA,CAAK,SAAA,CAAU,OAAO,QAAA,CAAA,SAAA,CAAO,CAAA,CAC9BD,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kCACb,QAAA,CAAA,CAAAC,GAAAA,CAAC,OAAI,SAAA,CAAU,qIAAA,CAAsI,CAAA,CACpJH,CAAAA,CAAM,GAAA,CAAI,CAACI,EAAMC,CAAAA,GAChBF,GAAAA,CAAC,QAEC,SAAA,CAAU,iFAAA,CACV,MAAO,CAAE,cAAA,CAAgB,CAAA,EAAGE,CAAAA,CAAQ,EAAG,CAAA,CAAA,CAAI,EAE1C,QAAA,CAAAD,CAAAA,CAAAA,CAJIC,CAKP,CACD,CAAA,CAAA,CACH,GACF,CAAA,CACAF,GAAAA,CAAC,OAAA,CAAA,CAAM,GAAA,CAAG,IAAA,CAAE,QAAA,CAAA;AAAA;AAAA,MAAA,CAAA,CAEV,CAAA,CAAA,CACJ,CAEJ,CAEA,IAAOG,CAAAA,CAAQP","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingWordsProps {\r\n words?: string[];\r\n className?: string;\r\n}\r\n\r\nexport function LoadingWords({\r\n words = [\"buttons\", \"forms\", \"switches\", \"cards\", \"loaders\"],\r\n className = \"\",\r\n}: LoadingWordsProps) {\r\n return (\r\n <div className={cn(\"w-full h-full min-h-[400px] flex items-center justify-center\", className)}>\r\n <div className=\"text-zinc-400 dark:text-zinc-500 font-medium text-2xl box-border h-10 px-2.5 py-2 flex items-center rounded-lg\">\r\n <span className=\"mr-2\">loading</span>\r\n <div className=\"overflow-hidden relative h-full\">\r\n <div className=\"absolute inset-0 bg-gradient-to-b from-white via-transparent to-white dark:from-zinc-950 dark:via-transparent dark:to-zinc-950 z-10\" />\r\n {words.map((word, index) => (\r\n <span\r\n key={index}\r\n className=\"block h-full pl-1.5 text-black dark:text-white animate-[spin-words_4s_infinite]\"\r\n style={{ animationDelay: `${index * 0.8}s` }}\r\n >\r\n {word}\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n <style jsx>{`\r\n @keyframes spin-words { 10% { transform: translateY(-102%); } 25% { transform: translateY(-100%); } 35% { transform: translateY(-202%); } 50% { transform: translateY(-200%); } 60% { transform: translateY(-302%); } 75% { transform: translateY(-300%); } 85% { transform: translateY(-402%); } 100% { transform: translateY(-400%); } }\r\n `}</style>\r\n </div>\r\n );\r\n}\r\n\r\nexport default LoadingWords;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function y({isOpen:t,onClose:o,children:l,className:c,title:n}){return react.useEffect(()=>{let a=d=>{d.key==="Escape"&&o();};return t&&(document.addEventListener("keydown",a),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",a),document.body.style.overflow="unset";}},[t,o]),jsxRuntime.jsx(framerMotion.AnimatePresence,{children:t&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(framerMotion.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:o,className:"fixed inset-0 bg-black/50 z-50"}),jsxRuntime.jsxs(framerMotion.motion.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{type:"spring",damping:25,stiffness:300},className:r("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50","w-full max-w-md p-6 rounded-xl","bg-white dark:bg-zinc-900","shadow-xl",c),children:[n&&jsxRuntime.jsxs("div",{className:"flex items-center justify-between mb-4",children:[jsxRuntime.jsx("h2",{className:"text-lg font-semibold",children:n}),jsxRuntime.jsx("button",{onClick:o,className:"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",children:jsxRuntime.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),l]})]})})}var N=y;exports.Modal=y;exports.default=N;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/modal/index.tsx"],"names":["cn","inputs","twMerge","clsx","Modal","isOpen","onClose","children","className","title","useEffect","handleEscape","e","jsx","AnimatePresence","jsxs","Fragment","motion","modal_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCSO,SAASG,CAAAA,CAAM,CAAE,MAAA,CAAAC,CAAAA,CAAQ,OAAA,CAAAC,EAAS,QAAA,CAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAA,CAAe,CACjF,OAAAC,eAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAgBC,GAAqB,CACrCA,CAAAA,CAAE,GAAA,GAAQ,QAAA,EAAUN,CAAAA,GAC1B,EACA,OAAID,CAAAA,GACF,QAAA,CAAS,gBAAA,CAAiB,SAAA,CAAWM,CAAY,EACjD,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA,CAAW,QAAA,CAAA,CAE1B,IAAM,CACX,QAAA,CAAS,mBAAA,CAAoB,SAAA,CAAWA,CAAY,CAAA,CACpD,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,CAAW,QACjC,CACF,CAAA,CAAG,CAACN,CAAAA,CAAQC,CAAO,CAAC,CAAA,CAGlBO,cAAAA,CAACC,4BAAAA,CAAA,CACE,QAAA,CAAAT,GACCU,eAAAA,CAAAC,mBAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,cAAAA,CAACI,mBAAAA,CAAO,GAAA,CAAP,CACC,OAAA,CAAS,CAAE,OAAA,CAAS,CAAE,CAAA,CACtB,OAAA,CAAS,CAAE,OAAA,CAAS,CAAE,CAAA,CACtB,IAAA,CAAM,CAAE,OAAA,CAAS,CAAE,CAAA,CACnB,OAAA,CAASX,CAAAA,CACT,SAAA,CAAU,gCAAA,CACZ,CAAA,CACAS,gBAACE,mBAAAA,CAAO,GAAA,CAAP,CACC,OAAA,CAAS,CAAE,OAAA,CAAS,CAAA,CAAG,KAAA,CAAO,GAAA,CAAM,CAAA,CAAG,EAAG,CAAA,CAC1C,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,KAAA,CAAO,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CACtC,KAAM,CAAE,OAAA,CAAS,CAAA,CAAG,KAAA,CAAO,GAAA,CAAM,CAAA,CAAG,EAAG,CAAA,CACvC,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,OAAA,CAAS,EAAA,CAAI,SAAA,CAAW,GAAI,CAAA,CAC1D,SAAA,CAAWjB,CAAAA,CACT,+DAAA,CACA,gCAAA,CACA,4BACA,WAAA,CACAQ,CACF,CAAA,CAEC,QAAA,CAAA,CAAAC,CAAAA,EACCM,eAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,QAAA,CAAA,CAAAF,cAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,wBAAyB,QAAA,CAAAJ,CAAAA,CAAM,CAAA,CAC7CI,cAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CAASP,CAAAA,CACT,SAAA,CAAU,2EAAA,CAEV,QAAA,CAAAO,cAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,KAAK,MAAA,CAAO,MAAA,CAAO,cAAA,CAAe,OAAA,CAAQ,WAAA,CACjE,QAAA,CAAAA,eAAC,MAAA,CAAA,CAAK,aAAA,CAAc,OAAA,CAAQ,cAAA,CAAe,OAAA,CAAQ,WAAA,CAAa,EAAG,CAAA,CAAE,sBAAA,CAAuB,CAAA,CAC9F,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEDN,CAAAA,CAAAA,CACH,CAAA,CAAA,CACF,CAAA,CAEJ,CAEJ,CAEA,IAAOW,CAAAA,CAAQd","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className, title }: ModalProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50\",\r\n \"w-full max-w-md p-6 rounded-xl\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n >\r\n {title && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h2 className=\"text-lg font-semibold\">{title}</h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n )}\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useEffect}from'react';import {AnimatePresence,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function r(...t){return twMerge(clsx(t))}function y({isOpen:t,onClose:o,children:l,className:c,title:n}){return useEffect(()=>{let a=d=>{d.key==="Escape"&&o();};return t&&(document.addEventListener("keydown",a),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",a),document.body.style.overflow="unset";}},[t,o]),jsx(AnimatePresence,{children:t&&jsxs(Fragment,{children:[jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:o,className:"fixed inset-0 bg-black/50 z-50"}),jsxs(motion.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{type:"spring",damping:25,stiffness:300},className:r("fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50","w-full max-w-md p-6 rounded-xl","bg-white dark:bg-zinc-900","shadow-xl",c),children:[n&&jsxs("div",{className:"flex items-center justify-between mb-4",children:[jsx("h2",{className:"text-lg font-semibold",children:n}),jsx("button",{onClick:o,className:"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",children:jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),l]})]})})}var N=y;export{y as Modal,N as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/modal/index.tsx"],"names":["cn","inputs","twMerge","clsx","Modal","isOpen","onClose","children","className","title","useEffect","handleEscape","e","jsx","AnimatePresence","jsxs","Fragment","motion","modal_default"],"mappings":"gMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCSO,SAASG,CAAAA,CAAM,CAAE,MAAA,CAAAC,CAAAA,CAAQ,OAAA,CAAAC,EAAS,QAAA,CAAAC,CAAAA,CAAU,SAAA,CAAAC,CAAAA,CAAW,KAAA,CAAAC,CAAM,CAAA,CAAe,CACjF,OAAAC,SAAAA,CAAU,IAAM,CACd,IAAMC,CAAAA,CAAgBC,GAAqB,CACrCA,CAAAA,CAAE,GAAA,GAAQ,QAAA,EAAUN,CAAAA,GAC1B,EACA,OAAID,CAAAA,GACF,QAAA,CAAS,gBAAA,CAAiB,SAAA,CAAWM,CAAY,EACjD,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,QAAA,CAAW,QAAA,CAAA,CAE1B,IAAM,CACX,QAAA,CAAS,mBAAA,CAAoB,SAAA,CAAWA,CAAY,CAAA,CACpD,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,CAAW,QACjC,CACF,CAAA,CAAG,CAACN,CAAAA,CAAQC,CAAO,CAAC,CAAA,CAGlBO,GAAAA,CAACC,eAAAA,CAAA,CACE,QAAA,CAAAT,GACCU,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAH,GAAAA,CAACI,MAAAA,CAAO,GAAA,CAAP,CACC,OAAA,CAAS,CAAE,OAAA,CAAS,CAAE,CAAA,CACtB,OAAA,CAAS,CAAE,OAAA,CAAS,CAAE,CAAA,CACtB,IAAA,CAAM,CAAE,OAAA,CAAS,CAAE,CAAA,CACnB,OAAA,CAASX,CAAAA,CACT,SAAA,CAAU,gCAAA,CACZ,CAAA,CACAS,KAACE,MAAAA,CAAO,GAAA,CAAP,CACC,OAAA,CAAS,CAAE,OAAA,CAAS,CAAA,CAAG,KAAA,CAAO,GAAA,CAAM,CAAA,CAAG,EAAG,CAAA,CAC1C,OAAA,CAAS,CAAE,QAAS,CAAA,CAAG,KAAA,CAAO,CAAA,CAAG,CAAA,CAAG,CAAE,CAAA,CACtC,KAAM,CAAE,OAAA,CAAS,CAAA,CAAG,KAAA,CAAO,GAAA,CAAM,CAAA,CAAG,EAAG,CAAA,CACvC,UAAA,CAAY,CAAE,IAAA,CAAM,QAAA,CAAU,OAAA,CAAS,EAAA,CAAI,SAAA,CAAW,GAAI,CAAA,CAC1D,SAAA,CAAWjB,CAAAA,CACT,+DAAA,CACA,gCAAA,CACA,4BACA,WAAA,CACAQ,CACF,CAAA,CAEC,QAAA,CAAA,CAAAC,CAAAA,EACCM,IAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACb,QAAA,CAAA,CAAAF,GAAAA,CAAC,IAAA,CAAA,CAAG,SAAA,CAAU,wBAAyB,QAAA,CAAAJ,CAAAA,CAAM,CAAA,CAC7CI,GAAAA,CAAC,QAAA,CAAA,CACC,OAAA,CAASP,CAAAA,CACT,SAAA,CAAU,2EAAA,CAEV,QAAA,CAAAO,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,KAAK,MAAA,CAAO,MAAA,CAAO,cAAA,CAAe,OAAA,CAAQ,WAAA,CACjE,QAAA,CAAAA,IAAC,MAAA,CAAA,CAAK,aAAA,CAAc,OAAA,CAAQ,cAAA,CAAe,OAAA,CAAQ,WAAA,CAAa,EAAG,CAAA,CAAE,sBAAA,CAAuB,CAAA,CAC9F,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEDN,CAAAA,CAAAA,CACH,CAAA,CAAA,CACF,CAAA,CAEJ,CAEJ,CAEA,IAAOW,CAAAA,CAAQd","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n className?: string;\r\n title?: string;\r\n}\r\n\r\nexport function Modal({ isOpen, onClose, children, className, title }: ModalProps) {\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n return () => {\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n document.body.style.overflow = \"unset\";\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n onClick={onClose}\r\n className=\"fixed inset-0 bg-black/50 z-50\"\r\n />\r\n <motion.div\r\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\r\n animate={{ opacity: 1, scale: 1, y: 0 }}\r\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\r\n transition={{ type: \"spring\", damping: 25, stiffness: 300 }}\r\n className={cn(\r\n \"fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50\",\r\n \"w-full max-w-md p-6 rounded-xl\",\r\n \"bg-white dark:bg-zinc-900\",\r\n \"shadow-xl\",\r\n className\r\n )}\r\n >\r\n {title && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h2 className=\"text-lg font-semibold\">{title}</h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors\"\r\n >\r\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n )}\r\n {children}\r\n </motion.div>\r\n </>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function r(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function m({text:t,className:n}){let s=Array.from(t);return jsxRuntime.jsx("div",{className:r("flex",n),children:s.map((e,a)=>jsxRuntime.jsx(framerMotion.motion.span,{className:"inline-block",style:{whiteSpace:e===" "?"pre":"normal"},animate:{scaleY:[1,.5,1.5,.8,1],scaleX:[1,1.5,.5,1.2,1]},transition:{duration:1.5,repeat:1/0,delay:a*.08,ease:"easeInOut",repeatDelay:.3},children:e===" "?"\xA0":e},`${e}-${a}`))})}var d=m;exports.MorphText=m;exports.default=d;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/morph-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","MorphText","text","className","letters","jsx","letter","index","motion","morph_text_default"],"mappings":"qNAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAU,CAAE,KAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAU,CAAA,CAAmB,CAC7D,IAAMC,CAAAA,CAAU,KAAA,CAAM,IAAA,CAAKF,CAAI,CAAA,CAE/B,OACEG,cAAAA,CAAC,KAAA,CAAA,CAAI,UAAWR,CAAAA,CAAG,MAAA,CAAQM,CAAS,CAAA,CACjC,QAAA,CAAAC,CAAAA,CAAQ,GAAA,CAAI,CAACE,CAAAA,CAAQC,CAAAA,GACpBF,cAAAA,CAACG,mBAAAA,CAAO,IAAA,CAAP,CAEC,UAAU,cAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAYF,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CACvD,OAAA,CAAS,CACP,MAAA,CAAQ,CAAC,CAAA,CAAG,GAAK,GAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CAC5B,MAAA,CAAQ,CAAC,CAAA,CAAG,GAAA,CAAK,EAAA,CAAK,GAAA,CAAK,CAAC,CAC9B,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,KAAA,CAAOC,CAAAA,CAAQ,GAAA,CACf,IAAA,CAAM,WAAA,CACN,WAAA,CAAa,EACf,CAAA,CAEC,QAAA,CAAAD,CAAAA,GAAW,IAAM,MAAA,CAAWA,CAAAA,CAAAA,CAfxB,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAgBzB,CACD,CAAA,CACH,CAEJ,CAEA,IAAOE,CAAAA,CAAQR","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MorphTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function MorphText({ text, className }: MorphTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n scaleY: [1, 0.5, 1.5, 0.8, 1],\r\n scaleX: [1, 1.5, 0.5, 1.2, 1],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.3,\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MorphText;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx}from'react/jsx-runtime';function r(...t){return twMerge(clsx(t))}function m({text:t,className:n}){let s=Array.from(t);return jsx("div",{className:r("flex",n),children:s.map((e,a)=>jsx(motion.span,{className:"inline-block",style:{whiteSpace:e===" "?"pre":"normal"},animate:{scaleY:[1,.5,1.5,.8,1],scaleX:[1,1.5,.5,1.2,1]},transition:{duration:1.5,repeat:1/0,delay:a*.08,ease:"easeInOut",repeatDelay:.3},children:e===" "?"\xA0":e},`${e}-${a}`))})}var d=m;export{m as MorphText,d as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/morph-text/index.tsx"],"names":["cn","inputs","twMerge","clsx","MorphText","text","className","letters","jsx","letter","index","motion","morph_text_default"],"mappings":"oIAGO,SAASA,CAAAA,CAAAA,GAAMC,EAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCKO,SAASG,CAAAA,CAAU,CAAE,KAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAU,CAAA,CAAmB,CAC7D,IAAMC,CAAAA,CAAU,KAAA,CAAM,IAAA,CAAKF,CAAI,CAAA,CAE/B,OACEG,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAWR,CAAAA,CAAG,MAAA,CAAQM,CAAS,CAAA,CACjC,QAAA,CAAAC,CAAAA,CAAQ,GAAA,CAAI,CAACE,CAAAA,CAAQC,CAAAA,GACpBF,GAAAA,CAACG,MAAAA,CAAO,IAAA,CAAP,CAEC,UAAU,cAAA,CACV,KAAA,CAAO,CAAE,UAAA,CAAYF,CAAAA,GAAW,GAAA,CAAM,KAAA,CAAQ,QAAS,CAAA,CACvD,OAAA,CAAS,CACP,MAAA,CAAQ,CAAC,CAAA,CAAG,GAAK,GAAA,CAAK,EAAA,CAAK,CAAC,CAAA,CAC5B,MAAA,CAAQ,CAAC,CAAA,CAAG,GAAA,CAAK,EAAA,CAAK,GAAA,CAAK,CAAC,CAC9B,CAAA,CACA,UAAA,CAAY,CACV,QAAA,CAAU,GAAA,CACV,MAAA,CAAQ,CAAA,CAAA,CAAA,CACR,KAAA,CAAOC,CAAAA,CAAQ,GAAA,CACf,IAAA,CAAM,WAAA,CACN,WAAA,CAAa,EACf,CAAA,CAEC,QAAA,CAAAD,CAAAA,GAAW,IAAM,MAAA,CAAWA,CAAAA,CAAAA,CAfxB,CAAA,EAAGA,CAAM,CAAA,CAAA,EAAIC,CAAK,CAAA,CAgBzB,CACD,CAAA,CACH,CAEJ,CAEA,IAAOE,CAAAA,CAAQR","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { motion } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface MorphTextProps {\r\n text: string;\r\n className?: string;\r\n}\r\n\r\nexport function MorphText({ text, className }: MorphTextProps) {\r\n const letters = Array.from(text);\r\n\r\n return (\r\n <div className={cn(\"flex\", className)}>\r\n {letters.map((letter, index) => (\r\n <motion.span\r\n key={`${letter}-${index}`}\r\n className=\"inline-block\"\r\n style={{ whiteSpace: letter === \" \" ? \"pre\" : \"normal\" }}\r\n animate={{\r\n scaleY: [1, 0.5, 1.5, 0.8, 1],\r\n scaleX: [1, 1.5, 0.5, 1.2, 1],\r\n }}\r\n transition={{\r\n duration: 1.5,\r\n repeat: Infinity,\r\n delay: index * 0.08,\r\n ease: \"easeInOut\",\r\n repeatDelay: 0.3,\r\n }}\r\n >\r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n </motion.span>\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default MorphText;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function n(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function v({loadingStates:t,loading:a,duration:o=2e3,loop:l=true,className:u}){let[r,s]=react.useState(0);return react.useEffect(()=>{if(!a){s(0);return}let c=setInterval(()=>{s(i=>i===t.length-1?l?0:i:i+1);},o/t.length);return ()=>clearInterval(c)},[a,t.length,o,l]),jsxRuntime.jsx(framerMotion.AnimatePresence,{children:a&&jsxRuntime.jsx(framerMotion.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:n("fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm",u),children:jsxRuntime.jsx("div",{className:"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4",children:jsxRuntime.jsxs("div",{className:"text-center",children:[jsxRuntime.jsx("div",{className:"mb-4",children:jsxRuntime.jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4",children:jsxRuntime.jsx("div",{className:"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin"})})}),jsxRuntime.jsx(framerMotion.AnimatePresence,{mode:"wait",children:jsxRuntime.jsx(framerMotion.motion.p,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"text-lg font-medium text-zinc-900 dark:text-white",children:t[r]?.text},r)}),jsxRuntime.jsx("div",{className:"mt-6 flex justify-center",children:jsxRuntime.jsx("div",{className:"flex space-x-1",children:t.map((c,i)=>jsxRuntime.jsx("div",{className:n("h-2 w-2 rounded-full transition-colors duration-200",i===r?"bg-blue-600":i<r?"bg-green-500":"bg-zinc-300 dark:bg-zinc-600")},i))})})]})})})})}var L=v;exports.MultiStepLoader=v;exports.default=L;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/multi-step-loader/index.tsx"],"names":["cn","inputs","twMerge","clsx","MultiStepLoader","loadingStates","loading","duration","loop","className","currentState","setCurrentState","useState","useEffect","interval","prevState","jsx","AnimatePresence","motion","jsxs","_","index","multi_step_loader_default"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingState {\r\n text: string;\r\n}\r\n\r\ninterface MultiStepLoaderProps {\r\n loadingStates: LoadingState[];\r\n loading: boolean;\r\n duration?: number;\r\n loop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function MultiStepLoader({\r\n loadingStates,\r\n loading,\r\n duration = 2000,\r\n loop = true,\r\n className,\r\n}: MultiStepLoaderProps) {\r\n const [currentState, setCurrentState] = useState(0);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setCurrentState(0);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n setCurrentState((prevState) => {\r\n if (prevState === loadingStates.length - 1) {\r\n return loop ? 0 : prevState;\r\n }\r\n return prevState + 1;\r\n });\r\n }, duration / loadingStates.length);\r\n\r\n return () => clearInterval(interval);\r\n }, [loading, loadingStates.length, duration, loop]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {loading && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\r\n className\r\n )}\r\n >\r\n <div className=\"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4\">\r\n <div className=\"text-center\">\r\n <div className=\"mb-4\">\r\n <div className=\"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4\">\r\n <div className=\"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin\" />\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.p\r\n key={currentState}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-lg font-medium text-zinc-900 dark:text-white\"\r\n >\r\n {loadingStates[currentState]?.text}\r\n </motion.p>\r\n </AnimatePresence>\r\n\r\n <div className=\"mt-6 flex justify-center\">\r\n <div className=\"flex space-x-1\">\r\n {loadingStates.map((_, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"h-2 w-2 rounded-full transition-colors duration-200\",\r\n index === currentState\r\n ? \"bg-blue-600\"\r\n : index < currentState\r\n ? \"bg-green-500\"\r\n : \"bg-zinc-300 dark:bg-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default MultiStepLoader;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useState,useEffect}from'react';import {AnimatePresence,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs}from'react/jsx-runtime';function n(...t){return twMerge(clsx(t))}function v({loadingStates:t,loading:a,duration:o=2e3,loop:l=true,className:u}){let[r,s]=useState(0);return useEffect(()=>{if(!a){s(0);return}let c=setInterval(()=>{s(i=>i===t.length-1?l?0:i:i+1);},o/t.length);return ()=>clearInterval(c)},[a,t.length,o,l]),jsx(AnimatePresence,{children:a&&jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:n("fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm",u),children:jsx("div",{className:"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4",children:jsxs("div",{className:"text-center",children:[jsx("div",{className:"mb-4",children:jsx("div",{className:"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4",children:jsx("div",{className:"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin"})})}),jsx(AnimatePresence,{mode:"wait",children:jsx(motion.p,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},transition:{duration:.2},className:"text-lg font-medium text-zinc-900 dark:text-white",children:t[r]?.text},r)}),jsx("div",{className:"mt-6 flex justify-center",children:jsx("div",{className:"flex space-x-1",children:t.map((c,i)=>jsx("div",{className:n("h-2 w-2 rounded-full transition-colors duration-200",i===r?"bg-blue-600":i<r?"bg-green-500":"bg-zinc-300 dark:bg-zinc-600")},i))})})]})})})})}var L=v;export{v as MultiStepLoader,L as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/multi-step-loader/index.tsx"],"names":["cn","inputs","twMerge","clsx","MultiStepLoader","loadingStates","loading","duration","loop","className","currentState","setCurrentState","useState","useEffect","interval","prevState","jsx","AnimatePresence","motion","jsxs","_","index","multi_step_loader_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, useEffect } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface LoadingState {\r\n text: string;\r\n}\r\n\r\ninterface MultiStepLoaderProps {\r\n loadingStates: LoadingState[];\r\n loading: boolean;\r\n duration?: number;\r\n loop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function MultiStepLoader({\r\n loadingStates,\r\n loading,\r\n duration = 2000,\r\n loop = true,\r\n className,\r\n}: MultiStepLoaderProps) {\r\n const [currentState, setCurrentState] = useState(0);\r\n\r\n useEffect(() => {\r\n if (!loading) {\r\n setCurrentState(0);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n setCurrentState((prevState) => {\r\n if (prevState === loadingStates.length - 1) {\r\n return loop ? 0 : prevState;\r\n }\r\n return prevState + 1;\r\n });\r\n }, duration / loadingStates.length);\r\n\r\n return () => clearInterval(interval);\r\n }, [loading, loadingStates.length, duration, loop]);\r\n\r\n return (\r\n <AnimatePresence>\r\n {loading && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"fixed inset-0 z-[100] flex items-center justify-center bg-black/80 backdrop-blur-sm\",\r\n className\r\n )}\r\n >\r\n <div className=\"bg-white dark:bg-zinc-900 rounded-lg p-8 shadow-2xl max-w-md w-full mx-4\">\r\n <div className=\"text-center\">\r\n <div className=\"mb-4\">\r\n <div className=\"inline-flex items-center justify-center w-16 h-16 bg-blue-100 dark:bg-blue-900/20 rounded-full mb-4\">\r\n <div className=\"w-8 h-8 border-4 border-blue-600 border-t-transparent rounded-full animate-spin\" />\r\n </div>\r\n </div>\r\n\r\n <AnimatePresence mode=\"wait\">\r\n <motion.p\r\n key={currentState}\r\n initial={{ opacity: 0, y: 10 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: -10 }}\r\n transition={{ duration: 0.2 }}\r\n className=\"text-lg font-medium text-zinc-900 dark:text-white\"\r\n >\r\n {loadingStates[currentState]?.text}\r\n </motion.p>\r\n </AnimatePresence>\r\n\r\n <div className=\"mt-6 flex justify-center\">\r\n <div className=\"flex space-x-1\">\r\n {loadingStates.map((_, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n \"h-2 w-2 rounded-full transition-colors duration-200\",\r\n index === currentState\r\n ? \"bg-blue-600\"\r\n : index < currentState\r\n ? \"bg-green-500\"\r\n : \"bg-zinc-300 dark:bg-zinc-600\"\r\n )}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport default MultiStepLoader;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var react=require('react'),framerMotion=require('framer-motion'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime');function l(...e){return tailwindMerge.twMerge(clsx.clsx(e))}function P({buttonRef:e}){let t=e.current?.getBoundingClientRect();if(!t)return null;let r=t.left+t.width/2,a=t.top+t.height/2;return jsxRuntime.jsx(framerMotion.AnimatePresence,{children:[...Array(6)].map((s,n)=>jsxRuntime.jsx(framerMotion.motion.div,{className:"fixed w-1 h-1 bg-black dark:bg-white rounded-full",style:{left:r,top:a},initial:{scale:0,x:0,y:0},animate:{scale:[0,1,0],x:[0,(n%2?1:-1)*(Math.random()*50+20)],y:[0,-Math.random()*50-20]},transition:{duration:.6,delay:n*.1,ease:"easeOut"}},n))})}function x({children:e,onClick:t,onSuccess:r,successDuration:a=1e3,className:s,...n}){let[c,u]=react.useState(false),i=react.useRef(null);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[c&&jsxRuntime.jsx(P,{buttonRef:i}),jsxRuntime.jsx("button",{ref:i,onClick:m=>{u(true),t?.(m),r?.(),setTimeout(()=>u(false),a);},className:l("relative px-4 py-2 rounded-md bg-primary text-primary-foreground",c&&"scale-95","transition-transform duration-100",s),...n,children:e})]})}var H=x;exports.ParticleButton=x;exports.default=H;//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/particle-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","SuccessParticles","buttonRef","rect","centerX","centerY","jsx","AnimatePresence","_","i","motion","ParticleButton","children","onClick","onSuccess","successDuration","className","props","showParticles","setShowParticles","useState","useRef","jsxs","Fragment","e","particle_button_default"],"mappings":"4OAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,qBAAAA,CAAQC,SAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMA,SAASG,CAAAA,CAAiB,CAAE,SAAA,CAAAC,CAAU,CAAA,CAAsD,CAC1F,IAAMC,CAAAA,CAAOD,CAAAA,CAAU,OAAA,EAAS,qBAAA,EAAsB,CACtD,GAAI,CAACC,CAAAA,CAAM,OAAO,IAAA,CAElB,IAAMC,EAAUD,CAAAA,CAAK,IAAA,CAAOA,CAAAA,CAAK,KAAA,CAAQ,CAAA,CACnCE,CAAAA,CAAUF,EAAK,GAAA,CAAMA,CAAAA,CAAK,MAAA,CAAS,CAAA,CAEzC,OACEG,cAAAA,CAACC,6BAAA,CACE,QAAA,CAAA,CAAC,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,CAACC,CAAAA,CAAGC,CAAAA,GACrBH,cAAAA,CAACI,mBAAAA,CAAO,GAAA,CAAP,CAEC,SAAA,CAAU,mDAAA,CACV,KAAA,CAAO,CAAE,IAAA,CAAMN,CAAAA,CAAS,GAAA,CAAKC,CAAQ,CAAA,CACrC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAE,CAAA,CAChC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAA,CAAII,EAAI,CAAA,CAAI,CAAA,CAAI,EAAA,GAAO,IAAA,CAAK,MAAA,EAAO,CAAI,GAAK,EAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAG,CAAC,KAAK,MAAA,EAAO,CAAI,EAAA,CAAK,EAAE,CAAE,CAAA,CACpH,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,KAAA,CAAOA,CAAAA,CAAI,EAAA,CAAK,IAAA,CAAM,SAAU,CAAA,CAAA,CALxDA,CAMP,CACD,CAAA,CACH,CAEJ,CAEO,SAASE,CAAAA,CAAe,CAC7B,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CAAkB,GAAA,CAClB,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAwB,CACtB,GAAM,CAACC,CAAAA,CAAeC,CAAgB,CAAA,CAAIC,eAAS,KAAK,CAAA,CAClDlB,CAAAA,CAAYmB,YAAAA,CAA0B,IAAI,CAAA,CAShD,OACEC,eAAAA,CAAAC,mBAAAA,CAAA,CACG,QAAA,CAAA,CAAAL,CAAAA,EAAiBZ,cAAAA,CAACL,CAAAA,CAAA,CAAiB,SAAA,CAAWC,CAAAA,CAAW,CAAA,CAC1DI,cAAAA,CAAC,QAAA,CAAA,CACC,GAAA,CAAKJ,CAAAA,CACL,OAAA,CAZesB,CAAAA,EAA2C,CAC9DL,CAAAA,CAAiB,IAAI,CAAA,CACrBN,CAAAA,GAAUW,CAAC,CAAA,CACXV,CAAAA,IAAY,CACZ,UAAA,CAAW,IAAMK,CAAAA,CAAiB,KAAK,CAAA,CAAGJ,CAAe,EAC3D,CAAA,CAQM,SAAA,CAAWlB,CAAAA,CACT,kEAAA,CACAqB,GAAiB,UAAA,CACjB,mCAAA,CACAF,CACF,CAAA,CACC,GAAGC,CAAAA,CAEH,QAAA,CAAAL,CAAAA,CACH,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOa,CAAAA,CAAQd","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ParticleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onSuccess?: () => void;\r\n successDuration?: number;\r\n}\r\n\r\nfunction SuccessParticles({ buttonRef }: { buttonRef: React.RefObject<HTMLButtonElement> }) {\r\n const rect = buttonRef.current?.getBoundingClientRect();\r\n if (!rect) return null;\r\n\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n return (\r\n <AnimatePresence>\r\n {[...Array(6)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"fixed w-1 h-1 bg-black dark:bg-white rounded-full\"\r\n style={{ left: centerX, top: centerY }}\r\n initial={{ scale: 0, x: 0, y: 0 }}\r\n animate={{ scale: [0, 1, 0], x: [0, (i % 2 ? 1 : -1) * (Math.random() * 50 + 20)], y: [0, -Math.random() * 50 - 20] }}\r\n transition={{ duration: 0.6, delay: i * 0.1, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ParticleButton({\r\n children,\r\n onClick,\r\n onSuccess,\r\n successDuration = 1000,\r\n className,\r\n ...props\r\n}: ParticleButtonProps) {\r\n const [showParticles, setShowParticles] = useState(false);\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setShowParticles(true);\r\n onClick?.(e);\r\n onSuccess?.();\r\n setTimeout(() => setShowParticles(false), successDuration);\r\n };\r\n\r\n return (\r\n <>\r\n {showParticles && <SuccessParticles buttonRef={buttonRef} />}\r\n <button\r\n ref={buttonRef}\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-md bg-primary text-primary-foreground\",\r\n showParticles && \"scale-95\",\r\n \"transition-transform duration-100\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </>\r\n );\r\n}\r\n\r\nexport default ParticleButton;\r\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {useState,useRef}from'react';import {AnimatePresence,motion}from'framer-motion';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function l(...e){return twMerge(clsx(e))}function P({buttonRef:e}){let t=e.current?.getBoundingClientRect();if(!t)return null;let r=t.left+t.width/2,a=t.top+t.height/2;return jsx(AnimatePresence,{children:[...Array(6)].map((s,n)=>jsx(motion.div,{className:"fixed w-1 h-1 bg-black dark:bg-white rounded-full",style:{left:r,top:a},initial:{scale:0,x:0,y:0},animate:{scale:[0,1,0],x:[0,(n%2?1:-1)*(Math.random()*50+20)],y:[0,-Math.random()*50-20]},transition:{duration:.6,delay:n*.1,ease:"easeOut"}},n))})}function x({children:e,onClick:t,onSuccess:r,successDuration:a=1e3,className:s,...n}){let[c,u]=useState(false),i=useRef(null);return jsxs(Fragment,{children:[c&&jsx(P,{buttonRef:i}),jsx("button",{ref:i,onClick:m=>{u(true),t?.(m),r?.(),setTimeout(()=>u(false),a);},className:l("relative px-4 py-2 rounded-md bg-primary text-primary-foreground",c&&"scale-95","transition-transform duration-100",s),...n,children:e})]})}var H=x;export{x as ParticleButton,H as default};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cn.ts","../../src/particle-button/index.tsx"],"names":["cn","inputs","twMerge","clsx","SuccessParticles","buttonRef","rect","centerX","centerY","jsx","AnimatePresence","_","i","motion","ParticleButton","children","onClick","onSuccess","successDuration","className","props","showParticles","setShowParticles","useState","useRef","jsxs","Fragment","e","particle_button_default"],"mappings":"sMAGO,SAASA,CAAAA,CAAAA,GAAMC,CAAAA,CAAsB,CAC1C,OAAOC,OAAAA,CAAQC,IAAAA,CAAKF,CAAM,CAAC,CAC7B,CCMA,SAASG,CAAAA,CAAiB,CAAE,SAAA,CAAAC,CAAU,CAAA,CAAsD,CAC1F,IAAMC,CAAAA,CAAOD,CAAAA,CAAU,OAAA,EAAS,qBAAA,EAAsB,CACtD,GAAI,CAACC,CAAAA,CAAM,OAAO,IAAA,CAElB,IAAMC,EAAUD,CAAAA,CAAK,IAAA,CAAOA,CAAAA,CAAK,KAAA,CAAQ,CAAA,CACnCE,CAAAA,CAAUF,EAAK,GAAA,CAAMA,CAAAA,CAAK,MAAA,CAAS,CAAA,CAEzC,OACEG,GAAAA,CAACC,gBAAA,CACE,QAAA,CAAA,CAAC,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,CAACC,CAAAA,CAAGC,CAAAA,GACrBH,GAAAA,CAACI,MAAAA,CAAO,GAAA,CAAP,CAEC,SAAA,CAAU,mDAAA,CACV,KAAA,CAAO,CAAE,IAAA,CAAMN,CAAAA,CAAS,GAAA,CAAKC,CAAQ,CAAA,CACrC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAE,CAAA,CAChC,OAAA,CAAS,CAAE,KAAA,CAAO,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAA,CAAII,EAAI,CAAA,CAAI,CAAA,CAAI,EAAA,GAAO,IAAA,CAAK,MAAA,EAAO,CAAI,GAAK,EAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAG,CAAC,KAAK,MAAA,EAAO,CAAI,EAAA,CAAK,EAAE,CAAE,CAAA,CACpH,UAAA,CAAY,CAAE,QAAA,CAAU,EAAA,CAAK,KAAA,CAAOA,CAAAA,CAAI,EAAA,CAAK,IAAA,CAAM,SAAU,CAAA,CAAA,CALxDA,CAMP,CACD,CAAA,CACH,CAEJ,CAEO,SAASE,CAAAA,CAAe,CAC7B,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,eAAA,CAAAC,CAAAA,CAAkB,GAAA,CAClB,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAwB,CACtB,GAAM,CAACC,CAAAA,CAAeC,CAAgB,CAAA,CAAIC,SAAS,KAAK,CAAA,CAClDlB,CAAAA,CAAYmB,MAAAA,CAA0B,IAAI,CAAA,CAShD,OACEC,IAAAA,CAAAC,QAAAA,CAAA,CACG,QAAA,CAAA,CAAAL,CAAAA,EAAiBZ,GAAAA,CAACL,CAAAA,CAAA,CAAiB,SAAA,CAAWC,CAAAA,CAAW,CAAA,CAC1DI,GAAAA,CAAC,QAAA,CAAA,CACC,GAAA,CAAKJ,CAAAA,CACL,OAAA,CAZesB,CAAAA,EAA2C,CAC9DL,CAAAA,CAAiB,IAAI,CAAA,CACrBN,CAAAA,GAAUW,CAAC,CAAA,CACXV,CAAAA,IAAY,CACZ,UAAA,CAAW,IAAMK,CAAAA,CAAiB,KAAK,CAAA,CAAGJ,CAAe,EAC3D,CAAA,CAQM,SAAA,CAAWlB,CAAAA,CACT,kEAAA,CACAqB,GAAiB,UAAA,CACjB,mCAAA,CACAF,CACF,CAAA,CACC,GAAGC,CAAAA,CAEH,QAAA,CAAAL,CAAAA,CACH,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOa,CAAAA,CAAQd","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, useRef } from \"react\";\r\nimport { motion, AnimatePresence } from \"framer-motion\";\r\nimport { cn } from \"../utils/cn\";\r\n\r\ninterface ParticleButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onSuccess?: () => void;\r\n successDuration?: number;\r\n}\r\n\r\nfunction SuccessParticles({ buttonRef }: { buttonRef: React.RefObject<HTMLButtonElement> }) {\r\n const rect = buttonRef.current?.getBoundingClientRect();\r\n if (!rect) return null;\r\n\r\n const centerX = rect.left + rect.width / 2;\r\n const centerY = rect.top + rect.height / 2;\r\n\r\n return (\r\n <AnimatePresence>\r\n {[...Array(6)].map((_, i) => (\r\n <motion.div\r\n key={i}\r\n className=\"fixed w-1 h-1 bg-black dark:bg-white rounded-full\"\r\n style={{ left: centerX, top: centerY }}\r\n initial={{ scale: 0, x: 0, y: 0 }}\r\n animate={{ scale: [0, 1, 0], x: [0, (i % 2 ? 1 : -1) * (Math.random() * 50 + 20)], y: [0, -Math.random() * 50 - 20] }}\r\n transition={{ duration: 0.6, delay: i * 0.1, ease: \"easeOut\" }}\r\n />\r\n ))}\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\nexport function ParticleButton({\r\n children,\r\n onClick,\r\n onSuccess,\r\n successDuration = 1000,\r\n className,\r\n ...props\r\n}: ParticleButtonProps) {\r\n const [showParticles, setShowParticles] = useState(false);\r\n const buttonRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n setShowParticles(true);\r\n onClick?.(e);\r\n onSuccess?.();\r\n setTimeout(() => setShowParticles(false), successDuration);\r\n };\r\n\r\n return (\r\n <>\r\n {showParticles && <SuccessParticles buttonRef={buttonRef} />}\r\n <button\r\n ref={buttonRef}\r\n onClick={handleClick}\r\n className={cn(\r\n \"relative px-4 py-2 rounded-md bg-primary text-primary-foreground\",\r\n showParticles && \"scale-95\",\r\n \"transition-transform duration-100\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n </>\r\n );\r\n}\r\n\r\nexport default ParticleButton;\r\n"]}
|