Landing cosmetics

pull/4591/head
Cagatay Civici 2023-10-10 11:38:49 +03:00
parent c30cd4e6dc
commit 49a7a1a3d8
19 changed files with 373 additions and 981 deletions

View File

@ -345,7 +345,7 @@ pre[class*="language-"] {
display: none;
}
.layout-wrapper-dark {
.layout-dark {
pre[class*="language-"] {
code {
background: var(--surface-card) !important;
@ -353,7 +353,7 @@ pre[class*="language-"] {
}
}
.layout-wrapper-light {
.layout-light {
pre[class*="language-"] {
code {
background: #475569 !important;

View File

@ -8,7 +8,7 @@
}
}
.layout-wrapper-light {
.layout-light {
.card {
background: var(--surface-ground);
border: 1px solid var(--surface-border);
@ -18,7 +18,7 @@
}
}
.layout-wrapper-dark {
.layout-dark {
.card {
background: var(--surface-card);
border: 0 none;

View File

@ -120,7 +120,7 @@
}
}
.layout-wrapper-light {
.layout-light {
.doc-section-description {
> p {
i {
@ -131,7 +131,7 @@
}
}
.layout-wrapper-dark {
.layout-dark {
.doc-section-description {
> p {
i {

View File

@ -1,21 +1,24 @@
.layout-topbar {
height: 4rem;
position: fixed;
top: 0;
left: 0;
padding: 0 4rem;
width: 100%;
z-index: 1100;
transition: background-color 1s;
border-bottom: 1px solid var(--surface-border);
display: flex;
align-items: center;
justify-content: space-between;
&.layout-topbar-sticky {
backdrop-filter: blur(8px);
}
.layout-topbar-inner {
height: 4rem;
padding: 0 4rem;
display: flex;
align-items: center;
justify-content: space-between;
}
.layout-topbar-logo-container {
width: 250px;
margin-right: 4rem;
@ -44,7 +47,7 @@
}
}
.layout-wrapper-light {
.layout-light {
.layout-topbar {
&.layout-topbar-sticky {
background-color: rgba(255,255,255,.7);
@ -52,7 +55,7 @@
}
}
.layout-wrapper-dark {
.layout-dark {
.layout-topbar {
&.layout-topbar-sticky {
background-color: rgba(0,0,0,.3);

View File

@ -1,33 +0,0 @@
.landing-components {
.components-main {
.components-strip-top {
background: var(--home-components-strip-bg);
transform: matrix(-1, 0, 0, 1, 0, 0);
}
.components-strip-bottom {
background: var(--home-components-strip-bg);
}
}
.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
background: transparent;
}
.box {
box-shadow: var(--home-card-shadow);
}
.p-datepicker, .p-datepicker-header {
background: transparent;
border-color: transparent;
}
}
@media screen and (min-width: 1660px) {
.components-main-container {
width: 1504px !important;
margin-left: auto !important;
margin-right: auto !important;
}
}

View File

@ -1,4 +1,4 @@
.landing-dark {
.layout-dark {
--home-highlight-color:#14B8A6;
--home-highlight-darker-color:#0D9488;
--home-highlight-fore-color:#ffffff;

View File

@ -1,111 +0,0 @@
.landing-header {
background-color: transparent;
position: fixed;
top: 0;
left: 0;
width: 100%;
padding-top: 1rem;
padding-bottom: 1rem;
z-index: 100;
.landing-header-container {
width: 100%;
max-width: 1250px !important;
margin-left: auto !important;
margin-right: auto !important;
display: flex;
align-items: center;
justify-content: space-between;
}
.landing-header-logo {
height: 2.5rem;
}
&.landing-header-sticky {
background-color: var(--home-header-bg);
backdrop-filter: blur(12px);
}
ol {
a {
display: block;
padding: .5rem 1.5rem;
text-align: center;
transition: background-color .3s;
border-radius: 10px;
color: var(--home-menu-link-text-color);
white-space: nowrap;
img {
display: none;
}
&:hover {
background: var(--home-menu-link-hover-bg);
}
}
}
.header-button {
width: 2.5rem;
height: 2.5rem;
}
}
@media screen and (max-width: $landingBreakpointLG) {
.landing-header {
align-items: flex-start;
nav {
display: none;
}
.landing-header-logo {
height: 2rem;
}
&.landing-header-active {
background-color: var(--home-header-bg);
backdrop-filter: blur(12px);
height: 100vh;
nav {
display: block;
position: fixed;
left: 100px;
top: 100px;
width: 100%;
padding: 4rem 2rem;
top: 5rem;
left: 0;
}
.menu-button {
i:before {
content: "\e90b";
}
}
}
ol {
a {
border: 1px solid var(--home-border-color);
background-color: var(--home-herobox-bg);
margin-bottom: 1rem;
color: var(--home-linkbox-text-color);
cursor: pointer;
font-size: 1.5rem;
text-align: left;
display: flex;
align-items: center;
padding: 1.5rem;
img {
display: block;
margin-right: 1.5rem;
}
}
}
}
}

View File

@ -1,194 +1,22 @@
.landing-hero {
flex: 1 1 auto;
.hero-inner {
.hero-box {
position: relative;
z-index: 1;
.name {
text-align: center;
margin-top: 20px;
opacity: 0;
transition: 1s;
transition-delay: 1.8s;
}
img {
transform: scale(0);
opacity: 0;
transition: 0.5s;
transition-delay: 1.8s;
}
b {
color: var(--home-primary-text-color);
display: block;
font-weight: 600;
font-size: 13px;
}
span {
color: var(--home-secondary-text-color);
font-weight: 500;
font-size: 12px;
}
&:before {
content: '';
background: var(--home-herobox-bg);
border: 1px solid var(--home-border-color);
box-shadow: 0px 50px 100px var(--home-herobox-shadow);
border-radius: 9px;
z-index: -1;
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 0%;
opacity: 0;
transform: translate(-50%, -50%);
transition: height 1s 1.4s, opacity 1s 1.4s, border-color .3s;
}
&:hover {
&:before {
border-color: var(--home-highlight-color);
}
}
}
.hero-border-top {
opacity: 0;
border: 1px solid transparent;
width: 380px;
height: 0;
position: absolute;
top: 50%;
left: 50%;
z-index: -1;
transition: height 1.5s, opacity 1.5s;
transition-delay: 0.6s;
border-radius: 9px;
transform: translate(-50%, -50%);
}
.hero-border-left {
border: 1px solid var(--home-border-color);
border-right: transparent;
width: 0%;
border-radius: 9px 0 0 9px;
height: 35%;
position: absolute;
top: 50%;
left: -3%;
z-index: -1;
opacity: 0;
transition: width 1s, opacity 1s, transform 1s;
transition-delay: 1s;
transform: translate(108px, -50%);
}
.hero-border-right {
border: 1px solid var(--home-border-color);
border-left: transparent;
width: 0%;
border-radius: 0 9px 9px 0;
height: 35%;
position: absolute;
top: 50%;
right: -3%;
z-index: -1;
opacity: 0;
transition: width 1s, opacity 1s, transform 1s;
transition-delay: 1s;
transform: translate(-108px, -50%);
}
.p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link {
background: transparent;
}
.hero-bg {
transition-delay: 1.4s;
.hero-strip-top {
transition: 1.6s;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 114px;
height: 0%;
opacity: 0;
background: var(--home-herobox-strip-top-bg);
}
.hero-strip-left {
transition: 1.6s;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 0%;
height: 114px;
opacity: 0;
background: var(--home-herobox-strip-bottom-bg);
}
.box {
box-shadow: var(--home-card-shadow);
}
&.hero-animation {
.hero-bg {
.hero-strip-top {
opacity: 1;
height: 100%;
}
.hero-strip-left {
width: 100%;
opacity: 1;
}
}
.hero-inner {
.hero-box {
cursor: pointer;
img {
opacity: 1;
transform: scale(1);
}
.name {
opacity: 1;
}
&:before {
height: 100%;
opacity: 1;
}
}
.hero-border-top {
height: 70%;
opacity: 1;
border-color: var(--home-border-color);
}
.hero-border-left {
opacity: 1;
width: 19%;
transform: translate(0, -50%);
}
.hero-border-right {
opacity: 1;
width: 19%;
transform: translate(0, -50%);
}
}
.p-datepicker, .p-datepicker-header {
background: transparent;
border-color: transparent;
}
}
@media screen and (max-width: $landingBreakpointLG) {
@media screen and (min-width: 1660px) {
.landing-hero {
padding: 0 2rem;
width: 1504px !important;
margin-left: auto !important;
margin-right: auto !important;
}
}

View File

@ -5,10 +5,9 @@ $landingBreakpointXL: 1199px;
@import './_main';
@import './_light';
@import './_dark';
@import './_header';
@import './_hero';
@import './_users';
@import './_getstarted';
@import './_components';
@import './_themes';
@import './_blocks';
@import './_designer';

View File

@ -1,4 +1,4 @@
.landing-light {
.layout-light {
--home-highlight-color:#14B8A6;
--home-highlight-darker-color:#0D9488;
--home-highlight-fore-color:#ffffff;

View File

@ -1,6 +1,7 @@
.landing {
background: var(--home-bg);
scroll-behavior: smooth;
padding-top: 4rem;
.landing-intro {
background: var(--home-intro-bg);
@ -134,54 +135,4 @@
100% {
transform: translateX(calc(-100% - 3rem));
}
}
.landing-users {
.fade-right {
background: linear-gradient(to left, var(--home-bg), transparent);
}
.fade-left {
background: linear-gradient(to right, var(--home-bg), transparent);
}
.section-detail {
max-width: 1250px !important;
margin-left: auto !important;
margin-right: auto !important;
}
.users-container {
max-width: 1250px !important;
margin-left: auto !important;
margin-right: auto !important;
.marquee-wrapper {
user-select: none;
gap: 3rem;
justify-content: center;
align-items: center;
flex-shrink: 0;
}
.marquee {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: space-around;
gap: 3rem;
min-width: 100%;
animation: scroll 30s linear infinite;
> div {
max-width: clamp(10rem, 1rem + 28vmin, 20rem);
aspect-ratio: 1;
display: flex;
justify-content: center;
align-items: center;
height: 8rem;
}
&.marquee-reverse{
animation-direction: reverse;
animation-delay: calc(30s / -2);
}
}
}
}

View File

@ -0,0 +1,49 @@
.landing-users {
.fade-right {
background: linear-gradient(to left, var(--home-bg), transparent);
}
.fade-left {
background: linear-gradient(to right, var(--home-bg), transparent);
}
.section-detail {
max-width: 1250px !important;
margin-left: auto !important;
margin-right: auto !important;
}
.users-container {
max-width: 1250px !important;
margin-left: auto !important;
margin-right: auto !important;
.marquee-wrapper {
user-select: none;
gap: 3rem;
justify-content: center;
align-items: center;
flex-shrink: 0;
}
.marquee {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: space-around;
gap: 3rem;
min-width: 100%;
animation: scroll 30s linear infinite;
> div {
max-width: clamp(10rem, 1rem + 28vmin, 20rem);
aspect-ratio: 1;
display: flex;
justify-content: center;
align-items: center;
height: 8rem;
}
&.marquee-reverse{
animation-direction: reverse;
animation-delay: calc(30s / -2);
}
}
}
}

View File

@ -1,97 +1,100 @@
<template>
<div :ref="containerRef" class="layout-topbar">
<div class="layout-topbar-logo-container">
<PrimeVueNuxtLink to="/" class="layout-topbar-logo" aria-label="PrimeVue logo">
<svg width="165" height="40" viewBox="0 0 165 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M128.062 32C128.438 32 128.656 31.8125 128.75 31.4375L134.031 7.6875C134.125 7.25 133.938 7 133.469 7H130.5C130.125 7 129.906 7.1875 129.812 7.5625L126.5 24.3125L123.219 7.5625C123.125 7.1875 122.906 7 122.531 7H119.562C119.094 7 118.906 7.25 119 7.6875L124.25 31.4375C124.344 31.8125 124.562 32 124.938 32H128.062ZM144.562 32C147.5 32 149.062 30.4375 149.062 27.5V7.625C149.062 7.28125 148.781 7 148.438 7H145.562C145.219 7 144.938 7.28125 144.938 7.625V26.625C144.938 27.4688 144.5 27.875 143.688 27.875H142.062C141.25 27.875 140.812 27.4688 140.812 26.625V7.625C140.812 7.28125 140.531 7 140.188 7H137.188C136.844 7 136.562 7.28125 136.562 7.625V27.5C136.562 30.4375 138.125 32 141.062 32H144.562ZM164.656 31.5C164.656 31.8125 164.531 32 164.156 32H152.656C152.375 32 152.188 31.8125 152.188 31.5V7.5C152.188 7.1875 152.375 7 152.656 7H164.156C164.531 7 164.656 7.1875 164.656 7.5V10.625C164.656 10.9375 164.531 11.1562 164.156 11.1562H156.344V17.4062H162.312C162.625 17.4062 162.812 17.5938 162.812 17.9375V21.0312C162.812 21.375 162.625 21.5625 162.312 21.5625H156.344V27.875H164.156C164.531 27.875 164.656 28.0312 164.656 28.375V31.5Z" fill="var(--primary-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.0938 32C48.4375 32 48.5938 31.8125 48.5938 31.5V23.625H52.3438C55.2812 23.625 56.8438 22.0312 56.8438 19.125V11.5C56.8438 8.5625 55.2812 7 52.3438 7H44.8438C44.5312 7 44.3438 7.1875 44.3438 7.5V31.5C44.3438 31.8125 44.5312 32 44.8438 32H48.0938ZM51.3438 19.5H48.5938V11.125H51.3438C52.1875 11.125 52.5938 11.5625 52.5938 12.375V18.25C52.5938 19.0312 52.1875 19.5 51.3438 19.5ZM63.9062 31.5C63.9062 31.8125 63.7188 32 63.4062 32H60.1562C59.8438 32 59.6562 31.8125 59.6562 31.5V7.5C59.6562 7.1875 59.8438 7 60.1562 7H68C70.9375 7 72.5 8.5625 72.5 11.5V19.125C72.5 21.2188 71.7188 22.5938 70.2188 23.25L72.375 31.4375C72.4688 31.8125 72.2812 32 71.9375 32H68.6875C68.375 32 68.2188 31.8438 68.1562 31.5625L66.0625 23.625H63.9062V31.5ZM67 19.5H63.9062V11.125H67C67.8125 11.125 68.25 11.5625 68.25 12.375V18.25C68.25 19.0625 67.8125 19.5 67 19.5ZM79.875 31.5C79.875 31.8125 79.6875 32 79.375 32H76.125C75.7812 32 75.625 31.8125 75.625 31.5V7.5C75.625 7.1875 75.7812 7 76.125 7H79.375C79.6875 7 79.875 7.1875 79.875 7.5V31.5ZM86.5 32C86.9062 32 87.125 31.7812 87.125 31.375V17.3125H87.3438L90.4375 31.4375C90.5312 31.8125 90.75 32 91.125 32H92.6562C93.0312 32 93.25 31.8125 93.3438 31.4375L96.4375 17.3125H96.6562V31.375C96.6562 31.7812 96.875 32 97.2812 32H100.188C100.594 32 100.812 31.7812 100.812 31.375V7.625C100.812 7.21875 100.594 7 100.188 7H96.0625C95.6875 7 95.4688 7.1875 95.375 7.5625L91.9062 23.125L88.4375 7.5625C88.3438 7.1875 88.125 7 87.75 7H83.625C83.2188 7 83 7.21875 83 7.625V31.375C83 31.7812 83.2188 32 83.625 32H86.5ZM116.406 31.5C116.406 31.8125 116.281 32 115.906 32H104.406C104.125 32 103.938 31.8125 103.938 31.5V7.5C103.938 7.1875 104.125 7 104.406 7H115.906C116.281 7 116.406 7.1875 116.406 7.5V10.625C116.406 10.9375 116.281 11.1562 115.906 11.1562H108.094V17.4062H114.062C114.375 17.4062 114.562 17.5938 114.562 17.9375V21.0312C114.562 21.375 114.375 21.5625 114.062 21.5625H108.094V27.875H115.906C116.281 27.875 116.406 28.0312 116.406 28.375V31.5Z" fill="var(--text-color)"/>
<path d="M25.5739 18.0458L22.8661 17.4443L24.9722 20.4519V29.7756L32.193 23.7603V13.5344L28.8835 14.7374L25.5739 18.0458Z" fill="var(--primary-color)"/>
<path d="M8.72522 18.0458L11.433 17.4443L9.32696 20.4519V29.7756L2.10609 23.7603V13.5344L5.41565 14.7374L8.72522 18.0458Z" fill="var(--primary-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2296 21.0534L12.6365 17.4443L14.1409 18.3466H20.1582L21.6626 17.4443L24.0696 21.0534V34.5878L22.2643 37.2947L20.1582 39.4H14.1409L12.0348 37.2947L10.2296 34.5878V21.0534Z" fill="var(--primary-color)"/>
<path d="M24.9722 35.4901L28.8835 31.5802V27.6702L24.9722 30.9786V35.4901Z" fill="var(--primary-color)"/>
<path d="M9.32697 35.4901L5.41566 31.5802V27.6702L9.32697 30.9786V35.4901Z" fill="var(--primary-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.0609 0H20.1583V5.7988L21.8141 1.78842L21.0609 0ZM19.5762 7.20849L18.9548 7.51908V0H17.7513V11.6281L19.5762 7.20849ZM17.7513 14.2483L22.3605 3.08549L23.4678 5.7145L19.8574 17.1435H17.7513V14.2483ZM16.5478 11.6718V0H15.3443V7.51908L14.8434 7.26869L16.5478 11.6718ZM14.1409 5.45385V0H13.2383L12.6085 1.49519L14.1409 5.45385ZM12.0497 2.82181L16.5478 14.4419V17.1435H14.7426L10.8313 5.7145L12.0497 2.82181Z" fill="var(--text-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.80522 12.3313L14.7426 17.1435H15.0435L11.1322 5.71452L0 4.81223L1.80522 12.3313ZM32.7948 12.3313L19.8574 17.1435H19.5565L23.167 5.71452L34.6 4.81223L32.7948 12.3313Z" fill="var(--primary-color)"/>
<path d="M24.0696 4.81221L30.3878 4.21069L26.1757 0H21.9635L24.0696 4.81221Z" fill="var(--text-color)"/>
<path d="M10.2295 4.81221L3.91129 4.21069L8.12346 0H12.3356L10.2295 4.81221Z" fill="var(--text-color)"/>
<path d="M4.70001 5.20001L11.2 5.70001L15.1 17.15H14.7L10.5 15.6L4.70001 5.20001Z" fill="var(--text-color)"/>
<path d="M29.8 5.20001L23.1 5.70001L19.4 17.15L19.9 17.14L23.8 15.7L29.8 5.20001Z" fill="var(--text-color)"/>
<path d="M12.1 18.2L12.6 17.4L14.3 18.2H20.3L21.6 17.4L22.2 18.2L17.15 26.8L12.1 18.2Z" fill="var(--text-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0297 0L17.1214 13.1536L22.5526 0H12.0297Z" fill="var(--primary-color)"/>
</svg>
</PrimeVueNuxtLink>
<PrimeVueNuxtLink to="/" class="layout-topbar-icon" aria-label="PrimeVue logo">
<svg width="35" height="40" viewBox="0 0 35 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25.87 18.05L23.16 17.45L25.27 20.46V29.78L32.49 23.76V13.53L29.18 14.73L25.87 18.04V18.05ZM25.27 35.49L29.18 31.58V27.67L25.27 30.98V35.49ZM20.16 17.14H20.03H20.17H20.16ZM30.1 5.19L34.89 4.81L33.08 12.33L24.1 15.67L30.08 5.2L30.1 5.19ZM5.72 14.74L2.41 13.54V23.77L9.63 29.79V20.47L11.74 17.46L9.03 18.06L5.72 14.75V14.74ZM9.63 30.98L5.72 27.67V31.58L9.63 35.49V30.98ZM4.8 5.2L10.78 15.67L1.81 12.33L0 4.81L4.79 5.19L4.8 5.2ZM24.37 21.05V34.59L22.56 37.29L20.46 39.4H14.44L12.34 37.29L10.53 34.59V21.05L12.42 18.23L17.45 26.8L22.48 18.23L24.37 21.05ZM22.85 0L22.57 0.69L17.45 13.08L12.33 0.69L12.05 0H22.85Z" fill="var(--primary-color)"/>
<path d="M30.69 4.21L24.37 4.81L22.57 0.69L22.86 0H26.48L30.69 4.21ZM23.75 5.67L22.66 3.08L18.05 14.24V17.14H19.7H20.03H20.16H20.2L24.1 15.7L30.11 5.19L23.75 5.67ZM4.21002 4.21L10.53 4.81L12.33 0.69L12.05 0H8.43002L4.22002 4.21H4.21002ZM21.9 17.4L20.6 18.2H14.3L13 17.4L12.4 18.2L12.42 18.23L17.45 26.8L22.48 18.23L22.5 18.2L21.9 17.4ZM4.79002 5.19L10.8 15.7L14.7 17.14H14.74H15.2H16.85V14.24L12.24 3.09L11.15 5.68L4.79002 5.2V5.19Z" fill="var(--text-color)"/>
</svg>
</PrimeVueNuxtLink>
<div class="layout-topbar-inner">
<div class="layout-topbar-logo-container">
<PrimeVueNuxtLink to="/" class="layout-topbar-logo" aria-label="PrimeVue logo">
<svg width="165" height="40" viewBox="0 0 165 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M128.062 32C128.438 32 128.656 31.8125 128.75 31.4375L134.031 7.6875C134.125 7.25 133.938 7 133.469 7H130.5C130.125 7 129.906 7.1875 129.812 7.5625L126.5 24.3125L123.219 7.5625C123.125 7.1875 122.906 7 122.531 7H119.562C119.094 7 118.906 7.25 119 7.6875L124.25 31.4375C124.344 31.8125 124.562 32 124.938 32H128.062ZM144.562 32C147.5 32 149.062 30.4375 149.062 27.5V7.625C149.062 7.28125 148.781 7 148.438 7H145.562C145.219 7 144.938 7.28125 144.938 7.625V26.625C144.938 27.4688 144.5 27.875 143.688 27.875H142.062C141.25 27.875 140.812 27.4688 140.812 26.625V7.625C140.812 7.28125 140.531 7 140.188 7H137.188C136.844 7 136.562 7.28125 136.562 7.625V27.5C136.562 30.4375 138.125 32 141.062 32H144.562ZM164.656 31.5C164.656 31.8125 164.531 32 164.156 32H152.656C152.375 32 152.188 31.8125 152.188 31.5V7.5C152.188 7.1875 152.375 7 152.656 7H164.156C164.531 7 164.656 7.1875 164.656 7.5V10.625C164.656 10.9375 164.531 11.1562 164.156 11.1562H156.344V17.4062H162.312C162.625 17.4062 162.812 17.5938 162.812 17.9375V21.0312C162.812 21.375 162.625 21.5625 162.312 21.5625H156.344V27.875H164.156C164.531 27.875 164.656 28.0312 164.656 28.375V31.5Z" fill="var(--primary-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.0938 32C48.4375 32 48.5938 31.8125 48.5938 31.5V23.625H52.3438C55.2812 23.625 56.8438 22.0312 56.8438 19.125V11.5C56.8438 8.5625 55.2812 7 52.3438 7H44.8438C44.5312 7 44.3438 7.1875 44.3438 7.5V31.5C44.3438 31.8125 44.5312 32 44.8438 32H48.0938ZM51.3438 19.5H48.5938V11.125H51.3438C52.1875 11.125 52.5938 11.5625 52.5938 12.375V18.25C52.5938 19.0312 52.1875 19.5 51.3438 19.5ZM63.9062 31.5C63.9062 31.8125 63.7188 32 63.4062 32H60.1562C59.8438 32 59.6562 31.8125 59.6562 31.5V7.5C59.6562 7.1875 59.8438 7 60.1562 7H68C70.9375 7 72.5 8.5625 72.5 11.5V19.125C72.5 21.2188 71.7188 22.5938 70.2188 23.25L72.375 31.4375C72.4688 31.8125 72.2812 32 71.9375 32H68.6875C68.375 32 68.2188 31.8438 68.1562 31.5625L66.0625 23.625H63.9062V31.5ZM67 19.5H63.9062V11.125H67C67.8125 11.125 68.25 11.5625 68.25 12.375V18.25C68.25 19.0625 67.8125 19.5 67 19.5ZM79.875 31.5C79.875 31.8125 79.6875 32 79.375 32H76.125C75.7812 32 75.625 31.8125 75.625 31.5V7.5C75.625 7.1875 75.7812 7 76.125 7H79.375C79.6875 7 79.875 7.1875 79.875 7.5V31.5ZM86.5 32C86.9062 32 87.125 31.7812 87.125 31.375V17.3125H87.3438L90.4375 31.4375C90.5312 31.8125 90.75 32 91.125 32H92.6562C93.0312 32 93.25 31.8125 93.3438 31.4375L96.4375 17.3125H96.6562V31.375C96.6562 31.7812 96.875 32 97.2812 32H100.188C100.594 32 100.812 31.7812 100.812 31.375V7.625C100.812 7.21875 100.594 7 100.188 7H96.0625C95.6875 7 95.4688 7.1875 95.375 7.5625L91.9062 23.125L88.4375 7.5625C88.3438 7.1875 88.125 7 87.75 7H83.625C83.2188 7 83 7.21875 83 7.625V31.375C83 31.7812 83.2188 32 83.625 32H86.5ZM116.406 31.5C116.406 31.8125 116.281 32 115.906 32H104.406C104.125 32 103.938 31.8125 103.938 31.5V7.5C103.938 7.1875 104.125 7 104.406 7H115.906C116.281 7 116.406 7.1875 116.406 7.5V10.625C116.406 10.9375 116.281 11.1562 115.906 11.1562H108.094V17.4062H114.062C114.375 17.4062 114.562 17.5938 114.562 17.9375V21.0312C114.562 21.375 114.375 21.5625 114.062 21.5625H108.094V27.875H115.906C116.281 27.875 116.406 28.0312 116.406 28.375V31.5Z" fill="var(--text-color)"/>
<path d="M25.5739 18.0458L22.8661 17.4443L24.9722 20.4519V29.7756L32.193 23.7603V13.5344L28.8835 14.7374L25.5739 18.0458Z" fill="var(--primary-color)"/>
<path d="M8.72522 18.0458L11.433 17.4443L9.32696 20.4519V29.7756L2.10609 23.7603V13.5344L5.41565 14.7374L8.72522 18.0458Z" fill="var(--primary-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2296 21.0534L12.6365 17.4443L14.1409 18.3466H20.1582L21.6626 17.4443L24.0696 21.0534V34.5878L22.2643 37.2947L20.1582 39.4H14.1409L12.0348 37.2947L10.2296 34.5878V21.0534Z" fill="var(--primary-color)"/>
<path d="M24.9722 35.4901L28.8835 31.5802V27.6702L24.9722 30.9786V35.4901Z" fill="var(--primary-color)"/>
<path d="M9.32697 35.4901L5.41566 31.5802V27.6702L9.32697 30.9786V35.4901Z" fill="var(--primary-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.0609 0H20.1583V5.7988L21.8141 1.78842L21.0609 0ZM19.5762 7.20849L18.9548 7.51908V0H17.7513V11.6281L19.5762 7.20849ZM17.7513 14.2483L22.3605 3.08549L23.4678 5.7145L19.8574 17.1435H17.7513V14.2483ZM16.5478 11.6718V0H15.3443V7.51908L14.8434 7.26869L16.5478 11.6718ZM14.1409 5.45385V0H13.2383L12.6085 1.49519L14.1409 5.45385ZM12.0497 2.82181L16.5478 14.4419V17.1435H14.7426L10.8313 5.7145L12.0497 2.82181Z" fill="var(--text-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.80522 12.3313L14.7426 17.1435H15.0435L11.1322 5.71452L0 4.81223L1.80522 12.3313ZM32.7948 12.3313L19.8574 17.1435H19.5565L23.167 5.71452L34.6 4.81223L32.7948 12.3313Z" fill="var(--primary-color)"/>
<path d="M24.0696 4.81221L30.3878 4.21069L26.1757 0H21.9635L24.0696 4.81221Z" fill="var(--text-color)"/>
<path d="M10.2295 4.81221L3.91129 4.21069L8.12346 0H12.3356L10.2295 4.81221Z" fill="var(--text-color)"/>
<path d="M4.70001 5.20001L11.2 5.70001L15.1 17.15H14.7L10.5 15.6L4.70001 5.20001Z" fill="var(--text-color)"/>
<path d="M29.8 5.20001L23.1 5.70001L19.4 17.15L19.9 17.14L23.8 15.7L29.8 5.20001Z" fill="var(--text-color)"/>
<path d="M12.1 18.2L12.6 17.4L14.3 18.2H20.3L21.6 17.4L22.2 18.2L17.15 26.8L12.1 18.2Z" fill="var(--text-color)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0297 0L17.1214 13.1536L22.5526 0H12.0297Z" fill="var(--primary-color)"/>
</svg>
</PrimeVueNuxtLink>
<PrimeVueNuxtLink to="/" class="layout-topbar-icon" aria-label="PrimeVue logo">
<svg width="35" height="40" viewBox="0 0 35 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25.87 18.05L23.16 17.45L25.27 20.46V29.78L32.49 23.76V13.53L29.18 14.73L25.87 18.04V18.05ZM25.27 35.49L29.18 31.58V27.67L25.27 30.98V35.49ZM20.16 17.14H20.03H20.17H20.16ZM30.1 5.19L34.89 4.81L33.08 12.33L24.1 15.67L30.08 5.2L30.1 5.19ZM5.72 14.74L2.41 13.54V23.77L9.63 29.79V20.47L11.74 17.46L9.03 18.06L5.72 14.75V14.74ZM9.63 30.98L5.72 27.67V31.58L9.63 35.49V30.98ZM4.8 5.2L10.78 15.67L1.81 12.33L0 4.81L4.79 5.19L4.8 5.2ZM24.37 21.05V34.59L22.56 37.29L20.46 39.4H14.44L12.34 37.29L10.53 34.59V21.05L12.42 18.23L17.45 26.8L22.48 18.23L24.37 21.05ZM22.85 0L22.57 0.69L17.45 13.08L12.33 0.69L12.05 0H22.85Z" fill="var(--primary-color)"/>
<path d="M30.69 4.21L24.37 4.81L22.57 0.69L22.86 0H26.48L30.69 4.21ZM23.75 5.67L22.66 3.08L18.05 14.24V17.14H19.7H20.03H20.16H20.2L24.1 15.7L30.11 5.19L23.75 5.67ZM4.21002 4.21L10.53 4.81L12.33 0.69L12.05 0H8.43002L4.22002 4.21H4.21002ZM21.9 17.4L20.6 18.2H14.3L13 17.4L12.4 18.2L12.42 18.23L17.45 26.8L22.48 18.23L22.5 18.2L21.9 17.4ZM4.79002 5.19L10.8 15.7L14.7 17.14H14.74H15.2H16.85V14.24L12.24 3.09L11.15 5.68L4.79002 5.2V5.19Z" fill="var(--text-color)"/>
</svg>
</PrimeVueNuxtLink>
</div>
<div id="docsearch"></div>
<ul class="flex list-none m-0 p-0 gap-2 align-items-center">
<li>
<a
href="https://github.com/primefaces/primevue"
target="_blank"
rel="noopener noreferrer"
class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary"
>
<i class="pi pi-github text-700"></i>
</a>
</li>
<li>
<a
href="https://discord.gg/gzKFYnpmCY"
target="_blank"
rel="noopener noreferrer"
class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary"
>
<i class="pi pi-discord text-700"></i>
</a>
</li>
<li>
<a
href="https://github.com/orgs/primefaces/discussions"
target="_blank"
rel="noopener noreferrer"
class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary"
>
<i class="pi pi-comments text-700"></i>
</a>
</li>
<li>
<button type="button" class="p-button flex-shrink-0 flex border-1 w-2rem h-2rem p-0 align-items-center justify-content-center transition-all transition-duration-300 min-w-0" @click="onConfigButtonClick">
<i class="pi pi-palette"></i>
</button>
</li>
<li class="relative">
<button
v-styleclass="{ selector: '@next', enterClass: 'hidden', enterActiveClass: 'scalein', leaveToClass: 'hidden', leaveActiveClass: 'fadeout', hideOnOutsideClick: true }"
type="button"
class="px-link flex align-items-center surface-card h-2rem px-3 border-1 border-solid surface-border transition-all transition-duration-300 hover:border-primary"
>
<span class="text-900"> {{ versions[0].version }}</span>
<span class="ml-2 pi pi-angle-down text-600"></span>
</button>
<div class="p-3 surface-overlay hidden absolute right-0 top-auto border-round shadow-2 origin-top w-12rem">
<ul class="list-none m-0 p-0">
<li v-for="version in versions" :key="version.version" role="none">
<a :href="version.url" class="block p-2 border-round hover:surface-hover w-full">
<span class="font-bold text-900">{{ version.name }}</span>
<span class="ml-2 text-700">{{ version.version }}</span>
</a>
</li>
</ul>
</div>
</li>
<li class="menu-button">
<button type="button" class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary menu-button" @click="onMenuButtonClick" aria-haspopup aria-label="Menu">
<i class="pi pi-bars"></i>
</button>
</li>
</ul>
</div>
<div id="docsearch"></div>
<ul class="flex list-none m-0 p-0 gap-2 align-items-center">
<li>
<a
href="https://github.com/primefaces/primevue"
target="_blank"
rel="noopener noreferrer"
class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary"
>
<i class="pi pi-github text-700"></i>
</a>
</li>
<li>
<a
href="https://discord.gg/gzKFYnpmCY"
target="_blank"
rel="noopener noreferrer"
class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary"
>
<i class="pi pi-discord text-700"></i>
</a>
</li>
<li>
<a
href="https://github.com/orgs/primefaces/discussions"
target="_blank"
rel="noopener noreferrer"
class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary"
>
<i class="pi pi-comments text-700"></i>
</a>
</li>
<li>
<button type="button" class="p-button flex-shrink-0 flex border-1 w-2rem h-2rem p-0 align-items-center justify-content-center transition-all transition-duration-300 min-w-0" @click="onConfigButtonClick">
<i class="pi pi-palette"></i>
</button>
</li>
<li class="relative">
<button
v-styleclass="{ selector: '@next', enterClass: 'hidden', enterActiveClass: 'scalein', leaveToClass: 'hidden', leaveActiveClass: 'fadeout', hideOnOutsideClick: true }"
type="button"
class="px-link flex align-items-center surface-card h-2rem px-3 border-1 border-solid surface-border transition-all transition-duration-300 hover:border-primary"
>
<span class="text-900"> {{ versions[0].version }}</span>
<span class="ml-2 pi pi-angle-down text-600"></span>
</button>
<div class="p-3 surface-overlay hidden absolute right-0 top-auto border-round shadow-2 origin-top w-12rem">
<ul class="list-none m-0 p-0">
<li v-for="version in versions" :key="version.version" role="none">
<a :href="version.url" class="block p-2 border-round hover:surface-hover w-full">
<span class="font-bold text-900">{{ version.name }}</span>
<span class="ml-2 text-700">{{ version.version }}</span>
</a>
</li>
</ul>
</div>
</li>
<li class="menu-button">
<button type="button" class="flex flex-shrink-0 px-link border-1 border-solid w-2rem h-2rem surface-border border-round surface-card align-items-center justify-content-center transition-all transition-duration-300 hover:border-primary menu-button" @click="onMenuButtonClick" aria-haspopup aria-label="Menu">
<i class="pi pi-bars"></i>
</button>
</li>
</ul>
</div>
</template>

View File

@ -1,8 +1,8 @@
<template>
<div class="layout-wrapper" :class="containerClass">
<app-news v-if="$appState.newsActive" />
<app-topbar @menubutton-click="onMenuButtonClick" @configbutton-click="onConfigButtonClick" />
<app-configurator :configActive="appConfigActive" @updateConfigActive="onUpdateConfigActive" />
<AppNews v-if="$appState.newsActive" />
<AppTopBar @menubutton-click="onMenuButtonClick" @configbutton-click="onConfigButtonClick" />
<AppConfigurator :configActive="appConfigActive" @updateConfigActive="onUpdateConfigActive" />
<div :class="['layout-mask', { 'layout-mask-active': sidebarActive }]" @click="onMaskClick"></div>
<div class="layout-content">
<app-menu :active="sidebarActive" />
@ -10,7 +10,7 @@
<slot></slot>
</div>
</div>
<app-footer />
<AppFooter />
<Toast />
<Toast position="top-left" group="tl" />
<Toast position="bottom-left" group="bl" />
@ -105,18 +105,18 @@ export default {
'layout-news-active': this.$appState.newsActive,
'p-input-filled': this.$primevue.config.inputStyle === 'filled',
'p-ripple-disabled': this.$primevue.config.ripple === false,
'layout-wrapper-dark': this.$appState.darkTheme,
'layout-wrapper-light': !this.$appState.darkTheme
'layout-dark': this.$appState.darkTheme,
'layout-light': !this.$appState.darkTheme
}
];
}
},
components: {
'app-topbar': AppTopBar,
'app-menu': AppMenu,
'app-footer': AppFooter,
'app-configurator': AppConfigurator,
'app-news': AppNews
AppTopBar,
AppMenu,
AppFooter,
AppConfigurator,
AppNews
}
};
</script>

View File

@ -1,8 +1,9 @@
<template>
<div :class="landingClass">
<Intro @change:theme="onThemeToggle"></Intro>
<AppNews v-if="$appState.newsActive" />
<AppTopBar />
<HeroSection />
<UsersSection />
<ComponentSection />
<ThemeSection :theme="tableTheme" @table-theme-change="onTableThemeChange" />
<BlockSection />
<DesignerSection />
@ -14,12 +15,14 @@
<script>
definePageMeta({
layout: "custom",
layout: "custom",
});
import EventBus from '@/layouts/AppEventBus';
import AppNews from '@/layouts/AppNews';
import HeroSection from './landing/HeroSection';
import AppTopBar from '@/layouts/AppTopBar.vue';
import BlockSection from './landing/BlockSection';
import ComponentSection from './landing/ComponentSection';
import DesignerSection from './landing/DesignerSection';
import FeaturesSection from './landing/FeaturesSection';
import FooterSection from './landing/FooterSection';
@ -27,9 +30,6 @@ import TemplateSection from './landing/TemplateSection';
import ThemeSection from './landing/ThemeSection';
import UsersSection from './landing/UsersSection';
const Intro = defineAsyncComponent(() => import('./landing/Intro.vue'));
export default {
props: {
theme: {
@ -92,12 +92,13 @@ export default {
},
computed: {
landingClass() {
return ['landing', { 'landing-dark': this.$appState?.darkTheme, 'landing-light': !this.$appState?.darkTheme, 'landing-news-active': this.$appState?.newsActive }];
return ['landing', { 'layout-dark': this.$appState?.darkTheme, 'layout-light': !this.$appState?.darkTheme, 'landing-news-active': this.$appState?.newsActive }];
}
},
components: {
Intro,
ComponentSection,
AppNews,
AppTopBar,
HeroSection,
ThemeSection,
BlockSection,
DesignerSection,

View File

@ -1,243 +0,0 @@
<template>
<section class="landing-components py-8">
<div class="section-header">Components</div>
<p class="section-detail"><span class="font-bold text-900">Over 90</span> Vue UI Components with top-notch quality to help you implement all your UI requirements in style.</p>
<div class="components-main relative">
<div class="components-main-container flex flex-column xl:flex-row mt-7 gap-5 justify-content-center mx-auto w-full xl:w-auto px-5 lg:px-8">
<div class="flex flex-column md:flex-row gap-5 w-full xl:w-auto">
<div class="flex flex-column w-full gap-5 xl:mt-8 z-1 lg:w-28rem md:w-30rem">
<div class="box p-4">
<span class="text-secondary font-medium block mb-3">Balance</span>
<div class="flex flex-wrap lg:flex-nowrap justify-content-start gap-3">
<InputNumber v-model="value1" mode="currency" currency="USD" locale="en-US" class="w-full" inputClass="lg:w-6" />
<InputNumber v-model="value2" mode="currency" currency="USD" locale="en-US" class="w-full" inputClass="lg:w-6" />
</div>
<span class="text-secondary font-medium block mt-5 mb-3">Category</span>
<div class="flex justify-content-between flex-wrap gap-3">
<div class="flex align-items-center">
<RadioButton id="category1" v-model="radioValue" value="C" name="radiovalue" @change="setCategory('C')" />
<label for="category1" class="ml-2 font-medium">Clothing</label>
</div>
<div class="flex align-items-center">
<RadioButton id="category2" v-model="radioValue" value="F" name="radiovalue" @change="setCategory('F')" />
<label for="category2" class="ml-2 font-medium">Fitness</label>
</div>
<div class="flex align-items-center">
<RadioButton id="category3" v-model="radioValue" value="E" name="radiovalue" @change="setCategory('E')" />
<label for="category3" class="ml-2 font-medium">Electronics</label>
</div>
</div>
</div>
<div class="box p-4">
<Chart type="line" :data="chartData" :options="chartOptions" />
</div>
<div class="box p-4">
<TabMenu v-model:activeIndex="activeTabIndex" :model="items" />
</div>
<div class="box p-4">
<ul class="list-none p-0 m-0">
<li class="flex align-items-center mb-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar-1.svg" alt="avatar 1" class="w-2rem h-2rem mr-3" />
<span class="font-medium">Darrel Steward</span>
<ProgressBar :value="pbValue1" :showValue="false" class="w-10rem ml-auto mr-3" style="height: 0.5rem" />
<span class="text-secondary font-medium">15%</span>
</li>
<li class="flex align-items-center mb-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar-2.svg" alt="avatar 2" class="w-2rem h-2rem mr-3" />
<span class="font-medium">Albert Flores</span>
<ProgressBar :value="pbValue3" :showValue="false" class="w-10rem ml-auto mr-3" style="height: 0.5rem" />
<span class="text-secondary font-medium">85%</span>
</li>
<li class="flex align-items-center mb-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar-3.svg" alt="avatar 3" class="w-2rem h-2rem mr-3" />
<span class="font-medium">Kathryn Murphy</span>
<ProgressBar :value="pbValue3" :showValue="false" class="w-10rem ml-auto mr-3" style="height: 0.5rem" />
<span class="text-secondary font-medium">50%</span>
</li>
<li class="flex align-items-center mb-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar-4.svg" alt="avatar 4" class="w-2rem h-2rem mr-3" />
<span class="font-medium">Cody Fisher</span>
<ProgressBar :value="pbValue4" :showValue="false" class="w-10rem ml-auto mr-3" style="height: 0.5rem" />
<span class="text-secondary font-medium">75%</span>
</li>
<li class="flex align-items-center mb-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar-5.svg" alt="avatar 5" class="w-2rem h-2rem mr-3" />
<span class="font-medium">Brandon Atkinson</span>
<ProgressBar :value="pbValue5" :showValue="false" class="w-10rem ml-auto mr-3" style="height: 0.5rem" />
<span class="text-secondary font-medium">60%</span>
</li>
</ul>
</div>
</div>
<div class="flex flex-column w-full gap-5 justify-content-start xl:w-24rem z-1">
<div class="box p-4">
<div class="surface-card mb-4 w-full text-center p-5" style="border-radius: '10px'">
<img src="https://primefaces.org/cdn/primevue/images/landing/brown-watch.png" alt="Watch" class="w-14rem" />
</div>
<div class="flex align-items-center mb-4">
<div class="flex flex-column">
<span class="block font-semibold mb-1">Brown Watch</span>
<span class="text-secondary text-sm">Premium Quality</span>
</div>
<span class="font-medium text-xl ml-auto">$12.45</span>
</div>
<Button label="Add to Cart" icon="pi pi-shopping-cart" outlined class="w-full"></Button>
</div>
<div class="box p-4">
<Tree :value="nodes" class="bg-transparent border-none p-0" />
</div>
<div class="box p-4">
<div class="flex align-items-center">
<Chip label="Vue" class="mr-2 font-medium" removable />
<span class="font-medium">Typescript</span>
<InputSwitch v-model="switchValue" class="ml-auto"></InputSwitch>
</div>
<div class="mt-5">
<SelectButton v-model="selectButtonValue" :options="selectButtonOptions" optionLabel="name" />
</div>
</div>
<div class="box p-4 block xl:hidden">
<div class="flex justify-content-center">
<Slider v-model="rangeValues" range class="w-full" />
</div>
</div>
</div>
</div>
<div class="flex flex-column gap-5 flex-column md:flex-row xl:flex-column justify-content-between xl:justify-content-start z-1 w-full md:w-auto">
<div class="flex flex-column gap-5 xl:mt-5 w-full">
<div class="box p-4 hidden xl:block">
<div class="flex justify-content-center w-full">
<Slider v-model="rangeValues" range class="w-full" />
</div>
</div>
<div class="box p-4 w-full">
<ul class="list-none p-0 m-0">
<li class="flex mb-3">
<span class="mr-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar.png" alt="Avatar" class="w-3rem h-3rem" />
</span>
<div class="flex flex-column">
<span class="font-bold mb-2">Amanda Williams</span>
<p class="m-0 text-secondary">Webmaster</p>
</div>
</li>
<li class="flex">
<a class="flex align-items-center p-3 w-full hover:surface-hover transition-colors transition-duration-150 cursor-pointer" style="border-radius: '10px'">
<i class="pi pi-home text-xl mr-3"></i>
<span class="flex flex-column">
<span class="font-bold mb-1">Dashboard</span>
<span class="m-0 text-secondary">Control Panel</span>
</span>
</a>
</li>
<li class="flex">
<a class="flex align-items-center p-3 w-full hover:surface-hover transition-colors transition-duration-150 cursor-pointer" style="border-radius: '10px'">
<i class="pi pi-envelope text-xl mr-3"></i>
<span class="flex flex-column">
<span class="font-bold mb-1">Inbox</span>
<span class="m-0 text-secondary">View Messages</span>
</span>
<Badge value="3" class="ml-auto"></Badge>
</a>
</li>
<li class="flex">
<a class="flex align-items-center p-3 w-full hover:surface-hover transition-colors transition-duration-150 cursor-pointer" style="border-radius: '10px'">
<i class="pi pi-cog text-xl mr-3"></i>
<span class="flex flex-column">
<span class="font-bold mb-1">Profile</span>
<span class="m-0 text-secondary">Account Settings</span>
</span>
</a>
</li>
</ul>
</div>
</div>
<div class="box p-4 md:w-6 xl:w-full">
<Calendar v-model="dateValue" :inline="true" :showWeek="true" class="w-full" />
</div>
</div>
</div>
<div class="components-strip-top absolute w-full md:w-6 h-8rem top-0 left-0"></div>
<div class="components-strip-bottom absolute w-full md:w-6 h-8rem bottom-0 right-0"></div>
</div>
</section>
</template>
<script>
import { NodeService } from '@/service/NodeService';
export default {
data() {
return {
value1: 240,
value2: 356,
category: 'C',
chartData: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Income',
data: [40, 59, 40, 50, 56, 40, 70],
fill: true,
borderColor: '#03C4E8',
tension: 0.4,
backgroundColor: 'rgba(3, 196, 232, .2)'
}
]
},
chartOptions: {
plugins: {
legend: {
display: false
}
},
scales: {
y: {
ticks: {
display: false
},
min: 0,
max: 100
},
x: {
ticks: {
display: false
}
}
}
},
pbValue1: 15,
pbValue2: 85,
pbValue3: 50,
pbValue4: 75,
pbValue5: 60,
activeTabIndex: 0,
radioValue: 'C',
nodes: null,
switchValue: true,
selectButtonValue: { name: 'Prime', value: 1 },
dateValue: null,
rangeValues: [20, 80],
items: [
{ label: 'Home', icon: 'pi pi-fw pi-home' },
{ label: 'Calendar', icon: 'pi pi-fw pi-calendar' },
{ label: 'Settings', icon: 'pi pi-fw pi-cog' }
],
selectButtonOptions: [
{ name: 'Prime', value: 1 },
{ name: 'Vue', value: 2 },
{ name: 'Themes', value: 3 }
]
};
},
mounted() {
NodeService.getTreeNodes().then((data) => (this.nodes = data));
},
methods: {
setCategory(category) {
this.category = category;
}
}
};
</script>

View File

@ -1,118 +0,0 @@
<template>
<section :ref="containerRef" :class="['landing-header px-5 lg:px-8', { 'landing-header-active': menuActive }]">
<div class="landing-header-container">
<span>
<img :src="'https://primefaces.org/cdn/primevue/images/primevue-logo-' + `${$appState.darkTheme ? 'light' : 'dark'}` + '.svg'" alt="primevue logo" class="landing-header-logo" />
</span>
<div class="flex align-items-center">
<nav class="scalein origin-top">
<ol class="list-none m-0 p-0 flex flex-column lg:flex-row flex-wrap lg:flex-nowrap lg:align-items-center font-semibold">
<li class="mr-0 lg:mr-2">
<router-link to="/installation">
<img src="https://primefaces.org/cdn/primevue/images/landing/core-icon.svg" alt="primevue core" />
<span>Components</span>
</router-link>
</li>
<li class="mr-0 lg:mr-2">
<a href="https://blocks.primevue.org">
<img src="https://primefaces.org/cdn/primevue/images/landing/blocks-icon.svg" alt="primevue blocks" />
<span>Blocks</span>
</a>
</li>
<li class="mr-0 lg:mr-2">
<a href="https://designer.primevue.org">
<img src="https://primefaces.org/cdn/primevue/images/landing/designer-icon.svg" alt="primevue designer" />
<span>Designer</span>
</a>
</li>
<li class="mr-0 lg:mr-2">
<router-link to="/uikit">
<img src="https://primefaces.org/cdn/primevue/images/landing/uikit-icon.svg" alt="primevue designer" width="30" />
<span>UI Kit</span>
</router-link>
</li>
<li class="mr-0 lg:mr-2">
<a href="https://www.primefaces.org/store/templates.xhtml">
<img src="https://primefaces.org/cdn/primevue/images/landing/templates-icon.svg" alt="primevue templates" />
<span>Templates</span>
</a>
</li>
</ol>
</nav>
<a href="https://github.com/primefaces/primevue" target="_blank" rel="noopener noreferrer" class="linkbox p-0 header-button mr-1 md:mr-2 flex align-items-center justify-content-center flex-shrink-0">
<i class="pi pi-github"></i>
</a>
<a href="https://discord.gg/gzKFYnpmCY" target="_blank" rel="noopener noreferrer" class="linkbox p-0 header-button mr-1 md:mr-2 flex align-items-center justify-content-center flex-shrink-0">
<i class="pi pi-discord"></i>
</a>
<a href="https://github.com/orgs/primefaces/discussions" target="_blank" rel="noopener noreferrer" class="linkbox p-0 header-button mr-1 md:mr-2 flex align-items-center justify-content-center flex-shrink-0">
<i class="pi pi-comments"></i>
</a>
<button type="button" class="linkbox header-button inline-flex align-items-center justify-content-center" @click="toggleTheme">
<i :class="['pi', { 'pi-sun': isDarkTheme(), 'pi-moon': !isDarkTheme() }]"></i>
</button>
<button type="button" class="linkbox header-button inline-flex align-items-center justify-content-center lg:hidden ml-1 md:ml-2 menu-button" @click="toggleMenuActive">
<i class="pi pi-bars"></i>
</button>
</div>
</div>
</section>
</template>
<script>
export default {
emits: ['theme-toggle'],
data() {
return {
menuActive: false
};
},
scrollListener: null,
container: null,
mounted() {
this.bindScrollListener();
},
beforeUnmount() {
if (this.scrollListener) {
this.unbindScrollListener();
}
},
updated() {
this.checkSticky();
},
methods: {
isDarkTheme() {
return this.$appState.darkTheme === true;
},
toggleTheme() {
this.$emit('theme-toggle');
},
toggleMenuActive() {
this.menuActive = !this.menuActive;
},
bindScrollListener() {
if (!this.scrollListener && this.container) {
this.scrollListener = () => {
this.checkSticky();
};
}
window.addEventListener('scroll', this.scrollListener);
},
unbindScrollListener() {
if (this.scrollListener) {
window.removeEventListener('scroll', this.scrollListener);
this.scrollListener = null;
}
},
containerRef(el) {
this.container = el;
},
checkSticky() {
if (window.scrollY > 0) this.container.classList.add('landing-header-sticky');
else this.container.classList.remove('landing-header-sticky');
}
}
};
</script>

View File

@ -1,111 +1,196 @@
<template>
<section :class="['landing-hero flex align-items-center flex-column justify-content-center relative', { 'hero-animation': setAnimation }]">
<div class="hero-inner z-2 relative">
<div class="flex flex-column md:align-items-center md:flex-row">
<div class="p-2 flex flex-row md:flex-column">
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation flex align-items-center justify-content-center" @click="navigateTo('https://www.primefaces.org/store')">
<div class="flex flex-column align-items-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/templates-icon.svg" alt="primevue templates" />
<div class="name">
<b>Templates</b>
<span>Spectacular Designs</span>
</div>
</div>
</div>
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation ml-4 md:ml-0 md:mt-4 flex align-items-center justify-content-center" @click="navigateTo('https://designer.primevue.org')">
<div class="flex flex-column align-items-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/designer-icon.svg" alt="primevue templates" />
<div class="name">
<b>Theme Designer</b>
<span>Create Your Own</span>
</div>
</div>
</div>
</div>
<div class="p-2 flex flex-row md:flex-column">
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation flex align-items-center justify-content-center" @click="navigateTo('https://github.com/primefaces/primevue')">
<div class="flex flex-column align-items-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/core-icon.svg" alt="primevue core" />
<div class="name">
<b>Open Source</b>
<span>90+ UI Components</span>
</div>
</div>
</div>
<router-link to="/installation">
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation logo hidden md:flex my-4 align-items-center justify-content-center">
<div class="hero-box-inner text-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/overview-icon.svg" alt="primevue main" />
<div class="name">
<b class="font-bold">NEXT-GEN VUE UI</b>
</div>
</div>
</div>
</router-link>
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation flex ml-4 md:ml-0 align-items-center justify-content-center" @click="navigateTo('https://primeflex.org')">
<div class="flex flex-column align-items-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/css-icon.svg" alt="primevue icons" />
<div class="name">
<b>CSS Utilities</b>
<span>PrimeFlex CSS</span>
</div>
</div>
</div>
</div>
<div class="p-2 flex flex-row md:flex-column">
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation flex align-items-center justify-content-center" @click="navigateTo('https://blocks.primevue.org')">
<div class="flex flex-column align-items-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/blocks-icon.svg" alt="primevue templates" />
<div class="name">
<b>Prime Blocks</b>
<span>400+ UI Blocks</span>
</div>
</div>
</div>
<router-link to="/icons">
<div class="hero-box w-10rem h-10rem md:w-12rem md:h-12rem animation flex ml-4 md:ml-0 md:mt-4 align-items-center justify-content-center">
<div class="flex flex-column align-items-center">
<img src="https://primefaces.org/cdn/primevue/images/landing/icons-icon.svg" alt="primevue templates" />
<div class="name">
<b>Icon Library</b>
<span>200+ Icons</span>
</div>
</div>
</div>
</router-link>
<section class="landing-hero py-8 px-5 lg:px-8">
<div class="flex flex-wrap">
<div class="w-full xl:w-6 flex flex-column justify-content-center px-8 align-items-center xl:align-items-stretch">
<h1 class="text-6xl font-bold text-center xl:text-left">The Most Complete UI Suite for <span class="font-bold text-primary">Vue.js</span></h1>
<p class="section-detail xl:text-left text-center px-0 mt-0 mb-5">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
<div>
<PrimeVueNuxtLink to="/installation" class="linkbox active font-semibold py-3 px-4 fadeinleft animation-duration-2000 animation-ease-out"> Get Started <i class="pi pi-arrow-right ml-3"></i> </PrimeVueNuxtLink>
</div>
</div>
<div class="hero-border-top hidden md:block"></div>
<div class="hero-border-left hidden md:block"></div>
<div class="hero-border-right hidden md:block"></div>
</div>
<GetStartedSection />
<div class="hero-bg absolute top-0 left-0 right-0 bottom-0 z-0">
<div class="hero-strip-top"></div>
<div class="hero-strip-left"></div>
</div>
<div class="w-full xl:w-6 pt-7 xl:pt-0 hidden md:block">
<div class="flex">
<div class="flex flex-column w-6 gap-5 pt-8 pr-3">
<div class="box p-4">
<span class="text-secondary font-medium block mb-3">Balance</span>
<div class="flex flex-wrap lg:flex-nowrap justify-content-start gap-3">
<InputNumber v-model="value1" mode="currency" currency="USD" locale="en-US" class="w-full" inputClass="lg:w-6" />
<InputNumber v-model="value2" mode="currency" currency="USD" locale="en-US" class="w-full" inputClass="lg:w-6" />
</div>
<span class="text-secondary font-medium block mt-5 mb-3">Category</span>
<div class="flex justify-content-between flex-wrap gap-3">
<div class="flex align-items-center">
<RadioButton id="category1" v-model="radioValue" value="C" name="radiovalue" @change="setCategory('C')" />
<label for="category1" class="ml-2 font-medium">Clothing</label>
</div>
<div class="flex align-items-center">
<RadioButton id="category2" v-model="radioValue" value="F" name="radiovalue" @change="setCategory('F')" />
<label for="category2" class="ml-2 font-medium">Fitness</label>
</div>
<div class="flex align-items-center">
<RadioButton id="category3" v-model="radioValue" value="E" name="radiovalue" @change="setCategory('E')" />
<label for="category3" class="ml-2 font-medium">Electronics</label>
</div>
</div>
<span class="text-secondary font-medium block mt-5 mb-3">Order Date</span>
<Calendar v-model="dateValue" :showWeek="true" class="w-full" />
</div>
<div class="box p-4">
<Chart type="line" :data="chartData" :options="chartOptions" />
</div>
<div class="box p-4">
<div class="flex align-items-center">
<Chip label="Vue" class="mr-2 font-medium" />
<span class="font-medium">Typescript</span>
<InputSwitch v-model="switchValue" class="ml-auto"></InputSwitch>
</div>
<div class="mt-5 flex justify-content-center">
<SelectButton v-model="selectButtonValue" :options="selectButtonOptions" optionLabel="name" />
</div>
<div class="mt-5">
<Slider v-model="rangeValues" range class="w-full" />
</div>
</div>
</div>
<div class="flex flex-column w-6 gap-5 pl-3">
<div class="box p-4">
<div class="surface-card mb-4 w-full text-center p-5" style="border-radius: '10px'">
<img src="https://primefaces.org/cdn/primevue/images/landing/brown-watch.png" alt="Watch" class="w-14rem" />
</div>
<div class="flex align-items-center mb-4">
<div class="flex flex-column">
<span class="block font-semibold mb-1">Brown Watch</span>
<span class="text-secondary text-sm">Premium Quality</span>
</div>
<span class="font-medium text-xl ml-auto">$12.45</span>
</div>
<Button label="Add to Cart" icon="pi pi-shopping-cart" outlined class="w-full"></Button>
</div>
<div class="box p-4 w-full">
<ul class="list-none p-0 m-0">
<li class="flex mb-3">
<span class="mr-3">
<img src="https://primefaces.org/cdn/primevue/images/landing/avatar.png" alt="Avatar" class="w-3rem h-3rem" />
</span>
<div class="flex flex-column">
<span class="font-bold mb-2">Amanda Williams</span>
<p class="m-0 text-secondary">Webmaster</p>
</div>
</li>
<li class="flex">
<a class="flex align-items-center p-3 w-full hover:surface-hover transition-colors transition-duration-150 cursor-pointer" style="border-radius: '10px'">
<i class="pi pi-home text-xl mr-3"></i>
<span class="flex flex-column">
<span class="font-bold mb-1">Dashboard</span>
<span class="m-0 text-secondary">Control Panel</span>
</span>
</a>
</li>
<li class="flex">
<a class="flex align-items-center p-3 w-full hover:surface-hover transition-colors transition-duration-150 cursor-pointer" style="border-radius: '10px'">
<i class="pi pi-envelope text-xl mr-3"></i>
<span class="flex flex-column">
<span class="font-bold mb-1">Inbox</span>
<span class="m-0 text-secondary">View Messages</span>
</span>
<Badge value="3" class="ml-auto"></Badge>
</a>
</li>
<li class="flex">
<a class="flex align-items-center p-3 w-full hover:surface-hover transition-colors transition-duration-150 cursor-pointer" style="border-radius: '10px'">
<i class="pi pi-cog text-xl mr-3"></i>
<span class="flex flex-column">
<span class="font-bold mb-1">Profile</span>
<span class="m-0 text-secondary">Account Settings</span>
</span>
</a>
</li>
</ul>
</div>
<div class="box p-4">
<TabMenu v-model:activeIndex="activeTabIndex" :model="items" />
</div>
</div>
</div>
</div>
</div>
</section>
</template>
<script>
import GetStartedSection from './GetStartedSection';
import { NodeService } from '@/service/NodeService';
export default {
data() {
return {
setAnimation: false
value1: 240,
value2: 356,
category: 'C',
chartData: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Income',
data: [40, 59, 40, 50, 56, 40, 70],
fill: true,
borderColor: '#03C4E8',
tension: 0.4,
backgroundColor: 'rgba(3, 196, 232, .2)'
}
]
},
chartOptions: {
plugins: {
legend: {
display: false
}
},
scales: {
y: {
ticks: {
display: false
},
min: 0,
max: 100
},
x: {
ticks: {
display: false
}
}
}
},
pbValue1: 15,
pbValue2: 85,
pbValue3: 50,
pbValue4: 75,
pbValue5: 60,
activeTabIndex: 0,
radioValue: 'C',
nodes: null,
switchValue: true,
selectButtonValue: { name: 'Styled', value: 1 },
dateValue: null,
rangeValues: [20, 80],
items: [
{ label: 'Home', icon: 'pi pi-fw pi-home' },
{ label: 'Calendar', icon: 'pi pi-fw pi-calendar' },
{ label: 'Settings', icon: 'pi pi-fw pi-cog' }
],
selectButtonOptions: [
{ name: 'Styled', value: 1 },
{ name: 'Unstyled', value: 2 }
]
};
},
mounted() {
this.setAnimation = true;
NodeService.getTreeNodes().then((data) => (this.nodes = data));
},
methods: {
navigateTo(url) {
window.location.href = url;
setCategory(category) {
this.category = category;
}
},
components: {
GetStartedSection: GetStartedSection
}
};
</script>

View File

@ -1,22 +0,0 @@
<template>
<div class="landing-intro">
<AppNews v-if="$appState.newsActive" />
<HeaderSection @theme-toggle="$emit('change:theme')" />
<HeroSection />
</div>
</template>
<script>
import AppNews from '@/layouts/AppNews';
import HeaderSection from './HeaderSection';
import HeroSection from './HeroSection';
export default {
emits: ['change:theme'],
components: {
HeaderSection,
HeroSection,
AppNews
}
};
</script>