feat: Добавлены шаблоны дизайна и управление большими группами
Some checks failed
continuous-integration/drone/push Build is failing

- Система готовых шаблонов (8 шт): Minimalist, Dark, Corporate, Creative, Nature, Retro, Neon, Soft
- Компонент ExpandableGroup для автоматического сворачивания больших списков ссылок
- Визуальный селектор шаблонов с превью в CustomizationPanel
- Поддержка во всех макетах (timeline, masonry, magazine, cards)
- CSS модули для улучшенной стилизации
- Настраиваемые лимиты отображения для разных макетов (5, 8, 3-5 ссылок)
- Полная интеграция с overlay системой и кастомными шрифтами
This commit is contained in:
2025-11-09 10:53:45 +09:00
parent 5ddc30fe0e
commit 644a0487e1
8 changed files with 1011 additions and 91 deletions

View File

@@ -0,0 +1,163 @@
.expandToggle {
margin-top: 1rem;
position: relative;
}
.expandButton {
display: flex;
align-items: center;
justify-content: center;
min-height: 50px;
font-weight: 500;
transition: all 0.2s ease;
border-radius: 10px;
&:hover {
transform: translateY(-1px);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
}
.expandOverlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: 10px;
pointer-events: none;
}
.linkItem {
position: relative;
margin-bottom: 0.75rem;
}
.linkContent {
display: block;
text-decoration: none;
color: inherit;
transition: all 0.2s ease;
position: relative;
overflow: hidden;
border-radius: 10px;
&:hover {
text-decoration: none;
color: inherit;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
}
.linkInner {
display: flex;
align-items: center;
padding: 1rem;
background: white;
border-radius: 10px;
border: 1px solid #e9ecef;
position: relative;
z-index: 1;
}
.linkIcon {
width: 40px;
height: 40px;
object-fit: cover;
border-radius: 8px;
margin-right: 1rem;
flex-shrink: 0;
}
.linkInfo {
flex: 1;
min-width: 0;
}
.linkTitle {
margin: 0 0 0.25rem 0;
font-size: 1rem;
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.linkDescription {
margin: 0;
font-size: 0.875rem;
color: #6c757d;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.linkOverlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
border-radius: 10px;
z-index: 2;
}
/* Layout-specific styles */
.linkItem :global(.grid-link) {
.linkInner {
flex-direction: column;
text-align: center;
padding: 1.5rem;
}
.linkIcon {
width: 60px;
height: 60px;
margin-right: 0;
margin-bottom: 1rem;
}
.linkTitle, .linkDescription {
white-space: normal;
text-align: center;
}
}
.linkItem :global(.cards-link) {
.linkInner {
padding: 1.25rem;
}
.linkIcon {
width: 50px;
height: 50px;
}
}
.linkItem :global(.timeline-link) {
.linkInner {
padding: 1rem 1.25rem;
border-left: 4px solid var(--theme-color, #007bff);
}
}
.linkItem :global(.magazine-link) {
.linkInner {
flex-direction: column;
padding: 1.5rem;
}
.linkIcon {
width: 80px;
height: 80px;
margin-right: 0;
margin-bottom: 1rem;
}
.linkTitle, .linkDescription {
white-space: normal;
text-align: center;
}
}