From 11f29668ba55c9ef92865a1cfab3d76b25aef086 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 01 May 2026 17:28:13 +0000
Subject: [PATCH] =Basic setup. Still need to define fields and SEO settings for most content and taxonomies
---
taxonomies/art-forms.php | 92 ++
users/_setup.php | 13
assets/css/icons.css | 2
content/piercings.php | 110 ++
taxonomies/_setup.php | 21
taxonomies/art-themes.php | 92 ++
content/tattoos.php | 126 ++
taxonomies/placements.php | 92 ++
taxonomies/art-styles.php | 92 ++
taxonomies/offer-for.php | 92 ++
edmontonink.php | 212 ++--
content/_setup.php | 6
content/artwork.php | 125 ++
taxonomies/piercing-placements.php | 91 ++
content/events.php | 137 +++
taxonomies/cities.php | 92 ++
assets/icons/edmonton-ink-circle.svg | 1
content/offers.php | 114 ++
blocks/_setup.php | 27
taxonomies/themes.php | 92 ++
taxonomies/shops.php | 99 ++
assets/icons/edmonton-ink-logo.svg | 5
/dev/null | 23
users/artists.php | 397 +++++++++
taxonomies/event-types.php | 92 ++
taxonomies/piercing-styles.php | 91 ++
taxonomies/colours.php | 92 ++
taxonomies/styles.php | 92 ++
taxonomies/artist-types.php | 92 ++
29 files changed, 2,457 insertions(+), 155 deletions(-)
diff --git a/assets/css/icons.css b/assets/css/icons.css
index 9c540be..bf2f5c6 100644
--- a/assets/css/icons.css
+++ b/assets/css/icons.css
@@ -1 +1 @@
-.icon-google-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTk0LDk0LDAsMSwxLTIxLjQ5LTU5LjgyLDYsNiwwLDEsMS05LjI1LDcuNjRBODIsODIsMCwxLDAsMjA5Ljc4LDEzNEgxMjhhNiw2LDAsMCwxLDAtMTJoODhBNiw2LDAsMCwxLDIyMiwxMjhaIi8+PC9zdmc+');}.icon-apple-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTkuNCwxNjcuODRDMjAxLjcxLDE1NS42OSwxOTgsMTM1LjEyLDE5OCwxMjBjMC0xOC40MiwxMy44Ni0zNC4yOSwyMi4xMi00Mi4xMmE2LDYsMCwwLDAsMC04LjcxQzIwOCw1Ny43LDE4Ny4wNyw1MCwxNjgsNTBhNzAuMjMsNzAuMjMsMCwwLDAtNDAsMTIuNTUsNjkuNiw2OS42LDAsMCwwLTg5LjMxLDguMDhBNzIuNjMsNzIuNjMsMCwwLDAsMTgsMTIzLjM1YTEyNS4xMSwxMjUuMTEsMCwwLDAsMzkuNTMsODguMzNBMzcuODUsMzcuODUsMCwwLDAsODMuNiwyMjJoODcuN0EzNy44MywzNy44MywwLDAsMCwxOTksMjEwLjA3YTEyMi42LDEyMi42LDAsMCwwLDE3LjU0LTI0LjJjNi41NS0xMiw1Ljc3LTEzLjc1LDUtMTUuNDhBNi4wNyw2LjA3LDAsMCwwLDIxOS40LDE2Ny44NFptLTI5LjIzLDM0QTI1LjgyLDI1LjgyLDAsMCwxLDE3MS4zLDIxMEg4My42QTI1Ljg1LDI1Ljg1LDAsMCwxLDY1Ljc4LDIwMywxMTMuMjEsMTEzLjIxLDAsMCwxLDMwLDEyM2E2MC41NSw2MC41NSwwLDAsMSwxNy4yMS00NEE1Ni44Miw1Ni44MiwwLDAsMSw4OCw2MmguODFhNTcuMzUsNTcuMzUsMCwwLDEsMzUuNDQsMTIuNzEsNiw2LDAsMCwwLDcuNSwwQTU3LjM5LDU3LjM5LDAsMCwxLDE2OCw2MmMxMy44OSwwLDI4LjgxLDQuNjgsMzkuMTEsMTItOS40NCwxMC4xNC0yMS4xLDI2LjU5LTIxLjEsNDYsMCwyMy43OCw3LjgxLDQyLjYsMjIuNjYsNTQuNzdBMTA3LjMzLDEwNy4zMywwLDAsMSwxOTAuMTcsMjAxLjg5Wm0tNjAtMTcxLjM5QTM4LDM4LDAsMCwxLDE2NywyaDFhNiw2LDAsMCwxLDAsMTJoLTFhMjYsMjYsMCwwLDAtMjUuMTgsMTkuNSw2LDYsMCwxLDEtMTEuNjItM1oiLz48L3N2Zz4=');}.icon-check-circle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzIuMjQsOTkuNzZhNiw2LDAsMCwxLDAsOC40OGwtNTYsNTZhNiw2LDAsMCwxLTguNDgsMGwtMjQtMjRhNiw2LDAsMCwxLDguNDgtOC40OEwxMTIsMTUxLjUxbDUxLjc2LTUxLjc1QTYsNiwwLDAsMSwxNzIuMjQsOTkuNzZaTTIzMCwxMjhBMTAyLDEwMiwwLDEsMSwxMjgsMjYsMTAyLjEyLDEwMi4xMiwwLDAsMSwyMzAsMTI4Wm0tMTIsMGE5MCw5MCwwLDEsMC05MCw5MEE5MC4xLDkwLjEsMCwwLDAsMjE4LDEyOFoiLz48L3N2Zz4=');}.icon-cloud-slash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik01Mi40NCwzNkE2LDYsMCwwLDAsNDMuNTYsNDRsNDAuMTgsNDQuMmMtLjQ1Ljg3LS45LDEuNzUtMS4zMiwyLjY0QTYyLDYyLDAsMSwwLDcyLDIxNGg4OGE4NS4yMyw4NS4yMywwLDAsMCwzMi4zNS02LjNMMjAzLjU2LDIyMGE2LDYsMCwwLDAsOC44OC04LjA4Wk0xNjAsMjAySDcyYTUwLDUwLDAsMSwxLDUuOS05OS42NEE4Ni4yNSw4Ni4yNSwwLDAsMCw3NCwxMjhhNiw2LDAsMCwwLDEyLDAsNzMuOTIsNzMuOTIsMCwwLDEsNi40NC0zMC4ybDkxLjIyLDEwMC4zNEE3My42NSw3My42NSwwLDAsMSwxNjAsMjAyWm04Ni03NGE4NS44NSw4NS44NSwwLDAsMS0yMS44NSw1Ny4yNyw2LDYsMCwwLDEtNC40NywyLDYsNiwwLDAsMS00LjQ3LTEwLDc0LDc0LDAsMCwwLTk5LTEwOC45Miw2LDYsMCwxLDEtNy4xMS05LjY3QTg2LDg2LDAsMCwxLDI0NiwxMjhaIi8+PC9zdmc+');}.icon-exclamation-mark{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNDIsMjAwYTE0LDE0LDAsMSwxLTE0LTE0QTE0LDE0LDAsMCwxLDE0MiwyMDBabS0xNC00MmE2LDYsMCwwLDAsNi02VjQ4YTYsNiwwLDAsMC0xMiwwVjE1MkE2LDYsMCwwLDAsMTI4LDE1OFoiLz48L3N2Zz4=');}.icon-cloud-arrow-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsMTI4YTg1LjI3LDg1LjI3LDAsMCwxLTE3LjIsNTEuNiw2LDYsMCwxLDEtOS42LTcuMkE3NCw3NCwwLDEsMCw4NiwxMjhhNiw2LDAsMCwxLTEyLDAsODUuNTQsODUuNTQsMCwwLDEsMy45MS0yNS42NEE1MC42OCw1MC42OCwwLDAsMCw3MiwxMDJhNTAsNTAsMCwwLDAsMCwxMDBIOTZhNiw2LDAsMCwxLDAsMTJINzJBNjIsNjIsMCwxLDEsODIuNDMsOTAuODgsODYsODYsMCwwLDEsMjQ2LDEyOFptLTY2LjI0LDQzLjc2TDE1OCwxOTMuNTFWMTI4YTYsNiwwLDAsMC0xMiwwdjY1LjUxbC0yMS43Ni0yMS43NWE2LDYsMCwwLDAtOC40OCw4LjQ4bDMyLDMyYTYsNiwwLDAsMCw4LjQ4LDBsMzItMzJhNiw2LDAsMCwwLTguNDgtOC40OFoiLz48L3N2Zz4=');}.icon-caret-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTIuMjQsMTAwLjI0bC04MCw4MGE2LDYsMCwwLDEtOC40OCwwbC04MC04MGE2LDYsMCwwLDEsOC40OC04LjQ4TDEyOCwxNjcuNTFsNzUuNzYtNzUuNzVhNiw2LDAsMCwxLDguNDgsOC40OFoiLz48L3N2Zz4=');}.icon-cloud-arrow-up{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xODguMjQsMTY0LjI0YTYsNiwwLDAsMS04LjQ4LDBMMTU4LDE0Mi40OVYyMDhhNiw2LDAsMCwxLTEyLDBWMTQyLjQ5bC0yMS43NiwyMS43NWE2LDYsMCwwLDEtOC40OC04LjQ4bDMyLTMyYTYsNiwwLDAsMSw4LjQ4LDBsMzIsMzJBNiw2LDAsMCwxLDE4OC4yNCwxNjQuMjRaTTE2MCw0MkE4Ni4xLDg2LjEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDQwYTYsNiwwLDAsMCwwLTEySDcyYTUwLDUwLDAsMCwxLDAtMTAwLDUwLjY4LDUwLjY4LDAsMCwxLDUuOTEuMzZBODUuNTQsODUuNTQsMCwwLDAsNzQsMTI4YTYsNiwwLDAsMCwxMiwwLDc0LDc0LDAsMSwxLDEwMy42LDY3Ljg1LDYsNiwwLDAsMCw0LjgsMTFBODYsODYsMCwwLDAsMTYwLDQyWiIvPjwvc3ZnPg==');}.icon-cloud-check{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDJBODYuMTEsODYuMTEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDg4YTg2LDg2LDAsMCwwLDAtMTcyWm0wLDE2MEg3MmE1MCw1MCwwLDAsMSwwLTEwMCw1MC42Nyw1MC42NywwLDAsMSw1LjkxLjM1QTg1LjYxLDg1LjYxLDAsMCwwLDc0LDEyOGE2LDYsMCwwLDAsMTIsMCw3NCw3NCwwLDEsMSw3NCw3NFptMzYuMjQtOTQuMjRhNiw2LDAsMCwxLDAsOC40OGwtNDgsNDhhNiw2LDAsMCwxLTguNDgsMGwtMjQtMjRhNiw2LDAsMCwxLDguNDgtOC40OEwxNDQsMTUxLjUxbDQzLjc2LTQzLjc1QTYsNiwwLDAsMSwxOTYuMjQsMTA3Ljc2WiIvPjwvc3ZnPg==');}.icon-cloud-warning{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDJBODYuMTEsODYuMTEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDg4YTg2LDg2LDAsMCwwLDAtMTcyWm0wLDE2MEg3MmE1MCw1MCwwLDAsMSwwLTEwMCw1MC42Nyw1MC42NywwLDAsMSw1LjkxLjM1QTg1LjYxLDg1LjYxLDAsMCwwLDc0LDEyOGE2LDYsMCwwLDAsMTIsMCw3NCw3NCwwLDEsMSw3NCw3NFptLTYtNzRWODhhNiw2LDAsMCwxLDEyLDB2NDBhNiw2LDAsMCwxLTEyLDBabTE2LDM2YTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDE3MCwxNjRaIi8+PC9zdmc+');}.icon-syncing{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiI+PHBhdGggaWQ9InJlZnJlc2giIGQ9Ik0xNjAuMDQ3IDEyMi44NzVhMzAuNzg0IDMwLjc4NCAwIDAgMC0yMS43NSA4Ljc5N2MtMi44NDIgMy4wMDMtLjQ2NyA0Ljk3MSAxLjMxMiAzLjE1NiAxMS4wNDMtMTAuNzg2IDI4LjcxLTEwLjY4IDM5LjYyNS4yMzRsNy4yMDMgNy4yMDRoLTEyLjg3NWMtMy4zNDcuMDA4LTMuMTY1IDMuODc1IDAgMy44NzVoMTYuMTFjMi4wNjIgMCAyLjU0LTEuNDE4IDIuNTYyLTQuOTdsLjA5NC0xNC45MjFjLjAyLTMuMjktMy40MzctMy4xNjUtMy40MzcgMHYxMi44NmwtNy4yMDMtNy4xODhhMzAuNzY4IDMwLjc2OCAwIDAgMC0yMS42NDEtOS4wNDd6bS0yOS41OTQgMzkuNzk3Yy0yLjA2MiAwLTIuNTI0IDEuNDAyLTIuNTQ3IDQuOTUzbC0uMDk0IDE0LjkyMmMtLjAyIDMuMjkgMy40MjIgMy4xNjQgMy40MjIgMHYtMTIuODZsNy4yMDMgNy4yMDRjMTEuOTU2IDExLjk1NSAzMS4zMTIgMTIuMDY0IDQzLjQwNy4yNSAyLjg0Mi0zLjAwMy40NTEtNC45ODgtMS4zMjgtMy4xNzItMTEuMDQzIDEwLjc4Ni0yOC43MSAxMC42OC0zOS42MjUtLjIzNWwtNy4xODgtNy4yMDNoMTIuODZjMy4zNDctLjAwOCAzLjE2NS0zLjg2IDAtMy44NmgtMTYuMTF6Ii8+PHBhdGggZD0iTTE2MCA0NGE4NC4xMSA4NC4xMSAwIDAgMC03Ni40MSA0OS4xMkE2MC43MSA2MC43MSAwIDAgMCA3MiA5MmE2MCA2MCAwIDAgMCAwIDEyMGg4OGE4NCA4NCAwIDAgMCAwLTE2OFptMCAxNjBINzJhNTIgNTIgMCAxIDEgOC41NS0xMDMuM0E4My42NiA4My42NiAwIDAgMCA3NiAxMjhhNCA0IDAgMCAwIDggMCA3NiA3NiAwIDEgMSA3NiA3NloiLz48L3N2Zz4=');}.icon-cloud-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDJBODYuMTEsODYuMTEsMCwwLDAsODIuNDMsOTAuODgsNjIsNjIsMCwxLDAsNzIsMjE0aDg4YTg2LDg2LDAsMCwwLDAtMTcyWm0wLDE2MEg3MmE1MCw1MCwwLDAsMSwwLTEwMCw1MC42Nyw1MC42NywwLDAsMSw1LjkxLjM1QTg1LjYxLDg1LjYxLDAsMCwwLDc0LDEyOGE2LDYsMCwwLDAsMTIsMCw3NCw3NCwwLDEsMSw3NCw3NFptMjguMjQtODUuNzZMMTY4LjQ4LDEzNmwxOS43NiwxOS43NmE2LDYsMCwxLDEtOC40OCw4LjQ4TDE2MCwxNDQuNDhsLTE5Ljc2LDE5Ljc2YTYsNiwwLDAsMS04LjQ4LTguNDhMMTUxLjUyLDEzNmwtMTkuNzYtMTkuNzZhNiw2LDAsMCwxLDguNDgtOC40OEwxNjAsMTI3LjUybDE5Ljc2LTE5Ljc2YTYsNiwwLDAsMSw4LjQ4LDguNDhaIi8+PC9zdmc+');}.icon-arrows-clockwise{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsNDhWOTZhNiw2LDAsMCwxLTYsNkgxNjhhNiw2LDAsMCwxLDAtMTJoMzMuNTJMMTgzLjQ3LDcyYTgxLjUxLDgxLjUxLDAsMCwwLTU3LjUzLTI0aC0uNDZBODEuNSw4MS41LDAsMCwwLDY4LjE5LDcxLjI4YTYsNiwwLDEsMS04LjM4LTguNTgsOTMuMzgsOTMuMzgsMCwwLDEsNjUuNjctMjYuNzZIMTI2YTkzLjQ1LDkzLjQ1LDAsMCwxLDY2LDI3LjUzbDE4LDE4VjQ4YTYsNiwwLDAsMSwxMiwwWk0xODcuODEsMTg0LjcyYTgxLjUsODEuNSwwLDAsMS01Ny4yOSwyMy4zNGgtLjQ2YTgxLjUxLDgxLjUxLDAsMCwxLTU3LjUzLTI0TDU0LjQ4LDE2Nkg4OGE2LDYsMCwwLDAsMC0xMkg0MGE2LDYsMCwwLDAtNiw2djQ4YTYsNiwwLDAsMCwxMiwwVjE3NC40OGwxOCwxOC4wNWE5My40NSw5My40NSwwLDAsMCw2NiwyNy41M2guNTJhOTMuMzgsOTMuMzgsMCwwLDAsNjUuNjctMjYuNzYsNiw2LDAsMSwwLTguMzgtOC41OFoiLz48L3N2Zz4=');}.icon-share-fat{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzYuMjQsMTA3Ljc2bC04MC04MEE2LDYsMCwwLDAsMTQ2LDMyVjc0LjJjLTU0LjQ4LDMuNTktMTIwLjM5LDU1LTEyNy45MywxMjAuNjZhMTAsMTAsMCwwLDAsMTcuMjMsOGgwQzQ2LjU2LDE5MC44NSw4NywxNTIuNiwxNDYsMTUwLjEzVjE5MmE2LDYsMCwwLDAsMTAuMjQsNC4yNGw4MC04MEE2LDYsMCwwLDAsMjM2LjI0LDEwNy43NlpNMTU4LDE3Ny41MlYxNDRhNiw2LDAsMCwwLTYtNmMtMjcuNzMsMC01NC43Niw3LjI1LTgwLjMyLDIxLjU1YTE5My4zOCwxOTMuMzgsMCwwLDAtNDAuODEsMzAuNjVjNC43LTI2LjU2LDIwLjE2LTUyLDQ0LTcyLjI3Qzk4LjQ3LDk3Ljk0LDEyNy4yOSw4NiwxNTIsODZhNiw2LDAsMCwwLDYtNlY0Ni40OUwyMjMuNTEsMTEyWiIvPjwvc3ZnPg==');}.icon-trash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTYsNTBIMTc0VjQwYTIyLDIyLDAsMCwwLTIyLTIySDEwNEEyMiwyMiwwLDAsMCw4Miw0MFY1MEg0MGE2LDYsMCwwLDAsMCwxMkg1MFYyMDhhMTQsMTQsMCwwLDAsMTQsMTRIMTkyYTE0LDE0LDAsMCwwLDE0LTE0VjYyaDEwYTYsNiwwLDAsMCwwLTEyWk05NCw0MGExMCwxMCwwLDAsMSwxMC0xMGg0OGExMCwxMCwwLDAsMSwxMCwxMFY1MEg5NFpNMTk0LDIwOGEyLDIsMCwwLDEtMiwySDY0YTIsMiwwLDAsMS0yLTJWNjJIMTk0Wk0xMTAsMTA0djY0YTYsNiwwLDAsMS0xMiwwVjEwNGE2LDYsMCwwLDEsMTIsMFptNDgsMHY2NGE2LDYsMCwwLDEtMTIsMFYxMDRhNiw2LDAsMCwxLDEyLDBaIi8+PC9zdmc+');}.icon-star{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzcuMjgsOTcuODdBMTQuMTgsMTQuMTgsMCwwLDAsMjI0Ljc2LDg4bC02MC4yNS00Ljg3LTIzLjIyLTU2LjJhMTQuMzcsMTQuMzcsMCwwLDAtMjYuNTgsMEw5MS40OSw4My4xMSwzMS4yNCw4OGExNC4xOCwxNC4xOCwwLDAsMC0xMi41Miw5Ljg5QTE0LjQzLDE0LjQzLDAsMCwwLDIzLDExMy4zMkw2OSwxNTIuOTNsLTE0LDU5LjI1YTE0LjQsMTQuNCwwLDAsMCw1LjU5LDE1LDE0LjEsMTQuMSwwLDAsMCwxNS45MS42TDEyOCwxOTYuMTJsNTEuNTgsMzEuNzFhMTQuMSwxNC4xLDAsMCwwLDE1LjkxLS42LDE0LjQsMTQuNCwwLDAsMCw1LjU5LTE1bC0xNC01OS4yNUwyMzMsMTEzLjMyQTE0LjQzLDE0LjQzLDAsMCwwLDIzNy4yOCw5Ny44N1ptLTEyLjE0LDYuMzctNDguNjksNDJhNiw2LDAsMCwwLTEuOTIsNS45MmwxNC44OCw2Mi43OWEyLjM1LDIuMzUsMCwwLDEtLjk1LDIuNTcsMi4yNCwyLjI0LDAsMCwxLTIuNi4xTDEzMS4xNCwxODRhNiw2LDAsMCwwLTYuMjgsMEw3MC4xNCwyMTcuNjFhMi4yNCwyLjI0LDAsMCwxLTIuNi0uMSwyLjM1LDIuMzUsMCwwLDEtMS0yLjU3bDE0Ljg4LTYyLjc5YTYsNiwwLDAsMC0xLjkyLTUuOTJsLTQ4LjY5LTQyYTIuMzcsMi4zNywwLDAsMS0uNzMtMi42NSwyLjI4LDIuMjgsMCwwLDEsMi4wNy0xLjY1bDYzLjkyLTUuMTZhNiw2LDAsMCwwLDUuMDYtMy42OWwyNC42My01OS42YTIuMzUsMi4zNSwwLDAsMSw0LjM4LDBsMjQuNjMsNTkuNmE2LDYsMCwwLDAsNS4wNiwzLjY5bDYzLjkyLDUuMTZhMi4yOCwyLjI4LDAsMCwxLDIuMDcsMS42NUEyLjM3LDIuMzcsMCwwLDEsMjI1LjE0LDEwNC4yNFoiLz48L3N2Zz4=');}.icon-alphabetical{--icon:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9ImN1cnJlbnRDb2xvciIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTgzLjc4IDE4NC4wNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNTkuNTg2IDY5Ljc0MmMtMC44NTEzIDAtMS40NjEgMC4xOTY1Ni0xLjgzNjYgMC41OTcxOC0wLjM1MDU0IDAuMzc1NTgtMC41Mjk1OCAxLjAyMjktMC41Mjk1OCAxLjk0OTNzMC4xNzkwMyAxLjU5MzcgMC41Mjk1OCAxLjk5NDRjMC4zNzU1OCAwLjM3NTU4IDAuOTg1MjkgMC41NjMzOCAxLjgzNjYgMC41NjMzOGg3LjAxOTdsLTEyLjQyOCAzNC4zNjZoLTIuMTA3Yy0wLjg1MTMgMC0xLjQ2MSAwLjE5NjU2LTEuODM2NiAwLjU5NzE4LTAuMzUwNTQgMC4zNzU1OC0wLjUyOTU3IDEuMDM0MS0wLjUyOTU3IDEuOTYwNiAwIDAuOTI2NDQgMC4xNzkwMyAxLjU4MjUgMC41Mjk1NyAxLjk4MyAwLjM3NTU4IDAuMzc1NTkgMC45ODUyOSAwLjU2MzM4IDEuODM2NiAwLjU2MzM4aDEyLjU1MmMwLjg1MTMgMCAxLjQ1MjItMC4xODc3OSAxLjgwMjgtMC41NjMzOCAwLjM3NTU4LTAuNDAwNjIgMC41NjMzNy0xLjA1NjYgMC41NjMzNy0xLjk4MyAwLTAuOTI2NDUtMC4xODc3OS0xLjU4NS0wLjU2MzM3LTEuOTYwNi0wLjM1MDU0LTAuNDAwNjItMC45NTE0Ny0wLjU5NzE4LTEuODAyOC0wLjU5NzE4aC00LjU1MjFsMy4xMjExLTguOTM0OWgxOC4yMmwzLjA3NiA4LjkzNDloLTUuMDcwNGMtMC44NTEzIDAtMS40NjEgMC4xOTY1Ni0xLjgzNjYgMC41OTcxOC0wLjM1MDU0IDAuMzc1NTgtMC41Mjk1OCAxLjAzNDEtMC41Mjk1OCAxLjk2MDYgMCAwLjkyNjQ0IDAuMTc5MDMgMS41ODI1IDAuNTI5NTggMS45ODMgMC4zNzU1OCAwLjM3NTU5IDAuOTg1MjkgMC41NjMzOCAxLjgzNjYgMC41NjMzOGgxMy4yOTZjMC44NTEzIDAgMS40NTIyLTAuMTg3NzkgMS44MDI4LTAuNTYzMzggMC4zNzU1OC0wLjQwMDYyIDAuNTYzMzctMS4wNTY2IDAuNTYzMzctMS45ODMgMC0wLjkyNjQ1LTAuMTg3NzktMS41ODUtMC41NjMzNy0xLjk2MDYtMC4zNTA1NC0wLjQwMDYyLTAuOTUxNDctMC41OTcxOC0xLjgwMjgtMC41OTcxOGgtMi4yODczbC0xMy4yNjItMzcuMDM2Yy0wLjMwMDQ3LTAuODUxMy0wLjc1OTk0LTEuNDYxLTEuMzg1OS0xLjgzNjYtMC42MDA5My0wLjQwMDYyLTEuNDA5Ny0wLjU5NzE4LTIuNDExMy0wLjU5NzE4em00NC4xNDYgMGMtMC44NTEzIDAtMS40NzIzIDAuMTk2NTYtMS44NDc4IDAuNTk3MTgtMC4zNTA1NSAwLjM3NTU4LTAuNTE4MyAxLjAyMjktMC41MTgzIDEuOTQ5M3YxMS45MWMwIDAuODc2MzMgMC4yMDUzMiAxLjUwNjEgMC42MzA5OCAxLjg4MTcgMC40MjU2NiAwLjM3NTU4IDEuMTU5MyAwLjU2MzM3IDIuMTg1OSAwLjU2MzM3czEuNzQ5LTAuMTg3NzkgMi4xNzQ3LTAuNTYzMzdjMC40MjU2OS0wLjM3NTU4IDAuNjQyMjYtMS4wMDUzIDAuNjQyMjYtMS44ODE3di05LjM1MTdoMTguODUxbC0yNC43NTQgMzUuMzAxYy0wLjM1MDU0IDAuNTI1ODItMC41MTgzMSAxLjA3MTctMC41MTgzMSAxLjYyMjYgMCAwLjkyNjQ1IDAuMTY3NzcgMS41ODI1IDAuNTE4MzEgMS45ODMxIDAuMzc1NTggMC4zNzU1OCAwLjk5NjU0IDAuNTYzMzggMS44NDc4IDAuNTYzMzhoMjguNzY2YzAuODUxMyAwIDEuNDUyMi0wLjE4NzggMS44MDI4LTAuNTYzMzggMC4zNzU1OC0wLjQwMDYyIDAuNTYzMzgtMS4wNTY2IDAuNTYzMzgtMS45ODMxdi0xMi42NjVjMC0wLjg3NjMzLTAuMjE2NTgtMS40OTQ4LTAuNjQyMjUtMS44NzA0LTAuNDI1NjYtMC4zNzU1OC0xLjE0OC0wLjU2MzM4LTIuMTc0Ny0wLjU2MzM4LTEuMDI2NiAwLTEuNzQ5IDAuMTg3NzktMi4xNzQ3IDAuNTYzMzgtMC40MjU2NiAwLjM3NTU4LTAuNjQyMjQgMC45OTQwMi0wLjY0MjI0IDEuODcwNHYxMC4xMDdoLTE5Ljk3OGwyNC45MDEtMzUuNDU5YzAuMjUwMzktMC4zNTA1NCAwLjM3MTgzLTAuODM4ODMgMC4zNzE4My0xLjQ2NDggMC0wLjkyNjQ1LTAuMTg3OC0xLjU3MzctMC41NjMzOC0xLjk0OTMtMC4zNTA1NS0wLjQwMDYyLTAuOTUxNDctMC41OTcxOC0xLjgwMjgtMC41OTcxOHptLTMxLjc1MiA1LjEwNDJoMC43MDk4NWw2Ljk4NTkgMjAuMzE1aC0xNC43MTZ6bS0zNy43MjMtNDkuMTgzYy00LjczNDIgMC04LjYzMTMgMy44OTctOC42MzEzIDguNjMxM3YxMTUuNDdjMCA0LjczNDIgMy44OTcgOC42MzEzIDguNjMxMyA4LjYzMTNoMTE1LjI2YzQuNzM0MiAwIDguNjQyMS0zLjg5NyA4LjY0MjEtOC42MzEzdi0xMTUuNDdjMC00LjczNDItMy45MDgyLTguNjMxMy04LjY0MjEtOC42MzEzem0wIDUuNzI0aDExNS4yNmMxLjY1OCAwIDIuOTA3IDEuMjQ5MSAyLjkwNyAyLjkwNzF2MTE1LjQ3YzAgMS42NTgtMS4yNDkxIDIuOTA3LTIuOTA3IDIuOTA3aC0xMTUuMjZjLTEuNjU4IDAtMi44OTU4LTEuMjQ5MS0yLjg5NTgtMi45MDd2LTExNS40N2MwLTEuNjU4IDEuMjM3OC0yLjkwNzEgMi44OTU4LTIuOTA3MXoiIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNzIxMTQiLz48L3N2Zz4=');}.icon-sparkle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTYuODksMTMwLjk0LDE0NC40LDExMS42LDEyNS4wNiw1OS4xMWExMy45MiwxMy45MiwwLDAsMC0yNi4xMiwwTDc5LjYsMTExLjYsMjcuMTEsMTMwLjk0YTEzLjkyLDEzLjkyLDAsMCwwLDAsMjYuMTJMNzkuNiwxNzYuNGwxOS4zNCw1Mi40OWExMy45MiwxMy45MiwwLDAsMCwyNi4xMiwwTDE0NC40LDE3Ni40bDUyLjQ5LTE5LjM0YTEzLjkyLDEzLjkyLDAsMCwwLDAtMjYuMTJabS00LjE1LDE0Ljg2LTU1LjA4LDIwLjNhNiw2LDAsMCwwLTMuNTYsMy41NmwtMjAuMyw1NS4wOGExLjkyLDEuOTIsMCwwLDEtMy42LDBMODkuOSwxNjkuNjZhNiw2LDAsMCwwLTMuNTYtMy41NkwzMS4yNiwxNDUuOGExLjkyLDEuOTIsMCwwLDEsMC0zLjZsNTUuMDgtMjAuM2E2LDYsMCwwLDAsMy41Ni0zLjU2bDIwLjMtNTUuMDhhMS45MiwxLjkyLDAsMCwxLDMuNiwwbDIwLjMsNTUuMDhhNiw2LDAsMCwwLDMuNTYsMy41Nmw1NS4wOCwyMC4zYTEuOTIsMS45MiwwLDAsMSwwLDMuNlpNMTQ2LDQwYTYsNiwwLDAsMSw2LTZoMThWMTZhNiw2LDAsMCwxLDEyLDBWMzRoMThhNiw2LDAsMCwxLDAsMTJIMTgyVjY0YTYsNiwwLDAsMS0xMiwwVjQ2SDE1MkE2LDYsMCwwLDEsMTQ2LDQwWk0yNDYsODhhNiw2LDAsMCwxLTYsNkgyMzB2MTBhNiw2LDAsMCwxLTEyLDBWOTRIMjA4YTYsNiwwLDAsMSwwLTEyaDEwVjcyYTYsNiwwLDAsMSwxMiwwVjgyaDEwQTYsNiwwLDAsMSwyNDYsODhaIi8+PC9zdmc+');}.icon-sun-dim{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjIsNDBWMzJhNiw2LDAsMCwxLDEyLDB2OGE2LDYsMCwwLDEtMTIsMFptNjgsODhhNjIsNjIsMCwxLDEtNjItNjJBNjIuMDcsNjIuMDcsMCwwLDEsMTkwLDEyOFptLTEyLDBhNTAsNTAsMCwxLDAtNTAsNTBBNTAuMDYsNTAuMDYsMCwwLDAsMTc4LDEyOFpNNTkuNzYsNjguMjRhNiw2LDAsMSwwLDguNDgtOC40OGwtOC04YTYsNiwwLDAsMC04LjQ4LDguNDhabTAsMTE5LjUyLTgsOGE2LDYsMCwxLDAsOC40OCw4LjQ4bDgtOGE2LDYsMCwxLDAtOC40OC04LjQ4Wm0xMzYtMTM2LTgsOGE2LDYsMCwxLDAsOC40OCw4LjQ4bDgtOGE2LDYsMCwwLDAtOC40OC04LjQ4Wm0uNDgsMTM2YTYsNiwwLDAsMC04LjQ4LDguNDhsOCw4YTYsNiwwLDAsMCw4LjQ4LTguNDhaTTQwLDEyMkgzMmE2LDYsMCwwLDAsMCwxMmg4YTYsNiwwLDAsMCwwLTEyWm04OCw4OGE2LDYsMCwwLDAtNiw2djhhNiw2LDAsMCwwLDEyLDB2LThBNiw2LDAsMCwwLDEyOCwyMTBabTk2LTg4aC04YTYsNiwwLDAsMCwwLDEyaDhhNiw2LDAsMCwwLDAtMTJaIi8+PC9zdmc+');}.icon-moon{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzIuMTMsMTQzLjY0YTYsNiwwLDAsMC02LTEuNDlBOTAuMDcsOTAuMDcsMCwwLDEsMTEzLjg2LDI5Ljg1YTYsNiwwLDAsMC03LjQ5LTcuNDhBMTAyLjg4LDEwMi44OCwwLDAsMCw1NC40OCw1OC42OCwxMDIsMTAyLDAsMCwwLDE5Ny4zMiwyMDEuNTJhMTAyLjg4LDEwMi44OCwwLDAsMCwzNi4zMS01MS44OUE2LDYsMCwwLDAsMjMyLjEzLDE0My42NFptLTQyLDQ4LjI5YTkwLDkwLDAsMCwxLTEyNi0xMjZBOTAuOSw5MC45LDAsMCwxLDk5LjY1LDM3LjY2LDEwMi4wNiwxMDIuMDYsMCwwLDAsMjE4LjM0LDE1Ni4zNSw5MC45LDkwLjksMCwwLDEsMTkwLjEsMTkxLjkzWiIvPjwvc3ZnPg==');}.icon-house{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTcuOSwxMTAuMWwtODAtODBhMTQsMTQsMCwwLDAtMTkuOCwwbC04MCw4MEExMy45MiwxMy45MiwwLDAsMCwzNCwxMjB2OTZhNiw2LDAsMCwwLDYsNmg2NGE2LDYsMCwwLDAsNi02VjE1OGgzNnY1OGE2LDYsMCwwLDAsNiw2aDY0YTYsNiwwLDAsMCw2LTZWMTIwQTEzLjkyLDEzLjkyLDAsMCwwLDIxNy45LDExMC4xWk0yMTAsMjEwSDE1OFYxNTJhNiw2LDAsMCwwLTYtNkgxMDRhNiw2LDAsMCwwLTYsNnY1OEg0NlYxMjBhMiwyLDAsMCwxLC41OC0xLjQybDgwLTgwYTIsMiwwLDAsMSwyLjg0LDBsODAsODBBMiwyLDAsMCwxLDIxMCwxMjBaIi8+PC9zdmc+');}.icon-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDQuMjQsMTk1Ljc2YTYsNiwwLDEsMS04LjQ4LDguNDhMMTI4LDEzNi40OSw2MC4yNCwyMDQuMjRhNiw2LDAsMCwxLTguNDgtOC40OEwxMTkuNTEsMTI4LDUxLjc2LDYwLjI0YTYsNiwwLDAsMSw4LjQ4LTguNDhMMTI4LDExOS41MWw2Ny43Ni02Ny43NWE2LDYsMCwwLDEsOC40OCw4LjQ4TDEzNi40OSwxMjhaIi8+PC9zdmc+');}.icon-drop-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzIuNTMsNDkuMDZhMjUxLjQyLDI1MS40MiwwLDAsMC00MS4wOS0zOCw2LDYsMCwwLDAtNi44OCwwLDI1MS40MiwyNTEuNDIsMCwwLDAtNDEuMDksMzhDNTYuMzQsODAuMjYsNDIsMTEzLjA5LDQyLDE0NGE4Niw4NiwwLDAsMCwxNzIsMEMyMTQsMTEzLjA5LDE5OS42Niw4MC4yNiwxNzIuNTMsNDkuMDZaTTEyOCwyMThhNzQuMDksNzQuMDksMCwwLDEtNzQtNzRjMC01OS42Miw1OS0xMDguOTMsNzQtMTIwLjUxQzE0MywzNS4wNywyMDIsODQuMzgsMjAyLDE0NEE3NC4wOSw3NC4wOSwwLDAsMSwxMjgsMjE4WiIvPjwvc3ZnPg==');}.icon-list{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTYsNiwwLDAsMS02LDZINDBhNiw2LDAsMCwxLDAtMTJIMjE2QTYsNiwwLDAsMSwyMjIsMTI4Wk00MCw3MEgyMTZhNiw2LDAsMCwwLDAtMTJINDBhNiw2LDAsMCwwLDAsMTJaTTIxNiwxODZINDBhNiw2LDAsMCwwLDAsMTJIMjE2YTYsNiwwLDAsMCwwLTEyWiIvPjwvc3ZnPg==');}.icon-facebook-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjZBMTAyLDEwMiwwLDEsMCwyMzAsMTI4LDEwMi4xMiwxMDIuMTIsMCwwLDAsMTI4LDI2Wm02LDE5MS44VjE1MGgyNmE2LDYsMCwwLDAsMC0xMkgxMzRWMTEyYTE4LDE4LDAsMCwxLDE4LTE4aDE2YTYsNiwwLDAsMCwwLTEySDE1MmEzMCwzMCwwLDAsMC0zMCwzMHYyNkg5NmE2LDYsMCwwLDAsMCwxMmgyNnY2Ny44YTkwLDkwLDAsMSwxLDEyLDBaIi8+PC9zdmc+');}.icon-instagram-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsODJhNDYsNDYsMCwxLDAsNDYsNDZBNDYuMDYsNDYuMDYsMCwwLDAsMTI4LDgyWm0wLDgwYTM0LDM0LDAsMSwxLDM0LTM0QTM0LDM0LDAsMCwxLDEyOCwxNjJaTTE3NiwyNkg4MEE1NC4wNiw1NC4wNiwwLDAsMCwyNiw4MHY5NmE1NC4wNiw1NC4wNiwwLDAsMCw1NCw1NGg5NmE1NC4wNiw1NC4wNiwwLDAsMCw1NC01NFY4MEE1NC4wNiw1NC4wNiwwLDAsMCwxNzYsMjZabTQyLDE1MGE0Miw0MiwwLDAsMS00Miw0Mkg4MGE0Miw0MiwwLDAsMS00Mi00MlY4MEE0Miw0MiwwLDAsMSw4MCwzOGg5NmE0Miw0MiwwLDAsMSw0Miw0MlpNMTkwLDc2YTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDE5MCw3NloiLz48L3N2Zz4=');}.icon-star-half-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzkuMTgsOTcuMjZBMTYuMzgsMTYuMzgsMCwwLDAsMjI0LjkyLDg2bC01OS00Ljc2TDE0My4xNCwyNi4xNWExNi4zNiwxNi4zNiwwLDAsMC0zMC4yNywwTDkwLjExLDgxLjIzLDMxLjA4LDg2YTE2LjQ2LDE2LjQ2LDAsMCwwLTkuMzcsMjguODZsNDUsMzguODNMNTMsMjExLjc1YTE2LjQsMTYuNCwwLDAsMCwyNC41LDE3LjgyTDEyOCwxOTguNDlsNTAuNTMsMzEuMDhBMTYuNCwxNi40LDAsMCwwLDIwMywyMTEuNzVsLTEzLjc2LTU4LjA3LDQ1LTM4LjgzQTE2LjQzLDE2LjQzLDAsMCwwLDIzOS4xOCw5Ny4yNlptLTE1LjM0LDUuNDctNDguNyw0MmE4LDgsMCwwLDAtMi41Niw3LjkxbDE0Ljg4LDYyLjhhLjM3LjM3LDAsMCwxLS4xNy40OGMtLjE4LjE0LS4yMy4xMS0uMzgsMGwtNTQuNzItMzMuNjVBOCw4LDAsMCwwLDEyOCwxODEuMVYzMmMuMjQsMCwuMjcuMDguMzUuMjZMMTUzLDkxLjg2YTgsOCwwLDAsMCw2Ljc1LDQuOTJsNjMuOTEsNS4xNmMuMTYsMCwuMjUsMCwuMzQuMjlTMjI0LDEwMi42MywyMjMuODQsMTAyLjczWiIvPjwvc3ZnPg==');}.icon-star-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzQuMjksMTE0Ljg1bC00NSwzOC44M0wyMDMsMjExLjc1YTE2LjQsMTYuNCwwLDAsMS0yNC41LDE3LjgyTDEyOCwxOTguNDksNzcuNDcsMjI5LjU3QTE2LjQsMTYuNCwwLDAsMSw1MywyMTEuNzVsMTMuNzYtNTguMDctNDUtMzguODNBMTYuNDYsMTYuNDYsMCwwLDEsMzEuMDgsODZsNTktNC43NiwyMi43Ni01NS4wOGExNi4zNiwxNi4zNiwwLDAsMSwzMC4yNywwbDIyLjc1LDU1LjA4LDU5LDQuNzZhMTYuNDYsMTYuNDYsMCwwLDEsOS4zNywyOC44NloiLz48L3N2Zz4=');}
\ No newline at end of file
+.icon-google-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsMTI4YTk2LDk2LDAsMSwxLTIxLjk1LTYxLjA5LDgsOCwwLDEsMS0xMi4zMywxMC4xOEE4MCw4MCwwLDEsMCwyMDcuNiwxMzZIMTI4YTgsOCwwLDAsMSwwLTE2aDg4QTgsOCwwLDAsMSwyMjQsMTI4WiIvPjwvc3ZnPg==');}.icon-apple-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjMuMywxNjkuNTlhOC4wNyw4LjA3LDAsMCwwLTIuOC0zLjRDMjAzLjUzLDE1NC41MywyMDAsMTM0LjY0LDIwMCwxMjBjMC0xNy42NywxMy40Ny0zMy4wNiwyMS41LTQwLjY3YTgsOCwwLDAsMCwwLTExLjYyQzIwOC44Miw1NS43NCwxODcuODIsNDgsMTY4LDQ4YTcyLjIsNzIuMiwwLDAsMC00MCwxMi4xMyw3MS41Niw3MS41NiwwLDAsMC05MC43MSw5LjA5QTc0LjYzLDc0LjYzLDAsMCwwLDE2LDEyMy40YTEyNy4wNiwxMjcuMDYsMCwwLDAsNDAuMTQsODkuNzNBMzkuOCwzOS44LDAsMCwwLDgzLjU5LDIyNGg4Ny42OGEzOS44NCwzOS44NCwwLDAsMCwyOS4xMi0xMi41NywxMjUsMTI1LDAsMCwwLDE3LjgyLTI0LjZDMjI1LjIzLDE3NCwyMjQuMzMsMTcyLDIyMy4zLDE2OS41OVptLTM0LjYzLDMwLjk0YTIzLjc2LDIzLjc2LDAsMCwxLTE3LjQsNy40N0g4My41OWEyMy44MiwyMy44MiwwLDAsMS0xNi40NC02LjUxQTExMS4xNCwxMTEuMTQsMCwwLDEsMzIsMTIzLDU4LjUsNTguNSwwLDAsMSw0OC42NSw4MC40Nyw1NC44MSw1NC44MSwwLDAsMSw4OCw2NGguNzhBNTUuNDUsNTUuNDUsMCwwLDEsMTIzLDc2LjI4YTgsOCwwLDAsMCwxMCwwQTU1LjQ0LDU1LjQ0LDAsMCwxLDE2OCw2NGE3MC42NCw3MC42NCwwLDAsMSwzNiwxMC4zNWMtMTMsMTQuNTItMjAsMzAuNDctMjAsNDUuNjUsMCwyMy43Nyw3LjY0LDQyLjczLDIyLjE4LDU1LjNBMTA1LjgyLDEwNS44MiwwLDAsMSwxODguNjcsMjAwLjUzWk0xMjguMjMsMzBBNDAsNDAsMCwwLDEsMTY3LDBoMWE4LDgsMCwwLDEsMCwxNmgtMWEyNCwyNCwwLDAsMC0yMy4yNCwxOCw4LDgsMCwxLDEtMTUuNS00WiIvPjwvc3ZnPg==');}.icon-check-circle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzMuNjYsOTguMzRhOCw4LDAsMCwxLDAsMTEuMzJsLTU2LDU2YTgsOCwwLDAsMS0xMS4zMiwwbC0yNC0yNGE4LDgsMCwwLDEsMTEuMzItMTEuMzJMMTEyLDE0OC42OWw1MC4zNC01MC4zNUE4LDgsMCwwLDEsMTczLjY2LDk4LjM0Wk0yMzIsMTI4QTEwNCwxMDQsMCwxLDEsMTI4LDI0LDEwNC4xMSwxMDQuMTEsMCwwLDEsMjMyLDEyOFptLTE2LDBhODgsODgsMCwxLDAtODgsODhBODguMSw4OC4xLDAsMCwwLDIxNiwxMjhaIi8+PC9zdmc+');}.icon-cloud-slash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik01My45MiwzNC42MkE4LDgsMCwxLDAsNDIuMDgsNDUuMzhMODEuMzIsODguNTVsLS4wNi4xMkE2NSw2NSwwLDAsMCw3Miw4OGE2NCw2NCwwLDAsMCwwLDEyOGg4OGE4Ny4zNCw4Ny4zNCwwLDAsMCwzMS44LTUuOTNsMTAuMjgsMTEuMzFhOCw4LDAsMSwwLDExLjg0LTEwLjc2Wk0xNjAsMjAwSDcyYTQ4LDQ4LDAsMCwxLDAtOTZjMS4xLDAsMi4yLDAsMy4zLjEyQTg4LjQsODguNCwwLDAsMCw3MiwxMjhhOCw4LDAsMCwwLDE2LDAsNzIuMjUsNzIuMjUsMCwwLDEsNS4wNi0yNi41NGw4Nyw5NS43QTcxLjY2LDcxLjY2LDAsMCwxLDE2MCwyMDBabTg4LTcyYTg3Ljg5LDg3Ljg5LDAsMCwxLTIyLjM1LDU4LjYxQTgsOCwwLDAsMSwyMTMuNzEsMTc2LDcyLDcyLDAsMCwwLDExNy4zNyw3MGE4LDgsMCwwLDEtOS40OC0xMi44OUE4OCw4OCwwLDAsMSwyNDgsMTI4WiIvPjwvc3ZnPg==');}.icon-exclamation-mark{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNDQsMjAwYTE2LDE2LDAsMSwxLTE2LTE2QTE2LDE2LDAsMCwxLDE0NCwyMDBabS0xNi00MGE4LDgsMCwwLDAsOC04VjQ4YTgsOCwwLDAsMC0xNiwwVjE1MkE4LDgsMCwwLDAsMTI4LDE2MFoiLz48L3N2Zz4=');}.icon-cloud-arrow-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDgsMTI4YTg3LjM0LDg3LjM0LDAsMCwxLTE3LjYsNTIuODEsOCw4LDAsMSwxLTEyLjgtOS42MkE3MS4zNCw3MS4zNCwwLDAsMCwyMzIsMTI4YTcyLDcyLDAsMCwwLTE0NCwwLDgsOCwwLDAsMS0xNiwwLDg4LDg4LDAsMCwxLDMuMjktMjMuODhDNzQuMiwxMDQsNzMuMSwxMDQsNzIsMTA0YTQ4LDQ4LDAsMCwwLDAsOTZIOTZhOCw4LDAsMCwxLDAsMTZINzJBNjQsNjQsMCwxLDEsODEuMjksODguNjgsODgsODgsMCwwLDEsMjQ4LDEyOFptLTY5LjY2LDQyLjM0TDE2MCwxODguNjlWMTI4YTgsOCwwLDAsMC0xNiwwdjYwLjY5bC0xOC4zNC0xOC4zNWE4LDgsMCwwLDAtMTEuMzIsMTEuMzJsMzIsMzJhOCw4LDAsMCwwLDExLjMyLDBsMzItMzJhOCw4LDAsMCwwLTExLjMyLTExLjMyWiIvPjwvc3ZnPg==');}.icon-caret-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTMuNjYsMTAxLjY2bC04MCw4MGE4LDgsMCwwLDEtMTEuMzIsMGwtODAtODBBOCw4LDAsMCwxLDUzLjY2LDkwLjM0TDEyOCwxNjQuNjlsNzQuMzQtNzQuMzVhOCw4LDAsMCwxLDExLjMyLDExLjMyWiIvPjwvc3ZnPg==');}.icon-cloud-arrow-up{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzguMzQsMTY1LjY2LDE2MCwxNDcuMzFWMjA4YTgsOCwwLDAsMS0xNiwwVjE0Ny4zMWwtMTguMzQsMTguMzVhOCw4LDAsMCwxLTExLjMyLTExLjMybDMyLTMyYTgsOCwwLDAsMSwxMS4zMiwwbDMyLDMyYTgsOCwwLDAsMS0xMS4zMiwxMS4zMlpNMTYwLDQwQTg4LjA4LDg4LjA4LDAsMCwwLDgxLjI5LDg4LjY4LDY0LDY0LDAsMSwwLDcyLDIxNmg0MGE4LDgsMCwwLDAsMC0xNkg3MmE0OCw0OCwwLDAsMSwwLTk2YzEuMSwwLDIuMiwwLDMuMjkuMTJBODgsODgsMCwwLDAsNzIsMTI4YTgsOCwwLDAsMCwxNiwwLDcyLDcyLDAsMSwxLDEwMC44LDY2LDgsOCwwLDAsMCwzLjIsMTUuMzQsNy45LDcuOSwwLDAsMCwzLjItLjY4QTg4LDg4LDAsMCwwLDE2MCw0MFoiLz48L3N2Zz4=');}.icon-cloud-check{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDBBODguMDksODguMDksMCwwLDAsODEuMjksODguNjcsNjQsNjQsMCwxLDAsNzIsMjE2aDg4YTg4LDg4LDAsMCwwLDAtMTc2Wm0wLDE2MEg3MmE0OCw0OCwwLDAsMSwwLTk2YzEuMSwwLDIuMiwwLDMuMjkuMTFBODgsODgsMCwwLDAsNzIsMTI4YTgsOCwwLDAsMCwxNiwwLDcyLDcyLDAsMSwxLDcyLDcyWm0zNy42Ni05My42NmE4LDgsMCwwLDEsMCwxMS4zMmwtNDgsNDhhOCw4LDAsMCwxLTExLjMyLDBsLTI0LTI0YTgsOCwwLDAsMSwxMS4zMi0xMS4zMkwxNDQsMTQ4LjY5bDQyLjM0LTQyLjM1QTgsOCwwLDAsMSwxOTcuNjYsMTA2LjM0WiIvPjwvc3ZnPg==');}.icon-cloud-warning{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDBBODguMDksODguMDksMCwwLDAsODEuMjksODguNjcsNjQsNjQsMCwxLDAsNzIsMjE2aDg4YTg4LDg4LDAsMCwwLDAtMTc2Wm0wLDE2MEg3MmE0OCw0OCwwLDAsMSwwLTk2YzEuMSwwLDIuMiwwLDMuMjkuMTFBODgsODgsMCwwLDAsNzIsMTI4YTgsOCwwLDAsMCwxNiwwLDcyLDcyLDAsMSwxLDcyLDcyWm0tOC03MlY4OGE4LDgsMCwwLDEsMTYsMHY0MGE4LDgsMCwwLDEtMTYsMFptMjAsMzZhMTIsMTIsMCwxLDEtMTItMTJBMTIsMTIsMCwwLDEsMTcyLDE2NFoiLz48L3N2Zz4=');}.icon-syncing{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgMjU2IDI1NiI+PHBhdGggaWQ9InJlZnJlc2giIGQ9Ik0xNjAuMDQ3IDEyMi44NzVhMzAuNzg0IDMwLjc4NCAwIDAgMC0yMS43NSA4Ljc5N2MtMi44NDIgMy4wMDMtLjQ2NyA0Ljk3MSAxLjMxMiAzLjE1NiAxMS4wNDMtMTAuNzg2IDI4LjcxLTEwLjY4IDM5LjYyNS4yMzRsNy4yMDMgNy4yMDRoLTEyLjg3NWMtMy4zNDcuMDA4LTMuMTY1IDMuODc1IDAgMy44NzVoMTYuMTFjMi4wNjIgMCAyLjU0LTEuNDE4IDIuNTYyLTQuOTdsLjA5NC0xNC45MjFjLjAyLTMuMjktMy40MzctMy4xNjUtMy40MzcgMHYxMi44NmwtNy4yMDMtNy4xODhhMzAuNzY4IDMwLjc2OCAwIDAgMC0yMS42NDEtOS4wNDd6bS0yOS41OTQgMzkuNzk3Yy0yLjA2MiAwLTIuNTI0IDEuNDAyLTIuNTQ3IDQuOTUzbC0uMDk0IDE0LjkyMmMtLjAyIDMuMjkgMy40MjIgMy4xNjQgMy40MjIgMHYtMTIuODZsNy4yMDMgNy4yMDRjMTEuOTU2IDExLjk1NSAzMS4zMTIgMTIuMDY0IDQzLjQwNy4yNSAyLjg0Mi0zLjAwMy40NTEtNC45ODgtMS4zMjgtMy4xNzItMTEuMDQzIDEwLjc4Ni0yOC43MSAxMC42OC0zOS42MjUtLjIzNWwtNy4xODgtNy4yMDNoMTIuODZjMy4zNDctLjAwOCAzLjE2NS0zLjg2IDAtMy44NmgtMTYuMTF6Ii8+PHBhdGggZD0iTTE2MCA0NGE4NC4xMSA4NC4xMSAwIDAgMC03Ni40MSA0OS4xMkE2MC43MSA2MC43MSAwIDAgMCA3MiA5MmE2MCA2MCAwIDAgMCAwIDEyMGg4OGE4NCA4NCAwIDAgMCAwLTE2OFptMCAxNjBINzJhNTIgNTIgMCAxIDEgOC41NS0xMDMuM0E4My42NiA4My42NiAwIDAgMCA3NiAxMjhhNCA0IDAgMCAwIDggMCA3NiA3NiAwIDEgMSA3NiA3NloiLz48L3N2Zz4=');}.icon-cloud-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjAsNDBBODguMDksODguMDksMCwwLDAsODEuMjksODguNjcsNjQsNjQsMCwxLDAsNzIsMjE2aDg4YTg4LDg4LDAsMCwwLDAtMTc2Wm0wLDE2MEg3MmE0OCw0OCwwLDAsMSwwLTk2YzEuMSwwLDIuMiwwLDMuMjkuMTFBODgsODgsMCwwLDAsNzIsMTI4YTgsOCwwLDAsMCwxNiwwLDcyLDcyLDAsMSwxLDcyLDcyWm0yOS42Ni04Mi4zNEwxNzEuMzEsMTM2bDE4LjM1LDE4LjM0YTgsOCwwLDAsMS0xMS4zMiwxMS4zMkwxNjAsMTQ3LjMxbC0xOC4zNCwxOC4zNWE4LDgsMCwwLDEtMTEuMzItMTEuMzJMMTQ4LjY5LDEzNmwtMTguMzUtMTguMzRhOCw4LDAsMCwxLDExLjMyLTExLjMyTDE2MCwxMjQuNjlsMTguMzQtMTguMzVhOCw4LDAsMCwxLDExLjMyLDExLjMyWiIvPjwvc3ZnPg==');}.icon-arrows-clockwise{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsNDhWOTZhOCw4LDAsMCwxLTgsOEgxNjhhOCw4LDAsMCwxLDAtMTZoMjguNjlMMTgyLjA2LDczLjM3YTc5LjU2LDc5LjU2LDAsMCwwLTU2LjEzLTIzLjQzaC0uNDVBNzkuNTIsNzkuNTIsMCwwLDAsNjkuNTksNzIuNzEsOCw4LDAsMCwxLDU4LjQxLDYxLjI3YTk2LDk2LDAsMCwxLDEzNSwuNzlMMjA4LDc2LjY5VjQ4YTgsOCwwLDAsMSwxNiwwWk0xODYuNDEsMTgzLjI5YTgwLDgwLDAsMCwxLTExMi40Ny0uNjZMNTkuMzEsMTY4SDg4YTgsOCwwLDAsMCwwLTE2SDQwYTgsOCwwLDAsMC04LDh2NDhhOCw4LDAsMCwwLDE2LDBWMTc5LjMxbDE0LjYzLDE0LjYzQTk1LjQzLDk1LjQzLDAsMCwwLDEzMCwyMjIuMDZoLjUzYTk1LjM2LDk1LjM2LDAsMCwwLDY3LjA3LTI3LjMzLDgsOCwwLDAsMC0xMS4xOC0xMS40NFoiLz48L3N2Zz4=');}.icon-share-fat{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzcuNjYsMTA2LjM1bC04MC04MEE4LDgsMCwwLDAsMTQ0LDMyVjcyLjM1Yy0yNS45NCwyLjIyLTU0LjU5LDE0LjkyLTc4LjE2LDM0LjkxLTI4LjM4LDI0LjA4LTQ2LjA1LDU1LjExLTQ5Ljc2LDg3LjM3YTEyLDEyLDAsMCwwLDIwLjY4LDkuNThoMGMxMS0xMS43MSw1MC4xNC00OC43NCwxMDcuMjQtNTJWMTkyYTgsOCwwLDAsMCwxMy42Niw1LjY1bDgwLTgwQTgsOCwwLDAsMCwyMzcuNjYsMTA2LjM1Wk0xNjAsMTcyLjY5VjE0NGE4LDgsMCwwLDAtOC04Yy0yOC4wOCwwLTU1LjQzLDcuMzMtODEuMjksMjEuOGExOTYuMTcsMTk2LjE3LDAsMCwwLTM2LjU3LDI2LjUyYzUuOC0yMy44NCwyMC40Mi00Ni41MSw0Mi4wNS02NC44NkM5OS40MSw5OS43NywxMjcuNzUsODgsMTUyLDg4YTgsOCwwLDAsMCw4LThWNTEuMzJMMjIwLjY5LDExMloiLz48L3N2Zz4=');}.icon-trash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTYsNDhIMTc2VjQwYTI0LDI0LDAsMCwwLTI0LTI0SDEwNEEyNCwyNCwwLDAsMCw4MCw0MHY4SDQwYTgsOCwwLDAsMCwwLDE2aDhWMjA4YTE2LDE2LDAsMCwwLDE2LDE2SDE5MmExNiwxNiwwLDAsMCwxNi0xNlY2NGg4YTgsOCwwLDAsMCwwLTE2Wk05Niw0MGE4LDgsMCwwLDEsOC04aDQ4YTgsOCwwLDAsMSw4LDh2OEg5NlptOTYsMTY4SDY0VjY0SDE5MlpNMTEyLDEwNHY2NGE4LDgsMCwwLDEtMTYsMFYxMDRhOCw4LDAsMCwxLDE2LDBabTQ4LDB2NjRhOCw4LDAsMCwxLTE2LDBWMTA0YTgsOCwwLDAsMSwxNiwwWiIvPjwvc3ZnPg==');}.icon-star{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzkuMTgsOTcuMjZBMTYuMzgsMTYuMzgsMCwwLDAsMjI0LjkyLDg2bC01OS00Ljc2TDE0My4xNCwyNi4xNWExNi4zNiwxNi4zNiwwLDAsMC0zMC4yNywwTDkwLjExLDgxLjIzLDMxLjA4LDg2YTE2LjQ2LDE2LjQ2LDAsMCwwLTkuMzcsMjguODZsNDUsMzguODNMNTMsMjExLjc1YTE2LjM4LDE2LjM4LDAsMCwwLDI0LjUsMTcuODJMMTI4LDE5OC40OWw1MC41MywzMS4wOEExNi40LDE2LjQsMCwwLDAsMjAzLDIxMS43NWwtMTMuNzYtNTguMDcsNDUtMzguODNBMTYuNDMsMTYuNDMsMCwwLDAsMjM5LjE4LDk3LjI2Wm0tMTUuMzQsNS40Ny00OC43LDQyYTgsOCwwLDAsMC0yLjU2LDcuOTFsMTQuODgsNjIuOGEuMzcuMzcsMCwwLDEtLjE3LjQ4Yy0uMTguMTQtLjIzLjExLS4zOCwwbC01NC43Mi0zMy42NWE4LDgsMCwwLDAtOC4zOCwwTDY5LjA5LDIxNS45NGMtLjE1LjA5LS4xOS4xMi0uMzgsMGEuMzcuMzcsMCwwLDEtLjE3LS40OGwxNC44OC02Mi44YTgsOCwwLDAsMC0yLjU2LTcuOTFsLTQ4LjctNDJjLS4xMi0uMS0uMjMtLjE5LS4xMy0uNXMuMTgtLjI3LjMzLS4yOWw2My45Mi01LjE2QTgsOCwwLDAsMCwxMDMsOTEuODZsMjQuNjItNTkuNjFjLjA4LS4xNy4xMS0uMjUuMzUtLjI1cy4yNy4wOC4zNS4yNUwxNTMsOTEuODZhOCw4LDAsMCwwLDYuNzUsNC45Mmw2My45Miw1LjE2Yy4xNSwwLC4yNCwwLC4zMy4yOVMyMjQsMTAyLjYzLDIyMy44NCwxMDIuNzNaIi8+PC9zdmc+');}.icon-alphabetical{--icon:url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9ImN1cnJlbnRDb2xvciIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTgzLjc4IDE4NC4wNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNTkuNTg2IDY5Ljc0MmMtMC44NTEzIDAtMS40NjEgMC4xOTY1Ni0xLjgzNjYgMC41OTcxOC0wLjM1MDU0IDAuMzc1NTgtMC41Mjk1OCAxLjAyMjktMC41Mjk1OCAxLjk0OTNzMC4xNzkwMyAxLjU5MzcgMC41Mjk1OCAxLjk5NDRjMC4zNzU1OCAwLjM3NTU4IDAuOTg1MjkgMC41NjMzOCAxLjgzNjYgMC41NjMzOGg3LjAxOTdsLTEyLjQyOCAzNC4zNjZoLTIuMTA3Yy0wLjg1MTMgMC0xLjQ2MSAwLjE5NjU2LTEuODM2NiAwLjU5NzE4LTAuMzUwNTQgMC4zNzU1OC0wLjUyOTU3IDEuMDM0MS0wLjUyOTU3IDEuOTYwNiAwIDAuOTI2NDQgMC4xNzkwMyAxLjU4MjUgMC41Mjk1NyAxLjk4MyAwLjM3NTU4IDAuMzc1NTkgMC45ODUyOSAwLjU2MzM4IDEuODM2NiAwLjU2MzM4aDEyLjU1MmMwLjg1MTMgMCAxLjQ1MjItMC4xODc3OSAxLjgwMjgtMC41NjMzOCAwLjM3NTU4LTAuNDAwNjIgMC41NjMzNy0xLjA1NjYgMC41NjMzNy0xLjk4MyAwLTAuOTI2NDUtMC4xODc3OS0xLjU4NS0wLjU2MzM3LTEuOTYwNi0wLjM1MDU0LTAuNDAwNjItMC45NTE0Ny0wLjU5NzE4LTEuODAyOC0wLjU5NzE4aC00LjU1MjFsMy4xMjExLTguOTM0OWgxOC4yMmwzLjA3NiA4LjkzNDloLTUuMDcwNGMtMC44NTEzIDAtMS40NjEgMC4xOTY1Ni0xLjgzNjYgMC41OTcxOC0wLjM1MDU0IDAuMzc1NTgtMC41Mjk1OCAxLjAzNDEtMC41Mjk1OCAxLjk2MDYgMCAwLjkyNjQ0IDAuMTc5MDMgMS41ODI1IDAuNTI5NTggMS45ODMgMC4zNzU1OCAwLjM3NTU5IDAuOTg1MjkgMC41NjMzOCAxLjgzNjYgMC41NjMzOGgxMy4yOTZjMC44NTEzIDAgMS40NTIyLTAuMTg3NzkgMS44MDI4LTAuNTYzMzggMC4zNzU1OC0wLjQwMDYyIDAuNTYzMzctMS4wNTY2IDAuNTYzMzctMS45ODMgMC0wLjkyNjQ1LTAuMTg3NzktMS41ODUtMC41NjMzNy0xLjk2MDYtMC4zNTA1NC0wLjQwMDYyLTAuOTUxNDctMC41OTcxOC0xLjgwMjgtMC41OTcxOGgtMi4yODczbC0xMy4yNjItMzcuMDM2Yy0wLjMwMDQ3LTAuODUxMy0wLjc1OTk0LTEuNDYxLTEuMzg1OS0xLjgzNjYtMC42MDA5My0wLjQwMDYyLTEuNDA5Ny0wLjU5NzE4LTIuNDExMy0wLjU5NzE4em00NC4xNDYgMGMtMC44NTEzIDAtMS40NzIzIDAuMTk2NTYtMS44NDc4IDAuNTk3MTgtMC4zNTA1NSAwLjM3NTU4LTAuNTE4MyAxLjAyMjktMC41MTgzIDEuOTQ5M3YxMS45MWMwIDAuODc2MzMgMC4yMDUzMiAxLjUwNjEgMC42MzA5OCAxLjg4MTcgMC40MjU2NiAwLjM3NTU4IDEuMTU5MyAwLjU2MzM3IDIuMTg1OSAwLjU2MzM3czEuNzQ5LTAuMTg3NzkgMi4xNzQ3LTAuNTYzMzdjMC40MjU2OS0wLjM3NTU4IDAuNjQyMjYtMS4wMDUzIDAuNjQyMjYtMS44ODE3di05LjM1MTdoMTguODUxbC0yNC43NTQgMzUuMzAxYy0wLjM1MDU0IDAuNTI1ODItMC41MTgzMSAxLjA3MTctMC41MTgzMSAxLjYyMjYgMCAwLjkyNjQ1IDAuMTY3NzcgMS41ODI1IDAuNTE4MzEgMS45ODMxIDAuMzc1NTggMC4zNzU1OCAwLjk5NjU0IDAuNTYzMzggMS44NDc4IDAuNTYzMzhoMjguNzY2YzAuODUxMyAwIDEuNDUyMi0wLjE4NzggMS44MDI4LTAuNTYzMzggMC4zNzU1OC0wLjQwMDYyIDAuNTYzMzgtMS4wNTY2IDAuNTYzMzgtMS45ODMxdi0xMi42NjVjMC0wLjg3NjMzLTAuMjE2NTgtMS40OTQ4LTAuNjQyMjUtMS44NzA0LTAuNDI1NjYtMC4zNzU1OC0xLjE0OC0wLjU2MzM4LTIuMTc0Ny0wLjU2MzM4LTEuMDI2NiAwLTEuNzQ5IDAuMTg3NzktMi4xNzQ3IDAuNTYzMzgtMC40MjU2NiAwLjM3NTU4LTAuNjQyMjQgMC45OTQwMi0wLjY0MjI0IDEuODcwNHYxMC4xMDdoLTE5Ljk3OGwyNC45MDEtMzUuNDU5YzAuMjUwMzktMC4zNTA1NCAwLjM3MTgzLTAuODM4ODMgMC4zNzE4My0xLjQ2NDggMC0wLjkyNjQ1LTAuMTg3OC0xLjU3MzctMC41NjMzOC0xLjk0OTMtMC4zNTA1NS0wLjQwMDYyLTAuOTUxNDctMC41OTcxOC0xLjgwMjgtMC41OTcxOHptLTMxLjc1MiA1LjEwNDJoMC43MDk4NWw2Ljk4NTkgMjAuMzE1aC0xNC43MTZ6bS0zNy43MjMtNDkuMTgzYy00LjczNDIgMC04LjYzMTMgMy44OTctOC42MzEzIDguNjMxM3YxMTUuNDdjMCA0LjczNDIgMy44OTcgOC42MzEzIDguNjMxMyA4LjYzMTNoMTE1LjI2YzQuNzM0MiAwIDguNjQyMS0zLjg5NyA4LjY0MjEtOC42MzEzdi0xMTUuNDdjMC00LjczNDItMy45MDgyLTguNjMxMy04LjY0MjEtOC42MzEzem0wIDUuNzI0aDExNS4yNmMxLjY1OCAwIDIuOTA3IDEuMjQ5MSAyLjkwNyAyLjkwNzF2MTE1LjQ3YzAgMS42NTgtMS4yNDkxIDIuOTA3LTIuOTA3IDIuOTA3aC0xMTUuMjZjLTEuNjU4IDAtMi44OTU4LTEuMjQ5MS0yLjg5NTgtMi45MDd2LTExNS40N2MwLTEuNjU4IDEuMjM3OC0yLjkwNzEgMi44OTU4LTIuOTA3MXoiIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNzIxMTQiLz48L3N2Zz4=');}.icon-magic-wand{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00OCw2NGE4LDgsMCwwLDEsOC04SDcyVjQwYTgsOCwwLDAsMSwxNiwwVjU2aDE2YTgsOCwwLDAsMSwwLDE2SDg4Vjg4YTgsOCwwLDAsMS0xNiwwVjcySDU2QTgsOCwwLDAsMSw0OCw2NFpNMTg0LDE5MmgtOHYtOGE4LDgsMCwwLDAtMTYsMHY4aC04YTgsOCwwLDAsMCwwLDE2aDh2OGE4LDgsMCwwLDAsMTYsMHYtOGg4YTgsOCwwLDAsMCwwLTE2Wm01Ni00OEgyMjRWMTI4YTgsOCwwLDAsMC0xNiwwdjE2SDE5MmE4LDgsMCwwLDAsMCwxNmgxNnYxNmE4LDgsMCwwLDAsMTYsMFYxNjBoMTZhOCw4LDAsMCwwLDAtMTZaTTIxOS4zMSw4MCw4MCwyMTkuMzFhMTYsMTYsMCwwLDEtMjIuNjIsMEwzNi42OCwxOTguNjNhMTYsMTYsMCwwLDEsMC0yMi42M0wxNzYsMzYuNjlhMTYsMTYsMCwwLDEsMjIuNjMsMGwyMC42OCwyMC42OEExNiwxNiwwLDAsMSwyMTkuMzEsODBabS01NC42MywzMkwxNDQsOTEuMzFsLTk2LDk2TDY4LjY4LDIwOFpNMjA4LDY4LjY5LDE4Ny4zMSw0OGwtMzIsMzJMMTc2LDEwMC42OVoiLz48L3N2Zz4=');}.icon-sun-dim{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjAsNDBWMzJhOCw4LDAsMCwxLDE2LDB2OGE4LDgsMCwwLDEtMTYsMFptNzIsODhhNjQsNjQsMCwxLDEtNjQtNjRBNjQuMDcsNjQuMDcsMCwwLDEsMTkyLDEyOFptLTE2LDBhNDgsNDgsMCwxLDAtNDgsNDhBNDguMDUsNDguMDUsMCwwLDAsMTc2LDEyOFpNNTguMzQsNjkuNjZBOCw4LDAsMCwwLDY5LjY2LDU4LjM0bC04LThBOCw4LDAsMCwwLDUwLjM0LDYxLjY2Wm0wLDExNi42OC04LDhhOCw4LDAsMCwwLDExLjMyLDExLjMybDgtOGE4LDgsMCwwLDAtMTEuMzItMTEuMzJaTTE5Miw3MmE4LDgsMCwwLDAsNS42Ni0yLjM0bDgtOGE4LDgsMCwwLDAtMTEuMzItMTEuMzJsLTgsOEE4LDgsMCwwLDAsMTkyLDcyWm01LjY2LDExNC4zNGE4LDgsMCwwLDAtMTEuMzIsMTEuMzJsOCw4YTgsOCwwLDAsMCwxMS4zMi0xMS4zMlpNNDAsMTIwSDMyYTgsOCwwLDAsMCwwLDE2aDhhOCw4LDAsMCwwLDAtMTZabTg4LDg4YTgsOCwwLDAsMC04LDh2OGE4LDgsMCwwLDAsMTYsMHYtOEE4LDgsMCwwLDAsMTI4LDIwOFptOTYtODhoLThhOCw4LDAsMCwwLDAsMTZoOGE4LDgsMCwwLDAsMC0xNloiLz48L3N2Zz4=');}.icon-moon{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzMuNTQsMTQyLjIzYTgsOCwwLDAsMC04LTIsODguMDgsODguMDgsMCwwLDEtMTA5LjgtMTA5LjgsOCw4LDAsMCwwLTEwLTEwLDEwNC44NCwxMDQuODQsMCwwLDAtNTIuOTEsMzdBMTA0LDEwNCwwLDAsMCwxMzYsMjI0YTEwMy4wOSwxMDMuMDksMCwwLDAsNjIuNTItMjAuODgsMTA0Ljg0LDEwNC44NCwwLDAsMCwzNy01Mi45MUE4LDgsMCwwLDAsMjMzLjU0LDE0Mi4yM1pNMTg4LjksMTkwLjM0QTg4LDg4LDAsMCwxLDY1LjY2LDY3LjExYTg5LDg5LDAsMCwxLDMxLjQtMjZBMTA2LDEwNiwwLDAsMCw5Niw1NiwxMDQuMTEsMTA0LjExLDAsMCwwLDIwMCwxNjBhMTA2LDEwNiwwLDAsMCwxNC45Mi0xLjA2QTg5LDg5LDAsMCwxLDE4OC45LDE5MC4zNFoiLz48L3N2Zz4=');}.icon-house{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTkuMzEsMTA4LjY4bC04MC04MGExNiwxNiwwLDAsMC0yMi42MiwwbC04MCw4MEExNS44NywxNS44NywwLDAsMCwzMiwxMjB2OTZhOCw4LDAsMCwwLDgsOGg2NGE4LDgsMCwwLDAsOC04VjE2MGgzMnY1NmE4LDgsMCwwLDAsOCw4aDY0YTgsOCwwLDAsMCw4LThWMTIwQTE1Ljg3LDE1Ljg3LDAsMCwwLDIxOS4zMSwxMDguNjhaTTIwOCwyMDhIMTYwVjE1MmE4LDgsMCwwLDAtOC04SDEwNGE4LDgsMCwwLDAtOCw4djU2SDQ4VjEyMGw4MC04MCw4MCw4MFoiLz48L3N2Zz4=');}.icon-floppy-disk{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTkuMzEsNzIsMTg0LDM2LjY5QTE1Ljg2LDE1Ljg2LDAsMCwwLDE3Mi42OSwzMkg0OEExNiwxNiwwLDAsMCwzMiw0OFYyMDhhMTYsMTYsMCwwLDAsMTYsMTZIMjA4YTE2LDE2LDAsMCwwLDE2LTE2VjgzLjMxQTE1Ljg2LDE1Ljg2LDAsMCwwLDIxOS4zMSw3MlpNMTY4LDIwOEg4OFYxNTJoODBabTQwLDBIMTg0VjE1MmExNiwxNiwwLDAsMC0xNi0xNkg4OGExNiwxNiwwLDAsMC0xNiwxNnY1Nkg0OFY0OEgxNzIuNjlMMjA4LDgzLjMxWk0xNjAsNzJhOCw4LDAsMCwxLTgsOEg5NmE4LDgsMCwwLDEsMC0xNmg1NkE4LDgsMCwwLDEsMTYwLDcyWiIvPjwvc3ZnPg==');}.icon-clock{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjRBMTA0LDEwNCwwLDEsMCwyMzIsMTI4LDEwNC4xMSwxMDQuMTEsMCwwLDAsMTI4LDI0Wm0wLDE5MmE4OCw4OCwwLDEsMSw4OC04OEE4OC4xLDg4LjEsMCwwLDEsMTI4LDIxNlptNjQtODhhOCw4LDAsMCwxLTgsOEgxMjhhOCw4LDAsMCwxLTgtOFY3MmE4LDgsMCwwLDEsMTYsMHY0OGg0OEE4LDgsMCwwLDEsMTkyLDEyOFoiLz48L3N2Zz4=');}.icon-x-square{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzJINDhBMTYsMTYsMCwwLDAsMzIsNDhWMjA4YTE2LDE2LDAsMCwwLDE2LDE2SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY0OEExNiwxNiwwLDAsMCwyMDgsMzJabTAsMTc2SDQ4VjQ4SDIwOFYyMDhaTTE2NS42NiwxMDEuNjYsMTM5LjMxLDEyOGwyNi4zNSwyNi4zNGE4LDgsMCwwLDEtMTEuMzIsMTEuMzJMMTI4LDEzOS4zMWwtMjYuMzQsMjYuMzVhOCw4LDAsMCwxLTExLjMyLTExLjMyTDExNi42OSwxMjgsOTAuMzQsMTAxLjY2YTgsOCwwLDAsMSwxMS4zMi0xMS4zMkwxMjgsMTE2LjY5bDI2LjM0LTI2LjM1YTgsOCwwLDAsMSwxMS4zMiwxMS4zMloiLz48L3N2Zz4=');}.icon-eye-closed{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjgsMTc1YTgsOCwwLDAsMS0xMC45Mi0zbC0xOS0zMy4yQTEyMy4yMywxMjMuMjMsMCwwLDEsMTYyLDE1NS40Nmw1Ljg3LDM1LjIyYTgsOCwwLDAsMS02LjU4LDkuMjFBOC40LDguNCwwLDAsMSwxNjAsMjAwYTgsOCwwLDAsMS03Ljg4LTYuNjlsLTUuNzctMzQuNThhMTMzLjA2LDEzMy4wNiwwLDAsMS0zNi42OCwwbC01Ljc3LDM0LjU4QTgsOCwwLDAsMSw5NiwyMDBhOC40LDguNCwwLDAsMS0xLjMyLS4xMSw4LDgsMCwwLDEtNi41OC05LjIxTDk0LDE1NS40NmExMjMuMjMsMTIzLjIzLDAsMCwxLTM2LjA2LTE2LjY5TDM5LDE3MkE4LDgsMCwxLDEsMjUuMDYsMTY0bDIwLTM1YTE1My40NywxNTMuNDcsMCwwLDEtMTkuMy0yMEE4LDgsMCwxLDEsMzguMjIsOTljMTYuNiwyMC41NCw0NS42NCw0NSw4OS43OCw0NXM3My4xOC0yNC40OSw4OS43OC00NUE4LDgsMCwxLDEsMjMwLjIyLDEwOWExNTMuNDcsMTUzLjQ3LDAsMCwxLTE5LjMsMjBsMjAsMzVBOCw4LDAsMCwxLDIyOCwxNzVaIi8+PC9zdmc+');}.icon-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDUuNjYsMTk0LjM0YTgsOCwwLDAsMS0xMS4zMiwxMS4zMkwxMjgsMTM5LjMxLDYxLjY2LDIwNS42NmE4LDgsMCwwLDEtMTEuMzItMTEuMzJMMTE2LjY5LDEyOCw1MC4zNCw2MS42NkE4LDgsMCwwLDEsNjEuNjYsNTAuMzRMMTI4LDExNi42OWw2Ni4zNC02Ni4zNWE4LDgsMCwwLDEsMTEuMzIsMTEuMzJMMTM5LjMxLDEyOFoiLz48L3N2Zz4=');}.icon-drop-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNzQsNDcuNzVhMjU0LjE5LDI1NC4xOSwwLDAsMC00MS40NS0zOC4zLDgsOCwwLDAsMC05LjE4LDBBMjU0LjE5LDI1NC4xOSwwLDAsMCw4Miw0Ny43NUM1NC41MSw3OS4zMiw0MCwxMTIuNiw0MCwxNDRhODgsODgsMCwwLDAsMTc2LDBDMjE2LDExMi42LDIwMS40OSw3OS4zMiwxNzQsNDcuNzVaTTEyOCwyMTZhNzIuMDgsNzIuMDgsMCwwLDEtNzItNzJjMC01Ny4yMyw1NS40Ny0xMDUsNzItMTE4LDE2LjUzLDEzLDcyLDYwLjc1LDcyLDExOEE3Mi4wOCw3Mi4wOCwwLDAsMSwxMjgsMjE2WiIvPjwvc3ZnPg==');}.icon-x-circle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjUuNjYsMTAxLjY2LDEzOS4zMSwxMjhsMjYuMzUsMjYuMzRhOCw4LDAsMCwxLTExLjMyLDExLjMyTDEyOCwxMzkuMzFsLTI2LjM0LDI2LjM1YTgsOCwwLDAsMS0xMS4zMi0xMS4zMkwxMTYuNjksMTI4LDkwLjM0LDEwMS42NmE4LDgsMCwwLDEsMTEuMzItMTEuMzJMMTI4LDExNi42OWwyNi4zNC0yNi4zNWE4LDgsMCwwLDEsMTEuMzIsMTEuMzJaTTIzMiwxMjhBMTA0LDEwNCwwLDEsMSwxMjgsMjQsMTA0LjExLDEwNC4xMSwwLDAsMSwyMzIsMTI4Wm0tMTYsMGE4OCw4OCwwLDEsMC04OCw4OEE4OC4xLDg4LjEsMCwwLDAsMjE2LDEyOFoiLz48L3N2Zz4=');}.icon-magnifying-glass{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjkuNjYsMjE4LjM0bC01MC4wNy01MC4wNmE4OC4xMSw4OC4xMSwwLDEsMC0xMS4zMSwxMS4zMWw1MC4wNiw1MC4wN2E4LDgsMCwwLDAsMTEuMzItMTEuMzJaTTQwLDExMmE3Miw3MiwwLDEsMSw3Miw3MkE3Mi4wOCw3Mi4wOCwwLDAsMSw0MCwxMTJaIi8+PC9zdmc+');}.icon-plus-square{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzJINDhBMTYsMTYsMCwwLDAsMzIsNDhWMjA4YTE2LDE2LDAsMCwwLDE2LDE2SDIwOGExNiwxNiwwLDAsMCwxNi0xNlY0OEExNiwxNiwwLDAsMCwyMDgsMzJabTAsMTc2SDQ4VjQ4SDIwOFYyMDhabS0zMi04MGE4LDgsMCwwLDEtOCw4SDEzNnYzMmE4LDgsMCwwLDEtMTYsMFYxMzZIODhhOCw4LDAsMCwxLDAtMTZoMzJWODhhOCw4LDAsMCwxLDE2LDB2MzJoMzJBOCw4LDAsMCwxLDE3NiwxMjhaIi8+PC9zdmc+');}.icon-infinity{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDgsMTI4YTU2LDU2LDAsMCwxLTk1LjYsMzkuNmwtLjMzLS4zNUw5Mi4xMiw5OS41NWE0MCw0MCwwLDEsMCwwLDU2LjlsOC41Mi05LjYyYTgsOCwwLDEsMSwxMiwxMC42MWwtOC42OSw5LjgxLS4zMy4zNWE1Niw1NiwwLDEsMSwwLTc5LjJsLjMzLjM1LDU5Ljk1LDY3LjdhNDAsNDAsMCwxLDAsMC01Ni45bC04LjUyLDkuNjJhOCw4LDAsMSwxLTEyLTEwLjYxbDguNjktOS44MS4zMy0uMzVBNTYsNTYsMCwwLDEsMjQ4LDEyOFoiLz48L3N2Zz4=');}.icon-arrow-counter-clockwise{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsMTI4YTk2LDk2LDAsMCwxLTk0LjcxLDk2SDEyOEE5NS4zOCw5NS4zOCwwLDAsMSw2Mi4xLDE5Ny44YTgsOCwwLDAsMSwxMS0xMS42M0E4MCw4MCwwLDEsMCw3MS40Myw3MS4zOWEzLjA3LDMuMDcsMCwwLDEtLjI2LjI1TDQ0LjU5LDk2SDcyYTgsOCwwLDAsMSwwLDE2SDI0YTgsOCwwLDAsMS04LThWNTZhOCw4LDAsMCwxLDE2LDBWODUuOEw2MC4yNSw2MEE5Niw5NiwwLDAsMSwyMjQsMTI4WiIvPjwvc3ZnPg==');}.icon-facebook-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjRBMTA0LDEwNCwwLDEsMCwyMzIsMTI4LDEwNC4xMSwxMDQuMTEsMCwwLDAsMTI4LDI0Wm04LDE5MS42M1YxNTJoMjRhOCw4LDAsMCwwLDAtMTZIMTM2VjExMmExNiwxNiwwLDAsMSwxNi0xNmgxNmE4LDgsMCwwLDAsMC0xNkgxNTJhMzIsMzIsMCwwLDAtMzIsMzJ2MjRIOTZhOCw4LDAsMCwwLDAsMTZoMjR2NjMuNjNhODgsODgsMCwxLDEsMTYsMFoiLz48L3N2Zz4=');}.icon-instagram-logo{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsODBhNDgsNDgsMCwxLDAsNDgsNDhBNDguMDUsNDguMDUsMCwwLDAsMTI4LDgwWm0wLDgwYTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDEyOCwxNjBaTTE3NiwyNEg4MEE1Ni4wNiw1Ni4wNiwwLDAsMCwyNCw4MHY5NmE1Ni4wNiw1Ni4wNiwwLDAsMCw1Niw1Nmg5NmE1Ni4wNiw1Ni4wNiwwLDAsMCw1Ni01NlY4MEE1Ni4wNiw1Ni4wNiwwLDAsMCwxNzYsMjRabTQwLDE1MmE0MCw0MCwwLDAsMS00MCw0MEg4MGE0MCw0MCwwLDAsMS00MC00MFY4MEE0MCw0MCwwLDAsMSw4MCw0MGg5NmE0MCw0MCwwLDAsMSw0MCw0MFpNMTkyLDc2YTEyLDEyLDAsMSwxLTEyLTEyQTEyLDEyLDAsMCwxLDE5Miw3NloiLz48L3N2Zz4=');}.icon-list{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsMTI4YTgsOCwwLDAsMS04LDhINDBhOCw4LDAsMCwxLDAtMTZIMjE2QTgsOCwwLDAsMSwyMjQsMTI4Wk00MCw3MkgyMTZhOCw4LDAsMCwwLDAtMTZINDBhOCw4LDAsMCwwLDAsMTZaTTIxNiwxODRINDBhOCw4LDAsMCwwLDAsMTZIMjE2YTgsOCwwLDAsMCwwLTE2WiIvPjwvc3ZnPg==');}.icon-door{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzIsMjE2SDIwOFY0MGExNiwxNiwwLDAsMC0xNi0xNkg2NEExNiwxNiwwLDAsMCw0OCw0MFYyMTZIMjRhOCw4LDAsMCwwLDAsMTZIMjMyYTgsOCwwLDAsMCwwLTE2Wk02NCw0MEgxOTJWMjE2SDY0Wm0xMDQsOTJhMTIsMTIsMCwxLDEtMTItMTJBMTIsMTIsMCwwLDEsMTY4LDEzMloiLz48L3N2Zz4=');}.icon-bell{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjEuOCwxNzUuOTRDMjE2LjI1LDE2Ni4zOCwyMDgsMTM5LjMzLDIwOCwxMDRhODAsODAsMCwxLDAtMTYwLDBjMCwzNS4zNC04LjI2LDYyLjM4LTEzLjgxLDcxLjk0QTE2LDE2LDAsMCwwLDQ4LDIwMEg4OC44MWE0MCw0MCwwLDAsMCw3OC4zOCwwSDIwOGExNiwxNiwwLDAsMCwxMy44LTI0LjA2Wk0xMjgsMjE2YTI0LDI0LDAsMCwxLTIyLjYyLTE2aDQ1LjI0QTI0LDI0LDAsMCwxLDEyOCwyMTZaTTQ4LDE4NGM3LjctMTMuMjQsMTYtNDMuOTIsMTYtODBhNjQsNjQsMCwxLDEsMTI4LDBjMCwzNi4wNSw4LjI4LDY2LjczLDE2LDgwWiIvPjwvc3ZnPg==');}.icon-bell-ringing{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsNzEuMWE4LDgsMCwwLDEtMTAuNzgtMy40Miw5NC4xMyw5NC4xMywwLDAsMC0zMy40Ni0zNi45MSw4LDgsMCwxLDEsOC41NC0xMy41NCwxMTEuNDYsMTExLjQ2LDAsMCwxLDM5LjEyLDQzLjA5QTgsOCwwLDAsMSwyMjQsNzEuMVpNMzUuNzEsNzJhOCw4LDAsMCwwLDcuMS00LjMyQTk0LjEzLDk0LjEzLDAsMCwxLDc2LjI3LDMwLjc3YTgsOCwwLDEsMC04LjU0LTEzLjU0QTExMS40NiwxMTEuNDYsMCwwLDAsMjguNjEsNjAuMzIsOCw4LDAsMCwwLDM1LjcxLDcyWm0xODYuMSwxMDMuOTRBMTYsMTYsMCwwLDEsMjA4LDIwMEgxNjcuMmE0MCw0MCwwLDAsMS03OC40LDBINDhhMTYsMTYsMCwwLDEtMTMuNzktMjQuMDZDNDMuMjIsMTYwLjM5LDQ4LDEzOC4yOCw0OCwxMTJhODAsODAsMCwwLDEsMTYwLDBDMjA4LDEzOC4yNywyMTIuNzgsMTYwLjM4LDIyMS44MSwxNzUuOTRaTTE1MC42MiwyMDBIMTA1LjM4YTI0LDI0LDAsMCwwLDQ1LjI0LDBaTTIwOCwxODRjLTEwLjY0LTE4LjI3LTE2LTQyLjQ5LTE2LTcyYTY0LDY0LDAsMCwwLTEyOCwwYzAsMjkuNTItNS4zOCw1My43NC0xNiw3MloiLz48L3N2Zz4=');}.icon-check{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjkuNjYsNzcuNjZsLTEyOCwxMjhhOCw4LDAsMCwxLTExLjMyLDBsLTU2LTU2YTgsOCwwLDAsMSwxMS4zMi0xMS4zMkw5NiwxODguNjksMjE4LjM0LDY2LjM0YTgsOCwwLDAsMSwxMS4zMiwxMS4zMloiLz48L3N2Zz4=');}.icon-sign-out{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjAsMjE2YTgsOCwwLDAsMS04LDhINDhhOCw4LDAsMCwxLTgtOFY0MGE4LDgsMCwwLDEsOC04aDY0YTgsOCwwLDAsMSwwLDE2SDU2VjIwOGg1NkE4LDgsMCwwLDEsMTIwLDIxNlptMTA5LjY2LTkzLjY2LTQwLTQwYTgsOCwwLDAsMC0xMS4zMiwxMS4zMkwyMDQuNjksMTIwSDExMmE4LDgsMCwwLDAsMCwxNmg5Mi42OWwtMjYuMzUsMjYuMzRhOCw4LDAsMCwwLDExLjMyLDExLjMybDQwLTQwQTgsOCwwLDAsMCwyMjkuNjYsMTIyLjM0WiIvPjwvc3ZnPg==');}.icon-question{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNDAsMTgwYTEyLDEyLDAsMSwxLTEyLTEyQTEyLDEyLDAsMCwxLDE0MCwxODBaTTEyOCw3MmMtMjIuMDYsMC00MCwxNi4xNS00MCwzNnY0YTgsOCwwLDAsMCwxNiwwdi00YzAtMTEsMTAuNzctMjAsMjQtMjBzMjQsOSwyNCwyMC0xMC43NywyMC0yNCwyMGE4LDgsMCwwLDAtOCw4djhhOCw4LDAsMCwwLDE2LDB2LS43MmMxOC4yNC0zLjM1LDMyLTE3LjksMzItMzUuMjhDMTY4LDg4LjE1LDE1MC4wNiw3MiwxMjgsNzJabTEwNCw1NkExMDQsMTA0LDAsMSwxLDEyOCwyNCwxMDQuMTEsMTA0LjExLDAsMCwxLDIzMiwxMjhabS0xNiwwYTg4LDg4LDAsMSwwLTg4LDg4QTg4LjEsODguMSwwLDAsMCwyMTYsMTI4WiIvPjwvc3ZnPg==');}.icon-sign-in{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNDEuNjYsMTMzLjY2bC00MCw0MGE4LDgsMCwwLDEtMTEuMzItMTEuMzJMMTE2LjY5LDEzNkgyNGE4LDgsMCwwLDEsMC0xNmg5Mi42OUw5MC4zNCw5My42NmE4LDgsMCwwLDEsMTEuMzItMTEuMzJsNDAsNDBBOCw4LDAsMCwxLDE0MS42NiwxMzMuNjZaTTIwMCwzMkgxMzZhOCw4LDAsMCwwLDAsMTZoNTZWMjA4SDEzNmE4LDgsMCwwLDAsMCwxNmg2NGE4LDgsMCwwLDAsOC04VjQwQTgsOCwwLDAsMCwyMDAsMzJaIi8+PC9zdmc+');}.icon-star-half-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzkuMTgsOTcuMjZBMTYuMzgsMTYuMzgsMCwwLDAsMjI0LjkyLDg2bC01OS00Ljc2TDE0My4xNCwyNi4xNWExNi4zNiwxNi4zNiwwLDAsMC0zMC4yNywwTDkwLjExLDgxLjIzLDMxLjA4LDg2YTE2LjQ2LDE2LjQ2LDAsMCwwLTkuMzcsMjguODZsNDUsMzguODNMNTMsMjExLjc1YTE2LjQsMTYuNCwwLDAsMCwyNC41LDE3LjgyTDEyOCwxOTguNDlsNTAuNTMsMzEuMDhBMTYuNCwxNi40LDAsMCwwLDIwMywyMTEuNzVsLTEzLjc2LTU4LjA3LDQ1LTM4LjgzQTE2LjQzLDE2LjQzLDAsMCwwLDIzOS4xOCw5Ny4yNlptLTE1LjM0LDUuNDctNDguNyw0MmE4LDgsMCwwLDAtMi41Niw3LjkxbDE0Ljg4LDYyLjhhLjM3LjM3LDAsMCwxLS4xNy40OGMtLjE4LjE0LS4yMy4xMS0uMzgsMGwtNTQuNzItMzMuNjVBOCw4LDAsMCwwLDEyOCwxODEuMVYzMmMuMjQsMCwuMjcuMDguMzUuMjZMMTUzLDkxLjg2YTgsOCwwLDAsMCw2Ljc1LDQuOTJsNjMuOTEsNS4xNmMuMTYsMCwuMjUsMCwuMzQuMjlTMjI0LDEwMi42MywyMjMuODQsMTAyLjczWiIvPjwvc3ZnPg==');}.icon-star-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzQuMjksMTE0Ljg1bC00NSwzOC44M0wyMDMsMjExLjc1YTE2LjQsMTYuNCwwLDAsMS0yNC41LDE3LjgyTDEyOCwxOTguNDksNzcuNDcsMjI5LjU3QTE2LjQsMTYuNCwwLDAsMSw1MywyMTEuNzVsMTMuNzYtNTguMDctNDUtMzguODNBMTYuNDYsMTYuNDYsMCwwLDEsMzEuMDgsODZsNTktNC43NiwyMi43Ni01NS4wOGExNi4zNiwxNi4zNiwwLDAsMSwzMC4yNywwbDIyLjc1LDU1LjA4LDU5LDQuNzZhMTYuNDYsMTYuNDYsMCwwLDEsOS4zNywyOC44NloiLz48L3N2Zz4=');}
\ No newline at end of file
diff --git a/assets/icons/edmonton-ink-circle.svg b/assets/icons/edmonton-ink-circle.svg
new file mode 100644
index 0000000..93df127
--- /dev/null
+++ b/assets/icons/edmonton-ink-circle.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" clip-rule="evenodd" viewBox="0 0 32 32"><path fill="#f9f9f9" d="M17.172 20.58c-.23 1.104.255 2.338 1.07 2.936-1.107 1.022-2.01 1.487-3.735 1.579a5.2 5.2 0 0 1-2.217-.495c-1.577-.803-2.552-2.137-2.78-3.386-.215-1.174-.088-2.32.25-3.4 1.28 3.554 5.118 4.475 7.412 2.765"/><path fill="#f9f9f9" d="M15.71 18.102c.385.342.921.574 1.622.601.08.316.183.44.455.694a2.4 2.4 0 0 0-.294.378c-2.441 2.07-6.315 1.172-7.484-2.658.3-.745.4-1 .836-1.656.53 2.035 3.134 2.913 4.865 2.641"/><path fill="#f9f9f9" d="M15.542 14.754q-.192.277-.365.613c-.33.643-.311 1.53.11 2.227-1.687.214-3.59-.625-4.15-2.585.491-.738.67-1 1.205-1.586.389 1.455 2.375 2.08 3.2 1.33"/><path fill="#f9f9f9" d="M12.71 13.012a20 20 0 0 1 1.904-1.828c.197.157.394.313.627.524.527.477.778.732 1.274 1.344-.395 2.018-3.257 2.015-3.805-.04"/><path fill="#ff0080" d="M12.152 25.041c-2.1.608-5.686-1.766-6.11-2.623.948.813 2.124 1.386 3.705 1.528-1.851-.703-3.067-1.92-4.001-3.374-1.604-2.494-1.243-4.064-1.325-4.958a1.62 1.62 0 0 0-.424-.986c.08.055.395.034.63.636.478 1.224.237 2.924 2.472 4.493-.83-1.017-1.095-2.723-.932-4.17.6-2.242 1.138-3.876-.036-5.375.594.115.978.619 1.372 1.681.688 1.859-.657 4.097.437 5.848-.429-1.776-.173-3.835 1.325-6.881.396-.804 1.1-1.58 1.771-2.46.868-1.138 1.24-2.235 1.067-2.693.81.78.43 2.161-.465 3.552-.986 1.533-2.482 3.088-1.501 4.966.914-.526 1.407-4.603 5.842-6.055 2.523-.826 3.746 1.045 3.987 2.377.209 1.149-.763 2.303.418 3.044.943.592 2.378-.314 1.902-2.21-.377-1.5.194-2.613 1.367-2.968-1.997 2.328.899 2.594-.394 5.769-1.217 2.987-4.356.177-4.56 2.201-.095.953 2.06 1.325 3.204.72 1.288-.683.856-2.122 1.907-2.109-.845.59-.399 1.376-1.396 2.616-.69.858-3.159 1.692-2.498 3.294 1.218 1.708 2.984.349 4.192-1.698 1.338-2.268-.256-5.213 2.644-6.594-.746.608-.914 1.195-1.144 2.014-.212.755.233 2.613-.111 4.449-.506 2.697-2.266 5.272-5.626 4.734-1.996-.365-3.213-2.98-1.326-4.523-.536-.19-.888-.633-.737-1.026-2.158-.081-2.767-1.413-2.22-2.644.76-1.712 2.867-2.465 2.066-3.984-.462-.874-1.783-1.155-2.37-.444q-.363-.328-.671-.571C12.51 12.21 8.06 16.755 9.047 21.402c.284 1.341 1.44 2.864 3.105 3.64"/><path fill="none" stroke="#f9f9f9" stroke-width=".25" d="M7.272 27.978C3.35 25.358.765 20.89.765 15.823c0-8.062 6.547-14.609 14.61-14.609s14.61 6.547 14.61 14.61c0 5.066-2.586 9.534-6.507 12.154"/><path fill="#f9f9f9" d="M21.473 27.979a.2.2 0 0 0-.06.02l-.167.083q-.052.027-.064.064-.01.036.013.084l.668 1.313q.025.049.059.062.036.01.09-.017l.166-.084q.056-.028.066-.063t-.015-.084l-.196-.384q.015.01.026.011l.572.256a.1.1 0 0 0 .037.008.2.2 0 0 0 .045-.018l.277-.14q.02-.01.024-.026.004-.015-.004-.03a.06.06 0 0 0-.031-.03l-.665-.262.186-.648a.05.05 0 0 0-.002-.043.04.04 0 0 0-.025-.022.04.04 0 0 0-.034.004l-.275.14a.1.1 0 0 0-.041.03.07.07 0 0 0-.016.035l-.138.569-.008.027-.4-.79q-.026-.05-.06-.062a.1.1 0 0 0-.028-.003m-13.104.144a.5.5 0 0 0-.119.022q-.231.066-.377.35a.6.6 0 0 0-.076.347q.022.165.13.299a.9.9 0 0 0 .294.224q.142.075.265.106.125.03.243.017.033-.005.042-.021a.1.1 0 0 0 .006-.031l-.004-.153q0-.03-.015-.039a.1.1 0 0 0-.037-.006.7.7 0 0 1-.16-.011.7.7 0 0 1-.17-.067.48.48 0 0 1-.215-.191.25.25 0 0 1 .008-.23l.75.386q.084.044.13-.049.137-.264.063-.484-.072-.22-.356-.367a.8.8 0 0 0-.402-.102m.117.281q.08-.005.174.043.126.066.156.158.03.095-.027.206l-.508-.262a.25.25 0 0 1 .155-.137.2.2 0 0 1 .05-.008m1.97.086-.019.006q-.032.014-.054.067l-.164.41a.34.34 0 0 0-.104-.114.7.7 0 0 0-.168-.093.64.64 0 0 0-.332-.047.5.5 0 0 0-.275.127.7.7 0 0 0-.188.277q-.237.594.436.863.168.068.338.084a.9.9 0 0 0 .293-.013l.537-1.344q.02-.05.006-.086t-.069-.059l-.166-.066a.14.14 0 0 0-.072-.012m9.224.201a.2.2 0 0 0-.05.01l-.136.043a.15.15 0 0 0-.092.07.13.13 0 0 0-.01.104l.018.055a.13.13 0 0 0 .067.08.15.15 0 0 0 .117.006l.136-.043q.069-.021.094-.07a.14.14 0 0 0 .01-.106l-.018-.055a.13.13 0 0 0-.136-.094m1.326.026a.747.747 0 0 0-.412.18.5.5 0 0 0-.135.185l-.037-.078q-.012-.022-.03-.025a.1.1 0 0 0-.044.005l-.186.075q-.042.015-.05.035t.007.058l.371.944q.02.05.053.066.034.014.092-.01l.172-.066q.058-.022.072-.055.012-.035-.008-.086l-.234-.593a.17.17 0 0 1 .015-.16.28.28 0 0 1 .143-.12q.09-.035.144-.011.055.024.09.115l.242.611q.02.052.053.068.034.015.092-.01l.174-.068q.055-.022.07-.054.015-.036-.006-.086l-.25-.635q-.079-.203-.234-.26a.4.4 0 0 0-.164-.025m-11.207.32a.3.3 0 0 1 .127.025.27.27 0 0 1 .142.114q.043.07.004.164l-.17.422a.4.4 0 0 1-.199-.035q-.152-.06-.2-.165-.044-.106.026-.283a.4.4 0 0 1 .158-.21.23.23 0 0 1 .112-.032m.94.098-.01.004q-.019.01-.03.05l-.265.979q-.016.053.002.086.02.03.08.047l.148.04q.061.017.092-.001.03-.02.045-.072l.166-.614a.2.2 0 0 1 .088-.129.19.19 0 0 1 .15-.017q.067.017.086.066.024.048.002.13l-.176.65q-.015.053.002.085.02.031.08.047l.137.037q.058.016.088-.002.032-.019.047-.072l.168-.619a.2.2 0 0 1 .086-.125.18.18 0 0 1 .144-.018q.07.02.092.069.025.048 0 .138l-.174.641a.12.12 0 0 0 .004.086q.017.03.076.047l.152.041q.058.016.088-.002.034-.02.047-.072l.18-.664q.057-.212-.016-.342a.38.38 0 0 0-.248-.182.47.47 0 0 0-.414.067q-.04-.19-.25-.247a.48.48 0 0 0-.408.069l.014-.09q.005-.024-.006-.037t-.04-.022l-.177-.046a.1.1 0 0 0-.05-.006zm9.1.025a.2.2 0 0 0-.04.008l-.176.055q-.06.019-.074.052-.016.032.002.086l.29.932q.018.052.05.07.03.016.09-.002l.175-.054q.06-.02.075-.051.017-.034.002-.086l-.292-.932q-.015-.052-.05-.07-.02-.012-.051-.008m-4.1.295-.116.002q-.045.001-.06.016a.1.1 0 0 0-.038.045q-.042.08-.064.136a.3.3 0 0 0-.02.108l.002.097-.12.004q-.061.001-.08.028-.021.023-.018.08l.004.082q0 .056.021.078.02.02.08.02l.121-.003.014.475a.48.48 0 0 0 .125.338q.12.121.346.115a.7.7 0 0 0 .4-.117q.03-.02.03-.04-.002-.01-.014-.03l-.096-.155q-.016-.026-.04-.025a.1.1 0 0 0-.028.012.4.4 0 0 1-.077.043.2.2 0 0 1-.082.013q-.081.003-.117-.039-.036-.04-.039-.136l-.012-.465.246-.006q.06-.002.079-.026.018-.023.017-.08l-.002-.082q0-.056-.021-.078-.02-.024-.08-.023l-.246.007-.008-.292q-.001-.056-.028-.08-.023-.024-.08-.022zm2.866.012a.746.746 0 0 0-.348.111.5.5 0 0 0-.163.16l-.026-.084q-.007-.023-.023-.029a.1.1 0 0 0-.045-.002l-.195.041q-.044.01-.055.027-.013.017-.004.059l.207.992q.011.053.041.074t.092.006l.18-.037q.06-.012.08-.04.018-.033.008-.087l-.13-.625a.17.17 0 0 1 .042-.156.27.27 0 0 1 .16-.092q.094-.02.144.014.05.033.07.127l.135.644q.012.054.041.076.032.02.092.006l.182-.039q.059-.012.078-.04.02-.033.01-.087l-.139-.668q-.044-.213-.187-.295a.43.43 0 0 0-.246-.056m-5.644.17a.63.63 0 0 0-.342.103.6.6 0 0 0-.25.43.6.6 0 0 0 .11.486q.155.194.482.244.33.051.533-.088a.6.6 0 0 0 .252-.431.6.6 0 0 0-.111-.485q-.152-.196-.48-.248a1 1 0 0 0-.194-.011m4.066.092-.08.005q-.328.036-.492.227a.6.6 0 0 0-.13.479q.03.29.23.44t.529.114q.33-.036.492-.222a.6.6 0 0 0 .133-.483.6.6 0 0 0-.232-.44.68.68 0 0 0-.45-.12m-3.045.074q-.028 0-.04.011-.016.015-.018.057l-.057 1.012q-.003.054.02.082.025.026.088.03l.183.01q.062.003.088-.02a.12.12 0 0 0 .031-.08l.036-.637a.17.17 0 0 1 .08-.141.27.27 0 0 1 .177-.047q.097.006.137.05t.035.141l-.037.659q-.003.054.02.082.026.026.087.029l.188.012q.06.002.086-.022.03-.025.031-.08l.037-.681q.012-.219-.105-.334a.46.46 0 0 0-.319-.13.7.7 0 0 0-.267.03.5.5 0 0 0-.2.113l-.003-.088q-.001-.024-.016-.035-.014-.01-.043-.012l-.199-.011zm-.939.136q.03-.001.064.004.14.022.202.118.06.095.035.26-.025.166-.112.238-.086.072-.226.05a.27.27 0 0 1-.2-.117q-.06-.097-.035-.262.026-.165.114-.236a.25.25 0 0 1 .158-.055m3.97.09a.26.26 0 0 1 .19.063q.084.075.102.24.018.168-.047.26-.066.092-.207.107-.138.015-.22-.06-.085-.08-.102-.244-.018-.165.046-.256.065-.093.204-.108zm2.481.162q-.012.002-.023.006l-.051.014a.11.11 0 0 0-.074.059.12.12 0 0 0-.008.093l.014.05q.014.05.054.077a.12.12 0 0 0 .094.01l.049-.014a.11.11 0 0 0 .072-.056.12.12 0 0 0 .01-.094l-.012-.049a.12.12 0 0 0-.058-.076.1.1 0 0 0-.067-.02"/></svg>
\ No newline at end of file
diff --git a/assets/icons/edmonton-ink-logo.svg b/assets/icons/edmonton-ink-logo.svg
new file mode 100644
index 0000000..de98d15
--- /dev/null
+++ b/assets/icons/edmonton-ink-logo.svg
@@ -0,0 +1,5 @@
+<svg class="logo" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 32 32">
+<path fill="#f9f9f9" d="M18.37 22.798c-.305 1.456.336 3.082 1.41 3.87-1.46 1.349-2.65 1.961-4.925 2.083a6.9 6.9 0 0 1-2.921-.653c-2.08-1.06-3.365-2.817-3.667-4.464-.283-1.547-.115-3.058.33-4.482 1.688 4.685 6.748 5.9 9.773 3.646"/>
+<path fill="#f9f9f9" d="M16.441 19.532c.508.45 1.216.755 2.139.792.106.416.241.58.6.915q-.223.236-.387.498c-3.219 2.729-8.326 1.545-9.867-3.504.396-.983.527-1.32 1.102-2.184.698 2.683 4.131 3.84 6.413 3.483"/>
+<path fill="#f9f9f9" d="M16.22 15.117a7 7 0 0 0-.48.808c-.435.849-.411 2.017.144 2.937-2.224.281-4.732-.825-5.47-3.409.646-.973.883-1.317 1.588-2.09.512 1.918 3.13 2.743 4.218 1.754"/>
+<path fill="#f9f9f9" d="M12.487 12.821a27 27 0 0 1 2.51-2.41c.26.207.519.413.826.69.696.629 1.026.966 1.68 1.772-.52 2.66-4.293 2.657-5.016-.052"/><path fill="#ff0080" id="flame" d="M11.75 28.68c-2.767.801-7.495-2.329-8.054-3.459 1.25 1.072 2.8 1.828 4.884 2.014-2.44-.926-4.043-2.532-5.275-4.447C1.19 19.5 1.667 17.43 1.56 16.251c-.05-.55-.255-.973-.559-1.3.106.072.52.046.83.84.63 1.612.313 3.854 3.26 5.922-1.095-1.341-1.444-3.59-1.23-5.498.792-2.955 1.501-5.11-.047-7.086.783.152 1.29.816 1.809 2.217.907 2.45-.867 5.4.576 7.71-.565-2.343-.228-5.057 1.747-9.073.522-1.06 1.45-2.082 2.335-3.243 1.144-1.5 1.635-2.946 1.407-3.55 1.067 1.028.566 2.85-.614 4.683-1.3 2.02-3.271 4.071-1.979 6.547 1.205-.694 1.856-6.068 7.703-7.983 3.325-1.09 4.938 1.378 5.256 3.133.275 1.516-1.006 3.037.551 4.015 1.244.78 3.136-.415 2.507-2.915-.497-1.978.257-3.445 1.803-3.912-2.632 3.068 1.185 3.42-.52 7.605-1.603 3.938-5.743.234-6.01 2.902-.126 1.256 2.715 1.747 4.223.948 1.697-.9 1.128-2.797 2.513-2.779-1.113.778-.525 1.814-1.84 3.449-.91 1.13-4.164 2.23-3.293 4.343 1.605 2.251 3.934.46 5.526-2.24 1.765-2.99-.337-6.872 3.487-8.693-.984.801-1.205 1.575-1.509 2.656-.279.995.308 3.444-.146 5.864-.667 3.557-2.987 6.95-7.417 6.243-2.632-.482-4.236-3.93-1.749-5.964-.706-.25-1.17-.834-.971-1.352-2.845-.107-3.648-1.863-2.927-3.486 1.002-2.257 3.78-3.25 2.723-5.252-.608-1.153-2.35-1.523-3.124-.586-.317-.287-.616-.54-.885-.753-2.772 2.102-8.637 8.093-7.338 14.22.375 1.767 1.9 3.775 4.093 4.797"/></svg>
\ No newline at end of file
diff --git a/blocks/_setup.php b/blocks/_setup.php
index 8076e42..710312d 100644
--- a/blocks/_setup.php
+++ b/blocks/_setup.php
@@ -10,27 +10,10 @@
}
$cache = (class_exists('JVBase\managers\Cache')) ? JVBase\managers\Cache::for('full-icons') : false;
- if (array_key_exists('className', $block['attrs'])) {
- $logo = false;
- if (str_contains($block['attrs']['className'], 'is-proper')) {
- $logo = '<img class="logo" src="'.AEI_URL.'/assets/tatty-soap-rose-header.webp">';
- }
- if ($logo) {
- return $open.$logo.$close;
- }
- }
+ $logo = $cache->remember('logo',
+ function() {
+ return file_get_contents(AEI_DIR .'/assets/icons/edmonton-ink-logo.svg');
+ });
- return JVB()->blocks()->render_core_site_logo($block, $content);
+ return $open.$logo.$close;
}
-
-function aei_render_core_template_part(array $block, string $content): string
-{
- if (!array_key_exists('attrs', $block) || !array_key_exists('slug', $block['attrs']) || !in_array($block['attrs']['slug'], ['header', 'footer'])){
- return JVB()->blocks()->render_core_template_part($block, $content);
- }
- $content = JVB()->blocks()->render_core_template_part($block, $content);
- $icon = file_get_contents(AEI_DIR .'/assets/icons/background.svg');
- $search = str_contains($content, '<header>') ? '</header>' : '</footer>';
- return str_replace($search, $icon.$search, $content);
-
-}
\ No newline at end of file
diff --git a/content/_setup.php b/content/_setup.php
index a3def0a..38d49d8 100644
--- a/content/_setup.php
+++ b/content/_setup.php
@@ -29,7 +29,11 @@
*/
-require(AEI_DIR . '/content/soap.php');
+require(AEI_DIR . '/content/tattoos.php');
+require(AEI_DIR . '/content/piercings.php');
+require(AEI_DIR . '/content/artwork.php');
+require(AEI_DIR . '/content/offers.php');
+require(AEI_DIR . '/content/events.php');
//add_filter('jvb_content', 'aei_content');
//function aei_content($content):array
diff --git a/content/artwork.php b/content/artwork.php
new file mode 100644
index 0000000..cb0e798
--- /dev/null
+++ b/content/artwork.php
@@ -0,0 +1,125 @@
+<?php
+// /content/artwork.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_artwork');
+add_action('jvbDefineRegistrarFields', 'aei_artwork_fields');
+
+add_action('plugins_loaded', 'aei_artwork',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_artwork_fields', 4);
+
+add_filter('aei_ArtworkSchemaDefault', 'aei_artwork_schema');
+add_filter('aei_ArtworkMetaDefault', 'aei_artwork_meta');
+add_filter('aei_ArtworkArchiveDefault', 'aei_artwork_archive');
+
+function aei_artwork(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $artwork = Registrar::forPost('artwork', 'Artwork', 'Artwork')
+ ->setIcon('artwork')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'artworks',
+ 'with_front' => false,
+ ],
+ 'taxonomies' => [
+ 'city',
+ 'art_form',
+ 'art_style',
+ 'art_theme',
+ ],
+ ])
+ ->setAll([
+ 'show_directory',
+ 'hide_single',
+ 'redirect_to_author',
+ 'favouritable',
+ 'karma',
+ 'show_feed'
+ ])
+ ->setIntegration('facebook')
+ ->setIntegration('instagram');
+
+//$directory = $artwork->getConfig('directory');
+
+}
+
+function aei_artwork_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $artwork = Registrar::getInstance('artwork');
+// $breadcrumbs = $artwork->config('breadcrumbs');
+// $breadcrumbs->setCrumb('section');
+
+
+ $fields = $artwork->fields();
+ $fields->modifyField('post_thumbnail', 'label', 'Main Image');
+ $fields->modifyField('post_content', 'label', 'Notes (optional)');
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'label' => 'Additional Images',
+ ]);
+ $fields->addField('art_form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'art_form',
+ 'label' => 'Art Form',
+ ]);
+ $fields->addField('art_style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'art_style',
+ 'label' => 'Art Style',
+ ]);
+ $fields->addField('art_theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'art_theme',
+ 'label' => 'Theme(s)',
+ 'hint' => 'The subject matter, concept, or idea(s) behind the artwork.',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+
+}
+
+function aei_artwork_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\VisualArtwork',
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Artwork Artist',
+ ];
+}
+
+function aei_artwork_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Artwork Artist',
+ 'description' => '{{style}} {{colour}} {{theme}} artwork in {{post_author.city}}.',
+ ];
+}
+
+function aei_artwork_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Edmonton\'s Best Artwork',
+ 'description' => 'Artwork in Edmonton, Alberta.'
+ ]);
+}
+
+function aei_artwork_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
diff --git a/content/events.php b/content/events.php
new file mode 100644
index 0000000..7db3656
--- /dev/null
+++ b/content/events.php
@@ -0,0 +1,137 @@
+<?php
+// /content/event.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_event');
+add_action('jvbDefineRegistrarFields', 'aei_event_fields');
+
+add_action('plugins_loaded', 'aei_event',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_event_fields', 4);
+
+add_filter('aei_EventSchemaDefault', 'aei_event_schema');
+add_filter('aei_EventMetaDefault', 'aei_event_meta');
+add_filter('aei_EventArchiveDefault', 'aei_event_archive');
+
+function aei_event(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $event = Registrar::forPost('event', 'Event', 'Events')
+ ->setIcon('event')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'events',
+ 'with_front' => false,
+ ],
+ 'taxonomies' => [
+ 'shop',
+ 'city',
+ 'event_type'
+ ],
+ ])
+ ->setAll([
+ 'show_directory',
+ 'favouritable',
+ 'karma',
+ 'show_feed',
+ 'is_calendar'
+ ])
+ ->setIntegration('facebook')
+ ->setIntegration('instagram');
+
+//$directory = $event->getConfig('directory');
+
+}
+
+function aei_event_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $event = Registrar::getInstance('event');
+// $breadcrumbs = $event->config('breadcrumbs');
+// $breadcrumbs->setCrumb('section');
+
+
+ $fields = $event->fields();
+ $fields->modifyField('post_thumbnail', 'label', 'Event Poster');
+ $fields->modifyField('post_content', 'label', 'About the Event');
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'label' => 'Additional Images',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+ $fields->addField('shop', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'shop',
+ 'label' => 'Tattoo Shop',
+ ]);
+ $fields->addField('event_type', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'event_type',
+ 'label' => 'Type of Event',
+ ]);
+ $fields->addField('url', [
+ 'type' => 'text',
+ 'subtype' => 'url',
+ 'label' => 'URL for More Information',
+ ]);
+ $fields->addField('purchase_url', [
+ 'type' => 'text',
+ 'subtype' => 'url',
+ 'label' => 'Purchase link',
+ ]);
+ $fields->addField('cost', [
+ 'type' => 'text',
+ 'subtype' => 'number',
+ 'label' => 'Cost (leave blank for free)'
+ ]);
+ $fields->addField('max_attendees', [
+ 'type' => 'text',
+ 'subtype' => 'number',
+ 'label' => 'Maximum Attendees'
+ ]);
+
+
+}
+
+function aei_event_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Event',
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Event Artist',
+ ];
+}
+
+function aei_event_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Event Artist',
+ 'description' => '{{style}} {{colour}} {{theme}} event in {{post_author.city}}.',
+ ];
+}
+
+function aei_event_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Edmonton\'s Best Events',
+ 'description' => 'Events in Edmonton, Alberta.'
+ ]);
+}
+
+function aei_event_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
diff --git a/content/offers.php b/content/offers.php
new file mode 100644
index 0000000..c027bb4
--- /dev/null
+++ b/content/offers.php
@@ -0,0 +1,114 @@
+<?php
+// /content/offer.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_offer');
+add_action('jvbDefineRegistrarFields', 'aei_offer_fields');
+
+add_action('plugins_loaded', 'aei_offer',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_offer_fields', 4);
+
+add_filter('aei_OfferSchemaDefault', 'aei_offer_schema');
+add_filter('aei_OfferMetaDefault', 'aei_offer_meta');
+add_filter('aei_OfferArchiveDefault', 'aei_offer_archive');
+
+function aei_offer(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $offer = Registrar::forPost('offer', 'Offer', 'Offers')
+ ->setIcon('offer')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'offers',
+ 'with_front' => false,
+ ],
+ 'taxonomies' => [
+ 'city',
+ 'offer_for',
+ ],
+ ])
+ ->setAll([
+ 'show_directory',
+ 'hide_single',
+ 'redirect_to_author',
+ 'favouritable',
+ 'karma',
+ 'show_feed'
+ ])
+ ->setIntegration('facebook')
+ ->setIntegration('instagram');
+
+//$directory = $offer->getConfig('directory');
+
+}
+
+function aei_offer_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $offer = Registrar::getInstance('offer');
+// $breadcrumbs = $offer->config('breadcrumbs');
+// $breadcrumbs->setCrumb('section');
+
+
+ $fields = $offer->fields();
+ $fields->modifyField('post_thumbnail', 'label', 'Main Image');
+ $fields->modifyField('post_content', 'label', 'Notes (optional)');
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'label' => 'Additional Images',
+ ]);
+ $fields->addField('referral_code', [
+ 'type' => 'text',
+ 'label' => 'Referral Code',
+ 'hint' => 'Some sort of tracking code to gauge how well it\'s working'
+ ]);
+ $fields->addField('url', [
+ 'type' => 'url',
+ 'label' => 'Target URL',
+ 'hint' => 'Where you want folks to be directed to.'
+ ]);
+ $fields->addField('offer_for', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'offer_for',
+ 'label' => 'Offer for',
+ ]);
+
+}
+
+function aei_offer_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Intangible\Offer',
+ 'name' => '{{post_title}} | by our supporter {{post_author.name}}',
+ ];
+}
+
+function aei_offer_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Offer Artist',
+ 'description' => '{{style}} {{colour}} {{theme}} offer in {{post_author.city}}.',
+ ];
+}
+
+function aei_offer_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Edmonton\'s Best Offers',
+ 'description' => 'Offers in Edmonton, Alberta.'
+ ]);
+}
+
+function aei_offer_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
diff --git a/content/piercings.php b/content/piercings.php
new file mode 100644
index 0000000..87c5039
--- /dev/null
+++ b/content/piercings.php
@@ -0,0 +1,110 @@
+<?php
+// /content/piercing.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_piercing');
+add_action('jvbDefineRegistrarFields', 'aei_piercing_fields');
+
+add_action('plugins_loaded', 'aei_piercing',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_piercing_fields', 4);
+
+add_filter('aei_PiercingSchemaDefault', 'aei_piercing_schema');
+add_filter('aei_PiercingMetaDefault', 'aei_piercing_meta');
+add_filter('aei_PiercingArchiveDefault', 'aei_piercing_archive');
+
+function aei_piercing(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $piercing = Registrar::forPost('piercing', 'Piercing', 'Piercings')
+ ->setIcon('piercing')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'piercings',
+ 'with_front' => false,
+ ],
+ 'taxonomies' => [
+ 'city',
+ 'piercing_placement',
+ 'piercing_style',
+ ],
+ ])
+ ->setAll([
+ 'show_directory',
+ 'hide_single',
+ 'redirect_to_author',
+ 'favouritable',
+ 'karma',
+ 'show_feed'
+ ])
+ ->setIntegration('facebook')
+ ->setIntegration('instagram');
+
+//$directory = $piercing->getConfig('directory');
+
+}
+
+function aei_piercing_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $piercing = Registrar::getInstance('piercing');
+// $breadcrumbs = $piercing->config('breadcrumbs');
+// $breadcrumbs->setCrumb('section');
+
+
+ $fields = $piercing->fields();
+ $fields->modifyField('post_thumbnail', 'label', 'Main Image');
+ $fields->modifyField('post_content', 'label', 'Notes (optional)');
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'label' => 'Additional Images',
+ ]);
+ $fields->addField('piercing_placement', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'piercing_placement',
+ 'label' => 'Placement',
+ ]);
+ $fields->addField('piercing_style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'piercing_style',
+ 'label' => 'Piercing Style',
+ ]);
+}
+
+function aei_piercing_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\VisualArtwork',
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Piercer',
+ ];
+}
+
+function aei_piercing_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Piercer',
+ 'description' => '{{style}} {{colour}} {{theme}} piercing in {{post_author.city}}.',
+ ];
+}
+
+function aei_piercing_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Edmonton\'s Best Piercings',
+ 'description' => 'Piercings in Edmonton, Alberta.'
+ ]);
+}
+
+function aei_piercing_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
diff --git a/content/soap.php b/content/soap.php
deleted file mode 100644
index f066394..0000000
--- a/content/soap.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-// /content/soap.php
-
-use JVBase\registrar\Registrar;
-if (!defined('ABSPATH')) {
- exit;
-}
-
-add_action('jvbDefineRegistrar', 'aei_soap');
-add_action('jvbDefineRegistrarFields', 'aei_soap_fields');
-
-add_action('plugins_loaded', 'aei_soap',3);
-//Add fields later so we can verify taxonomies/post types exist
-add_action('plugins_loaded', 'aei_soap_fields', 4);
-
-add_filter('aei_SoapSchemaDefault', 'aei_soap_schema');
-add_filter('aei_SoapMetaDefault', 'aei_soap_meta');
-add_filter('aei_SoapArchiveDefault', 'aei_soap_archive');
-
-function aei_soap(){
- if (!class_exists('JVBase\registrar\Registrar')) {
- return;
- }
- $soap = Registrar::forPost('soap', 'Soap', 'Soaps')
- ->setIcon('sparkle')
- ->make([
- 'rewrite' => [
- 'slug' => 'soap',
- 'with_front' => false,
- ],
- 'taxonomies' => [
- 'flag',
- ],
- 'public' => false,
- ])
- ->setAll([
- 'show_directory',
- ])
- ->setIntegration('helcim')
- ->setIntegration('facebook')
- ->setIntegration('instagram');
-
-//$directory = $soap->getConfig('directory');
-
-}
-
-function aei_soap_fields():void
-{
- if (!class_exists('JVBase\registrar\Registrar')) {
- return;
- }
- $soap = Registrar::getInstance('soap');
-// $breadcrumbs = $soap->config('breadcrumbs');
-// $breadcrumbs->setCrumb('section');
-
-
- $fields = $soap->fields();
- $fields->addField('ingredients', [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'Ingredients',
- ]);
- $fields->addField('extra_info', [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'Extra Info',
- ]);
- $fields->addField('flag', [
- 'type' => 'selector',
- 'subtype' => 'taxonomy',
- 'taxonomy' => 'flag',
- 'label' => 'Flags',
- ]);
-}
-
-function aei_soap_schema():array
-{
- return [
- 'type' => 'JVBase\managers\SEO\render\Thing\Product\Product',
- 'name' => '{{post_title}} | Handmade in Edmonton',
- ];
-}
-
-function aei_soap_meta():array
-{
- return[
- 'name' => '{{post_title}} | Handmade in Edmonton',
- ];
-}
-
-function aei_soap_archive(array $defaults):array
-{
- return array_merge($defaults, [
- 'name' => 'Handmade Soaps',
- 'description' => 'Handmade Soaps in Edmonton, Alberta.'
- ]);
-}
-
-function aei_soap_reference_schema(array $defaults):array
-{
- return $defaults;
-}
-// /content/soap.php
-//function aei_soap():array
-//{
-// return [
-// 'singular' => 'Soap',
-// 'plural' => 'Soaps',
-// 'dash_title' => 'Soap',
-// 'dash_description' => 'Manage your soap',
-// 'breadcrumb' => 'Soap',
-// 'icon' => 'sparkle',
-// 'integrations' => [
-// 'helcim' => [
-// 'initial' => true,
-// 'update' => true,
-// ],
-// ],
-// 'rewrite' => [
-// 'slug' => 'soap',
-// 'with_front' => false,
-// ],
-// 'fields' => [
-// 'post_title' => [
-// 'type' => 'text',
-// 'label' => 'Name',
-// ],
-// 'post_status' => [
-// 'type' => 'radio',
-// 'label' => 'Status',
-// 'hidden' => true,
-// 'options' => [
-// 'publish' => 'Show',
-// 'draft' => 'Hide',
-// 'trash' => 'Scrap',
-// 'delete' => 'Permanently Delete'
-// ]
-// ],
-// 'post_slug' => [
-// 'type' => 'text',
-// 'label' => 'Slug',
-// 'hidden' => true,
-// ],
-// 'post_content' => [
-// 'type' => 'textarea',
-// 'label' => 'Description',
-// 'quill' => true,
-// ],
-// 'ingredients' => [
-// 'type' => 'textarea',
-// 'label' => 'Ingredients',
-// 'quill' => true,
-// ],
-// 'extra_info' => [
-// 'type' => 'textarea',
-// 'label' => 'Extra Info',
-// 'quill' => true,
-// ],
-// 'flags' => [
-// 'type' => 'taxonomy',
-// 'taxonomy' => 'flags',
-// 'term' => 'flags',
-// 'label' => 'Flags',
-// ]
-// ],
-// 'single_image' => true,
-// 'upload_title' => 'Upload Soaps',
-// ];
-//}
-
diff --git a/content/tattoos.php b/content/tattoos.php
new file mode 100644
index 0000000..ad06c57
--- /dev/null
+++ b/content/tattoos.php
@@ -0,0 +1,126 @@
+<?php
+// /content/tattoo.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_tattoo');
+add_action('jvbDefineRegistrarFields', 'aei_tattoo_fields');
+
+add_action('plugins_loaded', 'aei_tattoo',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_tattoo_fields', 4);
+
+add_filter('aei_TattooSchemaDefault', 'aei_tattoo_schema');
+add_filter('aei_TattooMetaDefault', 'aei_tattoo_meta');
+add_filter('aei_TattooArchiveDefault', 'aei_tattoo_archive');
+
+function aei_tattoo(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $tattoo = Registrar::forPost('tattoo', 'Tattoo', 'Tattoos')
+ ->setIcon('tattoo')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'tattoos',
+ 'with_front' => false,
+ ],
+ 'taxonomies' => [
+ 'city',
+ 'colour',
+ 'placement',
+ 'style',
+ 'theme'
+ ],
+ ])
+ ->setAll([
+ 'show_directory',
+ 'hide_single',
+ 'redirect_to_author',
+ 'favouritable',
+ 'karma',
+ 'show_feed'
+ ])
+ ->setIntegration('facebook')
+ ->setIntegration('instagram');
+
+//$directory = $tattoo->getConfig('directory');
+
+}
+
+function aei_tattoo_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $tattoo = Registrar::getInstance('tattoo');
+// $breadcrumbs = $tattoo->config('breadcrumbs');
+// $breadcrumbs->setCrumb('section');
+
+
+ $fields = $tattoo->fields();
+ $fields->modifyField('post_thumbnail', 'label', 'Main Image');
+ $fields->modifyField('post_content', 'label', 'Notes (optional)');
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'label' => 'Additional Images',
+ ]);
+ $fields->addField('colour', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'colour',
+ 'label' => 'Colour(s)',
+ ]);
+ $fields->addField('placement', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'placement',
+ 'label' => 'Placement',
+ ]);
+ $fields->addField('style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'label' => 'Tattoo Style',
+ ]);
+ $fields->addField('theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'label' => 'Tattoo Theme(s)',
+ 'hint' => 'The subject matter, concept, or idea(s) behind the tattoo.',
+ ]);
+
+}
+
+function aei_tattoo_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\VisualArtwork',
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Tattoo Artist',
+ ];
+}
+
+function aei_tattoo_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | by {{post_author.name}} {{post_author.city}} Tattoo Artist',
+ 'description' => '{{style}} {{colour}} {{theme}} tattoo in {{post_author.city}}.',
+ ];
+}
+
+function aei_tattoo_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Edmonton\'s Best Tattoos',
+ 'description' => 'Tattoos in Edmonton, Alberta.'
+ ]);
+}
+
+function aei_tattoo_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
diff --git a/edmontonink.php b/edmontonink.php
index d2d8702..6983b8d 100644
--- a/edmontonink.php
+++ b/edmontonink.php
@@ -47,8 +47,15 @@
return;
}
$site = Site::getInstance();
- $site->set('icons', 'light');
+ $site->set('icons', 'regular');
$site->setAll([
+ 'is_directory',
+ 'membership',
+ 'dashboard',
+ 'magic_link',
+ 'feed_block',
+ 'favourites',
+ 'help_menu'
// 'has_map',
// 'referrals',
]);
@@ -56,100 +63,46 @@
'cloudflare',
'facebook',
'gmb',
+ 'maps',
'helcim',
'postmark',
'instagram',
'umami'
]);
+
+ $login = $site->login();
+
}
-/**
- * Defines base options like:
- * - directory & Membership
- * - dashboard
- * - membership settings (JVB_MEMBERSHIP)
- * - post types (JVB_CONTENT)
- * - taxonomies (JVB_TAXONOMY)
- * - User Roles (JVB_USER)
- * - enthusiast = (bool) short form for a subscriber-like user that can collect content for reference
- * - forum = (bool) create a forum
- * - member_only = (bool) if forum and this is true, creates a member-only forum in the custom dashboard
- *
- * as well as central filters for
- * - rewrite rules
- * - archive title
- */
-add_filter('jvb_site', 'aei_setup_site');
-function aei_setup_site():array
+
+add_action('plugins_loaded', 'aei_membership_settings', 10);
+function aei_membership_settings():void
{
- return [
- 'icons' => 'light',
- 'is_directory' => false, //as in, a membership directory
- 'has_membership' => false,
- 'has_map' => true,
- 'dashboard' => true,
- 'referrals' => true,
- 'magicLink' => true,
- 'support' => false,
- 'feed_block' => false,
- 'email_notifications' => false,
- 'integrations' => [
- 'bluesky' => false,
- 'cloudflare' => true,
- 'facebook' => true,
- 'maps' => true,
- 'gmb' => true,
- 'helcim' => true,
- 'postmark' => true,
- 'instagram' => true,
- 'square' => false,
- 'umami' => true,
- ],
- 'is_restaurant' => false,
- 'limit_hours' => false,
- 'enthusiast' => false,
- 'favourites' => false, //optional flag to allow enthusiasts, but not favourites
- ];
+ if (!class_exists('JVBase\base\Site')) {
+ return;
+ }
+ $site = Site::getInstance();
+ $membership = $site->membership();
+ $membership->setAll([
+ 'invitable',
+ 'term_approval',
+ 'member_verified'
+ ]);
+
+ $membership->setInvitable([
+ 'artist' => ['artist', 'enthusiast'],
+ 'enthusiast' => ['enthusiast']
+ ]);
+
+ $membership->setApprovers(['artist']);
+ $membership->setCanSeeForum(['artist']);
}
-/**
- * JVB_MEMBERSHIP defines the structure of the directory
- * Options include:
- * - membership_expires = useful if members pay a yearly membership fee
- * - hide_expired = removes users once membership expired; only used if membership_expires is true
- * - clip_expired = keeps users once membership expires, but limits the information shown; only used if membership_expires is true
- * - membership_approval = verified users can approve other users
- * - term_approval = (bool) verified users can create new terms, but needs approval
- * - member_only = (array) if empty, open to any registered user. otherwise an array of registered user roles
- */
-//add_filter('jvb_membership', 'aei_setup_membership');
-//function aei_setup_membership():array
-//{
-// return [
-// 'member_content' => true,
-// 'can_invite' => ['artist' => ['artist']],
-// 'member_verified' => true,
-// 'notifications' => true,
-// 'forum' => true,
-// 'member_only' => [ 'artist' ],
-// 'member_expires' => false,
-// 'hide_expired' => false,
-// 'clip_expired' => false,
-// 'term_approval' => true,
-// 'can_approve' => [ 'artist' ]
-// ];
-//}
-//
-//add_filter('jvbLoadingQuips', 'aei_loading_quips');
-//function aei_loading_quips(array $quips):array
-//{
-// return [];
-//}
-add_filter('jvbBelowHeader', 'aei_header');
-function aei_header(string $header):string
-{
- return '<p>FREE LOCAL PICKUP at <a href="https://legacytattooremoval.ca/">Legacy Tattoo Removal</a>.</p>';
-}
+//add_filter('jvbBelowHeader', 'aei_header');
+//function aei_header(string $header):string
+//{
+// return '<p>FREE LOCAL PICKUP at <a href="https://legacytattooremoval.ca/">Legacy Tattoo Removal</a>.</p>';
+//}
@@ -200,7 +153,7 @@
function alyns_acknowledgement():string
{
- return '<p>amiskwacîwâskahikan ᐊᒥᐢᑲᐧᒋᐋᐧᐢᑲᐦᐃᑲᐣ</p><p><a href="https://www.treatysix.org/#comp-lkljqlw1" title="Learn More">Treaty 6 territory</a></p><p>Edmonton, Alberta, Canada</p>';
+ return '<p class="text-center">Respectfully, this land was <a href="https://edmonton.ink/amiskwaciwaskahikan/" data-type="page" data-id="4659">Amiskwaciwâskahikan</a> before it was ever Edmonton.</p>';
}
@@ -227,19 +180,88 @@
add_filter('jvbRandomFooterText', 'aei_footer_text');
function aei_footer_text(string $text):string
{
- $privacy = get_privacy_policy_url();
- $privacy = ($privacy === '') ? '' : ' | <a href="'.$privacy.'">Privacy Policy</a>';
- return '<p class="font-small">©'.date('Y').' <a href="https://madimori.ca/">Madi Mori</a>'.$privacy.'</p><p class="font-small">Built with ♡ by <a href="https://jakevan.ca">Jake Van</a></p>';
+ $aOpen = '<a href="https://legacytattooremoval.ca" title="Learn more about Legacy Tattoo Removal">';
+ $options = array(
+ [
+ 'text' => 'Built with ♡ by '.$aOpen.'your friendly neighbourhood laser nerds</a>.',
+ 'weight' => 25
+ ],
+ [
+ 'text' => 'Built with ♡ by your friends at '.$aOpen.'Legacy Tattoo Removal</a>.',
+ 'weight' => 15
+ ],
+ [
+ 'text' => 'Your friendly '.$aOpen.'Edmonton tattoo removal</a> crew.',
+ 'weight' => 15
+ ],
+ [
+ 'text' => $aOpen.'tattoo removal with ♡</a>',
+ 'weight' => 15
+ ],
+ [
+ 'text' => 'From '.$aOpen.'cover ups to fresh starts</a> - we\'re the laser nerds with ♡.',
+ 'weight' => 10
+ ],
+ [
+ 'text' => $aOpen.'See the difference at Legacy Tattoo Removal</a>',
+ 'weight' => 10
+ ],
+ [
+ 'text' => 'Make space for your next tattoo at '.$aOpen.'Legacy Tattoo Removal</a>.',
+ 'weight' => 10
+ ],
+ [
+ 'text' => $aOpen.'We\'re your artist\'s secret weapon</a>.',
+ 'weight' => 15
+ ]
+ );
+ $totalWeight = 0;
+ foreach ($options as $option) {
+ $totalWeight += (int)$option['weight'];
+ }
+
+ $randomNumber = mt_rand(1, $totalWeight);
+ $weightSum = 0;
+
+ foreach ($options as $option) {
+ $weightSum += (int)$option['weight'];
+ if ($randomNumber <= $weightSum) {
+ return '<p>'.$option['text'].'</p>';
+ }
+ }
+
+ return '<p>'.$options[0]['text'].'</p>';
}
add_filter('jvbRegisterCustomIcons', 'aei_custom_icons');
function aei_custom_icons(array $icons):array
{
- $icons['background'] = AEI_DIR . '/assets/icons/background.svg';
-// $icons['logo-jakevan'] = AEI_DIR . '/assets/icons/logo-concentric-jakevan.svg';
-// $icons['logo-right'] = AEI_DIR . '/assets/icons/logo-right-aligned.svg';
-// $icons['logo-right-jakevan'] = AEI_DIR . '/assets/icons/logo-right-aligned-jakevan.svg';
-// $icons['jakevan'] = AEI_DIR . '/assets/icons/jakevan.svg';
-// $icons['loading'] = AEI_DIR . '/assets/icons/loading.svg';
+ $icons['logo'] = AEI_DIR . '/assets/icons/edmonton-ink-logo.svg';
+ $icons['logo-text'] = AEI_DIR . '/assets/icons/edmonton-ink-circle.svg';
return $icons;
+}
+add_filter('jvbMapIcons', 'aei_icons_map');
+function aei_icons_map(array $icons):array
+{
+ return array_merge($icons, [
+ 'tattoo' => 'drop-simple',
+ 'event' => 'calendar',
+ 'piercing' => 'needle',
+ 'artwork' => 'palette',
+ 'artform' => 'shapes',
+ 'city' => 'map-pin',
+ 'piercing-type' => 'nut',
+ 'theme' => 'folder-open',
+ 'style' => 'hash',
+ 'colour' => 'drop',
+ 'placement' => 'person-arms-spread',
+ 'media' => 'squares-four',
+ 'artist' => 'user',
+ 'artists' => 'users-three',
+ 'partner' => 'currency-circle-dollar',
+ 'shop' => 'storefront',
+ 'past' => 'clock-counter-clockwise',
+ 'future' => 'clock-clockwise',
+ 'offer' => 'hand-heart',
+ ]);
}
\ No newline at end of file
diff --git a/taxonomies/_setup.php b/taxonomies/_setup.php
index d8d0c72..240b89e 100644
--- a/taxonomies/_setup.php
+++ b/taxonomies/_setup.php
@@ -20,7 +20,26 @@
* -> add use_in_stats (bool) to use the field in user statistics
*/
-require(AEI_DIR . '/taxonomies/flags.php');
+require(AEI_DIR . '/taxonomies/cities.php');
+require(AEI_DIR . '/taxonomies/shops.php');
+require(AEI_DIR . '/taxonomies/placements.php');
+require(AEI_DIR . '/taxonomies/styles.php');
+require(AEI_DIR . '/taxonomies/themes.php');
+require(AEI_DIR . '/taxonomies/colours.php');
+
+require(AEI_DIR . '/taxonomies/art-forms.php');
+require(AEI_DIR . '/taxonomies/artist-types.php');
+require(AEI_DIR . '/taxonomies/art-styles.php');
+require(AEI_DIR . '/taxonomies/art-themes.php');
+
+//require(AEI_DIR . '/taxonomies/news-types.php');
+
+require(AEI_DIR . '/taxonomies/offer-for.php');
+
+require(AEI_DIR . '/taxonomies/piercing-styles.php');
+require(AEI_DIR . '/taxonomies/piercing-placements.php');
+
+require(AEI_DIR . '/taxonomies/event-types.php');
//add_filter('jvb_taxonomy', 'aei_taxonomy');
//function aei_taxonomy():array
diff --git a/taxonomies/art-forms.php b/taxonomies/art-forms.php
new file mode 100644
index 0000000..d522ac1
--- /dev/null
+++ b/taxonomies/art-forms.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/art_form.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_art_form');
+add_action('jvbDefineRegistrarFields', 'aei_art_form_fields');
+
+add_action('plugins_loaded', 'aei_art_form',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_art_form_fields', 4);
+
+add_filter('aei_Art_formSchemaDefault', 'aei_art_form_schema');
+add_filter('aei_Art_formMetaDefault', 'aei_art_form_meta');
+add_filter('aei_Art_formArchiveDefault', 'aei_art_form_archive');
+
+function aei_art_form(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art_form = Registrar::forTerm('art_form', 'Art Form', 'Art Forms')
+ ->setIcon('artform')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/art-form',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $art_form->getConfig('directory');
+
+}
+
+function aei_art_form_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art_form = Registrar::getInstance('art_form');
+
+ $fields = $art_form->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_art_form_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Art Form',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Art Form',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_art_form_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo art_forms in {{name}}.'
+ ];
+}
+
+function aei_art_form_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_art_form_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/art-styles.php b/taxonomies/art-styles.php
new file mode 100644
index 0000000..c713f77
--- /dev/null
+++ b/taxonomies/art-styles.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/art_style.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_art_style');
+add_action('jvbDefineRegistrarFields', 'aei_art_style_fields');
+
+add_action('plugins_loaded', 'aei_art_style',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_art_style_fields', 4);
+
+add_filter('aei_Art_art_styleSchemaDefault', 'aei_art_style_schema');
+add_filter('aei_Art_art_styleMetaDefault', 'aei_art_style_meta');
+add_filter('aei_Art_art_styleArchiveDefault', 'aei_art_style_archive');
+
+function aei_art_style(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art_style = Registrar::forTerm('art_style', 'Art Style', 'Art Styles')
+ ->setIcon('style')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/art-style',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $art_style->getConfig('directory');
+
+}
+
+function aei_art_style_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art_style = Registrar::getInstance('art_style');
+
+ $fields = $art_style->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_art_style_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Art Style',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Art Style',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_art_style_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo art_styles in {{name}}.'
+ ];
+}
+
+function aei_art_style_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_art_style_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/art-themes.php b/taxonomies/art-themes.php
new file mode 100644
index 0000000..a3d3350
--- /dev/null
+++ b/taxonomies/art-themes.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/art_theme.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_art_theme');
+add_action('jvbDefineRegistrarFields', 'aei_art_theme_fields');
+
+add_action('plugins_loaded', 'aei_art_theme',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_art_theme_fields', 4);
+
+add_filter('aei_Art_themeSchemaDefault', 'aei_art_theme_schema');
+add_filter('aei_Art_themeMetaDefault', 'aei_art_theme_meta');
+add_filter('aei_Art_themeArchiveDefault', 'aei_art_theme_archive');
+
+function aei_art_theme(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art_theme = Registrar::forTerm('art_theme', 'Theme', 'Themes')
+ ->setIcon('theme')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/art-theme',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $art_theme->getConfig('directory');
+
+}
+
+function aei_art_theme_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art_theme = Registrar::getInstance('art_theme');
+
+ $fields = $art_theme->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_art_theme_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Art_theme',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Art_theme',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_art_theme_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo art_themes in {{name}}.'
+ ];
+}
+
+function aei_art_theme_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_art_theme_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/artist-types.php b/taxonomies/artist-types.php
new file mode 100644
index 0000000..019037b
--- /dev/null
+++ b/taxonomies/artist-types.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/artist_type.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_artist_type');
+add_action('jvbDefineRegistrarFields', 'aei_artist_type_fields');
+
+add_action('plugins_loaded', 'aei_artist_type',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_artist_type_fields', 4);
+
+add_filter('aei_Artist_typeSchemaDefault', 'aei_artist_type_schema');
+add_filter('aei_Artist_typeMetaDefault', 'aei_artist_type_meta');
+add_filter('aei_Artist_typeArchiveDefault', 'aei_artist_type_archive');
+
+function aei_artist_type(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $artist_type = Registrar::forTerm('artist_type', 'Artist Type', 'Artist Types')
+ ->setIcon('artists')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/artist-type',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $artist_type->getConfig('directory');
+
+}
+
+function aei_artist_type_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $artist_type = Registrar::getInstance('artist_type');
+
+ $fields = $artist_type->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_artist_type_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Artist Type',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Artist Type',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_artist_type_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo artist_types in {{name}}.'
+ ];
+}
+
+function aei_artist_type_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_artist_type_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/cities.php b/taxonomies/cities.php
new file mode 100644
index 0000000..282805b
--- /dev/null
+++ b/taxonomies/cities.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/city.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_city');
+add_action('jvbDefineRegistrarFields', 'aei_city_fields');
+
+add_action('plugins_loaded', 'aei_city',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_city_fields', 4);
+
+add_filter('aei_CitySchemaDefault', 'aei_city_schema');
+add_filter('aei_CityMetaDefault', 'aei_city_meta');
+add_filter('aei_CityArchiveDefault', 'aei_city_archive');
+
+function aei_city(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $city = Registrar::forTerm('city', 'City', 'Cities')
+ ->setIcon('city')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/city',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $city->getConfig('directory');
+
+}
+
+function aei_city_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $city = Registrar::getInstance('city');
+
+ $fields = $city->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_city_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian City',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_city_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo shops in {{name}}.'
+ ];
+}
+
+function aei_city_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_city_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/colours.php b/taxonomies/colours.php
new file mode 100644
index 0000000..8372ac6
--- /dev/null
+++ b/taxonomies/colours.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/colour.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_colour');
+add_action('jvbDefineRegistrarFields', 'aei_colour_fields');
+
+add_action('plugins_loaded', 'aei_colour',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_colour_fields', 4);
+
+add_filter('aei_ColourSchemaDefault', 'aei_colour_schema');
+add_filter('aei_ColourMetaDefault', 'aei_colour_meta');
+add_filter('aei_ColourArchiveDefault', 'aei_colour_archive');
+
+function aei_colour(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $colour = Registrar::forTerm('colour', 'Colour', 'Colours')
+ ->setIcon('colour')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/colour',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $colour->getConfig('directory');
+
+}
+
+function aei_colour_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $colour = Registrar::getInstance('colour');
+
+ $fields = $colour->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_colour_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Colour',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Colour',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_colour_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo colours in {{name}}.'
+ ];
+}
+
+function aei_colour_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_colour_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/event-types.php b/taxonomies/event-types.php
new file mode 100644
index 0000000..d6a35e6
--- /dev/null
+++ b/taxonomies/event-types.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/event_type.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_event_type');
+add_action('jvbDefineRegistrarFields', 'aei_event_type_fields');
+
+add_action('plugins_loaded', 'aei_event_type',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_event_type_fields', 4);
+
+add_filter('aei_Event_typeSchemaDefault', 'aei_event_type_schema');
+add_filter('aei_Event_typeMetaDefault', 'aei_event_type_meta');
+add_filter('aei_Event_typeArchiveDefault', 'aei_event_type_archive');
+
+function aei_event_type(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $event_type = Registrar::forTerm('event_type', 'Event Type', 'Event Types')
+ ->setIcon('folder')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/type',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'event',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $event_type->getConfig('directory');
+
+}
+
+function aei_event_type_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $event_type = Registrar::getInstance('event_type');
+
+ $fields = $event_type->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_event_type_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Event Type',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Event Type',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_event_type_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo events, and tattoo event_types in {{name}}.'
+ ];
+}
+
+function aei_event_type_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Events',
+ ]);
+}
+
+function aei_event_type_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/flags.php b/taxonomies/flags.php
deleted file mode 100644
index 62fd7ad..0000000
--- a/taxonomies/flags.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-// /taxonomies/flag.php
-
-use JVBase\registrar\Registrar;
-if (!defined('ABSPATH')) {
- exit;
-}
-
-add_action('jvbDefineRegistrar', 'aei_flag');
-add_action('jvbDefineRegistrarFields', 'aei_flag_fields');
-
-add_action('plugins_loaded', 'aei_flag',3);
-//Add fields later so we can verify taxonomies/post types exist
-add_action('plugins_loaded', 'aei_flag_fields', 4);
-
-add_filter('aei_AgeSchemaDefault', 'aei_flag_schema');
-add_filter('aei_AgeMetaDefault', 'aei_flag_meta');
-add_filter('aei_AgeArchiveDefault', 'aei_flag_archive');
-
-function aei_flag(){
- if (!class_exists('JVBase\registrar\Registrar')) {
- return;
- }
- $flag = Registrar::forTerm('flag', 'Flag', 'Flags')
- ->setIcon('flag')
- ->make([
- 'rewrite' => [
- 'slug' => 'flagged',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'for' => [
- 'soap',
- ],
- 'hierarchical' => true,
- ])
- ->setAll([
- 'show_directory',
- 'show_feed',
- ]);
-
-//$directory = $flag->getConfig('directory');
-
-}
-
-function aei_flag_fields():void
-{
- if (!class_exists('JVBase\registrar\Registrar')) {
- return;
- }
- $flag = Registrar::getInstance('flag');
-
- $fields = $flag->fields();
- $fields->addCommon('wiki');
- $fields->addCommon('alternate_name');
- $fields->addCommon('keywords');
-}
-
-function aei_flag_schema():array
-{
- return [
- 'name' => 'How to Remove a {{name}} Old Tattoo - Before & After',
- ];
-}
-
-function aei_flag_meta():array
-{
- return[
- 'name' => 'How to Remove a {{name}} Old Tattoo - Before & After',
- 'description' => 'See laser removal results on tattoos that are {{name}} old. Older ink often responds differently to treatment.'
- ];
-}
-
-function aei_flag_archive(array $defaults):array
-{
- return array_merge($defaults, [
- 'name' => 'Removing {{term_name}} Old Tattoos – Before & After',
- ]);
-}
-
-function aei_flag_reference_schema(array $defaults):array
-{
- return $defaults;
-}
-
-//
-//function aei_flags():array
-//{
-// return [
-// 'singular' => 'Flag',
-// 'plural' => 'Flags',
-// 'icon' => 'warning-diamond',
-// 'rewrite' => [
-// 'slug' => 'flagged',
-// 'with_front' => false,
-// 'hierarchical' => true,
-// ],
-// 'hierarchical' => true,
-// 'for_content' => [
-// 'soap',
-// ],
-// 'fields' => [
-// 'term_name' => [
-// 'label' => 'Name',
-// 'type' => 'text',
-// 'quickEdit' => true,
-// ],
-// 'common' => [ 'wiki', 'alternate_name', 'keywords' ]
-// ]
-// ];
-//}
diff --git a/taxonomies/offer-for.php b/taxonomies/offer-for.php
new file mode 100644
index 0000000..7022dc3
--- /dev/null
+++ b/taxonomies/offer-for.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/offer_for.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_offer_for');
+add_action('jvbDefineRegistrarFields', 'aei_offer_for_fields');
+
+add_action('plugins_loaded', 'aei_offer_for',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_offer_for_fields', 4);
+
+add_filter('aei_Offer_forSchemaDefault', 'aei_offer_for_schema');
+add_filter('aei_Offer_forMetaDefault', 'aei_offer_for_meta');
+add_filter('aei_Offer_forArchiveDefault', 'aei_offer_for_archive');
+
+function aei_offer_for(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $offer_for = Registrar::forTerm('offer_for', 'Offer For', 'Offer For')
+ ->setIcon('target')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'offers/for',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $offer_for->getConfig('directory');
+
+}
+
+function aei_offer_for_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $offer_for = Registrar::getInstance('offer_for');
+
+ $fields = $offer_for->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_offer_for_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Offer For',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Offer For',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_offer_for_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo offer_fors in {{name}}.'
+ ];
+}
+
+function aei_offer_for_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_offer_for_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/piercing-placements.php b/taxonomies/piercing-placements.php
new file mode 100644
index 0000000..24eebdc
--- /dev/null
+++ b/taxonomies/piercing-placements.php
@@ -0,0 +1,91 @@
+<?php
+// /taxonomies/piercing_placement.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_piercing_placement');
+add_action('jvbDefineRegistrarFields', 'aei_piercing_placement_fields');
+
+add_action('plugins_loaded', 'aei_piercing_placement',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_piercing_placement_fields', 4);
+
+add_filter('aei_Piercing_placementSchemaDefault', 'aei_piercing_placement_schema');
+add_filter('aei_Piercing_placementMetaDefault', 'aei_piercing_placement_meta');
+add_filter('aei_Piercing_placementArchiveDefault', 'aei_piercing_placement_archive');
+
+function aei_piercing_placement(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $piercing_placement = Registrar::forTerm('piercing_placement', 'Placement', 'Placements')
+ ->setIcon('placement')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'piercings/in/body-part',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'piercing',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $piercing_placement->getConfig('directory');
+
+}
+
+function aei_piercing_placement_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $piercing_placement = Registrar::getInstance('piercing_placement');
+
+ $fields = $piercing_placement->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_piercing_placement_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Placement',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Placement',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_piercing_placement_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo piercing_placements in {{name}}.'
+ ];
+}
+
+function aei_piercing_placement_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_piercing_placement_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/piercing-styles.php b/taxonomies/piercing-styles.php
new file mode 100644
index 0000000..39ff9e7
--- /dev/null
+++ b/taxonomies/piercing-styles.php
@@ -0,0 +1,91 @@
+<?php
+// /taxonomies/piercing_style.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_piercing_style');
+add_action('jvbDefineRegistrarFields', 'aei_piercing_style_fields');
+
+add_action('plugins_loaded', 'aei_piercing_style',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_piercing_style_fields', 4);
+
+add_filter('aei_Piercing_styleSchemaDefault', 'aei_piercing_style_schema');
+add_filter('aei_Piercing_styleMetaDefault', 'aei_piercing_style_meta');
+add_filter('aei_Piercing_styleArchiveDefault', 'aei_piercing_style_archive');
+
+function aei_piercing_style(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $piercing_style = Registrar::forTerm('piercing_style', 'Placement', 'Placements')
+ ->setIcon('style')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'piercings/in/style',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'piercing',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $piercing_style->getConfig('directory');
+
+}
+
+function aei_piercing_style_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $piercing_style = Registrar::getInstance('piercing_style');
+
+ $fields = $piercing_style->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_piercing_style_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Placement',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Placement',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_piercing_style_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo piercing_styles in {{name}}.'
+ ];
+}
+
+function aei_piercing_style_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_piercing_style_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/placements.php b/taxonomies/placements.php
new file mode 100644
index 0000000..46670b3
--- /dev/null
+++ b/taxonomies/placements.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/placement.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_placement');
+add_action('jvbDefineRegistrarFields', 'aei_placement_fields');
+
+add_action('plugins_loaded', 'aei_placement',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_placement_fields', 4);
+
+add_filter('aei_PlacementSchemaDefault', 'aei_placement_schema');
+add_filter('aei_PlacementMetaDefault', 'aei_placement_meta');
+add_filter('aei_PlacementArchiveDefault', 'aei_placement_archive');
+
+function aei_placement(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $placement = Registrar::forTerm('placement', 'Placement', 'Placements')
+ ->setIcon('placement')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/body-part',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $placement->getConfig('directory');
+
+}
+
+function aei_placement_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $placement = Registrar::getInstance('placement');
+
+ $fields = $placement->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_placement_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Placement',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Placement',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_placement_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo placements in {{name}}.'
+ ];
+}
+
+function aei_placement_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_placement_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/shops.php b/taxonomies/shops.php
new file mode 100644
index 0000000..9a9eeaf
--- /dev/null
+++ b/taxonomies/shops.php
@@ -0,0 +1,99 @@
+<?php
+// /taxonomies/shop.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_shop');
+add_action('jvbDefineRegistrarFields', 'aei_shop_fields');
+
+add_action('plugins_loaded', 'aei_shop',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_shop_fields', 4);
+
+add_filter('aei_ShopSchemaDefault', 'aei_shop_schema');
+add_filter('aei_ShopMetaDefault', 'aei_shop_meta');
+add_filter('aei_ShopArchiveDefault', 'aei_shop_archive');
+
+function aei_shop(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $shop = Registrar::forTerm('shop', 'Shop', 'Shops')
+ ->setIcon('shop')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'tattoo-shops',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ 'favouritable',
+ 'karma',
+ 'invitable',
+ 'is_content',
+ 'is_ownable',
+ 'verify_entry',
+ 'associate_user_content',
+ ]);
+
+//$directory = $shop->getConfig('directory');
+
+}
+
+function aei_shop_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $shop = Registrar::getInstance('shop');
+
+ $fields = $shop->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_shop_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Shop',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Shop',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_shop_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo shops in {{name}}.'
+ ];
+}
+
+function aei_shop_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_shop_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/styles.php b/taxonomies/styles.php
new file mode 100644
index 0000000..67f1bd2
--- /dev/null
+++ b/taxonomies/styles.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/style.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_style');
+add_action('jvbDefineRegistrarFields', 'aei_style_fields');
+
+add_action('plugins_loaded', 'aei_style',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_style_fields', 4);
+
+add_filter('aei_StyleSchemaDefault', 'aei_style_schema');
+add_filter('aei_StyleMetaDefault', 'aei_style_meta');
+add_filter('aei_StyleArchiveDefault', 'aei_style_archive');
+
+function aei_style(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $style = Registrar::forTerm('style', 'Style', 'Styles')
+ ->setIcon('style')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/style',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $style->getConfig('directory');
+
+}
+
+function aei_style_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $style = Registrar::getInstance('style');
+
+ $fields = $style->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_style_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Style',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Style',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_style_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo styles in {{name}}.'
+ ];
+}
+
+function aei_style_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_style_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/themes.php b/taxonomies/themes.php
new file mode 100644
index 0000000..cb589d2
--- /dev/null
+++ b/taxonomies/themes.php
@@ -0,0 +1,92 @@
+<?php
+// /taxonomies/theme.php
+
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_theme');
+add_action('jvbDefineRegistrarFields', 'aei_theme_fields');
+
+add_action('plugins_loaded', 'aei_theme',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_theme_fields', 4);
+
+add_filter('aei_ThemeSchemaDefault', 'aei_theme_schema');
+add_filter('aei_ThemeMetaDefault', 'aei_theme_meta');
+add_filter('aei_ThemeArchiveDefault', 'aei_theme_archive');
+
+function aei_theme(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $theme = Registrar::forTerm('theme', 'Theme', 'Themes')
+ ->setIcon('theme')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/theme',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'artist',
+ 'event',
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'track_changes',
+ ]);
+
+//$directory = $theme->getConfig('directory');
+
+}
+
+function aei_theme_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $theme = Registrar::getInstance('theme');
+
+ $fields = $theme->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+function aei_theme_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian Theme',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\Theme',
+ 'name' => '{{name}}',
+ ],
+ 'description' => '{{description}}',
+ ];
+}
+
+function aei_theme_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo themes in {{name}}.'
+ ];
+}
+
+function aei_theme_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_theme_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/users/_setup.php b/users/_setup.php
index e4d85b1..d84e86f 100644
--- a/users/_setup.php
+++ b/users/_setup.php
@@ -25,15 +25,4 @@
* -> description of the user role. Used in the registration page
*/
-require(AEI_DIR . '/users/client.php');
-//require(AEI_DIR . '/users/enthusiast.php');
-
-add_filter('jvb_user', 'aei_user');
-function aei_user():array
-{
- return [
-// 'enthusiast' => aei_user_enthusiast(),
- 'client' => aei_user_client(),
- ];
-}
-
+require(AEI_DIR . '/users/artists.php');
diff --git a/users/artists.php b/users/artists.php
new file mode 100644
index 0000000..63e0eb0
--- /dev/null
+++ b/users/artists.php
@@ -0,0 +1,397 @@
+<?php
+// /content/artist.php
+
+use JVBase\managers\SEO\render\Thing\CreativeWork\WebPage\ProfilePage;
+use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('jvbDefineRegistrar', 'aei_artist');
+add_action('jvbDefineRegistrarFields', 'aei_artist_fields');
+
+add_action('plugins_loaded', 'aei_artist',3);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'aei_artist_fields', 4);
+
+add_filter('aei_ArtistSchemaDefault', 'aei_artist_schema');
+add_filter('aei_ArtistMetaDefault', 'aei_artist_meta');
+add_filter('aei_ArtistArchiveDefault', 'aei_artist_archive');
+
+function aei_artist(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $artist = Registrar::forUser('artist', 'Artist', 'Artists')
+ ->setAll([
+ 'has_dashboard',
+ 'can_register',
+ 'keep_stats',
+ 'can_favourite',
+ 'member_verified',
+ ])
+ ->setCreatable([
+ 'piercer' => ['piercings','artwork','events'],
+ 'tattoo_artist' => ['tattoos','artwork','events'],
+ 'artist' => ['artwork']
+ ])
+ ->setUserSubtype('artist_type');
+
+ $artist->profile()
+ ->setIcon('artist')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'artist',
+ 'with_front' => false,
+ ],
+ 'taxonomies' => [
+ 'art_form',
+ 'art_style',
+ 'art_theme',
+ 'artist_type',
+ 'city',
+ 'colours',
+ 'shop',
+ 'style',
+ 'theme',
+ ],
+ 'hierarchical' => false,
+ ])
+ ->setAll([
+ 'favouritable',
+ 'karma',
+ 'show_feed',
+ 'show_directory',
+ 'approve_new',
+ 'invitable',
+ 'track_changes',
+ ]);
+
+//$directory = $artist->getConfig('directory');
+
+}
+
+function aei_artist_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $artist = Registrar::getInstance('artist');
+
+ $profile = $artist->getProfile();
+
+ $fields = $profile->fields();
+ $fields->addField('display_name', [
+ 'type' => 'text',
+ 'label' => 'display_name',
+ 'required' => true,
+ ]);
+ $fields->addField('first_name', [
+ 'type' => 'text',
+ 'label' => 'First Name',
+ 'required' => true,
+ ]);
+ $fields->addField('phone', [
+ 'type' => 'phone',
+ 'label' => 'Phone'
+ ]);
+ $fields->addField('email', [
+ 'type' => 'email',
+ 'label' => 'Email'
+ ]);
+ $fields->addCommon('links');
+ $fields->addCommon('contact');
+ $fields->addField('followers', [
+ 'type' => 'repeater',
+ 'label' => 'Social Followers',
+ 'hidden' => true,
+ 'fields' => [
+ 'count' => [
+ 'type' => 'text',
+ 'subtype'=> 'number',
+ 'label' => 'Count'
+ ],
+ 'source' => [
+ 'type' => 'select',
+ 'label' => 'Source',
+ 'options' => [
+ 'instagram' => 'Instagram',
+ 'facebook' => 'Facebook',
+ 'tiktok' => 'TikTok',
+ 'general' => 'General',
+ ]
+ ],
+ 'checked' => [
+ 'type' => 'date',
+ 'label' => 'Lst Checked'
+ ]
+ ]
+ ]);
+
+ $fields->addField('insta_handle', [
+ 'type' => 'text',
+ 'hidden' => true,
+ 'label' => 'Instagram Handle'
+ ]);
+
+ $fields->addField('show_online', [
+ 'type' => 'true_false',
+ 'label' => 'Show Online',
+ ]);
+
+ $fields->addField('featured_artist', [
+ 'type' => 'true_false',
+ 'label' => 'Featured Artist',
+ 'hint' => 'Would you like a chance to be a featured artist?',
+ ]);
+
+ $fields->addField('has_discounts', [
+ 'type' => 'true_false',
+ 'label' => 'Discounts',
+ 'description' => 'Do you offer discounted or free services to those leaving domestic violence, gangs, covering hateful imagery, or trafficking?
+
+This will NOT be posted anywhere publicly. We work with local non-profits for our New Legacy Program, and we want to know who we can refer to.
+
+Some non-profits may have discretionary funds to put towards these services.',
+ ]);
+ $fields->addField('discounts', [
+ 'type' => 'repeater',
+ 'label' => 'What do you offer?',
+ 'fields' => [
+ 'for' => [
+ 'type' => 'text',
+ 'label' => 'For: ',
+ 'hint' => 'Who is this for? Example: hateful symbolism, domestic violence, prison tattoos, gang tattoos, scars, human trafficking, etc'
+ ],
+ 'description' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'What do you offer?',
+ 'hint' => 'What do you offer? Discount/pro bono/sliding scale? What are the conditions?'
+ ]
+ ]
+ ]);
+
+ $fields->addField('top_style', [
+ 'type' => 'selector',
+ 'subtype'=> 'taxonomy',
+ 'isReference' => true,
+ 'taxonomy' => 'style',
+ 'max' => 3,
+ 'label' => 'Top Styles (Max 3)',
+ 'hint' => 'If you want to control which 3 styles show at the top of your profile, select your top favourite styles to work in. If you do not select any, it will be determined by the tattoo styles you post most often.'
+ ]);
+
+ $fields->addField('top_theme', [
+ 'type' => 'selector',
+ 'subtype'=> 'taxonomy',
+ 'isReference' => true,
+ 'taxonomy' => 'theme',
+ 'max' => 3,
+ 'label' => 'Top Themes (Max 3)',
+ 'hint' => 'If you want to control which 3 themes show at the top of your profile, select your top favourite styles to work in. If you do not select any, it will be determined by the tattoo themes you post most often.'
+ ]);
+
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+
+ $fields->addField('shop', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'shop',
+ 'label' => 'Shop',
+ ]);
+ $fields->addField('requested_shop', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'isReference' => true,
+ 'taxonomy' => 'shop',
+ 'label' => 'Requested Shop',
+ 'hidden' => true,
+ ]);
+
+ //TODO These two should probably be auto-added via management settings
+ $fields->addField('shop_owner',[
+ 'hidden' => true,
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'shop',
+ 'isReference' => 'true',
+ 'label' => 'Shop Owner',
+ ]);
+ $fields->addField('shop_manager',[
+ 'hidden' => true,
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'shop',
+ 'isReference' => 'true',
+ 'label' => 'Shop Manager',
+ ]);
+
+ $fields->modifyField('post_excerpt', 'label', 'Short Bio');
+ $fields->modifyField('post_excerpt', 'maxLength', 133);
+ $fields->modifyField('post_excerpt', 'description', 'A short description of yourself. 1-3 sentences.');
+
+ $fields->modifyField('post_content', 'label', 'Bio');
+ $fields->modifyField('post_content', 'quill', true);
+ $fields->modifyField('post_content', 'description', 'A longer bio for your main profile.');
+
+ $fields->addField('image_portrait', [
+ 'type' => 'upload',
+ 'label' => 'Profile Image'
+ ]);
+ $fields->addField('artist_type', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'artist_type',
+ 'max' => 1,
+ 'label' => 'You are a:'
+ ]);
+// $fields->addCommon('wiki');
+// $fields->addCommon('alternate_name');
+// $fields->addCommon('specialties');
+// $fields->addCommon('rate');
+// $fields->addCommon('awards');
+// $fields->addCommon('ratings');
+// $fields->addCommon('reviews');
+// $fields->addCommon('services');
+// $fields->addCommon('languages');
+// $fields->addCommon('credentials');
+// $fields->addCommon('keywords');
+
+
+ $contact = $profile->addSection('contact')
+ ->setIcon('chat')
+ ->setFields([
+ 'display_name',
+ 'first_name',
+ 'phone',
+ 'email',
+ 'public_contact',
+ 'admin_contact',
+ 'show_online',
+ 'featured_artist',
+ ]);
+
+ $profileSection = $profile->addSection('profile')
+ ->setIcon('user')
+ ->setFields([
+ 'image_portrait',
+ 'artist_type',
+ 'city',
+ 'shop',
+ 'post_excerpt',
+ 'post_content'
+ ]);
+
+ $seo = $profile->getSEO();
+
+// $seo = $profile->addSection('seo')
+// ->setIcon('robot')
+// ->setFields([
+// 'alternate_name',
+// 'specialties',
+// 'rate',
+// 'awards',
+// 'ratings',
+// 'reviews',
+// 'services',
+// 'languages',
+// 'credentials',
+// 'keywords'
+// ]);
+
+}
+
+function aei_artist_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\WebPage\ProfilePage',
+ 'name' => '{{post_title}} | Edmonton\'s Best {{artist_type.name}}',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Person',
+ 'name' => '{{post_title}}',
+ 'givenName' => '{{first_name',
+ 'description' => '{{post_excerpt}}',
+ 'memberOf' => ['@id' => get_home_url().'/#organization'],
+ 'alternateName' => '{{alternate_name}}',
+ 'workLocation' => '{{city}}'
+
+ ],
+ 'description' => '{{post_excerpt}}',
+ ];
+}
+
+add_filter('jvb_single_artit_profile_schema_output', 10, 2);
+function aei_artist_schema_output(ProfilePage $profile, int $ID):ProfilePage
+{
+ $person = $profile->getAbout();
+ $meta = Meta::forPost($ID);
+ $public_contact = $meta->get('public_contact');
+ foreach ($public_contact as $c) {
+ switch ($c) {
+ case 'text':
+ case 'call':
+ $phone = $meta->get('phone');
+ if (!empty($phone)) {
+ $person->setTelephone($phone);
+ }
+ break;
+ case 'email':
+ $email = $meta->get('email');
+ if(!empty($email)) {
+ $person->setEmail($email);
+ }
+ }
+ }
+
+ $links = $meta->get('links');
+ $sameAs = [];
+ foreach($links as $link) {
+ $sameAs[] = $link['url'];
+ }
+ if (!empty($links)) {
+ $person->setSameAs($sameAs);
+ }
+
+ //TODO: Rating is not a property of Person
+// $rating = $meta->get('average_rating');
+// if (!empty($rating) || $rating === 'none') {
+// $total = $meta->get('total_ratings');
+// $person->setAggregateRating([
+// 'ratingValue' => $rating,
+// 'ratingCount' => $total === '' ? 1 : $total,
+// 'bestRating' => 5,
+// 'worstRating' => 1,
+// ])
+// }
+
+
+
+ return $profile;
+}
+
+function aei_artist_meta():array
+{
+ return[
+ 'name' => 'Best Tattoos in {{name}}',
+ 'description' => 'Tattoos, piercings, tattoo artists, and tattoo artists in {{name}}.'
+ ];
+}
+
+function aei_artist_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}\'s Best Tattoo Artists',
+ ]);
+}
+
+function aei_artist_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/users/client.php b/users/client.php
deleted file mode 100644
index 13d39af..0000000
--- a/users/client.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-// /users/client.php
-function aei_user_client():array
-{
- return [
- 'label' => 'Client',
- 'has_dashboard' => true,
- 'can_create' => [''],
- 'can_register' => true,
- 'keep_stats' => false,
- 'icon' => 'user',
- 'register' => [
- 'text' => 'Refer your friends. Get rewarded.',
- 'title' => 'Create Your Account',
- 'description' => [
- 'Get your unique share code',
- 'Share it with your friends',
- 'Get notified when you get your credit'
- ],
- 'submit' => 'Create Your Account',
- ],
- ];
-}
--
Gitblit v1.10.0