PM7 macOS Design
Golden Standard UI Components
De complete design system voor native macOS SwiftUI apps. Consistente, toegankelijke en mooie UI componenten.
6
Components
Supported
macOS 11.0+
Native
SwiftUI
Accessible
Bomma-proof
Componenten
Alle PM7 Golden Standard UI elementen voor macOS
EditField - Floating Label
Username
Label zweeft omhoog bij focus
Tekst ALTIJD links uitgelijnd
Border kleur verandert bij focus
SwiftUI Code
EditField(label: "Username", text: $username)
.frame(maxWidth: 320)
// Optional string support
EditField(label: "Email", text: $email) // Binding<String?>ModernSlider in SettingCard
Border Width1.5 px
Icon + titel links, waarde rechts
Waarde in monospaced font
ALTIJD in SettingCard wrapper
SwiftUI Code
SettingCard {
ModernSlider(
icon: "circle.circle",
title: "Border Width",
value: $borderWidth,
range: 0...3,
step: 0.5,
format: { String(format: "%.1f px", $0) }
)
}ColorPickerRow in SettingCard
Border Color
Icon + titel links, picker rechts
ColorPicker 60pt breed
ALTIJD in SettingCard wrapper
SwiftUI Code
SettingCard {
ColorPickerRow(
icon: "paintbrush",
title: "Border Color",
color: $borderColor
)
}ModernToggle
Enable Smart Paste
Automatically paste after copying. Your clipboard is preserved.
Icon in accent color
Optionele ondertitel
Native switch style
SwiftUI Code
ModernToggle(
icon: "doc.on.doc",
title: "Enable Smart Paste",
subtitle: "Automatically paste after copying.",
isOn: $usesSmartPaste
)DropdownPicker
Theme
Choose your preferred color scheme
Label BOVEN dropdown
Chevron LINKS (niet rechts)
Geen Spacer - blijft links
SwiftUI Code
DropdownPicker(
title: "Theme",
subtitle: "Choose your preferred color scheme",
selection: $theme,
options: [
(value: "light", label: "Light"),
(value: "dark", label: "Dark"),
(value: "system", label: "System Default")
]
)SettingCard - Wrapper
Content wrapped in SettingCard
Padding: 10pt
Background: separatorColor 30%
Corner radius: 6pt
SwiftUI Code
struct SettingCard<Content: View>: View {
let content: Content
init(@ViewBuilder content: () -> Content) {
self.content = content()
}
var body: some View {
content
.padding(10)
.background(
RoundedRectangle(cornerRadius: 6)
.fill(Color(NSColor.separatorColor)
.opacity(0.3))
)
}
}Design Principes
De fundamentele regels voor PM7 macOS design
Labels BOVEN Velden
Geen tennis-match layout. Labels staan altijd boven de input velden, niet ernaast.
Alles LINKS Uitgelijnd
Geen Spacer() die controls naar rechts duwt. Alles blijft links uitgelijnd.
Bomma-proof Design
Minimum 13pt tekst, 44pt klikgebieden. Toegankelijk voor iedereen.
Native macOS Kleuren
Gebruik NSColor voor automatische light/dark mode ondersteuning.
.help() Tooltips
Elke icon MOET een .help() tooltip hebben voor toegankelijkheid.
.contentShape()
Alle plain buttons krijgen .contentShape(Rectangle()) voor betere hit testing.