Add collapsible sections, restructure menu, and refine sidebar layouts

- Wrapped all CV sections and sidebar sections in <details> tags for collapsibility
- Added Expand All/Collapse All menu options with CV Sections submenu
- Implemented smooth CSS animations for section expansion/collapse using max-height transitions
- Fixed menu item alignment issues (removed extra padding)
- Added dash between company name and duration in experience section
- Moved SAP Technologies and AI-Assisted Development to bottom of right sidebar
- Reordered JavaScript Ecosystem above Go Ecosystem in left sidebar
- Implemented different layouts for left vs right sidebars:
  - Left sidebar: title left-aligned, triangle on right
  - Right sidebar: title right-aligned, triangle on left
- Adjusted sidebar spacing for better visual hierarchy when sections are open/closed
This commit is contained in:
juanatsap
2025-11-09 13:43:29 +00:00
parent 2ce13481d0
commit 31dae9fa19
5 changed files with 439 additions and 142 deletions
+210 -3
View File
@@ -522,7 +522,7 @@ iconify-icon {
/* Sidebar - Left column */
.cv-sidebar {
background: var(--sidebar-gray);
padding: 2rem 1.5rem;
padding: 4rem 1.5rem;
font-size: 0.9rem;
}
@@ -530,6 +530,12 @@ iconify-icon {
margin-bottom: 2rem;
}
/* Add margin when sidebar section is collapsed */
.sidebar-section:has(details:not([open])) {
margin-bottom: 3rem;
margin-top: 0rem;
}
.sidebar-title {
font-family: 'Quicksand', sans-serif;
font-size: 1.4em;
@@ -540,6 +546,96 @@ iconify-icon {
color: rgb(51, 51, 51);
}
/* Collapsible Sidebar Section Styles */
.sidebar-section details {
margin: 0;
}
.sidebar-section details summary ~ * {
overflow: hidden;
max-height: 0;
opacity: 0;
transform: translateY(-8px);
transition: max-height 0.5s ease-in-out,
opacity 0.3s ease-in-out,
transform 0.3s ease-in-out;
}
.sidebar-section details[open] summary ~ * {
max-height: 1500px;
opacity: 1;
transform: translateY(0);
}
.sidebar-section summary {
cursor: pointer;
list-style: none;
user-select: none;
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
}
/* Remove default triangle marker */
.sidebar-section summary::-webkit-details-marker,
.sidebar-section summary::marker {
display: none;
}
/* Sidebar title - no special positioning */
.sidebar-section summary .sidebar-title {
margin-bottom: 0;
}
/* Add custom collapse indicator at the far right (left sidebar) */
.cv-sidebar-left .sidebar-section summary::after {
content: '▶';
font-size: 0.8em;
color: rgb(100, 100, 100);
transition: transform 0.2s ease, opacity 0.2s ease;
opacity: 0;
margin-left: 15px;
flex-shrink: 0;
}
/* Add custom collapse indicator at the far left (right sidebar) */
.cv-sidebar-right .sidebar-section summary {
flex-direction: row-reverse;
justify-content: space-between;
}
.cv-sidebar-right .sidebar-section summary .sidebar-title {
text-align: right;
width: 100%;
}
.cv-sidebar-right .sidebar-section summary::after {
content: '▶';
font-size: 0.8em;
color: rgb(100, 100, 100);
transition: transform 0.2s ease, opacity 0.2s ease;
opacity: 0;
margin-right: 15px;
flex-shrink: 0;
}
/* Show indicator on hover or when closed */
.sidebar-section summary:hover::after,
.sidebar-section details:not([open]) summary::after {
opacity: 1;
}
/* Rotate indicator when open */
.sidebar-section details[open] summary::after {
transform: rotate(90deg);
}
/* Hover effect on sidebar summary */
.sidebar-section summary:hover .sidebar-title {
color: var(--accent-blue);
}
.sidebar-content {
font-family: 'Quicksand', sans-serif;
font-size: 0.95em;
@@ -547,6 +643,11 @@ iconify-icon {
line-height: 1.5;
}
/* Add breathing space when sidebar section is open */
.sidebar-section details[open] .sidebar-content {
margin-top: 0.5rem;
}
.skill-item {
margin-bottom: 0.15rem;
color: rgb(0, 0, 0);
@@ -672,6 +773,11 @@ iconify-icon {
page-break-inside: avoid;
}
/* Remove margin when section is collapsed */
.cv-section:has(details:not([open])) {
margin-bottom: 0;
}
.section-title {
font-family: 'Quicksand', sans-serif;
font-size: 1.4em;
@@ -682,6 +788,72 @@ iconify-icon {
color: rgb(51, 51, 51);
}
/* Collapsible Section Styles */
.cv-section details {
margin: 0;
}
.cv-section details summary ~ * {
overflow: hidden;
max-height: 0;
opacity: 0;
transform: translateY(-8px);
transition: max-height 0.5s ease-in-out,
opacity 0.3s ease-in-out,
transform 0.3s ease-in-out;
}
.cv-section details[open] summary ~ * {
max-height: 3000px;
opacity: 1;
transform: translateY(0);
}
.cv-section summary {
cursor: pointer;
list-style: none;
user-select: none;
position: relative;
}
/* Remove default triangle marker in all browsers */
.cv-section summary::-webkit-details-marker,
.cv-section summary::marker {
display: none;
}
/* Add custom collapse indicator after the title */
.cv-section summary .section-title {
display: inline-flex;
align-items: center;
gap: 0.5rem;
}
.cv-section summary .section-title::after {
content: '▼';
font-size: 0.8em;
color: rgb(100, 100, 100);
transition: transform 0.2s ease, opacity 0.2s ease;
opacity: 0;
margin-left: 0.5rem;
}
/* Show indicator on hover or when closed */
.cv-section summary:hover .section-title::after,
.cv-section details:not([open]) summary .section-title::after {
opacity: 1;
}
/* Rotate indicator when closed */
.cv-section details:not([open]) summary .section-title::after {
transform: rotate(-90deg);
}
/* Hover effect on summary */
.cv-section summary:hover .section-title {
color: var(--accent-blue);
}
.summary-text {
font-family: 'Quicksand', sans-serif;
line-height: 1.5;
@@ -780,8 +952,8 @@ iconify-icon {
}
.duration-text {
color: #999;
font-weight: normal;
color: #aaa;
font-weight: 500;
}
.responsibilities {
@@ -1884,6 +2056,41 @@ a:focus {
color: var(--accent-blue);
}
/* Remove extra padding - all menu items should align consistently */
/* Submenu styles */
.menu-item-submenu {
position: relative;
}
.menu-item.has-submenu {
justify-content: space-between;
position: relative;
}
.submenu-arrow {
transition: transform 0.2s ease;
}
.menu-item-submenu.submenu-open .submenu-arrow {
transform: rotate(180deg);
}
.submenu-content {
display: none;
background-color: rgba(0, 0, 0, 0.02);
}
.menu-item-submenu.submenu-open .submenu-content {
display: block;
}
.submenu-content .menu-item {
padding-left: 3rem;
font-size: 0.9rem;
border-left-width: 2px;
}
/* Section icons in titles */
.section-icon {
vertical-align: middle;