feat: add searchable emoji picker

This commit is contained in:
Valdemar Lorenzen
2026-10-15 13:59:10 +02:00
parent 6574c97276
commit 1de7983345
12 changed files with 2322 additions and 43 deletions
@@ -0,0 +1,20 @@
import ConjureKit
import Testing
@Test func emojiCatalogSupportsOfflineSearchAndOrderedCategories() {
#expect(EmojiCatalog.search(" \n ").map(\.value) == EmojiCatalog.all.map(\.value))
#expect(EmojiCatalog.search("", category: "Flags").map(\.value)
== EmojiCatalog.all.filter { $0.category == "Flags" }.map(\.value))
// Names, shortcodes, aliases, tags, and literals share the same search path.
#expect(EmojiCatalog.search("woman tech").map(\.value) == ["👩‍💻"])
#expect(EmojiCatalog.search(":WOMAN_TECHNOLOGIST:").map(\.value) == ["👩‍💻"])
#expect(EmojiCatalog.search("coder woman", category: "People & Body").map(\.value) == ["👩‍💻"])
#expect(EmojiCatalog.search("coder woman", category: "Objects").isEmpty)
#expect(EmojiCatalog.search(":+1:").map(\.value) == ["👍"])
#expect(EmojiCatalog.search("CÁFÉ", category: "Food & Drink").contains { $0.value == "☕" })
#expect(EmojiCatalog.search("👩‍💻").map(\.value) == ["👩‍💻"])
#expect(EmojiCatalog.search("🇩🇰", category: "Flags").map(\.value) == ["🇩🇰"])
#expect(EmojiCatalog.search("no-such-emoji").isEmpty)
#expect(EmojiCatalog.search("", category: "no-such-category").isEmpty)
}