diff --git a/.gitignore b/.gitignore index dddf370..423807c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ node_modules/ .output/ dist/ +# Local Codex agent skills and instructions +.agents/ + # Local environment files .env .env.* diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..2499163 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100 +} diff --git a/assets/css/main.css b/assets/css/main.css index b32f7f2..01b7fff 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -4,10 +4,1085 @@ :root { font-family: 'Source Han Sans', 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif; - color: rgb(64 64 64); - background: #f8fbff; + color: #404040; + background: #fff; +} +* { + box-sizing: border-box; +} +html { + scroll-behavior: smooth; +} +body { + min-width: 320px; + margin: 0; + background: #fff; +} +button, +a { + -webkit-tap-highlight-color: transparent; +} +button { + border: 0; + cursor: pointer; + font: inherit; +} +button:focus-visible, +a:focus-visible { + outline: 3px solid rgba(20, 120, 251, 0.38); + outline-offset: 3px; } -html { scroll-behavior: smooth; } -body { min-width: 320px; margin: 0; background: #f8fbff; } -button, a { -webkit-tap-highlight-color: transparent; } +.site-shell { + overflow: hidden; + color: #404040; +} +.page-width { + width: min(1296px, calc(100% - 48px)); + margin: 0 auto; +} +.site-header { + height: 57px; + background: rgba(255, 255, 255, 0.96); + position: sticky; + top: 0; + z-index: 20; +} +.header-inner { + height: 100%; + display: flex; + align-items: center; + justify-content: space-between; +} +.brand { + display: block; + width: 190px; +} +.brand img { + display: block; + width: 100%; + height: auto; +} +.desktop-nav { + display: flex; + gap: clamp(18px, 2.25vw, 43px); + align-items: center; + height: 100%; +} +.desktop-nav button { + position: relative; + background: transparent; + color: #555; + font-size: 14px; + white-space: nowrap; +} +.desktop-nav button::after { + position: absolute; + right: 0; + bottom: -8px; + left: 0; + height: 2px; + content: ''; + background: #287cf9; + transform: scaleX(0); + transform-origin: center; + transition: transform 0.24s ease; +} +.desktop-nav button.active, +.desktop-nav button:hover { + color: #287cf9; + font-weight: 700; +} +.desktop-nav button.active::after, +.desktop-nav button:hover::after { + transform: scaleX(1); +} +.nav-chevron { + color: #646464; + margin-left: 6px; + font-size: 16px; + vertical-align: 1px; +} +.login-button { + height: 31px; + min-width: 70px; + padding: 0 15px; + border-radius: 20px; + background: #087dfb; + color: white; + font-size: 12px; + box-shadow: 0 3px 8px rgba(30, 127, 255, 0.22); + transition: + transform 0.22s ease, + box-shadow 0.22s ease, + background 0.22s ease; +} +.login-button span { + font-size: 8px; + margin-right: 6px; +} + +.hero-section { + position: relative; + height: min(32.2vw, 617px); + min-height: 430px; + background: #f4f8ff; + isolation: isolate; +} +.hero-art { + position: absolute; + z-index: -1; + inset: 0; + background: url('/images/lanhu/slices/home-container25-image2@2x.png') center/cover no-repeat; +} +.hero-content { + height: 100%; + display: flex; + align-items: center; +} +.hero-copy { + margin-left: 2px; + margin-top: -2px; +} +.hero-copy h1 { + margin: 0; + font-size: clamp(34px, 2.7vw, 51px); + line-height: 1.34; + letter-spacing: 0.2px; + font-weight: 700; + color: #3f4145; +} +.hero-points { + display: flex; + flex-wrap: wrap; + gap: 17px; + margin: 25px 0 28px; + color: #525966; + font-size: 15px; +} +.hero-points span::first-letter { + color: #167cff; + font-weight: 700; +} +.button-row { + display: flex; + gap: 15px; +} +.primary-button, +.outline-button { + display: inline-flex; + min-width: 135px; + height: 49px; + padding: 0 26px; + align-items: center; + justify-content: center; + border-radius: 5px; + font-size: 14px; + transition: + transform 0.2s, + box-shadow 0.2s; +} +.primary-button { + color: #fff; + background: linear-gradient(100deg, #453cff, #00adf6); + box-shadow: 0 8px 15px rgba(25, 106, 255, 0.16); +} +.primary-button:hover { + transform: translateY(-2px); + box-shadow: 0 11px 20px rgba(25, 106, 255, 0.24); +} +.primary-button:active, +.outline-button:active, +.login-button:active { + transform: translateY(1px) scale(0.98); +} +.primary-button b { + font-size: 21px; + margin-left: 9px; + font-weight: 400; +} +.outline-button { + color: #656565; + background: rgba(255, 255, 255, 0.56); + border: 1px solid #7b818c; +} +.outline-button:hover { + color: #1578fa; + border-color: rgba(21, 120, 250, 0.48); + background: rgba(255, 255, 255, 0.9); + box-shadow: 0 8px 18px rgba(44, 120, 236, 0.1); + transform: translateY(-2px); +} +.primary-button.small { + height: 46px; + min-width: 162px; + padding: 0 21px; + font-size: 13px; +} + +.logo-strip { + height: 65px; + overflow: hidden; + background: #fff; + box-shadow: + inset 0 1px 0 rgba(224, 236, 255, 0.45), + 0 8px 20px rgba(184, 213, 255, 0.06); +} +.logo-track { + height: 100%; + min-width: 2100px; + display: flex; + align-items: center; + justify-content: space-around; + gap: 44px; + padding: 0 26px; + transform: translateX(-2%); +} +.logo { + font-family: Arial, sans-serif; + font-size: 20px; + font-weight: 800; + color: #173993; + white-space: nowrap; +} +.logo-1 { + color: #0b5a9a; +} +.logo-2 { + font-size: 13px; + color: #4a7899; +} +.logo-3 { + font-size: 25px; +} +.logo-4 { + font-size: 22px; + color: #1f2785; +} +.logo-5 { + font-size: 12px; + color: #0b7baa; +} + +.section-title { + text-align: center; +} +.section-title h2 { + margin: 0; + color: #414141; + font-weight: 700; + font-size: 35px; + letter-spacing: 0.1px; + line-height: 1.35; +} +.section-title .blue, +.blue { + color: #1478fb; +} +.section-title p { + margin: 12px 0 0; + color: #a5a5a5; + font-size: 15px; + line-height: 1.55; + letter-spacing: 0.15px; +} +.intro-section { + padding-top: 76px; + padding-bottom: 74px; +} +.stats-panel { + min-height: 371px; + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 20px; + padding: 45px 34px 28px; + margin-top: 31px; + border-radius: 16px; + background: linear-gradient( + 120deg, + rgba(255, 193, 180, 0.88), + rgba(240, 211, 180, 0.67) 25%, + rgba(206, 235, 255, 0.88) 58%, + rgba(203, 194, 255, 0.78) + ); +} +.stat-item { + min-height: 292px; + display: flex; + align-items: center; + flex-direction: column; + padding: 31px 10px; + background: rgba(255, 255, 255, 0.83); + border-radius: 20px; + box-shadow: 0 9px 25px rgba(75, 136, 255, 0.05); + transition: + transform 0.32s ease, + box-shadow 0.32s ease, + background 0.32s ease; +} +.stat-item img { + width: 86px; + height: 86px; + object-fit: contain; + margin-bottom: 19px; +} +.stat-item strong { + color: #0875f9; + font-size: 34px; + line-height: 1; +} +.stat-item span { + color: #555; + font-size: 16px; + margin-top: 15px; +} + +.model-section { + min-height: 791px; + padding: 76px 0 80px; + background: linear-gradient(135deg, #f8fbff 5%, #fff 44%, #eff4ff 100%); +} +.model-layout { + display: grid; + grid-template-columns: 0.95fr 0.95fr 1.2fr; + align-items: center; + gap: 25px; + margin-top: 52px; +} +.ring { + width: 100%; + max-width: 370px; + justify-self: center; +} +.core-value { + padding: 12px 0 0 10px; +} +.core-value h3 { + display: flex; + align-items: center; + gap: 13px; + margin: 0 0 17px; + color: #1578fa; + font-size: 21px; +} +.core-value h3 img { + width: 50px; + height: 50px; + object-fit: contain; +} +.core-point { + padding: 15px 0 17px; + border-bottom: 1px dashed #d3d3d3; +} +.core-point h4 { + margin: 0; + color: #454545; + font-size: 18px; +} +.core-point h4 i { + display: inline-block; + width: 13px; + height: 13px; + margin-right: 10px; + border-radius: 50%; + vertical-align: -1px; + background: linear-gradient(135deg, #a0e1ff, #3c67ff); +} +.core-point p { + margin: 10px 0 0; + color: #757575; + font-size: 16px; + line-height: 1.7; +} +.core-value .primary-button { + margin-top: 34px; +} + +.advantages-section { + padding: 83px 0 92px; + background: #edf8ff; +} +.lead-advantage { + display: grid; + grid-template-columns: 47% 1fr; + align-items: center; + gap: 24px; + height: 182px; + overflow: hidden; + margin-top: 56px; + border-radius: 13px; + background: rgba(255, 255, 255, 0.8); + transition: + transform 0.32s ease, + box-shadow 0.32s ease; +} +.lead-advantage > img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.55s cubic-bezier(0.2, 0.75, 0.2, 1); +} +.lead-advantage > div { + padding: 16px 30px; +} +.lead-advantage h3, +.advantage-grid h3 { + margin: 0 0 13px; + color: #1e7dff; + font-size: 22px; +} +.lead-advantage p, +.advantage-grid p { + margin: 6px 0; + color: #777; + font-size: 14px; + line-height: 1.5; +} +.lead-advantage b, +.advantage-grid b { + color: #555; +} +.advantage-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 30px; + margin-top: 24px; +} +.advantage-grid article { + min-height: 163px; + padding: 22px 20px; + overflow: hidden; + position: relative; + border-radius: 13px; + background: rgba(255, 255, 255, 0.8); + transition: + transform 0.3s ease, + box-shadow 0.3s ease, + background 0.3s ease; +} +.advantage-grid img { + position: absolute; + right: -18px; + bottom: -22px; + width: 120px; + opacity: 0.45; + transition: + transform 0.4s ease, + opacity 0.4s ease; +} +.advantage-grid > article > div { + position: relative; + z-index: 1; +} +.advantage-grid h3 { + font-size: 19px; +} + +.cases-section { + position: relative; + min-height: 752px; + padding: 73px 0; + background: #eef9ff; + overflow: hidden; +} +.case-background { + position: absolute; + inset: 0; + background: url('/images/lanhu/slices/home-group75-image7@2x.png') right center/cover no-repeat; + opacity: 0.18; +} +.case-content { + position: relative; +} +.case-panel { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 38px; + padding: 28px 28px 25px; + margin-top: 51px; + background: rgba(255, 255, 255, 0.86); + border: 1px solid #d7e9ff; + border-radius: 14px; + box-shadow: 0 10px 24px rgba(112, 163, 255, 0.09); +} +.case-panel article { + min-width: 0; + transition: transform 0.3s ease; +} +.case-panel img { + width: 100%; + height: 186px; + border-radius: 9px; + object-fit: cover; + transition: + transform 0.45s cubic-bezier(0.2, 0.75, 0.2, 1), + box-shadow 0.3s ease; +} +.case-panel p { + margin: 17px 0 0; + color: #666; + font-size: 14px; + line-height: 1.55; +} +.center-action { + text-align: center; + margin-top: 46px; +} + +.industries-section { + padding: 80px 0 111px; +} +.industry-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 30px; + margin-top: 76px; +} +.industry-grid article { + position: relative; + min-height: 311px; + overflow: hidden; + padding: 26px; + border-radius: 12px; + background: linear-gradient(130deg, #fff 26%, #f2f5ff 62%, #bddbff); + transition: + transform 0.32s ease, + box-shadow 0.32s ease; +} +.industry-grid h3 { + margin: 0; + color: #414141; + font-size: 26px; +} +.industry-grid img { + width: 45%; + height: 150px; + object-fit: contain; + float: left; + margin: 25px 15px 0 -8px; +} +.quote { + margin-top: 33px; + color: #787878; + font-weight: 700; + font-size: 43px; + line-height: 0.55; +} +.industry-grid p { + margin: 19px 0 14px; + color: #777; + font-size: 15px; + line-height: 1.5; +} +.tags { + display: flex; + gap: 9px; +} +.tags span { + padding: 6px 13px; + color: #408cff; + border-radius: 16px; + background: rgba(255, 255, 255, 0.55); + font-size: 12px; +} + +.delivery-section { + padding: 85px 0 109px; + background: #edf8ff; +} +.delivery-banner { + height: 187px; + margin-top: 44px; + border-radius: 12px; + background: url('/images/lanhu/slices/home-group95-image21@2x.png') center/cover no-repeat; +} +.delivery-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 26px 38px; + margin-top: 28px; +} +.delivery-grid article { + min-height: 119px; + display: flex; + gap: 16px; + padding: 20px 27px; + border-radius: 8px; + background: rgba(255, 255, 255, 0.82); + box-shadow: 0 6px 17px rgba(92, 153, 255, 0.1); + transition: + transform 0.3s ease, + box-shadow 0.3s ease; +} +.delivery-grid img { + width: 55px; + height: 55px; + object-fit: contain; +} +.delivery-grid h3 { + margin: 0; + color: #2d83fb; + font-size: 20px; +} +.delivery-grid p { + margin: 8px 0 0; + color: #777; + font-size: 14px; + line-height: 1.45; +} + +.testimonial-section { + padding: 88px 0 78px; + background: #fff; +} +.testimonial-track { + display: flex; + gap: 24px; + width: max-content; + margin-top: 62px; + transform: translateX(-520px); +} +.testimonial-track article { + width: 460px; + min-height: 216px; + padding: 25px 27px; + border-radius: 10px; + background: #f9fbff; + color: #767676; + transition: + transform 0.3s ease, + box-shadow 0.3s ease, + background 0.3s ease; +} +.testimonial-track header { + display: flex; + align-items: center; + gap: 12px; +} +.avatar { + display: block; + width: 38px; + height: 38px; + border-radius: 50%; + background: linear-gradient(135deg, #516b71, #f3bc94); +} +.testimonial-track time { + margin-left: auto; + color: #aaa; +} +.testimonial-track p { + margin: 18px 0 0; + font-size: 15px; + line-height: 1.65; +} + +.cta-section { + position: relative; + min-height: 390px; + overflow: hidden; + color: #1d7cf8; +} +.cta-art { + position: absolute; + inset: 0; + background: url('/images/lanhu/slices/home-group105-image31@2x.png') center/cover no-repeat; +} +.cta-content { + position: relative; + max-width: 790px; + margin: auto; + padding-top: 86px; + text-align: center; +} +.cta-content h2 { + margin: 0; + font-size: 30px; + line-height: 1.45; +} +.cta-content p { + margin: 16px 0 23px; + color: #4d4d4d; + font-size: 17px; +} +.site-footer { + color: #d6dde4; + background: #101d23; +} +.footer-main { + min-height: 222px; + display: grid; + grid-template-columns: 340px 1fr 210px; + align-items: center; + gap: 42px; +} +.footer-main > img { + width: 340px; + background: white; + border-radius: 5px; +} +.footer-links { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 23px 45px; +} +.footer-links div { + min-width: 100px; +} +.footer-links b { + display: block; + color: #bbc6ce; + font-size: 15px; + font-weight: 500; +} +.footer-links span { + display: block; + margin-top: 28px; + font-size: 12px; + color: #89969d; +} +.qr { + display: grid; + grid-template-columns: repeat(2, 70px); + gap: 11px; +} +.qr span { + height: 70px; + display: grid; + place-items: center; + color: #111; + background: #fff; + font-size: 52px; +} +.qr small { + grid-column: 1 / -1; + font-size: 12px; + color: #9ca6ac; + white-space: nowrap; +} +.footer-bottom { + height: 59px; + display: grid; + place-items: center; + color: #879298; + background: #252e33; + font-size: 12px; +} +.dialog-mask { + position: fixed; + z-index: 40; + inset: 0; + display: grid; + place-items: center; + background: rgba(10, 25, 41, 0.46); +} +.consult-dialog { + position: relative; + width: min(390px, calc(100% - 40px)); + padding: 32px; + border-radius: 14px; + background: #fff; + box-shadow: 0 24px 60px rgba(7, 50, 100, 0.28); + text-align: center; +} +.consult-dialog h2 { + margin: 0; + font-size: 23px; +} +.consult-dialog p { + margin: 14px 0 24px; + color: #777; + line-height: 1.6; +} +.close { + position: absolute; + top: 8px; + right: 12px; + color: #999; + background: transparent; + font-size: 28px; +} +.toast { + position: fixed; + z-index: 50; + bottom: 24px; + left: 50%; + margin: 0; + transform: translateX(-50%); + padding: 12px 20px; + color: white; + border-radius: 30px; + background: rgba(20, 30, 43, 0.9); + box-shadow: 0 7px 22px rgba(0, 0, 0, 0.2); +} + +@media (hover: hover) and (pointer: fine) { + .login-button:hover { + background: #056ee2; + box-shadow: 0 7px 16px rgba(30, 127, 255, 0.3); + transform: translateY(-1px); + } + .stat-item:hover { + background: #fff; + box-shadow: 0 18px 34px rgba(59, 125, 233, 0.15); + transform: translateY(-8px); + } + .lead-advantage:hover { + box-shadow: 0 17px 34px rgba(73, 139, 234, 0.14); + transform: translateY(-5px); + } + .lead-advantage:hover > img { + transform: scale(1.045); + } + .advantage-grid article:hover { + background: #fff; + box-shadow: 0 17px 32px rgba(73, 139, 234, 0.14); + transform: translateY(-6px); + } + .advantage-grid article:hover img { + opacity: 0.66; + transform: translate(-4px, -4px) scale(1.05); + } + .case-panel article:hover { + transform: translateY(-6px); + } + .case-panel article:hover img { + box-shadow: 0 14px 24px rgba(54, 127, 242, 0.2); + transform: scale(1.03); + } + .industry-grid article:hover { + box-shadow: 0 18px 32px rgba(56, 122, 225, 0.18); + transform: translateY(-7px); + } + .delivery-grid article:hover { + box-shadow: 0 15px 30px rgba(63, 135, 239, 0.16); + transform: translateY(-5px); + } + .testimonial-track article:hover { + background: #fff; + box-shadow: 0 16px 28px rgba(72, 135, 226, 0.13); + transform: translateY(-6px); + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} + +@media (max-width: 1050px) { + .desktop-nav { + gap: 14px; + } + .desktop-nav button { + font-size: 12px; + } + .hero-copy { + margin-left: 3%; + } + .section-title h2 { + font-size: 29px; + } + .footer-main { + grid-template-columns: 250px 1fr; + padding: 30px 0; + } + .footer-main > img { + width: 250px; + } + .qr { + display: none; + } +} +@media (max-width: 760px) { + .page-width { + width: min(100% - 32px, 560px); + } + .site-header { + height: 55px; + } + .brand { + width: 150px; + } + .desktop-nav { + display: none; + } + .hero-section { + height: 500px; + min-height: 0; + } + .hero-art { + background-position: 62% center; + opacity: 0.72; + } + .hero-copy { + margin: 0; + } + .hero-copy h1 { + font-size: 31px; + } + .hero-points { + margin: 18px 0 22px; + gap: 8px 14px; + font-size: 13px; + max-width: 290px; + } + .primary-button, + .outline-button { + min-width: 124px; + height: 44px; + padding: 0 13px; + } + .logo-strip { + height: 52px; + } + .logo-track { + gap: 28px; + } + .intro-section, + .industries-section { + padding-top: 55px; + padding-bottom: 58px; + } + .section-title h2 { + font-size: 25px; + } + .section-title p { + font-size: 12px; + } + .stats-panel { + grid-template-columns: repeat(2, 1fr); + min-height: 0; + padding: 20px; + gap: 12px; + } + .stat-item { + min-height: 190px; + padding: 20px 7px; + border-radius: 14px; + } + .stat-item img { + width: 58px; + height: 58px; + margin-bottom: 12px; + } + .stat-item strong { + font-size: 28px; + } + .stat-item span { + font-size: 13px; + margin-top: 9px; + text-align: center; + } + .model-section, + .advantages-section, + .cases-section, + .delivery-section, + .testimonial-section { + padding: 58px 0; + } + .model-layout { + grid-template-columns: 1fr 1fr; + gap: 7px; + margin-top: 36px; + } + .ring { + max-width: 220px; + } + .core-value { + grid-column: 1 / -1; + padding: 15px 0 0; + } + .lead-advantage { + grid-template-columns: 1fr; + height: auto; + margin-top: 38px; + } + .lead-advantage > img { + height: 150px; + } + .lead-advantage > div { + padding: 19px; + } + .advantage-grid, + .industry-grid, + .delivery-grid { + grid-template-columns: 1fr; + gap: 16px; + } + .advantage-grid article { + min-height: 145px; + } + .case-panel { + grid-template-columns: 1fr 1fr; + gap: 18px 14px; + padding: 15px; + margin-top: 35px; + } + .case-panel img { + height: 110px; + } + .case-panel p { + margin-top: 10px; + font-size: 12px; + } + .industry-grid { + margin-top: 45px; + } + .industry-grid article { + min-height: 255px; + } + .delivery-banner { + height: 105px; + margin-top: 30px; + } + .delivery-grid article { + min-height: 95px; + padding: 16px; + } + .testimonial-track { + transform: none; + overflow-x: auto; + width: 100%; + margin-top: 35px; + } + .testimonial-track article { + min-width: 280px; + width: 280px; + } + .cta-section { + min-height: 320px; + } + .cta-content { + padding: 65px 17px 0; + } + .cta-content h2 { + font-size: 21px; + } + .cta-content h2 br { + display: none; + } + .footer-main { + grid-template-columns: 1fr; + gap: 26px; + } + .footer-main > img { + width: 240px; + } + .footer-links { + gap: 18px; + } + .footer-links span { + margin-top: 8px; + } + .footer-bottom { + padding: 0 12px; + text-align: center; + font-size: 10px; + } +} diff --git a/components/SectionTitle.vue b/components/SectionTitle.vue new file mode 100644 index 0000000..d3b37f1 --- /dev/null +++ b/components/SectionTitle.vue @@ -0,0 +1,6 @@ + diff --git a/components/ui/button/Button.vue b/components/ui/button/Button.vue index 64198a8..2eb3d0a 100644 --- a/components/ui/button/Button.vue +++ b/components/ui/button/Button.vue @@ -9,7 +9,11 @@ defineProps({ diff --git a/nuxt.config.js b/nuxt.config.js index b429fc6..bf77bd1 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -1,6 +1,15 @@ export default defineNuxtConfig({ modules: ['@nuxtjs/tailwindcss'], css: ['~/assets/css/main.css'], + vite: { + server: { + watch: { + // `.agents` contains local assistant skills. On Windows, chokidar can + // fail while resolving it and cause Nuxt's dev server to restart. + ignored: ['**/.agents/**'] + } + } + }, app: { head: { title: '大马棒 · 云途全域 GEO', diff --git a/package-lock.json b/package-lock.json index 3b4de28..3d2b243 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,11 +7,13 @@ "name": "damabang-geo-official-site", "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", + "gsap": "^3.15.0", "nuxt": "^3.17.0" }, "devDependencies": { "autoprefixer": "^10.4.21", "postcss": "^8.5.3", + "prettier": "^3.9.5", "tailwindcss": "^3.4.17" } }, @@ -6681,6 +6683,12 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, + "node_modules/gsap": { + "version": "3.15.0", + "resolved": "https://registry.npmmirror.com/gsap/-/gsap-3.15.0.tgz", + "integrity": "sha512-dMW4CWBTUK1AEEDeZc1g4xpPGIrSf9fJF960qbTZmN/QwZIWY5wgliS6JWl9/25fpTGJrMRtSjGtOmPnfjZB+A==", + "license": "Standard 'no charge' license: https://gsap.com/standard-license." + }, "node_modules/gzip-size": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-7.0.0.tgz", @@ -9580,6 +9588,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/prettier": { + "version": "3.9.5", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.9.5.tgz", + "integrity": "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-bytes": { "version": "7.1.0", "resolved": "https://registry.npmmirror.com/pretty-bytes/-/pretty-bytes-7.1.0.tgz", diff --git a/package.json b/package.json index b896357..442986e 100644 --- a/package.json +++ b/package.json @@ -3,17 +3,21 @@ "private": true, "type": "module", "scripts": { - "dev": "nuxt dev", + "dev": "nuxt dev --host 0.0.0.0", "build": "nuxt build", - "preview": "nuxt preview" + "preview": "nuxt preview", + "format": "prettier --write .", + "format:check": "prettier --check ." }, "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", + "gsap": "^3.15.0", "nuxt": "^3.17.0" }, "devDependencies": { "autoprefixer": "^10.4.21", "postcss": "^8.5.3", + "prettier": "^3.9.5", "tailwindcss": "^3.4.17" } } diff --git a/pages/index.vue b/pages/index.vue index 8c18e9f..3e331c6 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,247 +1,429 @@