├── Images
└── screenshot.PNG
├── .gitignore
├── .xcodesamplecode.plist
├── Tests
└── SymbolPickerTests
│ └── SymbolPickerTests.swift
├── Sources
└── SymbolPicker
│ ├── Window.swift
│ ├── Resources
│ ├── Monterey
│ │ ├── Monterey-Time.txt
│ │ ├── Monterey-Shapes.txt
│ │ ├── Monterey-Nature.txt
│ │ ├── Monterey-Text Formatting.txt
│ │ ├── Monterey-Transportation.txt
│ │ ├── Monterey-Health.txt
│ │ ├── Monterey-Math.txt
│ │ ├── Monterey-Keyboard.txt
│ │ ├── Monterey-Weather.txt
│ │ ├── Monterey-Media.txt
│ │ ├── Monterey-Connectivity.txt
│ │ ├── Monterey-Editing.txt
│ │ ├── Monterey-Gaming.txt
│ │ ├── Monterey-Communication.txt
│ │ ├── Monterey-Commerce.txt
│ │ ├── Monterey-Human.txt
│ │ └── Monterey-Devices.txt
│ ├── Ventura
│ │ ├── Ventura-Shapes.txt
│ │ ├── Ventura-Time.txt
│ │ ├── Ventura-Math.txt
│ │ ├── Ventura-Transportation.txt
│ │ ├── Ventura-Text Formatting.txt
│ │ ├── Ventura-Keyboard.txt
│ │ ├── Ventura-Health.txt
│ │ ├── Ventura-Media.txt
│ │ ├── Ventura-Connectivity.txt
│ │ ├── Ventura-Editing.txt
│ │ ├── Ventura-Accessibility.txt
│ │ ├── Ventura-Gaming.txt
│ │ ├── Ventura-Weather.txt
│ │ ├── Ventura-Privacy & Security.txt
│ │ ├── Ventura-Fitness.txt
│ │ ├── Ventura-Camera & Photos.txt
│ │ ├── Ventura-Communication.txt
│ │ ├── Ventura-Commerce.txt
│ │ ├── Ventura-Nature.txt
│ │ ├── Ventura-Home.txt
│ │ ├── Ventura-Human.txt
│ │ └── Ventura-Devices.txt
│ ├── zh-Hans.lproj
│ │ └── Localizable.strings
│ ├── zh-Hant.lproj
│ │ └── Localizable.strings
│ ├── Sonoma
│ │ ├── Sonoma-Time.txt
│ │ ├── Sonoma-Math.txt
│ │ ├── Sonoma-Shapes.txt
│ │ ├── Sonoma-Text Formatting.txt
│ │ ├── Sonoma-Keyboard.txt
│ │ ├── Sonoma-Health.txt
│ │ ├── Sonoma-Transportation.txt
│ │ ├── Sonoma-Media.txt
│ │ ├── Sonoma-Connectivity.txt
│ │ ├── Sonoma-Maps.txt
│ │ ├── Sonoma-Editing.txt
│ │ ├── Sonoma-Accessibility.txt
│ │ ├── Sonoma-Privacy & Security.txt
│ │ ├── Sonoma-Weather.txt
│ │ ├── Sonoma-Fitness.txt
│ │ ├── Sonoma-Communication.txt
│ │ ├── Sonoma-Camera & Photos.txt
│ │ ├── Sonoma-Gaming.txt
│ │ ├── Sonoma-Nature.txt
│ │ ├── Sonoma-Commerce.txt
│ │ └── Sonoma-Home.txt
│ └── en.lproj
│ │ └── Localizable.strings
│ ├── extensions.swift
│ ├── Sidebar
│ ├── Node.swift
│ └── SidebarViewController.swift
│ ├── CollectionView.swift
│ ├── SymbolPicker.swift
│ ├── FieldEditor.swift
│ ├── SplitViewController
│ └── SplitViewController.swift
│ ├── WindowController.swift
│ ├── SymbolCollection
│ ├── SymbolView.swift
│ ├── Symbol.swift
│ └── SymbolCollectionViewController.swift
│ └── SymbolPickerView.swift
├── License
├── Package.swift
└── README.md
/Images/screenshot.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/francisfeng/SymbolPicker/HEAD/Images/screenshot.PNG
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.build
3 | /Packages
4 | /*.xcodeproj
5 | xcuserdata/
6 | DerivedData/
7 | .swiftpm/
8 | IDEWorkspaceChecks.plist
--------------------------------------------------------------------------------
/.xcodesamplecode.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tests/SymbolPickerTests/SymbolPickerTests.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | @testable import SymbolPicker
3 |
4 | final class SymbolPickerTests: XCTestCase {
5 | func testExample() {
6 | // XCTAssertNotNil(SymbolPicker.makeNewWindow())
7 | // XCTAssertEqual(SymbolPicker().text, "Hello, World!")
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Window.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Window.swift
3 | //
4 | //
5 | // Created by Francis on 2021/7/27.
6 | //
7 |
8 | import Cocoa
9 |
10 | class Window: NSWindow {
11 | open override func keyDown(with event: NSEvent) {
12 | // 53 is the key code for Esc
13 | if event.keyCode == 53 {
14 | self.sheetParent?.endSheet(self, returnCode: .OK)
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Time.txt:
--------------------------------------------------------------------------------
1 | clock
2 | clock.fill
3 | clock.circle
4 | clock.circle.fill
5 | clock.badge.checkmark
6 | clock.badge.checkmark.fill
7 | clock.badge.exclamationmark
8 | clock.badge.exclamationmark.fill
9 | deskclock
10 | deskclock.fill
11 | alarm
12 | alarm.fill
13 | stopwatch
14 | stopwatch.fill
15 | timer
16 | timer.square
17 | clock.arrow.circlepath
18 | clock.arrow.2.circlepath
19 | hourglass
20 | hourglass.circle
21 | hourglass.circle.fill
22 | hourglass.badge.plus
23 | hourglass.bottomhalf.filled
24 | hourglass.tophalf.filled
25 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // extensions.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/4.
6 | //
7 |
8 | import Cocoa
9 |
10 | extension String {
11 | var localized: String {
12 | return NSLocalizedString(self, tableName: nil, bundle: .module, value: "", comment: "")
13 | }
14 | }
15 |
16 | extension NSImage {
17 | convenience init?(_ name: String) {
18 | self.init(systemSymbolName: name, accessibilityDescription: nil)
19 | }
20 | }
21 |
22 | extension Date {
23 | static func - (lhs: Date, rhs: Date) -> TimeInterval {
24 | return lhs.timeIntervalSinceReferenceDate - rhs.timeIntervalSinceReferenceDate
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Shapes.txt:
--------------------------------------------------------------------------------
1 | seal
2 | seal.fill
3 | circle
4 | circle.fill
5 | capsule
6 | capsule.fill
7 | capsule.portrait
8 | capsule.portrait.fill
9 | oval
10 | oval.fill
11 | oval.portrait
12 | oval.portrait.fill
13 | square
14 | square.fill
15 | app
16 | app.fill
17 | rectangle
18 | rectangle.fill
19 | rectangle.portrait
20 | rectangle.portrait.fill
21 | triangle
22 | triangle.fill
23 | diamond
24 | diamond.fill
25 | octagon
26 | octagon.fill
27 | hexagon
28 | hexagon.fill
29 | pentagon
30 | pentagon.fill
31 | rhombus
32 | rhombus.fill
33 | shield
34 | shield.fill
35 | rectangle.roundedtop
36 | rectangle.roundedtop.fill
37 | rectangle.roundedbottom
38 | rectangle.roundedbottom.fill
39 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Shapes.txt:
--------------------------------------------------------------------------------
1 | circle
2 | circle.fill
3 | square
4 | square.fill
5 | app
6 | app.fill
7 | rectangle
8 | rectangle.fill
9 | rectangle.portrait
10 | rectangle.portrait.fill
11 | capsule
12 | capsule.fill
13 | capsule.portrait
14 | capsule.portrait.fill
15 | oval
16 | oval.fill
17 | oval.portrait
18 | oval.portrait.fill
19 | triangle
20 | triangle.fill
21 | diamond
22 | diamond.fill
23 | octagon
24 | octagon.fill
25 | hexagon
26 | hexagon.fill
27 | pentagon
28 | pentagon.fill
29 | seal
30 | seal.fill
31 | rhombus
32 | rhombus.fill
33 | shield
34 | shield.fill
35 | viewfinder
36 | rectangle.roundedtop
37 | rectangle.roundedtop.fill
38 | rectangle.roundedbottom
39 | rectangle.roundedbottom.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Sidebar/Node.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Node.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/4.
6 | //
7 |
8 | import AppKit
9 |
10 | @objc class Node: NSObject, Codable {
11 |
12 | @objc var identifier: String = ""
13 | @objc let symbolName: String
14 | @objc let value: String
15 | let category: Symbol.Category
16 |
17 | @objc dynamic var children = [Node]()
18 |
19 | @objc dynamic var count: Int {
20 | return children.count
21 | }
22 |
23 | init(_ value: String, symbolName: String, category: Symbol.Category) {
24 | self.value = value
25 | self.symbolName = symbolName
26 | self.category = category
27 | }
28 |
29 | @objc dynamic var isLeaf: Bool {
30 | return children.isEmpty
31 | }
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Time.txt:
--------------------------------------------------------------------------------
1 | clock
2 | clock.fill
3 | clock.circle
4 | clock.circle.fill
5 | clock.badge
6 | clock.badge.fill
7 | clock.badge.checkmark
8 | clock.badge.checkmark.fill
9 | clock.badge.xmark
10 | clock.badge.xmark.fill
11 | clock.badge.questionmark
12 | clock.badge.questionmark.fill
13 | clock.badge.exclamationmark
14 | clock.badge.exclamationmark.fill
15 | deskclock
16 | deskclock.fill
17 | alarm
18 | alarm.fill
19 | alarm.waves.left.and.right
20 | alarm.waves.left.and.right.fill
21 | stopwatch
22 | stopwatch.fill
23 | timer
24 | timer.circle
25 | timer.circle.fill
26 | timer.square
27 | clock.arrow.circlepath
28 | clock.arrow.2.circlepath
29 | hourglass
30 | hourglass.circle
31 | hourglass.circle.fill
32 | hourglass.badge.plus
33 | hourglass.bottomhalf.filled
34 | hourglass.tophalf.filled
--------------------------------------------------------------------------------
/Sources/SymbolPicker/CollectionView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CollectionView.swift
3 | //
4 | //
5 | // Created by Francis on 2022/7/5.
6 | //
7 |
8 | import Cocoa
9 |
10 | class CollectionView: NSCollectionView {
11 | // When user click the space area between icons in collection view,
12 | // CollectionView becomes the first responder. Thus the keyDown event
13 | // we override in Window can’t be called.
14 | //
15 | // To make “Esc to Close Sheet” work, we need to implement the same logic
16 | // in CollectionView.
17 | open override func keyDown(with event: NSEvent) {
18 | // 53 is the key code for Esc
19 | if event.keyCode == 53,
20 | let window = self.window {
21 | window.sheetParent?.endSheet(window, returnCode: .OK)
22 | } else {
23 | super.keyDown(with: event)
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Nature.txt:
--------------------------------------------------------------------------------
1 | globe.americas
2 | globe.americas.fill
3 | globe.europe.africa
4 | globe.europe.africa.fill
5 | globe.asia.australia
6 | globe.asia.australia.fill
7 | flame
8 | flame.fill
9 | flame.circle
10 | flame.circle.fill
11 | drop
12 | drop.fill
13 | drop.circle
14 | drop.circle.fill
15 | drop.triangle
16 | drop.triangle.fill
17 | bolt
18 | bolt.fill
19 | bolt.circle
20 | bolt.circle.fill
21 | bolt.square
22 | bolt.square.fill
23 | bolt.slash
24 | bolt.slash.fill
25 | bolt.slash.circle
26 | bolt.slash.circle.fill
27 | allergens
28 | hare
29 | hare.fill
30 | tortoise
31 | tortoise.fill
32 | pawprint
33 | pawprint.fill
34 | pawprint.circle
35 | pawprint.circle.fill
36 | ant
37 | ant.fill
38 | ant.circle
39 | ant.circle.fill
40 | ladybug
41 | ladybug.fill
42 | leaf
43 | leaf.fill
44 | leaf.circle
45 | leaf.circle.fill
46 | leaf.arrow.triangle.circlepath
47 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | SymbolPicker
4 |
5 | Created by Francis Feng on 2021/5/4.
6 |
7 | */
8 | // SF Symbols
9 | "SF Symbols" = "SF符号";
10 | "Category" = "类别";
11 | "All" = "全部";
12 | "Communication" = "通信";
13 | "Weather" = "天气";
14 | "Maps" = "地图";
15 | "Objects & Tools" = "物体与工具";
16 | "Devices" = "设备";
17 | "Camera & Photos" = "相机与照片";
18 | "Gaming" = "游戏";
19 | "Connectivity" = "连接状态";
20 | "Transportation" = "交通";
21 | "Automotive" = "汽车";
22 | "Accessibility" = "辅助功能";
23 | "Privacy & Security" = "隐私与安全";
24 | "Human" = "人";
25 | "Home" = "家庭";
26 | "Fitness" = "健身";
27 | "Nature" = "自然";
28 | "Editing" = "编辑";
29 | "Text Formatting" = "文本格式化";
30 | "Media" = "媒体";
31 | "Keyboard" = "键盘";
32 | "Commerce" = "商业";
33 | "Time" = "时间";
34 | "Health" = "健康";
35 | "Shapes" = "形状";
36 | "Arrows" = "箭头";
37 | "Indices" = "索引";
38 | "Math" = "数学";
39 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | SymbolPicker
4 |
5 | Created by Francis Feng on 2021/5/4.
6 |
7 | */
8 | // SF Symbols
9 | "SF Symbols" = "SF Symbols";
10 | "Category" = "類別";
11 | "All" = "全部";
12 | "Communication" = "通訊";
13 | "Weather" = "天氣";
14 | "Maps" = "地圖";
15 | "Objects & Tools" = "物品與工具";
16 | "Devices" = "裝置";
17 | "Camera & Photos" = "相機與照片";
18 | "Gaming" = "Gaming";
19 | "Connectivity" = "連線";
20 | "Transportation" = "交通";
21 | "Automotive" = "機動車";
22 | "Accessibility" = "輔助使用";
23 | "Privacy & Security" = "隱私與安全";
24 | "Human" = "人";
25 | "Home" = "住家";
26 | "Fitness" = "健身";
27 | "Nature" = "自然";
28 | "Editing" = "編輯";
29 | "Text Formatting" = "文字格式化";
30 | "Media" = "媒體";
31 | "Keyboard" = "鍵盤";
32 | "Commerce" = "商業";
33 | "Time" = "時間";
34 | "Health" = "健康";
35 | "Shapes" = "形狀";
36 | "Arrows" = "箭頭";
37 | "Indices" = "索引";
38 | "Math" = "數學";
39 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Text Formatting.txt:
--------------------------------------------------------------------------------
1 | signature
2 | paragraphsign
3 | list.dash
4 | list.bullet
5 | list.bullet.circle
6 | list.bullet.circle.fill
7 | list.triangle
8 | list.bullet.indent
9 | list.number
10 | list.star
11 | increase.indent
12 | decrease.indent
13 | decrease.quotelevel
14 | increase.quotelevel
15 | text.alignleft
16 | text.aligncenter
17 | text.alignright
18 | text.justify
19 | text.justifyleft
20 | text.justifyright
21 | text.redaction
22 | character
23 | textformat.size.smaller
24 | textformat.size.larger
25 | textformat.size
26 | textformat
27 | textformat.alt
28 | textformat.superscript
29 | textformat.subscript
30 | abc
31 | textformat.abc
32 | textformat.abc.dottedunderline
33 | bold
34 | italic
35 | underline
36 | strikethrough
37 | shadow
38 | bold.italic.underline
39 | bold.underline
40 | character.cursor.ibeam
41 | textformat.123
42 | 123.rectangle
43 | 123.rectangle.fill
44 | character.textbox
45 | a.magnify
46 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Time.txt:
--------------------------------------------------------------------------------
1 | clock
2 | clock.fill
3 | clock.circle
4 | clock.circle.fill
5 | clock.badge
6 | clock.badge.fill
7 | clock.badge.checkmark
8 | clock.badge.checkmark.fill
9 | clock.badge.xmark
10 | clock.badge.xmark.fill
11 | clock.badge.questionmark
12 | clock.badge.questionmark.fill
13 | clock.badge.exclamationmark
14 | clock.badge.exclamationmark.fill
15 | deskclock
16 | deskclock.fill
17 | alarm
18 | alarm.fill
19 | alarm.waves.left.and.right
20 | alarm.waves.left.and.right.fill
21 | stopwatch
22 | stopwatch.fill
23 | gauge.with.needle
24 | gauge.with.needle.fill
25 | timer
26 | timer.circle
27 | timer.circle.fill
28 | timer.square
29 | arrow.circlepath
30 | clock.arrow.circlepath
31 | exclamationmark.arrow.circlepath
32 | clock.arrow.2.circlepath
33 | hourglass
34 | hourglass.circle
35 | hourglass.circle.fill
36 | hourglass.badge.plus
37 | hourglass.and.lock
38 | hourglass.bottomhalf.filled
39 | hourglass.tophalf.filled
40 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/SymbolPicker.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SymbolPicker.swift
3 | //
4 | //
5 | // Created by Francis Feng on 2021/7/26.
6 | //
7 |
8 | import Cocoa
9 |
10 | open class SymbolPicker {
11 | var text = "Hello World"
12 |
13 | public static func windowController(symbol: String, color: NSColor, delegate: SymbolPickerDelegate, title: String? = nil, showColorPickerItem: Bool = true) -> NSWindowController? {
14 | let storyboard = NSStoryboard.init(name: "SymbolPicker", bundle: .module)
15 | if let controller = storyboard.instantiateController(withIdentifier: .init("main")) as? WindowController {
16 | controller.configureCurrentItem(symbol: symbol, color: color)
17 | controller.toggleColorPanelButton(!showColorPickerItem)
18 | controller.delegate = delegate
19 | if let title = title {
20 | controller.updateWindowTitle(title)
21 | }
22 | return controller
23 | }
24 | return nil
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Transportation.txt:
--------------------------------------------------------------------------------
1 | airplane
2 | airplane.circle
3 | airplane.circle.fill
4 | airplane.arrival
5 | airplane.departure
6 | car
7 | car.fill
8 | car.circle
9 | car.circle.fill
10 | bolt.car
11 | bolt.car.fill
12 | bolt.car.circle
13 | bolt.car.circle.fill
14 | car.2
15 | car.2.fill
16 | bus
17 | bus.fill
18 | bus.doubledecker
19 | bus.doubledecker.fill
20 | tram
21 | tram.fill
22 | tram.circle
23 | tram.circle.fill
24 | tram.fill.tunnel
25 | cablecar
26 | cablecar.fill
27 | ferry
28 | ferry.fill
29 | car.ferry
30 | car.ferry.fill
31 | train.side.front.car
32 | train.side.middle.car
33 | train.side.rear.car
34 | bicycle
35 | bicycle.circle
36 | bicycle.circle.fill
37 | scooter
38 | fuelpump
39 | fuelpump.fill
40 | fuelpump.circle
41 | fuelpump.circle.fill
42 | figure.walk
43 | figure.walk.circle
44 | figure.walk.circle.fill
45 | figure.walk.diamond
46 | figure.walk.diamond.fill
47 | figure.wave
48 | figure.wave.circle
49 | figure.wave.circle.fill
50 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Health.txt:
--------------------------------------------------------------------------------
1 | heart.text.square
2 | heart.text.square.fill
3 | heart
4 | heart.fill
5 | heart.circle
6 | heart.circle.fill
7 | bolt.heart
8 | bolt.heart.fill
9 | eye
10 | eye.fill
11 | eye.circle
12 | eye.circle.fill
13 | eye.square
14 | eye.square.fill
15 | eye.trianglebadge.exclamationmark
16 | eye.trianglebadge.exclamationmark.fill
17 | facemask
18 | facemask.fill
19 | brain.head.profile
20 | brain
21 | bandage
22 | bandage.fill
23 | cross.case
24 | cross.case.fill
25 | bed.double
26 | bed.double.fill
27 | bed.double.circle
28 | bed.double.circle.fill
29 | allergens
30 | pills
31 | pills.fill
32 | pills.circle
33 | pills.circle.fill
34 | cross
35 | cross.fill
36 | cross.circle
37 | cross.circle.fill
38 | ear
39 | ear.badge.checkmark
40 | ear.trianglebadge.exclamationmark
41 | ear.and.waveform
42 | ear.fill
43 | waveform.path.ecg
44 | waveform.path.ecg.rectangle
45 | waveform.path.ecg.rectangle.fill
46 | staroflife
47 | staroflife.fill
48 | staroflife.circle
49 | staroflife.circle.fill
50 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | SymbolPicker
4 |
5 | Created by Francis Feng on 2021/5/4.
6 |
7 | */
8 | // SF Symbols
9 | "SF Symbols" = "SF Symbols";
10 | "Category" = "Categories";
11 | "All" = "All";
12 | "Communication" = "Communication";
13 | "Weather" = "Weather";
14 | "Maps" = "Maps";
15 | "Objects & Tools" = "Objects & Tools";
16 | "Devices" = "Devices";
17 | "Camera & Photos" = "Camera & Photos";
18 | "Gaming" = "Gaming";
19 | "Connectivity" = "Connectivity";
20 | "Transportation" = "Transportation";
21 | "Automotive" = "Automotive";
22 | "Accessibility" = "Accessibility";
23 | "Privacy & Security" = "Privacy & Security";
24 | "Human" = "Human";
25 | "Home" = "Home";
26 | "Nature" = "Nature";
27 | "Fitness" = "Fitness";
28 | "Editing" = "Editing";
29 | "TextFormatting" = "Text Formatting";
30 | "Media" = "Media";
31 | "Keyboard" = "Keyboard";
32 | "Commerce" = "Commerce";
33 | "Time" = "Time";
34 | "Health" = "Health";
35 | "Shapes" = "Shapes";
36 | "Arrows" = "Arrows";
37 | "Indices" = "Indices";
38 | "Math" = "Math";
39 |
--------------------------------------------------------------------------------
/License:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Francis Feng
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Math.txt:
--------------------------------------------------------------------------------
1 | sum
2 | percent
3 | function
4 | plus
5 | plus.circle
6 | plus.circle.fill
7 | plus.square
8 | plus.square.fill
9 | plus.rectangle
10 | plus.rectangle.fill
11 | minus
12 | minus.circle
13 | minus.circle.fill
14 | minus.square
15 | minus.square.fill
16 | minus.rectangle
17 | minus.rectangle.fill
18 | plusminus
19 | plusminus.circle
20 | plusminus.circle.fill
21 | plus.forwardslash.minus
22 | minus.forwardslash.plus
23 | multiply
24 | multiply.circle
25 | multiply.circle.fill
26 | multiply.square
27 | multiply.square.fill
28 | divide
29 | divide.circle
30 | divide.circle.fill
31 | divide.square
32 | divide.square.fill
33 | equal
34 | equal.circle
35 | equal.circle.fill
36 | equal.square
37 | equal.square.fill
38 | lessthan
39 | lessthan.circle
40 | lessthan.circle.fill
41 | lessthan.square
42 | lessthan.square.fill
43 | greaterthan
44 | greaterthan.circle
45 | greaterthan.circle.fill
46 | greaterthan.square
47 | greaterthan.square.fill
48 | number
49 | number.circle
50 | number.circle.fill
51 | number.square
52 | number.square.fill
53 | x.squareroot
54 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Math.txt:
--------------------------------------------------------------------------------
1 | x.squareroot
2 | angle
3 | compass.drawing
4 | sum
5 | percent
6 | function
7 | plus
8 | plus.circle
9 | plus.circle.fill
10 | plus.square
11 | plus.square.fill
12 | plus.rectangle
13 | plus.rectangle.fill
14 | minus
15 | minus.circle
16 | minus.circle.fill
17 | minus.square
18 | minus.square.fill
19 | minus.rectangle
20 | minus.rectangle.fill
21 | plusminus
22 | plusminus.circle
23 | plusminus.circle.fill
24 | plus.forwardslash.minus
25 | minus.forwardslash.plus
26 | multiply
27 | multiply.circle
28 | multiply.circle.fill
29 | multiply.square
30 | multiply.square.fill
31 | divide
32 | divide.circle
33 | divide.circle.fill
34 | divide.square
35 | divide.square.fill
36 | equal
37 | equal.circle
38 | equal.circle.fill
39 | equal.square
40 | equal.square.fill
41 | lessthan
42 | lessthan.circle
43 | lessthan.circle.fill
44 | lessthan.square
45 | lessthan.square.fill
46 | greaterthan
47 | greaterthan.circle
48 | greaterthan.circle.fill
49 | greaterthan.square
50 | greaterthan.square.fill
51 | number
52 | number.circle
53 | number.circle.fill
54 | number.square
55 | number.square.fill
56 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Math.txt:
--------------------------------------------------------------------------------
1 | x.squareroot
2 | angle
3 | compass.drawing
4 | sum
5 | percent
6 | function
7 | plus
8 | plus.circle
9 | plus.circle.fill
10 | plus.square
11 | plus.square.fill
12 | plus.rectangle
13 | plus.rectangle.fill
14 | minus
15 | minus.circle
16 | minus.circle.fill
17 | minus.square
18 | minus.square.fill
19 | minus.rectangle
20 | minus.rectangle.fill
21 | plusminus
22 | plusminus.circle
23 | plusminus.circle.fill
24 | plus.forwardslash.minus
25 | minus.forwardslash.plus
26 | multiply
27 | multiply.circle
28 | multiply.circle.fill
29 | multiply.square
30 | multiply.square.fill
31 | divide
32 | divide.circle
33 | divide.circle.fill
34 | divide.square
35 | divide.square.fill
36 | equal
37 | equal.circle
38 | equal.circle.fill
39 | equal.square
40 | equal.square.fill
41 | lessthan
42 | lessthan.circle
43 | lessthan.circle.fill
44 | lessthan.square
45 | lessthan.square.fill
46 | greaterthan
47 | greaterthan.circle
48 | greaterthan.circle.fill
49 | greaterthan.square
50 | greaterthan.square.fill
51 | number
52 | number.circle
53 | number.circle.fill
54 | number.square
55 | number.square.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Shapes.txt:
--------------------------------------------------------------------------------
1 | circle
2 | circle.fill
3 | square
4 | square.fill
5 | app
6 | app.fill
7 | rectangle
8 | rectangle.fill
9 | rectangle.portrait
10 | rectangle.portrait.fill
11 | capsule
12 | capsule.fill
13 | capsule.portrait
14 | capsule.portrait.fill
15 | oval
16 | oval.fill
17 | oval.portrait
18 | oval.portrait.fill
19 | triangle
20 | triangle.fill
21 | triangleshape
22 | triangleshape.fill
23 | diamond
24 | diamond.fill
25 | octagon
26 | octagon.fill
27 | hexagon
28 | hexagon.fill
29 | pentagon
30 | pentagon.fill
31 | seal
32 | seal.fill
33 | rhombus
34 | rhombus.fill
35 | shield
36 | shield.fill
37 | viewfinder
38 | button.horizontal
39 | button.horizontal.fill
40 | button.roundedtop.horizontal
41 | button.roundedtop.horizontal.fill
42 | button.roundedbottom.horizontal
43 | button.roundedbottom.horizontal.fill
44 | button.angledtop.vertical.left
45 | button.angledtop.vertical.left.fill
46 | button.angledtop.vertical.right
47 | button.angledtop.vertical.right.fill
48 | button.angledbottom.horizontal.left
49 | button.angledbottom.horizontal.left.fill
50 | button.angledbottom.horizontal.right
51 | button.angledbottom.horizontal.right.fill
52 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Transportation.txt:
--------------------------------------------------------------------------------
1 | figure.walk
2 | figure.walk.circle
3 | figure.walk.circle.fill
4 | figure.walk.diamond
5 | figure.walk.diamond.fill
6 | figure.wave
7 | figure.wave.circle
8 | figure.wave.circle.fill
9 | airplane
10 | airplane.circle
11 | airplane.circle.fill
12 | airplane.arrival
13 | airplane.departure
14 | car
15 | car.fill
16 | car.circle
17 | car.circle.fill
18 | car.front.waves.up
19 | car.front.waves.up.fill
20 | car.rear
21 | car.rear.fill
22 | bolt.car
23 | bolt.car.fill
24 | bolt.car.circle
25 | bolt.car.circle.fill
26 | car.2
27 | car.2.fill
28 | bus
29 | bus.fill
30 | bus.doubledecker
31 | bus.doubledecker.fill
32 | tram
33 | tram.fill
34 | tram.circle
35 | tram.circle.fill
36 | tram.fill.tunnel
37 | cablecar
38 | cablecar.fill
39 | ferry
40 | ferry.fill
41 | car.ferry
42 | car.ferry.fill
43 | train.side.front.car
44 | train.side.middle.car
45 | train.side.rear.car
46 | box.truck
47 | box.truck.fill
48 | box.truck.badge.clock
49 | box.truck.badge.clock.fill
50 | bicycle
51 | bicycle.circle
52 | bicycle.circle.fill
53 | scooter
54 | sailboat
55 | sailboat.fill
56 | sailboat.circle
57 | sailboat.circle.fill
58 | fuelpump
59 | fuelpump.fill
60 | fuelpump.circle
61 | fuelpump.circle.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Text Formatting.txt:
--------------------------------------------------------------------------------
1 | fleuron
2 | fleuron.fill
3 | signature
4 | list.bullet
5 | list.bullet.circle
6 | list.bullet.circle.fill
7 | list.dash
8 | list.triangle
9 | list.bullet.indent
10 | list.number
11 | list.star
12 | increase.indent
13 | decrease.indent
14 | decrease.quotelevel
15 | increase.quotelevel
16 | quotelevel
17 | text.alignleft
18 | text.aligncenter
19 | text.alignright
20 | text.justify
21 | text.justify.left
22 | text.justify.right
23 | text.justify.leading
24 | text.justify.trailing
25 | text.redaction
26 | text.word.spacing
27 | arrow.up.and.down.text.horizontal
28 | arrow.left.and.right.text.vertical
29 | character
30 | textformat.size.smaller
31 | textformat.size.larger
32 | textformat.size
33 | textformat
34 | textformat.alt
35 | textformat.superscript
36 | textformat.subscript
37 | abc
38 | textformat.abc
39 | textformat.abc.dottedunderline
40 | bold
41 | italic
42 | underline
43 | strikethrough
44 | shadow
45 | bold.italic.underline
46 | bold.underline
47 | character.cursor.ibeam
48 | textformat.123
49 | 123.rectangle
50 | 123.rectangle.fill
51 | textformat.12
52 | character.textbox
53 | numbersign
54 | character.sutton
55 | character.duployan
56 | character.phonetic
57 | a.magnify
58 | paragraphsign
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Keyboard.txt:
--------------------------------------------------------------------------------
1 | command
2 | command.circle
3 | command.circle.fill
4 | command.square
5 | command.square.fill
6 | option
7 | alt
8 | clear
9 | clear.fill
10 | delete.left
11 | delete.left.fill
12 | delete.backward
13 | delete.backward.fill
14 | delete.right
15 | delete.right.fill
16 | delete.forward
17 | delete.forward.fill
18 | shift
19 | shift.fill
20 | capslock
21 | capslock.fill
22 | escape
23 | power
24 | power.circle
25 | power.circle.fill
26 | power.dotted
27 | globe
28 | globe.badge.chevron.backward
29 | sun.min
30 | sun.min.fill
31 | sun.max
32 | sun.max.fill
33 | sun.max.circle
34 | sun.max.circle.fill
35 | light.min
36 | light.max
37 | keyboard
38 | keyboard.fill
39 | keyboard.badge.ellipsis
40 | keyboard.chevron.compact.down
41 | keyboard.chevron.compact.left
42 | keyboard.onehanded.left
43 | keyboard.onehanded.right
44 | eject
45 | eject.fill
46 | eject.circle
47 | eject.circle.fill
48 | mount
49 | mount.fill
50 | control
51 | projective
52 | arrow.up.to.line
53 | arrow.up.to.line.compact
54 | arrow.down.to.line
55 | arrow.down.to.line.compact
56 | arrow.left.to.line
57 | arrow.left.to.line.compact
58 | arrow.backward.to.line
59 | arrow.right.to.line
60 | arrow.right.to.line.compact
61 | arrow.forward.to.line
62 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Text Formatting.txt:
--------------------------------------------------------------------------------
1 | fleuron
2 | fleuron.fill
3 | signature
4 | list.bullet
5 | list.bullet.circle
6 | list.bullet.circle.fill
7 | list.dash
8 | list.triangle
9 | list.bullet.indent
10 | list.number
11 | list.star
12 | increase.indent
13 | decrease.indent
14 | decrease.quotelevel
15 | increase.quotelevel
16 | quotelevel
17 | text.alignleft
18 | text.aligncenter
19 | text.alignright
20 | text.justify
21 | text.justify.left
22 | text.justify.right
23 | text.justify.leading
24 | text.justify.trailing
25 | text.redaction
26 | text.word.spacing
27 | arrow.up.and.down.text.horizontal
28 | arrow.left.and.right.text.vertical
29 | character
30 | textformat.size.smaller
31 | textformat.size.larger
32 | textformat.size
33 | textformat
34 | textformat.alt
35 | textformat.superscript
36 | textformat.subscript
37 | abc
38 | textformat.abc
39 | textformat.abc.dottedunderline
40 | kashida.arabic
41 | bold
42 | italic
43 | underline
44 | strikethrough
45 | shadow
46 | bold.italic.underline
47 | bold.underline
48 | character.cursor.ibeam
49 | textformat.123
50 | 123.rectangle
51 | 123.rectangle.fill
52 | textformat.12
53 | character.textbox
54 | numbersign
55 | character.sutton
56 | character.duployan
57 | character.phonetic
58 | character.magnify
59 | paragraphsign
60 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.5
2 | // The swift-tools-version declares the minimum version of Swift required to build this package.
3 |
4 | import PackageDescription
5 |
6 | let package = Package(
7 | name: "SymbolPicker",
8 | defaultLocalization: "en",
9 | platforms: [
10 | .macOS(.v12),
11 | ],
12 | products: [
13 | // Products define the executables and libraries a package produces, and make them visible to other packages.
14 | .library(
15 | name: "SymbolPicker",
16 | targets: ["SymbolPicker"]),
17 | ],
18 | dependencies: [
19 | // Dependencies declare other packages that this package depends on.
20 | // .package(url: /* package url */, from: "1.0.0"),
21 | ],
22 | targets: [
23 | // Targets are the basic building blocks of a package. A target can define a module or a test suite.
24 | // Targets can depend on other targets in this package, and on products in packages this package depends on.
25 | .target(
26 | name: "SymbolPicker",
27 | dependencies: [],
28 | resources: [
29 | .process("Resources/Monterey"),
30 | .process("Resources/Ventura"),
31 | .process("Resources/Sonoma"),
32 | ]),
33 | .testTarget(
34 | name: "SymbolPickerTests",
35 | dependencies: ["SymbolPicker"]),
36 | ]
37 | )
38 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/FieldEditor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FieldEditor.swift
3 | //
4 | //
5 | // Created by Francis Feng on 2022/7/19.
6 | //
7 |
8 | import Cocoa
9 |
10 | class FieldEditor: NSTextView {
11 | var caretWidth: CGFloat = 2
12 | var caretColor = NSColor.labelColor.withAlphaComponent(0.7)
13 |
14 | private lazy var radius = caretWidth / 2
15 | private lazy var displayAdjustment = caretWidth - 1
16 |
17 | override var isFieldEditor: Bool {
18 | get {
19 | return true
20 | }
21 | set {}
22 | }
23 |
24 | // Source: https://gist.github.com/importRyan/669999190f3b4db8e031c5971e7fa7ed
25 | open override func drawInsertionPoint(in rect: NSRect, color: NSColor, turnedOn flag: Bool) {
26 |
27 | var rect = rect
28 | rect.size.width = caretWidth
29 |
30 | let path = NSBezierPath(roundedRect: rect,
31 | xRadius: radius,
32 | yRadius: radius)
33 | path.setClip()
34 |
35 | super.drawInsertionPoint(in: rect,
36 | color: caretColor,
37 | turnedOn: flag)
38 | }
39 |
40 | open override func setNeedsDisplay(_ rect: NSRect, avoidAdditionalLayout flag: Bool) {
41 | var rect = rect
42 | rect.size.width += displayAdjustment
43 | super.setNeedsDisplay(rect, avoidAdditionalLayout: flag)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Weather.txt:
--------------------------------------------------------------------------------
1 | sun.min
2 | sun.min.fill
3 | sun.max
4 | sun.max.fill
5 | sun.max.circle
6 | sun.max.circle.fill
7 | sunrise
8 | sunrise.fill
9 | sunset
10 | sunset.fill
11 | sun.and.horizon
12 | sun.and.horizon.fill
13 | sun.dust
14 | sun.dust.fill
15 | sun.haze
16 | sun.haze.fill
17 | moon
18 | moon.fill
19 | moon.circle
20 | moon.circle.fill
21 | sparkles
22 | moon.stars
23 | moon.stars.fill
24 | cloud
25 | cloud.fill
26 | cloud.drizzle
27 | cloud.drizzle.fill
28 | cloud.rain
29 | cloud.rain.fill
30 | cloud.heavyrain
31 | cloud.heavyrain.fill
32 | cloud.fog
33 | cloud.fog.fill
34 | cloud.hail
35 | cloud.hail.fill
36 | cloud.snow
37 | cloud.snow.fill
38 | cloud.sleet
39 | cloud.sleet.fill
40 | cloud.bolt
41 | cloud.bolt.fill
42 | cloud.bolt.rain
43 | cloud.bolt.rain.fill
44 | cloud.sun
45 | cloud.sun.fill
46 | cloud.sun.rain
47 | cloud.sun.rain.fill
48 | cloud.sun.bolt
49 | cloud.sun.bolt.fill
50 | cloud.moon
51 | cloud.moon.fill
52 | cloud.moon.rain
53 | cloud.moon.rain.fill
54 | cloud.moon.bolt
55 | cloud.moon.bolt.fill
56 | smoke
57 | smoke.fill
58 | wind
59 | wind.snow
60 | snowflake
61 | snowflake.circle
62 | snowflake.circle.fill
63 | tornado
64 | tropicalstorm
65 | hurricane
66 | thermometer.sun
67 | thermometer.sun.fill
68 | thermometer.snowflake
69 | thermometer
70 | aqi.low
71 | aqi.medium
72 | aqi.high
73 | humidity
74 | humidity.fill
75 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/SplitViewController/SplitViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SplitViewController.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/7/26.
6 | //
7 |
8 | import Cocoa
9 |
10 | class SplitViewController: NSSplitViewController, NSCollectionViewDelegate {
11 |
12 | weak var symbolCollectionViewController: SymbolCollectionViewController?
13 |
14 | weak var pickerDelegate: SymbolPickerDelegate? {
15 | return symbolCollectionViewController?.pickerDelegate
16 | }
17 |
18 | var isColorChanged: Bool {
19 | return symbolCollectionViewController?.isColorChanged ?? false
20 | }
21 |
22 | var symbolsName: [String] {
23 | return symbolCollectionViewController!.symbolsName
24 | }
25 |
26 | func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set) {
27 | symbolCollectionViewController?.currentSelected = indexPaths
28 |
29 | guard let indexPath = indexPaths.first else { return }
30 | guard let window = view.window else { return }
31 |
32 | let symbol = symbolsName[indexPath.item]
33 | if isColorChanged {
34 | pickerDelegate?.symbolPicker(symbol, color: NSColorPanel.shared.color)
35 | } else {
36 | pickerDelegate?.symbolPicker(symbol, color: nil)
37 | }
38 | window.sheetParent?.endSheet(window, returnCode: .OK)
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Media.txt:
--------------------------------------------------------------------------------
1 | play
2 | play.fill
3 | play.circle
4 | play.circle.fill
5 | play.square
6 | play.square.fill
7 | play.rectangle
8 | play.rectangle.fill
9 | play.slash
10 | play.slash.fill
11 | pause
12 | pause.fill
13 | pause.circle
14 | pause.circle.fill
15 | pause.rectangle
16 | pause.rectangle.fill
17 | stop
18 | stop.fill
19 | stop.circle
20 | stop.circle.fill
21 | record.circle
22 | record.circle.fill
23 | playpause
24 | playpause.fill
25 | backward
26 | backward.fill
27 | backward.circle
28 | backward.circle.fill
29 | forward
30 | forward.fill
31 | forward.circle
32 | forward.circle.fill
33 | backward.end
34 | backward.end.fill
35 | forward.end
36 | forward.end.fill
37 | backward.end.alt
38 | backward.end.alt.fill
39 | forward.end.alt
40 | forward.end.alt.fill
41 | backward.frame
42 | backward.frame.fill
43 | forward.frame
44 | forward.frame.fill
45 | shuffle
46 | shuffle.circle
47 | shuffle.circle.fill
48 | repeat
49 | repeat.circle
50 | repeat.circle.fill
51 | repeat.1
52 | repeat.1.circle
53 | repeat.1.circle.fill
54 | infinity
55 | infinity.circle
56 | infinity.circle.fill
57 | arrow.rectanglepath
58 | goforward
59 | gobackward
60 | goforward.5
61 | gobackward.5
62 | goforward.10
63 | gobackward.10
64 | goforward.15
65 | gobackward.15
66 | goforward.30
67 | gobackward.30
68 | goforward.45
69 | gobackward.45
70 | goforward.60
71 | gobackward.60
72 | goforward.75
73 | gobackward.75
74 | goforward.90
75 | gobackward.90
76 | goforward.plus
77 | gobackward.minus
78 | text.insert
79 | text.append
80 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Keyboard.txt:
--------------------------------------------------------------------------------
1 | command
2 | command.circle
3 | command.circle.fill
4 | command.square
5 | command.square.fill
6 | space
7 | option
8 | alt
9 | control
10 | projective
11 | chevron.left.to.line
12 | chevron.right.to.line
13 | chevron.backward.to.line
14 | chevron.forward.to.line
15 | escape
16 | light.min
17 | light.max
18 | power
19 | power.circle
20 | power.circle.fill
21 | power.dotted
22 | clear
23 | clear.fill
24 | delete.left
25 | delete.left.fill
26 | delete.backward
27 | delete.backward.fill
28 | delete.right
29 | delete.right.fill
30 | delete.forward
31 | delete.forward.fill
32 | shift
33 | shift.fill
34 | capslock
35 | capslock.fill
36 | eject
37 | eject.fill
38 | eject.circle
39 | eject.circle.fill
40 | mount
41 | mount.fill
42 | keyboard
43 | keyboard.fill
44 | keyboard.badge.ellipsis
45 | keyboard.badge.ellipsis.fill
46 | keyboard.badge.eye
47 | keyboard.badge.eye.fill
48 | keyboard.chevron.compact.down
49 | keyboard.chevron.compact.down.fill
50 | keyboard.chevron.compact.left
51 | keyboard.chevron.compact.left.fill
52 | keyboard.onehanded.left
53 | keyboard.onehanded.left.fill
54 | keyboard.onehanded.right
55 | keyboard.onehanded.right.fill
56 | globe
57 | globe.badge.chevron.backward
58 | sun.min
59 | sun.min.fill
60 | sun.max
61 | sun.max.fill
62 | sun.max.circle
63 | sun.max.circle.fill
64 | arrow.up.to.line
65 | arrow.up.to.line.compact
66 | arrow.down.to.line
67 | arrow.down.to.line.compact
68 | arrow.left.to.line
69 | arrow.left.to.line.compact
70 | arrow.backward.to.line
71 | arrow.right.to.line
72 | arrow.right.to.line.compact
73 | arrow.forward.to.line
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Keyboard.txt:
--------------------------------------------------------------------------------
1 | command
2 | command.circle
3 | command.circle.fill
4 | command.square
5 | command.square.fill
6 | space
7 | option
8 | alt
9 | control
10 | projective
11 | chevron.left.to.line
12 | chevron.right.to.line
13 | chevron.backward.to.line
14 | chevron.forward.to.line
15 | escape
16 | light.min
17 | light.max
18 | power
19 | power.circle
20 | power.circle.fill
21 | power.dotted
22 | clear
23 | clear.fill
24 | delete.left
25 | delete.left.fill
26 | delete.backward
27 | delete.backward.fill
28 | delete.right
29 | delete.right.fill
30 | delete.forward
31 | delete.forward.fill
32 | shift
33 | shift.fill
34 | capslock
35 | capslock.fill
36 | eject
37 | eject.fill
38 | eject.circle
39 | eject.circle.fill
40 | mount
41 | mount.fill
42 | keyboard
43 | keyboard.fill
44 | keyboard.badge.ellipsis
45 | keyboard.badge.ellipsis.fill
46 | keyboard.badge.eye
47 | keyboard.badge.eye.fill
48 | keyboard.chevron.compact.down
49 | keyboard.chevron.compact.down.fill
50 | keyboard.chevron.compact.left
51 | keyboard.chevron.compact.left.fill
52 | keyboard.onehanded.left
53 | keyboard.onehanded.left.fill
54 | keyboard.onehanded.right
55 | keyboard.onehanded.right.fill
56 | globe
57 | globe.badge.chevron.backward
58 | sun.min
59 | sun.min.fill
60 | sun.max
61 | sun.max.fill
62 | sun.max.circle
63 | sun.max.circle.fill
64 | arrow.up.to.line
65 | arrow.up.to.line.compact
66 | arrow.down.to.line
67 | arrow.down.to.line.compact
68 | arrow.left.to.line
69 | arrow.left.to.line.compact
70 | arrow.backward.to.line
71 | arrow.right.to.line
72 | arrow.right.to.line.compact
73 | arrow.forward.to.line
74 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Health.txt:
--------------------------------------------------------------------------------
1 | list.bullet.clipboard
2 | list.bullet.clipboard.fill
3 | list.clipboard
4 | list.clipboard.fill
5 | heart
6 | heart.fill
7 | heart.circle
8 | heart.circle.fill
9 | bolt.heart
10 | bolt.heart.fill
11 | cross.case
12 | cross.case.fill
13 | cross.case.circle
14 | cross.case.circle.fill
15 | bed.double
16 | bed.double.fill
17 | bed.double.circle
18 | bed.double.circle.fill
19 | lungs
20 | lungs.fill
21 | allergens
22 | allergens.fill
23 | microbe
24 | microbe.fill
25 | microbe.circle
26 | microbe.circle.fill
27 | bubbles.and.sparkles
28 | bubbles.and.sparkles.fill
29 | medical.thermometer
30 | medical.thermometer.fill
31 | bandage
32 | bandage.fill
33 | syringe
34 | syringe.fill
35 | facemask
36 | facemask.fill
37 | pill
38 | pill.fill
39 | pill.circle
40 | pill.circle.fill
41 | pills
42 | pills.fill
43 | pills.circle
44 | pills.circle.fill
45 | cross
46 | cross.fill
47 | cross.circle
48 | cross.circle.fill
49 | ivfluid.bag
50 | ivfluid.bag.fill
51 | cross.vial
52 | cross.vial.fill
53 | staroflife
54 | staroflife.fill
55 | staroflife.circle
56 | staroflife.circle.fill
57 | heart.text.square
58 | heart.text.square.fill
59 | eye
60 | eye.fill
61 | eye.circle
62 | eye.circle.fill
63 | eye.square
64 | eye.square.fill
65 | eye.slash
66 | eye.slash.fill
67 | eye.trianglebadge.exclamationmark
68 | eye.trianglebadge.exclamationmark.fill
69 | brain.head.profile
70 | brain
71 | ear
72 | ear.badge.checkmark
73 | ear.trianglebadge.exclamationmark
74 | ear.and.waveform
75 | ear.fill
76 | vial.viewfinder
77 | waveform.path.ecg
78 | waveform.path.ecg.rectangle
79 | waveform.path.ecg.rectangle.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Health.txt:
--------------------------------------------------------------------------------
1 | list.bullet.clipboard
2 | list.bullet.clipboard.fill
3 | list.clipboard
4 | list.clipboard.fill
5 | pencil.and.list.clipboard
6 | heart
7 | heart.fill
8 | heart.circle
9 | heart.circle.fill
10 | bolt.heart
11 | bolt.heart.fill
12 | stethoscope
13 | stethoscope.circle
14 | stethoscope.circle.fill
15 | cross.case
16 | cross.case.fill
17 | cross.case.circle
18 | cross.case.circle.fill
19 | bed.double
20 | bed.double.fill
21 | bed.double.circle
22 | bed.double.circle.fill
23 | lungs
24 | lungs.fill
25 | allergens
26 | allergens.fill
27 | microbe
28 | microbe.fill
29 | microbe.circle
30 | microbe.circle.fill
31 | bubbles.and.sparkles
32 | bubbles.and.sparkles.fill
33 | medical.thermometer
34 | medical.thermometer.fill
35 | bandage
36 | bandage.fill
37 | syringe
38 | syringe.fill
39 | facemask
40 | facemask.fill
41 | pill
42 | pill.fill
43 | pill.circle
44 | pill.circle.fill
45 | pills
46 | pills.fill
47 | pills.circle
48 | pills.circle.fill
49 | cross
50 | cross.fill
51 | cross.circle
52 | cross.circle.fill
53 | ivfluid.bag
54 | ivfluid.bag.fill
55 | cross.vial
56 | cross.vial.fill
57 | staroflife
58 | staroflife.fill
59 | staroflife.circle
60 | staroflife.circle.fill
61 | heart.text.square
62 | heart.text.square.fill
63 | eye
64 | eye.fill
65 | eye.circle
66 | eye.circle.fill
67 | eye.square
68 | eye.square.fill
69 | eye.slash
70 | eye.slash.fill
71 | eye.trianglebadge.exclamationmark
72 | eye.trianglebadge.exclamationmark.fill
73 | brain.head.profile
74 | brain.head.profile.fill
75 | brain.filled.head.profile
76 | brain
77 | brain.fill
78 | ear
79 | ear.fill
80 | ear.badge.checkmark
81 | ear.trianglebadge.exclamationmark
82 | ear.badge.waveform
83 | vial.viewfinder
84 | waveform.path.ecg
85 | waveform.path.ecg.rectangle
86 | waveform.path.ecg.rectangle.fill
87 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Media.txt:
--------------------------------------------------------------------------------
1 | play
2 | play.fill
3 | play.circle
4 | play.circle.fill
5 | play.square
6 | play.square.fill
7 | play.rectangle
8 | play.rectangle.fill
9 | play.square.stack
10 | play.square.stack.fill
11 | play.slash
12 | play.slash.fill
13 | pause
14 | pause.fill
15 | pause.circle
16 | pause.circle.fill
17 | pause.rectangle
18 | pause.rectangle.fill
19 | stop
20 | stop.fill
21 | stop.circle
22 | stop.circle.fill
23 | record.circle
24 | record.circle.fill
25 | playpause
26 | playpause.fill
27 | playpause.circle
28 | playpause.circle.fill
29 | backward
30 | backward.fill
31 | backward.circle
32 | backward.circle.fill
33 | forward
34 | forward.fill
35 | forward.circle
36 | forward.circle.fill
37 | backward.end
38 | backward.end.fill
39 | backward.end.circle
40 | backward.end.circle.fill
41 | forward.end
42 | forward.end.fill
43 | forward.end.circle
44 | forward.end.circle.fill
45 | backward.end.alt
46 | backward.end.alt.fill
47 | forward.end.alt
48 | forward.end.alt.fill
49 | backward.frame
50 | backward.frame.fill
51 | forward.frame
52 | forward.frame.fill
53 | shuffle
54 | shuffle.circle
55 | shuffle.circle.fill
56 | repeat
57 | repeat.circle
58 | repeat.circle.fill
59 | repeat.1
60 | repeat.1.circle
61 | repeat.1.circle.fill
62 | infinity
63 | infinity.circle
64 | infinity.circle.fill
65 | arrow.rectanglepath
66 | goforward
67 | gobackward
68 | goforward.5
69 | gobackward.5
70 | goforward.10
71 | gobackward.10
72 | goforward.15
73 | gobackward.15
74 | goforward.30
75 | gobackward.30
76 | goforward.45
77 | gobackward.45
78 | goforward.60
79 | gobackward.60
80 | goforward.75
81 | gobackward.75
82 | goforward.90
83 | gobackward.90
84 | goforward.plus
85 | gobackward.minus
86 | text.insert
87 | text.append
88 | text.line.first.and.arrowtriangle.forward
89 | text.line.last.and.arrowtriangle.forward
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Connectivity.txt:
--------------------------------------------------------------------------------
1 | externaldrive.connected.to.line.below
2 | externaldrive.connected.to.line.below.fill
3 | personalhotspot
4 | personalhotspot.circle
5 | personalhotspot.circle.fill
6 | network
7 | network.badge.shield.half.filled
8 | bolt.horizontal
9 | bolt.horizontal.fill
10 | bolt.horizontal.circle
11 | bolt.horizontal.circle.fill
12 | icloud
13 | icloud.fill
14 | icloud.circle
15 | icloud.circle.fill
16 | icloud.square
17 | icloud.square.fill
18 | icloud.slash
19 | icloud.slash.fill
20 | exclamationmark.icloud
21 | exclamationmark.icloud.fill
22 | checkmark.icloud
23 | checkmark.icloud.fill
24 | xmark.icloud
25 | xmark.icloud.fill
26 | link.icloud
27 | link.icloud.fill
28 | bolt.horizontal.icloud
29 | bolt.horizontal.icloud.fill
30 | person.icloud
31 | person.icloud.fill
32 | lock.icloud
33 | lock.icloud.fill
34 | key.icloud
35 | key.icloud.fill
36 | arrow.clockwise.icloud
37 | arrow.clockwise.icloud.fill
38 | arrow.counterclockwise.icloud
39 | arrow.counterclockwise.icloud.fill
40 | icloud.and.arrow.down
41 | icloud.and.arrow.down.fill
42 | icloud.and.arrow.up
43 | icloud.and.arrow.up.fill
44 | wifi
45 | wifi.circle
46 | wifi.circle.fill
47 | wifi.square
48 | wifi.square.fill
49 | wifi.slash
50 | wifi.exclamationmark
51 | dot.radiowaves.left.and.right
52 | dot.radiowaves.right
53 | dot.radiowaves.forward
54 | wave.3.left
55 | wave.3.left.circle
56 | wave.3.left.circle.fill
57 | wave.3.backward
58 | wave.3.backward.circle
59 | wave.3.backward.circle.fill
60 | wave.3.right
61 | wave.3.right.circle
62 | wave.3.right.circle.fill
63 | wave.3.forward
64 | wave.3.forward.circle
65 | wave.3.forward.circle.fill
66 | dot.radiowaves.up.forward
67 | antenna.radiowaves.left.and.right
68 | antenna.radiowaves.left.and.right.slash
69 | antenna.radiowaves.left.and.right.circle
70 | antenna.radiowaves.left.and.right.circle.fill
71 | bonjour
72 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Transportation.txt:
--------------------------------------------------------------------------------
1 | figure.walk
2 | figure.walk.circle
3 | figure.walk.circle.fill
4 | figure.walk.diamond
5 | figure.walk.diamond.fill
6 | figure.wave
7 | figure.wave.circle
8 | figure.wave.circle.fill
9 | airplane
10 | airplane.circle
11 | airplane.circle.fill
12 | airplane.arrival
13 | airplane.departure
14 | car
15 | car.fill
16 | car.circle
17 | car.circle.fill
18 | car.front.waves.up
19 | car.front.waves.up.fill
20 | car.front.waves.down
21 | car.front.waves.down.fill
22 | car.rear
23 | car.rear.fill
24 | bolt.car
25 | bolt.car.fill
26 | bolt.car.circle
27 | bolt.car.circle.fill
28 | car.2
29 | car.2.fill
30 | bus
31 | bus.fill
32 | bus.doubledecker
33 | bus.doubledecker.fill
34 | tram
35 | tram.fill
36 | tram.circle
37 | tram.circle.fill
38 | tram.fill.tunnel
39 | cablecar
40 | cablecar.fill
41 | lightrail
42 | lightrail.fill
43 | ferry
44 | ferry.fill
45 | car.ferry
46 | car.ferry.fill
47 | sailboat
48 | sailboat.fill
49 | sailboat.circle
50 | sailboat.circle.fill
51 | train.side.front.car
52 | train.side.middle.car
53 | train.side.rear.car
54 | truck.box
55 | truck.box.fill
56 | truck.box.badge.clock
57 | truck.box.badge.clock.fill
58 | bicycle
59 | bicycle.circle
60 | bicycle.circle.fill
61 | scooter
62 | fuelpump
63 | fuelpump.fill
64 | fuelpump.circle
65 | fuelpump.circle.fill
66 | fuelpump.slash
67 | fuelpump.slash.fill
68 | fuelpump.exclamationmark
69 | fuelpump.exclamationmark.fill
70 | fuelpump.arrowtriangle.left
71 | fuelpump.arrowtriangle.left.fill
72 | fuelpump.arrowtriangle.right
73 | fuelpump.arrowtriangle.right.fill
74 | ev.charger
75 | ev.charger.fill
76 | ev.charger.slash
77 | ev.charger.slash.fill
78 | ev.charger.exclamationmark
79 | ev.charger.exclamationmark.fill
80 | ev.charger.arrowtriangle.left
81 | ev.charger.arrowtriangle.left.fill
82 | ev.charger.arrowtriangle.right
83 | ev.charger.arrowtriangle.right.fill
84 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Connectivity.txt:
--------------------------------------------------------------------------------
1 | externaldrive.connected.to.line.below
2 | externaldrive.connected.to.line.below.fill
3 | personalhotspot
4 | personalhotspot.circle
5 | personalhotspot.circle.fill
6 | network
7 | network.badge.shield.half.filled
8 | bolt.horizontal
9 | bolt.horizontal.fill
10 | bolt.horizontal.circle
11 | bolt.horizontal.circle.fill
12 | icloud
13 | icloud.fill
14 | icloud.circle
15 | icloud.circle.fill
16 | icloud.square
17 | icloud.square.fill
18 | icloud.slash
19 | icloud.slash.fill
20 | exclamationmark.icloud
21 | exclamationmark.icloud.fill
22 | checkmark.icloud
23 | checkmark.icloud.fill
24 | xmark.icloud
25 | xmark.icloud.fill
26 | link.icloud
27 | link.icloud.fill
28 | bolt.horizontal.icloud
29 | bolt.horizontal.icloud.fill
30 | person.icloud
31 | person.icloud.fill
32 | lock.icloud
33 | lock.icloud.fill
34 | key.icloud
35 | key.icloud.fill
36 | arrow.clockwise.icloud
37 | arrow.clockwise.icloud.fill
38 | arrow.counterclockwise.icloud
39 | arrow.counterclockwise.icloud.fill
40 | icloud.and.arrow.down
41 | icloud.and.arrow.down.fill
42 | icloud.and.arrow.up
43 | icloud.and.arrow.up.fill
44 | wifi
45 | wifi.circle
46 | wifi.circle.fill
47 | wifi.square
48 | wifi.square.fill
49 | wifi.slash
50 | wifi.exclamationmark
51 | dot.radiowaves.left.and.right
52 | dot.radiowaves.right
53 | dot.radiowaves.forward
54 | wave.3.left
55 | wave.3.left.circle
56 | wave.3.left.circle.fill
57 | wave.3.backward
58 | wave.3.backward.circle
59 | wave.3.backward.circle.fill
60 | wave.3.right
61 | wave.3.right.circle
62 | wave.3.right.circle.fill
63 | wave.3.forward
64 | wave.3.forward.circle
65 | wave.3.forward.circle.fill
66 | dot.radiowaves.up.forward
67 | antenna.radiowaves.left.and.right
68 | antenna.radiowaves.left.and.right.circle
69 | antenna.radiowaves.left.and.right.circle.fill
70 | antenna.radiowaves.left.and.right.slash
71 | chart.bar
72 | chart.bar.fill
73 | cellularbars
74 | bonjour
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Media.txt:
--------------------------------------------------------------------------------
1 | play
2 | play.fill
3 | play.circle
4 | play.circle.fill
5 | play.square
6 | play.square.fill
7 | play.rectangle
8 | play.rectangle.fill
9 | play.square.stack
10 | play.square.stack.fill
11 | play.slash
12 | play.slash.fill
13 | pause
14 | pause.fill
15 | pause.circle
16 | pause.circle.fill
17 | pause.rectangle
18 | pause.rectangle.fill
19 | stop
20 | stop.fill
21 | stop.circle
22 | stop.circle.fill
23 | record.circle
24 | record.circle.fill
25 | playpause
26 | playpause.fill
27 | playpause.circle
28 | playpause.circle.fill
29 | backward
30 | backward.fill
31 | backward.circle
32 | backward.circle.fill
33 | forward
34 | forward.fill
35 | forward.circle
36 | forward.circle.fill
37 | backward.end
38 | backward.end.fill
39 | backward.end.circle
40 | backward.end.circle.fill
41 | forward.end
42 | forward.end.fill
43 | forward.end.circle
44 | forward.end.circle.fill
45 | backward.end.alt
46 | backward.end.alt.fill
47 | forward.end.alt
48 | forward.end.alt.fill
49 | backward.frame
50 | backward.frame.fill
51 | forward.frame
52 | forward.frame.fill
53 | shuffle
54 | shuffle.circle
55 | shuffle.circle.fill
56 | repeat
57 | repeat.circle
58 | repeat.circle.fill
59 | repeat.1
60 | repeat.1.circle
61 | repeat.1.circle.fill
62 | infinity
63 | infinity.circle
64 | infinity.circle.fill
65 | arrow.rectanglepath
66 | checkmark.gobackward
67 | goforward
68 | gobackward
69 | goforward.5
70 | gobackward.5
71 | goforward.10
72 | gobackward.10
73 | goforward.15
74 | gobackward.15
75 | goforward.30
76 | gobackward.30
77 | goforward.45
78 | gobackward.45
79 | goforward.60
80 | gobackward.60
81 | goforward.75
82 | gobackward.75
83 | goforward.90
84 | gobackward.90
85 | goforward.plus
86 | gobackward.minus
87 | music.note.house
88 | music.note.house.fill
89 | play.house
90 | play.house.fill
91 | text.insert
92 | text.append
93 | text.line.first.and.arrowtriangle.forward
94 | text.line.last.and.arrowtriangle.forward
95 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Editing.txt:
--------------------------------------------------------------------------------
1 | pencil
2 | pencil.circle
3 | pencil.circle.fill
4 | pencil.slash
5 | square.and.pencil
6 | rectangle.and.pencil.and.ellipsis
7 | scribble
8 | scribble.variable
9 | highlighter
10 | pencil.and.outline
11 | pencil.tip
12 | pencil.tip.crop.circle
13 | pencil.tip.crop.circle.badge.plus
14 | pencil.tip.crop.circle.badge.minus
15 | pencil.tip.crop.circle.badge.arrow.forward
16 | lasso
17 | lasso.and.sparkles
18 | loupe
19 | circle.lefthalf.filled
20 | circle.righthalf.filled
21 | circle.dashed
22 | circle.dashed.inset.filled
23 | square.dashed
24 | square.dashed.inset.filled
25 | eye.slash
26 | eye.slash.fill
27 | signature
28 | scissors
29 | scissors.circle
30 | scissors.circle.fill
31 | scissors.badge.ellipsis
32 | wand.and.rays
33 | wand.and.rays.inverse
34 | wand.and.stars
35 | wand.and.stars.inverse
36 | crop
37 | crop.rotate
38 | dial.min
39 | dial.min.fill
40 | dial.max
41 | dial.max.fill
42 | paintbrush
43 | paintbrush.fill
44 | paintbrush.pointed
45 | paintbrush.pointed.fill
46 | bandage
47 | bandage.fill
48 | eyedropper
49 | eyedropper.halffull
50 | eyedropper.full
51 | move.3d
52 | scale.3d
53 | rotate.3d
54 | rotate.left
55 | rotate.left.fill
56 | rotate.right
57 | rotate.right.fill
58 | selection.pin.in.out
59 | timeline.selection
60 | rectangle.dashed
61 | rectangle.dashed.badge.record
62 | slider.horizontal.3
63 | slider.horizontal.below.rectangle
64 | slider.horizontal.below.square.filled.and.square
65 | slider.vertical.3
66 | perspective
67 | circle.and.line.horizontal
68 | circle.and.line.horizontal.fill
69 | trapezoid.and.line.vertical
70 | trapezoid.and.line.vertical.fill
71 | trapezoid.and.line.horizontal
72 | trapezoid.and.line.horizontal.fill
73 | aspectratio
74 | aspectratio.fill
75 | camera.filters
76 | skew
77 | arrow.left.and.right.righttriangle.left.righttriangle.right
78 | arrow.left.and.right.righttriangle.left.righttriangle.right.fill
79 | arrow.up.and.down.righttriangle.up.righttriangle.down
80 | arrow.up.and.down.righttriangle.up.righttriangle.down.fill
81 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Connectivity.txt:
--------------------------------------------------------------------------------
1 | externaldrive.connected.to.line.below
2 | externaldrive.connected.to.line.below.fill
3 | personalhotspot
4 | personalhotspot.circle
5 | personalhotspot.circle.fill
6 | network
7 | network.slash
8 | network.badge.shield.half.filled
9 | bolt.horizontal
10 | bolt.horizontal.fill
11 | bolt.horizontal.circle
12 | bolt.horizontal.circle.fill
13 | icloud
14 | icloud.fill
15 | icloud.circle
16 | icloud.circle.fill
17 | icloud.square
18 | icloud.square.fill
19 | icloud.slash
20 | icloud.slash.fill
21 | exclamationmark.icloud
22 | exclamationmark.icloud.fill
23 | checkmark.icloud
24 | checkmark.icloud.fill
25 | xmark.icloud
26 | xmark.icloud.fill
27 | link.icloud
28 | link.icloud.fill
29 | bolt.horizontal.icloud
30 | bolt.horizontal.icloud.fill
31 | person.icloud
32 | person.icloud.fill
33 | lock.icloud
34 | lock.icloud.fill
35 | key.icloud
36 | key.icloud.fill
37 | arrow.clockwise.icloud
38 | arrow.clockwise.icloud.fill
39 | arrow.counterclockwise.icloud
40 | arrow.counterclockwise.icloud.fill
41 | arrow.triangle.2.circlepath.icloud
42 | arrow.triangle.2.circlepath.icloud.fill
43 | icloud.and.arrow.down
44 | icloud.and.arrow.down.fill
45 | icloud.and.arrow.up
46 | icloud.and.arrow.up.fill
47 | wifi
48 | wifi.circle
49 | wifi.circle.fill
50 | wifi.square
51 | wifi.square.fill
52 | wifi.slash
53 | wifi.exclamationmark
54 | wifi.exclamationmark.circle
55 | wifi.exclamationmark.circle.fill
56 | dot.radiowaves.left.and.right
57 | dot.radiowaves.right
58 | dot.radiowaves.forward
59 | wave.3.left
60 | wave.3.left.circle
61 | wave.3.left.circle.fill
62 | wave.3.backward
63 | wave.3.backward.circle
64 | wave.3.backward.circle.fill
65 | wave.3.right
66 | wave.3.right.circle
67 | wave.3.right.circle.fill
68 | wave.3.forward
69 | wave.3.forward.circle
70 | wave.3.forward.circle.fill
71 | dot.radiowaves.up.forward
72 | antenna.radiowaves.left.and.right
73 | antenna.radiowaves.left.and.right.circle
74 | antenna.radiowaves.left.and.right.circle.fill
75 | antenna.radiowaves.left.and.right.slash
76 | chart.bar
77 | chart.bar.fill
78 | cellularbars
79 | bonjour
80 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/WindowController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SymbolPicker.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/3.
6 | //
7 |
8 | import AppKit
9 |
10 | open class WindowController: NSWindowController {
11 |
12 | @IBOutlet weak var searchField: NSSearchField?
13 |
14 | weak var delegate: SymbolPickerDelegate?
15 |
16 | weak var collectionViewController: SymbolCollectionViewController?
17 |
18 | open override func windowDidLoad() {
19 | super.windowDidLoad()
20 | updateWindowTitle("SF Symbols".localized)
21 | window?.isReleasedWhenClosed = true
22 | configureDelegates()
23 | }
24 |
25 | public func configureCurrentItem(symbol: String, color: NSColor) {
26 | collectionViewController?.configureCurrentItem(symbol: symbol, color: color)
27 | }
28 |
29 | public func toggleColorPanelButton(_ isHidden: Bool) {
30 | collectionViewController?.toggleColorPanelButton(isHidden)
31 | }
32 |
33 | public func updateWindowTitle(_ title: String) {
34 | collectionViewController?.titleField.stringValue = title
35 | }
36 |
37 | private func configureDelegates() {
38 | if let splitViewController = window?.contentViewController as? SplitViewController,
39 | let sidebar = splitViewController.splitViewItems.first?.viewController as? SidebarViewController,
40 | let collections = splitViewController.splitViewItems.last?.viewController as? SymbolCollectionViewController {
41 | collections.pickerDelegate = self
42 | sidebar.delegate = collections
43 | collectionViewController = collections
44 | splitViewController.symbolCollectionViewController = collectionViewController
45 | collectionViewController?.collectionView.delegate = splitViewController
46 | }
47 | }
48 |
49 | @IBAction func performFindPanelAction(_ sender: Any) {
50 | self.window?.makeFirstResponder(collectionViewController?.searchField)
51 | }
52 | }
53 |
54 | extension WindowController: SymbolPickerDelegate {
55 | public func symbolPicker(_ symbol: String, color: NSColor?) {
56 | delegate?.symbolPicker(symbol, color: color)
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Editing.txt:
--------------------------------------------------------------------------------
1 | pencil
2 | pencil.circle
3 | pencil.circle.fill
4 | pencil.slash
5 | pencil.line
6 | eraser
7 | eraser.fill
8 | eraser.line.dashed
9 | eraser.line.dashed.fill
10 | square.and.pencil
11 | square.and.pencil.circle
12 | square.and.pencil.circle.fill
13 | rectangle.and.pencil.and.ellipsis
14 | scribble
15 | scribble.variable
16 | highlighter
17 | pencil.and.outline
18 | pencil.tip
19 | pencil.tip.crop.circle
20 | pencil.tip.crop.circle.badge.plus
21 | pencil.tip.crop.circle.badge.minus
22 | pencil.tip.crop.circle.badge.arrow.forward
23 | lasso
24 | lasso.and.sparkles
25 | loupe
26 | circle.lefthalf.filled
27 | circle.righthalf.filled
28 | circle.dashed
29 | circle.dashed.inset.filled
30 | square.dashed
31 | square.dashed.inset.filled
32 | signature
33 | scissors
34 | scissors.circle
35 | scissors.circle.fill
36 | scissors.badge.ellipsis
37 | wand.and.rays
38 | wand.and.rays.inverse
39 | wand.and.stars
40 | wand.and.stars.inverse
41 | crop
42 | crop.rotate
43 | dial.low
44 | dial.low.fill
45 | dial.medium
46 | dial.medium.fill
47 | dial.high
48 | dial.high.fill
49 | paintbrush
50 | paintbrush.fill
51 | paintbrush.pointed
52 | paintbrush.pointed.fill
53 | eyedropper
54 | eyedropper.halffull
55 | eyedropper.full
56 | move.3d
57 | scale.3d
58 | rotate.3d
59 | rotate.left
60 | rotate.left.fill
61 | rotate.right
62 | rotate.right.fill
63 | selection.pin.in.out
64 | timeline.selection
65 | bandage
66 | bandage.fill
67 | rectangle.dashed
68 | rectangle.dashed.badge.record
69 | slider.horizontal.3
70 | slider.horizontal.2.square.on.square
71 | slider.horizontal.2.square.badge.arrow.down
72 | slider.horizontal.2.gobackward
73 | slider.horizontal.below.rectangle
74 | slider.horizontal.below.square.filled.and.square
75 | slider.horizontal.below.square.and.square.filled
76 | slider.vertical.3
77 | perspective
78 | circle.and.line.horizontal
79 | circle.and.line.horizontal.fill
80 | trapezoid.and.line.vertical
81 | trapezoid.and.line.vertical.fill
82 | trapezoid.and.line.horizontal
83 | trapezoid.and.line.horizontal.fill
84 | aspectratio
85 | aspectratio.fill
86 | camera.filters
87 | skew
88 | arrow.left.and.right.righttriangle.left.righttriangle.right
89 | arrow.left.and.right.righttriangle.left.righttriangle.right.fill
90 | arrow.up.and.down.righttriangle.up.righttriangle.down
91 | arrow.up.and.down.righttriangle.up.righttriangle.down.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/SymbolCollection/SymbolView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SymbolItem.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/4.
6 | //
7 |
8 | import AppKit
9 |
10 | extension NSUserInterfaceItemIdentifier {
11 | static let SymbolView = Self("SymbolView")
12 | }
13 |
14 | class SymbolView: NSCollectionViewItem {
15 |
16 | weak var boxView: NSBox!
17 | weak var imageViewForSymbol: NSImageView!
18 |
19 | let viewFrame = NSRect(x: 0, y: 0, width: 44, height: 36)
20 |
21 | weak var viewController: SymbolCollectionViewController?
22 |
23 | override init(nibName: NSNib.Name?, bundle: Bundle?) {
24 | super.init(nibName: nil, bundle: .module)
25 | view = NSView(frame: viewFrame)
26 | view.postsFrameChangedNotifications = false
27 | view.postsBoundsChangedNotifications = false
28 | view.wantsLayer = true
29 | addBoxView()
30 | addImageView()
31 | }
32 |
33 | required init?(coder: NSCoder) {
34 | fatalError("init(coder:) has not been implemented")
35 | }
36 |
37 | override func mouseDown(with event: NSEvent) {
38 | if event.clickCount > 1 && isSelected {
39 | viewController?.selectCurrent()
40 | } else {
41 | super.mouseDown(with: event)
42 | }
43 | }
44 |
45 | override func loadView() {}
46 |
47 | override var isSelected: Bool {
48 | didSet {
49 | self.boxView.borderWidth = isSelected ? 2 : 1
50 | self.boxView.borderColor = isSelected ? .controlAccentColor : .separatorColor
51 | }
52 | }
53 |
54 | func addBoxView() {
55 | let boxView = NSBox(frame: viewFrame)
56 | boxView.layer?.masksToBounds = true
57 | boxView.titlePosition = .noTitle
58 | boxView.cornerRadius = 8
59 | boxView.boxType = .custom
60 | boxView.borderColor = .separatorColor
61 | boxView.wantsLayer = true
62 | self.boxView = boxView
63 | view.addSubview(boxView)
64 | }
65 |
66 | func addImageView() {
67 | let imageView = NSImageView()
68 | self.imageViewForSymbol = imageView
69 | imageView.wantsLayer = true
70 | boxView.addSubview(imageView)
71 | imageView.translatesAutoresizingMaskIntoConstraints = false
72 | NSLayoutConstraint.activate([
73 | boxView.centerYAnchor.constraint(equalTo: imageView.centerYAnchor),
74 | boxView.centerXAnchor.constraint(equalTo: imageView.centerXAnchor)
75 | ])
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Symbol Picker
2 |
3 | A SF Symbols picker for Mac apps. Built with AppKit.
4 |
5 | ## Compatibility
6 |
7 | - macOS 11.0+
8 |
9 | ## Install
10 |
11 | Add `https://github.com/francisfeng/SymbolPicker` in the [“Swift Package Manager” tab in Xcode](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app).
12 |
13 | ## Usage
14 |
15 | 
16 |
17 | 1. AppKit
18 | ```swift
19 |
20 | // in your NSViewController subclass
21 | import SymbolPicker
22 |
23 | @objc func pickIcon(_ sender: Any) {
24 | if let windowController = SymbolPicker.windowController(
25 | symbol: selectedSFSymbol,
26 | color: symbolColor,
27 | delegate: self,
28 | title: windowTitleForTheSymbolPicker),
29 | let iconSheet = windowController.window {
30 |
31 | // You need to persist this windowController in your app.
32 | self.symbolPickerWindowController = windowController
33 |
34 | window.beginSheet(iconSheet) {
35 | [unowned self] _ in
36 | self.symbolPickerWindowController = nil
37 | }
38 | }
39 | }
40 |
41 | extension ViewController: SymbolPickerDelegate {
42 | func symbolPicker(_ symbol: String, color: NSColor?) {
43 |
44 | }
45 | }
46 | ```
47 |
48 | 2. SwiftUI
49 |
50 | The `SymbolPicker` is designed to show as a sheet window.
51 |
52 | In SwiftUI, you can present a sheet window with the `sheet` modifier of `Button` like this:
53 |
54 | ```swift
55 |
56 | @State var showSymbolPicker = false
57 | @State var commandIcon = "tray"
58 | @State var selectedColor = Color.accentColor
59 |
60 | Button(action: {
61 | showSymbolPicker = true
62 | }, label: {
63 | Image(systemName: commandIcon)
64 | }).sheet(isPresented: $showSymbolPicker) {
65 | SymbolPickerView(
66 | showSymbolPicker: $showSymbolPicker,
67 | selectedSymbol: $commandIcon,
68 | selectedColor: $selectedColor,
69 | title: "Command Icon",
70 | showColorPickerItem: false
71 | ).frame(minWidth: 550, maxWidth: 1920, minHeight: 320, maxHeight: 960)
72 | }
73 |
74 | // Keep `minWidth` and `minHeight` to `550` and `320` respectively
75 | // because how the SymbolPicker is designed.
76 | ```
77 | Where
78 | - `showSymbolPicker`: if we want to show the symbol picker.
79 | - `selectedSymbol`: the name of the SF Symbol.
80 | - `selectedColor`: the color the SF Symbol.
81 | - `title`: the title of the symbol picker sheet window.
82 | - `showColorPickerItem`: if we want to show the color picker toolbar item.
83 |
84 | ## Lisense
85 | MIT
86 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Maps.txt:
--------------------------------------------------------------------------------
1 | figure.walk
2 | figure.walk.circle
3 | figure.walk.circle.fill
4 | figure.walk.diamond
5 | figure.walk.diamond.fill
6 | figure.wave
7 | figure.wave.circle
8 | figure.wave.circle.fill
9 | location
10 | location.fill
11 | location.circle
12 | location.circle.fill
13 | location.square
14 | location.square.fill
15 | location.slash
16 | location.slash.fill
17 | location.slash.circle
18 | location.slash.circle.fill
19 | location.north
20 | location.north.fill
21 | location.north.circle
22 | location.north.circle.fill
23 | location.north.line
24 | location.north.line.fill
25 | exclamationmark.bubble
26 | exclamationmark.bubble.fill
27 | exclamationmark.bubble.circle
28 | exclamationmark.bubble.circle.fill
29 | mappin
30 | mappin.circle
31 | mappin.circle.fill
32 | mappin.square
33 | mappin.square.fill
34 | mappin.slash
35 | mappin.slash.circle
36 | mappin.slash.circle.fill
37 | mappin.and.ellipse
38 | mappin.and.ellipse.circle
39 | mappin.and.ellipse.circle.fill
40 | map
41 | map.fill
42 | map.circle
43 | map.circle.fill
44 | car
45 | car.fill
46 | car.circle
47 | car.circle.fill
48 | bus
49 | bus.fill
50 | bus.doubledecker
51 | bus.doubledecker.fill
52 | tram
53 | tram.fill
54 | tram.circle
55 | bicycle
56 | bicycle.circle
57 | bicycle.circle.fill
58 | fuelpump
59 | fuelpump.fill
60 | fuelpump.circle
61 | fuelpump.circle.fill
62 | licenseplate
63 | licenseplate.fill
64 | ev.plug.ac.type.1
65 | ev.plug.ac.type.1.fill
66 | ev.plug.ac.type.2
67 | ev.plug.ac.type.2.fill
68 | ev.plug.ac.gb.t
69 | ev.plug.ac.gb.t.fill
70 | ev.plug.dc.ccs1
71 | ev.plug.dc.ccs1.fill
72 | ev.plug.dc.ccs2
73 | ev.plug.dc.ccs2.fill
74 | ev.plug.dc.chademo
75 | ev.plug.dc.chademo.fill
76 | ev.plug.dc.gb.t
77 | ev.plug.dc.gb.t.fill
78 | ev.plug.dc.nacs
79 | ev.plug.dc.nacs.fill
80 | binoculars
81 | binoculars.fill
82 | binoculars.circle
83 | binoculars.circle.fill
84 | arrow.turn.down.left
85 | arrow.turn.up.left
86 | arrow.turn.down.right
87 | arrow.turn.up.right
88 | arrow.turn.right.up
89 | arrow.turn.left.up
90 | arrow.turn.right.down
91 | arrow.turn.left.down
92 | arrow.up.and.down.and.arrow.left.and.right
93 | arrow.up.left.and.down.right.and.arrow.up.right.and.down.left
94 | arrow.triangle.turn.up.right.diamond
95 | arrow.triangle.turn.up.right.diamond.fill
96 | arrow.triangle.turn.up.right.circle
97 | arrow.triangle.turn.up.right.circle.fill
98 | arrow.triangle.merge
99 | arrow.triangle.swap
100 | arrow.triangle.branch
101 | arrow.triangle.pull
102 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Accessibility.txt:
--------------------------------------------------------------------------------
1 | figure.stand.line.dotted.figure.stand
2 | figure.roll
3 | figure.roll.runningpace
4 | cursorarrow.rays
5 | cursorarrow.motionlines
6 | cursorarrow.motionlines.click
7 | cursorarrow.click.badge.clock
8 | cursorarrow.and.square.on.square.dashed
9 | cursorarrow.click
10 | cursorarrow.click.2
11 | contextualmenu.and.cursorarrow
12 | filemenu.and.cursorarrow
13 | dot.circle.and.hand.point.up.left.fill
14 | dot.circle.and.cursorarrow
15 | plus.magnifyingglass
16 | minus.magnifyingglass
17 | smallcircle.filled.circle
18 | smallcircle.filled.circle.fill
19 | circle.hexagonpath
20 | circle.hexagonpath.fill
21 | square.grid.3x3.topleft.filled
22 | square.grid.3x3.topmiddle.filled
23 | square.grid.3x3.topright.filled
24 | square.grid.3x3.middleleft.filled
25 | square.grid.3x3.middle.filled
26 | square.grid.3x3.middleright.filled
27 | square.grid.3x3.bottomleft.filled
28 | square.grid.3x3.bottommiddle.filled
29 | square.grid.3x3.bottomright.filled
30 | quote.bubble
31 | quote.bubble.fill
32 | captions.bubble
33 | captions.bubble.fill
34 | rectangle.3.group.bubble.left
35 | rectangle.3.group.bubble.left.fill
36 | ellipsis.bubble
37 | ellipsis.bubble.fill
38 | teletype
39 | teletype.circle
40 | teletype.circle.fill
41 | teletype.answer
42 | teletype.answer.circle
43 | teletype.answer.circle.fill
44 | rectangle.and.text.magnifyingglass
45 | arrow.up.and.down.and.sparkles
46 | digitalcrown.arrow.clockwise
47 | digitalcrown.arrow.clockwise.fill
48 | digitalcrown.arrow.counterclockwise
49 | digitalcrown.arrow.counterclockwise.fill
50 | digitalcrown.press
51 | digitalcrown.press.fill
52 | hare
53 | hare.fill
54 | tortoise
55 | tortoise.fill
56 | eye
57 | eye.fill
58 | eye.circle
59 | eye.circle.fill
60 | eye.square
61 | eye.square.fill
62 | eye.slash
63 | eye.slash.fill
64 | eye.slash.circle
65 | eye.slash.circle.fill
66 | eye.trianglebadge.exclamationmark
67 | eye.trianglebadge.exclamationmark.fill
68 | ear
69 | ear.badge.checkmark
70 | ear.trianglebadge.exclamationmark
71 | ear.and.waveform
72 | ear.fill
73 | hearingdevice.ear
74 | hearingdevice.ear.fill
75 | hearingdevice.and.signal.meter
76 | hearingdevice.and.signal.meter.fill
77 | hand.tap
78 | hand.tap.fill
79 | hand.point.up
80 | hand.point.up.fill
81 | hand.point.up.braille
82 | hand.point.up.braille.fill
83 | waveform.and.magnifyingglass
84 | dot.arrowtriangles.up.right.down.left.circle
85 | textformat.size.smaller
86 | textformat.size.larger
87 | textformat.size
88 | character.duployan
89 | a.magnify
90 | arrow.up.and.down.and.arrow.left.and.right
91 | arrow.up.left.and.down.right.and.arrow.up.right.and.down.left
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Editing.txt:
--------------------------------------------------------------------------------
1 | pencil
2 | pencil.circle
3 | pencil.circle.fill
4 | pencil.slash
5 | pencil.line
6 | eraser
7 | eraser.fill
8 | eraser.line.dashed
9 | eraser.line.dashed.fill
10 | square.and.pencil
11 | square.and.pencil.circle
12 | square.and.pencil.circle.fill
13 | rectangle.and.pencil.and.ellipsis
14 | scribble
15 | scribble.variable
16 | pencil.and.scribble
17 | highlighter
18 | pencil.and.outline
19 | pencil.tip
20 | pencil.tip.crop.circle
21 | pencil.tip.crop.circle.fill
22 | pencil.tip.crop.circle.badge.plus
23 | pencil.tip.crop.circle.badge.plus.fill
24 | pencil.tip.crop.circle.badge.minus
25 | pencil.tip.crop.circle.badge.minus.fill
26 | pencil.tip.crop.circle.badge.arrow.forward
27 | pencil.tip.crop.circle.badge.arrow.forward.fill
28 | lasso
29 | lasso.badge.sparkles
30 | loupe
31 | circle.lefthalf.filled
32 | circle.lefthalf.filled.inverse
33 | circle.righthalf.filled
34 | circle.righthalf.filled.inverse
35 | circle.dashed
36 | circle.dashed.inset.filled
37 | square.dashed
38 | square.dashed.inset.filled
39 | signature
40 | scissors
41 | scissors.circle
42 | scissors.circle.fill
43 | scissors.badge.ellipsis
44 | wand.and.rays
45 | wand.and.rays.inverse
46 | wand.and.stars
47 | wand.and.stars.inverse
48 | crop
49 | crop.rotate
50 | rectangle.portrait.rotate
51 | rectangle.landscape.rotate
52 | dial.low
53 | dial.low.fill
54 | dial.medium
55 | dial.medium.fill
56 | dial.high
57 | dial.high.fill
58 | paintbrush
59 | paintbrush.fill
60 | paintbrush.pointed
61 | paintbrush.pointed.fill
62 | eyedropper
63 | eyedropper.halffull
64 | eyedropper.full
65 | move.3d
66 | scale.3d
67 | rotate.3d
68 | rotate.3d.fill
69 | rotate.3d.circle
70 | rotate.3d.circle.fill
71 | rotate.left
72 | rotate.left.fill
73 | rotate.right
74 | rotate.right.fill
75 | selection.pin.in.out
76 | timeline.selection
77 | bandage
78 | bandage.fill
79 | rectangle.dashed
80 | rectangle.dashed.badge.record
81 | slider.horizontal.3
82 | slider.horizontal.2.square.on.square
83 | slider.horizontal.2.square
84 | slider.horizontal.2.square.badge.arrow.down
85 | slider.horizontal.2.gobackward
86 | slider.horizontal.below.rectangle
87 | slider.horizontal.below.square.filled.and.square
88 | slider.horizontal.below.square.and.square.filled
89 | slider.horizontal.below.sun.max
90 | slider.vertical.3
91 | perspective
92 | circle.and.line.horizontal
93 | circle.and.line.horizontal.fill
94 | trapezoid.and.line.vertical
95 | trapezoid.and.line.vertical.fill
96 | trapezoid.and.line.horizontal
97 | trapezoid.and.line.horizontal.fill
98 | aspectratio
99 | aspectratio.fill
100 | camera.filters
101 | skew
102 | arrow.left.and.right.righttriangle.left.righttriangle.right
103 | arrow.left.and.right.righttriangle.left.righttriangle.right.fill
104 | arrow.up.and.down.righttriangle.up.righttriangle.down
105 | arrow.up.and.down.righttriangle.up.righttriangle.down.fill
106 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Accessibility.txt:
--------------------------------------------------------------------------------
1 | figure.stand.line.dotted.figure.stand
2 | figure
3 | accessibility
4 | accessibility.fill
5 | voiceover
6 | accessibility.badge.arrow.up.right
7 | figure.2
8 | figure.2.circle
9 | figure.2.circle.fill
10 | figure.roll
11 | figure.roll.runningpace
12 | cursorarrow.rays
13 | cursorarrow.motionlines
14 | cursorarrow.motionlines.click
15 | cursorarrow.click.badge.clock
16 | cursorarrow.and.square.on.square.dashed
17 | cursorarrow.click
18 | cursorarrow.click.2
19 | contextualmenu.and.cursorarrow
20 | filemenu.and.cursorarrow
21 | dot.circle.and.hand.point.up.left.fill
22 | dot.circle.and.cursorarrow
23 | plus.magnifyingglass
24 | minus.magnifyingglass
25 | smallcircle.filled.circle
26 | smallcircle.filled.circle.fill
27 | circle.hexagonpath
28 | circle.hexagonpath.fill
29 | square.grid.3x3.topleft.filled
30 | square.grid.3x3.topmiddle.filled
31 | square.grid.3x3.topright.filled
32 | square.grid.3x3.middleleft.filled
33 | square.grid.3x3.middle.filled
34 | square.grid.3x3.middleright.filled
35 | square.grid.3x3.bottomleft.filled
36 | square.grid.3x3.bottommiddle.filled
37 | square.grid.3x3.bottomright.filled
38 | quote.bubble
39 | quote.bubble.fill
40 | captions.bubble
41 | captions.bubble.fill
42 | rectangle.3.group.bubble
43 | rectangle.3.group.bubble.fill
44 | ellipsis.bubble
45 | ellipsis.bubble.fill
46 | teletype
47 | teletype.circle
48 | teletype.circle.fill
49 | teletype.answer
50 | teletype.answer.circle
51 | teletype.answer.circle.fill
52 | rectangle.and.text.magnifyingglass
53 | arrow.up.and.down.and.sparkles
54 | digitalcrown.arrow.clockwise
55 | digitalcrown.arrow.clockwise.fill
56 | digitalcrown.arrow.counterclockwise
57 | digitalcrown.arrow.counterclockwise.fill
58 | digitalcrown.press
59 | digitalcrown.press.fill
60 | hare
61 | hare.fill
62 | hare.circle
63 | hare.circle.fill
64 | tortoise
65 | tortoise.fill
66 | tortoise.circle
67 | tortoise.circle.fill
68 | eye
69 | eye.fill
70 | eye.circle
71 | eye.circle.fill
72 | eye.square
73 | eye.square.fill
74 | eye.slash
75 | eye.slash.fill
76 | eye.slash.circle
77 | eye.slash.circle.fill
78 | eye.trianglebadge.exclamationmark
79 | eye.trianglebadge.exclamationmark.fill
80 | ear
81 | ear.fill
82 | ear.badge.checkmark
83 | ear.trianglebadge.exclamationmark
84 | ear.badge.waveform
85 | hearingdevice.ear
86 | hearingdevice.ear.fill
87 | hearingdevice.and.signal.meter
88 | hearingdevice.and.signal.meter.fill
89 | hand.tap
90 | hand.tap.fill
91 | hand.point.up
92 | hand.point.up.fill
93 | hand.point.up.braille
94 | hand.point.up.braille.fill
95 | waveform.badge.magnifyingglass
96 | dot.arrowtriangles.up.right.down.left.circle
97 | textformat.size.smaller
98 | textformat.size.larger
99 | textformat.size
100 | character.duployan
101 | character.magnify
102 | arrow.up.and.down.and.arrow.left.and.right
103 | arrow.up.left.and.down.right.and.arrow.up.right.and.down.left
104 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Gaming.txt:
--------------------------------------------------------------------------------
1 | circle.grid.cross
2 | circle.grid.cross.fill
3 | circle.grid.cross.left.filled
4 | circle.grid.cross.up.filled
5 | circle.grid.cross.right.filled
6 | circle.grid.cross.down.filled
7 | circle.square
8 | circle.square.fill
9 | rectangle.on.rectangle
10 | rectangle.fill.on.rectangle.fill
11 | rectangle.on.rectangle.circle
12 | rectangle.on.rectangle.circle.fill
13 | rectangle.on.rectangle.square
14 | rectangle.on.rectangle.square.fill
15 | house
16 | house.fill
17 | house.circle
18 | house.circle.fill
19 | gamecontroller
20 | gamecontroller.fill
21 | l.joystick
22 | l.joystick.fill
23 | r.joystick
24 | r.joystick.fill
25 | l.joystick.press.down
26 | l.joystick.press.down.fill
27 | r.joystick.press.down
28 | r.joystick.press.down.fill
29 | l.joystick.tilt.left
30 | l.joystick.tilt.left.fill
31 | l.joystick.tilt.right
32 | l.joystick.tilt.right.fill
33 | l.joystick.tilt.up
34 | l.joystick.tilt.up.fill
35 | l.joystick.tilt.down
36 | l.joystick.tilt.down.fill
37 | r.joystick.tilt.left
38 | r.joystick.tilt.left.fill
39 | r.joystick.tilt.right
40 | r.joystick.tilt.right.fill
41 | r.joystick.tilt.up
42 | r.joystick.tilt.up.fill
43 | r.joystick.tilt.down
44 | r.joystick.tilt.down.fill
45 | dpad
46 | dpad.fill
47 | dpad.left.filled
48 | dpad.up.filled
49 | dpad.right.filled
50 | dpad.down.filled
51 | circle.circle
52 | circle.circle.fill
53 | square.circle
54 | square.circle.fill
55 | triangle.circle
56 | triangle.circle.fill
57 | rectangle.roundedtop
58 | rectangle.roundedtop.fill
59 | rectangle.roundedbottom
60 | rectangle.roundedbottom.fill
61 | l.rectangle.roundedbottom
62 | l.rectangle.roundedbottom.fill
63 | l1.rectangle.roundedbottom
64 | l1.rectangle.roundedbottom.fill
65 | l2.rectangle.roundedtop
66 | l2.rectangle.roundedtop.fill
67 | r.rectangle.roundedbottom
68 | r.rectangle.roundedbottom.fill
69 | r1.rectangle.roundedbottom
70 | r1.rectangle.roundedbottom.fill
71 | r2.rectangle.roundedtop
72 | r2.rectangle.roundedtop.fill
73 | lb.rectangle.roundedbottom
74 | lb.rectangle.roundedbottom.fill
75 | rb.rectangle.roundedbottom
76 | rb.rectangle.roundedbottom.fill
77 | lt.rectangle.roundedtop
78 | lt.rectangle.roundedtop.fill
79 | rt.rectangle.roundedtop
80 | rt.rectangle.roundedtop.fill
81 | zl.rectangle.roundedtop
82 | zl.rectangle.roundedtop.fill
83 | zr.rectangle.roundedtop
84 | zr.rectangle.roundedtop.fill
85 | logo.playstation
86 | logo.xbox
87 | line.3.horizontal.circle
88 | line.3.horizontal.circle.fill
89 | plus
90 | plus.circle
91 | plus.circle.fill
92 | minus
93 | minus.circle
94 | minus.circle.fill
95 | xmark
96 | xmark.circle
97 | xmark.circle.fill
98 | arrowtriangle.left.circle
99 | arrowtriangle.left.circle.fill
100 | arrowtriangle.right.circle
101 | arrowtriangle.right.circle.fill
102 | arrowtriangle.up.circle
103 | arrowtriangle.up.circle.fill
104 | arrowtriangle.down.circle
105 | arrowtriangle.down.circle.fill
106 | a.circle
107 | a.circle.fill
108 | b.circle
109 | b.circle.fill
110 | l.circle
111 | l.circle.fill
112 | r.circle
113 | r.circle.fill
114 | x.circle
115 | x.circle.fill
116 | y.circle
117 | y.circle.fill
118 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Sidebar/SidebarViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SidebarViewController.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/4.
6 | //
7 |
8 | import AppKit
9 |
10 | protocol SidebarController: AnyObject {
11 | func sidebarController(_ controller: SidebarViewController, node: Node)
12 | }
13 |
14 | class SidebarViewController: NSViewController, NSOutlineViewDelegate {
15 | @IBOutlet weak var outlineView: NSOutlineView!
16 |
17 | @IBOutlet var treeController: NSTreeController!
18 |
19 | weak var delegate: SidebarController?
20 |
21 | var windowController: WindowController? {
22 | return self.view.window?.windowController as? WindowController
23 | }
24 |
25 | @objc dynamic var content = [AnyObject]()
26 |
27 | override func viewDidLoad() {
28 | super.viewDidLoad()
29 | configureDefaultSidebar()
30 | configureOutlineView()
31 | }
32 |
33 | func configureOutlineView() {
34 | outlineView.enclosingScrollView?.scrollerStyle = .overlay
35 | DispatchQueue.main.async {
36 | self.selectAllSidebarItem()
37 | }
38 | }
39 |
40 | func selectAllSidebarItem() {
41 | if outlineView.selectedRow != 0 {
42 | let index = IndexSet(integer: 0)
43 | outlineView.selectRowIndexes(index, byExtendingSelection: false)
44 | }
45 | }
46 |
47 | static func node(from item: Any) -> Node? {
48 | if let treeNode = item as? NSTreeNode, let node = treeNode.representedObject as? Node {
49 | return node
50 | } else {
51 | return nil
52 | }
53 | }
54 |
55 | func configureDefaultSidebar() {
56 | for category in Symbol.Category.all {
57 | let name = category.name
58 | let symbolName = category.symbol
59 | let node = Node(name.localized, symbolName: symbolName, category: category)
60 | content.append(node)
61 | }
62 | }
63 |
64 | func outlineView(_ outlineView: NSOutlineView, isGroupItem item: Any) -> Bool {
65 | return false
66 | }
67 |
68 | func outlineView(_ outlineView: NSOutlineView, heightOfRowByItem item: Any) -> CGFloat {
69 | return 24
70 | }
71 |
72 | func outlineView(_ outlineView: NSOutlineView,
73 | viewFor tableColumn: NSTableColumn?,
74 | item: Any) -> NSView? {
75 | let dataCell = NSUserInterfaceItemIdentifier.init("DataCell")
76 | if let node = SidebarViewController.node(from: item) {
77 | if let view = outlineView.makeView(
78 | withIdentifier: dataCell,
79 | owner: self) as? NSTableCellView {
80 | view.textField?.bind(.value,
81 | to: view,
82 | withKeyPath: "objectValue.value",
83 | options: nil)
84 | view.imageView?.image = NSImage(node.symbolName)
85 | return view
86 | }
87 | }
88 | return nil
89 | }
90 |
91 | func outlineViewSelectionDidChange(_ notification: Notification) {
92 | let seletedRow = outlineView.item(atRow: outlineView.selectedRow)
93 | if let node = SidebarViewController.node(from: seletedRow ?? 0) {
94 | delegate?.sidebarController(self, node: node)
95 | }
96 | windowController?.searchField?.stringValue = ""
97 | }
98 | }
99 |
100 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Communication.txt:
--------------------------------------------------------------------------------
1 | mic
2 | mic.fill
3 | mic.circle
4 | mic.circle.fill
5 | mic.square
6 | mic.square.fill
7 | mic.slash
8 | mic.slash.fill
9 | mic.slash.circle
10 | mic.slash.circle.fill
11 | mic.badge.plus
12 | mic.fill.badge.plus
13 | message
14 | message.fill
15 | message.circle
16 | message.circle.fill
17 | message.and.waveform
18 | message.and.waveform.fill
19 | arrow.up.message
20 | arrow.up.message.fill
21 | plus.message
22 | plus.message.fill
23 | bubble.right
24 | bubble.right.fill
25 | bubble.right.circle
26 | bubble.right.circle.fill
27 | bubble.left
28 | bubble.left.fill
29 | bubble.left.circle
30 | bubble.left.circle.fill
31 | exclamationmark.bubble
32 | exclamationmark.bubble.fill
33 | exclamationmark.bubble.circle
34 | exclamationmark.bubble.circle.fill
35 | quote.opening
36 | quote.closing
37 | quote.bubble
38 | quote.bubble.fill
39 | star.bubble
40 | star.bubble.fill
41 | character.bubble
42 | character.bubble.fill
43 | text.bubble
44 | text.bubble.fill
45 | captions.bubble
46 | captions.bubble.fill
47 | plus.bubble
48 | plus.bubble.fill
49 | checkmark.bubble
50 | checkmark.bubble.fill
51 | rectangle.3.group.bubble.left
52 | rectangle.3.group.bubble.left.fill
53 | ellipsis.bubble
54 | ellipsis.bubble.fill
55 | ellipsis.vertical.bubble
56 | ellipsis.vertical.bubble.fill
57 | phone.bubble.left
58 | phone.bubble.left.fill
59 | video.bubble.left
60 | video.bubble.left.fill
61 | bubble.middle.bottom
62 | bubble.middle.bottom.fill
63 | bubble.middle.top
64 | bubble.middle.top.fill
65 | bubble.left.and.bubble.right
66 | bubble.left.and.bubble.right.fill
67 | bubble.left.and.exclamationmark.bubble.right
68 | bubble.left.and.exclamationmark.bubble.right.fill
69 | phone
70 | phone.fill
71 | phone.circle
72 | phone.circle.fill
73 | phone.badge.plus
74 | phone.fill.badge.plus
75 | phone.connection
76 | phone.fill.connection
77 | phone.and.waveform
78 | phone.and.waveform.fill
79 | phone.arrow.up.right
80 | phone.fill.arrow.up.right
81 | phone.arrow.down.left
82 | phone.fill.arrow.down.left
83 | phone.arrow.right
84 | phone.fill.arrow.right
85 | phone.down
86 | phone.down.fill
87 | phone.down.circle
88 | phone.down.circle.fill
89 | teletype
90 | teletype.circle
91 | teletype.circle.fill
92 | teletype.answer
93 | teletype.answer.circle
94 | teletype.answer.circle.fill
95 | video
96 | video.fill
97 | video.circle
98 | video.circle.fill
99 | video.square
100 | video.square.fill
101 | video.slash
102 | video.slash.fill
103 | video.badge.plus
104 | video.fill.badge.plus
105 | video.badge.checkmark
106 | video.fill.badge.checkmark
107 | video.badge.ellipsis
108 | video.fill.badge.ellipsis
109 | video.and.waveform
110 | video.and.waveform.fill
111 | arrow.up.right.video
112 | arrow.up.right.video.fill
113 | arrow.down.left.video
114 | arrow.down.left.video.fill
115 | questionmark.video
116 | questionmark.video.fill
117 | envelope
118 | envelope.fill
119 | envelope.circle
120 | envelope.circle.fill
121 | envelope.arrow.triangle.branch
122 | envelope.arrow.triangle.branch.fill
123 | envelope.open
124 | envelope.open.fill
125 | envelope.badge
126 | envelope.badge.fill
127 | waveform
128 | waveform.circle
129 | waveform.circle.fill
130 | waveform.badge.plus
131 | waveform.badge.minus
132 | waveform.badge.exclamationmark
133 | waveform.and.magnifyingglass
134 | waveform.and.mic
135 | recordingtape
136 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Gaming.txt:
--------------------------------------------------------------------------------
1 | circle.square
2 | circle.square.fill
3 | rectangle.on.rectangle
4 | rectangle.fill.on.rectangle.fill
5 | rectangle.on.rectangle.circle
6 | rectangle.on.rectangle.circle.fill
7 | rectangle.on.rectangle.square
8 | rectangle.on.rectangle.square.fill
9 | flag.checkered
10 | flag.checkered.circle
11 | flag.checkered.circle.fill
12 | flag.2.crossed
13 | flag.2.crossed.fill
14 | flag.2.crossed.circle
15 | flag.2.crossed.circle.fill
16 | flag.filled.and.flag.crossed
17 | flag.and.flag.filled.crossed
18 | flag.checkered.2.crossed
19 | house
20 | house.fill
21 | house.circle
22 | house.circle.fill
23 | gamecontroller
24 | gamecontroller.fill
25 | l.joystick
26 | l.joystick.fill
27 | r.joystick
28 | r.joystick.fill
29 | l.joystick.press.down
30 | l.joystick.press.down.fill
31 | r.joystick.press.down
32 | r.joystick.press.down.fill
33 | l.joystick.tilt.left
34 | l.joystick.tilt.left.fill
35 | l.joystick.tilt.right
36 | l.joystick.tilt.right.fill
37 | l.joystick.tilt.up
38 | l.joystick.tilt.up.fill
39 | l.joystick.tilt.down
40 | l.joystick.tilt.down.fill
41 | r.joystick.tilt.left
42 | r.joystick.tilt.left.fill
43 | r.joystick.tilt.right
44 | r.joystick.tilt.right.fill
45 | r.joystick.tilt.up
46 | r.joystick.tilt.up.fill
47 | r.joystick.tilt.down
48 | r.joystick.tilt.down.fill
49 | circle.grid.cross
50 | circle.grid.cross.fill
51 | circle.grid.cross.left.filled
52 | circle.grid.cross.up.filled
53 | circle.grid.cross.right.filled
54 | circle.grid.cross.down.filled
55 | dpad
56 | dpad.fill
57 | dpad.left.filled
58 | dpad.up.filled
59 | dpad.right.filled
60 | dpad.down.filled
61 | circle.circle
62 | circle.circle.fill
63 | square.circle
64 | square.circle.fill
65 | triangle.circle
66 | triangle.circle.fill
67 | rectangle.roundedtop
68 | rectangle.roundedtop.fill
69 | rectangle.roundedbottom
70 | rectangle.roundedbottom.fill
71 | l.rectangle.roundedbottom
72 | l.rectangle.roundedbottom.fill
73 | l1.rectangle.roundedbottom
74 | l1.rectangle.roundedbottom.fill
75 | l2.rectangle.roundedtop
76 | l2.rectangle.roundedtop.fill
77 | r.rectangle.roundedbottom
78 | r.rectangle.roundedbottom.fill
79 | r1.rectangle.roundedbottom
80 | r1.rectangle.roundedbottom.fill
81 | r2.rectangle.roundedtop
82 | r2.rectangle.roundedtop.fill
83 | lb.rectangle.roundedbottom
84 | lb.rectangle.roundedbottom.fill
85 | rb.rectangle.roundedbottom
86 | rb.rectangle.roundedbottom.fill
87 | lt.rectangle.roundedtop
88 | lt.rectangle.roundedtop.fill
89 | rt.rectangle.roundedtop
90 | rt.rectangle.roundedtop.fill
91 | zl.rectangle.roundedtop
92 | zl.rectangle.roundedtop.fill
93 | zr.rectangle.roundedtop
94 | zr.rectangle.roundedtop.fill
95 | playstation.logo
96 | xbox.logo
97 | line.3.horizontal.circle
98 | line.3.horizontal.circle.fill
99 | plus
100 | plus.circle
101 | plus.circle.fill
102 | minus
103 | minus.circle
104 | minus.circle.fill
105 | xmark
106 | xmark.circle
107 | xmark.circle.fill
108 | arrowtriangle.left.circle
109 | arrowtriangle.left.circle.fill
110 | arrowtriangle.right.circle
111 | arrowtriangle.right.circle.fill
112 | arrowtriangle.up.circle
113 | arrowtriangle.up.circle.fill
114 | arrowtriangle.down.circle
115 | arrowtriangle.down.circle.fill
116 | a.circle
117 | a.circle.fill
118 | b.circle
119 | b.circle.fill
120 | l.circle
121 | l.circle.fill
122 | r.circle
123 | r.circle.fill
124 | x.circle
125 | x.circle.fill
126 | y.circle
127 | y.circle.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Weather.txt:
--------------------------------------------------------------------------------
1 | sun.min
2 | sun.min.fill
3 | sun.max
4 | sun.max.fill
5 | sun.max.circle
6 | sun.max.circle.fill
7 | sun.max.trianglebadge.exclamationmark
8 | sun.max.trianglebadge.exclamationmark.fill
9 | sunrise
10 | sunrise.fill
11 | sunrise.circle
12 | sunrise.circle.fill
13 | sunset
14 | sunset.fill
15 | sunset.circle
16 | sunset.circle.fill
17 | sun.and.horizon
18 | sun.and.horizon.fill
19 | sun.and.horizon.circle
20 | sun.and.horizon.circle.fill
21 | sun.dust
22 | sun.dust.fill
23 | sun.dust.circle
24 | sun.dust.circle.fill
25 | sun.haze
26 | sun.haze.fill
27 | sun.haze.circle
28 | sun.haze.circle.fill
29 | moon
30 | moon.fill
31 | moon.circle
32 | moon.circle.fill
33 | moon.haze
34 | moon.haze.fill
35 | moon.haze.circle
36 | moon.haze.circle.fill
37 | sparkles
38 | moon.stars
39 | moon.stars.fill
40 | moon.stars.circle
41 | moon.stars.circle.fill
42 | cloud
43 | cloud.fill
44 | cloud.circle
45 | cloud.circle.fill
46 | cloud.drizzle
47 | cloud.drizzle.fill
48 | cloud.drizzle.circle
49 | cloud.drizzle.circle.fill
50 | cloud.rain
51 | cloud.rain.fill
52 | cloud.rain.circle
53 | cloud.rain.circle.fill
54 | cloud.heavyrain
55 | cloud.heavyrain.fill
56 | cloud.heavyrain.circle
57 | cloud.heavyrain.circle.fill
58 | cloud.fog
59 | cloud.fog.fill
60 | cloud.fog.circle
61 | cloud.fog.circle.fill
62 | cloud.hail
63 | cloud.hail.fill
64 | cloud.hail.circle
65 | cloud.hail.circle.fill
66 | cloud.snow
67 | cloud.snow.fill
68 | cloud.snow.circle
69 | cloud.snow.circle.fill
70 | cloud.sleet
71 | cloud.sleet.fill
72 | cloud.sleet.circle
73 | cloud.sleet.circle.fill
74 | cloud.bolt
75 | cloud.bolt.fill
76 | cloud.bolt.circle
77 | cloud.bolt.circle.fill
78 | cloud.bolt.rain
79 | cloud.bolt.rain.fill
80 | cloud.bolt.rain.circle
81 | cloud.bolt.rain.circle.fill
82 | cloud.sun
83 | cloud.sun.fill
84 | cloud.sun.circle
85 | cloud.sun.circle.fill
86 | cloud.sun.rain
87 | cloud.sun.rain.fill
88 | cloud.sun.rain.circle
89 | cloud.sun.rain.circle.fill
90 | cloud.sun.bolt
91 | cloud.sun.bolt.fill
92 | cloud.sun.bolt.circle
93 | cloud.sun.bolt.circle.fill
94 | cloud.moon
95 | cloud.moon.fill
96 | cloud.moon.circle
97 | cloud.moon.circle.fill
98 | cloud.moon.rain
99 | cloud.moon.rain.fill
100 | cloud.moon.rain.circle
101 | cloud.moon.rain.circle.fill
102 | cloud.moon.bolt
103 | cloud.moon.bolt.fill
104 | cloud.moon.bolt.circle
105 | cloud.moon.bolt.circle.fill
106 | smoke
107 | smoke.fill
108 | smoke.circle
109 | smoke.circle.fill
110 | wind
111 | wind.circle
112 | wind.circle.fill
113 | wind.snow
114 | wind.snow.circle
115 | wind.snow.circle.fill
116 | snowflake
117 | snowflake.circle
118 | snowflake.circle.fill
119 | snowflake.slash
120 | tornado
121 | tornado.circle
122 | tornado.circle.fill
123 | tropicalstorm
124 | tropicalstorm.circle
125 | tropicalstorm.circle.fill
126 | hurricane
127 | hurricane.circle
128 | hurricane.circle.fill
129 | thermometer.sun
130 | thermometer.sun.fill
131 | thermometer.sun.circle
132 | thermometer.sun.circle.fill
133 | thermometer.snowflake
134 | thermometer.snowflake.circle
135 | thermometer.snowflake.circle.fill
136 | thermometer.low
137 | thermometer.medium
138 | thermometer.high
139 | thermometer.medium.slash
140 | aqi.low
141 | aqi.medium
142 | aqi.high
143 | humidity
144 | humidity.fill
145 | carbon.monoxide.cloud
146 | carbon.monoxide.cloud.fill
147 | carbon.dioxide.cloud
148 | carbon.dioxide.cloud.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Privacy & Security.txt:
--------------------------------------------------------------------------------
1 | lock.doc
2 | lock.doc.fill
3 | network.badge.shield.half.filled
4 | hand.raised.square.on.square
5 | hand.raised.square.on.square.fill
6 | exclamationmark.triangle
7 | exclamationmark.triangle.fill
8 | seal
9 | seal.fill
10 | checkmark.seal
11 | checkmark.seal.fill
12 | xmark.seal
13 | xmark.seal.fill
14 | shield
15 | shield.fill
16 | shield.lefthalf.filled
17 | shield.righthalf.filled
18 | shield.slash
19 | shield.slash.fill
20 | shield.lefthalf.filled.slash
21 | firewall
22 | firewall.fill
23 | checkmark.icloud
24 | checkmark.icloud.fill
25 | lock.icloud
26 | lock.icloud.fill
27 | key.icloud
28 | key.icloud.fill
29 | checkmark.message
30 | checkmark.message.fill
31 | exclamationmark.bubble
32 | exclamationmark.bubble.fill
33 | exclamationmark.bubble.circle
34 | exclamationmark.bubble.circle.fill
35 | bubble.left.and.exclamationmark.bubble.right
36 | bubble.left.and.exclamationmark.bubble.right.fill
37 | envelope.badge.shield.half.filled
38 | envelope.badge.shield.half.filled.fill
39 | nosign
40 | nosign.app
41 | nosign.app.fill
42 | lock
43 | lock.fill
44 | lock.circle
45 | lock.circle.fill
46 | lock.square
47 | lock.square.fill
48 | lock.square.stack
49 | lock.square.stack.fill
50 | lock.rectangle
51 | lock.rectangle.fill
52 | lock.rectangle.stack
53 | lock.rectangle.stack.fill
54 | lock.rectangle.on.rectangle
55 | lock.rectangle.on.rectangle.fill
56 | lock.shield
57 | lock.shield.fill
58 | lock.slash
59 | lock.slash.fill
60 | lock.trianglebadge.exclamationmark
61 | lock.trianglebadge.exclamationmark.fill
62 | exclamationmark.lock
63 | exclamationmark.lock.fill
64 | lock.open
65 | lock.open.fill
66 | lock.open.trianglebadge.exclamationmark
67 | lock.open.trianglebadge.exclamationmark.fill
68 | lock.rotation
69 | lock.open.rotation
70 | key
71 | key.fill
72 | key.radiowaves.forward
73 | key.radiowaves.forward.fill
74 | key.horizontal
75 | key.horizontal.fill
76 | questionmark.key.filled
77 | faceid
78 | lock.display
79 | lock.open.display
80 | lock.desktopcomputer
81 | lock.open.desktopcomputer
82 | lock.laptopcomputer
83 | lock.open.laptopcomputer
84 | lock.iphone
85 | lock.open.iphone
86 | lock.ipad
87 | lock.open.ipad
88 | lock.applewatch
89 | lock.open.applewatch
90 | eye
91 | eye.fill
92 | eye.circle
93 | eye.circle.fill
94 | eye.square
95 | eye.square.fill
96 | eye.slash
97 | eye.slash.fill
98 | eye.slash.circle
99 | eye.slash.circle.fill
100 | eye.trianglebadge.exclamationmark
101 | eye.trianglebadge.exclamationmark.fill
102 | hand.raised
103 | hand.raised.fill
104 | hand.raised.circle
105 | hand.raised.circle.fill
106 | hand.raised.square
107 | hand.raised.square.fill
108 | hand.raised.app
109 | hand.raised.app.fill
110 | hand.raised.slash
111 | hand.raised.slash.fill
112 | key.viewfinder
113 | touchid
114 | exclamationmark.shield
115 | exclamationmark.shield.fill
116 | xmark.shield
117 | xmark.shield.fill
118 | checkmark
119 | checkmark.circle
120 | checkmark.circle.fill
121 | checkmark.circle.badge.questionmark
122 | checkmark.circle.badge.questionmark.fill
123 | checkmark.circle.badge.xmark
124 | checkmark.circle.badge.xmark.fill
125 | checkmark.circle.trianglebadge.exclamationmark
126 | checkmark.square
127 | checkmark.square.fill
128 | checkmark.rectangle
129 | checkmark.rectangle.fill
130 | checkmark.rectangle.portrait
131 | checkmark.rectangle.portrait.fill
132 | checkmark.diamond
133 | checkmark.diamond.fill
134 | checkmark.shield
135 | checkmark.shield.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Privacy & Security.txt:
--------------------------------------------------------------------------------
1 | lock.doc
2 | lock.doc.fill
3 | network.badge.shield.half.filled
4 | hand.raised.square.on.square
5 | hand.raised.square.on.square.fill
6 | exclamationmark.triangle
7 | exclamationmark.triangle.fill
8 | seal
9 | seal.fill
10 | checkmark.seal
11 | checkmark.seal.fill
12 | xmark.seal
13 | xmark.seal.fill
14 | shield
15 | shield.fill
16 | shield.lefthalf.filled
17 | shield.lefthalf.filled.badge.checkmark
18 | shield.lefthalf.filled.trianglebadge.exclamationmark
19 | shield.righthalf.filled
20 | shield.slash
21 | shield.slash.fill
22 | shield.lefthalf.filled.slash
23 | firewall
24 | firewall.fill
25 | checkmark.icloud
26 | checkmark.icloud.fill
27 | lock.icloud
28 | lock.icloud.fill
29 | key.icloud
30 | key.icloud.fill
31 | checkmark.message
32 | checkmark.message.fill
33 | exclamationmark.bubble
34 | exclamationmark.bubble.fill
35 | exclamationmark.bubble.circle
36 | exclamationmark.bubble.circle.fill
37 | bubble.left.and.exclamationmark.bubble.right
38 | bubble.left.and.exclamationmark.bubble.right.fill
39 | envelope.badge.shield.half.filled
40 | envelope.badge.shield.half.filled.fill
41 | nosign
42 | nosign.app
43 | nosign.app.fill
44 | lock
45 | lock.fill
46 | lock.circle
47 | lock.circle.fill
48 | lock.square
49 | lock.square.fill
50 | lock.circle.dotted
51 | lock.square.stack
52 | lock.square.stack.fill
53 | lock.rectangle
54 | lock.rectangle.fill
55 | lock.rectangle.stack
56 | lock.rectangle.stack.fill
57 | lock.rectangle.on.rectangle
58 | lock.rectangle.on.rectangle.fill
59 | lock.shield
60 | lock.shield.fill
61 | lock.slash
62 | lock.slash.fill
63 | lock.trianglebadge.exclamationmark
64 | lock.trianglebadge.exclamationmark.fill
65 | exclamationmark.lock
66 | exclamationmark.lock.fill
67 | lock.badge.clock
68 | lock.badge.clock.fill
69 | lock.open
70 | lock.open.fill
71 | lock.open.trianglebadge.exclamationmark
72 | lock.open.trianglebadge.exclamationmark.fill
73 | lock.rotation
74 | lock.open.rotation
75 | key
76 | key.fill
77 | key.slash
78 | key.slash.fill
79 | key.radiowaves.forward
80 | key.radiowaves.forward.fill
81 | key.radiowaves.forward.slash
82 | key.radiowaves.forward.slash.fill
83 | key.horizontal
84 | key.horizontal.fill
85 | questionmark.key.filled
86 | faceid
87 | lock.display
88 | lock.open.display
89 | lock.desktopcomputer
90 | lock.open.desktopcomputer
91 | lock.laptopcomputer
92 | lock.open.laptopcomputer
93 | lock.iphone
94 | lock.open.iphone
95 | lock.ipad
96 | lock.open.ipad
97 | lock.applewatch
98 | lock.open.applewatch
99 | eye
100 | eye.fill
101 | eye.circle
102 | eye.circle.fill
103 | eye.square
104 | eye.square.fill
105 | eye.slash
106 | eye.slash.fill
107 | eye.slash.circle
108 | eye.slash.circle.fill
109 | eye.trianglebadge.exclamationmark
110 | eye.trianglebadge.exclamationmark.fill
111 | hand.raised
112 | hand.raised.fill
113 | hand.raised.circle
114 | hand.raised.circle.fill
115 | hand.raised.square
116 | hand.raised.square.fill
117 | hand.raised.app
118 | hand.raised.app.fill
119 | hand.raised.slash
120 | hand.raised.slash.fill
121 | key.viewfinder
122 | touchid
123 | exclamationmark.shield
124 | exclamationmark.shield.fill
125 | xmark.shield
126 | xmark.shield.fill
127 | checkmark
128 | checkmark.circle
129 | checkmark.circle.fill
130 | checkmark.circle.badge.questionmark
131 | checkmark.circle.badge.questionmark.fill
132 | checkmark.circle.badge.xmark
133 | checkmark.circle.badge.xmark.fill
134 | checkmark.circle.trianglebadge.exclamationmark
135 | checkmark.square
136 | checkmark.square.fill
137 | checkmark.rectangle
138 | checkmark.rectangle.fill
139 | checkmark.rectangle.portrait
140 | checkmark.rectangle.portrait.fill
141 | checkmark.diamond
142 | checkmark.diamond.fill
143 | checkmark.shield
144 | checkmark.shield.fill
145 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Fitness.txt:
--------------------------------------------------------------------------------
1 | figure.walk
2 | figure.walk.circle
3 | figure.walk.circle.fill
4 | figure.walk.diamond
5 | figure.walk.diamond.fill
6 | figure.run
7 | figure.run.circle
8 | figure.run.circle.fill
9 | figure.run.square.stack
10 | figure.run.square.stack.fill
11 | figure.roll
12 | figure.roll.runningpace
13 | figure.american.football
14 | figure.archery
15 | figure.australian.football
16 | figure.badminton
17 | figure.barre
18 | figure.baseball
19 | figure.basketball
20 | figure.bowling
21 | figure.boxing
22 | figure.climbing
23 | figure.cooldown
24 | figure.core.training
25 | figure.cricket
26 | figure.skiing.crosscountry
27 | figure.cross.training
28 | figure.curling
29 | figure.dance
30 | figure.disc.sports
31 | figure.skiing.downhill
32 | figure.elliptical
33 | figure.equestrian.sports
34 | figure.fencing
35 | figure.fishing
36 | figure.flexibility
37 | figure.strengthtraining.functional
38 | figure.golf
39 | figure.gymnastics
40 | figure.hand.cycling
41 | figure.handball
42 | figure.highintensity.intervaltraining
43 | figure.hiking
44 | figure.hockey
45 | figure.hunting
46 | figure.indoor.cycle
47 | figure.jumprope
48 | figure.kickboxing
49 | figure.lacrosse
50 | figure.martial.arts
51 | figure.mind.and.body
52 | figure.mixed.cardio
53 | figure.open.water.swim
54 | figure.outdoor.cycle
55 | oar.2.crossed
56 | figure.pickleball
57 | figure.pilates
58 | figure.play
59 | figure.pool.swim
60 | figure.racquetball
61 | figure.rolling
62 | figure.rower
63 | figure.rugby
64 | figure.sailing
65 | figure.skating
66 | figure.snowboarding
67 | figure.soccer
68 | figure.socialdance
69 | figure.softball
70 | figure.squash
71 | figure.stair.stepper
72 | figure.stairs
73 | figure.step.training
74 | figure.surfing
75 | figure.table.tennis
76 | figure.taichi
77 | figure.tennis
78 | figure.track.and.field
79 | figure.strengthtraining.traditional
80 | figure.volleyball
81 | figure.water.fitness
82 | figure.waterpolo
83 | figure.wrestling
84 | figure.yoga
85 | baseball.diamond.bases
86 | dumbbell
87 | dumbbell.fill
88 | sportscourt
89 | sportscourt.fill
90 | sportscourt.circle
91 | sportscourt.circle.fill
92 | lane
93 | 1.lane
94 | 2.lane
95 | 3.lane
96 | 4.lane
97 | 5.lane
98 | 6.lane
99 | 7.lane
100 | 8.lane
101 | 9.lane
102 | 10.lane
103 | 11.lane
104 | 12.lane
105 | soccerball
106 | soccerball.inverse
107 | soccerball.circle
108 | soccerball.circle.inverse
109 | soccerball.circle.fill
110 | soccerball.circle.fill.inverse
111 | baseball
112 | baseball.fill
113 | baseball.circle
114 | baseball.circle.fill
115 | basketball
116 | basketball.fill
117 | basketball.circle
118 | basketball.circle.fill
119 | football
120 | football.fill
121 | football.circle
122 | football.circle.fill
123 | tennis.racket
124 | tennis.racket.circle
125 | tennis.racket.circle.fill
126 | hockey.puck
127 | hockey.puck.fill
128 | hockey.puck.circle
129 | hockey.puck.circle.fill
130 | cricket.ball
131 | cricket.ball.fill
132 | cricket.ball.circle
133 | cricket.ball.circle.fill
134 | tennisball
135 | tennisball.fill
136 | tennisball.circle
137 | tennisball.circle.fill
138 | volleyball
139 | volleyball.fill
140 | volleyball.circle
141 | volleyball.circle.fill
142 | trophy
143 | trophy.fill
144 | trophy.circle
145 | trophy.circle.fill
146 | medal
147 | medal.fill
148 | water.waves
149 | water.waves.slash
150 | water.waves.and.arrow.up
151 | water.waves.and.arrow.down
152 | water.waves.and.arrow.down.trianglebadge.exclamationmark
153 | flag.checkered
154 | flag.checkered.circle
155 | flag.checkered.circle.fill
156 | flag.2.crossed
157 | flag.2.crossed.fill
158 | flag.2.crossed.circle
159 | flag.2.crossed.circle.fill
160 | flag.filled.and.flag.crossed
161 | flag.and.flag.filled.crossed
162 | flag.checkered.2.crossed
163 | gamecontroller
164 | gamecontroller.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Weather.txt:
--------------------------------------------------------------------------------
1 | sun.min
2 | sun.min.fill
3 | sun.max
4 | sun.max.fill
5 | sun.max.circle
6 | sun.max.circle.fill
7 | sun.max.trianglebadge.exclamationmark
8 | sun.max.trianglebadge.exclamationmark.fill
9 | sunrise
10 | sunrise.fill
11 | sunrise.circle
12 | sunrise.circle.fill
13 | sunset
14 | sunset.fill
15 | sunset.circle
16 | sunset.circle.fill
17 | sun.horizon
18 | sun.horizon.fill
19 | sun.horizon.circle
20 | sun.horizon.circle.fill
21 | sun.dust
22 | sun.dust.fill
23 | sun.dust.circle
24 | sun.dust.circle.fill
25 | sun.haze
26 | sun.haze.fill
27 | sun.haze.circle
28 | sun.haze.circle.fill
29 | sun.rain
30 | sun.rain.fill
31 | sun.rain.circle
32 | sun.rain.circle.fill
33 | sun.snow
34 | sun.snow.fill
35 | sun.snow.circle
36 | sun.snow.circle.fill
37 | moon
38 | moon.fill
39 | moon.circle
40 | moon.circle.fill
41 | moon.dust
42 | moon.dust.fill
43 | moon.dust.circle
44 | moon.dust.circle.fill
45 | moon.haze
46 | moon.haze.fill
47 | moon.haze.circle
48 | moon.haze.circle.fill
49 | sparkles
50 | moon.stars
51 | moon.stars.fill
52 | moon.stars.circle
53 | moon.stars.circle.fill
54 | cloud
55 | cloud.fill
56 | cloud.circle
57 | cloud.circle.fill
58 | cloud.drizzle
59 | cloud.drizzle.fill
60 | cloud.drizzle.circle
61 | cloud.drizzle.circle.fill
62 | cloud.rain
63 | cloud.rain.fill
64 | cloud.rain.circle
65 | cloud.rain.circle.fill
66 | cloud.heavyrain
67 | cloud.heavyrain.fill
68 | cloud.heavyrain.circle
69 | cloud.heavyrain.circle.fill
70 | cloud.fog
71 | cloud.fog.fill
72 | cloud.fog.circle
73 | cloud.fog.circle.fill
74 | cloud.hail
75 | cloud.hail.fill
76 | cloud.hail.circle
77 | cloud.hail.circle.fill
78 | cloud.snow
79 | cloud.snow.fill
80 | cloud.snow.circle
81 | cloud.snow.circle.fill
82 | cloud.sleet
83 | cloud.sleet.fill
84 | cloud.sleet.circle
85 | cloud.sleet.circle.fill
86 | cloud.bolt
87 | cloud.bolt.fill
88 | cloud.bolt.circle
89 | cloud.bolt.circle.fill
90 | cloud.bolt.rain
91 | cloud.bolt.rain.fill
92 | cloud.bolt.rain.circle
93 | cloud.bolt.rain.circle.fill
94 | cloud.sun
95 | cloud.sun.fill
96 | cloud.sun.circle
97 | cloud.sun.circle.fill
98 | cloud.sun.rain
99 | cloud.sun.rain.fill
100 | cloud.sun.rain.circle
101 | cloud.sun.rain.circle.fill
102 | cloud.sun.bolt
103 | cloud.sun.bolt.fill
104 | cloud.sun.bolt.circle
105 | cloud.sun.bolt.circle.fill
106 | cloud.moon
107 | cloud.moon.fill
108 | cloud.moon.circle
109 | cloud.moon.circle.fill
110 | cloud.moon.rain
111 | cloud.moon.rain.fill
112 | cloud.moon.rain.circle
113 | cloud.moon.rain.circle.fill
114 | cloud.moon.bolt
115 | cloud.moon.bolt.fill
116 | cloud.moon.bolt.circle
117 | cloud.moon.bolt.circle.fill
118 | smoke
119 | smoke.fill
120 | smoke.circle
121 | smoke.circle.fill
122 | wind
123 | wind.circle
124 | wind.circle.fill
125 | wind.snow
126 | wind.snow.circle
127 | wind.snow.circle.fill
128 | snowflake
129 | snowflake.circle
130 | snowflake.circle.fill
131 | snowflake.slash
132 | tornado
133 | tornado.circle
134 | tornado.circle.fill
135 | tropicalstorm
136 | tropicalstorm.circle
137 | tropicalstorm.circle.fill
138 | hurricane
139 | hurricane.circle
140 | hurricane.circle.fill
141 | thermometer.sun
142 | thermometer.sun.fill
143 | thermometer.sun.circle
144 | thermometer.sun.circle.fill
145 | thermometer.snowflake
146 | thermometer.snowflake.circle
147 | thermometer.snowflake.circle.fill
148 | thermometer.variable.and.figure
149 | thermometer.variable.and.figure.circle
150 | thermometer.variable.and.figure.circle.fill
151 | thermometer.low
152 | thermometer.medium
153 | thermometer.high
154 | thermometer.medium.slash
155 | aqi.low
156 | aqi.medium
157 | aqi.high
158 | humidity
159 | humidity.fill
160 | rainbow
161 | cloud.rainbow.half
162 | cloud.rainbow.half.fill
163 | carbon.monoxide.cloud
164 | carbon.monoxide.cloud.fill
165 | carbon.dioxide.cloud
166 | carbon.dioxide.cloud.fill
167 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Commerce.txt:
--------------------------------------------------------------------------------
1 | signature
2 | bag
3 | bag.fill
4 | bag.circle
5 | bag.circle.fill
6 | bag.badge.plus
7 | bag.fill.badge.plus
8 | bag.badge.minus
9 | bag.fill.badge.minus
10 | cart
11 | cart.fill
12 | cart.circle
13 | cart.circle.fill
14 | cart.badge.plus
15 | cart.fill.badge.plus
16 | cart.badge.minus
17 | cart.fill.badge.minus
18 | creditcard
19 | creditcard.fill
20 | creditcard.circle
21 | creditcard.circle.fill
22 | creditcard.and.123
23 | creditcard.trianglebadge.exclamationmark
24 | giftcard
25 | giftcard.fill
26 | banknote
27 | banknote.fill
28 | dollarsign.circle
29 | dollarsign.circle.fill
30 | dollarsign.square
31 | dollarsign.square.fill
32 | centsign.circle
33 | centsign.circle.fill
34 | centsign.square
35 | centsign.square.fill
36 | yensign.circle
37 | yensign.circle.fill
38 | yensign.square
39 | yensign.square.fill
40 | sterlingsign.circle
41 | sterlingsign.circle.fill
42 | sterlingsign.square
43 | sterlingsign.square.fill
44 | francsign.circle
45 | francsign.circle.fill
46 | francsign.square
47 | francsign.square.fill
48 | florinsign.circle
49 | florinsign.circle.fill
50 | florinsign.square
51 | florinsign.square.fill
52 | turkishlirasign.circle
53 | turkishlirasign.circle.fill
54 | turkishlirasign.square
55 | turkishlirasign.square.fill
56 | rublesign.circle
57 | rublesign.circle.fill
58 | rublesign.square
59 | rublesign.square.fill
60 | eurosign.circle
61 | eurosign.circle.fill
62 | eurosign.square
63 | eurosign.square.fill
64 | dongsign.circle
65 | dongsign.circle.fill
66 | dongsign.square
67 | dongsign.square.fill
68 | indianrupeesign.circle
69 | indianrupeesign.circle.fill
70 | indianrupeesign.square
71 | indianrupeesign.square.fill
72 | tengesign.circle
73 | tengesign.circle.fill
74 | tengesign.square
75 | tengesign.square.fill
76 | pesetasign.circle
77 | pesetasign.circle.fill
78 | pesetasign.square
79 | pesetasign.square.fill
80 | pesosign.circle
81 | pesosign.circle.fill
82 | pesosign.square
83 | pesosign.square.fill
84 | kipsign.circle
85 | kipsign.circle.fill
86 | kipsign.square
87 | kipsign.square.fill
88 | wonsign.circle
89 | wonsign.circle.fill
90 | wonsign.square
91 | wonsign.square.fill
92 | lirasign.circle
93 | lirasign.circle.fill
94 | lirasign.square
95 | lirasign.square.fill
96 | australsign.circle
97 | australsign.circle.fill
98 | australsign.square
99 | australsign.square.fill
100 | hryvniasign.circle
101 | hryvniasign.circle.fill
102 | hryvniasign.square
103 | hryvniasign.square.fill
104 | nairasign.circle
105 | nairasign.circle.fill
106 | nairasign.square
107 | nairasign.square.fill
108 | guaranisign.circle
109 | guaranisign.circle.fill
110 | guaranisign.square
111 | guaranisign.square.fill
112 | coloncurrencysign.circle
113 | coloncurrencysign.circle.fill
114 | coloncurrencysign.square
115 | coloncurrencysign.square.fill
116 | cedisign.circle
117 | cedisign.circle.fill
118 | cedisign.square
119 | cedisign.square.fill
120 | cruzeirosign.circle
121 | cruzeirosign.circle.fill
122 | cruzeirosign.square
123 | cruzeirosign.square.fill
124 | tugriksign.circle
125 | tugriksign.circle.fill
126 | tugriksign.square
127 | tugriksign.square.fill
128 | millsign.circle
129 | millsign.circle.fill
130 | millsign.square
131 | millsign.square.fill
132 | shekelsign.circle
133 | shekelsign.circle.fill
134 | shekelsign.square
135 | shekelsign.square.fill
136 | manatsign.circle
137 | manatsign.circle.fill
138 | manatsign.square
139 | manatsign.square.fill
140 | rupeesign.circle
141 | rupeesign.circle.fill
142 | rupeesign.square
143 | rupeesign.square.fill
144 | bahtsign.circle
145 | bahtsign.circle.fill
146 | bahtsign.square
147 | bahtsign.square.fill
148 | larisign.circle
149 | larisign.circle.fill
150 | larisign.square
151 | larisign.square.fill
152 | bitcoinsign.circle
153 | bitcoinsign.circle.fill
154 | bitcoinsign.square
155 | bitcoinsign.square.fill
156 | brazilianrealsign.circle
157 | brazilianrealsign.circle.fill
158 | brazilianrealsign.square
159 | brazilianrealsign.square.fill
160 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Fitness.txt:
--------------------------------------------------------------------------------
1 | figure.walk
2 | figure.walk.circle
3 | figure.walk.circle.fill
4 | figure.walk.diamond
5 | figure.walk.diamond.fill
6 | figure.run
7 | figure.run.circle
8 | figure.run.circle.fill
9 | figure.run.square.stack
10 | figure.run.square.stack.fill
11 | figure.roll
12 | figure.roll.runningpace
13 | figure.american.football
14 | figure.archery
15 | figure.australian.football
16 | figure.badminton
17 | figure.barre
18 | figure.baseball
19 | figure.basketball
20 | figure.bowling
21 | figure.boxing
22 | figure.climbing
23 | figure.cooldown
24 | figure.core.training
25 | figure.cricket
26 | figure.skiing.crosscountry
27 | figure.cross.training
28 | figure.curling
29 | figure.dance
30 | figure.disc.sports
31 | figure.skiing.downhill
32 | figure.elliptical
33 | figure.equestrian.sports
34 | figure.fencing
35 | figure.fishing
36 | figure.flexibility
37 | figure.strengthtraining.functional
38 | figure.golf
39 | figure.gymnastics
40 | figure.hand.cycling
41 | figure.handball
42 | figure.highintensity.intervaltraining
43 | figure.hiking
44 | figure.hockey
45 | figure.hunting
46 | figure.indoor.cycle
47 | figure.jumprope
48 | figure.kickboxing
49 | figure.lacrosse
50 | figure.martial.arts
51 | figure.mind.and.body
52 | figure.mixed.cardio
53 | figure.open.water.swim
54 | figure.outdoor.cycle
55 | oar.2.crossed
56 | figure.pickleball
57 | figure.pilates
58 | figure.play
59 | figure.pool.swim
60 | figure.racquetball
61 | figure.rolling
62 | figure.rower
63 | figure.rugby
64 | figure.sailing
65 | figure.skating
66 | figure.snowboarding
67 | figure.soccer
68 | figure.socialdance
69 | figure.softball
70 | figure.squash
71 | figure.stair.stepper
72 | figure.stairs
73 | figure.step.training
74 | figure.surfing
75 | figure.table.tennis
76 | figure.taichi
77 | figure.tennis
78 | figure.track.and.field
79 | figure.strengthtraining.traditional
80 | figure.volleyball
81 | figure.water.fitness
82 | figure.waterpolo
83 | figure.wrestling
84 | figure.yoga
85 | baseball.diamond.bases
86 | dumbbell
87 | dumbbell.fill
88 | sportscourt
89 | sportscourt.fill
90 | sportscourt.circle
91 | sportscourt.circle.fill
92 | lane
93 | 1.lane
94 | 2.lane
95 | 3.lane
96 | 4.lane
97 | 5.lane
98 | 6.lane
99 | 7.lane
100 | 8.lane
101 | 9.lane
102 | 10.lane
103 | 11.lane
104 | 12.lane
105 | soccerball
106 | soccerball.inverse
107 | soccerball.circle
108 | soccerball.circle.inverse
109 | soccerball.circle.fill
110 | soccerball.circle.fill.inverse
111 | baseball
112 | baseball.fill
113 | baseball.circle
114 | baseball.circle.fill
115 | basketball
116 | basketball.fill
117 | basketball.circle
118 | basketball.circle.fill
119 | football
120 | football.fill
121 | football.circle
122 | football.circle.fill
123 | tennis.racket
124 | tennis.racket.circle
125 | tennis.racket.circle.fill
126 | hockey.puck
127 | hockey.puck.fill
128 | hockey.puck.circle
129 | hockey.puck.circle.fill
130 | cricket.ball
131 | cricket.ball.fill
132 | cricket.ball.circle
133 | cricket.ball.circle.fill
134 | tennisball
135 | tennisball.fill
136 | tennisball.circle
137 | tennisball.circle.fill
138 | volleyball
139 | volleyball.fill
140 | volleyball.circle
141 | volleyball.circle.fill
142 | skateboard
143 | skateboard.fill
144 | skis
145 | skis.fill
146 | snowboard
147 | snowboard.fill
148 | surfboard
149 | surfboard.fill
150 | gym.bag
151 | gym.bag.fill
152 | trophy
153 | trophy.fill
154 | trophy.circle
155 | trophy.circle.fill
156 | medal
157 | medal.fill
158 | water.waves
159 | water.waves.slash
160 | water.waves.and.arrow.up
161 | water.waves.and.arrow.down
162 | water.waves.and.arrow.down.trianglebadge.exclamationmark
163 | flag.checkered
164 | flag.checkered.circle
165 | flag.checkered.circle.fill
166 | flag.2.crossed
167 | flag.2.crossed.fill
168 | flag.2.crossed.circle
169 | flag.2.crossed.circle.fill
170 | flag.filled.and.flag.crossed
171 | flag.and.flag.filled.crossed
172 | flag.checkered.2.crossed
173 | gauge.with.needle
174 | gauge.with.needle.fill
175 | gamecontroller
176 | gamecontroller.fill
177 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Camera & Photos.txt:
--------------------------------------------------------------------------------
1 | bolt
2 | bolt.fill
3 | bolt.circle
4 | bolt.circle.fill
5 | bolt.square
6 | bolt.square.fill
7 | bolt.slash
8 | bolt.slash.fill
9 | bolt.slash.circle
10 | bolt.slash.circle.fill
11 | bolt.badge.clock
12 | bolt.badge.clock.fill
13 | bolt.badge.a
14 | bolt.badge.a.fill
15 | bolt.trianglebadge.exclamationmark
16 | bolt.trianglebadge.exclamationmark.fill
17 | camera
18 | camera.fill
19 | camera.circle
20 | camera.circle.fill
21 | camera.shutter.button
22 | camera.shutter.button.fill
23 | camera.badge.ellipsis
24 | camera.fill.badge.ellipsis
25 | arrow.triangle.2.circlepath.camera
26 | arrow.triangle.2.circlepath.camera.fill
27 | camera.on.rectangle
28 | camera.on.rectangle.fill
29 | iphone.rear.camera
30 | ipad.rear.camera
31 | camera.macro
32 | camera.macro.circle
33 | camera.macro.circle.fill
34 | plus.viewfinder
35 | photo
36 | photo.fill
37 | photo.circle
38 | photo.circle.fill
39 | text.below.photo
40 | text.below.photo.fill
41 | camera.metering.center.weighted.average
42 | camera.metering.center.weighted
43 | camera.metering.matrix
44 | camera.metering.multispot
45 | camera.metering.none
46 | camera.metering.partial
47 | camera.metering.spot
48 | camera.metering.unknown
49 | camera.aperture
50 | circle.filled.pattern.diagonalline.rectangle
51 | circle.rectangle.filled.pattern.diagonalline
52 | circle.dashed.rectangle
53 | circle.rectangle.dashed
54 | photo.on.rectangle
55 | photo.fill.on.rectangle.fill
56 | photo.on.rectangle.angled
57 | photo.stack
58 | photo.stack.fill
59 | livephoto
60 | livephoto.slash
61 | livephoto.badge.a
62 | livephoto.play
63 | scope
64 | rectangle.and.arrow.up.right.and.arrow.down.left
65 | rectangle.and.arrow.up.right.and.arrow.down.left.slash
66 | square.2.layers.3d
67 | square.2.layers.3d.top.filled
68 | square.2.layers.3d.bottom.filled
69 | square.3.layers.3d.down.right
70 | square.3.layers.3d.down.right.slash
71 | square.3.layers.3d.down.left
72 | square.3.layers.3d.down.left.slash
73 | square.3.layers.3d.down.forward
74 | square.3.layers.3d.down.backward
75 | square.3.layers.3d
76 | square.3.layers.3d.slash
77 | square.3.layers.3d.top.filled
78 | square.3.layers.3d.middle.filled
79 | square.3.layers.3d.bottom.filled
80 | perspective
81 | circle.and.line.horizontal
82 | circle.and.line.horizontal.fill
83 | trapezoid.and.line.vertical
84 | trapezoid.and.line.vertical.fill
85 | trapezoid.and.line.horizontal
86 | trapezoid.and.line.horizontal.fill
87 | camera.filters
88 | arrow.left.and.right.righttriangle.left.righttriangle.right
89 | arrow.left.and.right.righttriangle.left.righttriangle.right.fill
90 | arrow.up.and.down.righttriangle.up.righttriangle.down
91 | arrow.up.and.down.righttriangle.up.righttriangle.down.fill
92 | f.cursive
93 | f.cursive.circle
94 | f.cursive.circle.fill
95 | plusminus
96 | plusminus.circle
97 | plusminus.circle.fill
98 | chevron.left
99 | chevron.left.circle
100 | chevron.left.circle.fill
101 | chevron.backward
102 | chevron.backward.circle
103 | chevron.backward.circle.fill
104 | chevron.right
105 | chevron.right.circle
106 | chevron.right.circle.fill
107 | chevron.forward
108 | chevron.forward.circle
109 | chevron.forward.circle.fill
110 | chevron.up
111 | chevron.up.circle
112 | chevron.up.circle.fill
113 | chevron.down
114 | chevron.down.circle
115 | chevron.down.circle.fill
116 | arrow.up.left.and.arrow.down.right
117 | arrow.up.left.and.arrow.down.right.circle
118 | arrow.up.left.and.arrow.down.right.circle.fill
119 | arrow.up.backward.and.arrow.down.forward
120 | arrow.up.backward.and.arrow.down.forward.circle
121 | arrow.up.backward.and.arrow.down.forward.circle.fill
122 | arrow.down.right.and.arrow.up.left
123 | arrow.down.right.and.arrow.up.left.circle
124 | arrow.down.right.and.arrow.up.left.circle.fill
125 | arrow.down.forward.and.arrow.up.backward
126 | arrow.down.forward.and.arrow.up.backward.circle
127 | arrow.down.forward.and.arrow.up.backward.circle.fill
128 | arrow.triangle.2.circlepath
129 | arrow.triangle.2.circlepath.circle
130 | arrow.triangle.2.circlepath.circle.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Communication.txt:
--------------------------------------------------------------------------------
1 | mic
2 | mic.fill
3 | mic.circle
4 | mic.circle.fill
5 | mic.square
6 | mic.square.fill
7 | mic.slash
8 | mic.slash.fill
9 | mic.slash.circle
10 | mic.slash.circle.fill
11 | mic.badge.plus
12 | mic.fill.badge.plus
13 | mic.badge.xmark
14 | mic.fill.badge.xmark
15 | mic.and.signal.meter
16 | mic.and.signal.meter.fill
17 | message
18 | message.fill
19 | message.circle
20 | message.circle.fill
21 | message.badge
22 | message.badge.filled.fill
23 | message.badge.circle
24 | message.badge.circle.fill
25 | message.badge.fill
26 | message.and.waveform
27 | message.and.waveform.fill
28 | checkmark.message
29 | checkmark.message.fill
30 | arrow.up.message
31 | arrow.up.message.fill
32 | arrow.down.message
33 | arrow.down.message.fill
34 | plus.message
35 | plus.message.fill
36 | ellipsis.message
37 | ellipsis.message.fill
38 | bubble.right
39 | bubble.right.fill
40 | bubble.right.circle
41 | bubble.right.circle.fill
42 | bubble.left
43 | bubble.left.fill
44 | bubble.left.circle
45 | bubble.left.circle.fill
46 | exclamationmark.bubble
47 | exclamationmark.bubble.fill
48 | exclamationmark.bubble.circle
49 | exclamationmark.bubble.circle.fill
50 | quote.opening
51 | quote.closing
52 | quote.bubble
53 | quote.bubble.fill
54 | star.bubble
55 | star.bubble.fill
56 | character.bubble
57 | character.bubble.fill
58 | text.bubble
59 | text.bubble.fill
60 | captions.bubble
61 | captions.bubble.fill
62 | info.bubble
63 | info.bubble.fill
64 | questionmark.bubble
65 | questionmark.bubble.fill
66 | plus.bubble
67 | plus.bubble.fill
68 | checkmark.bubble
69 | checkmark.bubble.fill
70 | rectangle.3.group.bubble.left
71 | rectangle.3.group.bubble.left.fill
72 | ellipsis.bubble
73 | ellipsis.bubble.fill
74 | ellipsis.vertical.bubble
75 | ellipsis.vertical.bubble.fill
76 | phone.bubble.left
77 | phone.bubble.left.fill
78 | video.bubble.left
79 | video.bubble.left.fill
80 | speaker.wave.2.bubble.left
81 | speaker.wave.2.bubble.left.fill
82 | bubble.middle.bottom
83 | bubble.middle.bottom.fill
84 | bubble.middle.top
85 | bubble.middle.top.fill
86 | bubble.left.and.bubble.right
87 | bubble.left.and.bubble.right.fill
88 | bubble.left.and.exclamationmark.bubble.right
89 | bubble.left.and.exclamationmark.bubble.right.fill
90 | phone
91 | phone.fill
92 | phone.circle
93 | phone.circle.fill
94 | phone.badge.plus
95 | phone.fill.badge.plus
96 | phone.badge.checkmark
97 | phone.fill.badge.checkmark
98 | phone.connection
99 | phone.connection.fill
100 | phone.and.waveform
101 | phone.and.waveform.fill
102 | phone.arrow.up.right
103 | phone.arrow.up.right.fill
104 | phone.arrow.up.right.circle
105 | phone.arrow.up.right.circle.fill
106 | phone.arrow.down.left
107 | phone.arrow.down.left.fill
108 | phone.arrow.right
109 | phone.arrow.right.fill
110 | phone.down
111 | phone.down.fill
112 | phone.down.circle
113 | phone.down.circle.fill
114 | phone.down.waves.left.and.right
115 | teletype
116 | teletype.circle
117 | teletype.circle.fill
118 | teletype.answer
119 | teletype.answer.circle
120 | teletype.answer.circle.fill
121 | video
122 | video.fill
123 | video.circle
124 | video.circle.fill
125 | video.square
126 | video.square.fill
127 | video.slash
128 | video.slash.fill
129 | video.badge.plus
130 | video.fill.badge.plus
131 | video.badge.checkmark
132 | video.fill.badge.checkmark
133 | video.badge.ellipsis
134 | video.fill.badge.ellipsis
135 | video.and.waveform
136 | video.and.waveform.fill
137 | arrow.up.right.video
138 | arrow.up.right.video.fill
139 | arrow.down.left.video
140 | arrow.down.left.video.fill
141 | questionmark.video
142 | questionmark.video.fill
143 | deskview
144 | deskview.fill
145 | envelope
146 | envelope.fill
147 | envelope.circle
148 | envelope.circle.fill
149 | envelope.arrow.triangle.branch
150 | envelope.arrow.triangle.branch.fill
151 | envelope.open
152 | envelope.open.fill
153 | envelope.open.badge.clock
154 | envelope.badge
155 | envelope.badge.fill
156 | waveform
157 | waveform.circle
158 | waveform.circle.fill
159 | waveform.slash
160 | waveform.badge.plus
161 | waveform.badge.minus
162 | waveform.badge.exclamationmark
163 | waveform.and.magnifyingglass
164 | waveform.and.mic
165 | recordingtape
166 | recordingtape.circle
167 | recordingtape.circle.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/SymbolPickerView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SymbolPIckerView.swift
3 | //
4 | //
5 | // Created by Kai Quan Tay on 4/6/23.
6 | //
7 |
8 | import Foundation
9 | import SwiftUI
10 |
11 | @available(macOS 12.0, *)
12 | public struct SymbolPickerView: NSViewRepresentable {
13 | @Binding var showSymbolPicker: Bool
14 | @Binding var selectedSymbol: String
15 | @Binding var selectedColor: Color
16 |
17 | var title: String = ""
18 | var showColorPickerItem: Bool
19 |
20 | public init(showSymbolPicker: Binding, selectedSymbol: Binding, selectedColor: Binding, title: String, showColorPickerItem: Bool) {
21 | self._showSymbolPicker = showSymbolPicker
22 | self._selectedSymbol = selectedSymbol
23 | self._selectedColor = selectedColor
24 | self.title = title
25 | self.showColorPickerItem = showColorPickerItem
26 | }
27 |
28 | public func makeNSView(context: Context) -> SymbolPickerAdaptor {
29 | let adaptor = SymbolPickerAdaptor(
30 | title: title,
31 | color: .init(selectedColor),
32 | showColorPickerItem: showColorPickerItem,
33 | delegate: context.coordinator
34 | )
35 | return adaptor
36 | }
37 |
38 | public func updateNSView(_ nsView: SymbolPickerAdaptor, context: Context) {
39 | nsView.title = title
40 | nsView.color = NSColor(selectedColor)
41 | if !showSymbolPicker {
42 | nsView.detach()
43 | }
44 | }
45 |
46 | public typealias NSViewControllerType = SymbolPickerAdaptor
47 | public typealias Coordinator = SymbolCoordinator
48 |
49 | public func makeCoordinator() -> SymbolCoordinator {
50 | SymbolCoordinator(parent: self)
51 | }
52 |
53 | public class SymbolCoordinator: NSObject, SymbolPickerDelegateSwiftUI {
54 | var parent: SymbolPickerView
55 |
56 | init(parent: SymbolPickerView) {
57 | self.parent = parent
58 | }
59 |
60 | public func symbolPicker(_ symbol: String, color: NSColor?) {
61 | parent.selectedSymbol = symbol
62 | if let color {
63 | parent.selectedColor = .init(nsColor: color)
64 | } else {
65 | parent.selectedColor = .accentColor
66 | }
67 | parent.showSymbolPicker = false
68 | }
69 |
70 | public func changeDisplayMode(showing: Bool) {
71 | parent.showSymbolPicker = showing
72 | }
73 |
74 | public func getCurrentSymbol() -> String {
75 | return parent.selectedSymbol
76 | }
77 | }
78 | }
79 |
80 | public final class SymbolPickerAdaptor: NSView {
81 | var title: String
82 | var color: NSColor
83 | var showColorPickerItem: Bool
84 | var delegate: any SymbolPickerDelegateSwiftUI
85 |
86 | private var symbolPickerWindowController: NSWindowController?
87 |
88 | init(title: String, color: NSColor, showColorPickerItem: Bool, delegate: any SymbolPickerDelegateSwiftUI) {
89 | self.title = title
90 | self.color = color
91 | self.showColorPickerItem = showColorPickerItem
92 | self.delegate = delegate
93 | super.init(frame: .zero)
94 | self.addPickerView()
95 | }
96 |
97 | public func detach() {
98 | symbolPickerWindowController = nil
99 | }
100 |
101 | private func addPickerView() {
102 | if let windowController = SymbolPicker.windowController(
103 | symbol: delegate.getCurrentSymbol(),
104 | color: self.color,
105 | delegate: delegate,
106 | title: self.title,
107 | showColorPickerItem: self.showColorPickerItem) {
108 | windowController.loadWindow()
109 | if let view = windowController.window?.contentView {
110 | self.symbolPickerWindowController = windowController
111 | self.addSubview(view)
112 | view.translatesAutoresizingMaskIntoConstraints = false
113 | NSLayoutConstraint.activate([
114 | self.leadingAnchor.constraint(equalTo: view.leadingAnchor),
115 | self.trailingAnchor.constraint(equalTo: view.trailingAnchor),
116 | self.topAnchor.constraint(equalTo: view.topAnchor),
117 | self.bottomAnchor.constraint(equalTo: view.bottomAnchor),
118 | ])
119 | }
120 | }
121 | }
122 |
123 | required init?(coder: NSCoder) {
124 | fatalError("init(coder:) has not been implemented")
125 | }
126 | }
127 |
128 | protocol SymbolPickerDelegateSwiftUI: SymbolPickerDelegate {
129 | func changeDisplayMode(showing: Bool)
130 |
131 | func getCurrentSymbol() -> String
132 | }
133 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Human.txt:
--------------------------------------------------------------------------------
1 | folder.badge.person.crop
2 | folder.fill.badge.person.crop
3 | externaldrive.badge.person.crop
4 | externaldrive.fill.badge.person.crop
5 | person
6 | person.fill
7 | person.fill.turn.right
8 | person.fill.turn.down
9 | person.fill.turn.left
10 | person.fill.checkmark
11 | person.fill.xmark
12 | person.fill.questionmark
13 | person.circle
14 | person.circle.fill
15 | person.badge.plus
16 | person.fill.badge.plus
17 | person.badge.minus
18 | person.fill.badge.minus
19 | person.badge.clock
20 | person.badge.clock.fill
21 | shareplay
22 | shareplay.slash
23 | rectangle.inset.filled.and.person.filled
24 | person.and.arrow.left.and.arrow.right
25 | person.fill.and.arrow.left.and.arrow.right
26 | person.2
27 | person.2.fill
28 | person.2.circle
29 | person.2.circle.fill
30 | person.wave.2
31 | person.wave.2.fill
32 | person.2.wave.2
33 | person.2.wave.2.fill
34 | person.3
35 | person.3.fill
36 | person.3.sequence
37 | person.3.sequence.fill
38 | person.crop.circle
39 | person.crop.circle.fill
40 | person.crop.circle.badge.plus
41 | person.crop.circle.fill.badge.plus
42 | person.crop.circle.badge.minus
43 | person.crop.circle.fill.badge.minus
44 | person.crop.circle.badge.checkmark
45 | person.crop.circle.fill.badge.checkmark
46 | person.crop.circle.badge.xmark
47 | person.crop.circle.fill.badge.xmark
48 | person.crop.circle.badge.questionmark
49 | person.crop.circle.badge.questionmark.fill
50 | person.crop.circle.badge.exclamationmark
51 | person.crop.circle.badge.exclamationmark.fill
52 | person.crop.circle.badge.moon
53 | person.crop.circle.badge.moon.fill
54 | person.crop.circle.badge.clock
55 | person.crop.circle.badge.clock.fill
56 | person.crop.circle.badge
57 | person.crop.circle.badge.fill
58 | person.crop.square
59 | person.crop.square.fill
60 | person.crop.artframe
61 | person.crop.rectangle.stack
62 | person.crop.rectangle.stack.fill
63 | person.2.crop.square.stack
64 | person.2.crop.square.stack.fill
65 | person.crop.rectangle
66 | person.crop.rectangle.fill
67 | arrow.up.and.person.rectangle.portrait
68 | arrow.up.and.person.rectangle.turn.right
69 | arrow.up.and.person.rectangle.turn.left
70 | person.crop.square.filled.and.at.rectangle
71 | person.crop.square.filled.and.at.rectangle.fill
72 | person.text.rectangle
73 | person.text.rectangle.fill
74 | eye
75 | eye.fill
76 | eye.circle
77 | eye.circle.fill
78 | eye.square
79 | eye.square.fill
80 | eye.slash
81 | eye.slash.fill
82 | eye.slash.circle
83 | eye.slash.circle.fill
84 | eye.trianglebadge.exclamationmark
85 | eye.trianglebadge.exclamationmark.fill
86 | tshirt
87 | tshirt.fill
88 | eyes
89 | eyes.inverse
90 | eyebrow
91 | nose
92 | nose.fill
93 | mustache
94 | mustache.fill
95 | mouth
96 | mouth.fill
97 | brain.head.profile
98 | brain
99 | person.icloud
100 | person.icloud.fill
101 | lungs
102 | lungs.fill
103 | face.smiling
104 | face.smiling.fill
105 | face.dashed
106 | face.dashed.fill
107 | person.fill.viewfinder
108 | rectangle.badge.person.crop
109 | rectangle.fill.badge.person.crop
110 | rectangle.stack.badge.person.crop
111 | rectangle.stack.badge.person.crop.fill
112 | figure.walk
113 | figure.walk.circle
114 | figure.walk.circle.fill
115 | figure.walk.diamond
116 | figure.walk.diamond.fill
117 | figure.stand
118 | figure.stand.line.dotted.figure.stand
119 | figure.wave
120 | figure.wave.circle
121 | figure.wave.circle.fill
122 | figure.roll
123 | ear
124 | ear.badge.checkmark
125 | ear.trianglebadge.exclamationmark
126 | ear.and.waveform
127 | ear.fill
128 | hearingdevice.ear
129 | hand.raised
130 | hand.raised.fill
131 | hand.raised.circle
132 | hand.raised.circle.fill
133 | hand.raised.square
134 | hand.raised.square.fill
135 | hand.raised.slash
136 | hand.raised.slash.fill
137 | hand.thumbsup
138 | hand.thumbsup.fill
139 | hand.thumbsup.circle
140 | hand.thumbsup.circle.fill
141 | hand.thumbsdown
142 | hand.thumbsdown.fill
143 | hand.thumbsdown.circle
144 | hand.thumbsdown.circle.fill
145 | hand.point.up.left
146 | hand.point.up.left.fill
147 | hand.draw
148 | hand.draw.fill
149 | hand.tap
150 | hand.tap.fill
151 | rectangle.and.hand.point.up.left
152 | rectangle.and.hand.point.up.left.fill
153 | rectangle.filled.and.hand.point.up.left
154 | rectangle.and.hand.point.up.left.filled
155 | hand.point.left
156 | hand.point.left.fill
157 | hand.point.right
158 | hand.point.right.fill
159 | hand.point.up
160 | hand.point.up.fill
161 | hand.point.up.braille
162 | hand.point.up.braille.fill
163 | hand.point.down
164 | hand.point.down.fill
165 | hand.wave
166 | hand.wave.fill
167 | hands.clap
168 | hands.clap.fill
169 | hands.sparkles
170 | hands.sparkles.fill
171 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Communication.txt:
--------------------------------------------------------------------------------
1 | mic
2 | mic.fill
3 | mic.circle
4 | mic.circle.fill
5 | mic.square
6 | mic.square.fill
7 | mic.slash
8 | mic.slash.fill
9 | mic.slash.circle
10 | mic.slash.circle.fill
11 | mic.badge.plus
12 | mic.fill.badge.plus
13 | mic.badge.xmark
14 | mic.fill.badge.xmark
15 | mic.and.signal.meter
16 | mic.and.signal.meter.fill
17 | message
18 | message.fill
19 | message.circle
20 | message.circle.fill
21 | message.badge
22 | message.badge.filled.fill
23 | message.badge.circle
24 | message.badge.circle.fill
25 | message.badge.fill
26 | message.badge.waveform
27 | message.badge.waveform.fill
28 | checkmark.message
29 | checkmark.message.fill
30 | arrow.up.message
31 | arrow.up.message.fill
32 | arrow.down.message
33 | arrow.down.message.fill
34 | plus.message
35 | plus.message.fill
36 | ellipsis.message
37 | ellipsis.message.fill
38 | bubble
39 | bubble.fill
40 | bubble.circle
41 | bubble.circle.fill
42 | bubble.right
43 | bubble.right.fill
44 | bubble.right.circle
45 | bubble.right.circle.fill
46 | bubble.left
47 | bubble.left.fill
48 | bubble.left.circle
49 | bubble.left.circle.fill
50 | exclamationmark.bubble
51 | exclamationmark.bubble.fill
52 | exclamationmark.bubble.circle
53 | exclamationmark.bubble.circle.fill
54 | quote.opening
55 | quote.closing
56 | quote.bubble
57 | quote.bubble.fill
58 | star.bubble
59 | star.bubble.fill
60 | character.bubble
61 | character.bubble.fill
62 | text.bubble
63 | text.bubble.fill
64 | captions.bubble
65 | captions.bubble.fill
66 | info.bubble
67 | info.bubble.fill
68 | questionmark.bubble
69 | questionmark.bubble.fill
70 | plus.bubble
71 | plus.bubble.fill
72 | checkmark.bubble
73 | checkmark.bubble.fill
74 | rectangle.3.group.bubble
75 | rectangle.3.group.bubble.fill
76 | ellipsis.bubble
77 | ellipsis.bubble.fill
78 | ellipsis.vertical.bubble
79 | ellipsis.vertical.bubble.fill
80 | phone.bubble
81 | phone.bubble.fill
82 | video.bubble
83 | video.bubble.fill
84 | speaker.wave.2.bubble
85 | speaker.wave.2.bubble.fill
86 | person.bubble
87 | person.bubble.fill
88 | bubble.middle.bottom
89 | bubble.middle.bottom.fill
90 | bubble.middle.top
91 | bubble.middle.top.fill
92 | bubble.left.and.bubble.right
93 | bubble.left.and.bubble.right.fill
94 | bubble.left.and.exclamationmark.bubble.right
95 | bubble.left.and.exclamationmark.bubble.right.fill
96 | bubble.left.and.text.bubble.right
97 | bubble.left.and.text.bubble.right.fill
98 | phone
99 | phone.fill
100 | phone.circle
101 | phone.circle.fill
102 | phone.badge.plus
103 | phone.fill.badge.plus
104 | phone.badge.checkmark
105 | phone.fill.badge.checkmark
106 | phone.connection
107 | phone.connection.fill
108 | phone.badge.waveform
109 | phone.badge.waveform.fill
110 | phone.arrow.up.right
111 | phone.arrow.up.right.fill
112 | phone.arrow.up.right.circle
113 | phone.arrow.up.right.circle.fill
114 | phone.arrow.down.left
115 | phone.arrow.down.left.fill
116 | phone.arrow.right
117 | phone.arrow.right.fill
118 | phone.down
119 | phone.down.fill
120 | phone.down.circle
121 | phone.down.circle.fill
122 | phone.down.waves.left.and.right
123 | teletype
124 | teletype.circle
125 | teletype.circle.fill
126 | teletype.answer
127 | teletype.answer.circle
128 | teletype.answer.circle.fill
129 | video
130 | video.fill
131 | video.circle
132 | video.circle.fill
133 | video.square
134 | video.square.fill
135 | video.slash
136 | video.slash.fill
137 | video.slash.circle
138 | video.slash.circle.fill
139 | video.badge.plus
140 | video.fill.badge.plus
141 | video.badge.checkmark
142 | video.fill.badge.checkmark
143 | video.badge.ellipsis
144 | video.fill.badge.ellipsis
145 | video.badge.waveform
146 | video.badge.waveform.fill
147 | arrow.up.right.video
148 | arrow.up.right.video.fill
149 | arrow.down.left.video
150 | arrow.down.left.video.fill
151 | questionmark.video
152 | questionmark.video.fill
153 | deskview
154 | deskview.fill
155 | field.of.view.ultrawide
156 | field.of.view.ultrawide.fill
157 | field.of.view.wide
158 | field.of.view.wide.fill
159 | envelope
160 | envelope.fill
161 | envelope.circle
162 | envelope.circle.fill
163 | envelope.arrow.triangle.branch
164 | envelope.arrow.triangle.branch.fill
165 | envelope.open
166 | envelope.open.fill
167 | envelope.open.badge.clock
168 | envelope.badge
169 | envelope.badge.fill
170 | envelope.badge.person.crop
171 | envelope.badge.person.crop.fill
172 | waveform
173 | waveform.circle
174 | waveform.circle.fill
175 | waveform.slash
176 | waveform.badge.plus
177 | waveform.badge.minus
178 | waveform.badge.exclamationmark
179 | waveform.badge.magnifyingglass
180 | waveform.and.person.filled
181 | waveform.badge.mic
182 | recordingtape
183 | recordingtape.circle
184 | recordingtape.circle.fill
185 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Commerce.txt:
--------------------------------------------------------------------------------
1 | signature
2 | bag
3 | bag.fill
4 | bag.circle
5 | bag.circle.fill
6 | bag.badge.plus
7 | bag.fill.badge.plus
8 | bag.badge.minus
9 | bag.fill.badge.minus
10 | bag.badge.questionmark
11 | bag.fill.badge.questionmark
12 | cart
13 | cart.fill
14 | cart.circle
15 | cart.circle.fill
16 | cart.badge.plus
17 | cart.fill.badge.plus
18 | cart.badge.minus
19 | cart.fill.badge.minus
20 | cart.badge.questionmark
21 | cart.fill.badge.questionmark
22 | basket
23 | basket.fill
24 | creditcard
25 | creditcard.fill
26 | creditcard.circle
27 | creditcard.circle.fill
28 | creditcard.and.123
29 | creditcard.trianglebadge.exclamationmark
30 | giftcard
31 | giftcard.fill
32 | banknote
33 | banknote.fill
34 | dollarsign.arrow.circlepath
35 | dollarsign
36 | dollarsign.circle
37 | dollarsign.circle.fill
38 | dollarsign.square
39 | dollarsign.square.fill
40 | centsign
41 | centsign.circle
42 | centsign.circle.fill
43 | centsign.square
44 | centsign.square.fill
45 | yensign
46 | yensign.circle
47 | yensign.circle.fill
48 | yensign.square
49 | yensign.square.fill
50 | sterlingsign
51 | sterlingsign.circle
52 | sterlingsign.circle.fill
53 | sterlingsign.square
54 | sterlingsign.square.fill
55 | francsign
56 | francsign.circle
57 | francsign.circle.fill
58 | francsign.square
59 | francsign.square.fill
60 | florinsign
61 | florinsign.circle
62 | florinsign.circle.fill
63 | florinsign.square
64 | florinsign.square.fill
65 | turkishlirasign
66 | turkishlirasign.circle
67 | turkishlirasign.circle.fill
68 | turkishlirasign.square
69 | turkishlirasign.square.fill
70 | rublesign
71 | rublesign.circle
72 | rublesign.circle.fill
73 | rublesign.square
74 | rublesign.square.fill
75 | eurosign
76 | eurosign.circle
77 | eurosign.circle.fill
78 | eurosign.square
79 | eurosign.square.fill
80 | dongsign
81 | dongsign.circle
82 | dongsign.circle.fill
83 | dongsign.square
84 | dongsign.square.fill
85 | indianrupeesign
86 | indianrupeesign.circle
87 | indianrupeesign.circle.fill
88 | indianrupeesign.square
89 | indianrupeesign.square.fill
90 | tengesign
91 | tengesign.circle
92 | tengesign.circle.fill
93 | tengesign.square
94 | tengesign.square.fill
95 | pesetasign
96 | pesetasign.circle
97 | pesetasign.circle.fill
98 | pesetasign.square
99 | pesetasign.square.fill
100 | pesosign
101 | pesosign.circle
102 | pesosign.circle.fill
103 | pesosign.square
104 | pesosign.square.fill
105 | kipsign
106 | kipsign.circle
107 | kipsign.circle.fill
108 | kipsign.square
109 | kipsign.square.fill
110 | wonsign
111 | wonsign.circle
112 | wonsign.circle.fill
113 | wonsign.square
114 | wonsign.square.fill
115 | lirasign
116 | lirasign.circle
117 | lirasign.circle.fill
118 | lirasign.square
119 | lirasign.square.fill
120 | australsign
121 | australsign.circle
122 | australsign.circle.fill
123 | australsign.square
124 | australsign.square.fill
125 | hryvniasign
126 | hryvniasign.circle
127 | hryvniasign.circle.fill
128 | hryvniasign.square
129 | hryvniasign.square.fill
130 | nairasign
131 | nairasign.circle
132 | nairasign.circle.fill
133 | nairasign.square
134 | nairasign.square.fill
135 | guaranisign
136 | guaranisign.circle
137 | guaranisign.circle.fill
138 | guaranisign.square
139 | guaranisign.square.fill
140 | coloncurrencysign
141 | coloncurrencysign.circle
142 | coloncurrencysign.circle.fill
143 | coloncurrencysign.square
144 | coloncurrencysign.square.fill
145 | cedisign
146 | cedisign.circle
147 | cedisign.circle.fill
148 | cedisign.square
149 | cedisign.square.fill
150 | cruzeirosign
151 | cruzeirosign.circle
152 | cruzeirosign.circle.fill
153 | cruzeirosign.square
154 | cruzeirosign.square.fill
155 | tugriksign
156 | tugriksign.circle
157 | tugriksign.circle.fill
158 | tugriksign.square
159 | tugriksign.square.fill
160 | millsign
161 | millsign.circle
162 | millsign.circle.fill
163 | millsign.square
164 | millsign.square.fill
165 | shekelsign
166 | shekelsign.circle
167 | shekelsign.circle.fill
168 | shekelsign.square
169 | shekelsign.square.fill
170 | manatsign
171 | manatsign.circle
172 | manatsign.circle.fill
173 | manatsign.square
174 | manatsign.square.fill
175 | rupeesign
176 | rupeesign.circle
177 | rupeesign.circle.fill
178 | rupeesign.square
179 | rupeesign.square.fill
180 | bahtsign
181 | bahtsign.circle
182 | bahtsign.circle.fill
183 | bahtsign.square
184 | bahtsign.square.fill
185 | larisign
186 | larisign.circle
187 | larisign.circle.fill
188 | larisign.square
189 | larisign.square.fill
190 | bitcoinsign
191 | bitcoinsign.circle
192 | bitcoinsign.circle.fill
193 | bitcoinsign.square
194 | bitcoinsign.square.fill
195 | brazilianrealsign
196 | brazilianrealsign.circle
197 | brazilianrealsign.circle.fill
198 | brazilianrealsign.square
199 | brazilianrealsign.square.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/SymbolCollection/Symbol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Symbol.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/4.
6 | //
7 |
8 | import Foundation
9 |
10 | class Symbol {
11 | enum Category: String, CaseIterable, Codable {
12 | case All = "All"
13 | case Communication = "Communication"
14 | case Weather = "Weather"
15 | case Maps = "Maps"
16 | case ObjectsTools = "Objects & Tools"
17 | case Devices = "Devices"
18 | case CameraPhotos = "Camera & Photos"
19 | case Gaming = "Gaming"
20 | case Connectivity = "Connectivity"
21 | case Transportation = "Transportation"
22 | case Automotive = "Automotive"
23 | case Accessibility = "Accessibility"
24 | case PrivacySecurity = "Privacy & Security"
25 | case Human = "Human"
26 | case Home = "Home"
27 | case Fitness = "Fitness"
28 | case Nature = "Nature"
29 | case Editing = "Editing"
30 | case TextFormatting = "Text Formatting"
31 | case Media = "Media"
32 | case Keyboard = "Keyboard"
33 | case Commerce = "Commerce"
34 | case Time = "Time"
35 | case Health = "Health"
36 | case Shapes = "Shapes"
37 | case Arrows = "Arrows"
38 | case Indices = "Indices"
39 | case Math = "Math"
40 |
41 | static let all: [Category] = {
42 | var categories = Category.allCases
43 |
44 | if #available(macOS 14.0, *) {
45 | return categories
46 | } else if #available(macOS 13.0, *) {
47 | return categories.filter{!$0.isSonomaOnly}
48 | } else {
49 | return categories.filter{!$0.isSonomaOnly && !$0.isVenturaOnly}
50 | }
51 | }()
52 |
53 | var isSonomaOnly: Bool {
54 | switch self {
55 | case .Maps,
56 | .Automotive:
57 | return true
58 | default:
59 | return false
60 | }
61 | }
62 |
63 | var isVenturaOnly: Bool {
64 | switch self {
65 | case .CameraPhotos,
66 | .Accessibility,
67 | .PrivacySecurity,
68 | .Home,
69 | .Fitness:
70 | return true
71 | default:
72 | return false
73 | }
74 | }
75 |
76 | var name: String {
77 | return self.rawValue.localized
78 | }
79 |
80 | var symbol: String {
81 | switch self {
82 | case .All:
83 | return "square.grid.2x2"
84 | case .Communication:
85 | return "message"
86 | case .Weather:
87 | return "cloud.sun"
88 | case .Maps:
89 | return "map"
90 | case .ObjectsTools:
91 | return "folder"
92 | case .Devices:
93 | return "desktopcomputer"
94 | case .CameraPhotos:
95 | return "camera"
96 | case .Gaming:
97 | return "gamecontroller"
98 | case .Connectivity:
99 | return "antenna.radiowaves.left.and.right"
100 | case .Transportation:
101 | return "car.fill"
102 | case .Automotive:
103 | return "steeringwheel"
104 | case .Accessibility:
105 | return "figure.arms.open"
106 | case .PrivacySecurity:
107 | return "lock"
108 | case .Human:
109 | return "person.crop.circle"
110 | case .Home:
111 | return "house"
112 | case .Fitness:
113 | return "figure.run"
114 | case .Nature:
115 | return "leaf"
116 | case .Editing:
117 | return "slider.horizontal.3"
118 | case .TextFormatting:
119 | return "textformat"
120 | case .Media:
121 | return "playpause"
122 | case .Keyboard:
123 | return "command"
124 | case .Commerce:
125 | return "cart"
126 | case .Time:
127 | return "timer"
128 | case .Health:
129 | return "staroflife"
130 | case .Shapes:
131 | return "square.on.circle"
132 | case .Arrows:
133 | return "arrow.right"
134 | case .Indices:
135 | return "a.circle"
136 | case .Math:
137 | return "x.squareroot"
138 | }
139 | }
140 | }
141 |
142 | static func symbols(in category: Category) -> [String] {
143 | let prefix: String
144 |
145 | if #available(macOS 14.0, *) {
146 | prefix = "Sonoma-"
147 | } else if #available(macOS 13.0, *) {
148 | prefix = "Ventura-"
149 | } else {
150 | prefix = "Monterey-"
151 | }
152 |
153 | if let url = Bundle.module.url(forResource: prefix + category.rawValue, withExtension: "txt") {
154 | do {
155 | let content = try String(contentsOf: url)
156 | let symbols = content.components(separatedBy: "\n").filter { !$0.isEmpty }
157 | return symbols
158 | } catch {
159 | return []
160 | }
161 | } else {
162 | return []
163 | }
164 | }
165 | }
166 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Nature.txt:
--------------------------------------------------------------------------------
1 | globe.americas
2 | globe.americas.fill
3 | globe.europe.africa
4 | globe.europe.africa.fill
5 | globe.asia.australia
6 | globe.asia.australia.fill
7 | globe.central.south.asia
8 | globe.central.south.asia.fill
9 | sun.min
10 | sun.min.fill
11 | sun.max
12 | sun.max.fill
13 | sun.max.circle
14 | sun.max.circle.fill
15 | sun.max.trianglebadge.exclamationmark
16 | sun.max.trianglebadge.exclamationmark.fill
17 | sunrise
18 | sunrise.fill
19 | sunrise.circle
20 | sunrise.circle.fill
21 | sunset
22 | sunset.fill
23 | sunset.circle
24 | sunset.circle.fill
25 | sun.and.horizon
26 | sun.and.horizon.fill
27 | sun.and.horizon.circle
28 | sun.and.horizon.circle.fill
29 | sun.dust
30 | sun.dust.fill
31 | sun.dust.circle
32 | sun.dust.circle.fill
33 | sun.haze
34 | sun.haze.fill
35 | sun.haze.circle
36 | sun.haze.circle.fill
37 | moonphase.new.moon
38 | moonphase.waxing.crescent
39 | moonphase.first.quarter
40 | moonphase.waxing.gibbous
41 | moonphase.full.moon
42 | moonphase.waning.gibbous
43 | moonphase.last.quarter
44 | moonphase.waning.crescent
45 | moonphase.new.moon.inverse
46 | moonphase.waxing.crescent.inverse
47 | moonphase.first.quarter.inverse
48 | moonphase.waxing.gibbous.inverse
49 | moonphase.full.moon.inverse
50 | moonphase.waning.gibbous.inverse
51 | moonphase.last.quarter.inverse
52 | moonphase.waning.crescent.inverse
53 | moon
54 | moon.fill
55 | moon.circle
56 | moon.circle.fill
57 | moon.haze
58 | moon.haze.fill
59 | moon.haze.circle
60 | moon.haze.circle.fill
61 | sparkles
62 | moon.stars
63 | moon.stars.fill
64 | moon.stars.circle
65 | moon.stars.circle.fill
66 | cloud
67 | cloud.fill
68 | cloud.circle
69 | cloud.circle.fill
70 | cloud.drizzle
71 | cloud.drizzle.fill
72 | cloud.drizzle.circle
73 | cloud.drizzle.circle.fill
74 | cloud.rain
75 | cloud.rain.fill
76 | cloud.rain.circle
77 | cloud.rain.circle.fill
78 | cloud.heavyrain
79 | cloud.heavyrain.fill
80 | cloud.heavyrain.circle
81 | cloud.heavyrain.circle.fill
82 | cloud.fog
83 | cloud.fog.fill
84 | cloud.fog.circle
85 | cloud.fog.circle.fill
86 | cloud.hail
87 | cloud.hail.fill
88 | cloud.hail.circle
89 | cloud.hail.circle.fill
90 | cloud.snow
91 | cloud.snow.fill
92 | cloud.snow.circle
93 | cloud.snow.circle.fill
94 | cloud.sleet
95 | cloud.sleet.fill
96 | cloud.sleet.circle
97 | cloud.sleet.circle.fill
98 | cloud.bolt
99 | cloud.bolt.fill
100 | cloud.bolt.circle
101 | cloud.bolt.circle.fill
102 | cloud.bolt.rain
103 | cloud.bolt.rain.fill
104 | cloud.bolt.rain.circle
105 | cloud.bolt.rain.circle.fill
106 | cloud.sun
107 | cloud.sun.fill
108 | cloud.sun.circle
109 | cloud.sun.circle.fill
110 | cloud.sun.rain
111 | cloud.sun.rain.fill
112 | cloud.sun.rain.circle
113 | cloud.sun.rain.circle.fill
114 | cloud.sun.bolt
115 | cloud.sun.bolt.fill
116 | cloud.sun.bolt.circle
117 | cloud.sun.bolt.circle.fill
118 | cloud.moon
119 | cloud.moon.fill
120 | cloud.moon.circle
121 | cloud.moon.circle.fill
122 | cloud.moon.rain
123 | cloud.moon.rain.fill
124 | cloud.moon.rain.circle
125 | cloud.moon.rain.circle.fill
126 | cloud.moon.bolt
127 | cloud.moon.bolt.fill
128 | cloud.moon.bolt.circle
129 | cloud.moon.bolt.circle.fill
130 | smoke
131 | smoke.fill
132 | smoke.circle
133 | smoke.circle.fill
134 | wind
135 | wind.circle
136 | wind.circle.fill
137 | wind.snow
138 | wind.snow.circle
139 | wind.snow.circle.fill
140 | snowflake
141 | snowflake.circle
142 | snowflake.circle.fill
143 | snowflake.slash
144 | tornado
145 | tornado.circle
146 | tornado.circle.fill
147 | tropicalstorm
148 | tropicalstorm.circle
149 | tropicalstorm.circle.fill
150 | hurricane
151 | hurricane.circle
152 | hurricane.circle.fill
153 | thermometer.sun
154 | thermometer.sun.fill
155 | thermometer.sun.circle
156 | thermometer.sun.circle.fill
157 | thermometer.snowflake
158 | thermometer.snowflake.circle
159 | thermometer.snowflake.circle.fill
160 | humidity
161 | humidity.fill
162 | water.waves
163 | water.waves.slash
164 | water.waves.and.arrow.up
165 | water.waves.and.arrow.down
166 | water.waves.and.arrow.down.trianglebadge.exclamationmark
167 | drop
168 | drop.fill
169 | drop.circle
170 | drop.circle.fill
171 | drop.degreesign
172 | drop.degreesign.fill
173 | drop.degreesign.slash
174 | drop.degreesign.slash.fill
175 | drop.triangle
176 | drop.triangle.fill
177 | flame
178 | flame.fill
179 | flame.circle
180 | flame.circle.fill
181 | bolt
182 | bolt.fill
183 | bolt.circle
184 | bolt.circle.fill
185 | bolt.square
186 | bolt.square.fill
187 | bolt.shield
188 | bolt.shield.fill
189 | bolt.slash
190 | bolt.slash.fill
191 | bolt.slash.circle
192 | bolt.slash.circle.fill
193 | bolt.badge.clock
194 | bolt.badge.clock.fill
195 | bolt.badge.a
196 | bolt.badge.a.fill
197 | bolt.trianglebadge.exclamationmark
198 | bolt.trianglebadge.exclamationmark.fill
199 | mountain.2
200 | mountain.2.fill
201 | mountain.2.circle
202 | mountain.2.circle.fill
203 | allergens
204 | allergens.fill
205 | microbe
206 | microbe.fill
207 | microbe.circle
208 | microbe.circle.fill
209 | hare
210 | hare.fill
211 | tortoise
212 | tortoise.fill
213 | lizard
214 | lizard.fill
215 | bird
216 | bird.fill
217 | ant
218 | ant.fill
219 | ant.circle
220 | ant.circle.fill
221 | ladybug
222 | ladybug.fill
223 | fish
224 | fish.fill
225 | fish.circle
226 | fish.circle.fill
227 | pawprint
228 | pawprint.fill
229 | pawprint.circle
230 | pawprint.circle.fill
231 | leaf
232 | leaf.fill
233 | leaf.circle
234 | leaf.circle.fill
235 | leaf.arrow.triangle.circlepath
236 | laurel.leading
237 | laurel.trailing
238 | camera.macro
239 | camera.macro.circle
240 | camera.macro.circle.fill
241 | tree
242 | tree.fill
243 | tree.circle
244 | tree.circle.fill
245 | carrot
246 | carrot.fill
247 | atom
248 | fossil.shell
249 | fossil.shell.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Monterey/Monterey-Devices.txt:
--------------------------------------------------------------------------------
1 | keyboard
2 | keyboard.fill
3 | keyboard.badge.ellipsis
4 | keyboard.chevron.compact.down
5 | keyboard.chevron.compact.left
6 | keyboard.onehanded.left
7 | keyboard.onehanded.right
8 | airtag.radiowaves.forward
9 | airtag.radiowaves.forward.fill
10 | airtag
11 | airtag.fill
12 | printer
13 | printer.fill
14 | printer.filled.and.paper
15 | printer.dotmatrix
16 | printer.dotmatrix.fill
17 | printer.dotmatrix.filled.and.paper
18 | scanner
19 | scanner.fill
20 | faxmachine
21 | display
22 | lock.display
23 | lock.open.display
24 | display.and.arrow.down
25 | display.trianglebadge.exclamationmark
26 | display.2
27 | desktopcomputer
28 | lock.desktopcomputer
29 | lock.open.desktopcomputer
30 | desktopcomputer.and.arrow.down
31 | desktopcomputer.trianglebadge.exclamationmark
32 | pc
33 | macpro.gen1
34 | macpro.gen1.fill
35 | macpro.gen2
36 | macpro.gen2.fill
37 | macpro.gen3
38 | macpro.gen3.fill
39 | macpro.gen3.server
40 | server.rack
41 | xserve
42 | laptopcomputer
43 | lock.laptopcomputer
44 | lock.open.laptopcomputer
45 | laptopcomputer.and.arrow.down
46 | laptopcomputer.trianglebadge.exclamationmark
47 | laptopcomputer.and.iphone
48 | ipad.and.iphone
49 | macmini
50 | macmini.fill
51 | airport.express
52 | airport.extreme
53 | airport.extreme.tower
54 | ipod
55 | ipodshuffle.gen1
56 | ipodshuffle.gen2
57 | ipodshuffle.gen3
58 | ipodshuffle.gen4
59 | ipodtouch
60 | ipodtouch.slash
61 | ipodtouch.landscape
62 | flipphone
63 | candybarphone
64 | iphone.homebutton
65 | iphone.homebutton.circle
66 | iphone.homebutton.circle.fill
67 | iphone.homebutton.landscape
68 | iphone.homebutton.radiowaves.left.and.right
69 | iphone.homebutton.radiowaves.left.and.right.circle
70 | iphone.homebutton.radiowaves.left.and.right.circle.fill
71 | iphone.homebutton.slash
72 | iphone.homebutton.slash.circle
73 | iphone.homebutton.slash.circle.fill
74 | iphone.homebutton.badge.play
75 | iphone
76 | iphone.circle
77 | iphone.circle.fill
78 | iphone.landscape
79 | iphone.radiowaves.left.and.right
80 | iphone.radiowaves.left.and.right.circle
81 | iphone.radiowaves.left.and.right.circle.fill
82 | iphone.slash
83 | iphone.slash.circle
84 | iphone.slash.circle.fill
85 | iphone.badge.play
86 | lock.iphone
87 | lock.open.iphone
88 | iphone.and.arrow.forward
89 | arrow.turn.up.forward.iphone
90 | arrow.turn.up.forward.iphone.fill
91 | iphone.rear.camera
92 | apps.iphone
93 | apps.iphone.badge.plus
94 | apps.iphone.landscape
95 | platter.2.filled.iphone
96 | platter.2.filled.iphone.landscape
97 | iphone.smartbatterycase.gen2
98 | iphone.smartbatterycase.gen1
99 | ipad.homebutton
100 | ipad.homebutton.badge.play
101 | ipad.homebutton.landscape
102 | ipad.homebutton.landscape.badge.play
103 | ipad
104 | ipad.badge.play
105 | lock.ipad
106 | lock.open.ipad
107 | ipad.and.arrow.forward
108 | ipad.landscape
109 | ipad.landscape.badge.play
110 | ipad.rear.camera
111 | apps.ipad
112 | apps.ipad.landscape
113 | platter.2.filled.ipad
114 | platter.2.filled.ipad.landscape
115 | applepencil
116 | magicmouse
117 | magicmouse.fill
118 | computermouse
119 | computermouse.fill
120 | applewatch
121 | applewatch.watchface
122 | exclamationmark.applewatch
123 | lock.applewatch
124 | lock.open.applewatch
125 | applewatch.radiowaves.left.and.right
126 | applewatch.slash
127 | applewatch.side.right
128 | watchface.applewatch.case
129 | applewatch.case.inset.filled
130 | platter.filled.top.applewatch.case
131 | platter.filled.bottom.applewatch.case
132 | platter.top.applewatch.case
133 | platter.bottom.applewatch.case
134 | digitalcrown.arrow.clockwise
135 | digitalcrown.arrow.clockwise.fill
136 | digitalcrown.arrow.counterclockwise
137 | digitalcrown.arrow.counterclockwise.fill
138 | digitalcrown.press
139 | digitalcrown.press.fill
140 | digitalcrown.horizontal.arrow.clockwise
141 | digitalcrown.horizontal.arrow.clockwise.fill
142 | digitalcrown.horizontal.arrow.counterclockwise
143 | digitalcrown.horizontal.arrow.counterclockwise.fill
144 | digitalcrown.horizontal.press
145 | digitalcrown.horizontal.press.fill
146 | airpodsmax
147 | beats.headphones
148 | headphones
149 | headphones.circle
150 | headphones.circle.fill
151 | earbuds
152 | earbuds.case
153 | earbuds.case.fill
154 | earpods
155 | airpods
156 | airpod.right
157 | airpod.left
158 | airpods.chargingcase
159 | airpods.chargingcase.fill
160 | airpods.chargingcase.wireless
161 | airpods.chargingcase.wireless.fill
162 | airpodspro
163 | airpodpro.right
164 | airpodpro.left
165 | airpodspro.chargingcase.wireless
166 | airpodspro.chargingcase.wireless.fill
167 | beats.earphones
168 | beats.powerbeatspro
169 | beats.powerbeatspro.right
170 | beats.powerbeatspro.left
171 | beats.powerbeats
172 | beats.powerbeats3
173 | beats.studiobuds
174 | beats.studiobud.left
175 | beats.studiobud.right
176 | beats.studiobuds.chargingcase
177 | beats.studiobuds.chargingcase.fill
178 | beats.powerbeatspro.chargingcase
179 | beats.powerbeatspro.chargingcase.fill
180 | homepodmini
181 | homepodmini.fill
182 | homepodmini.2
183 | homepodmini.2.fill
184 | homepod.and.homepodmini
185 | homepod.and.homepodmini.fill
186 | hifispeaker.and.homepodmini
187 | hifispeaker.and.homepodmini.fill
188 | homepod
189 | homepod.fill
190 | homepod.2
191 | homepod.2.fill
192 | hifispeaker.and.homepod
193 | hifispeaker.and.homepod.fill
194 | hifispeaker
195 | hifispeaker.fill
196 | hifispeaker.2
197 | hifispeaker.2.fill
198 | appletv
199 | appletv.fill
200 | homepod.and.appletv
201 | homepod.and.appletv.fill
202 | homepodmini.and.appletv
203 | homepodmini.and.appletv.fill
204 | hifispeaker.and.appletv
205 | hifispeaker.and.appletv.fill
206 | appletvremote.gen1
207 | appletvremote.gen1.fill
208 | appletvremote.gen2
209 | appletvremote.gen2.fill
210 | appletvremote.gen3
211 | appletvremote.gen3.fill
212 | appletvremote.gen4
213 | appletvremote.gen4.fill
214 | magsafe.batterypack
215 | magsafe.batterypack.fill
216 | mediastick
217 | cable.connector
218 | cable.connector.horizontal
219 | tv
220 | tv.fill
221 | tv.inset.filled
222 | tv.circle
223 | tv.circle.fill
224 | sparkles.tv
225 | sparkles.tv.fill
226 | 4k.tv
227 | 4k.tv.fill
228 | music.note.tv
229 | music.note.tv.fill
230 | play.tv
231 | play.tv.fill
232 | photo.tv
233 | tv.and.hifispeaker.fill
234 | tv.and.mediabox
235 | gamecontroller
236 | gamecontroller.fill
237 | hearingdevice.ear
238 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Camera & Photos.txt:
--------------------------------------------------------------------------------
1 | righttriangle
2 | righttriangle.fill
3 | righttriangle.split.diagonal
4 | righttriangle.split.diagonal.fill
5 | drop.halffull
6 | swirl.circle.righthalf.filled
7 | swirl.circle.righthalf.filled.inverse
8 | circle.lefthalf.filled.righthalf.striped.horizontal
9 | circle.lefthalf.filled.righthalf.striped.horizontal.inverse
10 | circle.lefthalf.striped.horizontal
11 | circle.lefthalf.striped.horizontal.inverse
12 | circle.dotted.circle
13 | circle.dotted.circle.fill
14 | circle.bottomrighthalf.checkered
15 | lightspectrum.horizontal
16 | bolt
17 | bolt.fill
18 | bolt.circle
19 | bolt.circle.fill
20 | bolt.square
21 | bolt.square.fill
22 | bolt.slash
23 | bolt.slash.fill
24 | bolt.slash.circle
25 | bolt.slash.circle.fill
26 | bolt.badge.clock
27 | bolt.badge.clock.fill
28 | bolt.badge.automatic
29 | bolt.badge.automatic.fill
30 | bolt.badge.checkmark
31 | bolt.badge.checkmark.fill
32 | bolt.badge.xmark
33 | bolt.badge.xmark.fill
34 | bolt.trianglebadge.exclamationmark
35 | bolt.trianglebadge.exclamationmark.fill
36 | camera
37 | camera.fill
38 | camera.circle
39 | camera.circle.fill
40 | camera.shutter.button
41 | camera.shutter.button.fill
42 | camera.badge.clock
43 | camera.badge.clock.fill
44 | camera.badge.ellipsis
45 | camera.badge.ellipsis.fill
46 | arrow.triangle.2.circlepath.camera
47 | arrow.triangle.2.circlepath.camera.fill
48 | camera.on.rectangle
49 | camera.on.rectangle.fill
50 | iphone.rear.camera
51 | ipad.rear.camera
52 | camera.macro
53 | camera.macro.circle
54 | camera.macro.circle.fill
55 | plus.viewfinder
56 | camera.viewfinder
57 | photo
58 | photo.fill
59 | photo.circle
60 | photo.circle.fill
61 | photo.badge.plus
62 | photo.badge.plus.fill
63 | photo.badge.arrow.down
64 | photo.badge.arrow.down.fill
65 | photo.badge.checkmark
66 | photo.badge.checkmark.fill
67 | text.below.photo
68 | text.below.photo.fill
69 | camera.metering.center.weighted.average
70 | camera.metering.center.weighted
71 | camera.metering.matrix
72 | camera.metering.multispot
73 | camera.metering.none
74 | camera.metering.partial
75 | camera.metering.spot
76 | camera.metering.unknown
77 | camera.aperture
78 | circle.filled.pattern.diagonalline.rectangle
79 | circle.rectangle.filled.pattern.diagonalline
80 | circle.dashed.rectangle
81 | circle.rectangle.dashed
82 | photo.on.rectangle
83 | photo.fill.on.rectangle.fill
84 | photo.on.rectangle.angled
85 | photo.stack
86 | photo.stack.fill
87 | livephoto
88 | livephoto.slash
89 | livephoto.badge.automatic
90 | livephoto.play
91 | f.cursive
92 | f.cursive.circle
93 | f.cursive.circle.fill
94 | scope
95 | rectangle.and.arrow.up.right.and.arrow.down.left
96 | rectangle.and.arrow.up.right.and.arrow.down.left.slash
97 | square.2.layers.3d
98 | square.2.layers.3d.fill
99 | square.2.layers.3d.top.filled
100 | square.2.layers.3d.bottom.filled
101 | square.3.layers.3d.down.right
102 | square.3.layers.3d.down.right.slash
103 | square.3.layers.3d.down.left
104 | square.3.layers.3d.down.left.slash
105 | square.3.layers.3d.down.forward
106 | square.3.layers.3d.down.backward
107 | square.3.layers.3d
108 | square.3.layers.3d.slash
109 | square.3.layers.3d.top.filled
110 | square.3.layers.3d.middle.filled
111 | square.3.layers.3d.bottom.filled
112 | circle.dotted.and.circle
113 | perspective
114 | circle.and.line.horizontal
115 | circle.and.line.horizontal.fill
116 | trapezoid.and.line.vertical
117 | trapezoid.and.line.vertical.fill
118 | trapezoid.and.line.horizontal
119 | trapezoid.and.line.horizontal.fill
120 | camera.filters
121 | arrow.left.and.right.righttriangle.left.righttriangle.right
122 | arrow.left.and.right.righttriangle.left.righttriangle.right.fill
123 | arrow.up.and.down.righttriangle.up.righttriangle.down
124 | arrow.up.and.down.righttriangle.up.righttriangle.down.fill
125 | plusminus
126 | plusminus.circle
127 | plusminus.circle.fill
128 | chevron.left
129 | chevron.left.circle
130 | chevron.left.circle.fill
131 | chevron.backward
132 | chevron.backward.circle
133 | chevron.backward.circle.fill
134 | chevron.right
135 | chevron.right.circle
136 | chevron.right.circle.fill
137 | chevron.forward
138 | chevron.forward.circle
139 | chevron.forward.circle.fill
140 | chevron.up
141 | chevron.up.circle
142 | chevron.up.circle.fill
143 | chevron.down
144 | chevron.down.circle
145 | chevron.down.circle.fill
146 | arrow.up.left.and.arrow.down.right
147 | arrow.up.left.and.arrow.down.right.circle
148 | arrow.up.left.and.arrow.down.right.circle.fill
149 | arrow.up.left.and.arrow.down.right.square
150 | arrow.up.left.and.arrow.down.right.square.fill
151 | arrow.up.backward.and.arrow.down.forward
152 | arrow.up.backward.and.arrow.down.forward.circle
153 | arrow.up.backward.and.arrow.down.forward.circle.fill
154 | arrow.up.backward.and.arrow.down.forward.square
155 | arrow.up.backward.and.arrow.down.forward.square.fill
156 | arrow.down.left.and.arrow.up.right
157 | arrow.down.left.and.arrow.up.right.circle
158 | arrow.down.left.and.arrow.up.right.circle.fill
159 | arrow.down.left.and.arrow.up.right.square
160 | arrow.down.left.and.arrow.up.right.square.fill
161 | arrow.down.backward.and.arrow.up.forward
162 | arrow.down.backward.and.arrow.up.forward.circle
163 | arrow.down.backward.and.arrow.up.forward.circle.fill
164 | arrow.down.backward.and.arrow.up.forward.square
165 | arrow.down.backward.and.arrow.up.forward.square.fill
166 | arrow.down.right.and.arrow.up.left
167 | arrow.down.right.and.arrow.up.left.circle
168 | arrow.down.right.and.arrow.up.left.circle.fill
169 | arrow.down.right.and.arrow.up.left.square
170 | arrow.down.right.and.arrow.up.left.square.fill
171 | arrow.down.forward.and.arrow.up.backward
172 | arrow.down.forward.and.arrow.up.backward.circle
173 | arrow.down.forward.and.arrow.up.backward.circle.fill
174 | arrow.down.forward.and.arrow.up.backward.square
175 | arrow.down.forward.and.arrow.up.backward.square.fill
176 | arrow.up.right.and.arrow.down.left
177 | arrow.up.right.and.arrow.down.left.circle
178 | arrow.up.right.and.arrow.down.left.circle.fill
179 | arrow.up.right.and.arrow.down.left.square
180 | arrow.up.right.and.arrow.down.left.square.fill
181 | arrow.up.forward.and.arrow.down.backward
182 | arrow.up.forward.and.arrow.down.backward.circle
183 | arrow.up.forward.and.arrow.down.backward.circle.fill
184 | arrow.up.forward.and.arrow.down.backward.square
185 | arrow.up.forward.and.arrow.down.backward.square.fill
186 | arrow.triangle.2.circlepath
187 | arrow.triangle.2.circlepath.circle
188 | arrow.triangle.2.circlepath.circle.fill
189 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Gaming.txt:
--------------------------------------------------------------------------------
1 | circle.square
2 | circle.square.fill
3 | rectangle.on.rectangle
4 | rectangle.fill.on.rectangle.fill
5 | rectangle.on.rectangle.circle
6 | rectangle.on.rectangle.circle.fill
7 | rectangle.on.rectangle.square
8 | rectangle.on.rectangle.square.fill
9 | flag.checkered
10 | flag.checkered.circle
11 | flag.checkered.circle.fill
12 | flag.2.crossed
13 | flag.2.crossed.fill
14 | flag.2.crossed.circle
15 | flag.2.crossed.circle.fill
16 | flag.filled.and.flag.crossed
17 | flag.and.flag.filled.crossed
18 | flag.checkered.2.crossed
19 | house
20 | house.fill
21 | house.circle
22 | house.circle.fill
23 | arcade.stick.console
24 | arcade.stick.console.fill
25 | arcade.stick
26 | arcade.stick.and.arrow.left.and.arrow.right
27 | arcade.stick.and.arrow.left
28 | arcade.stick.and.arrow.right
29 | arcade.stick.and.arrow.up.and.arrow.down
30 | arcade.stick.and.arrow.up
31 | arcade.stick.and.arrow.down
32 | gamecontroller
33 | gamecontroller.fill
34 | l.joystick
35 | l.joystick.fill
36 | r.joystick
37 | r.joystick.fill
38 | l.joystick.press.down
39 | l.joystick.press.down.fill
40 | r.joystick.press.down
41 | r.joystick.press.down.fill
42 | l.joystick.tilt.left
43 | l.joystick.tilt.left.fill
44 | l.joystick.tilt.right
45 | l.joystick.tilt.right.fill
46 | l.joystick.tilt.up
47 | l.joystick.tilt.up.fill
48 | l.joystick.tilt.down
49 | l.joystick.tilt.down.fill
50 | r.joystick.tilt.left
51 | r.joystick.tilt.left.fill
52 | r.joystick.tilt.right
53 | r.joystick.tilt.right.fill
54 | r.joystick.tilt.up
55 | r.joystick.tilt.up.fill
56 | r.joystick.tilt.down
57 | r.joystick.tilt.down.fill
58 | circle.grid.cross
59 | circle.grid.cross.fill
60 | circle.grid.cross.left.filled
61 | circle.grid.cross.up.filled
62 | circle.grid.cross.right.filled
63 | circle.grid.cross.down.filled
64 | dpad
65 | dpad.fill
66 | dpad.left.filled
67 | dpad.up.filled
68 | dpad.right.filled
69 | dpad.down.filled
70 | arrowkeys
71 | arrowkeys.fill
72 | arrowkeys.up.filled
73 | arrowkeys.down.filled
74 | arrowkeys.left.filled
75 | arrowkeys.right.filled
76 | circle.circle
77 | circle.circle.fill
78 | square.circle
79 | square.circle.fill
80 | triangle.circle
81 | triangle.circle.fill
82 | paddleshifter.left
83 | paddleshifter.left.fill
84 | paddleshifter.right
85 | paddleshifter.right.fill
86 | l1.circle
87 | l1.circle.fill
88 | lb.circle
89 | lb.circle.fill
90 | l2.circle
91 | l2.circle.fill
92 | lt.circle
93 | lt.circle.fill
94 | r1.circle
95 | r1.circle.fill
96 | rb.circle
97 | rb.circle.fill
98 | r2.circle
99 | r2.circle.fill
100 | rt.circle
101 | rt.circle.fill
102 | button.horizontal
103 | button.horizontal.fill
104 | l4.button.horizontal
105 | l4.button.horizontal.fill
106 | r4.button.horizontal
107 | r4.button.horizontal.fill
108 | lm.button.horizontal
109 | lm.button.horizontal.fill
110 | rm.button.horizontal
111 | rm.button.horizontal.fill
112 | m1.button.horizontal
113 | m1.button.horizontal.fill
114 | m2.button.horizontal
115 | m2.button.horizontal.fill
116 | m3.button.horizontal
117 | m3.button.horizontal.fill
118 | m4.button.horizontal
119 | m4.button.horizontal.fill
120 | p1.button.horizontal
121 | p1.button.horizontal.fill
122 | p2.button.horizontal
123 | p2.button.horizontal.fill
124 | p3.button.horizontal
125 | p3.button.horizontal.fill
126 | p4.button.horizontal
127 | p4.button.horizontal.fill
128 | button.roundedtop.horizontal
129 | button.roundedtop.horizontal.fill
130 | l2.button.roundedtop.horizontal
131 | l2.button.roundedtop.horizontal.fill
132 | r2.button.roundedtop.horizontal
133 | r2.button.roundedtop.horizontal.fill
134 | lt.button.roundedtop.horizontal
135 | lt.button.roundedtop.horizontal.fill
136 | rt.button.roundedtop.horizontal
137 | rt.button.roundedtop.horizontal.fill
138 | zl.button.roundedtop.horizontal
139 | zl.button.roundedtop.horizontal.fill
140 | zr.button.roundedtop.horizontal
141 | zr.button.roundedtop.horizontal.fill
142 | button.roundedbottom.horizontal
143 | button.roundedbottom.horizontal.fill
144 | l.button.roundedbottom.horizontal
145 | l.button.roundedbottom.horizontal.fill
146 | l1.button.roundedbottom.horizontal
147 | l1.button.roundedbottom.horizontal.fill
148 | r.button.roundedbottom.horizontal
149 | r.button.roundedbottom.horizontal.fill
150 | r1.button.roundedbottom.horizontal
151 | r1.button.roundedbottom.horizontal.fill
152 | lb.button.roundedbottom.horizontal
153 | lb.button.roundedbottom.horizontal.fill
154 | rb.button.roundedbottom.horizontal
155 | rb.button.roundedbottom.horizontal.fill
156 | button.angledtop.vertical.left
157 | button.angledtop.vertical.left.fill
158 | l2.button.angledtop.vertical.left
159 | l2.button.angledtop.vertical.left.fill
160 | rectangle.on.rectangle.button.angledtop.vertical.left
161 | rectangle.on.rectangle.button.angledtop.vertical.left.fill
162 | button.angledtop.vertical.right
163 | button.angledtop.vertical.right.fill
164 | r2.button.angledtop.vertical.right
165 | r2.button.angledtop.vertical.right.fill
166 | line.3.horizontal.button.angledtop.vertical.right
167 | line.3.horizontal.button.angledtop.vertical.right.fill
168 | button.angledbottom.horizontal.left
169 | button.angledbottom.horizontal.left.fill
170 | l3.button.angledbottom.horizontal.left
171 | l3.button.angledbottom.horizontal.left.fill
172 | lsb.button.angledbottom.horizontal.left
173 | lsb.button.angledbottom.horizontal.left.fill
174 | button.angledbottom.horizontal.right
175 | button.angledbottom.horizontal.right.fill
176 | r3.button.angledbottom.horizontal.right
177 | r3.button.angledbottom.horizontal.right.fill
178 | rsb.button.angledbottom.horizontal.right
179 | rsb.button.angledbottom.horizontal.right.fill
180 | pedal.accelerator
181 | pedal.accelerator.fill
182 | pedal.brake
183 | pedal.brake.fill
184 | pedal.clutch
185 | pedal.clutch.fill
186 | gearshift.layout.sixspeed
187 | playstation.logo
188 | xbox.logo
189 | line.3.horizontal.circle
190 | line.3.horizontal.circle.fill
191 | plus
192 | plus.circle
193 | plus.circle.fill
194 | minus
195 | minus.circle
196 | minus.circle.fill
197 | xmark
198 | xmark.circle
199 | xmark.circle.fill
200 | arrowtriangle.left.circle
201 | arrowtriangle.left.circle.fill
202 | arrowtriangle.right.circle
203 | arrowtriangle.right.circle.fill
204 | arrowtriangle.up.circle
205 | arrowtriangle.up.circle.fill
206 | arrowtriangle.down.circle
207 | arrowtriangle.down.circle.fill
208 | a.circle
209 | a.circle.fill
210 | b.circle
211 | b.circle.fill
212 | l.circle
213 | l.circle.fill
214 | r.circle
215 | r.circle.fill
216 | x.circle
217 | x.circle.fill
218 | y.circle
219 | y.circle.fill
220 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Nature.txt:
--------------------------------------------------------------------------------
1 | globe.americas
2 | globe.americas.fill
3 | globe.europe.africa
4 | globe.europe.africa.fill
5 | globe.asia.australia
6 | globe.asia.australia.fill
7 | globe.central.south.asia
8 | globe.central.south.asia.fill
9 | sun.min
10 | sun.min.fill
11 | sun.max
12 | sun.max.fill
13 | sun.max.circle
14 | sun.max.circle.fill
15 | sun.max.trianglebadge.exclamationmark
16 | sun.max.trianglebadge.exclamationmark.fill
17 | sunrise
18 | sunrise.fill
19 | sunrise.circle
20 | sunrise.circle.fill
21 | sunset
22 | sunset.fill
23 | sunset.circle
24 | sunset.circle.fill
25 | sun.horizon
26 | sun.horizon.fill
27 | sun.horizon.circle
28 | sun.horizon.circle.fill
29 | sun.dust
30 | sun.dust.fill
31 | sun.dust.circle
32 | sun.dust.circle.fill
33 | sun.haze
34 | sun.haze.fill
35 | sun.haze.circle
36 | sun.haze.circle.fill
37 | sun.rain
38 | sun.rain.fill
39 | sun.rain.circle
40 | sun.rain.circle.fill
41 | sun.snow
42 | sun.snow.fill
43 | sun.snow.circle
44 | sun.snow.circle.fill
45 | moonphase.new.moon
46 | moonphase.waxing.crescent
47 | moonphase.first.quarter
48 | moonphase.waxing.gibbous
49 | moonphase.full.moon
50 | moonphase.waning.gibbous
51 | moonphase.last.quarter
52 | moonphase.waning.crescent
53 | moonphase.new.moon.inverse
54 | moonphase.waxing.crescent.inverse
55 | moonphase.first.quarter.inverse
56 | moonphase.waxing.gibbous.inverse
57 | moonphase.full.moon.inverse
58 | moonphase.waning.gibbous.inverse
59 | moonphase.last.quarter.inverse
60 | moonphase.waning.crescent.inverse
61 | moon
62 | moon.fill
63 | moon.circle
64 | moon.circle.fill
65 | moon.dust
66 | moon.dust.fill
67 | moon.dust.circle
68 | moon.dust.circle.fill
69 | moon.haze
70 | moon.haze.fill
71 | moon.haze.circle
72 | moon.haze.circle.fill
73 | sparkles
74 | moon.stars
75 | moon.stars.fill
76 | moon.stars.circle
77 | moon.stars.circle.fill
78 | cloud
79 | cloud.fill
80 | cloud.circle
81 | cloud.circle.fill
82 | cloud.drizzle
83 | cloud.drizzle.fill
84 | cloud.drizzle.circle
85 | cloud.drizzle.circle.fill
86 | cloud.rain
87 | cloud.rain.fill
88 | cloud.rain.circle
89 | cloud.rain.circle.fill
90 | cloud.heavyrain
91 | cloud.heavyrain.fill
92 | cloud.heavyrain.circle
93 | cloud.heavyrain.circle.fill
94 | cloud.fog
95 | cloud.fog.fill
96 | cloud.fog.circle
97 | cloud.fog.circle.fill
98 | cloud.hail
99 | cloud.hail.fill
100 | cloud.hail.circle
101 | cloud.hail.circle.fill
102 | cloud.snow
103 | cloud.snow.fill
104 | cloud.snow.circle
105 | cloud.snow.circle.fill
106 | cloud.sleet
107 | cloud.sleet.fill
108 | cloud.sleet.circle
109 | cloud.sleet.circle.fill
110 | cloud.bolt
111 | cloud.bolt.fill
112 | cloud.bolt.circle
113 | cloud.bolt.circle.fill
114 | cloud.bolt.rain
115 | cloud.bolt.rain.fill
116 | cloud.bolt.rain.circle
117 | cloud.bolt.rain.circle.fill
118 | cloud.sun
119 | cloud.sun.fill
120 | cloud.sun.circle
121 | cloud.sun.circle.fill
122 | cloud.sun.rain
123 | cloud.sun.rain.fill
124 | cloud.sun.rain.circle
125 | cloud.sun.rain.circle.fill
126 | cloud.sun.bolt
127 | cloud.sun.bolt.fill
128 | cloud.sun.bolt.circle
129 | cloud.sun.bolt.circle.fill
130 | cloud.moon
131 | cloud.moon.fill
132 | cloud.moon.circle
133 | cloud.moon.circle.fill
134 | cloud.moon.rain
135 | cloud.moon.rain.fill
136 | cloud.moon.rain.circle
137 | cloud.moon.rain.circle.fill
138 | cloud.moon.bolt
139 | cloud.moon.bolt.fill
140 | cloud.moon.bolt.circle
141 | cloud.moon.bolt.circle.fill
142 | smoke
143 | smoke.fill
144 | smoke.circle
145 | smoke.circle.fill
146 | wind
147 | wind.circle
148 | wind.circle.fill
149 | wind.snow
150 | wind.snow.circle
151 | wind.snow.circle.fill
152 | snowflake
153 | snowflake.circle
154 | snowflake.circle.fill
155 | snowflake.slash
156 | tornado
157 | tornado.circle
158 | tornado.circle.fill
159 | tropicalstorm
160 | tropicalstorm.circle
161 | tropicalstorm.circle.fill
162 | hurricane
163 | hurricane.circle
164 | hurricane.circle.fill
165 | thermometer.sun
166 | thermometer.sun.fill
167 | thermometer.sun.circle
168 | thermometer.sun.circle.fill
169 | thermometer.snowflake
170 | thermometer.snowflake.circle
171 | thermometer.snowflake.circle.fill
172 | thermometer.variable.and.figure
173 | thermometer.variable.and.figure.circle
174 | thermometer.variable.and.figure.circle.fill
175 | humidity
176 | humidity.fill
177 | rainbow
178 | cloud.rainbow.half
179 | cloud.rainbow.half.fill
180 | water.waves
181 | water.waves.slash
182 | water.waves.and.arrow.up
183 | water.waves.and.arrow.down
184 | water.waves.and.arrow.down.trianglebadge.exclamationmark
185 | drop
186 | drop.fill
187 | drop.circle
188 | drop.circle.fill
189 | drop.degreesign
190 | drop.degreesign.fill
191 | drop.degreesign.slash
192 | drop.degreesign.slash.fill
193 | drop.triangle
194 | drop.triangle.fill
195 | flame
196 | flame.fill
197 | flame.circle
198 | flame.circle.fill
199 | bolt
200 | bolt.fill
201 | bolt.circle
202 | bolt.circle.fill
203 | bolt.square
204 | bolt.square.fill
205 | bolt.shield
206 | bolt.shield.fill
207 | bolt.slash
208 | bolt.slash.fill
209 | bolt.slash.circle
210 | bolt.slash.circle.fill
211 | bolt.badge.clock
212 | bolt.badge.clock.fill
213 | bolt.badge.automatic
214 | bolt.badge.automatic.fill
215 | bolt.badge.checkmark
216 | bolt.badge.checkmark.fill
217 | bolt.badge.xmark
218 | bolt.badge.xmark.fill
219 | bolt.trianglebadge.exclamationmark
220 | bolt.trianglebadge.exclamationmark.fill
221 | mountain.2
222 | mountain.2.fill
223 | mountain.2.circle
224 | mountain.2.circle.fill
225 | allergens
226 | allergens.fill
227 | microbe
228 | microbe.fill
229 | microbe.circle
230 | microbe.circle.fill
231 | hare
232 | hare.fill
233 | hare.circle
234 | hare.circle.fill
235 | tortoise
236 | tortoise.fill
237 | tortoise.circle
238 | tortoise.circle.fill
239 | dog
240 | dog.fill
241 | dog.circle
242 | dog.circle.fill
243 | cat
244 | cat.fill
245 | cat.circle
246 | cat.circle.fill
247 | lizard
248 | lizard.fill
249 | lizard.circle
250 | lizard.circle.fill
251 | bird
252 | bird.fill
253 | bird.circle
254 | bird.circle.fill
255 | ant
256 | ant.fill
257 | ant.circle
258 | ant.circle.fill
259 | ladybug
260 | ladybug.fill
261 | ladybug.circle
262 | ladybug.circle.fill
263 | fish
264 | fish.fill
265 | fish.circle
266 | fish.circle.fill
267 | pawprint
268 | pawprint.fill
269 | pawprint.circle
270 | pawprint.circle.fill
271 | leaf
272 | leaf.fill
273 | leaf.circle
274 | leaf.circle.fill
275 | leaf.arrow.triangle.circlepath
276 | laurel.leading
277 | laurel.trailing
278 | camera.macro
279 | camera.macro.circle
280 | camera.macro.circle.fill
281 | tree
282 | tree.fill
283 | tree.circle
284 | tree.circle.fill
285 | carrot
286 | carrot.fill
287 | atom
288 | fossil.shell
289 | fossil.shell.fill
290 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Commerce.txt:
--------------------------------------------------------------------------------
1 | signature
2 | bag
3 | bag.fill
4 | bag.circle
5 | bag.circle.fill
6 | bag.badge.plus
7 | bag.fill.badge.plus
8 | bag.badge.minus
9 | bag.fill.badge.minus
10 | bag.badge.questionmark
11 | bag.fill.badge.questionmark
12 | cart
13 | cart.fill
14 | cart.circle
15 | cart.circle.fill
16 | cart.badge.plus
17 | cart.fill.badge.plus
18 | cart.badge.minus
19 | cart.fill.badge.minus
20 | cart.badge.questionmark
21 | cart.fill.badge.questionmark
22 | basket
23 | basket.fill
24 | creditcard
25 | creditcard.fill
26 | creditcard.circle
27 | creditcard.circle.fill
28 | creditcard.and.123
29 | creditcard.trianglebadge.exclamationmark
30 | creditcard.trianglebadge.exclamationmark.fill
31 | giftcard
32 | giftcard.fill
33 | banknote
34 | banknote.fill
35 | dollarsign.arrow.circlepath
36 | centsign.arrow.circlepath
37 | yensign.arrow.circlepath
38 | sterlingsign.arrow.circlepath
39 | francsign.arrow.circlepath
40 | florinsign.arrow.circlepath
41 | turkishlirasign.arrow.circlepath
42 | rublesign.arrow.circlepath
43 | eurosign.arrow.circlepath
44 | dongsign.arrow.circlepath
45 | indianrupeesign.arrow.circlepath
46 | tengesign.arrow.circlepath
47 | pesetasign.arrow.circlepath
48 | pesosign.arrow.circlepath
49 | kipsign.arrow.circlepath
50 | wonsign.arrow.circlepath
51 | lirasign.arrow.circlepath
52 | australsign.arrow.circlepath
53 | hryvniasign.arrow.circlepath
54 | nairasign.arrow.circlepath
55 | guaranisign.arrow.circlepath
56 | coloncurrencysign.arrow.circlepath
57 | cedisign.arrow.circlepath
58 | cruzeirosign.arrow.circlepath
59 | tugriksign.arrow.circlepath
60 | millsign.arrow.circlepath
61 | shekelsign.arrow.circlepath
62 | manatsign.arrow.circlepath
63 | rupeesign.arrow.circlepath
64 | bahtsign.arrow.circlepath
65 | larisign.arrow.circlepath
66 | bitcoinsign.arrow.circlepath
67 | brazilianrealsign.arrow.circlepath
68 | chineseyuanrenminbisign.arrow.circlepath
69 | polishzlotysign.arrow.circlepath
70 | norwegiankronesign.arrow.circlepath
71 | swedishkronasign.arrow.circlepath
72 | danishkronesign.arrow.circlepath
73 | eurozonesign.arrow.circlepath
74 | australiandollarsign.arrow.circlepath
75 | dollarsign
76 | dollarsign.circle
77 | dollarsign.circle.fill
78 | dollarsign.square
79 | dollarsign.square.fill
80 | centsign
81 | centsign.circle
82 | centsign.circle.fill
83 | centsign.square
84 | centsign.square.fill
85 | yensign
86 | yensign.circle
87 | yensign.circle.fill
88 | yensign.square
89 | yensign.square.fill
90 | sterlingsign
91 | sterlingsign.circle
92 | sterlingsign.circle.fill
93 | sterlingsign.square
94 | sterlingsign.square.fill
95 | francsign
96 | francsign.circle
97 | francsign.circle.fill
98 | francsign.square
99 | francsign.square.fill
100 | florinsign
101 | florinsign.circle
102 | florinsign.circle.fill
103 | florinsign.square
104 | florinsign.square.fill
105 | turkishlirasign
106 | turkishlirasign.circle
107 | turkishlirasign.circle.fill
108 | turkishlirasign.square
109 | turkishlirasign.square.fill
110 | rublesign
111 | rublesign.circle
112 | rublesign.circle.fill
113 | rublesign.square
114 | rublesign.square.fill
115 | eurosign
116 | eurosign.circle
117 | eurosign.circle.fill
118 | eurosign.square
119 | eurosign.square.fill
120 | dongsign
121 | dongsign.circle
122 | dongsign.circle.fill
123 | dongsign.square
124 | dongsign.square.fill
125 | indianrupeesign
126 | indianrupeesign.circle
127 | indianrupeesign.circle.fill
128 | indianrupeesign.square
129 | indianrupeesign.square.fill
130 | tengesign
131 | tengesign.circle
132 | tengesign.circle.fill
133 | tengesign.square
134 | tengesign.square.fill
135 | pesetasign
136 | pesetasign.circle
137 | pesetasign.circle.fill
138 | pesetasign.square
139 | pesetasign.square.fill
140 | pesosign
141 | pesosign.circle
142 | pesosign.circle.fill
143 | pesosign.square
144 | pesosign.square.fill
145 | kipsign
146 | kipsign.circle
147 | kipsign.circle.fill
148 | kipsign.square
149 | kipsign.square.fill
150 | wonsign
151 | wonsign.circle
152 | wonsign.circle.fill
153 | wonsign.square
154 | wonsign.square.fill
155 | lirasign
156 | lirasign.circle
157 | lirasign.circle.fill
158 | lirasign.square
159 | lirasign.square.fill
160 | australsign
161 | australsign.circle
162 | australsign.circle.fill
163 | australsign.square
164 | australsign.square.fill
165 | hryvniasign
166 | hryvniasign.circle
167 | hryvniasign.circle.fill
168 | hryvniasign.square
169 | hryvniasign.square.fill
170 | nairasign
171 | nairasign.circle
172 | nairasign.circle.fill
173 | nairasign.square
174 | nairasign.square.fill
175 | guaranisign
176 | guaranisign.circle
177 | guaranisign.circle.fill
178 | guaranisign.square
179 | guaranisign.square.fill
180 | coloncurrencysign
181 | coloncurrencysign.circle
182 | coloncurrencysign.circle.fill
183 | coloncurrencysign.square
184 | coloncurrencysign.square.fill
185 | cedisign
186 | cedisign.circle
187 | cedisign.circle.fill
188 | cedisign.square
189 | cedisign.square.fill
190 | cruzeirosign
191 | cruzeirosign.circle
192 | cruzeirosign.circle.fill
193 | cruzeirosign.square
194 | cruzeirosign.square.fill
195 | tugriksign
196 | tugriksign.circle
197 | tugriksign.circle.fill
198 | tugriksign.square
199 | tugriksign.square.fill
200 | millsign
201 | millsign.circle
202 | millsign.circle.fill
203 | millsign.square
204 | millsign.square.fill
205 | shekelsign
206 | shekelsign.circle
207 | shekelsign.circle.fill
208 | shekelsign.square
209 | shekelsign.square.fill
210 | manatsign
211 | manatsign.circle
212 | manatsign.circle.fill
213 | manatsign.square
214 | manatsign.square.fill
215 | rupeesign
216 | rupeesign.circle
217 | rupeesign.circle.fill
218 | rupeesign.square
219 | rupeesign.square.fill
220 | bahtsign
221 | bahtsign.circle
222 | bahtsign.circle.fill
223 | bahtsign.square
224 | bahtsign.square.fill
225 | larisign
226 | larisign.circle
227 | larisign.circle.fill
228 | larisign.square
229 | larisign.square.fill
230 | bitcoinsign
231 | bitcoinsign.circle
232 | bitcoinsign.circle.fill
233 | bitcoinsign.square
234 | bitcoinsign.square.fill
235 | australiandollarsign
236 | australiandollarsign.circle
237 | australiandollarsign.circle.fill
238 | australiandollarsign.square
239 | australiandollarsign.square.fill
240 | polishzlotysign
241 | polishzlotysign.circle
242 | polishzlotysign.circle.fill
243 | polishzlotysign.square
244 | polishzlotysign.square.fill
245 | norwegiankronesign
246 | norwegiankronesign.circle
247 | norwegiankronesign.circle.fill
248 | norwegiankronesign.square
249 | norwegiankronesign.square.fill
250 | swedishkronasign
251 | swedishkronasign.circle
252 | swedishkronasign.circle.fill
253 | swedishkronasign.square
254 | swedishkronasign.square.fill
255 | danishkronesign
256 | danishkronesign.circle
257 | danishkronesign.circle.fill
258 | danishkronesign.square
259 | danishkronesign.square.fill
260 | eurozonesign
261 | eurozonesign.circle
262 | eurozonesign.circle.fill
263 | eurozonesign.square
264 | eurozonesign.square.fill
265 | brazilianrealsign
266 | brazilianrealsign.circle
267 | brazilianrealsign.circle.fill
268 | brazilianrealsign.square
269 | brazilianrealsign.square.fill
270 | chineseyuanrenminbisign
271 | chineseyuanrenminbisign.circle
272 | chineseyuanrenminbisign.circle.fill
273 | chineseyuanrenminbisign.square
274 | chineseyuanrenminbisign.square.fill
275 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Home.txt:
--------------------------------------------------------------------------------
1 | figure.walk.arrival
2 | figure.walk.departure
3 | figure.walk.motion
4 | homekit
5 | house
6 | house.fill
7 | house.circle
8 | house.circle.fill
9 | lightbulb
10 | lightbulb.fill
11 | lightbulb.circle
12 | lightbulb.circle.fill
13 | lightbulb.slash
14 | lightbulb.slash.fill
15 | lightbulb.2
16 | lightbulb.2.fill
17 | lightbulb.led
18 | lightbulb.led.fill
19 | lightbulb.led.wide
20 | lightbulb.led.wide.fill
21 | fan.oscillation
22 | fan.oscillation.fill
23 | fanblades
24 | fanblades.fill
25 | fanblades.slash
26 | fanblades.slash.fill
27 | fan.desk
28 | fan.desk.fill
29 | fan.floor
30 | fan.floor.fill
31 | fan.ceiling
32 | fan.ceiling.fill
33 | fan.and.light.ceiling
34 | fan.and.light.ceiling.fill
35 | lamp.desk
36 | lamp.desk.fill
37 | lamp.table
38 | lamp.table.fill
39 | lamp.floor
40 | lamp.floor.fill
41 | lamp.ceiling
42 | lamp.ceiling.fill
43 | lamp.ceiling.inverse
44 | light.recessed
45 | light.recessed.fill
46 | light.recessed.inverse
47 | light.recessed.3
48 | light.recessed.3.fill
49 | light.recessed.3.inverse
50 | light.panel
51 | light.panel.fill
52 | light.cylindrical.ceiling
53 | light.cylindrical.ceiling.fill
54 | light.cylindrical.ceiling.inverse
55 | light.strip.2
56 | light.strip.2.fill
57 | light.ribbon
58 | light.ribbon.fill
59 | chandelier
60 | chandelier.fill
61 | lightswitch.on
62 | lightswitch.on.fill
63 | lightswitch.on.square
64 | lightswitch.on.square.fill
65 | lightswitch.off
66 | lightswitch.off.fill
67 | lightswitch.off.square
68 | lightswitch.off.square.fill
69 | button.programmable
70 | button.programmable.square
71 | button.programmable.square.fill
72 | switch.programmable
73 | switch.programmable.fill
74 | switch.programmable.square
75 | switch.programmable.square.fill
76 | poweroutlet.type.a
77 | poweroutlet.type.a.fill
78 | poweroutlet.type.a.square
79 | poweroutlet.type.a.square.fill
80 | poweroutlet.type.b
81 | poweroutlet.type.b.fill
82 | poweroutlet.type.b.square
83 | poweroutlet.type.b.square.fill
84 | poweroutlet.type.c
85 | poweroutlet.type.c.fill
86 | poweroutlet.type.c.square
87 | poweroutlet.type.c.square.fill
88 | poweroutlet.type.d
89 | poweroutlet.type.d.fill
90 | poweroutlet.type.d.square
91 | poweroutlet.type.d.square.fill
92 | poweroutlet.type.e
93 | poweroutlet.type.e.fill
94 | poweroutlet.type.e.square
95 | poweroutlet.type.e.square.fill
96 | poweroutlet.type.f
97 | poweroutlet.type.f.fill
98 | poweroutlet.type.f.square
99 | poweroutlet.type.f.square.fill
100 | poweroutlet.type.g
101 | poweroutlet.type.g.fill
102 | poweroutlet.type.g.square
103 | poweroutlet.type.g.square.fill
104 | poweroutlet.type.h
105 | poweroutlet.type.h.fill
106 | poweroutlet.type.h.square
107 | poweroutlet.type.h.square.fill
108 | poweroutlet.type.i
109 | poweroutlet.type.i.fill
110 | poweroutlet.type.i.square
111 | poweroutlet.type.i.square.fill
112 | poweroutlet.type.j
113 | poweroutlet.type.j.fill
114 | poweroutlet.type.j.square
115 | poweroutlet.type.j.square.fill
116 | poweroutlet.type.k
117 | poweroutlet.type.k.fill
118 | poweroutlet.type.k.square
119 | poweroutlet.type.k.square.fill
120 | poweroutlet.type.l
121 | poweroutlet.type.l.fill
122 | poweroutlet.type.l.square
123 | poweroutlet.type.l.square.fill
124 | poweroutlet.type.m
125 | poweroutlet.type.m.fill
126 | poweroutlet.type.m.square
127 | poweroutlet.type.m.square.fill
128 | poweroutlet.type.n
129 | poweroutlet.type.n.fill
130 | poweroutlet.type.n.square
131 | poweroutlet.type.n.square.fill
132 | poweroutlet.type.o
133 | poweroutlet.type.o.fill
134 | poweroutlet.type.o.square
135 | poweroutlet.type.o.square.fill
136 | poweroutlet.strip
137 | poweroutlet.strip.fill
138 | light.beacon.min
139 | light.beacon.min.fill
140 | light.beacon.max
141 | light.beacon.max.fill
142 | web.camera
143 | web.camera.fill
144 | video.doorbell
145 | video.doorbell.fill
146 | entry.lever.keypad
147 | entry.lever.keypad.fill
148 | entry.lever.keypad.trianglebadge.exclamationmark
149 | entry.lever.keypad.trianglebadge.exclamationmark.fill
150 | door.left.hand.open
151 | door.left.hand.closed
152 | door.right.hand.open
153 | door.right.hand.closed
154 | door.sliding.left.hand.open
155 | door.sliding.left.hand.closed
156 | door.sliding.right.hand.open
157 | door.sliding.right.hand.closed
158 | door.garage.open
159 | door.garage.closed
160 | door.garage.open.trianglebadge.exclamationmark
161 | door.garage.closed.trianglebadge.exclamationmark
162 | door.garage.double.bay.open
163 | door.garage.double.bay.closed
164 | door.garage.double.bay.open.trianglebadge.exclamationmark
165 | door.garage.double.bay.closed.trianglebadge.exclamationmark
166 | door.french.open
167 | door.french.closed
168 | pedestrian.gate.closed
169 | pedestrian.gate.open
170 | window.vertical.open
171 | window.vertical.closed
172 | window.horizontal
173 | window.horizontal.closed
174 | window.ceiling
175 | window.ceiling.closed
176 | window.casement
177 | window.casement.closed
178 | window.awning
179 | window.awning.closed
180 | blinds.vertical.open
181 | blinds.vertical.closed
182 | blinds.horizontal.open
183 | blinds.horizontal.closed
184 | window.shade.open
185 | window.shade.closed
186 | roller.shade.open
187 | roller.shade.closed
188 | roman.shade.open
189 | roman.shade.closed
190 | curtains.open
191 | curtains.closed
192 | air.purifier
193 | air.purifier.fill
194 | dehumidifier
195 | dehumidifier.fill
196 | humidifier
197 | humidifier.fill
198 | humidifier.and.droplets
199 | humidifier.and.droplets.fill
200 | heater.vertical
201 | heater.vertical.fill
202 | air.conditioner.vertical
203 | air.conditioner.vertical.fill
204 | air.conditioner.horizontal
205 | air.conditioner.horizontal.fill
206 | sprinkler
207 | sprinkler.fill
208 | sprinkler.and.droplets
209 | sprinkler.and.droplets.fill
210 | spigot
211 | spigot.fill
212 | drop.keypad.rectangle
213 | drop.keypad.rectangle.fill
214 | shower.sidejet
215 | shower.sidejet.fill
216 | shower
217 | shower.fill
218 | shower.handheld
219 | shower.handheld.fill
220 | bathtub
221 | bathtub.fill
222 | contact.sensor
223 | contact.sensor.fill
224 | sensor
225 | sensor.fill
226 | carbon.monoxide.cloud
227 | carbon.monoxide.cloud.fill
228 | carbon.dioxide.cloud
229 | carbon.dioxide.cloud.fill
230 | pipe.and.drop
231 | pipe.and.drop.fill
232 | hifireceiver
233 | hifireceiver.fill
234 | videoprojector
235 | videoprojector.fill
236 | wifi.router
237 | wifi.router.fill
238 | party.popper
239 | party.popper.fill
240 | balloon
241 | balloon.fill
242 | balloon.2
243 | balloon.2.fill
244 | frying.pan
245 | frying.pan.fill
246 | popcorn
247 | popcorn.fill
248 | popcorn.circle
249 | popcorn.circle.fill
250 | bed.double
251 | bed.double.fill
252 | bed.double.circle
253 | bed.double.circle.fill
254 | sofa
255 | sofa.fill
256 | chair.lounge
257 | chair.lounge.fill
258 | chair
259 | chair.fill
260 | cabinet
261 | cabinet.fill
262 | fireplace
263 | fireplace.fill
264 | table.furniture
265 | table.furniture.fill
266 | washer
267 | washer.fill
268 | dryer
269 | dryer.fill
270 | dishwasher
271 | dishwasher.fill
272 | oven
273 | oven.fill
274 | stove
275 | stove.fill
276 | cooktop
277 | cooktop.fill
278 | microwave
279 | microwave.fill
280 | refrigerator
281 | refrigerator.fill
282 | sink
283 | sink.fill
284 | toilet
285 | toilet.fill
286 | toilet.circle
287 | toilet.circle.fill
288 | stairs
289 | square.split.bottomrightquarter
290 | square.split.bottomrightquarter.fill
291 | lock.trianglebadge.exclamationmark
292 | lock.trianglebadge.exclamationmark.fill
293 | lock.open.trianglebadge.exclamationmark
294 | lock.open.trianglebadge.exclamationmark.fill
295 | av.remote
296 | av.remote.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Human.txt:
--------------------------------------------------------------------------------
1 | folder.badge.person.crop
2 | folder.fill.badge.person.crop
3 | externaldrive.badge.person.crop
4 | externaldrive.fill.badge.person.crop
5 | person
6 | person.fill
7 | person.circle
8 | person.circle.fill
9 | person.fill.turn.right
10 | person.fill.turn.down
11 | person.fill.turn.left
12 | person.fill.checkmark
13 | person.fill.xmark
14 | person.fill.questionmark
15 | person.badge.plus
16 | person.fill.badge.plus
17 | person.badge.minus
18 | person.fill.badge.minus
19 | person.badge.clock
20 | person.badge.clock.fill
21 | person.badge.key
22 | person.badge.key.fill
23 | person.badge.shield.checkmark
24 | person.badge.shield.checkmark.fill
25 | shareplay
26 | shareplay.slash
27 | rectangle.inset.filled.and.person.filled
28 | shared.with.you
29 | shared.with.you.slash
30 | person.and.arrow.left.and.arrow.right
31 | person.fill.and.arrow.left.and.arrow.right
32 | person.2
33 | person.2.fill
34 | person.2.circle
35 | person.2.circle.fill
36 | person.2.slash
37 | person.2.slash.fill
38 | person.2.gobackward
39 | person.2.badge.gearshape
40 | person.2.badge.gearshape.fill
41 | person.wave.2
42 | person.wave.2.fill
43 | person.2.wave.2
44 | person.2.wave.2.fill
45 | person.line.dotted.person
46 | person.line.dotted.person.fill
47 | person.3
48 | person.3.fill
49 | person.3.sequence
50 | person.3.sequence.fill
51 | person.crop.circle
52 | person.crop.circle.fill
53 | person.crop.circle.badge.plus
54 | person.crop.circle.fill.badge.plus
55 | person.crop.circle.badge.minus
56 | person.crop.circle.fill.badge.minus
57 | person.crop.circle.badge.checkmark
58 | person.crop.circle.fill.badge.checkmark
59 | person.crop.circle.badge.xmark
60 | person.crop.circle.fill.badge.xmark
61 | person.crop.circle.badge.questionmark
62 | person.crop.circle.badge.questionmark.fill
63 | person.crop.circle.badge.exclamationmark
64 | person.crop.circle.badge.exclamationmark.fill
65 | person.crop.circle.badge.moon
66 | person.crop.circle.badge.moon.fill
67 | person.crop.circle.badge.clock
68 | person.crop.circle.badge.clock.fill
69 | person.crop.circle.badge
70 | person.crop.circle.badge.fill
71 | person.crop.circle.dashed
72 | person.crop.square
73 | person.crop.square.fill
74 | person.crop.artframe
75 | person.bust
76 | person.bust.fill
77 | person.crop.rectangle.stack
78 | person.crop.rectangle.stack.fill
79 | person.2.crop.square.stack
80 | person.2.crop.square.stack.fill
81 | person.crop.rectangle
82 | person.crop.rectangle.fill
83 | person.crop.rectangle.badge.plus
84 | person.crop.rectangle.badge.plus.fill
85 | square.on.square.badge.person.crop
86 | square.on.square.badge.person.crop.fill
87 | arrow.up.and.person.rectangle.portrait
88 | arrow.up.and.person.rectangle.turn.right
89 | arrow.up.and.person.rectangle.turn.left
90 | person.crop.square.filled.and.at.rectangle
91 | person.crop.square.filled.and.at.rectangle.fill
92 | person.text.rectangle
93 | person.text.rectangle.fill
94 | person.and.background.dotted
95 | figure.stand
96 | figure.stand.line.dotted.figure.stand
97 | figure.dress.line.vertical.figure
98 | figure.arms.open
99 | figure.2.arms.open
100 | figure.2.and.child.holdinghands
101 | figure.and.child.holdinghands
102 | figure.walk
103 | figure.walk.circle
104 | figure.walk.circle.fill
105 | figure.walk.diamond
106 | figure.walk.diamond.fill
107 | figure.walk.arrival
108 | figure.walk.departure
109 | figure.walk.motion
110 | figure.wave
111 | figure.wave.circle
112 | figure.wave.circle.fill
113 | figure.fall
114 | figure.fall.circle
115 | figure.fall.circle.fill
116 | figure.run
117 | figure.run.circle
118 | figure.run.circle.fill
119 | figure.run.square.stack
120 | figure.run.square.stack.fill
121 | figure.roll
122 | figure.roll.runningpace
123 | figure.american.football
124 | figure.archery
125 | figure.australian.football
126 | figure.badminton
127 | figure.barre
128 | figure.baseball
129 | figure.basketball
130 | figure.bowling
131 | figure.boxing
132 | figure.climbing
133 | figure.cooldown
134 | figure.core.training
135 | figure.cricket
136 | figure.skiing.crosscountry
137 | figure.cross.training
138 | figure.curling
139 | figure.dance
140 | figure.disc.sports
141 | figure.skiing.downhill
142 | figure.elliptical
143 | figure.equestrian.sports
144 | figure.fencing
145 | figure.fishing
146 | figure.flexibility
147 | figure.strengthtraining.functional
148 | figure.golf
149 | figure.gymnastics
150 | figure.hand.cycling
151 | figure.handball
152 | figure.highintensity.intervaltraining
153 | figure.hiking
154 | figure.hockey
155 | figure.hunting
156 | figure.indoor.cycle
157 | figure.jumprope
158 | figure.kickboxing
159 | figure.lacrosse
160 | figure.martial.arts
161 | figure.mind.and.body
162 | figure.mixed.cardio
163 | figure.open.water.swim
164 | figure.outdoor.cycle
165 | figure.pickleball
166 | figure.pilates
167 | figure.play
168 | figure.pool.swim
169 | figure.racquetball
170 | figure.rolling
171 | figure.rower
172 | figure.rugby
173 | figure.sailing
174 | figure.skating
175 | figure.snowboarding
176 | figure.soccer
177 | figure.socialdance
178 | figure.softball
179 | figure.squash
180 | figure.stair.stepper
181 | figure.stairs
182 | figure.step.training
183 | figure.surfing
184 | figure.table.tennis
185 | figure.taichi
186 | figure.tennis
187 | figure.track.and.field
188 | figure.strengthtraining.traditional
189 | figure.volleyball
190 | figure.water.fitness
191 | figure.waterpolo
192 | figure.wrestling
193 | figure.yoga
194 | person.icloud
195 | person.icloud.fill
196 | lungs
197 | lungs.fill
198 | tshirt
199 | tshirt.fill
200 | shoeprints.fill
201 | face.smiling
202 | face.smiling.inverse
203 | face.dashed
204 | face.dashed.fill
205 | eye
206 | eye.fill
207 | eye.circle
208 | eye.circle.fill
209 | eye.square
210 | eye.square.fill
211 | eye.slash
212 | eye.slash.fill
213 | eye.slash.circle
214 | eye.slash.circle.fill
215 | eye.trianglebadge.exclamationmark
216 | eye.trianglebadge.exclamationmark.fill
217 | eyes
218 | eyes.inverse
219 | eyebrow
220 | nose
221 | nose.fill
222 | mustache
223 | mustache.fill
224 | mouth
225 | mouth.fill
226 | brain.head.profile
227 | brain
228 | ear
229 | ear.badge.checkmark
230 | ear.trianglebadge.exclamationmark
231 | ear.and.waveform
232 | ear.fill
233 | hearingdevice.ear
234 | hearingdevice.ear.fill
235 | hearingdevice.and.signal.meter
236 | hearingdevice.and.signal.meter.fill
237 | hand.raised
238 | hand.raised.fill
239 | hand.raised.circle
240 | hand.raised.circle.fill
241 | hand.raised.square
242 | hand.raised.square.fill
243 | hand.raised.app
244 | hand.raised.app.fill
245 | hand.raised.slash
246 | hand.raised.slash.fill
247 | hand.raised.fingers.spread
248 | hand.raised.fingers.spread.fill
249 | hand.thumbsup
250 | hand.thumbsup.fill
251 | hand.thumbsup.circle
252 | hand.thumbsup.circle.fill
253 | hand.thumbsdown
254 | hand.thumbsdown.fill
255 | hand.thumbsdown.circle
256 | hand.thumbsdown.circle.fill
257 | hand.point.up.left
258 | hand.point.up.left.fill
259 | hand.draw
260 | hand.draw.fill
261 | hand.tap
262 | hand.tap.fill
263 | rectangle.and.hand.point.up.left
264 | rectangle.and.hand.point.up.left.fill
265 | rectangle.filled.and.hand.point.up.left
266 | rectangle.and.hand.point.up.left.filled
267 | hand.point.left
268 | hand.point.left.fill
269 | hand.point.right
270 | hand.point.right.fill
271 | hand.point.up
272 | hand.point.up.fill
273 | hand.point.up.braille
274 | hand.point.up.braille.fill
275 | hand.point.down
276 | hand.point.down.fill
277 | hand.wave
278 | hand.wave.fill
279 | hands.clap
280 | hands.clap.fill
281 | hands.sparkles
282 | hands.sparkles.fill
283 | person.fill.viewfinder
284 | rectangle.badge.person.crop
285 | rectangle.fill.badge.person.crop
286 | rectangle.stack.badge.person.crop
287 | rectangle.stack.badge.person.crop.fill
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Sonoma/Sonoma-Home.txt:
--------------------------------------------------------------------------------
1 | figure.walk.arrival
2 | figure.walk.departure
3 | figure.walk.motion
4 | figure.walk.motion.trianglebadge.exclamationmark
5 | homekit
6 | house
7 | house.fill
8 | house.circle
9 | house.circle.fill
10 | lightbulb
11 | lightbulb.fill
12 | lightbulb.circle
13 | lightbulb.circle.fill
14 | lightbulb.slash
15 | lightbulb.slash.fill
16 | lightbulb.min
17 | lightbulb.min.fill
18 | lightbulb.max
19 | lightbulb.max.fill
20 | lightbulb.min.badge.exclamationmark
21 | lightbulb.min.badge.exclamationmark.fill
22 | lightbulb.2
23 | lightbulb.2.fill
24 | lightbulb.led
25 | lightbulb.led.fill
26 | lightbulb.led.wide
27 | lightbulb.led.wide.fill
28 | fan.oscillation
29 | fan.oscillation.fill
30 | fan
31 | fan.fill
32 | fan.slash
33 | fan.slash.fill
34 | fan.desk
35 | fan.desk.fill
36 | fan.floor
37 | fan.floor.fill
38 | fan.ceiling
39 | fan.ceiling.fill
40 | fan.and.light.ceiling
41 | fan.and.light.ceiling.fill
42 | lamp.desk
43 | lamp.desk.fill
44 | lamp.table
45 | lamp.table.fill
46 | lamp.floor
47 | lamp.floor.fill
48 | lamp.ceiling
49 | lamp.ceiling.fill
50 | lamp.ceiling.inverse
51 | light.recessed
52 | light.recessed.fill
53 | light.recessed.inverse
54 | light.recessed.3
55 | light.recessed.3.fill
56 | light.recessed.3.inverse
57 | light.panel
58 | light.panel.fill
59 | light.cylindrical.ceiling
60 | light.cylindrical.ceiling.fill
61 | light.cylindrical.ceiling.inverse
62 | light.strip.2
63 | light.strip.2.fill
64 | light.ribbon
65 | light.ribbon.fill
66 | chandelier
67 | chandelier.fill
68 | lightswitch.on
69 | lightswitch.on.fill
70 | lightswitch.on.square
71 | lightswitch.on.square.fill
72 | lightswitch.off
73 | lightswitch.off.fill
74 | lightswitch.off.square
75 | lightswitch.off.square.fill
76 | button.programmable
77 | button.programmable.square
78 | button.programmable.square.fill
79 | switch.programmable
80 | switch.programmable.fill
81 | switch.programmable.square
82 | switch.programmable.square.fill
83 | poweroutlet.type.a
84 | poweroutlet.type.a.fill
85 | poweroutlet.type.a.square
86 | poweroutlet.type.a.square.fill
87 | poweroutlet.type.b
88 | poweroutlet.type.b.fill
89 | poweroutlet.type.b.square
90 | poweroutlet.type.b.square.fill
91 | poweroutlet.type.c
92 | poweroutlet.type.c.fill
93 | poweroutlet.type.c.square
94 | poweroutlet.type.c.square.fill
95 | poweroutlet.type.d
96 | poweroutlet.type.d.fill
97 | poweroutlet.type.d.square
98 | poweroutlet.type.d.square.fill
99 | poweroutlet.type.e
100 | poweroutlet.type.e.fill
101 | poweroutlet.type.e.square
102 | poweroutlet.type.e.square.fill
103 | poweroutlet.type.f
104 | poweroutlet.type.f.fill
105 | poweroutlet.type.f.square
106 | poweroutlet.type.f.square.fill
107 | poweroutlet.type.g
108 | poweroutlet.type.g.fill
109 | poweroutlet.type.g.square
110 | poweroutlet.type.g.square.fill
111 | poweroutlet.type.h
112 | poweroutlet.type.h.fill
113 | poweroutlet.type.h.square
114 | poweroutlet.type.h.square.fill
115 | poweroutlet.type.i
116 | poweroutlet.type.i.fill
117 | poweroutlet.type.i.square
118 | poweroutlet.type.i.square.fill
119 | poweroutlet.type.j
120 | poweroutlet.type.j.fill
121 | poweroutlet.type.j.square
122 | poweroutlet.type.j.square.fill
123 | poweroutlet.type.k
124 | poweroutlet.type.k.fill
125 | poweroutlet.type.k.square
126 | poweroutlet.type.k.square.fill
127 | poweroutlet.type.l
128 | poweroutlet.type.l.fill
129 | poweroutlet.type.l.square
130 | poweroutlet.type.l.square.fill
131 | poweroutlet.type.m
132 | poweroutlet.type.m.fill
133 | poweroutlet.type.m.square
134 | poweroutlet.type.m.square.fill
135 | poweroutlet.type.n
136 | poweroutlet.type.n.fill
137 | poweroutlet.type.n.square
138 | poweroutlet.type.n.square.fill
139 | poweroutlet.type.o
140 | poweroutlet.type.o.fill
141 | poweroutlet.type.o.square
142 | poweroutlet.type.o.square.fill
143 | poweroutlet.strip
144 | poweroutlet.strip.fill
145 | light.beacon.min
146 | light.beacon.min.fill
147 | light.beacon.max
148 | light.beacon.max.fill
149 | web.camera
150 | web.camera.fill
151 | video.doorbell
152 | video.doorbell.fill
153 | entry.lever.keypad
154 | entry.lever.keypad.fill
155 | entry.lever.keypad.trianglebadge.exclamationmark
156 | entry.lever.keypad.trianglebadge.exclamationmark.fill
157 | door.left.hand.open
158 | door.left.hand.closed
159 | door.right.hand.open
160 | door.right.hand.closed
161 | door.sliding.left.hand.open
162 | door.sliding.left.hand.closed
163 | door.sliding.right.hand.open
164 | door.sliding.right.hand.closed
165 | door.garage.open
166 | door.garage.closed
167 | door.garage.open.trianglebadge.exclamationmark
168 | door.garage.closed.trianglebadge.exclamationmark
169 | door.garage.double.bay.open
170 | door.garage.double.bay.closed
171 | door.garage.double.bay.open.trianglebadge.exclamationmark
172 | door.garage.double.bay.closed.trianglebadge.exclamationmark
173 | door.french.open
174 | door.french.closed
175 | pedestrian.gate.closed
176 | pedestrian.gate.open
177 | window.vertical.open
178 | window.vertical.closed
179 | window.horizontal
180 | window.horizontal.closed
181 | window.ceiling
182 | window.ceiling.closed
183 | window.casement
184 | window.casement.closed
185 | window.awning
186 | window.awning.closed
187 | blinds.vertical.open
188 | blinds.vertical.closed
189 | blinds.horizontal.open
190 | blinds.horizontal.closed
191 | window.shade.open
192 | window.shade.closed
193 | roller.shade.open
194 | roller.shade.closed
195 | roman.shade.open
196 | roman.shade.closed
197 | curtains.open
198 | curtains.closed
199 | air.purifier
200 | air.purifier.fill
201 | dehumidifier
202 | dehumidifier.fill
203 | humidifier
204 | humidifier.fill
205 | humidifier.and.droplets
206 | humidifier.and.droplets.fill
207 | heater.vertical
208 | heater.vertical.fill
209 | air.conditioner.vertical
210 | air.conditioner.vertical.fill
211 | air.conditioner.horizontal
212 | air.conditioner.horizontal.fill
213 | sprinkler
214 | sprinkler.fill
215 | sprinkler.and.droplets
216 | sprinkler.and.droplets.fill
217 | spigot
218 | spigot.fill
219 | drop.keypad.rectangle
220 | drop.keypad.rectangle.fill
221 | shower.sidejet
222 | shower.sidejet.fill
223 | shower
224 | shower.fill
225 | shower.handheld
226 | shower.handheld.fill
227 | bathtub
228 | bathtub.fill
229 | contact.sensor
230 | contact.sensor.fill
231 | sensor
232 | sensor.fill
233 | carbon.monoxide.cloud
234 | carbon.monoxide.cloud.fill
235 | carbon.dioxide.cloud
236 | carbon.dioxide.cloud.fill
237 | pipe.and.drop
238 | pipe.and.drop.fill
239 | hifireceiver
240 | hifireceiver.fill
241 | videoprojector
242 | videoprojector.fill
243 | wifi.router
244 | wifi.router.fill
245 | party.popper
246 | party.popper.fill
247 | balloon
248 | balloon.fill
249 | balloon.2
250 | balloon.2.fill
251 | frying.pan
252 | frying.pan.fill
253 | popcorn
254 | popcorn.fill
255 | popcorn.circle
256 | popcorn.circle.fill
257 | bed.double
258 | bed.double.fill
259 | bed.double.circle
260 | bed.double.circle.fill
261 | sofa
262 | sofa.fill
263 | chair.lounge
264 | chair.lounge.fill
265 | chair
266 | chair.fill
267 | table.furniture
268 | table.furniture.fill
269 | cabinet
270 | cabinet.fill
271 | fireplace
272 | fireplace.fill
273 | washer
274 | washer.fill
275 | washer.circle
276 | washer.circle.fill
277 | dryer
278 | dryer.fill
279 | dryer.circle
280 | dryer.circle.fill
281 | dishwasher
282 | dishwasher.fill
283 | dishwasher.circle
284 | dishwasher.circle.fill
285 | oven
286 | oven.fill
287 | stove
288 | stove.fill
289 | cooktop
290 | cooktop.fill
291 | microwave
292 | microwave.fill
293 | refrigerator
294 | refrigerator.fill
295 | sink
296 | sink.fill
297 | toilet
298 | toilet.fill
299 | toilet.circle
300 | toilet.circle.fill
301 | stairs
302 | square.split.bottomrightquarter
303 | square.split.bottomrightquarter.fill
304 | lock.trianglebadge.exclamationmark
305 | lock.trianglebadge.exclamationmark.fill
306 | lock.open.trianglebadge.exclamationmark
307 | lock.open.trianglebadge.exclamationmark.fill
308 | av.remote
309 | av.remote.fill
310 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/SymbolCollection/SymbolCollectionViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SymbolsCollectionViewController.swift
3 | // SymbolPicker
4 | //
5 | // Created by Francis Feng on 2021/5/4.
6 | //
7 |
8 | import Cocoa
9 |
10 | public protocol SymbolPickerDelegate: AnyObject {
11 | func symbolPicker(_ symbol: String, color: NSColor?)
12 | }
13 |
14 | class SymbolCollectionViewController: NSViewController, NSCollectionViewDataSource, NSCollectionViewDelegate {
15 |
16 | @IBOutlet weak var collectionView: CollectionView!
17 |
18 | var originalSymbolsName: [String] = []
19 | var symbolsName: [String] = []
20 | var color: NSColor = .labelColor
21 | var isColorChanged = false
22 | var currentSymbolName: String? = nil
23 | var currentSelected: Set?
24 | weak var pickerDelegate: SymbolPickerDelegate?
25 | weak var sidebarDelegate: SidebarController?
26 |
27 | @IBOutlet weak var titleField: NSTextField!
28 | @IBOutlet weak var searchField: NSSearchField!
29 |
30 | @IBOutlet weak var colorPanelButton: NSButton!
31 | var lastTypeTime = Date()
32 | var minimumTypeDuration: TimeInterval = 0.3
33 | var workItem: DispatchWorkItem?
34 |
35 | override func viewDidLoad() {
36 | super.viewDidLoad()
37 | collectionView.dataSource = self
38 | collectionView.wantsLayer = true
39 | collectionView.delegate = self
40 | collectionView.enclosingScrollView?.scrollerStyle = .overlay
41 | collectionView.register(SymbolView.self, forItemWithIdentifier: .SymbolView)
42 | collectionView.allowsEmptySelection = false
43 | searchField.action = #selector(searchAction)
44 | searchField.delegate = self
45 | colorPanelButton.action = #selector(showColorPancel)
46 | colorPanelButton.target = self
47 | setupLayout()
48 | }
49 |
50 | public func toggleColorPanelButton(_ isHidden: Bool) {
51 | colorPanelButton.isHidden = isHidden
52 | }
53 |
54 | override func viewDidDisappear() {
55 | super.viewDidDisappear()
56 | if NSColorPanel.shared.isVisible {
57 | NSColorPanel.shared.orderOut(self)
58 | }
59 | }
60 |
61 | func configureCurrentItem(symbol: String, color: NSColor) {
62 | self.currentSymbolName = symbol
63 | self.color = color
64 | }
65 |
66 | private func setupLayout() {
67 | collectionView.collectionViewLayout = gridLayout()
68 | }
69 |
70 | private func gridLayout() -> NSCollectionViewLayout {
71 | let spacing: CGFloat = 15
72 | let itemWidth: CGFloat = 44
73 | let itemHeight: CGFloat = 36
74 |
75 | let itemSize = NSCollectionLayoutSize(widthDimension: .absolute(itemWidth), heightDimension: .absolute(itemHeight))
76 | let item = NSCollectionLayoutItem(layoutSize: itemSize)
77 |
78 | let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .absolute(itemHeight))
79 | let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item])
80 |
81 | group.interItemSpacing = .flexible(spacing)
82 |
83 | let section = NSCollectionLayoutSection(group: group)
84 | section.interGroupSpacing = spacing
85 | section.contentInsets = .init(top: spacing, leading: spacing, bottom: spacing, trailing: spacing)
86 |
87 | let layout = NSCollectionViewCompositionalLayout(section: section)
88 | return layout
89 | }
90 |
91 | @objc func searchAction(_ sender: Any) {
92 | let text = searchField.stringValue
93 | self.workItem?.cancel()
94 | let workItem = DispatchWorkItem { [weak self] in
95 | self?.searchSymbol(text.lowercased())
96 | }
97 |
98 | DispatchQueue.main.asyncAfter(deadline: .now() + minimumTypeDuration, execute: workItem)
99 | self.workItem = workItem
100 | }
101 |
102 | @objc func showColorPancel(_ sender: Any) {
103 | let colorPanel = NSColorPanel.shared
104 | colorPanel.setTarget(self)
105 | colorPanel.setAction(#selector(updateColor))
106 | colorPanel.makeKeyAndOrderFront(self)
107 | colorPanel.isContinuous = true
108 | }
109 |
110 | @objc func updateColor(sender: Any) {
111 | isColorChanged = true
112 | color = NSColorPanel.shared.color
113 | collectionView.reloadData()
114 |
115 | if let selected = currentSelected?.first {
116 | if let item = collectionView.item(at: selected) {
117 | item.isSelected = true
118 | }
119 | }
120 | }
121 |
122 | func numberOfSections(in collectionView: NSCollectionView) -> Int {
123 | return 1
124 | }
125 |
126 | func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
127 | return symbolsName.count
128 | }
129 |
130 | func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
131 | let symbol = symbolsName[indexPath.item]
132 |
133 | if let symbolItem = collectionView.makeItem(withIdentifier: .SymbolView, for: indexPath) as? SymbolView {
134 | configureSymbol(symbolItem, symbol: symbol)
135 | return symbolItem
136 | }
137 |
138 | let symbolItem = SymbolView()
139 | configureSymbol(symbolItem, symbol: symbol)
140 | return symbolItem
141 | }
142 |
143 | func configureSymbol(_ view: SymbolView, symbol: String) {
144 | let configuration = NSImage.SymbolConfiguration(pointSize: 16, weight: .regular)
145 | let image = NSImage(symbol)?.withSymbolConfiguration(configuration)
146 | view.imageViewForSymbol.image = image
147 | view.imageViewForSymbol.contentTintColor = color
148 | view.imageViewForSymbol.toolTip = symbol
149 | view.viewController = self
150 |
151 | if symbol == currentSymbolName {
152 | view.isSelected = true
153 | }
154 | }
155 |
156 | // Used in SymbolView. Double-click to select current and exit.
157 | func selectCurrent() {
158 | let selectionIndexes = collectionView.selectionIndexes
159 | if let selected = selectionIndexes.first {
160 | let symbol = symbolsName[selected]
161 | if isColorChanged {
162 | pickerDelegate?.symbolPicker(symbol, color: NSColorPanel.shared.color)
163 | } else {
164 | pickerDelegate?.symbolPicker(symbol, color: nil)
165 | }
166 | endSheet()
167 | }
168 | }
169 |
170 | func endSheet() {
171 | guard let window = view.window else { return }
172 | window.sheetParent?.endSheet(window, returnCode: .OK)
173 | }
174 | }
175 |
176 | extension SymbolCollectionViewController: SidebarController {
177 | func sidebarController(_ controller: SidebarViewController, node: Node) {
178 | symbolsName = Symbol.symbols(in: node.category)
179 | originalSymbolsName = Symbol.symbols(in: node.category)
180 | collectionView.reloadData()
181 | selectCurrentSymbolIfPossible()
182 | }
183 |
184 | func selectCurrentSymbolIfPossible() {
185 | if let name = currentSymbolName,
186 | let index = symbolsName.firstIndex(of: name) {
187 |
188 | let indexPath = IndexPath(item: index, section: 0)
189 | let set = Set([indexPath])
190 |
191 | currentSelected = set
192 |
193 | collectionView.selectItems(at: set, scrollPosition: .centeredVertically)
194 | }
195 | }
196 | }
197 |
198 | extension SymbolCollectionViewController {
199 | func searchSymbol(_ string: String) {
200 | if string.isEmpty {
201 | symbolsName = originalSymbolsName
202 | } else {
203 | symbolsName = originalSymbolsName.filter{$0.contains(string)}
204 | }
205 | collectionView.reloadData()
206 | }
207 | }
208 |
209 | extension SymbolCollectionViewController: NSSearchFieldDelegate {
210 | func control(_ control: NSControl, textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
211 | if commandSelector == #selector(cancelOperation) {
212 | if searchField.stringValue.isEmpty {
213 | endSheet()
214 | return true
215 | }
216 | }
217 | return false
218 | }
219 | }
220 |
--------------------------------------------------------------------------------
/Sources/SymbolPicker/Resources/Ventura/Ventura-Devices.txt:
--------------------------------------------------------------------------------
1 | keyboard
2 | keyboard.fill
3 | keyboard.badge.ellipsis
4 | keyboard.badge.ellipsis.fill
5 | keyboard.badge.eye
6 | keyboard.badge.eye.fill
7 | keyboard.chevron.compact.down
8 | keyboard.chevron.compact.down.fill
9 | keyboard.chevron.compact.left
10 | keyboard.chevron.compact.left.fill
11 | keyboard.onehanded.left
12 | keyboard.onehanded.left.fill
13 | keyboard.onehanded.right
14 | keyboard.onehanded.right.fill
15 | printer
16 | printer.fill
17 | printer.filled.and.paper
18 | printer.dotmatrix
19 | printer.dotmatrix.fill
20 | printer.dotmatrix.filled.and.paper
21 | scanner
22 | scanner.fill
23 | faxmachine
24 | faxmachine.fill
25 | airtag.radiowaves.forward
26 | airtag.radiowaves.forward.fill
27 | airtag
28 | airtag.fill
29 | display
30 | play.display
31 | lock.display
32 | lock.open.display
33 | display.and.arrow.down
34 | display.trianglebadge.exclamationmark
35 | display.2
36 | desktopcomputer
37 | play.desktopcomputer
38 | lock.desktopcomputer
39 | lock.open.desktopcomputer
40 | desktopcomputer.and.arrow.down
41 | desktopcomputer.trianglebadge.exclamationmark
42 | pc
43 | macpro.gen1
44 | macpro.gen1.fill
45 | macpro.gen2
46 | macpro.gen2.fill
47 | macpro.gen3
48 | macpro.gen3.fill
49 | macpro.gen3.server
50 | server.rack
51 | xserve
52 | laptopcomputer
53 | laptopcomputer.slash
54 | play.laptopcomputer
55 | lock.laptopcomputer
56 | lock.open.laptopcomputer
57 | laptopcomputer.and.arrow.down
58 | laptopcomputer.trianglebadge.exclamationmark
59 | macbook.and.iphone
60 | macbook.and.ipad
61 | macmini
62 | macmini.fill
63 | macstudio
64 | macstudio.fill
65 | airport.express
66 | airport.extreme
67 | airport.extreme.tower
68 | ipod
69 | ipodshuffle.gen1
70 | ipodshuffle.gen2
71 | ipodshuffle.gen3
72 | ipodshuffle.gen4
73 | ipodtouch
74 | ipodtouch.slash
75 | ipodtouch.landscape
76 | flipphone
77 | candybarphone
78 | iphone.gen1
79 | iphone.gen1.circle
80 | iphone.gen1.circle.fill
81 | iphone.gen1.landscape
82 | iphone.gen1.radiowaves.left.and.right
83 | iphone.gen1.radiowaves.left.and.right.circle
84 | iphone.gen1.radiowaves.left.and.right.circle.fill
85 | iphone.gen1.slash
86 | iphone.gen1.slash.circle
87 | iphone.gen1.slash.circle.fill
88 | iphone.gen1.badge.play
89 | iphone.gen2
90 | iphone.gen2.circle
91 | iphone.gen2.circle.fill
92 | iphone.gen2.landscape
93 | iphone.gen2.radiowaves.left.and.right
94 | iphone.gen2.radiowaves.left.and.right.circle
95 | iphone.gen2.radiowaves.left.and.right.circle.fill
96 | iphone.gen2.slash
97 | iphone.gen2.slash.circle
98 | iphone.gen2.slash.circle.fill
99 | iphone.gen2.badge.play
100 | iphone.gen3
101 | iphone.gen3.circle
102 | iphone.gen3.circle.fill
103 | iphone.gen3.landscape
104 | iphone.gen3.radiowaves.left.and.right
105 | iphone.gen3.radiowaves.left.and.right.circle
106 | iphone.gen3.radiowaves.left.and.right.circle.fill
107 | iphone.gen3.slash
108 | iphone.gen3.slash.circle
109 | iphone.gen3.slash.circle.fill
110 | iphone.gen3.badge.play
111 | iphone
112 | iphone.circle
113 | iphone.circle.fill
114 | iphone.landscape
115 | iphone.radiowaves.left.and.right
116 | iphone.radiowaves.left.and.right.circle
117 | iphone.radiowaves.left.and.right.circle.fill
118 | iphone.slash
119 | iphone.slash.circle
120 | iphone.slash.circle.fill
121 | iphone.badge.play
122 | lock.iphone
123 | lock.open.iphone
124 | iphone.and.arrow.forward
125 | arrow.turn.up.forward.iphone
126 | arrow.turn.up.forward.iphone.fill
127 | iphone.rear.camera
128 | apps.iphone
129 | apps.iphone.badge.plus
130 | apps.iphone.landscape
131 | platter.filled.top.iphone
132 | platter.filled.bottom.iphone
133 | platter.filled.top.and.arrow.up.iphone
134 | platter.filled.bottom.and.arrow.down.iphone
135 | platter.2.filled.iphone
136 | platter.2.filled.iphone.landscape
137 | iphone.smartbatterycase.gen2
138 | iphone.smartbatterycase.gen1
139 | ipad.gen1
140 | ipad.gen1.badge.play
141 | ipad.gen1.landscape
142 | ipad.gen1.landscape.badge.play
143 | ipad.gen2
144 | ipad.gen2.badge.play
145 | ipad.gen2.landscape
146 | ipad.gen2.landscape.badge.play
147 | ipad
148 | ipad.badge.play
149 | ipad.landscape
150 | ipad.landscape.badge.play
151 | ipad.and.iphone
152 | ipad.and.iphone.slash
153 | lock.ipad
154 | lock.open.ipad
155 | ipad.and.arrow.forward
156 | ipad.rear.camera
157 | apps.ipad
158 | apps.ipad.landscape
159 | platter.2.filled.ipad
160 | platter.2.filled.ipad.landscape
161 | applepencil
162 | magicmouse
163 | magicmouse.fill
164 | computermouse
165 | computermouse.fill
166 | applewatch
167 | applewatch.watchface
168 | exclamationmark.applewatch
169 | lock.applewatch
170 | lock.open.applewatch
171 | applewatch.radiowaves.left.and.right
172 | applewatch.slash
173 | applewatch.side.right
174 | watchface.applewatch.case
175 | applewatch.case.inset.filled
176 | platter.filled.top.applewatch.case
177 | platter.filled.bottom.applewatch.case
178 | platter.top.applewatch.case
179 | platter.bottom.applewatch.case
180 | arrow.up.and.down.and.sparkles
181 | digitalcrown.arrow.clockwise
182 | digitalcrown.arrow.clockwise.fill
183 | digitalcrown.arrow.counterclockwise
184 | digitalcrown.arrow.counterclockwise.fill
185 | digitalcrown.press
186 | digitalcrown.press.fill
187 | digitalcrown.horizontal.arrow.clockwise
188 | digitalcrown.horizontal.arrow.clockwise.fill
189 | digitalcrown.horizontal.arrow.counterclockwise
190 | digitalcrown.horizontal.arrow.counterclockwise.fill
191 | digitalcrown.horizontal.press
192 | digitalcrown.horizontal.press.fill
193 | airpodsmax
194 | beats.headphones
195 | headphones
196 | headphones.circle
197 | headphones.circle.fill
198 | earbuds
199 | earbuds.case
200 | earbuds.case.fill
201 | earpods
202 | airpods
203 | airpod.right
204 | airpod.left
205 | airpods.chargingcase
206 | airpods.chargingcase.fill
207 | airpods.chargingcase.wireless
208 | airpods.chargingcase.wireless.fill
209 | airpodspro
210 | airpodpro.right
211 | airpodpro.left
212 | airpodspro.chargingcase.wireless
213 | airpodspro.chargingcase.wireless.fill
214 | airpods.gen3
215 | airpod.gen3.right
216 | airpod.gen3.left
217 | airpods.gen3.chargingcase.wireless
218 | airpods.gen3.chargingcase.wireless.fill
219 | beats.earphones
220 | beats.powerbeatspro
221 | beats.powerbeatspro.right
222 | beats.powerbeatspro.left
223 | beats.powerbeats
224 | beats.powerbeats3
225 | beats.studiobuds
226 | beats.studiobud.left
227 | beats.studiobud.right
228 | beats.studiobuds.chargingcase
229 | beats.studiobuds.chargingcase.fill
230 | beats.fit.pro
231 | beats.fit.pro.left
232 | beats.fit.pro.right
233 | beats.fit.pro.chargingcase
234 | beats.fit.pro.chargingcase.fill
235 | beats.powerbeatspro.chargingcase
236 | beats.powerbeatspro.chargingcase.fill
237 | homepodmini
238 | homepodmini.fill
239 | homepodmini.2
240 | homepodmini.2.fill
241 | homepod.and.homepodmini
242 | homepod.and.homepodmini.fill
243 | hifispeaker.and.homepodmini
244 | hifispeaker.and.homepodmini.fill
245 | homepod
246 | homepod.fill
247 | homepod.2
248 | homepod.2.fill
249 | hifispeaker.and.homepod
250 | hifispeaker.and.homepod.fill
251 | hifispeaker
252 | hifispeaker.fill
253 | hifispeaker.2
254 | hifispeaker.2.fill
255 | appletv
256 | appletv.fill
257 | homepod.and.appletv
258 | homepod.and.appletv.fill
259 | homepodmini.and.appletv
260 | homepodmini.and.appletv.fill
261 | hifispeaker.and.appletv
262 | hifispeaker.and.appletv.fill
263 | appletvremote.gen1
264 | appletvremote.gen1.fill
265 | appletvremote.gen2
266 | appletvremote.gen2.fill
267 | appletvremote.gen3
268 | appletvremote.gen3.fill
269 | appletvremote.gen4
270 | appletvremote.gen4.fill
271 | av.remote
272 | av.remote.fill
273 | magsafe.batterypack
274 | magsafe.batterypack.fill
275 | mediastick
276 | cable.connector
277 | cable.connector.horizontal
278 | tv
279 | tv.fill
280 | tv.inset.filled
281 | tv.circle
282 | tv.circle.fill
283 | sparkles.tv
284 | sparkles.tv.fill
285 | 4k.tv
286 | 4k.tv.fill
287 | music.note.tv
288 | music.note.tv.fill
289 | play.tv
290 | play.tv.fill
291 | photo.tv
292 | tv.and.hifispeaker.fill
293 | tv.and.mediabox
294 | tv.and.mediabox.fill
295 | car
296 | car.fill
297 | car.circle
298 | car.circle.fill
299 | car.front.waves.up
300 | car.front.waves.up.fill
301 | car.rear
302 | car.rear.fill
303 | bolt.car
304 | bolt.car.fill
305 | bolt.car.circle
306 | bolt.car.circle.fill
307 | car.2
308 | car.2.fill
309 | hearingdevice.ear
310 | hearingdevice.ear.fill
311 | hearingdevice.and.signal.meter
312 | hearingdevice.and.signal.meter.fill
313 | gamecontroller
314 | gamecontroller.fill
--------------------------------------------------------------------------------