feat(ui): globalise premium button hover sweep effect
Former-commit-id: bb7199442218d1023b231238b3ddbb4ee1d1be38
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="8c544ee0-dde3-ea9c-ccdc-3a3483a1af31")}catch(e){}}();
|
||||
module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},912466,a=>{"use strict";var b=a.i(526156),c=a.i(841757),d=a.i(829091);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function h({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",g[a])})}function i({className:a,variant:g="primary",size:i="md",href:j,...k}){let l=function(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}(g,i,a),m=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:(0,d.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===g?"group-hover/btn:text-primary-dark":""),children:k.children}),(0,b.jsx)(h,{variant:g})]});return j?(0,b.jsx)(c.default,{href:j,className:l,children:m}):(0,b.jsx)("button",{className:l,...k,children:m})}a.s(["Button",()=>i])},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__22b888eb._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}];
|
||||
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="971acaa3-f205-0f9d-98d4-9f723cb6de31")}catch(e){}}();
|
||||
module.exports=[324725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},912466,a=>{"use strict";var b=a.i(526156),c=a.i(841757),d=a.i(829091);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:bg-primary/5 hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:bg-primary/5 hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"via-white/30",secondary:"via-white/30",accent:"via-white/40",saturated:"via-white/30",outline:"via-primary/20",ghost:"via-primary/10",white:"via-primary/20",destructive:"via-white/30"};function h({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute top-0 -left-[150%] h-full w-[150%] bg-gradient-to-r from-transparent to-transparent skew-x-[-20deg] group-hover/btn:left-[100%] transition-all duration-700 ease-[cubic-bezier(0.16,1,0.3,1)] z-0",g[a])})}function i({className:a,variant:g="primary",size:i="md",href:j,...k}){let l=function(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}(g,i,a),m=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"relative z-10 flex items-center justify-center gap-2",children:k.children}),(0,b.jsx)(h,{variant:g})]});return j?(0,b.jsx)(c.default,{href:j,className:l,children:m}):(0,b.jsx)("button",{className:l,...k,children:m})}a.s(["Button",()=>i])},64293,(a,b,c)=>{b.exports=a.x("pino-2e79642258e38174",()=>require("pino-2e79642258e38174"))},274209,281682,a=>{"use strict";var b=a.i(150765),c=a.i(475625);function d(){let a=(0,c.getAppServices)();return{trackEvent:(0,b.useCallback)((b,c)=>{a.analytics.track(b,c)},[a]),trackPageview:(0,b.useCallback)(b=>{a.analytics.trackPageview(b)},[a])}}a.s(["useAnalytics",()=>d],274209),a.s(["AnalyticsEvents",0,{PAGE_VIEW:"pageview",PAGE_SCROLL:"page_scroll",PAGE_EXIT:"page_exit",SCROLL_DEPTH:"scroll_depth",BUTTON_CLICK:"button_click",LINK_CLICK:"link_click",FORM_SUBMIT:"form_submit",FORM_START:"form_start",FORM_ERROR:"form_error",FORM_FIELD_FOCUS:"form_field_focus",PRODUCT_VIEW:"product_view",PRODUCT_ADD_TO_CART:"product_add_to_cart",PRODUCT_REMOVE_FROM_CART:"product_remove_from_cart",PRODUCT_PURCHASE:"product_purchase",PRODUCT_WISHLIST_ADD:"product_wishlist_add",PRODUCT_WISHLIST_REMOVE:"product_wishlist_remove",PRODUCT_TAB_SWITCH:"product_tab_switch",SEARCH:"search",FILTER_APPLY:"filter_apply",FILTER_CLEAR:"filter_clear",USER_SIGNUP:"user_signup",USER_LOGIN:"user_login",USER_LOGOUT:"user_logout",USER_PROFILE_UPDATE:"user_profile_update",BLOG_POST_VIEW:"blog_post_view",VIDEO_PLAY:"video_play",VIDEO_PAUSE:"video_pause",VIDEO_COMPLETE:"video_complete",DOWNLOAD:"download",MODAL_OPEN:"modal_open",MODAL_CLOSE:"modal_close",TOGGLE_SWITCH:"toggle_switch",ACCORDION_TOGGLE:"accordion_toggle",TAB_SWITCH:"tab_switch",TOC_CLICK:"toc_click",ERROR:"error",PERFORMANCE:"performance",API_ERROR:"api_error",API_SUCCESS:"api_success",QUOTE_REQUEST:"quote_request",CONTACT_FORM_SUBMIT:"contact_form_submit",NEWSLETTER_SUBSCRIBE:"newsletter_subscribe",BROCHURE_DOWNLOAD:"brochure_download"}],281682)},163041,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[root-of-the-server]__22b888eb._.js","server/chunks/ssr/node_modules__pnpm_2ad0b5ae._.js"].map(b=>a.l(b))).then(()=>b(17814)))}];
|
||||
|
||||
//# debugId=8c544ee0-dde3-ea9c-ccdc-3a3483a1af31
|
||||
//# debugId=971acaa3-f205-0f9d-98d4-9f723cb6de31
|
||||
//# sourceMappingURL=%5Broot-of-the-server%5D__3edf8d10._.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
||||
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="4535ad06-1286-6d35-1a90-f4e49fd97f0a")}catch(e){}}();
|
||||
module.exports=[912466,a=>{"use strict";var b=a.i(526156),c=a.i(841757),d=a.i(829091);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"bg-primary-dark",secondary:"bg-secondary-light",accent:"bg-accent-dark",saturated:"bg-primary",outline:"bg-primary",ghost:"bg-primary-light/10",white:"bg-primary-light",destructive:"bg-destructive/90"};function h({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out",g[a])})}function i({className:a,variant:g="primary",size:i="md",href:j,...k}){let l=function(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}(g,i,a),m=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:(0,d.cn)("relative z-10 flex items-center justify-center gap-2 transition-colors duration-500","white"===g?"group-hover/btn:text-primary-dark":""),children:k.children}),(0,b.jsx)(h,{variant:g})]});return j?(0,b.jsx)(c.default,{href:j,className:l,children:m}):(0,b.jsx)("button",{className:l,...k,children:m})}a.s(["Button",()=>i])}];
|
||||
;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="101226b2-846a-97fa-9c6c-d934e1bcd915")}catch(e){}}();
|
||||
module.exports=[912466,a=>{"use strict";var b=a.i(526156),c=a.i(841757),d=a.i(829091);let e={primary:"bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",secondary:"bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl",accent:"bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl",saturated:"bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl",outline:"border-2 border-primary bg-transparent text-primary hover:bg-primary/5 hover:shadow-primary/20 hover:shadow-xl",ghost:"text-primary hover:bg-primary/5 hover:shadow-lg",white:"bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl",destructive:"bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl"},f={sm:"h-9 px-4 text-sm md:text-base",md:"h-11 px-6 text-base md:text-lg",lg:"h-14 px-5 md:px-8 text-base md:text-lg",xl:"h-16 px-6 md:px-10 text-lg md:text-xl"},g={primary:"via-white/30",secondary:"via-white/30",accent:"via-white/40",saturated:"via-white/30",outline:"via-primary/20",ghost:"via-primary/10",white:"via-primary/20",destructive:"via-white/30"};function h({variant:a="primary"}){return(0,b.jsx)("span",{className:(0,d.cn)("absolute top-0 -left-[150%] h-full w-[150%] bg-gradient-to-r from-transparent to-transparent skew-x-[-20deg] group-hover/btn:left-[100%] transition-all duration-700 ease-[cubic-bezier(0.16,1,0.3,1)] z-0",g[a])})}function i({className:a,variant:g="primary",size:i="md",href:j,...k}){let l=function(a="primary",b="md",c){return(0,d.cn)("inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate",e[a],f[b],c)}(g,i,a),m=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"relative z-10 flex items-center justify-center gap-2",children:k.children}),(0,b.jsx)(h,{variant:g})]});return j?(0,b.jsx)(c.default,{href:j,className:l,children:m}):(0,b.jsx)("button",{className:l,...k,children:m})}a.s(["Button",()=>i])}];
|
||||
|
||||
//# debugId=4535ad06-1286-6d35-1a90-f4e49fd97f0a
|
||||
//# debugId=101226b2-846a-97fa-9c6c-d934e1bcd915
|
||||
//# sourceMappingURL=components_ui_Button_tsx_29e9ece6._.js.map
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"debugId": "4535ad06-1286-6d35-1a90-f4e49fd97f0a",
|
||||
"debugId": "101226b2-846a-97fa-9c6c-d934e1bcd915",
|
||||
"sections": [
|
||||
{"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/ui/Button.tsx"],"sourcesContent":["import React from 'react';\nimport Link from 'next/link';\nimport { cn } from './utils';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?:\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'saturated'\n | 'outline'\n | 'ghost'\n | 'white'\n | 'destructive';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n href?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const buttonBaseStyles =\n 'inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate';\n\nexport const buttonVariantsMap = {\n primary: 'bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n secondary: 'bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl',\n accent: 'bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl',\n saturated: 'bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n outline:\n 'border-2 border-primary bg-transparent text-primary hover:text-white hover:shadow-primary/20 hover:shadow-xl',\n ghost: 'text-primary hover:shadow-lg',\n white:\n 'bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl hover:text-white',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl',\n};\n\nexport const buttonSizesMap = {\n sm: 'h-9 px-4 text-sm md:text-base',\n md: 'h-11 px-6 text-base md:text-lg',\n lg: 'h-14 px-5 md:px-8 text-base md:text-lg',\n xl: 'h-16 px-6 md:px-10 text-lg md:text-xl',\n};\n\nexport const buttonOverlayColorsMap = {\n primary: 'bg-primary-dark',\n secondary: 'bg-secondary-light',\n accent: 'bg-accent-dark',\n saturated: 'bg-primary',\n outline: 'bg-primary',\n ghost: 'bg-primary-light/10',\n white: 'bg-primary-light',\n destructive: 'bg-destructive/90',\n};\n\nexport function getButtonClasses(variant: keyof typeof buttonVariantsMap = 'primary', size: keyof typeof buttonSizesMap = 'md', className?: string) {\n return cn(buttonBaseStyles, buttonVariantsMap[variant], buttonSizesMap[size], className);\n}\n\nexport function ButtonOverlay({ variant = 'primary' }: { variant?: keyof typeof buttonVariantsMap }) {\n return (\n <span\n className={cn(\n 'absolute inset-0 translate-y-[101%] group-hover/btn:translate-y-0 transition-transform duration-500 ease-out',\n buttonOverlayColorsMap[variant]\n )}\n />\n );\n}\n\nexport function Button({\n className,\n variant = 'primary',\n size = 'md',\n href,\n ...props\n}: ButtonProps) {\n const styles = getButtonClasses(variant, size, className);\n\n const content = (\n <>\n <span\n className={cn(\n 'relative z-10 flex items-center justify-center gap-2 transition-colors duration-500',\n variant === 'white' ? 'group-hover/btn:text-primary-dark' : '',\n )}\n >\n {props.children}\n </span>\n <ButtonOverlay variant={variant} />\n </>\n );\n\n if (href) {\n return (\n <Link href={href} className={styles}>\n {content}\n </Link>\n );\n }\n\n return (\n <button className={styles} {...props}>\n {content}\n </button>\n );\n}\n"],"names":[],"mappings":"0DACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAqBO,IAAM,EAAoB,CAC/B,QAAS,2EACT,UAAW,+EACX,OAAQ,gFACR,UAAW,6EACX,QACE,+GACF,MAAO,+BACP,MACE,4FACF,YACE,mGACJ,EAEa,EAAiB,CAC5B,GAAI,gCACJ,GAAI,iCACJ,GAAI,yCACJ,GAAI,uCACN,EAEa,EAAyB,CACpC,QAAS,kBACT,UAAW,qBACX,OAAQ,iBACR,UAAW,aACX,QAAS,aACT,MAAO,sBACP,MAAO,mBACP,YAAa,mBACf,EAMO,SAAS,EAAc,SAAE,EAAU,SAAS,CAAgD,EACjG,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,+GACA,CAAsB,CAAC,EAAQ,GAIvC,CAEO,SAAS,EAAO,WACrB,CAAS,SACT,EAAU,SAAS,MACnB,EAAO,IAAI,MACX,CAAI,CACJ,GAAG,EACS,EACZ,IAAM,EAtBD,AAsBU,SAtBD,AAAiB,EAA0C,SAAS,CAAE,EAAoC,IAAI,CAAE,CAAkB,EAChJ,MAAO,CAAA,EAAA,EAAA,EAAA,AAAE,EAAC,AAnCV,uXAmC4B,CAAiB,CAAC,EAAQ,CAAE,CAAc,CAAC,EAAK,CAAE,EAChF,EAoBkC,EAAS,EAAM,GAEzC,EACJ,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,sFACY,UAAZ,EAAsB,oCAAsC,aAG7D,EAAM,QAAQ,GAEjB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAc,QAAS,cAI5B,AAAI,EAEA,CAAA,EAAA,CAFM,CAEN,GAAA,EAAC,EAAA,OAAI,CAAA,CAAC,KAAM,EAAM,UAAW,WAC1B,IAML,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,UAAW,EAAS,GAAG,CAAK,UACjC,GAGP"}}]
|
||||
{"offset": {"line": 1, "column": 0}, "map": {"version":3,"sources":["../../../../components/ui/Button.tsx"],"sourcesContent":["import React from 'react';\nimport Link from 'next/link';\nimport { cn } from './utils';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?:\n | 'primary'\n | 'secondary'\n | 'accent'\n | 'saturated'\n | 'outline'\n | 'ghost'\n | 'white'\n | 'destructive';\n size?: 'sm' | 'md' | 'lg' | 'xl';\n href?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport const buttonBaseStyles =\n 'inline-flex items-center justify-center whitespace-nowrap rounded-full font-semibold transition-all duration-500 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-95 hover:-translate-y-1 hover:scale-[1.02] relative overflow-hidden group/btn isolate';\n\nexport const buttonVariantsMap = {\n primary: 'bg-primary text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n secondary: 'bg-secondary text-white shadow-md hover:shadow-secondary/30 hover:shadow-2xl',\n accent: 'bg-accent text-primary-dark shadow-md hover:shadow-accent/30 hover:shadow-2xl',\n saturated: 'bg-saturated text-white shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n outline:\n 'border-2 border-primary bg-transparent text-primary hover:bg-primary/5 hover:shadow-primary/20 hover:shadow-xl',\n ghost: 'text-primary hover:bg-primary/5 hover:shadow-lg',\n white:\n 'bg-white text-primary shadow-md hover:shadow-primary/30 hover:shadow-2xl',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-md hover:shadow-destructive/30 hover:shadow-2xl',\n};\n\nexport const buttonSizesMap = {\n sm: 'h-9 px-4 text-sm md:text-base',\n md: 'h-11 px-6 text-base md:text-lg',\n lg: 'h-14 px-5 md:px-8 text-base md:text-lg',\n xl: 'h-16 px-6 md:px-10 text-lg md:text-xl',\n};\n\nexport const buttonShineColorsMap = {\n primary: 'via-white/30',\n secondary: 'via-white/30',\n accent: 'via-white/40',\n saturated: 'via-white/30',\n outline: 'via-primary/20',\n ghost: 'via-primary/10',\n white: 'via-primary/20',\n destructive: 'via-white/30',\n};\n\nexport function getButtonClasses(variant: keyof typeof buttonVariantsMap = 'primary', size: keyof typeof buttonSizesMap = 'md', className?: string) {\n return cn(buttonBaseStyles, buttonVariantsMap[variant], buttonSizesMap[size], className);\n}\n\nexport function ButtonOverlay({ variant = 'primary' }: { variant?: keyof typeof buttonVariantsMap }) {\n return (\n <span\n className={cn(\n 'absolute top-0 -left-[150%] h-full w-[150%] bg-gradient-to-r from-transparent to-transparent skew-x-[-20deg] group-hover/btn:left-[100%] transition-all duration-700 ease-[cubic-bezier(0.16,1,0.3,1)] z-0',\n buttonShineColorsMap[variant]\n )}\n />\n );\n}\n\nexport function Button({\n className,\n variant = 'primary',\n size = 'md',\n href,\n ...props\n}: ButtonProps) {\n const styles = getButtonClasses(variant, size, className);\n\n const content = (\n <>\n <span className=\"relative z-10 flex items-center justify-center gap-2\">\n {props.children}\n </span>\n <ButtonOverlay variant={variant} />\n </>\n );\n\n if (href) {\n return (\n <Link href={href} className={styles}>\n {content}\n </Link>\n );\n }\n\n return (\n <button className={styles} {...props}>\n {content}\n </button>\n );\n}\n"],"names":[],"mappings":"0DACA,EAAA,EAAA,CAAA,CAAA,QACA,EAAA,EAAA,CAAA,CAAA,QAqBO,IAAM,EAAoB,CAC/B,QAAS,2EACT,UAAW,+EACX,OAAQ,gFACR,UAAW,6EACX,QACE,iHACF,MAAO,kDACP,MACE,2EACF,YACE,mGACJ,EAEa,EAAiB,CAC5B,GAAI,gCACJ,GAAI,iCACJ,GAAI,yCACJ,GAAI,uCACN,EAEa,EAAuB,CAClC,QAAS,eACT,UAAW,eACX,OAAQ,eACR,UAAW,eACX,QAAS,iBACT,MAAO,iBACP,MAAO,iBACP,YAAa,cACf,EAMO,SAAS,EAAc,SAAE,EAAU,SAAS,CAAgD,EACjG,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,6MACA,CAAoB,CAAC,EAAQ,GAIrC,CAEO,SAAS,EAAO,WACrB,CAAS,SACT,EAAU,SAAS,MACnB,EAAO,IAAI,MACX,CAAI,CACJ,GAAG,EACS,EACZ,IAAM,EAAS,AAtBV,SAAS,AAAiB,EAA0C,SAAS,CAAE,EAAoC,IAAI,CAAE,CAAkB,EAChJ,MAAO,CAAA,EAAA,EAAA,EAAA,AAAE,EAnCT,AAmCU,uXAAkB,CAAiB,CAAC,EAAQ,CAAE,CAAc,CAAC,EAAK,CAAE,EAChF,EAoBkC,EAAS,EAAM,GAEzC,EACJ,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,CAAA,WACE,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CAAK,UAAU,gEACb,EAAM,QAAQ,GAEjB,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAc,QAAS,cAI5B,AAAI,EAEA,CAAA,EAAA,CAFM,CAEN,GAAA,EAAC,EAAA,OAAI,CAAA,CAAC,KAAM,EAAM,UAAW,WAC1B,IAML,CAAA,EAAA,EAAA,GAAA,EAAC,SAAA,CAAO,UAAW,EAAS,GAAG,CAAK,UACjC,GAGP"}}]
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user