dify/web/app/components/plugins/marketplace/home/home-trending.module.css
Coding On Star cb6c04637b
feat(web): add marketplace creator profiles and homepage redesign (#41538)
Co-authored-by: zxhlyh <jasonapring2015@outlook.com>
Co-authored-by: fatelei <fatelei@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: CodingOnStar <hanxujiang@dify.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: 姜涵煦 <hanxujiang@jianghanxudeMacBook-Pro-2.local>
Co-authored-by: L1nSn0w <l1nsn0w@qq.com>
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com>
2026-09-04 08:09:45 +00:00

316 lines
6.6 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.wrapper {
padding-bottom: 30px;
}
.copy {
flex: none;
width: 36.9167%;
height: 200px;
}
.recommendVisual {
flex: 1;
min-width: 0;
container-type: inline-size;
}
.recommendCards {
display: flex;
justify-content: space-between;
gap: 12px;
overflow: hidden;
padding: 42px 36px;
}
.navigation {
top: 208px;
width: 100%;
}
.contentTrack {
transition: transform 400ms ease-out;
}
.card {
flex: 1 1 161px;
width: auto;
min-width: 161px;
max-width: 210px;
box-shadow: 0 8px 7.2px -6px rgb(0 0 0 / 19%);
scroll-snap-align: start;
}
@container (max-width: 751px) {
.recommendCards > .card:nth-child(n + 4) {
display: none;
}
}
@container (max-width: 578px) {
.recommendCards > .card:nth-child(n + 3) {
display: none;
}
}
@container (max-width: 405px) {
.recommendCards {
justify-content: flex-start;
overflow-x: auto;
scroll-snap-type: x proximity;
scrollbar-width: none;
overscroll-behavior-x: contain;
-webkit-overflow-scrolling: touch;
}
.recommendCards::-webkit-scrollbar {
display: none;
}
.recommendCards > .card:nth-child(n) {
display: flex;
flex: 0 0 161px;
}
}
.updatesArt {
/* Keep the 400×200 art at design size on PC so shrinking the frame
clips overflow on the right instead of scaling the bitmap. */
width: 400px;
max-width: 400px;
flex-shrink: 0;
object-position: left;
}
/* Desktop: crop from the right so left-side artwork stays visible when the
6:1 frame is narrower than the image. */
.imageSlide :is(picture, img) {
object-position: left;
}
/* Desktop and mobile: keep the green label on one line. The title wraps. */
.blogTag {
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.blogTitle {
overflow-wrap: break-word;
white-space: normal;
}
.updatesDescription {
display: -webkit-box;
overflow: hidden;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
@media (prefers-reduced-motion: reduce) {
.contentTrack {
transition-duration: 0ms;
}
}
@media (max-width: 879px) {
:global([data-marketplace-standalone]) .section {
padding-right: 20px;
padding-left: 20px;
}
:global([data-marketplace-standalone]) .wrapper {
padding-bottom: 0;
}
:global([data-marketplace-standalone]) .copy {
width: 100%;
height: 160px;
}
:global([data-marketplace-standalone]) .navigation {
position: static;
top: auto;
width: 100%;
}
/* Recommend mobile: 96px app icons (Figma 1026:24938), not desktop cards. */
:global([data-marketplace-standalone]) .recommendBackdrop {
display: none;
}
:global([data-marketplace-standalone]) .recommendCards {
justify-content: center;
gap: 20px;
overflow: hidden;
padding: 36px 12px;
}
:global([data-marketplace-standalone]) .recommendCards > .card {
display: flex;
flex: none;
align-items: center;
justify-content: center;
width: 96px;
min-width: 96px;
max-width: 96px;
height: 96px;
padding: 0;
overflow: visible;
background: transparent;
border-radius: 20px;
box-shadow: none;
}
:global([data-marketplace-standalone]) .recommendCards > .card:nth-child(-n + 3) {
display: flex;
}
:global([data-marketplace-standalone]) .recommendCards > .card:nth-child(n + 4) {
display: none;
}
:global([data-marketplace-standalone]) .cardIcon {
width: 96px;
height: 96px;
border-color: var(--color-effects-icon-border);
border-radius: 20px;
box-shadow:
0 0.5px 5px 0 var(--color-shadow-shadow-4),
0 0.5px 2px -0.5px var(--color-shadow-shadow-4);
backdrop-filter: blur(5px);
}
:global([data-marketplace-standalone]) .cardMeta {
display: none;
}
:global([data-marketplace-standalone]) .copyDescription {
font-size: 15px;
letter-spacing: -0.075px;
}
:global([data-marketplace-standalone]) .updatesArt {
width: 100%;
max-width: none;
height: 197px;
}
:global([data-marketplace-standalone]) .carouselRoot {
display: flex;
flex-direction: column;
gap: 8px;
height: auto;
border-radius: 0;
}
:global([data-marketplace-standalone]) .slideViewport {
height: auto;
touch-action: pan-y pinch-zoom;
}
:global([data-marketplace-standalone]) .contentTrack {
height: auto;
align-items: flex-start;
}
:global([data-marketplace-standalone]) .slide {
height: auto;
}
/* Flex rows size to the tallest item. Collapse hidden slides so image
banners do not inherit the stacked blog/recommend height. */
:global([data-marketplace-standalone]) .slideInactive {
height: 0;
overflow: hidden;
}
:global([data-marketplace-standalone]) .stackedSlide {
display: flex;
flex-direction: column-reverse;
height: auto;
}
:global([data-marketplace-standalone]) .stackedVisual {
flex: none;
width: 100%;
height: 197px;
border-radius: 16px;
}
/* Recommend mobile: already-tinted crop, not the desktop image + mix-blend. */
:global([data-marketplace-standalone]) .recommendVisual {
border-radius: 12px;
background-color: var(--color-text-accent);
background-image: url('./assets/recommend-mobile-backdrop.webp');
background-repeat: no-repeat;
background-position: center;
background-size: cover;
}
:global([data-marketplace-standalone]) .stackedCopy {
flex: none;
height: auto;
min-height: 160px;
padding: 20px;
overflow: hidden;
}
:global([data-marketplace-standalone]) .stackedCopyMeta {
flex: none;
gap: 2px;
}
:global([data-marketplace-standalone]) .blogSubtitle {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:global([data-marketplace-standalone]) .updatesDescription {
flex-shrink: 0;
width: 100%;
min-width: 0;
height: 40px;
}
/* Event/ad mobile: show the 800×721 poster whole (ops banner-meta), not
cover-cropped into the stacked 357px blog/recommend frame. */
:global([data-marketplace-standalone]) .imageSlide {
height: auto;
aspect-ratio: 800 / 721;
}
:global([data-marketplace-standalone]) .imageSlide :is(picture, img) {
width: 100%;
height: 100%;
object-fit: contain;
object-position: left;
}
:global([data-marketplace-standalone]) .readMoreDesktop {
display: none;
}
}
@media (min-width: 880px) {
/* Event/ad: keep the 6:1 bitmap at least 1200px wide so a narrower
overflow-hidden frame clips the right, not the left. */
.imageSlide img {
min-width: 1200px;
max-width: none;
}
}
@media (min-width: 1232px) {
.marketplaceCopy {
width: 443px;
}
}
@media (min-width: 1260px) {
.embeddedCopy {
width: 431px;
}
}