feat(ui): globalise premium button hover sweep effect

Former-commit-id: bb7199442218d1023b231238b3ddbb4ee1d1be38
This commit is contained in:
2026-05-07 14:32:52 +02:00
parent 64e1364596
commit b9c080bb1d
144 changed files with 267 additions and 272 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -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

View File

@@ -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

View File

@@ -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