# Theme Property Reference All theme properties are accessed via the `Theme` singleton from `qs.Common`. Always use these instead of hardcoded values. ## Font Sizes ```qml Theme.fontSizeSmall // 12px (scaled by SettingsData.fontScale) Theme.fontSizeMedium // 14px (scaled) Theme.fontSizeLarge // 16px (scaled) Theme.fontSizeXLarge // 20px (scaled) ``` ## Icon Sizes ```qml Theme.iconSizeSmall // 16px Theme.iconSize // 24px (default) Theme.iconSizeLarge // 32px ``` ## Spacing ```qml Theme.spacingXS // Extra small Theme.spacingS // Small Theme.spacingM // Medium Theme.spacingL // Large Theme.spacingXL // Extra large ``` ## Border Radius ```qml Theme.cornerRadius // Standard Theme.cornerRadiusSmall // Smaller Theme.cornerRadiusLarge // Larger ``` ## Surface Colors ```qml Theme.surface Theme.surfaceContainerLow Theme.surfaceContainer Theme.surfaceContainerHigh Theme.surfaceContainerHighest ``` ## Text Colors ```qml Theme.onSurface // Primary text on surface Theme.onSurfaceVariant // Secondary text on surface Theme.surfaceText // Alias for primary surface text Theme.surfaceVariantText // Alias for secondary surface text Theme.outline // Border/divider color ``` ## Semantic Colors ```qml Theme.primary Theme.onPrimary Theme.secondary Theme.onSecondary Theme.error Theme.errorHover Theme.errorText Theme.warning Theme.success ``` ## Special Functions ```qml Theme.popupBackground() // Popup background with proper opacity ``` ## Common Widget Patterns ### Icon with Text ```qml import qs.Widgets Row { spacing: Theme.spacingS DankIcon { name: "icon_name" color: Theme.onSurface font.pixelSize: Theme.iconSize } StyledText { text: "Label" color: Theme.onSurface font.pixelSize: Theme.fontSizeMedium } } ``` ### Container with Border ```qml Rectangle { color: Theme.surfaceContainerHigh radius: Theme.cornerRadius border.color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.08) border.width: 1 } ``` ### Hover Effect ```qml Rectangle { id: container color: Theme.surfaceContainerHigh MouseArea { anchors.fill: parent hoverEnabled: true onEntered: container.color = Qt.lighter(Theme.surfaceContainerHigh, 1.1) onExited: container.color = Theme.surfaceContainerHigh } } ``` ### Clickable Pill ```qml StyledRect { width: content.implicitWidth + Theme.spacingM * 2 height: parent.widgetThickness radius: Theme.cornerRadius color: mouseArea.containsMouse ? Qt.lighter(Theme.surfaceContainerHigh, 1.1) : Theme.surfaceContainerHigh MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true cursorShape: Qt.PointingHandCursor } Row { id: content anchors.centerIn: parent spacing: Theme.spacingS DankIcon { name: "star" color: Theme.surfaceText font.pixelSize: Theme.iconSize anchors.verticalCenter: parent.verticalCenter } StyledText { text: "Label" color: Theme.surfaceText font.pixelSize: Theme.fontSizeMedium anchors.verticalCenter: parent.verticalCenter } } } ``` ## Common Mistakes **Wrong property names** (these do NOT exist): ```qml Theme.fontSizeS // Use Theme.fontSizeSmall Theme.iconSizeS // Use Theme.iconSizeSmall Theme.spacingSmall // Use Theme.spacingS Theme.borderRadius // Use Theme.cornerRadius ``` **Hardcoded values** (do NOT do this): ```qml color: "#1e1e1e" // Use Theme.surfaceContainerHigh color: "white" // Use Theme.surfaceText font.pixelSize: 14 // Use Theme.fontSizeMedium ``` ## Available Widgets from qs.Widgets | Widget | Description | |--------|-------------| | `StyledText` | Themed text with proper color defaults | | `StyledRect` | Themed rectangle | | `DankIcon` | Material Symbols icon renderer | | `DankNFIcon` | Nerd Font icon renderer | | `DankButton` | Themed button | | `DankToggle` | Toggle switch | | `DankTextField` | Text input field | | `DankSlider` | Slider control | | `DankDropdown` | Dropdown menu | | `DankGridView` | Grid layout view | | `DankListView` | List layout view | | `DankFlickable` | Scrollable container | | `DankTabBar` | Tab bar navigation | | `DankCollapsibleSection` | Collapsible content section | | `DankTooltip` | Hover tooltip | | `DankNumberStepper` | Number +/- control | | `DankFilterChips` | Filter chip row | | `CachingImage` | Image with disk cache | | `NumericText` | Fixed-width numeric display | ## Checking All Properties ```bash grep "property" Common/Theme.qml ```