SymbolPicker
SymbolPicker Skill
Overview
This skill provides expert guidance on SymbolPicker, a native, customizable SwiftUI component for selecting SF Symbols on iOS, iPadOS, macOS, and visionOS. It mimics Apple’s native interface while offering extensive customization for colors, styles (filled/outlined), and behavior.
Agent Behavior (Follow These Rules)
- Identify Platform Targets: SymbolPicker adapts to each platform (sheet on iOS, popover on iPad/Mac/visionOS). Always verify the target platform.
- Prioritize Modifiers: Direct users to the relevant
SymbolPickermodifiers (e.g.,.symbolPickerSymbolsStyle,.symbolPickerDismiss) for customization. - Handle Colors Correctly: When discussing color selection, clarify if the user wants to use
[Double](RGBA), SwiftUIColor, orSymbolColor. - Emphasize Accessibility: Highlight that SymbolPicker supports VoiceOver and Dynamic Type out of the box.
- Contextual Examples: Provide concise code snippets showing the
.symbolPickermodifier applied to a view (usually a Button or Image), with bindings for presentation and selection. - Cross-Platform Consistency: Remind users that the API is unified across platforms.
Project Settings
- Deployment Targets: iOS 14.0+, iPadOS 14.0+, macOS 11.0+, visionOS 1.0+.
- Swift Version: Swift 5.9+.
- Xcode: Xcode 15.0+.
Quick Decision Tree
-
Setting up a basic symbol picker?
- Basic installation and concepts →
references/SymbolPicker.md - To apply the modifier to a view →
references/SymbolPickerView.md
- Basic installation and concepts →
-
Picking symbols with color?
- To use different color binding types →
references/SymbolPickerView.md - To understand the
SymbolColormodel →references/SymbolColor.md
- To use different color binding types →
-
Customizing appearance or behavior?
- Switching between filled/outlined icons →
references/SymbolPickerModifiers.md(.symbolPickerSymbolsStyle) - Controlling dismissal behavior →
references/SymbolPickerModifiers.md(.symbolPickerDismiss)
- Switching between filled/outlined icons →
Triage-First Playbook
- "The picker isn't showing up."
- Check if
.symbolPicker(isPresented: ...)is attached to a view that is part of the hierarchy. - Ensure the
isPresentedbinding is being toggled true.
- Check if
- "I want filled icons instead of outlines."
- Use
.symbolPickerSymbolsStyle(.filled).
- Use
- "How do I close the picker immediately after selecting a symbol?"
- Use
.symbolPickerDismiss(type: .onSymbolSelect).
- Use
Core Patterns Reference
Basic Usage
@State private var isPresented = false
@State private var icon = "star"
Button("Pick Icon") { isPresented = true }
.symbolPicker(isPresented: $isPresented, symbolName: $icon)
With Color Selection
@State private var isPresented = false
@State private var icon = "star.fill"
@State private var color: Color = .red
Button("Pick Icon & Color") { isPresented = true }
.symbolPicker(isPresented: $isPresented, symbolName: $icon, color: $color)
.symbolPickerSymbolsStyle(.filled)
.symbolPickerDismiss(type: .onSymbolSelect)
Integration Quick Guide
- Add Package Dependency:
https://github.com/SzpakKamil/SymbolPicker.git(Min version 1.0.0). - Import:
import SymbolPicker. - Requirements: iOS 14.0+, macOS 11.0+, visionOS 1.0+.
Reference Files
Load these files as needed for specific topics:
SymbolPicker.md- General overview, setup, and core benefits.SymbolPickerView.md- Detailed information on the picker view and its initializers.SymbolPickerModifiers.md- Customization of style (filled/outlined) and dismissal behavior.SymbolColor.md- Guide to using theSymbolColorenum and color bindings.SetUp.md- Step-by-step installation instructions.
More from szpakkamil/agentskills
searchbar
Expert guidance on SearchBar, a customizable SwiftUI search component. Use when developers mention: (1) SearchBar, (2) custom search bars in SwiftUI, (3) search tokens or suggestions, (4) styling search bars (glass, capsule), (5) cross-platform search (iOS, macOS, tvOS, watchOS, visionOS), (6) specific SearchBar modifiers like .searchBarStyle or .searchBarSuggestions.
7colorkit
Expert guidance on ColorKit, a Swift library for advanced color manipulation, conversion, and accessibility management. Use when developers mention: (1) CKColor, CKBlendMode, CKAPCA, (2) color space conversion (OKLAB, Display P3, sRGB), (3) WCAG or APCA contrast checks, (4) hex color initialization, (5) dynamic/adaptive colors for Dark Mode, (6) perceptual gamut mapping.
6pagerkit
Expert guidance on PagerKit, a SwiftUI library for advanced, customizable page-based navigation. Use when developers mention: (1) PagerKit, PKPagesView, PKPage, (2) custom page controls, indicators, or paging behavior, (3) cross-platform SwiftUI paging, (4) dynamic page generation, (5) integrating page views into custom layouts, (6) specific PagerKit modifiers or enums, (7) page view controller options, (8) event handling for page changes.
3