Features
Contents of this page:
Theme Optimizations
Bootstrap Configuration
Shopware Standard uses Bootstrap 5 as frontend framework. With Guppy, the configuration of Bootstrap variables is greatly simplified. All adjustments, such as spacing and other Bootstrap configurations, are centrally managed in the bootstrap.scss file. This allows changes to be made without deep CSS knowledge.
List of Variables
| Variable | Description |
|---|---|
$white | Defines the color white. |
$black | Defines the color black. |
$gray-100 to $gray-900 | Defines various gray tones from light (100) to dark (900). |
$body-bg | Background color of the website or body. |
$body-color | Text color of the website or body. |
$enable-rounded | Enables or disables rounded corners for elements. |
$enable-shadows | Enables or disables shadows for elements. |
$spacer | Base value for spacing, used for building spacers. |
$spacers | Defines spacing as multipliers of the base value $spacer. |
$grid-breakpoints | Defines the widths for different breakpoints in the grid system. |
$container-max-widths | Sets the maximum width for containers at different breakpoints. |
$grid-gutter-width | Distance between columns in the grid system. |
$container-padding-x | Horizontal padding within containers. |
$border-width | Standard width of borders. |
$border-color | Standard color of borders. |
$border-radius | Standard rounding for corners. |
$border-radius-sm | Smaller rounding for corners. |
$border-radius-lg | Larger rounding for corners. |
$border-radius-xl | Extra large rounding for corners. |
$border-radius-2xl | Very large rounding for corners. |
$border-radius-pill | Maximum rounding for pill shapes. |
$box-shadow | Standard shadow for boxes. |
$box-shadow-sm | Smaller shadows for boxes. |
$box-shadow-lg | Larger shadows for boxes. |
$box-shadow-inset | Inset shadows. |
$component-active-color | Text color for active components. |
$component-active-bg | Background color for active components. |
$font-size-base | Base font size for text. |
$font-size-sm | Smaller font size based on base size. |
$font-size-lg | Larger font size based on base size. |
$font-weight-lighter | Weight for light text. |
$font-weight-light | Weight for somewhat lighter text. |
$font-weight-normal | Standard weight for text. |
$font-weight-semibold | Medium weight for text. |
$font-weight-bold | Weight for bold text. |
$font-weight-bolder | Weight for extra bold text. |
$font-weight-base | Standard weight for base text. |
$line-height-base | Line height for standard text. |
$line-height-sm | Smaller line height for text. |
$line-height-lg | Larger line height for text. |
$h1-font-size to $h6-font-size | Font sizes for headings (H1 to H6). |
$headings-margin-bottom | Distance below headings. |
$headings-font-family | Font family for headings. |
$headings-font-style | Font style for headings. |
$headings-font-weight | Font weight for headings. |
$headings-line-height | Line height for headings. |
$headings-color | Text color for headings. |
$paragraph-margin-bottom | Distance below paragraphs. |
$input-padding-y | Vertical padding for input fields. |
$input-padding-x | Horizontal padding for input fields. |
$input-border-color | Color of borders for input fields. |
$input-border-radius | Rounding of borders for input fields. |
$btn-padding-y | Vertical padding for buttons. |
$btn-padding-x | Horizontal padding for buttons. |
$btn-font-size | Font size for buttons. |
$btn-border-radius | Rounding of corners for buttons. |
$breadcrumb-font-size | Font size for breadcrumb navigation. |
$spinner-width | Width of the spinner. |
$spinner-height | Height of the spinner. |
$spinner-border-width | Width of the spinner border. |
$offcanvas-horizontal-width | Width of the horizontal offcanvas area. |
Custom Configuration
There is also a custom.scss where Bootstrap-independent variables can be maintained.
List of Variables
| Variable | Description |
|---|---|
$icon-base-size | Base size for icons, used for standard dimensions. |
$icon-base-color | Standard color for icons, based on current text color. |
$icon-accessibility-touch-size | Size for touch interactions to improve accessibility. |
$h1-line-height | Line height for heading H1, based on a system-wide variable. |
$h2-line-height | Line height for heading H2, also system-wide defined. |
$h3-line-height | Line height for heading H3, for smaller headings. |
$h4-line-height | Line height for heading H4, for medium headings. |
$h5-line-height | Line height for heading H5, smaller standard heading. |
$h6-line-height | Line height for heading H6, the smallest heading. |
$product-image-height | Standard height for product images, useful for layouts. |
$product-image-height-lg | Height for product images in larger layouts, adapts to content. |
$product-image-aspect-ratio | Aspect ratio of product images, calculated as 10:9. |
$product-image-background | Background color for product images, based on system-wide color. |
$focus-outline-width | Width of the outer border when an element is focused. |
$focus-outline-color | Color of the outer border. |
$focus-outline-offset | Distance between the outer border and corresponding element. |
$focus-outline-box-shadow | Shadow for the outer border. |
Responsive Line Heights (RLH)
In addition to Bootstrap's RFS Mixing, we have extended Guppy so that we can also dynamically adjust line spacing across all viewports with the responsive line heights (RLH) mixin.
Usage
Base Mixin: @mixin rlh
The rlh mixin provides full functionality to make line-height values responsive.
@mixin rlh($values, $property: line-height) {
@if $values != null {
$val: rfs-value($values);
$fluidVal: rfs-fluid-value($values);
// Do not print the media query if responsive & non-responsive values are the same
@if $val == $fluidVal {
#{$property}: $val;
}
@else {
@include _rfs-rule {
#{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);
// Include safari iframe resize fix if needed
min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
}
@include _rfs-media-query-rule {
#{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);
}
}
}
}Shorthand Helper Mixin: @mixin line-height
This mixin serves as a convenient helper to quickly define responsive line-height values.
@mixin line-height($value) {
@include rlh($value);
}Example: Line Heights
Here's an example of how you can use RLH in your project:
body {
@include line-height(1.5); // Responsive line-height
}
h1 {
@include rlh(1.2); // Alternatively, you can use the rlh mixin directly
}
p {
@include line-height(1.75);
}Theme without Shopware Standard Styling
In the Guppy Theme, the standard styling from Shopware has been directly integrated. More information can be found here: Theme with Bootstrap Styling
{
...
"style": [
"app/storefront/src/scss/overrides.scss",
"@StorefrontBootstrap",
"@Plugins",
"app/storefront/src/scss/skin/shopware/base.scss",
"app/storefront/src/scss/base.scss"
],
}INFO
The complete Shopware skin has been integrated into Guppy. The main goal now is to specifically optimize this transferred skin to further improve design and functionality.
This allows us to keep the CSS file lean and performant by making adjustments directly in the skin and avoiding duplicate overriding of styles. Additionally, we can specifically optimize and adapt the styling provided by Shopware.
Theme Configuration
The theme.json file has been extended to provide new configuration options. How theme configuration is generally structured can be found in the Shopware Documentation.
Configuration Overview
The Guppy Theme offers over 230 configuration fields in 12 main categories:
Configuration Tabs
- Layout - Container, sections, responsive settings
- Header - Header variants and logo configuration
- Footer - Footer variants and social media links
- USP Banner - Selling points and display
- Login & Register - Login and registration pages
- Cart & Checkout - Shopping cart and checkout process
- Product Card - Product box configuration
- Product Detail - Product detail page settings
- Input & Button - Form and button styles
- Badges - Product badges and awards
- Alerts - Notifications and messages
- Guppy Cards - Special card components
Detailed Configuration Areas
Color System
The Guppy Theme provides a comprehensive color system that covers all important UI elements and enables complete control over the design.
Core Brand Colors
sw-color-brand-primary (Primary Color)Default: #215AFFSpecific Usage:
- Bootstrap Primary Buttons: All
.btn-primarybuttons via$primaryvariable - Bootstrap Primary Components: Primary alerts, badges, progress bars
- Main Navigation Links:
.main-navigation-link:hover,.main-navigation-link.is-open,.main-navigation-link.activetext and border colors - Focus Border:
$focus-outline-colorfor accessibility focus indicators - Form Input Focus: Input field focus border colors
- Account Sidebar: Account menu link text and border colors
- Filter Panel: Filter button hover background (shaded variant)
- Slider: Slider handle border and background colors
- Category Navigation: Active category element border color
- Checkout Progress: Progress bar active step backgrounds in linear gradients
- Product Detail Configurator: Product variant selection border color
- Tab Menu: Tab hover and active border colors via CSS variables
- Top Bar Dropdowns: Dropdown link hover and active colors
- Custom Form Controls: Active checkbox/radio button backgrounds
- Component Active States:
$component-active-bgfor Bootstrap active components
sw-color-brand-secondary (Secondary Color)Default: #0B1845Specific Usage:
- Bootstrap Secondary Buttons (
.btn-secondary): Checkout register buttons, cart discount apply buttons, filter panel close buttons - Bootstrap Secondary Badge (
.bg-secondary): 3D badge in image gallery - Bootstrap Utilities: Affects
.text-secondaryand.border-secondaryclasses
Background & Structure
sw-background-color (Background)Default: #FFFFFFSpecific Usage:
- Body Background: Main page background color via
$body-bg - Offcanvas Cart: Shopping cart sidebar background color
- Input Field Backgrounds: All form input field backgrounds via
$input-bg
sw-border-color (Border Color)Default: #CFD1D7Specific Usage:
- Global Border Color: Bootstrap
$border-colorfor all standard borders - Input Field Borders: Form input field border color
- Header Sections: Header bottom borders and top bar separators
- Footer Separators: Footer section dividers and payment method borders
- Navigation Separators: Main navigation bottom border
- Checkout Components: Checkout step borders, cart item separators, sidebar borders
- Product Detail Elements: Buybox borders, tab separators, variant selection borders
- Card Borders: Conditional card borders when Guppy Cards border setting is enabled
- Pagination Borders: Pagination button borders in all states
- Dropdown Borders: Dropdown menu borders
Accessibility
With Guppy, we place great emphasis on accessibility and work continuously to make the theme fully accessible.
In addition, we provide comprehensive Accessibility Guidelines that help you implement accessibility in your Shopware project. Our guidelines can be found at dmf-accessibility-guidelines.vercel.app.
Implemented Accessibility Features
Focus Management
- Uniform Focus Styles: Consistent visual focus indicators
- Focus Mixin: Reusable SCSS component for focus styles
- Focus Visible: Modern
:focus-visiblepseudo-class - Box Shadow Integration: Additional visual highlighting
Skip Links
- Skip to Main Content: Direct jump to main content
- Skip to Navigation: Jump to main navigation
- Skip to Search: Jump to search function
- Theme Configuration: Activation via admin panel
Keyboard Navigation
- Full Keyboard Support: All interactive elements
- Logical Tab Order: Intuitive navigation
- Escape Key Support: Closing modals and overlays
Screen Reader Support
- ARIA Labels: Meaningful descriptions
- Semantic HTML: Correct HTML structure
- Live Regions: Dynamic content changes
Touch Optimization
- 44px Minimum Size: Adequate touch targets
- Touch Gestures: Native touch support
- Hover Alternative: Touch-friendly interactions
Already Optimized Areas
- Navigation: Full keyboard and screen reader support
- Product Boxes: Optimized focus management and labeling
- Footer: Responsive accordion navigation
- USP Banner: Tooltip system for screen readers
- Forms: Extended validation and error messages
- Sliders: Accessible slider navigation
- Checkout: Optimized user guidance
JavaScript Plugins
The Guppy Theme extends Shopware with modern JavaScript functionalities:
Splide Slider
- Replaces Tiny Slider: Modern alternative with better performance
- Full Accessibility: Keyboard navigation and screen reader support
- Responsive Design: Automatic adaptation to all screen sizes
- Touch Support: Native touch gestures for mobile devices
- Autoplay Management: Intelligent autoplay handling
More Details: Splide Slider
Additional JavaScript Plugins
- USP Banner Plugin: Interactive USP banners with tooltip functionality
- Product Box Click Plugin: Enhanced product box interactions
- Custom Checkout Plugin: Optimized checkout experience
- Quantity Selector Plugin: Extended quantity selection
- Remove Extra H1 Plugin: SEO optimization through H1 management
- Delivery Information Plugin: Dynamic delivery information
- Collapse Footer Plugin: Responsive footer navigation
More Details: JavaScript Plugins Documentation