From 5fe601cd1962dca79c0765a54ce864af5abb7d40 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 26 Apr 2026 22:37:14 +0000
Subject: [PATCH] =test
---
taxonomies/progress.php | 159 +
temp.php | 7
assets/css/icons.css | 1
content/strategy.php | 513 ++++-
taxonomies/theme.php | 240 ++
taxonomies/_setup.php | 2
taxonomies/city.php | 198 +
content/art.php | 525 ++++--
blocks/_setup.php | 79
content/writing.php | 526 ++++-
content/support.php | 79
taxonomies/form.php | 173 +
ajakevan.php | 73
taxonomies/media.php | 171 +
assets/css/dash.css | 1
content/development.php | 534 ++++-
taxonomies/target.php | 157 +
taxonomies/style.php | 181 +
content/_setup.php | 8
taxonomies/project.php | 828 ++++++++-
assets/css/forms.css | 1
content/design.php | 528 ++++-
22 files changed, 3,729 insertions(+), 1,255 deletions(-)
diff --git a/ajakevan.php b/ajakevan.php
index 79eb523..03da5e3 100644
--- a/ajakevan.php
+++ b/ajakevan.php
@@ -43,8 +43,12 @@
exit;
}
+define('JVB_LOADED', is_plugin_active('jvb/jvb.php'));
+
+use JVBase\managers\Cache;
use JVBase\managers\CacheManager;
use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
add_filter('jvb_base', function () {
return 'ajv_';
@@ -54,6 +58,10 @@
const AJV_DIR = WP_PLUGIN_DIR . '/ajakevan';
define('AJV_URL', plugin_dir_url(__FILE__));
+add_filter('jvbChildDir', function() { return AJV_DIR; });
+add_filter('jvbChildUrl', function() { return AJV_URL; });
+
+
require(AJV_DIR . '/blocks/_setup.php');
require(AJV_DIR . '/content/_setup.php');
//require(AJV_DIR . '/dashboard/setup.php');
@@ -166,14 +174,17 @@
'icon' => 'user-square',
]
];
- foreach (JVB_CONTENT as $slug => $config) {
- if (array_key_exists('public', $config) && !$config['public']) {
+
+ foreach (Registrar::getRegistered('post') as $slug) {
+
+ $registrar = Registrar::getInstance($slug);
+ if (!$registrar || !$registrar->registrar->public) {
continue;
}
$items[] = [
- 'text' => $config['singular'],
+ 'text' => $registrar->getSingular(),
'url' => get_post_type_archive_link(BASE.$slug),
- 'icon' => $config['icon'],
+ 'icon' => $registrar->getIcon('icon'),
'class' => $slug,
];
}
@@ -197,8 +208,8 @@
return '<p>I live and work in 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>';
}
-add_filter('jvbRegisterCustomIcons', 'jv_custom_icons');
-function jv_custom_icons(array $icons):array
+add_filter('jvbRegisterCustomIcons', 'ajv_custom_icons');
+function ajv_custom_icons(array $icons):array
{
$icons['logo'] = AJV_DIR . '/assets/icons/logo-concentric.svg';
$icons['logo-jakevan'] = AJV_DIR . '/assets/icons/logo-concentric-jakevan.svg';
@@ -246,19 +257,19 @@
'strategy' => 'Edmonton-focused brand',
default => 'Edmonton made'
};
- $title = ($type === 'directory') ? 'Directory' : JVB_CONTENT[$type]['singular'];
+ $title = ($type === 'directory') ? 'Directory' : Registrar::getInstance($type)->getSingular();
return '<small>'.$extra.'</small>'.$title.'.';
}
-add_filter('jvbSummaryHeaderExtra', 'altr_summary_extra', 10, 2);
-function altr_summary_extra(string $return, string $type):string
+add_filter('jvbSummaryHeaderExtra', 'ajv_summary_extra', 10, 2);
+function ajv_summary_extra(string $return, string $type):string
{
return ($type === 'directory') ? '' : '<p>Or see <a href="'.JVB()->directories()->getDirectoryList()[$type]['url'].'">alphabetical list</a>.</p>';
}
function ajv_render_core_post_content(array $block, string $content = ''):string
{
- if(!is_singular(array_map(function($item) { return BASE.$item; }, array_keys(JVB_CONTENT)))) {
+ if(!is_singular(array_map(function($item) { return BASE.$item; }, Registrar::getRegistered('post')))) {
return JVB()->blocks()->render_core_post_content($block, $content);
}
$postType = jvbNoBase(get_post_type());
@@ -267,7 +278,7 @@
if (function_exists($function)) {
$base = call_user_func($function, $block, $content);
}
- return $base.JVB()->blocks()->render_core_post_content($block, $content);
+ return ($base === '') ? JVB()->blocks()->render_core_post_content($block, $content) : $base;
}
add_filter('the_seo_framework_meta_render_data', 'ajvb_no_next_archive', 10, 1);
@@ -286,7 +297,7 @@
add_filter('jvbSummaryDetailsOutput', 'ajvb_summary_info',10, 1);
function ajvb_summary_info(string $return):string
{
- if (!is_singular(array_map(function($item) { return BASE.$item;}, array_keys(JVB_CONTENT)))) {
+ if (!is_singular(array_map(function($item) { return BASE.$item;}, Registrar::getRegistered('post')))) {
return $return;
}
@@ -298,23 +309,25 @@
function ajvb_term_list():string
{
- if (!JVB_TAXONOMY){
+ if (empty(Registrar::getRegistered('term'))){
return '';
}
$ID = get_the_ID();
$type = jvbNoBase(get_post_type($ID));
- $taxonomies = array_filter(JVB_TAXONOMY, function($config) use ($type){
- return in_array($type, $config['for_content']);
- });
+
+ $registrar = Registrar::getInstance($type);
+ $taxonomies = $registrar->registrar->taxonomies;
$lists = [];
- foreach ($taxonomies as $taxonomy => $config) {
+ foreach ($taxonomies as $taxonomy) {
+ $baseless = jvbNoBase($taxonomy);
+ $taxRegistrar = Registrar::getInstance($baseless);
$terms = wp_get_object_terms($ID, $taxonomy);
if ($terms && !is_wp_error($terms)) {
$list = sprintf(
'<li>%s<span>%s</span><ul class="term-list">',
- jvbIcon($config['icon']),
- $config['plural']
+ jvbIcon($taxRegistrar->getIcon()),
+ $taxRegistrar->getPlural()
);
foreach ($terms as $term) {
$list .= sprintf(
@@ -353,11 +366,12 @@
function ajvb_format_needs(array $needs):string
{
$theNeeds = '';
+ jvbDump($needs);
foreach ($needs as $need) {
$theNeeds .= sprintf(
'<li><h3>%s</h3>%s<div class="info">%s</div></li>',
$need['need'],
- $need['image'] !== '' ? jvbFormatImage($need['image']) : '',
+ $need['image'] !== '' ? jvbFormatImage((int)$need['image']) : '',
$need['fulfilled']
);
}
@@ -382,4 +396,23 @@
'<section id="wants"><h2>What we wanted:</h2><ul class="needs-wants">%s</ul></section>',
$theWants
);
+}
+
+function ajv_is_singular(null|array|string $types = null):bool
+{
+ if ($types) {
+ if (is_string($types)) {
+ $types = [$types];
+ }
+ $types = array_map(function($type) { return jvbCheckBase($type); }, $types);
+
+ }else {
+ $types = Cache::for('ajakevan')->remember(
+ 'types',
+ function() {
+ return array_map(function($type) { return jvbCheckBase($type);}, Registrar::getRegistered('post'));
+ }
+ );
+ }
+ return is_singular($types);
}
\ No newline at end of file
diff --git a/assets/css/dash.css b/assets/css/dash.css
new file mode 100644
index 0000000..6465b9a
--- /dev/null
+++ b/assets/css/dash.css
@@ -0,0 +1 @@
+.icon-squares-four{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMDQsNDJINTZBMTQsMTQsMCwwLDAsNDIsNTZ2NDhhMTQsMTQsMCwwLDAsMTQsMTRoNDhhMTQsMTQsMCwwLDAsMTQtMTRWNTZBMTQsMTQsMCwwLDAsMTA0LDQyWm0yLDYyYTIsMiwwLDAsMS0yLDJINTZhMiwyLDAsMCwxLTItMlY1NmEyLDIsMCwwLDEsMi0yaDQ4YTIsMiwwLDAsMSwyLDJabTk0LTYySDE1MmExNCwxNCwwLDAsMC0xNCwxNHY0OGExNCwxNCwwLDAsMCwxNCwxNGg0OGExNCwxNCwwLDAsMCwxNC0xNFY1NkExNCwxNCwwLDAsMCwyMDAsNDJabTIsNjJhMiwyLDAsMCwxLTIsMkgxNTJhMiwyLDAsMCwxLTItMlY1NmEyLDIsMCwwLDEsMi0yaDQ4YTIsMiwwLDAsMSwyLDJabS05OCwzNEg1NmExNCwxNCwwLDAsMC0xNCwxNHY0OGExNCwxNCwwLDAsMCwxNCwxNGg0OGExNCwxNCwwLDAsMCwxNC0xNFYxNTJBMTQsMTQsMCwwLDAsMTA0LDEzOFptMiw2MmEyLDIsMCwwLDEtMiwySDU2YTIsMiwwLDAsMS0yLTJWMTUyYTIsMiwwLDAsMSwyLTJoNDhhMiwyLDAsMCwxLDIsMlptOTQtNjJIMTUyYTE0LDE0LDAsMCwwLTE0LDE0djQ4YTE0LDE0LDAsMCwwLDE0LDE0aDQ4YTE0LDE0LDAsMCwwLDE0LTE0VjE1MkExNCwxNCwwLDAsMCwyMDAsMTM4Wm0yLDYyYTIsMiwwLDAsMS0yLDJIMTUyYTIsMiwwLDAsMS0yLTJWMTUyYTIsMiwwLDAsMSwyLTJoNDhhMiwyLDAsMCwxLDIsMloiLz48L3N2Zz4=');}.icon-rows{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMTM4SDQ4YTE0LDE0LDAsMCwwLTE0LDE0djQwYTE0LDE0LDAsMCwwLDE0LDE0SDIwOGExNCwxNCwwLDAsMCwxNC0xNFYxNTJBMTQsMTQsMCwwLDAsMjA4LDEzOFptMiw1NGEyLDIsMCwwLDEtMiwySDQ4YTIsMiwwLDAsMS0yLTJWMTUyYTIsMiwwLDAsMSwyLTJIMjA4YTIsMiwwLDAsMSwyLDJaTTIwOCw1MEg0OEExNCwxNCwwLDAsMCwzNCw2NHY0MGExNCwxNCwwLDAsMCwxNCwxNEgyMDhhMTQsMTQsMCwwLDAsMTQtMTRWNjRBMTQsMTQsMCwwLDAsMjA4LDUwWm0yLDU0YTIsMiwwLDAsMS0yLDJINDhhMiwyLDAsMCwxLTItMlY2NGEyLDIsMCwwLDEsMi0ySDIwOGEyLDIsMCwwLDEsMiwyWiIvPjwvc3ZnPg==');}.icon-table{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsNTBIMzJhNiw2LDAsMCwwLTYsNlYxOTJhMTQsMTQsMCwwLDAsMTQsMTRIMjE2YTE0LDE0LDAsMCwwLDE0LTE0VjU2QTYsNiwwLDAsMCwyMjQsNTBaTTM4LDExMEg4MnYzNkgzOFptNTYsMEgyMTh2MzZIOTRaTTIxOCw2MlY5OEgzOFY2MlpNMzgsMTkyVjE1OEg4MnYzNkg0MEEyLDIsMCwwLDEsMzgsMTkyWm0xNzgsMkg5NFYxNThIMjE4djM0QTIsMiwwLDAsMSwyMTYsMTk0WiIvPjwvc3ZnPg==');}.icon-calendar{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzRIMTgyVjI0YTYsNiwwLDAsMC0xMiwwVjM0SDg2VjI0YTYsNiwwLDAsMC0xMiwwVjM0SDQ4QTE0LDE0LDAsMCwwLDM0LDQ4VjIwOGExNCwxNCwwLDAsMCwxNCwxNEgyMDhhMTQsMTQsMCwwLDAsMTQtMTRWNDhBMTQsMTQsMCwwLDAsMjA4LDM0Wk00OCw0Nkg3NFY1NmE2LDYsMCwwLDAsMTIsMFY0Nmg4NFY1NmE2LDYsMCwwLDAsMTIsMFY0NmgyNmEyLDIsMCwwLDEsMiwyVjgySDQ2VjQ4QTIsMiwwLDAsMSw0OCw0NlpNMjA4LDIxMEg0OGEyLDIsMCwwLDEtMi0yVjk0SDIxMFYyMDhBMiwyLDAsMCwxLDIwOCwyMTBabS05OC05MHY2NGE2LDYsMCwwLDEtMTIsMFYxMjkuNzFsLTcuMzIsMy42NmE2LDYsMCwxLDEtNS4zNi0xMC43NGwxNi04QTYsNiwwLDAsMSwxMTAsMTIwWm01OS41NywyOS4yNUwxNDgsMTc4aDIwYTYsNiwwLDAsMSwwLDEySDEzNmE2LDYsMCwwLDEtNC44LTkuNkwxNjAsMTQyYTEwLDEwLDAsMSwwLTE2LjY1LTExQTYsNiwwLDEsMSwxMzMsMTI1YTIyLDIyLDAsMSwxLDM2LjYyLDI0LjI2WiIvPjwvc3ZnPg==');}.icon-sort-ascending{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjYsMTI4YTYsNiwwLDAsMS02LDZINDhhNiw2LDAsMCwxLDAtMTJoNzJBNiw2LDAsMCwxLDEyNiwxMjhaTTQ4LDcwSDE4NGE2LDYsMCwwLDAsMC0xMkg0OGE2LDYsMCwwLDAsMCwxMlptNTYsMTE2SDQ4YTYsNiwwLDAsMCwwLDEyaDU2YTYsNiwwLDAsMCwwLTEyWm0xMjQuMjQtMjIuMjRhNiw2LDAsMCwwLTguNDgsMEwxOTAsMTkzLjUxVjExMmE2LDYsMCwwLDAtMTIsMHY4MS41MWwtMjkuNzYtMjkuNzVhNiw2LDAsMCwwLTguNDgsOC40OGw0MCw0MGE2LDYsMCwwLDAsOC40OCwwbDQwLTQwQTYsNiwwLDAsMCwyMjguMjQsMTYzLjc2WiIvPjwvc3ZnPg==');}.icon-sort-descending{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00MiwxMjhhNiw2LDAsMCwxLDYtNmg3MmE2LDYsMCwwLDEsMCwxMkg0OEE2LDYsMCwwLDEsNDIsMTI4Wm02LTU4aDU2YTYsNiwwLDAsMCwwLTEySDQ4YTYsNiwwLDAsMCwwLDEyWk0xODQsMTg2SDQ4YTYsNiwwLDAsMCwwLDEySDE4NGE2LDYsMCwwLDAsMC0xMlpNMjI4LjI0LDgzLjc2bC00MC00MGE2LDYsMCwwLDAtOC40OCwwbC00MCw0MGE2LDYsMCwwLDAsOC40OCw4LjQ4TDE3OCw2Mi40OVYxNDRhNiw2LDAsMCwwLDEyLDBWNjIuNDlsMjkuNzYsMjkuNzVhNiw2LDAsMCwwLDguNDgtOC40OFoiLz48L3N2Zz4=');}.icon-columns{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMDQsMzRINjRBMTQsMTQsMCwwLDAsNTAsNDhWMjA4YTE0LDE0LDAsMCwwLDE0LDE0aDQwYTE0LDE0LDAsMCwwLDE0LTE0VjQ4QTE0LDE0LDAsMCwwLDEwNCwzNFptMiwxNzRhMiwyLDAsMCwxLTIsMkg2NGEyLDIsMCwwLDEtMi0yVjQ4YTIsMiwwLDAsMSwyLTJoNDBhMiwyLDAsMCwxLDIsMlpNMTkyLDM0SDE1MmExNCwxNCwwLDAsMC0xNCwxNFYyMDhhMTQsMTQsMCwwLDAsMTQsMTRoNDBhMTQsMTQsMCwwLDAsMTQtMTRWNDhBMTQsMTQsMCwwLDAsMTkyLDM0Wm0yLDE3NGEyLDIsMCwwLDEtMiwySDE1MmEyLDIsMCwwLDEtMi0yVjQ4YTIsMiwwLDAsMSwyLTJoNDBhMiwyLDAsMCwxLDIsMloiLz48L3N2Zz4=');}.icon-caret-double-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTIuMjQsMTMxLjc2YTYsNiwwLDAsMSwwLDguNDhsLTgwLDgwYTYsNiwwLDAsMS04LjQ4LDBsLTgwLTgwYTYsNiwwLDAsMSw4LjQ4LTguNDhMMTI4LDIwNy41MWw3NS43Ni03NS43NUE2LDYsMCwwLDEsMjEyLjI0LDEzMS43NlptLTg4LjQ4LDguNDhhNiw2LDAsMCwwLDguNDgsMGw4MC04MGE2LDYsMCwwLDAtOC40OC04LjQ4TDEyOCwxMjcuNTEsNTIuMjQsNTEuNzZhNiw2LDAsMCwwLTguNDgsOC40OFoiLz48L3N2Zz4=');}.icon-caret-double-right{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNDAuMjQsMTMyLjI0bC04MCw4MGE2LDYsMCwwLDEtOC40OC04LjQ4TDEyNy41MSwxMjgsNTEuNzYsNTIuMjRhNiw2LDAsMCwxLDguNDgtOC40OGw4MCw4MEE2LDYsMCwwLDEsMTQwLjI0LDEzMi4yNFptODAtOC40OC04MC04MGE2LDYsMCwwLDAtOC40OCw4LjQ4TDIwNy41MSwxMjhsLTc1Ljc1LDc1Ljc2YTYsNiwwLDEsMCw4LjQ4LDguNDhsODAtODBBNiw2LDAsMCwwLDIyMC4yNCwxMjMuNzZaIi8+PC9zdmc+');}.icon-door{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzIsMjE4SDIwNlY0MGExNCwxNCwwLDAsMC0xNC0xNEg2NEExNCwxNCwwLDAsMCw1MCw0MFYyMThIMjRhNiw2LDAsMCwwLDAsMTJIMjMyYTYsNiwwLDAsMCwwLTEyWk02Miw0MGEyLDIsMCwwLDEsMi0ySDE5MmEyLDIsMCwwLDEsMiwyVjIxOEg2MlptMTA0LDkyYTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDE2NiwxMzJaIi8+PC9zdmc+');}.icon-book-bookmark{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMjZINzJBMzAsMzAsMCwwLDAsNDIsNTZWMjI0YTYsNiwwLDAsMCw2LDZIMTkyYTYsNiwwLDAsMCwwLTEySDU0di0yYTE4LDE4LDAsMCwxLDE4LTE4SDIwOGE2LDYsMCwwLDAsNi02VjMyQTYsNiwwLDAsMCwyMDgsMjZaTTExOCwzOGg1MnY3OEwxNDcuNTksOTkuMmE2LDYsMCwwLDAtNy4yLDBMMTE4LDExNlptODQsMTQ4SDcyYTI5Ljg3LDI5Ljg3LDAsMCwwLTE4LDZWNTZBMTgsMTgsMCwwLDEsNzIsMzhoMzR2OTBhNiw2LDAsMCwwLDkuNiw0LjhMMTQ0LDExMS41bDI4LjQxLDIxLjNBNiw2LDAsMCwwLDE4MiwxMjhWMzhoMjBaIi8+PC9zdmc+');}.icon-faders{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMzQsMTIwdjk2YTYsNiwwLDAsMS0xMiwwVjEyMGE2LDYsMCwwLDEsMTIsMFptNjYsNzRhNiw2LDAsMCwwLTYsNnYxNmE2LDYsMCwwLDAsMTIsMFYyMDBBNiw2LDAsMCwwLDIwMCwxOTRabTI0LTMySDIwNlY0MGE2LDYsMCwwLDAtMTIsMFYxNjJIMTc2YTYsNiwwLDAsMCwwLDEyaDQ4YTYsNiwwLDAsMCwwLTEyWk01NiwxNjJhNiw2LDAsMCwwLTYsNnY0OGE2LDYsMCwwLDAsMTIsMFYxNjhBNiw2LDAsMCwwLDU2LDE2MlptMjQtMzJINjJWNDBhNiw2LDAsMCwwLTEyLDB2OTBIMzJhNiw2LDAsMCwwLDAsMTJIODBhNiw2LDAsMCwwLDAtMTJabTcyLTQ4SDEzNFY0MGE2LDYsMCwwLDAtMTIsMFY4MkgxMDRhNiw2LDAsMCwwLDAsMTJoNDhhNiw2LDAsMCwwLDAtMTJaIi8+PC9zdmc+');}.icon-robot{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDAsNTBIMTM0VjE2YTYsNiwwLDAsMC0xMiwwVjUwSDU2QTMwLDMwLDAsMCwwLDI2LDgwVjE5MmEzMCwzMCwwLDAsMCwzMCwzMEgyMDBhMzAsMzAsMCwwLDAsMzAtMzBWODBBMzAsMzAsMCwwLDAsMjAwLDUwWm0xOCwxNDJhMTgsMTgsMCwwLDEtMTgsMThINTZhMTgsMTgsMCwwLDEtMTgtMThWODBBMTgsMTgsMCwwLDEsNTYsNjJIMjAwYTE4LDE4LDAsMCwxLDE4LDE4Wk03NCwxMDhhMTAsMTAsMCwxLDEsMTAsMTBBMTAsMTAsMCwwLDEsNzQsMTA4Wm04OCwwYTEwLDEwLDAsMSwxLDEwLDEwQTEwLDEwLDAsMCwxLDE2MiwxMDhabTIsMzBIOTJhMjYsMjYsMCwwLDAsMCw1Mmg3MmEyNiwyNiwwLDAsMCwwLTUyWm0tMjIsMTJ2MjhIMTE0VjE1MFpNNzgsMTY0YTE0LDE0LDAsMCwxLDE0LTE0aDEwdjI4SDkyQTE0LDE0LDAsMCwxLDc4LDE2NFptODYsMTRIMTU0VjE1MGgxMGExNCwxNCwwLDAsMSwwLDI4WiIvPjwvc3ZnPg==');}.icon-plugs-connected{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzYuMjQsMTkuNzZhNiw2LDAsMCwwLTguNDgsMEwxNzMuOTQsNzMuNTdsLTYuNzktNi43OGEzMCwzMCwwLDAsMC00Mi40MiwwTDEwMCw5MS41MWwtNy43Ni03Ljc1YTYsNiwwLDAsMC04LjQ4LDguNDhMOTEuNTEsMTAwLDY2Ljc5LDEyNC43M2EzMCwzMCwwLDAsMCwwLDQyLjQybDYuNzgsNi43OUwxOS43NiwyMjcuNzZhNiw2LDAsMSwwLDguNDgsOC40OGw1My44Mi01My44MSw2Ljc5LDYuNzhhMzAsMzAsMCwwLDAsNDIuNDIsMEwxNTYsMTY0LjQ5bDcuNzYsNy43NWE2LDYsMCwwLDAsOC40OC04LjQ4TDE2NC40OSwxNTZsMjQuNzItMjQuNzNhMzAsMzAsMCwwLDAsMC00Mi40MmwtNi43OC02Ljc5LDUzLjgxLTUzLjgyQTYsNiwwLDAsMCwyMzYuMjQsMTkuNzZabS0xMTMuNDUsMTYxYTE4LDE4LDAsMCwxLTI1LjQ2LDBMNzUuMjcsMTU4LjY3YTE4LDE4LDAsMCwxLDAtMjUuNDZMMTAwLDEwOC40OSwxNDcuNTEsMTU2Wm01Ny45NC01Ny45NEwxNTYsMTQ3LjUxLDEwOC40OSwxMDBsMjQuNzItMjQuNzNhMTgsMTgsMCwwLDEsMjUuNDYsMGwyMi4wNiwyMi4wNmExOCwxOCwwLDAsMSwwLDI1LjQ2Wk05MC40MywzNC4yM2E2LDYsMCwwLDEsMTEuMTQtNC40Nmw4LDIwYTYsNiwwLDEsMS0xMS4xNCw0LjQ2Wm0tNjQsNTkuNTRhNiw2LDAsMCwxLDcuOC0zLjM0bDIwLDhhNiw2LDAsMSwxLTQuNDYsMTEuMTRsLTIwLThBNiw2LDAsMCwxLDI2LjQzLDkzLjc3Wm0yMDMuMTQsNjguNDZhNiw2LDAsMCwxLTcuOCwzLjM0bC0yMC04YTYsNiwwLDAsMSw0LjQ2LTExLjE0bDIwLDhBNiw2LDAsMCwxLDIyOS41NywxNjIuMjNabS02NCw1OS41NGE2LDYsMCwxLDEtMTEuMTQsNC40NmwtOC0yMGE2LDYsMCwwLDEsMTEuMTQtNC40NloiLz48L3N2Zz4=');}.icon-user-circle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjZBMTAyLDEwMiwwLDEsMCwyMzAsMTI4LDEwMi4xMiwxMDIuMTIsMCwwLDAsMTI4LDI2Wk03MS40NCwxOThhNjYsNjYsMCwwLDEsMTEzLjEyLDAsODkuOCw4OS44LDAsMCwxLTExMy4xMiwwWk05NCwxMjBhMzQsMzQsMCwxLDEsMzQsMzRBMzQsMzQsMCwwLDEsOTQsMTIwWm05OS41MSw2OS42NGE3Ny41Myw3Ny41MywwLDAsMC00MC0zMS4zOCw0Niw0NiwwLDEsMC01MSwwLDc3LjUzLDc3LjUzLDAsMCwwLTQwLDMxLjM4LDkwLDkwLDAsMSwxLDEzMSwwWiIvPjwvc3ZnPg==');}.icon-password{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00Niw1NlYyMDBhNiw2LDAsMCwxLTEyLDBWNTZhNiw2LDAsMCwxLDEyLDBabTk0LjU4LDU2LjQxTDExOCwxMTkuNzRWOTZhNiw2LDAsMCwwLTEyLDB2MjMuNzRsLTIyLjU4LTcuMzNhNiw2LDAsMSwwLTMuNzEsMTEuNDFsMjIuNTgsNy4zMy0xNCwxOS4yMWE2LDYsMCwxLDAsOS43LDcuMDZsMTQtMTkuMjEsMTQsMTkuMjFhNiw2LDAsMCwwLDkuNy03LjA2bC0xNC0xOS4yMSwyMi41OC03LjMzYTYsNiwwLDEsMC0zLjcxLTExLjQxWm0xMDMuNTYsMy44NWE2LDYsMCwwLDAtNy41Ni0zLjg1TDIxNCwxMTkuNzRWOTZhNiw2LDAsMCwwLTEyLDB2MjMuNzRsLTIyLjU4LTcuMzNhNiw2LDAsMSwwLTMuNzEsMTEuNDFsMjIuNTgsNy4zMy0xMy45NSwxOS4yMWE2LDYsMCwxLDAsOS43LDcuMDZsMTQtMTkuMjEsMTQsMTkuMjFhNiw2LDAsMCwwLDkuNy03LjA2bC0xMy45NS0xOS4yMSwyMi41OC03LjMzQTYsNiwwLDAsMCwyNDQuMTQsMTE2LjI2WiIvPjwvc3ZnPg==');}.icon-eye{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDUuNDgsMTI1LjU3Yy0uMzQtLjc4LTguNjYtMTkuMjMtMjcuMjQtMzcuODFDMjAxLDcwLjU0LDE3MS4zOCw1MCwxMjgsNTBTNTUsNzAuNTQsMzcuNzYsODcuNzZjLTE4LjU4LDE4LjU4LTI2LjksMzctMjcuMjQsMzcuODFhNiw2LDAsMCwwLDAsNC44OGMuMzQuNzcsOC42NiwxOS4yMiwyNy4yNCwzNy44QzU1LDE4NS40Nyw4NC42MiwyMDYsMTI4LDIwNnM3My0yMC41Myw5MC4yNC0zNy43NWMxOC41OC0xOC41OCwyNi45LTM3LDI3LjI0LTM3LjhBNiw2LDAsMCwwLDI0NS40OCwxMjUuNTdaTTEyOCwxOTRjLTMxLjM4LDAtNTguNzgtMTEuNDItODEuNDUtMzMuOTNBMTM0Ljc3LDEzNC43NywwLDAsMSwyMi42OSwxMjgsMTM0LjU2LDEzNC41NiwwLDAsMSw0Ni41NSw5NS45NEM2OS4yMiw3My40Miw5Ni42Miw2MiwxMjgsNjJzNTguNzgsMTEuNDIsODEuNDUsMzMuOTRBMTM0LjU2LDEzNC41NiwwLDAsMSwyMzMuMzEsMTI4QzIyNi45NCwxNDAuMjEsMTk1LDE5NCwxMjgsMTk0Wm0wLTExMmE0Niw0NiwwLDEsMCw0Niw0NkE0Ni4wNiw0Ni4wNiwwLDAsMCwxMjgsODJabTAsODBhMzQsMzQsMCwxLDEsMzQtMzRBMzQsMzQsMCwwLDEsMTI4LDE2MloiLz48L3N2Zz4=');}.icon-eye-slash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik01Mi40NCwzNkE2LDYsMCwwLDAsNDMuNTYsNDRMNjQuNDQsNjdjLTM3LjI4LDIxLjktNTMuMjMsNTctNTMuOTIsNTguNTdhNiw2LDAsMCwwLDAsNC44OGMuMzQuNzcsOC42NiwxOS4yMiwyNy4yNCwzNy44QzU1LDE4NS40Nyw4NC42MiwyMDYsMTI4LDIwNmExMjQuOTEsMTI0LjkxLDAsMCwwLDUyLjU3LTExLjI1bDIzLDI1LjI5YTYsNiwwLDAsMCw4Ljg4LTguMDhabTQ4LjYyLDcxLjMyLDQ1LDQ5LjUyYTM0LDM0LDAsMCwxLTQ1LTQ5LjUyWk0xMjgsMTk0Yy0zMS4zOCwwLTU4Ljc4LTExLjQyLTgxLjQ1LTMzLjkzQTEzNC41NywxMzQuNTcsMCwwLDEsMjIuNjksMTI4YzQuMjktOC4yLDIwLjEtMzUuMTgsNTAtNTEuOTFMOTIuODksOTguM2E0Niw0NiwwLDAsMCw2MS4zNSw2Ny40OGwxNy44MSwxOS42QTExMy40NywxMTMuNDcsMCwwLDEsMTI4LDE5NFptNi40LTk5LjRhNiw2LDAsMCwxLDIuMjUtMTEuNzksNDYuMTcsNDYuMTcsMCwwLDEsMzcuMTUsNDAuODcsNiw2LDAsMCwxLTUuNDIsNi41M2wtLjU2LDBhNiw2LDAsMCwxLTYtNS40NUEzNC4xLDM0LjEsMCwwLDAsMTM0LjQsOTQuNlptMTExLjA4LDM1Ljg1Yy0uNDEuOTItMTAuMzcsMjMtMzIuODYsNDMuMTJhNiw2LDAsMSwxLTgtOC45NEExMzQuMDcsMTM0LjA3LDAsMCwwLDIzMy4zMSwxMjhhMTM0LjY3LDEzNC42NywwLDAsMC0yMy44Ni0zMi4wN0MxODYuNzgsNzMuNDIsMTU5LjM4LDYyLDEyOCw2MmExMjAuMTksMTIwLjE5LDAsMCwwLTE5LjY5LDEuNiw2LDYsMCwxLDEtMi0xMS44M0ExMzEuMTIsMTMxLjEyLDAsMCwxLDEyOCw1MGM0My4zOCwwLDczLDIwLjU0LDkwLjI0LDM3Ljc2LDE4LjU4LDE4LjU4LDI2LjksMzcsMjcuMjQsMzcuODFBNiw2LDAsMCwxLDI0NS40OCwxMzAuNDVaIi8+PC9zdmc+');}
\ No newline at end of file
diff --git a/assets/css/forms.css b/assets/css/forms.css
new file mode 100644
index 0000000..18f0891
--- /dev/null
+++ b/assets/css/forms.css
@@ -0,0 +1 @@
+.icon-copy{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTYsMzRIODhhNiw2LDAsMCwwLTYsNlY4Mkg0MGE2LDYsMCwwLDAtNiw2VjIxNmE2LDYsMCwwLDAsNiw2SDE2OGE2LDYsMCwwLDAsNi02VjE3NGg0MmE2LDYsMCwwLDAsNi02VjQwQTYsNiwwLDAsMCwyMTYsMzRaTTE2MiwyMTBINDZWOTRIMTYyWm00OC00OEgxNzRWODhhNiw2LDAsMCwwLTYtNkg5NFY0NkgyMTBaIi8+PC9zdmc+');}.icon-paragraph{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsNDJIOTZhNjIsNjIsMCwwLDAsMCwxMjRoNDJ2NDJhNiw2LDAsMCwwLDEyLDBWNTRoMjhWMjA4YTYsNiwwLDAsMCwxMiwwVjU0aDE4YTYsNiwwLDAsMCwwLTEyWk0xMzgsMTU0SDk2QTUwLDUwLDAsMCwxLDk2LDU0aDQyWiIvPjwvc3ZnPg==');}.icon-text-h-one{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzAsMTEydjk2YTYsNiwwLDAsMS0xMiwwVjEyMy4yMUwyMDMuMzMsMTMzYTYsNiwwLDAsMS02LjY2LTEwbDI0LTE2YTYsNiwwLDAsMSw5LjMzLDVaTTE0NCw1MGE2LDYsMCwwLDAtNiw2djU0SDQ2VjU2YTYsNiwwLDAsMC0xMiwwVjE3NmE2LDYsMCwwLDAsMTIsMFYxMjJoOTJ2NTRhNiw2LDAsMCwwLDEyLDBWNTZBNiw2LDAsMCwwLDE0NCw1MFoiLz48L3N2Zz4=');}.icon-text-h-two{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNTAsNTZWMTc2YTYsNiwwLDAsMS0xMiwwVjEyMkg0NnY1NGE2LDYsMCwwLDEtMTIsMFY1NmE2LDYsMCwwLDEsMTIsMHY1NGg5MlY1NmE2LDYsMCwwLDEsMTIsMFptOTAsMTQ2SDIwNEwyNDAsMTU0LjA1QTMwLDMwLDAsMSwwLDE4Ny43MSwxMjYsNiw2LDAsMSwwLDE5OSwxMzBhMTgsMTgsMCwwLDEsMTQuNDctMTEuODIsMTgsMTgsMCwwLDEsMTYuODcsMjguNjZMMTg3LjIsMjA0LjRBNiw2LDAsMCwwLDE5MiwyMTRoNDhhNiw2LDAsMCwwLDAtMTJaIi8+PC9zdmc+');}.icon-text-h-three{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsMTgwYTM0LDM0LDAsMCwxLTU4LjI5LDIzLjc5LDYsNiwwLDAsMSw4LjU4LTguMzlBMjIsMjIsMCwxLDAsMjEyLDE1OGE2LDYsMCwwLDEtNC45Mi05LjQ0TDIyOC40OCwxMThIMTkyYTYsNiwwLDAsMSwwLTEyaDQ4YTYsNiwwLDAsMSw0LjkxLDkuNDRsLTIyLjUyLDMyLjE4QTM0LjA2LDM0LjA2LDAsMCwxLDI0NiwxODBaTTE0NCw1MGE2LDYsMCwwLDAtNiw2djU0SDQ2VjU2YTYsNiwwLDAsMC0xMiwwVjE3NmE2LDYsMCwwLDAsMTIsMFYxMjJoOTJ2NTRhNiw2LDAsMCwwLDEyLDBWNTZBNiw2LDAsMCwwLDE0NCw1MFoiLz48L3N2Zz4=');}.icon-text-h-four{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNTAsNTZWMTc2YTYsNiwwLDAsMS0xMiwwVjEyMkg0NnY1NGE2LDYsMCwwLDEtMTIsMFY1NmE2LDYsMCwwLDEsMTIsMHY1NGg5MlY1NmE2LDYsMCwwLDEsMTIsMFpNMjU0LDE4NGE2LDYsMCwwLDEtNiw2SDIzOHYxOGE2LDYsMCwwLDEtMTIsMFYxOTBIMTc2YTYsNiwwLDAsMS00Ljc0LTkuNjhsNTYtNzJBNiw2LDAsMCwxLDIzOCwxMTJ2NjZoMTBBNiw2LDAsMCwxLDI1NCwxODRabS0yOC01NC41MUwxODguMjcsMTc4SDIyNloiLz48L3N2Zz4=');}.icon-text-h-five{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsMTgwYTM0LDM0LDAsMCwxLTM0LDM0LDMzLjYsMzMuNiwwLDAsMS0yNC4yOS05LjgsNiw2LDAsMCwxLDguNTgtOC40QTIxLjY1LDIxLjY1LDAsMCwwLDIxMiwyMDJhMjIsMjIsMCwwLDAsMC00NCwyMS42NSwyMS42NSwwLDAsMC0xNS43MSw2LjJBNiw2LDAsMCwxLDE4Ni4wOCwxNTlsOC00OGE2LDYsMCwwLDEsNS45Mi01aDQwYTYsNiwwLDAsMSwwLDEySDIwNS4wOGwtNSwzMEEzNiwzNiwwLDAsMSwyMTIsMTQ2LDM0LDM0LDAsMCwxLDI0NiwxODBaTTE0NCw1MGE2LDYsMCwwLDAtNiw2djU0SDQ2VjU2YTYsNiwwLDAsMC0xMiwwVjE3NmE2LDYsMCwwLDAsMTIsMFYxMjJoOTJ2NTRhNiw2LDAsMCwwLDEyLDBWNTZBNiw2LDAsMCwwLDE0NCw1MFoiLz48L3N2Zz4=');}.icon-text-h-six{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTIsMTQ2YTM0LjUsMzQuNSwwLDAsMC01LjYuNDdsMTguNzUtMzEuMzlhNiw2LDAsMCwwLTEwLjMtNi4xNmwtMzIuMjUsNTQtLjIyLjQxQTM0LDM0LDAsMSwwLDIxMiwxNDZabTAsNTZhMjIsMjIsMCwxLDEsMjItMjJBMjIsMjIsMCwwLDEsMjEyLDIwMlpNMTUwLDU2VjE3NmE2LDYsMCwwLDEtMTIsMFYxMjJINDZ2NTRhNiw2LDAsMCwxLTEyLDBWNTZhNiw2LDAsMCwxLDEyLDB2NTRoOTJWNTZhNiw2LDAsMCwxLDEyLDBaIi8+PC9zdmc+');}.icon-text-italic{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTgsNTZhNiw2LDAsMCwxLTYsNkgxNTYuMzJsLTQ0LDEzMkgxNDRhNiw2LDAsMCwxLDAsMTJINjRhNiw2LDAsMCwxLDAtMTJIOTkuNjhsNDQtMTMySDExMmE2LDYsMCwwLDEsMC0xMmg4MEE2LDYsMCwwLDEsMTk4LDU2WiIvPjwvc3ZnPg==');}.icon-text-underline{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTgsMjI0YTYsNiwwLDAsMS02LDZINjRhNiw2LDAsMCwxLDAtMTJIMTkyQTYsNiwwLDAsMSwxOTgsMjI0Wm0tNzAtMjZhNjIuMDcsNjIuMDcsMCwwLDAsNjItNjJWNTZhNiw2LDAsMCwwLTEyLDB2ODBhNTAsNTAsMCwwLDEtMTAwLDBWNTZhNiw2LDAsMCwwLTEyLDB2ODBBNjIuMDcsNjIuMDcsMCwwLDAsMTI4LDE5OFoiLz48L3N2Zz4=');}.icon-text-strikethrough{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTYsNiwwLDAsMS02LDZIMTY5LjQ1YzExLjI4LDYuOTIsMjAuNTUsMTcuMzgsMjAuNTUsMzQsMCwyNS4zNi0yNy44MSw0Ni02Miw0NnMtNjItMjAuNjQtNjItNDZhNiw2LDAsMCwxLDEyLDBjMCwxOC43NSwyMi40MywzNCw1MCwzNHM1MC0xNS4yNSw1MC0zNGMwLTE4LjIzLTE1LjQ2LTI2LjU5LTQwLjQ3LTM0SDQwYTYsNiwwLDAsMSwwLTEySDIxNkE2LDYsMCwwLDEsMjIyLDEyOFpNNzYuMzMsMTAyYTYuMiw2LjIsMCwwLDAsMS44OC0uM0E2LDYsMCwwLDAsODIsOTQuMTMsMTkuNzQsMTkuNzQsMCwwLDEsODEuMTEsODhjMC0xOS4zOCwyMC4xNi0zNCw0Ni44OS0zNCwxOS41OCwwLDM1LjU2LDcuODEsNDIuNzQsMjAuODlhNiw2LDAsMCwwLDEwLjUyLTUuNzhDMTcxLjk0LDUyLjEzLDE1Miw0MiwxMjgsNDIsOTQuNDMsNDIsNjkuMTEsNjEuNzcsNjkuMTEsODhhMzEuNjIsMzEuNjIsMCwwLDAsMS41Miw5Ljg3QTYsNiwwLDAsMCw3Ni4zMywxMDJaIi8+PC9zdmc+');}.icon-list-dashes{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik05MCw2NGE2LDYsMCwwLDEsNi02SDIxNmE2LDYsMCwwLDEsMCwxMkg5NkE2LDYsMCwwLDEsOTAsNjRabTEyNiw1OEg5NmE2LDYsMCwwLDAsMCwxMkgyMTZhNiw2LDAsMCwwLDAtMTJabTAsNjRIOTZhNiw2LDAsMCwwLDAsMTJIMjE2YTYsNiwwLDAsMCwwLTEyWk01Niw1OEg0MGE2LDYsMCwwLDAsMCwxMkg1NmE2LDYsMCwwLDAsMC0xMlptMCw2NEg0MGE2LDYsMCwwLDAsMCwxMkg1NmE2LDYsMCwwLDAsMC0xMlptMCw2NEg0MGE2LDYsMCwwLDAsMCwxMkg1NmE2LDYsMCwwLDAsMC0xMloiLz48L3N2Zz4=');}.icon-list-numbers{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTYsNiwwLDAsMS02LDZIMTA0YTYsNiwwLDAsMSwwLTEySDIxNkE2LDYsMCwwLDEsMjIyLDEyOFpNMTA0LDcwSDIxNmE2LDYsMCwwLDAsMC0xMkgxMDRhNiw2LDAsMCwwLDAsMTJaTTIxNiwxODZIMTA0YTYsNiwwLDAsMCwwLDEySDIxNmE2LDYsMCwwLDAsMC0xMlpNNDIuNjgsNTMuMzcsNTAsNDkuNzFWMTA0YTYsNiwwLDAsMCwxMiwwVjQwYTYsNiwwLDAsMC04LjY4LTUuMzdsLTE2LDhhNiw2LDAsMCwwLDUuMzYsMTAuNzRaTTcyLDIwMkg1MmwyMS40OC0yOC43NEEyMS41LDIxLjUsMCwwLDAsNzcuNzksMTU3LDIxLjc1LDIxLjc1LDAsMCwwLDY5LDE0Mi4zOGEyMi44NiwyMi44NiwwLDAsMC0zMS4zNSw0LjMxLDIyLjE4LDIyLjE4LDAsMCwwLTMuMjgsNS45Miw2LDYsMCwwLDAsMTEuMjgsNC4xMSw5Ljg3LDkuODcsMCwwLDEsMS40OC0yLjY3LDEwLjc4LDEwLjc4LDAsMCwxLDE0Ljc4LTIsOS44OSw5Ljg5LDAsMCwxLDQsNi42MSw5LjY0LDkuNjQsMCwwLDEtMiw3LjI4bC0uMDYuMDlMMzUuMiwyMDQuNDFBNiw2LDAsMCwwLDQwLDIxNEg3MmE2LDYsMCwwLDAsMC0xMloiLz48L3N2Zz4=');}.icon-text-align-left{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0zNCw2NGE2LDYsMCwwLDEsNi02SDIxNmE2LDYsMCwwLDEsMCwxMkg0MEE2LDYsMCwwLDEsMzQsNjRabTYsNDZIMTY4YTYsNiwwLDAsMCwwLTEySDQwYTYsNiwwLDAsMCwwLDEyWm0xNzYsMjhINDBhNiw2LDAsMCwwLDAsMTJIMjE2YTYsNiwwLDAsMCwwLTEyWm0tNDgsNDBINDBhNiw2LDAsMCwwLDAsMTJIMTY4YTYsNiwwLDAsMCwwLTEyWiIvPjwvc3ZnPg==');}.icon-text-align-center{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0zNCw2NGE2LDYsMCwwLDEsNi02SDIxNmE2LDYsMCwwLDEsMCwxMkg0MEE2LDYsMCwwLDEsMzQsNjRaTTY0LDk4YTYsNiwwLDAsMCwwLDEySDE5MmE2LDYsMCwwLDAsMC0xMlptMTUyLDQwSDQwYTYsNiwwLDAsMCwwLDEySDIxNmE2LDYsMCwwLDAsMC0xMlptLTI0LDQwSDY0YTYsNiwwLDAsMCwwLDEySDE5MmE2LDYsMCwwLDAsMC0xMloiLz48L3N2Zz4=');}.icon-text-align-right{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0zNCw2NGE2LDYsMCwwLDEsNi02SDIxNmE2LDYsMCwwLDEsMCwxMkg0MEE2LDYsMCwwLDEsMzQsNjRaTTIxNiw5OEg4OGE2LDYsMCwwLDAsMCwxMkgyMTZhNiw2LDAsMCwwLDAtMTJabTAsNDBINDBhNiw2LDAsMCwwLDAsMTJIMjE2YTYsNiwwLDAsMCwwLTEyWm0wLDQwSDg4YTYsNiwwLDAsMCwwLDEySDIxNmE2LDYsMCwwLDAsMC0xMloiLz48L3N2Zz4=');}.icon-link{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzgsODguMThhNTIuNDIsNTIuNDIsMCwwLDEtMTUuNCwzNS42NmwtMzQuNzUsMzQuNzVBNTIuMjgsNTIuMjgsMCwwLDEsMTUwLjYyLDE3NGgtLjA1QTUyLjYzLDUyLjYzLDAsMCwxLDk4LDExOS45YTYsNiwwLDAsMSw2LTUuODRoLjE3YTYsNiwwLDAsMSw1LjgzLDYuMTZBNDAuNjIsNDAuNjIsMCwwLDAsMTUwLjU4LDE2MmgwYTQwLjQsNDAuNCwwLDAsMCwyOC43My0xMS45bDM0Ljc1LTM0Ljc0QTQwLjYzLDQwLjYzLDAsMCwwLDE1Ni42Myw1Ny45bC0xMSwxMWE2LDYsMCwwLDEtOC40OS04LjQ5bDExLTExYTUyLjYyLDUyLjYyLDAsMCwxLDc0LjQzLDBBNTIuODMsNTIuODMsMCwwLDEsMjM4LDg4LjE4Wm0tMTI3LjYyLDk4LjktMTEsMTFBNDAuMzYsNDAuMzYsMCwwLDEsNzAuNiwyMTBoMGE0MC42Myw0MC42MywwLDAsMS0yOC43LTY5LjM2TDc2LjYyLDEwNS45QTQwLjYzLDQwLjYzLDAsMCwxLDE0NiwxMzUuNzdhNiw2LDAsMCwwLDUuODMsNi4xNkgxNTJhNiw2LDAsMCwwLDYtNS44NEE1Mi42Myw1Mi42MywwLDAsMCw2OC4xNCw5Ny40MkwzMy4zOCwxMzIuMTZBNTIuNjMsNTIuNjMsMCwwLDAsNzAuNTYsMjIyaDBhNTIuMjYsNTIuMjYsMCwwLDAsMzcuMjItMTUuNDJsMTEtMTFhNiw2LDAsMSwwLTguNDktOC40OFoiLz48L3N2Zz4=');}.icon-file-pdf{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTUyYTYsNiwwLDAsMS02LDZIMTkwdjIwaDE4YTYsNiwwLDAsMSwwLDEySDE5MHYxOGE2LDYsMCwwLDEtMTIsMFYxNTJhNiw2LDAsMCwxLDYtNmgzMkE2LDYsMCwwLDEsMjIyLDE1MlpNOTAsMTcyYTI2LDI2LDAsMCwxLTI2LDI2SDU0djEwYTYsNiwwLDAsMS0xMiwwVjE1MmE2LDYsMCwwLDEsNi02SDY0QTI2LDI2LDAsMCwxLDkwLDE3MlptLTEyLDBhMTQsMTQsMCwwLDAtMTQtMTRINTR2MjhINjRBMTQsMTQsMCwwLDAsNzgsMTcyWm04NCw4YTM0LDM0LDAsMCwxLTM0LDM0SDExMmE2LDYsMCwwLDEtNi02VjE1MmE2LDYsMCwwLDEsNi02aDE2QTM0LDM0LDAsMCwxLDE2MiwxODBabS0xMiwwYTIyLDIyLDAsMCwwLTIyLTIySDExOHY0NGgxMEEyMiwyMiwwLDAsMCwxNTAsMTgwWk00MiwxMTJWNDBBMTQsMTQsMCwwLDEsNTYsMjZoOTZhNiw2LDAsMCwxLDQuMjUsMS43Nmw1Niw1NkE2LDYsMCwwLDEsMjE0LDg4djI0YTYsNiwwLDAsMS0xMiwwVjk0SDE1MmE2LDYsMCwwLDEtNi02VjM4SDU2YTIsMiwwLDAsMC0yLDJ2NzJhNiw2LDAsMCwxLTEyLDBaTTE1OCw4MmgzNS41MkwxNTgsNDYuNDhaIi8+PC9zdmc+');}.icon-file-csv{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00NiwxODBjMCwxMi4xMyw4LjA3LDIyLDE4LDIyYTE2LjI0LDE2LjI0LDAsMCwwLDExLjY3LTUuMjgsNiw2LDAsMCwxLDguNjYsOC4zQTI4LjA2LDI4LjA2LDAsMCwxLDY0LDIxNGMtMTYuNTQsMC0zMC0xNS4yNS0zMC0zNHMxMy40Ni0zNCwzMC0zNGEyOC4wNiwyOC4wNiwwLDAsMSwyMC4zMyw5LDYsNiwwLDAsMS04LjY2LDguM0ExNi4yMywxNi4yMywwLDAsMCw2NCwxNThDNTQuMDcsMTU4LDQ2LDE2Ny44Niw0NiwxODBabTgxLjA1LTYuNzdjLTEwLjg2LTMuMTMtMTMuNDEtNC42OS0xMy03LjkxYTYuNTksNi41OSwwLDAsMSwyLjg4LTUuMDhjNS42LTMuNzksMTcuNjYtMS44MiwyMS40NS0uODRhNiw2LDAsMCwwLDMuMDYtMTEuNmMtMi0uNTMtMjAuMS01LTMxLjIxLDIuNDhhMTguNjEsMTguNjEsMCwwLDAtOC4wOCwxMy41NGMtMS44LDE0LjE5LDEyLjI2LDE4LjI1LDIxLjU3LDIwLjk0LDEyLjEyLDMuNSwxNC43OCw1LjMzLDE0LjIsOS43NmE2Ljg1LDYuODUsMCwwLDEtMyw1LjM0Yy01LjYxLDMuNzMtMTcuNDgsMS42NC0yMS4xOS42MkE2LDYsMCwwLDAsMTEwLjQ4LDIxMmE1OS40MSw1OS40MSwwLDAsMCwxNC42OCwyYzUuNDksMCwxMS41NC0uOTUsMTYuMzYtNC4xNGExOC44OSwxOC44OSwwLDAsMCw4LjMxLTEzLjgxQzE1MS44NCwxODAuMzksMTM2LjkyLDE3Ni4wOCwxMjcuMDUsMTczLjIyWm04My0yNi44OGE2LDYsMCwwLDAtNy42NywzLjYzTDE4OCwxOTAuMTUsMTczLjY1LDE1MGE2LDYsMCwxLDAtMTEuMyw0bDIwLDU2YTYsNiwwLDAsMCwxMS4zLDBsMjAtNTZBNiw2LDAsMCwwLDIxMCwxNDYuMzRaTTIxNCw4OHYyNGE2LDYsMCwxLDEtMTIsMFY5NEgxNTJhNiw2LDAsMCwxLTYtNlYzOEg1NmEyLDIsMCwwLDAtMiwydjcyYTYsNiwwLDEsMS0xMiwwVjQwQTE0LDE0LDAsMCwxLDU2LDI2aDk2YTYsNiwwLDAsMSw0LjI0LDEuNzZsNTYsNTZBNiw2LDAsMCwxLDIxNCw4OFptLTIwLjQ5LTZMMTU4LDQ2LjQ4VjgyWiIvPjwvc3ZnPg==');}.icon-file-doc{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik01MiwxNDZIMzZhNiw2LDAsMCwwLTYsNnY1NmE2LDYsMCwwLDAsNiw2SDUyYTM0LDM0LDAsMCwwLDAtNjhabTAsNTZINDJWMTU4SDUyYTIyLDIyLDAsMCwxLDAsNDRabTE2OC4xNS01LjQ2YTYsNiwwLDAsMSwuMTgsOC40OEEyOC4wNiwyOC4wNiwwLDAsMSwyMDAsMjE0Yy0xNi41NCwwLTMwLTE1LjI1LTMwLTM0czEzLjQ2LTM0LDMwLTM0YTI4LjA2LDI4LjA2LDAsMCwxLDIwLjMzLDksNiw2LDAsMCwxLTguNjYsOC4zQTE2LjIzLDE2LjIzLDAsMCwwLDIwMCwxNThjLTkuOTMsMC0xOCw5Ljg3LTE4LDIyczguMDcsMjIsMTgsMjJhMTYuMjMsMTYuMjMsMCwwLDAsMTEuNjctNS4yOEE2LDYsMCwwLDEsMjIwLjE1LDE5Ni41NFpNMTI4LDE0NmMtMTYuNTQsMC0zMCwxNS4yNS0zMCwzNHMxMy40NiwzNCwzMCwzNCwzMC0xNS4yNSwzMC0zNFMxNDQuNTQsMTQ2LDEyOCwxNDZabTAsNTZjLTkuOTMsMC0xOC05Ljg3LTE4LTIyczguMDctMjIsMTgtMjIsMTgsOS44NywxOCwyMlMxMzcuOTMsMjAyLDEyOCwyMDJaTTQ4LDExOGE2LDYsMCwwLDAsNi02VjQwYTIsMiwwLDAsMSwyLTJoOTBWODhhNiw2LDAsMCwwLDYsNmg1MHYxOGE2LDYsMCwwLDAsMTIsMFY4OGE2LDYsMCwwLDAtMS43Ni00LjI0bC01Ni01NkE2LDYsMCwwLDAsMTUyLDI2SDU2QTE0LDE0LDAsMCwwLDQyLDQwdjcyQTYsNiwwLDAsMCw0OCwxMThaTTE1OCw0Ni40OCwxOTMuNTIsODJIMTU4WiIvPjwvc3ZnPg==');}.icon-file-txt{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00OCwxMThhNiw2LDAsMCwwLDYtNlY0MGEyLDIsMCwwLDEsMi0yaDkwVjg4YTYsNiwwLDAsMCw2LDZoNTB2MThhNiw2LDAsMCwwLDEyLDBWODhhNiw2LDAsMCwwLTEuNzYtNC4yNGwtNTYtNTZBNiw2LDAsMCwwLDE1MiwyNkg1NkExNCwxNCwwLDAsMCw0Miw0MHY3MkE2LDYsMCwwLDAsNDgsMTE4Wk0xNTgsNDYuNDgsMTkzLjUyLDgySDE1OFptLTUuMTIsMTA5TDEzNS4zNywxODBsMTcuNTEsMjQuNTFhNiw2LDAsMSwxLTkuNzYsN0wxMjgsMTkwLjMybC0xNS4xMiwyMS4xN2E2LDYsMCwwLDEtOS43Ni03TDEyMC42MywxODBsLTE3LjUxLTI0LjUxYTYsNiwwLDEsMSw5Ljc2LTdMMTI4LDE2OS42OGwxNS4xMi0yMS4xN2E2LDYsMCwwLDEsOS43Niw3Wk05MCwxNTJhNiw2LDAsMCwxLTYsNkg3MHY1MGE2LDYsMCwwLDEtMTIsMFYxNThINDRhNiw2LDAsMCwxLDAtMTJIODRBNiw2LDAsMCwxLDkwLDE1MlptMTI4LDBhNiw2LDAsMCwxLTYsNkgxOTh2NTBhNiw2LDAsMCwxLTEyLDBWMTU4SDE3MmE2LDYsMCwwLDEsMC0xMmg0MEE2LDYsMCwwLDEsMjE4LDE1MloiLz48L3N2Zz4=');}.icon-file-xls{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNTQsMjA4YTYsNiwwLDAsMS02LDZIMTIwYTYsNiwwLDAsMS02LTZWMTUyYTYsNiwwLDEsMSwxMiwwdjUwaDIyQTYsNiwwLDAsMSwxNTQsMjA4Wk05MS40OCwxNDcuMTFhNiw2LDAsMCwwLTguMzYsMS4zOUw2OCwxNjkuNjcsNTIuODgsMTQ4LjVhNiw2LDAsMSwwLTkuNzYsN0w2MC42MywxODAsNDMuMTIsMjA0LjVhNiw2LDAsMSwwLDkuNzYsN0w2OCwxOTAuMzFsMTUuMTIsMjEuMTZBNiw2LDAsMCwwLDg4LDIxNGE1LjkxLDUuOTEsMCwwLDAsMy40OC0xLjEyLDYsNiwwLDAsMCwxLjQtOC4zN0w3NS4zNywxODBsMTcuNTEtMjQuNTFBNiw2LDAsMCwwLDkxLjQ4LDE0Ny4xMVpNMTkxLDE3My4yMmMtMTAuODUtMy4xMy0xMy40MS00LjY5LTEzLTcuOTFhNi41OSw2LjU5LDAsMCwxLDIuODgtNS4wOGM1LjYtMy43OSwxNy42NS0xLjgzLDIxLjQ0LS44NGE2LDYsMCwwLDAsMy4wNy0xMS42Yy0yLS41NC0yMC4xLTUtMzEuMjEsMi40OGExOC42NCwxOC42NCwwLDAsMC04LjA4LDEzLjU0Yy0xLjgsMTQuMTksMTIuMjYsMTguMjUsMjEuNTcsMjAuOTQsMTIuMTIsMy41LDE0Ljc3LDUuMzMsMTQuMiw5Ljc2YTYuODUsNi44NSwwLDAsMS0zLDUuMzRjLTUuNjEsMy43My0xNy40OCwxLjY0LTIxLjE5LjYyQTYsNiwwLDAsMCwxNzQuNDcsMjEyYTU5LjQxLDU5LjQxLDAsMCwwLDE0LjY4LDJjNS40OSwwLDExLjU0LS45NSwxNi4zNi00LjE0YTE4Ljg5LDE4Ljg5LDAsMCwwLDguMzEtMTMuODFDMjE1LjgzLDE4MC4zOSwyMDAuOTEsMTc2LjA4LDE5MSwxNzMuMjJaTTQyLDExMlY0MEExNCwxNCwwLDAsMSw1NiwyNmg5NmE2LDYsMCwwLDEsNC4yNCwxLjc2bDU2LDU2QTYsNiwwLDAsMSwyMTQsODh2MjRhNiw2LDAsMSwxLTEyLDBWOTRIMTUyYTYsNiwwLDAsMS02LTZWMzhINTZhMiwyLDAsMCwwLTIsMnY3MmE2LDYsMCwxLDEtMTIsMFpNMTU4LDgySDE5My41TDE1OCw0Ni40OFoiLz48L3N2Zz4=');}.icon-text-b-fi{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjgsMTU2YTIwLDIwLDAsMCwxLTIwLDIwSDk2VjEzNmg1MkEyMCwyMCwwLDAsMSwxNjgsMTU2Wk0yMjQsNDhWMjA4YTE2LDE2LDAsMCwxLTE2LDE2SDQ4YTE2LDE2LDAsMCwxLTE2LTE2VjQ4QTE2LDE2LDAsMCwxLDQ4LDMySDIwOEExNiwxNiwwLDAsMSwyMjQsNDhaTTE4NCwxNTZhMzYsMzYsMCwwLDAtMTgtMzEuMTVBMzYsMzYsMCwwLDAsMTQwLDY0SDg4YTgsOCwwLDAsMC04LDhWMTg0YTgsOCwwLDAsMCw4LDhoNjBBMzYsMzYsMCwwLDAsMTg0LDE1NlptLTI0LTU2YTIwLDIwLDAsMCwwLTIwLTIwSDk2djQwaDQ0QTIwLDIwLDAsMCwwLDE2MCwxMDBaIi8+PC9zdmc+');}
\ No newline at end of file
diff --git a/assets/css/icons.css b/assets/css/icons.css
new file mode 100644
index 0000000..7574cdd
--- /dev/null
+++ b/assets/css/icons.css
@@ -0,0 +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-palette{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTkuMzcsNTUuMzFBMTAxLjMyLDEwMS4zMiwwLDAsMCwxMjgsMjZoLTFBMTAyLDEwMiwwLDAsMCwyNiwxMjhjMCw0Mi4wOSwyNi4wNyw3Ny40NCw2OCw5Mi4yNkEzMC4yMSwzMC4yMSwwLDAsMCwxMDQuMTEsMjIyLDMwLjA2LDMwLjA2LDAsMCwwLDEzNCwxOTJhMTgsMTgsMCwwLDEsMTgtMThoNDYuMjFhMjkuODIsMjkuODIsMCwwLDAsMjkuMjUtMjMuMzFBMTAyLjcxLDEwMi43MSwwLDAsMCwyMzAsMTI3LjExLDEwMS4yNSwxMDEuMjUsMCwwLDAsMTk5LjM3LDU1LjMxWk0yMTUuNzYsMTQ4YTE3Ljg5LDE3Ljg5LDAsMCwxLTE3LjU1LDE0SDE1MmEzMCwzMCwwLDAsMC0zMCwzMCwxOCwxOCwwLDAsMS0yNCwxN0M2MSwxOTUuODYsMzgsMTY0Ljg1LDM4LDEyOGE5MCw5MCwwLDAsMSw4OS4wNy05MEgxMjhhOTAuMzQsOTAuMzQsMCwwLDEsOTAsODkuMjJBOTAuNDYsOTAuNDYsMCwwLDEsMjE1Ljc2LDE0OFpNMTM4LDc2YTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDEzOCw3NlpNOTQsMTAwQTEwLDEwLDAsMSwxLDg0LDkwLDEwLDEwLDAsMCwxLDk0LDEwMFptMCw1NmExMCwxMCwwLDEsMS0xMC0xMEExMCwxMCwwLDAsMSw5NCwxNTZabTg4LTU2YTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDE4MiwxMDBaIi8+PC9zdmc+');}.icon-house{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTcuOSwxMTAuMWwtODAtODBhMTQsMTQsMCwwLDAtMTkuOCwwbC04MCw4MEExMy45MiwxMy45MiwwLDAsMCwzNCwxMjB2OTZhNiw2LDAsMCwwLDYsNmg2NGE2LDYsMCwwLDAsNi02VjE1OGgzNnY1OGE2LDYsMCwwLDAsNiw2aDY0YTYsNiwwLDAsMCw2LTZWMTIwQTEzLjkyLDEzLjkyLDAsMCwwLDIxNy45LDExMC4xWk0yMTAsMjEwSDE1OFYxNTJhNiw2LDAsMCwwLTYtNkgxMDRhNiw2LDAsMCwwLTYsNnY1OEg0NlYxMjBhMiwyLDAsMCwxLC41OC0xLjQybDgwLTgwYTIsMiwwLDAsMSwyLjg0LDBsODAsODBBMiwyLDAsMCwxLDIxMCwxMjBaIi8+PC9zdmc+');}.icon-sun-dim{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjIsNDBWMzJhNiw2LDAsMCwxLDEyLDB2OGE2LDYsMCwwLDEtMTIsMFptNjgsODhhNjIsNjIsMCwxLDEtNjItNjJBNjIuMDcsNjIuMDcsMCwwLDEsMTkwLDEyOFptLTEyLDBhNTAsNTAsMCwxLDAtNTAsNTBBNTAuMDYsNTAuMDYsMCwwLDAsMTc4LDEyOFpNNTkuNzYsNjguMjRhNiw2LDAsMSwwLDguNDgtOC40OGwtOC04YTYsNiwwLDAsMC04LjQ4LDguNDhabTAsMTE5LjUyLTgsOGE2LDYsMCwxLDAsOC40OCw4LjQ4bDgtOGE2LDYsMCwxLDAtOC40OC04LjQ4Wm0xMzYtMTM2LTgsOGE2LDYsMCwxLDAsOC40OCw4LjQ4bDgtOGE2LDYsMCwwLDAtOC40OC04LjQ4Wm0uNDgsMTM2YTYsNiwwLDAsMC04LjQ4LDguNDhsOCw4YTYsNiwwLDAsMCw4LjQ4LTguNDhaTTQwLDEyMkgzMmE2LDYsMCwwLDAsMCwxMmg4YTYsNiwwLDAsMCwwLTEyWm04OCw4OGE2LDYsMCwwLDAtNiw2djhhNiw2LDAsMCwwLDEyLDB2LThBNiw2LDAsMCwwLDEyOCwyMTBabTk2LTg4aC04YTYsNiwwLDAsMCwwLDEyaDhhNiw2LDAsMCwwLDAtMTJaIi8+PC9zdmc+');}.icon-moon{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzIuMTMsMTQzLjY0YTYsNiwwLDAsMC02LTEuNDlBOTAuMDcsOTAuMDcsMCwwLDEsMTEzLjg2LDI5Ljg1YTYsNiwwLDAsMC03LjQ5LTcuNDhBMTAyLjg4LDEwMi44OCwwLDAsMCw1NC40OCw1OC42OCwxMDIsMTAyLDAsMCwwLDE5Ny4zMiwyMDEuNTJhMTAyLjg4LDEwMi44OCwwLDAsMCwzNi4zMS01MS44OUE2LDYsMCwwLDAsMjMyLjEzLDE0My42NFptLTQyLDQ4LjI5YTkwLDkwLDAsMCwxLTEyNi0xMjZBOTAuOSw5MC45LDAsMCwxLDk5LjY1LDM3LjY2LDEwMi4wNiwxMDIuMDYsMCwwLDAsMjE4LjM0LDE1Ni4zNSw5MC45LDkwLjksMCwwLDEsMTkwLjEsMTkxLjkzWiIvPjwvc3ZnPg==');}.icon-sign-out{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMTgsMjE2YTYsNiwwLDAsMS02LDZINDhhNiw2LDAsMCwxLTYtNlY0MGE2LDYsMCwwLDEsNi02aDY0YTYsNiwwLDAsMSwwLDEySDU0VjIxMGg1OEE2LDYsMCwwLDEsMTE4LDIxNlptMTEwLjI0LTkyLjI0LTQwLTQwYTYsNiwwLDAsMC04LjQ4LDguNDhMMjA5LjUxLDEyMkgxMTJhNiw2LDAsMCwwLDAsMTJoOTcuNTFsLTI5Ljc1LDI5Ljc2YTYsNiwwLDEsMCw4LjQ4LDguNDhsNDAtNDBBNiw2LDAsMCwwLDIyOC4yNCwxMjMuNzZaIi8+PC9zdmc+');}.icon-x{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDQuMjQsMTk1Ljc2YTYsNiwwLDEsMS04LjQ4LDguNDhMMTI4LDEzNi40OSw2MC4yNCwyMDQuMjRhNiw2LDAsMCwxLTguNDgtOC40OEwxMTkuNTEsMTI4LDUxLjc2LDYwLjI0YTYsNiwwLDAsMSw4LjQ4LTguNDhMMTI4LDExOS41MWw2Ny43Ni02Ny43NWE2LDYsMCwwLDEsOC40OCw4LjQ4TDEzNi40OSwxMjhaIi8+PC9zdmc+');}.icon-magnifying-glass{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjguMjQsMjE5Ljc2bC01MS4zOC01MS4zOGE4Ni4xNSw4Ni4xNSwwLDEsMC04LjQ4LDguNDhsNTEuMzgsNTEuMzhhNiw2LDAsMCwwLDguNDgtOC40OFpNMzgsMTEyYTc0LDc0LDAsMSwxLDc0LDc0QTc0LjA5LDc0LjA5LDAsMCwxLDM4LDExMloiLz48L3N2Zz4=');}.icon-x-circle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjQuMjQsMTAwLjI0LDEzNi40OCwxMjhsMjcuNzYsMjcuNzZhNiw2LDAsMSwxLTguNDgsOC40OEwxMjgsMTM2LjQ4bC0yNy43NiwyNy43NmE2LDYsMCwwLDEtOC40OC04LjQ4TDExOS41MiwxMjgsOTEuNzYsMTAwLjI0YTYsNiwwLDAsMSw4LjQ4LTguNDhMMTI4LDExOS41MmwyNy43Ni0yNy43NmE2LDYsMCwwLDEsOC40OCw4LjQ4Wk0yMzAsMTI4QTEwMiwxMDIsMCwxLDEsMTI4LDI2LDEwMi4xMiwxMDIuMTIsMCwwLDEsMjMwLDEyOFptLTEyLDBhOTAsOTAsMCwxLDAtOTAsOTBBOTAuMSw5MC4xLDAsMCwwLDIxOCwxMjhaIi8+PC9zdmc+');}.icon-city{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDAsMjEwSDIzMFY4OGE2LDYsMCwwLDAtNi02SDE2MGE2LDYsMCwwLDAtNiw2djQySDEwMlY0MGE2LDYsMCwwLDAtNi02SDMyYTYsNiwwLDAsMC02LDZWMjEwSDE2YTYsNiwwLDAsMCwwLDEySDI0MGE2LDYsMCwwLDAsMC0xMlpNMTY2LDk0aDUyVjIxMEgxNjZabS0xMiw0OHY2OEgxMDJWMTQyWk0zOCw0Nkg5MFYyMTBIMzhaTTcwLDcyVjg4YTYsNiwwLDAsMS0xMiwwVjcyYTYsNiwwLDAsMSwxMiwwWm0wLDQ4djE2YTYsNiwwLDAsMS0xMiwwVjEyMGE2LDYsMCwwLDEsMTIsMFptMCw0OHYxNmE2LDYsMCwwLDEtMTIsMFYxNjhhNiw2LDAsMCwxLDEyLDBabTUyLDE2VjE2OGE2LDYsMCwwLDEsMTIsMHYxNmE2LDYsMCwwLDEtMTIsMFptNjQsMFYxNjhhNiw2LDAsMCwxLDEyLDB2MTZhNiw2LDAsMCwxLTEyLDBabTAtNDhWMTIwYTYsNiwwLDAsMSwxMiwwdjE2YTYsNiwwLDAsMS0xMiwwWiIvPjwvc3ZnPg==');}.icon-plus-square{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzRINDhBMTQsMTQsMCwwLDAsMzQsNDhWMjA4YTE0LDE0LDAsMCwwLDE0LDE0SDIwOGExNCwxNCwwLDAsMCwxNC0xNFY0OEExNCwxNCwwLDAsMCwyMDgsMzRabTIsMTc0YTIsMiwwLDAsMS0yLDJINDhhMiwyLDAsMCwxLTItMlY0OGEyLDIsMCwwLDEsMi0ySDIwOGEyLDIsMCwwLDEsMiwyWm0tMzYtODBhNiw2LDAsMCwxLTYsNkgxMzR2MzRhNiw2LDAsMCwxLTEyLDBWMTM0SDg4YTYsNiwwLDAsMSwwLTEyaDM0Vjg4YTYsNiwwLDAsMSwxMiwwdjM0aDM0QTYsNiwwLDAsMSwxNzQsMTI4WiIvPjwvc3ZnPg==');}.icon-crosshair-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjZBMTAyLDEwMiwwLDEsMCwyMzAsMTI4LDEwMi4xMiwxMDIuMTIsMCwwLDAsMTI4LDI2Wm02LDE5MS44VjE4NGE2LDYsMCwwLDAtMTIsMHYzMy44QTkwLjE1LDkwLjE1LDAsMCwxLDM4LjIsMTM0SDcyYTYsNiwwLDAsMCwwLTEySDM4LjJBOTAuMTUsOTAuMTUsMCwwLDEsMTIyLDM4LjJWNzJhNiw2LDAsMCwwLDEyLDBWMzguMkE5MC4xNSw5MC4xNSwwLDAsMSwyMTcuOCwxMjJIMTg0YTYsNiwwLDAsMCwwLDEyaDMzLjhBOTAuMTUsOTAuMTUsMCwwLDEsMTM0LDIxNy44WiIvPjwvc3ZnPg==');}.icon-dots-six-vertical{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMDIsNjBBMTAsMTAsMCwxLDEsOTIsNTAsMTAsMTAsMCwwLDEsMTAyLDYwWm02MiwxMGExMCwxMCwwLDEsMC0xMC0xMEExMCwxMCwwLDAsMCwxNjQsNzBaTTkyLDExOGExMCwxMCwwLDEsMCwxMCwxMEExMCwxMCwwLDAsMCw5MiwxMThabTcyLDBhMTAsMTAsMCwxLDAsMTAsMTBBMTAsMTAsMCwwLDAsMTY0LDExOFpNOTIsMTg2YTEwLDEwLDAsMSwwLDEwLDEwQTEwLDEwLDAsMCwwLDkyLDE4NlptNzIsMGExMCwxMCwwLDEsMCwxMCwxMEExMCwxMCwwLDAsMCwxNjQsMTg2WiIvPjwvc3ZnPg==');}.icon-plus{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTYsNiwwLDAsMS02LDZIMTM0djgyYTYsNiwwLDAsMS0xMiwwVjEzNEg0MGE2LDYsMCwwLDEsMC0xMmg4MlY0MGE2LDYsMCwwLDEsMTIsMHY4Mmg4MkE2LDYsMCwwLDEsMjIyLDEyOFoiLz48L3N2Zz4=');}.icon-floppy-disk{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTcuOSw3My40MiwxODIuNTgsMzguMWExMy45LDEzLjksMCwwLDAtOS44OS00LjFINDhBMTQsMTQsMCwwLDAsMzQsNDhWMjA4YTE0LDE0LDAsMCwwLDE0LDE0SDIwOGExNCwxNCwwLDAsMCwxNC0xNFY4My4zMUExMy45LDEzLjksMCwwLDAsMjE3LjksNzMuNDJaTTE3MCwyMTBIODZWMTUyYTIsMiwwLDAsMSwyLTJoODBhMiwyLDAsMCwxLDIsMlptNDAtMmEyLDIsMCwwLDEtMiwySDE4MlYxNTJhMTQsMTQsMCwwLDAtMTQtMTRIODhhMTQsMTQsMCwwLDAtMTQsMTR2NThINDhhMiwyLDAsMCwxLTItMlY0OGEyLDIsMCwwLDEsMi0ySDE3Mi42OWEyLDIsMCwwLDEsMS40MS41OEwyMDkuNDIsODEuOWEyLDIsMCwwLDEsLjU4LDEuNDFaTTE1OCw3MmE2LDYsMCwwLDEtNiw2SDk2YTYsNiwwLDAsMSwwLTEyaDU2QTYsNiwwLDAsMSwxNTgsNzJaIi8+PC9zdmc+');}.icon-pencil-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjUuOSw3NC43OCwxODEuMjEsMzAuMDlhMTQsMTQsMCwwLDAtMTkuOCwwTDM4LjEsMTUzLjQxYTEzLjk0LDEzLjk0LDAsMCwwLTQuMSw5LjlWMjA4YTE0LDE0LDAsMCwwLDE0LDE0SDkyLjY5YTEzLjk0LDEzLjk0LDAsMCwwLDkuOS00LjFMMjI1LjksOTQuNThhMTQsMTQsMCwwLDAsMC0xOS44Wk05NC4xLDIwOS40MWEyLDIsMCwwLDEtMS40MS41OUg0OGEyLDIsMCwwLDEtMi0yVjE2My4zMWEyLDIsMCwwLDEsLjU5LTEuNDFMMTM2LDcyLjQ4LDE4My41MSwxMjBaTTIxNy40MSw4Ni4xLDE5MiwxMTEuNTEsMTQ0LjQ5LDY0LDE2OS45LDM4LjU4YTIsMiwwLDAsMSwyLjgzLDBsNDQuNjgsNDQuNjlhMiwyLDAsMCwxLDAsMi44M1oiLz48L3N2Zz4=');}.icon-scribble{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDQuMjUsMTg4LjI0YTE2LjYzLDE2LjYzLDAsMCwwLDAsMjMuNTIsNiw2LDAsMSwxLTguNDgsOC40OCwyOC42MSwyOC42MSwwLDAsMSwwLTQwLjQ4bDkuMzctOS4zOGExNi42MywxNi42MywwLDAsMC0yMy41Mi0yMy41MWwtNjYuNzUsNjYuNzVhMjguNjMsMjguNjMsMCwwLDEtNDAuNDktNDAuNDlsOTguNzYtOTguNzVhMTYuNjMsMTYuNjMsMCwwLDAtMjMuNTItMjMuNTFMODIuODYsMTE3LjYyQTI4LjYzLDI4LjYzLDAsMCwxLDQyLjM3LDc3LjEzTDgzLjc1LDM1Ljc2YTYsNiwwLDEsMSw4LjQ5LDguNDhMNTAuODYsODUuNjJhMTYuNjMsMTYuNjMsMCwwLDAsMjMuNTIsMjMuNTFsNjYuNzUtNjYuNzVhMjguNjMsMjguNjMsMCwwLDEsNDAuNDksNDAuNDlMODIuODYsMTgxLjYyYTE2LjYzLDE2LjYzLDAsMCwwLDIzLjUyLDIzLjUxbDY2Ljc2LTY2Ljc1YTI4LjYzLDI4LjYzLDAsMCwxLDQwLjQ5LDQwLjQ5WiIvPjwvc3ZnPg==');}.icon-shapes{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik02OS42OSw2Mi4xYTYsNiwwLDAsMC0xMS4zOCwwbC00MCwxMjBBNiw2LDAsMCwwLDI0LDE5MGg4MGE2LDYsMCwwLDAsNS42OS03LjlaTTMyLjMyLDE3OCw2NCw4M2wzMS42OCw5NVpNMjA2LDc2YTUwLDUwLDAsMSwwLTUwLDUwQTUwLjA2LDUwLjA2LDAsMCwwLDIwNiw3NlptLTg4LDBhMzgsMzgsMCwxLDEsMzgsMzhBMzgsMzgsMCwwLDEsMTE4LDc2Wm0xMDYsNzBIMTM2YTYsNiwwLDAsMC02LDZ2NTZhNiw2LDAsMCwwLDYsNmg4OGE2LDYsMCwwLDAsNi02VjE1MkE2LDYsMCwwLDAsMjI0LDE0NlptLTYsNTZIMTQyVjE1OGg3NloiLz48L3N2Zz4=');}.icon-folder{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTYsNzRIMTMwLjQ5bC0yNy45LTI3LjlhMTMuOTQsMTMuOTQsMCwwLDAtOS45LTQuMUg0MEExNCwxNCwwLDAsMCwyNiw1NlYyMDAuNjJBMTMuMzksMTMuMzksMCwwLDAsMzkuMzgsMjE0SDIxNi44OUExMy4xMiwxMy4xMiwwLDAsMCwyMzAsMjAwLjg5Vjg4QTE0LDE0LDAsMCwwLDIxNiw3NFpNNDAsNTRIOTIuNjlhMiwyLDAsMCwxLDEuNDEuNTlMMTEzLjUxLDc0SDM4VjU2QTIsMiwwLDAsMSw0MCw1NFpNMjE4LDIwMC44OWExLjExLDEuMTEsMCwwLDEtMS4xMSwxLjExSDM5LjM4QTEuNCwxLjQsMCwwLDEsMzgsMjAwLjYyVjg2SDIxNmEyLDIsMCwwLDEsMiwyWiIvPjwvc3ZnPg==');}.icon-hash{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsOTBIMTczbDguODktNDguOTNhNiw2LDAsMSwwLTExLjgtMi4xNEwxNjAuODEsOTBIMTA5bDguODktNDguOTNhNiw2LDAsMCwwLTExLjgtMi4xNEw5Ni44MSw5MEg0OGE2LDYsMCwwLDAsMCwxMkg5NC42M2wtOS40Niw1MkgzMmE2LDYsMCwwLDAsMCwxMkg4M0w3NC4xLDIxNC45M2E2LDYsMCwwLDAsNC44Myw3QTUuNjQsNS42NCwwLDAsMCw4MCwyMjJhNiw2LDAsMCwwLDUuODktNC45M0w5NS4xOSwxNjZIMTQ3bC04Ljg5LDQ4LjkzYTYsNiwwLDAsMCw0LjgzLDcsNS42NCw1LjY0LDAsMCwwLDEuMDguMSw2LDYsMCwwLDAsNS44OS00LjkzTDE1OS4xOSwxNjZIMjA4YTYsNiwwLDAsMCwwLTEySDE2MS4zN2w5LjQ2LTUySDIyNGE2LDYsMCwwLDAsMC0xMlptLTc0LjgzLDY0SDk3LjM3bDkuNDYtNTJoNTEuOFoiLz48L3N2Zz4=');}.icon-brackets-angle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik04NS4wNiw0My4yMiwzMS4xMSwxMjhsNTQsODQuNzhhNiw2LDAsMCwxLTEuODQsOC4yOCw2LDYsMCwwLDEtOC4yOC0xLjg0bC01Ni04OGE2LDYsMCwwLDEsMC02LjQ0bDU2LTg4YTYsNiwwLDAsMSwxMC4xMiw2LjQ0Wm0xNTIsODEuNTYtNTYtODhhNiw2LDAsMSwwLTEwLjEyLDYuNDRMMjI0Ljg5LDEyOGwtNTMuOTUsODQuNzhhNiw2LDAsMCwwLDEuODQsOC4yOCw2LDYsMCwwLDAsOC4yOC0xLjg0bDU2LTg4QTYsNiwwLDAsMCwyMzcuMDYsMTI0Ljc4WiIvPjwvc3ZnPg==');}.icon-brain{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsMTI0YTU0LjEzLDU0LjEzLDAsMCwwLTMyLTQ5LjMzVjcyYTQ2LDQ2LDAsMCwwLTg2LTIyLjY3QTQ2LDQ2LDAsMCwwLDQyLDcydjIuNjdhNTQsNTQsMCwwLDAsMCw5OC42M1YxNzZhNDYsNDYsMCwwLDAsODYsMjIuNjdBNDYsNDYsMCwwLDAsMjE0LDE3NnYtMi43QTU0LjA3LDU0LjA3LDAsMCwwLDI0NiwxMjRaTTg4LDIxMGEzNCwzNCwwLDAsMS0zNC0zMi45NEE1My42Nyw1My42NywwLDAsMCw2NCwxNzhoOGE2LDYsMCwwLDAsMC0xMkg2NEE0Miw0MiwwLDAsMSw1MCw4NC4zOWE2LDYsMCwwLDAsNC01LjY2VjcyYTM0LDM0LDAsMCwxLDY4LDB2NzMuMDVBNDUuODksNDUuODksMCwwLDAsODgsMTMwYTYsNiwwLDAsMCwwLDEyLDM0LDM0LDAsMCwxLDAsNjhabTEwNC00NGgtOGE2LDYsMCwwLDAsMCwxMmg4YTUzLjY3LDUzLjY3LDAsMCwwLDEwLS45NEEzNCwzNCwwLDEsMSwxNjgsMTQyYTYsNiwwLDAsMCwwLTEyLDQ1Ljg5LDQ1Ljg5LDAsMCwwLTM0LDE1LjA1VjcyYTM0LDM0LDAsMCwxLDY4LDB2Ni43M2E2LDYsMCwwLDAsNCw1LjY2QTQyLDQyLDAsMCwxLDE5MiwxNjZabTE0LTU0YTYsNiwwLDAsMS02LDZoLTRhMzQsMzQsMCwwLDEtMzQtMzRWODBhNiw2LDAsMCwxLDEyLDB2NGEyMiwyMiwwLDAsMCwyMiwyMmg0QTYsNiwwLDAsMSwyMDYsMTEyWk02MCwxMThINTZhNiw2LDAsMCwxLDAtMTJoNEEyMiwyMiwwLDAsMCw4Miw4NFY4MGE2LDYsMCwwLDEsMTIsMHY0QTM0LDM0LDAsMCwxLDYwLDExOFoiLz48L3N2Zz4=');}.icon-question{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMzgsMTgwYTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDEzOCwxODBaTTEyOCw3NGMtMjEsMC0zOCwxNS4yNS0zOCwzNHY0YTYsNiwwLDAsMCwxMiwwdi00YzAtMTIuMTMsMTEuNjYtMjIsMjYtMjJzMjYsOS44NywyNiwyMi0xMS42NiwyMi0yNiwyMmE2LDYsMCwwLDAtNiw2djhhNiw2LDAsMCwwLDEyLDB2LTIuNDJjMTguMTEtMi41OCwzMi0xNi42NiwzMi0zMy41OEMxNjYsODkuMjUsMTQ5LDc0LDEyOCw3NFptMTAyLDU0QTEwMiwxMDIsMCwxLDEsMTI4LDI2LDEwMi4xMiwxMDIuMTIsMCwwLDEsMjMwLDEyOFptLTEyLDBhOTAsOTAsMCwxLDAtOTAsOTBBOTAuMSw5MC4xLDAsMCwwLDIxOCwxMjhaIi8+PC9zdmc+');}.icon-pen-nib{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsOTIuNjhhMTMuOTQsMTMuOTQsMCwwLDAtNC4xLTkuOUwxNzMuMjEsMTQuMWExNCwxNCwwLDAsMC0xOS44LDBMMTI0LjY4LDQyLjgzLDY2LjIyLDY0Ljc2YTE0LDE0LDAsMCwwLTguOSwxMC44TDM0LjA4LDIxNUE2LDYsMCwwLDAsNDAsMjIyYTYuNjEsNi42MSwwLDAsMCwxLS4wOGwxMzkuNDQtMjMuMjRhMTQsMTQsMCwwLDAsMTAuODEtOC45bDIxLjkyLTU4LjQ2LDI4Ljc0LTI4Ljc0QTEzLjkyLDEzLjkyLDAsMCwwLDI0Niw5Mi42OFptLTY2LDkyLjg5YTIsMiwwLDAsMS0xLjU0LDEuMjdMNTcuNDksMjA3bDUyLjg3LTUyLjg4YTI2LDI2LDAsMSwwLTguNDgtOC40OEw0OSwxOTguNTNsMjAuMTctMTIxQTIsMiwwLDAsMSw3MC40Myw3Nmw1Ni4wNi0yMUwyMDEsMTI5LjUxWk0xMTAsMTMyYTE0LDE0LDAsMSwxLDE0LDE0QTE0LDE0LDAsMCwxLDExMCwxMzJaTTIzMy40MSw5NC4xLDIwOCwxMTkuNTEsMTM2LjQ4LDQ4LDE2MS45LDIyLjU4YTIsMiwwLDAsMSwyLjgzLDBsNjguNjgsNjguNjlhMiwyLDAsMCwxLDAsMi44M1oiLz48L3N2Zz4=');}.icon-list{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTYsNiwwLDAsMS02LDZINDBhNiw2LDAsMCwxLDAtMTJIMjE2QTYsNiwwLDAsMSwyMjIsMTI4Wk00MCw3MEgyMTZhNiw2LDAsMCwwLDAtMTJINDBhNiw2LDAsMCwwLDAsMTJaTTIxNiwxODZINDBhNiw2LDAsMCwwLDAsMTJIMjE2YTYsNiwwLDAsMCwwLTEyWiIvPjwvc3ZnPg==');}.icon-loading{--icon:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2Zw0gICAgd2lkdGg9IjMyIg0gICAgaGVpZ2h0PSIzMiINICAgIHZpZXdCb3g9IjAgMCAzMiAzMiINICAgIHZlcnNpb249IjEuMSINICAgIHhtbDpzcGFjZT0icHJlc2VydmUiDSAgICBzdHlsZT0iY2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEuNSINICAgIGlkPSJzdmcxMCINICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINICAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzDSAgICBpZD0iZGVmczEwIiAvPjxwYXRoDSAgICBpZD0icGF0aDExIg0gICAgc3R5bGU9ImJhc2VsaW5lLXNoaWZ0OmJhc2VsaW5lO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6IzIyMjIyMjtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MSINICAgIGQ9Im0gMTYuNjIxMDk0LDEuMTQyNTc4MSBjIC04LjI2NjMyMzIsMCAtMTYuMjIwODY3MzgsNi40NDI4MDk1IC0xNS41ODU5Mzc4LDE0LjY4NTU0NjkgMC42MDEzNDU1LDcuODA3MzA4IDcuNDM0MTI2NCwxNC4xMjY5OCAxNC45MzM1OTM4LDE0Ljk0MzM1OSA4LjgzOTg0NSwwLjk2MjI4MyAxNS41MDU0NjksLTYuMzc2OTE5IDE1LjAwNTg1OSwtMTQuOTg2MzI4IEMgMzAuNDk1OSw3LjUzNjI2ODQgMjQuODgzMzk3LDEuMTQyNTc4MSAxNi42MjEwOTQsMS4xNDI1NzgxIFogbSAwLDAuNjUwMzkwNyBDIDI2LjQ4ODc4NiwxLjgwMzg2NDUgMjkuNzE0NTE4LDkuNTkzNTgzMyAzMC4zMDI3MzQsMTUuODA0Njg4IDMxLjE0MTk4MiwyNC42NjYzNjUgMjIuMTYwNDU5LDMxLjE2ODA3NyAxNi4wMzkwNjIsMzAuMTI1IDguODk1MTMyNywyOC45MDc2ODEgMi4yNjEzMTQyLDIzLjI3OTM3NiAxLjY4MzU5MzgsMTUuNzc5Mjk3IDEuMDc2OTMzOCw3LjkwMzI3NTQgOC43MjI1NDUxLDEuNzg0MjY5OSAxNi42MjEwOTQsMS43OTI5Njg4IFogbSAtMC4wNjQ0NSwxLjIxODc1IGMgLTMuNjEwMDgzLDAgLTcuMTU0Nzk5NSwxLjQwMTA2ODcgLTkuNzMwNDY5MSwzLjcwMzEyNSBDIDQuMjUwNTAyMyw5LjAxNjkwMDIgMi42NDIwMzcyLDEyLjIyNjI5NSAyLjkxOTkyMTksMTUuODMzOTg0IDMuNDQ2OTM1LDIyLjY3NTcxMiA5LjQyODk2NDksMjguMTk4OTg1IDE1Ljk5ODA0NywyOC45MTQwNjIgMjMuNzE0MjU2LDI5Ljc1NDAyMyAyOS41MzE2MDMsMjMuMzMxNyAyOS4wOTU3MDMsMTUuODIwMzEyIDI4LjY3Nzk0OCw4LjYyMTM5NTMgMjMuNzc2Njg2LDMuMDExNzE4OCAxNi41NTY2NDEsMy4wMTE3MTg4IFogbSAwLDAuMTk1MzEyNCBjIDcuMTE5MTM0LDAgMTEuOTMyNzEsNS41MDgxMzczIDEyLjM0NTcwMywxMi42MjQ5OTk4IEMgMjkuMzMyMDYyLDIzLjIzNjg5NiAyMy42MTg5NTgsMjkuNTQ1OTk4IDE2LjAxOTUzMSwyOC43MTg3NSA5LjU0NTQzMjEsMjguMDE0MDEyIDMuNjM0MTYzNywyMi41NTUxNDMgMy4xMTUyMzQ0LDE1LjgxODM1OSAyLjg0MjQ1NjMsMTIuMjc2OTY3IDQuNDE4NDEwOSw5LjEyODMxNjkgNi45NTcwMzEyLDYuODU5Mzc1IDkuNDk1NjUxNiw0LjU5MDQzMzEgMTIuOTk3MDkzLDMuMjA3MDMxMiAxNi41NTY2NDEsMy4yMDcwMzEyIFogbSAtMC4wNzAzMSwxLjQxNjAxNTcgYyAtMy4xNjE5NzMsMCAtNi4yNjM1MDksMS4yMjU4MTM5IC04LjUxOTUzMTEsMy4yNDIxODc1IEMgNS43MTA3NjkxLDkuODgxNjA4IDQuMzAxNDU0MiwxMi42OTQ1ODkgNC41NDQ5MjE5LDE1Ljg1NTQ2OSA1LjAwNjU2MjQsMjEuODQ4NTU0IDEwLjI0NDE3OCwyNi42ODYxNTkgMTUuOTk4MDQ3LDI3LjMxMjUgMjIuNzU3MDEzLDI4LjA0ODI2MSAyNy44NTQ0NTEsMjIuNDIwOTM2IDI3LjQ3MjY1NiwxNS44NDE3OTcgMjcuMTA2ODI0LDkuNTM3NjAyNSAyMi44MTAxNiw0LjYyMzA0NjkgMTYuNDg2MzI4LDQuNjIzMDQ2OSBaIG0gMCwwLjE5NTMxMjUgYyA2LjIyMjkyLDAgMTAuNDI5OTQ2LDQuODEzMDEzOCAxMC43OTEwMTYsMTEuMDM1MTU2NiAwLjM3NTYxMyw2LjQ3MjYxNSAtNC42MTc1ODQsMTEuOTg2NzIgLTExLjI1OTc2NiwxMS4yNjM2NzIgQyAxMC4zNTg2ODUsMjYuNTAxMTg2IDUuMTkxODM4MSwyMS43Mjc5ODUgNC43MzgyODEyLDE1LjgzOTg0NCA0LjQ5OTkyMDEsMTIuNzQ1MjYyIDUuODc2NzMxNSw5Ljk5NDk3NzggOC4wOTU3MDMxLDguMDExNzE4OCAxMC4zMTQ2NzUsNi4wMjg0NTk1IDEzLjM3NDg5LDQuODE4MzU5NCAxNi40ODYzMjgsNC44MTgzNTk0IFogbSAtMC4wNjgzNiwxLjQxNjAxNTYgYyAtMi43MTM4NzcsMCAtNS4zNzYxMTgsMS4wNTI1MTY0IC03LjMxMjUwMDIsMi43ODMyMDMxIC0xLjkzNjM4MjgsMS43MzA2ODY5IC0zLjE0NjU1MTcsNC4xNDUzMTE5IC0yLjkzNzUsNi44NTkzNzQ5IDAuMzk2MjY5OSw1LjE0NDQzIDQuODg5NDQ0Miw5LjI5NDQyOSA5LjgyODEyNTIsOS44MzIwMzEgNS44MDE3NDksMC42MzE1NjIgMTAuMTc5MjU3LC00LjE5ODgyOCA5Ljg1MTU2MiwtOS44NDU3MDMgQyAyNS41MzM3NSwxMC40NTM4MjIgMjEuODQ1NjE2LDYuMjM0Mzc1IDE2LjQxNzk3NCw2LjIzNDM3NSBaIG0gMCwwLjE5NTMxMjUgYyA1LjMyNjczLDAgOC45MjUyMjYsNC4xMTc5MDU1IDkuMjM0Mzc1LDkuNDQ1MzEyNSAwLjMyMTUxMyw1LjU0MDM1MSAtMy45NDk4MDEsMTAuMjU5NDc0IC05LjYzNDc2Niw5LjY0MDYyNSBDIDExLjE3Mzg3NSwyNC45ODgzNjIgNi43NDk1MTQzLDIwLjkwMDgxNCA2LjM2MTMyODEsMTUuODYxMzI4IDYuMTU3MzgzMSwxMy4yMTM1NjMgNy4zMzUwNDMxLDEwLjg1OTY4MiA5LjIzNDM3NSw5LjE2MjEwOTQgMTEuMTMzNzA3LDcuNDY0NTM3MiAxMy43NTQ2MjgsNi40Mjk2ODc1IDE2LjQxNzk2OSw2LjQyOTY4NzUgWiBtIC0wLjA2ODM2LDEuNDE2MDE1NiBjIC0yLjI2NTc3NSwwIC00LjQ4ODcyOSwwLjg3OTIxOTYgLTYuMTA1NDY4LDIuMzI0MjE4OSAtMS42MTY3NDA4LDEuNDQ0OTk5IC0yLjYyNzc2MDcsMy40NjEyNjkgLTIuNDUzMTI1NCw1LjcyODUxNiAwLjMzMDg5ODYsNC4yOTU3NjggNC4wODE1OTY0LDcuNzYwMTIgOC4yMDUwNzg0LDguMjA4OTg0IDQuODQ0NTI1LDAuNTI3MzYgOC41MDAxNTYsLTMuNTA2MDk3IDguMjI2NTYyLC04LjIyMDcwMyBDIDIzLjk2MDY3MiwxMS4zNzE5OTYgMjAuODgxMDYsNy44NDU3MDMxIDE2LjM0OTYxNCw3Ljg0NTcwMzEgWiBtIDAsMC4xOTUzMTI1IGMgNC40MzA1MzQsMCA3LjQyMjQ2MSwzLjQyMjc5OTQgNy42Nzk2ODgsNy44NTU0Njg0IDAuMjY3NDEyLDQuNjA4MDgyIC0zLjI4Mzk3OCw4LjUzMjIyNiAtOC4wMTE3MTksOC4wMTc1NzggQyAxMS45ODkwNzUsMjMuNDc1NTM4IDguMzA3MTg5OSwyMC4wNzU1OTMgNy45ODQzNzUsMTUuODg0NzY2IDcuODE0ODQ2MywxMy42ODM4MTkgOC43OTUzMTA1LDExLjcyNjMzOCAxMC4zNzUsMTAuMzE0NDUzIDExLjk1NDY4OSw4LjkwMjU2ODkgMTQuMTM0MzcsOC4wNDEwMTU2IDE2LjM0OTYwOSw4LjA0MTAxNTYgWiBtIC0wLjA2ODM2LDEuNDE2MDE1NiBjIC0xLjgxNzY3MiwwIC0zLjYwMTM0MiwwLjcwMzk2ODggLTQuODk4NDM4LDEuODYzMjgwOCAtMS4yOTcwOTUsMS4xNTkzMSAtMi4xMDg5NjgzLDIuNzc5MTg1IC0xLjk2ODc0OTUsNC41OTk2MSAwLjI2NTUyNjksMy40NDcxMTEgMy4yNzM3NTA1LDYuMjI1ODEzIDYuNTgyMDMxNSw2LjU4NTkzNyAzLjg4NzI5NSwwLjQyMzE2IDYuODIzMDA4LC0yLjgxNTMxOCA2LjYwMzUxNSwtNi41OTc2NTYgQyAyMi4zODk1NDEsMTIuMjg4MjIyIDE5LjkxNjQ5NSw5LjQ1NzAzMTEgMTYuMjgxMjUsOS40NTcwMzEyIFogbSAwLDAuMTk1MzEyNiBjIDMuNTM0MzMzLDAgNS45MTc3NDIsMi43Mjc2OTYyIDYuMTIzMDQ3LDYuMjY1NjI1MiAwLjIxMzMxMSwzLjY3NTgxNCAtMi42MTYyMDgsNi44MDMwMjUgLTYuMzg2NzE5LDYuMzkyNTc4IC0zLjIxMzI5OCwtMC4zNDk3ODUgLTYuMTUwNzU5NywtMy4wNjIxMyAtNi40MDgyMDMsLTYuNDA0Mjk3IC0wLjEzNTExMjIsLTEuNzU0MTI3IDAuNjQ0MjUyLC0zLjMxMzI1NyAxLjkwNDI5NywtNC40Mzk0NTMgMS4yNjAwNDUsLTEuMTI2MTk2IDMuMDAwNDQxLC0xLjgxNDQ1MzMgNC43Njc1NzgsLTEuODE0NDUzMiB6IG0gLTAuMDcwMzEsMS40MTYwMTUyIGMgLTEuMzY5NTcyLDAgLTIuNzEyLDAuNTMwNjc1IC0zLjY4OTQ1NCwxLjQwNDI5NyAtMC45Nzc0NTMsMC44NzM2MjIgLTEuNTkwMTc3LDIuMDk1MTQ1IC0xLjQ4NDM3NSwzLjQ2ODc1IDAuMjAwMTU2LDIuNTk4NDUyIDIuNDY1OSw0LjY4OTU1MSA0Ljk1ODk4NSw0Ljk2MDkzOCAyLjkzMDA3LDAuMzE4OTU4IDUuMTQzOTA4LC0yLjEyMjU4NyA0Ljk3ODUxNSwtNC45NzI2NTYgLTAuMTU4MTQ1LC0yLjcyNTI0NCAtMi4wMjQ2MjIsLTQuODYxMzI5IC00Ljc2MzY3MSwtNC44NjEzMjkgeiBtIDAsMC4xOTUzMTMgYyAyLjYzODEzNSwwIDQuNDE0OTc1LDIuMDM0NTQ0IDQuNTY4MzU5LDQuNjc3NzM0IDAuMTU5MjExLDIuNzQzNTQ2IC0xLjk1MDM4Niw1LjA3MzgyNCAtNC43NjM2NzIsNC43Njc1NzggLTIuMzk4MTAyLC0wLjI2MTA0NyAtNC41OTExMzEsLTIuMjg3NzQxIC00Ljc4MzIwMywtNC43ODEyNSAtMC4xMDA2OTYsLTEuMzA3MzA4IDAuNDc5NTE5LC0yLjQ3MDAzOSAxLjQxOTkyMiwtMy4zMTA1NDYgMC45NDA0MDMsLTAuODQwNTA4IDIuMjM5NTU3LC0xLjM1MzUxNiAzLjU1ODU5NCwtMS4zNTM1MTYgeiBtIC0wLjA2ODM2LDEuNDE2MDE2IGMgLTAuOTIxNDcyLDAgLTEuODIyNjU3LDAuMzU1NDI1IC0yLjQ4MDQ2OSwwLjk0MzM1OSAtMC42NTc4MTEsMC41ODc5MzQgLTEuMDczMzM5LDEuNDE1MDEgLTEuMDAxOTUzLDIuMzQxNzk3IDAuMTM0Nzg1LDEuNzQ5NzkyIDEuNjU2MDk1LDMuMTUzMjkxIDMuMzMzOTg1LDMuMzM1OTM3IDEuOTcyODQ2LDAuMjE0NzU5IDMuNDY2NzYsLTEuNDMxODA5IDMuMzU1NDY4LC0zLjM0OTYwOSAtMC4xMDYyMjQsLTEuODMwNTAzIC0xLjM2NDE3NywtMy4yNzE0ODcgLTMuMjA3MDMxLC0zLjI3MTQ4NCB6IG0gMCwwLjE5NTMxMiBjIDEuNzQxOTQyLDAgMi45MTIyMDksMS4zMzk0NCAzLjAxMzY3MiwzLjA4Nzg5MSAwLjEwNTExLDEuODExMjc2IC0xLjI4NDU2MiwzLjM0NjU3NyAtMy4xNDA2MjUsMy4xNDQ1MzEgLTEuNTgyOTA3LC0wLjE3MjMwNyAtMy4wMzM0NTUsLTEuNTEzMzU1IC0zLjE2MDE1NiwtMy4xNTgyMDMgLTAuMDY2MjgsLTAuODYwNDkgMC4zMTQ3ODUsLTEuNjI0ODY4IDAuOTM1NTQ3LC0yLjE3OTY4OCAwLjYyMDc0OSwtMC41NTQ4MTkgMS40ODA2MiwtMC44OTQ1MzEgMi4zNTE1NTYsLTAuODk0NTMxIHogbSAtMC4wNjgzNiwxLjQxNjAxNiBjIC0wLjQ3MzM2OSwwIC0wLjkzNTI3MSwwLjE4MjEyOSAtMS4yNzM0MzgsMC40ODQzNzUgLTAuMzM4MTY3LDAuMzAyMjQ2IC0wLjU1NDU0NiwwLjczMDk2OSAtMC41MTc1NzgsMS4yMTA5MzcgMC4wNjk0MSwwLjkwMTEzMyAwLjg0ODI0OSwxLjYxODk4MSAxLjcxMDkzOCwxLjcxMjg5MSAxLjAxNTYxNiwwLjExMDU1NyAxLjc4OTYxNCwtMC43NDEwMzEgMS43MzI0MjEsLTEuNzI2NTYzIC0wLjA1NDMsLTAuOTM1NzY2IC0wLjcwNTY5MSwtMS42ODE2NCAtMS42NTIzNDMsLTEuNjgxNjQgeiBtIDAsMC4xOTUzMTIgYyAwLjg0NTc0LDAgMS40MDc0OSwwLjY0NDMzMyAxLjQ1NzAzMSwxLjQ5ODA0NyAwLjA1MTAxLDAuODc5MDA4IC0wLjYxNjc5MywxLjYxOTMyOSAtMS41MTU2MjUsMS41MjE0ODQgLTAuNzY3NzA2LC0wLjA4MzU3IC0xLjQ3NTc4LC0wLjczODk2NyAtMS41MzcxMDksLTEuNTM1MTU2IC0wLjAzMTg2LC0wLjQxMzY3MSAwLjE1MDA1NSwtMC43Nzk2OTcgMC40NTExNzIsLTEuMDQ4ODI4IDAuMzAxMTE2LC0wLjI2OTEzMSAwLjcyMTY5OCwtMC40MzU1NDcgMS4xNDQ1MzEsLTAuNDM1NTQ3IHoiIC8+PC9zdmc+');}.icon-infinity{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDYsMTI4YTU0LDU0LDAsMCwxLTkyLjE4LDM4LjE4LDMuMDcsMy4wNywwLDAsMS0uMjUtLjI2bC02MC02Ny43NGE0Miw0MiwwLDEsMCwwLDU5LjY0bDguNTctOS42N2E2LDYsMCwxLDEsOSw4bC04LjY5LDkuODFhMy4wNywzLjA3LDAsMCwxLS4yNS4yNiw1NCw1NCwwLDEsMSwwLTc2LjM2LDMuMDcsMy4wNywwLDAsMSwuMjUuMjZsNjAsNjcuNzRhNDIsNDIsMCwxLDAsMC01OS42NGwtOC41Nyw5LjY3YTYsNiwwLDEsMS05LThsOC42OS05LjgxYTMuMDcsMy4wNywwLDAsMSwuMjUtLjI2QTU0LDU0LDAsMCwxLDI0NiwxMjhaIi8+PC9zdmc+');}.icon-arrow-counter-clockwise{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjIsMTI4YTk0LDk0LDAsMCwxLTkyLjc0LDk0SDEyOGE5My40Myw5My40MywwLDAsMS02NC41LTI1LjY1LDYsNiwwLDEsMSw4LjI0LTguNzJBODIsODIsMCwxLDAsNzAsNzBsLS4xOS4xOUwzOS40NCw5OEg3MmE2LDYsMCwwLDEsMCwxMkgyNGE2LDYsMCwwLDEtNi02VjU2YTYsNiwwLDAsMSwxMiwwVjkwLjM0TDYxLjYzLDYxLjRBOTQsOTQsMCwwLDEsMjIyLDEyOFoiLz48L3N2Zz4=');}.icon-clock{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjZBMTAyLDEwMiwwLDEsMCwyMzAsMTI4LDEwMi4xMiwxMDIuMTIsMCwwLDAsMTI4LDI2Wm0wLDE5MmE5MCw5MCwwLDEsMSw5MC05MEE5MC4xLDkwLjEsMCwwLDEsMTI4LDIxOFptNjItOTBhNiw2LDAsMCwxLTYsNkgxMjhhNiw2LDAsMCwxLTYtNlY3MmE2LDYsMCwwLDEsMTIsMHY1MGg1MEE2LDYsMCwwLDEsMTkwLDEyOFoiLz48L3N2Zz4=');}.icon-x-square{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzRINDhBMTQsMTQsMCwwLDAsMzQsNDhWMjA4YTE0LDE0LDAsMCwwLDE0LDE0SDIwOGExNCwxNCwwLDAsMCwxNC0xNFY0OEExNCwxNCwwLDAsMCwyMDgsMzRabTIsMTc0YTIsMiwwLDAsMS0yLDJINDhhMiwyLDAsMCwxLTItMlY0OGEyLDIsMCwwLDEsMi0ySDIwOGEyLDIsMCwwLDEsMiwyWk0xNjQuMjQsMTAwLjI0LDEzNi40OCwxMjhsMjcuNzYsMjcuNzZhNiw2LDAsMSwxLTguNDgsOC40OEwxMjgsMTM2LjQ4bC0yNy43NiwyNy43NmE2LDYsMCwwLDEtOC40OC04LjQ4TDExOS41MiwxMjgsOTEuNzYsMTAwLjI0YTYsNiwwLDAsMSw4LjQ4LTguNDhMMTI4LDExOS41MmwyNy43Ni0yNy43NmE2LDYsMCwwLDEsOC40OCw4LjQ4WiIvPjwvc3ZnPg==');}.icon-eye-closed{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjkuMjEsMTY1YTYsNiwwLDAsMS0xMC40Miw2bC0yMC0zNS4wOGExMjIsMTIyLDAsMCwxLTM5LDE4LjA5bDYuMTcsMzdhNiw2LDAsMCwxLTQuOTMsNi45MSw2Ljg1LDYuODUsMCwwLDEtMSwuMDgsNiw2LDAsMCwxLTUuOTEtNUwxNDgsMTU2LjQ0YTEyOC44NiwxMjguODYsMCwwLDEtNDAsMEwxMDEuOTIsMTkzQTYsNiwwLDAsMSw5NiwxOThhNi44NSw2Ljg1LDAsMCwxLTEtLjA4QTYsNiwwLDAsMSw5MC4wOCwxOTFsNi4xNy0zN2ExMjIsMTIyLDAsMCwxLTM5LTE4LjA5TDM3LjIxLDE3MWE2LDYsMCwxLDEtMTAuNDItNmwyMC44NS0zNi40OGExNTIsMTUyLDAsMCwxLTIwLjMxLTIwLjc3LDYsNiwwLDAsMSw5LjM0LTcuNTRDNTMuNTQsMTIxLjExLDgzLjA3LDE0NiwxMjgsMTQ2czc0LjQ2LTI0Ljg5LDkxLjMzLTQ1Ljc3YTYsNiwwLDAsMSw5LjM0LDcuNTQsMTUyLDE1MiwwLDAsMS0yMC4zMSwyMC43N1oiLz48L3N2Zz4=');}.icon-logo{--icon:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2Zw0gICAgd2lkdGg9IjMyIg0gICAgaGVpZ2h0PSIzMiINICAgIHZpZXdCb3g9IjAgMCAzMiAzMiINICAgIHZlcnNpb249IjEuMSINICAgIHhtbDpzcGFjZT0icHJlc2VydmUiDSAgICBzdHlsZT0iY2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVjYXA6c3F1YXJlO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxLjUiDSAgICBpZD0ic3ZnMTQiDSAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDSAgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcw0gICAgaWQ9ImRlZnMxNCIgLz48cGF0aA0gICAgZD0iTSAxNi41ODAwNzgsMi4xMzI4MTI1IEMgOC44NjQ4NDQ5LDIuMTMyODEyNSAxLjQ0MDYwMjEsOC4xNDY2MjE4IDIuMDMzMjAzMSwxNS44Mzk4NDQgMi41OTQ0NTg4LDIzLjEyNjY2NiA4Ljk3MTIwMTIsMjkuMDI1MTU1IDE1Ljk3MDcwMywyOS43ODcxMDkgMjQuMjIxMjI0LDMwLjY4NTI0IDMwLjQ0MDkxMSwyMy44MzQyNzcgMjkuOTc0NjA5LDE1Ljc5ODgyOCAyOS41Mjc4MTMsOC4wOTk4NjU1IDI0LjI5MTU2LDIuMTMyODEyNSAxNi41ODAwNzgsMi4xMzI4MTI1IFogbSAwLDAuNjA3NDIxOSBjIDAuMDEwNDYsMCAwLjAyMDgzLDAgMC4wMzEyNSwwIFYgMjkuMjMyNDIyIGMgLTAuMTkwMzIzLC0wLjAxMjE4IC0wLjM4MTUyMSwtMC4wMjc4MyAtMC41NzQyMTksLTAuMDQ4ODMgQyA5LjMxMzA0NTMsMjguNDUxNjE1IDMuMTc3ODc3NSwyMi43OTMwNDQgMi42Mzg2NzE5LDE1Ljc5Mjk2OSAyLjA3MjQ1Niw4LjQ0MjAxNTMgOS4yMDgxMDA4LDIuNzQwMjM0NCAxNi41ODAwNzgsMi43NDAyMzQ0IFogTSAxNi4wOTE3OTcsMy44ODQ3NjU2IDE2LDMuODg4NjcxOSBDIDEyLjcyNTQ1NCw0LjAxODM0ODkgOS41NTIzMzc5LDUuMzY0NjgzOCA3LjI1NTg1OTQsNy41IDQuOTU5MzgwOSw5LjYzNTMxNjIgMy41NDAyNzAzLDEyLjU2NDk3MiAzLjc5Mjk2ODgsMTUuODQ1NzAzIDQuMjg0NzczOSwyMi4yMzAwNDUgOS44NjQ0ODEyLDI3LjM4MzYwNiAxNS45OTQxNDEsMjguMDUyNzM0IGwgMC4wODk4NCwwLjAwOTggMC4wMjE0OCwtMC4xODE2NDEgLTAuMDkxOCwtMC4wMDk4IEMgOS45NzI2NzQ5LDI3LjIxMTY0NCA0LjQ1ODg2OTEsMjIuMTE2NDY4IDMuOTc0NjA5NCwxNS44MzAwNzggMy43MjY1NTU5LDEyLjYwOTY1MSA1LjExNTgwODQsOS43MzkwNDM3IDcuMzc4OTA2Miw3LjYzNDc2NTYgOS42NDIwMDQxLDUuNTMwNDg3NSAxMi43Nzg1MzksNC4xOTgxOTY4IDE2LjAwNzgxMiw0LjA3MDMxMjUgbCAwLjA5MTgsLTAuMDAzOTEgeiBtIDAsMS41MDE5NTMxIEwgMTYsNS4zOTA2MjUgQyAxMy4xMzE5NDksNS41MDQyMDQ3IDEwLjM1MzI5OCw2LjY4NDM0MTUgOC4zNDE3OTY5LDguNTU0Njg3NSA2LjMzMDI5NjIsMTAuNDI1MDMzIDUuMDg3MTkyOSwxMi45OTA4MTkgNS4zMDg1OTM3LDE1Ljg2NTIzNCA1LjczOTM5NCwyMS40NTc2NjkgMTAuNjI1MTYxLDI1Ljk3MDU0NyAxNS45OTQxNDEsMjYuNTU2NjQxIGwgMC4wODk4NCwwLjAwOTggMC4wMjE0OCwtMC4xNzk2ODcgLTAuMDkxOCwtMC4wMDk4IEMgMTAuNzMzMzU0LDI1LjgwMDUzMyA1LjkxMzQ4OTIsMjEuMzQ2MDQ2IDUuNDkwMjM0NCwxNS44NTE1NjMgNS4yNzM0Nzg0LDEzLjAzNzQ1MSA2LjQ4NjcyMzcsMTAuNTI2ODA4IDguNDY0ODQzOCw4LjY4NzUgMTAuNDQyOTY0LDYuODQ4MTkyMiAxMy4xODUwMzIsNS42ODQwNTI2IDE2LjAwNzgxMiw1LjU3MjI2NTYgbCAwLjA5MTgsLTAuMDAzOTEgeiBtIDAsMS41MDM5MDYzIEwgMTYsNi44OTI1NzgxIGMgLTIuNDYxNTc3LDAuMDk3NDgzIC00Ljg0NTcyOCwxLjExMTQxNzQgLTYuNTcyMjY1NiwyLjcxNjc5NjkgLTEuNzI2NTM4LDEuNjA1MzggLTIuNzk1NTc0MSwzLjgwNzI4MiAtMi42MDU0Njg4LDYuMjc1MzkxIDAuMzY5Nzk4Niw0LjgwMDU0IDQuNTYzNTMzNCw4LjY3NDY3NCA5LjE3MTg3NTQsOS4xNzc3MzQgbCAwLjA4OTg0LDAuMDA5OCAwLjAyMTQ4LC0wLjE4MTY0MSAtMC4wOTE4LC0wLjAwOTggQyAxMS40OTQwMzcsMjQuMzg3NDgxIDcuMzY2MTU1NywyMC41NzM2MzQgNy4wMDM5MDYyLDE1Ljg3MTA5NCA2LjgxODQ0ODEsMTMuNDYzMzIgNy44NTc2NDA1LDExLjMxNjUxMyA5LjU1MDc4MTMsOS43NDIxODc1IDExLjI0MzkyMiw4LjE2Nzg2MTggMTMuNTkxNTI5LDcuMTcxODYwOCAxNi4wMDc4MTIsNy4wNzYxNzE5IGwgMC4wOTE4LC0wLjAwMzkxIHogbSAwLDEuNTAxOTUzMSBMIDE2LDguMzk2NDg0NCBjIC0yLjA1NTA3MywwLjA4MTM4NCAtNC4wNDQ3NzUsMC45MjUyMzM0IC01LjQ4NjMyOCwyLjI2NTYyNDYgLTEuNDQxNTUzNSwxLjM0MDM5MyAtMi4zMzQ1ODgxLDMuMTgyMzc5IC0yLjE3NTc4MTQsNS4yNDQxNDEgMC4zMDg3OTIsNC4wMDg1NzkgMy44MDg2MDU0LDcuMjQwMTM2IDcuNjU2MjUwNCw3LjY2MDE1NiBsIDAuMDg5ODQsMC4wMDk4IDAuMDA3OCwtMC4wNjgzNiB2IC0wLjAwMiBsIDAuMDAyLC0wLjAwOTggYyA5LjQ5ZS00LC0wLjAwMzQgMC4wMDM1LC0wLjAwNjIgMC4wMDM5LC0wLjAwOTggNi40MmUtNCwtMC4wMDY3IDguMDJlLTQsLTAuMDEzMDEgMCwtMC4wMTk1MyBsIDAuMDA3OCwtMC4wNzIyNyAtMC4wOTE4LC0wLjAwOTggQyAxMi4yNTQ2NjcsMjIuOTc0NDIyIDguODIwNzc5NiwxOS44MDMyMzEgOC41MTk1MzEzLDE1Ljg5MjU3OCA4LjM2NTM2ODIsMTMuODkxMTA1IDkuMjI4NTM3MywxMi4xMDYyMzcgMTAuNjM2NzE5LDEwLjc5Njg3NSAxMi4wNDQ5LDkuNDg3NTEzIDEzLjk5Nzk5OSw4LjY1NzcxNyAxNi4wMDc4MTIsOC41NzgxMjUgbCAwLjA5MTgsLTAuMDAzOTEgeiBtIDAsMS41MDE5NTMyIEwgMTYsOS44OTg0Mzc1IGMgLTEuNjQ4NTg4LDAuMDY1Mjg3IC0zLjI0NTc2MSwwLjc0MjkzODUgLTQuNDAyMzQ0LDEuODE4MzU5NSAtMS4xNTY1ODIsMS4wNzU0MjEgLTEuODcxNjUwNiwyLjU1MzUzOCAtMS43NDQxNDA0LDQuMjA4OTg0IDAuMjQ3Nzg4NCwzLjIxNjY2OSAzLjA1MzY0MTQsNS44MDk1MDEgNi4xNDA2MjU0LDYuMTQ2NDg1IGwgMC4wODk4NCwwLjAwOTggMC4wMjE0OCwtMC4xODE2NCAtMC4wOTE4LC0wLjAwOTggYyAtMi45OTgzNDQsLTAuMzI3MzA4IC01LjczODI3MywtMi44NTk3OTggLTUuOTc4NTE2LC01Ljk3ODUxNiAtMC4xMjI4NjQ1LC0xLjU5NTE0MiAwLjU2NDI5OCwtMy4wMTgxMTcgMS42ODc1LC00LjA2MjUgMS4xMjMyMDIsLTEuMDQ0MzgyIDIuNjgxODM5LC0xLjcwNjAzNyA0LjI4NTE1NiwtMS43Njk1MzEgbCAwLjA5MTgsLTAuMDAzOSB6IG0gMCwxLjUwMzkwNjcgLTAuMDkxOCwwLjAwMiBjIC0xLjI0MjA5NSwwLjA0OTE5IC0yLjQ0NDgsMC41NjA2NTIgLTMuMzE2NDA2LDEuMzcxMDkzIC0wLjg3MTYwNiwwLjgxMDQ0MiAtMS40MTI2MTksMS45MjQ3MTMgLTEuMzE2NDA2LDMuMTczODI5IDAuMTg2NzgzLDIuNDI0NzMyIDIuMzAwNjQzLDQuMzc2OTEzIDQuNjI2OTUzLDQuNjMwODU5IGwgMC4wODk4NCwwLjAwOTggMC4wMjE0OCwtMC4xODE2NCAtMC4wOTE4LC0wLjAwOTggYyAtMi4yMzc2OTIsLTAuMjQ0MjcyIC00LjI4NTYwNCwtMi4xMzYwODMgLTQuNDY0ODQ0LC00LjQ2Mjg5IC0wLjA5MTU3LC0xLjE4ODgyNiAwLjQyMTUzMiwtMi4yNDc5MzMgMS4yNTk3NjYsLTMuMDI3MzQ0IDAuODM4MjM0LC0wLjc3OTQxMSAyLjAwMjM4MywtMS4yNzI5MTYgMy4xOTkyMTgsLTEuMzIwMzEzIGwgMC4wOTE4LC0wLjAwMzkgeiBtIDAsMS41MDE5NTMgLTAuMDkxOCwwLjAwMzkgYyAtMC44MzU2MTMsMC4wMzMwOSAtMS42NDM4MzEsMC4zNzQ0NTIgLTIuMjMwNDY5LDAuOTE5OTIyIC0wLjU4NjYzNywwLjU0NTQ3IC0wLjk1MTYzNiwxLjI5OTc3OCAtMC44ODY3MTgsMi4xNDI1NzggMC4xMjU3OCwxLjYzMjgyMSAxLjU0NTY3MywyLjk0MjM3IDMuMTExMzI4LDMuMTEzMjgxIC0wLjAwMjYsLTIuOGUtNCAtMC4wMDUzLDIuODZlLTQgLTAuMDA3OCwwIDAuMDAzLDYuMDNlLTQgMC4wMDY2LDAuMDAxNyAwLjAwOTgsMC4wMDIgMC4wMDMxLDMuMDhlLTQgMC4wMDY3LDEuMmUtNSAwLjAwOTgsMCBsIDAuMDc4MTMsMC4wMDk4IDAuMDIxNDgsLTAuMTgxNjQxIC0wLjA5MTgsLTAuMDA5OCBjIC0xLjQ3NzAxNSwtMC4xNjEyMzUgLTIuODMwOTg0LC0xLjQxMjM5NiAtMi45NDkyMTksLTIuOTQ3MjY2IC0wLjA2MDI3LC0wLjc4MjQ5NiAwLjI3NjgyMiwtMS40Nzk3MDkgMC44MzAwNzgsLTEuOTk0MTQxIDAuNTUzMjU3LC0wLjUxNDQzMSAxLjMyMjkzOSwtMC44NDE3NDggMi4xMTMyODEsLTAuODczMDQ2IGwgMC4wOTE4LC0wLjAwMzkgeiBtIDAsMS41MDE5NTMgTCAxNiwxNC40MDYyNSBjIC0wLjQyOTExNywwLjAxNjk5IC0wLjg0Mjg3MywwLjE5MjE2NiAtMS4xNDQ1MzEsMC40NzI2NTYgLTAuMzAxNjU5LDAuMjgwNDkxIC0wLjQ5MDY0OCwwLjY3MDk1NSAtMC40NTcwMzEsMS4xMDc0MjIgMC4wNjQ3NywwLjg0MDg4NiAwLjc5MDcyOSwxLjUxMTczMiAxLjU5NTcwMywxLjU5OTYwOSBsIDAuMDg5ODQsMC4wMDk4IDAuMDIxNDgsLTAuMTgxNjQxIC0wLjA5MTgsLTAuMDA5OCBjIC0wLjcxNjM1NywtMC4wNzgyIC0xLjM3NjM2MiwtMC42ODg2ODEgLTEuNDMzNTk0LC0xLjQzMTY0MSAtMC4wMjg5NywtMC4zNzYxNzkgMC4xMzIxMDUsLTAuNzExNDc3IDAuNDAwMzkxLC0wLjk2MDkzNyAwLjI2ODI4NiwtMC4yNDk0NjEgMC42NDM0ODUsLTAuNDA4NjI3IDEuMDI3MzQzLC0wLjQyMzgyOCBsIDAuMDkxOCwtMC4wMDM5IHoiDSAgICBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7Y2xpcC1ydWxlOm5vbnplcm87ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt2ZWN0b3ItZWZmZWN0Om5vbmU7ZmlsbDojMjIyMjIyO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7c3RvcC1jb2xvcjojMDAwMDAwO3N0b3Atb3BhY2l0eToxIg0gICAgaWQ9InBhdGgyNyIgLz48L3N2Zz4=');}.icon-jakevan{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHN0eWxlPSJjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MiIgdmlld0JveD0iMCAwIDMyIDMyIj48cGF0aCBkPSJNMTcuODggMTQuNjhIMTIuOWwtLjQzLTEuNjNIOS41OGwtLjQ1IDEuNjNINi41bDIuODktOC43NGgzLjJsMi44OSA4LjY0di04LjZoMi40djMuNzhjLjEtLjIuMjItLjM4LjM1LS41Ny4xMy0uMi4yNi0uMzcuMzktLjU0bDEuODYtMi42N2g3Ljh2MS44OUgyNS40djEuMzdoMi42NXYxLjg4SDI1LjR2MS42NWgyLjg2djEuOTFoLTcuOTNsLTEuNzUtMy4zMi0uNy40MXptNS4xMy04LjU5LTIuNyAzLjc5IDIuNyA0Ljc0em0tMTEuMDUgNS4wMy0uMzgtMS40M2ExMzYuODYgMTM2Ljg2IDAgMCAwLS40LTEuNTVMMTEgNy4zOGExNy43NiAxNy43NiAwIDAgMS0uMzYgMS42bC0uMTguNzEtLjM5IDEuNDN6bS04LjU4IDYuM2E1Ljc0IDUuNzQgMCAwIDEtMS4yNC0uMTN2LTEuODNsLjQxLjA4Yy4xNS4wMy4zLjA1LjQ3LjA1LjMgMCAuNTEtLjA2LjY3LS4xN2EuOTIuOTIgMCAwIDAgLjM0LS41MmMuMDYtLjIzLjEtLjUyLjEtLjg2VjUuOThoMi40djcuODVjMCAuODgtLjEzIDEuNTctLjQgMi4xLS4yNi41Mi0uNjMuOS0xLjEgMS4xNC0uNDguMjMtMS4wMy4zNS0xLjY1LjM1WiIgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDouMDE4NDM5MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40IC42Nikgc2NhbGUoLjk2MDUwMTM0KSIvPjxwYXRoIGQ9Ik0yMi44MiAyMi4yN2gtNC4wNmwtLjM3LTEuNEgxNS45bC0uMzkgMS40aC0yLjI2bDIuNDktNy41M2gyLjc1bDIuNDkgNy40NHYtNy40MWgyLjdsMi43NyA1LjIxaC4wM2E0MS4xIDQxLjEgMCAwIDEtLjA3LTEuODJ2LTMuMzloMS44M3Y3LjVoLTIuN2wtMi43OS01LjI4aC0uMDRhMTIuODMgMTIuODMgMCAwIDEgLjA4IDEuMjZsLjAyLjY0em0tNC44Ni0zLjA3LS4zMy0xLjIzYTg5LjA3IDg5LjA3IDAgMCAwLS4zNS0xLjM0bC0uMTQtLjY1YTE1LjA0IDE1LjA0IDAgMCAxLS4zMSAxLjM3bC0uMTYuNjItLjMzIDEuMjN6bS0zLjg1LTQuNDMtMi41IDcuNUg5LjJsLTIuNS03LjVoMi4zMmwxLjA0IDMuOGExNS4wMyAxNS4wMyAwIDAgMSAuMzYgMS43NiA3LjYxIDcuNjEgMCAwIDEgLjItMS4ybC4xNC0uNTQgMS4wNi0zLjgyeiIgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yO3N0cm9rZS13aWR0aDouMDE1OTg4NCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40IC42Nikgc2NhbGUoLjk2MDUwMTM0KSIvPjxwYXRoIGQ9Ik0xMS45IDI0LjIxYzAgLjQtLjA3LjcyLS4yLjk5LS4xNS4yNi0uMzYuNDYtLjYzLjYtLjI4LjEzLS42Mi4yLTEuMDMuMkg5LjJ2LTMuNWguOTdjLjM4IDAgLjcuMDYuOTYuMTkuMjUuMTMuNDUuMzIuNTguNTguMTQuMjUuMi41Ny4yLjk0em0tLjI2LjAxYzAtLjMzLS4wNS0uNjEtLjE2LS44M2ExLjEgMS4xIDAgMCAwLS41MS0uNTEgMS45NSAxLjk1IDAgMCAwLS44Ny0uMTdoLS42NnYzLjA3aC42Yy41MyAwIC45My0uMTMgMS4yLS4zOS4yNy0uMjYuNC0uNjUuNC0xLjE3ek0xNC4yNyAyNmgtMS45NXYtMy41aDEuOTV2LjIyaC0xLjd2MS4zMmgxLjZ2LjIzaC0xLjZ2MS41aDEuN3ptMS4yOC0zLjVjLjI4IDAgLjUyLjAyLjcuMDhhLjguOCAwIDAgMSAuNDQuM2MuMS4xNC4xNC4zMy4xNC41N2EuOS45IDAgMCAxLS4xLjQ1Ljg3Ljg3IDAgMCAxLS4yNy4zMmMtLjEyLjA4LS4yNS4xNC0uNC4xOGwuOTggMS42aC0uM2wtLjkyLTEuNTNoLS44OVYyNmgtLjI1di0zLjV6bS0uMDMuMjFoLS41OXYxLjU1aC43MWMuMyAwIC41Mi0uMDcuNjktLjIxLjE2LS4xNC4yNC0uMzQuMjQtLjYgMC0uMjgtLjA5LS40Ny0uMjYtLjU4LS4xNy0uMS0uNDMtLjE2LS43OS0uMTZ6bTUuNTctLjIyTDIwLjEyIDI2aC0uMjVsLS43Ni0yLjY1LS4wNS0uMTYtLjA0LS4xNGExOC44IDE4LjggMCAwIDEtLjA2LS4yNCAyMC42IDIwLjYgMCAwIDEtLjExLjQ4TDE4LjA5IDI2aC0uMjVsLS45Ni0zLjVoLjI2bC42NyAyLjQ3YTI3LjM2IDI3LjM2IDAgMCAxIC4wOS4zNWwuMDQuMTcuMDMuMTUuMDMtLjE2YTQuODMgNC44MyAwIDAgMSAuMTQtLjUzbC43LTIuNDZoLjI1bC43MyAyLjQ4YTExLjk4IDExLjk4IDAgMCAxIC4xMy41M2wuMDQuMTVhMTEuMDIgMTEuMDIgMCAwIDEgLjE1LS42OGwuNjktMi40OHpNMjMuMjYgMjZoLTEuOTV2LTMuNWgxLjk1di4yMmgtMS43djEuMzJoMS42di4yM2gtMS42djEuNWgxLjd6bTEuMjgtMy41Yy4yOCAwIC41Mi4wMi43MS4wOGEuOC44IDAgMCAxIC40My4zYy4xLjE0LjE0LjMzLjE0LjU3YS45LjkgMCAwIDEtLjEuNDUuODcuODcgMCAwIDEtLjI3LjMyYy0uMTEuMDgtLjI1LjE0LS40LjE4bC45OCAxLjZoLS4zbC0uOTItMS41M2gtLjg4VjI2aC0uMjZ2LTMuNXptLS4wMi4yMWgtLjZ2MS41NWguNzJjLjI5IDAgLjUxLS4wNy42OC0uMjEuMTYtLjE0LjI0LS4zNC4yNC0uNiAwLS4yOC0uMDgtLjQ3LS4yNi0uNTgtLjE3LS4xLS40My0uMTYtLjc4LS4xNnpNMjYuNSAyNmgtLjI1di0zLjVoMS45NXYuMjJoLTEuN3YxLjQ5aDEuNnYuMjJoLTEuNnoiIHN0eWxlPSJmaWxsOmN1cnJlbnRDb2xvcjtzdHJva2Utd2lkdGg6LjAxMDEwNjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNCAuNjYpIHNjYWxlKC45NjA1MDEzNCkiLz48L3N2Zz4=');}.icon-chat{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTYsNTBINDBBMTQsMTQsMCwwLDAsMjYsNjRWMjI0YTEzLjg4LDEzLjg4LDAsMCwwLDguMDksMTIuNjlBMTQuMTEsMTQuMTEsMCwwLDAsNDAsMjM4YTEzLjg3LDEzLjg3LDAsMCwwLDktMy4zMWwuMDYtLjA1TDgyLjIzLDIwNkgyMTZhMTQsMTQsMCwwLDAsMTQtMTRWNjRBMTQsMTQsMCwwLDAsMjE2LDUwWm0yLDE0MmEyLDIsMCwwLDEtMiwySDgwYTYsNiwwLDAsMC0zLjkyLDEuNDZMNDEuMjYsMjI1LjUzQTIsMiwwLDAsMSwzOCwyMjRWNjRhMiwyLDAsMCwxLDItMkgyMTZhMiwyLDAsMCwxLDIsMloiLz48L3N2Zz4=');}.icon-envelope{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjQsNTBIMzJhNiw2LDAsMCwwLTYsNlYxOTJhMTQsMTQsMCwwLDAsMTQsMTRIMjE2YTE0LDE0LDAsMCwwLDE0LTE0VjU2QTYsNiwwLDAsMCwyMjQsNTBabS05Niw4NS44Nkw0Ny40Miw2MkgyMDguNThaTTEwMS42NywxMjgsMzgsMTg2LjM2VjY5LjY0Wm04Ljg4LDguMTRMMTI0LDE0OC40MmE2LDYsMCwwLDAsOC4xLDBsMTMuNC0xMi4yOEwyMDguNTgsMTk0SDQ3LjQzWk0xNTQuMzMsMTI4LDIxOCw2OS42NFYxODYuMzZaIi8+PC9zdmc+');}.icon-logo-jakevan{--icon:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2Zw0gICAgd2lkdGg9IjMyIg0gICAgaGVpZ2h0PSIzMiINICAgIHZpZXdCb3g9IjAgMCAzMiAzMiINICAgIHZlcnNpb249IjEuMSINICAgIHhtbDpzcGFjZT0icHJlc2VydmUiDSAgICBzdHlsZT0iY2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVjYXA6c3F1YXJlO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxLjUiDSAgICBpZD0ic3ZnMTQiDSAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDSAgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcw0gICAgaWQ9ImRlZnMxNCIgLz48cGF0aA0gICAgZD0iTSAxNi41ODAwNzgsMi4xMzI4MTI1IEMgOC44NjQ4NDUsMi4xMzI4MTI1IDEuNDQwNjAyMSw4LjE0NjYyMTYgMi4wMzMyMDMxLDE1LjgzOTg0NCAyLjU5NDQ1ODgsMjMuMTI2NjY2IDguOTcxMjAxMywyOS4wMjUxNTUgMTUuOTcwNzAzLDI5Ljc4NzEwOSAyNC4yMjEyMjQsMzAuNjg1MjQgMzAuNDQwOTExLDIzLjgzNDI3NyAyOS45NzQ2MDksMTUuNzk4ODI4IDI5LjUyNzgxMyw4LjA5OTg2NTYgMjQuMjkxNTYsMi4xMzI4MTI1IDE2LjU4MDA3OCwyLjEzMjgxMjUgWiBtIDAsMC42MDc0MjE5IGggMC4wMzEyNSBWIDI5LjIzMjQyMiBjIC0wLjE5MDMyMywtMC4wMTIxOCAtMC4zODE1MjEsLTAuMDI3ODMgLTAuNTc0MjE5LC0wLjA0ODgzIEMgOS4zMTMwNDU3LDI4LjQ1MTYxNyAzLjE3Nzg3NzUsMjIuNzkzMDQ0IDIuNjM4NjcxOSwxNS43OTI5NjkgMi4wNzI0NTYsOC40NDIwMTUgOS4yMDgxMDA5LDIuNzQwMjM0NCAxNi41ODAwNzgsMi43NDAyMzQ0IFogbSAtMC40OTIxODcsMS4xNDQ1MzEyIC0wLjA5MTgsMC4wMDM5MSBDIDEyLjcyMTU2LDQuMDE4MzQxMyA5LjU0NjQ3NDMsNS4zNjQ2ODc3IDcuMjUsNy41IDQuOTUzNTI1Nyw5LjYzNTMxMjMgMy41MzYzNjQ3LDEyLjU2NDk4IDMuNzg5MDYyNSwxNS44NDU3MDMgNC4yODA4NjY4LDIyLjIzMDAzMiA5Ljg2MDU4NzksMjcuMzgzNjA4IDE1Ljk5MDIzNCwyOC4wNTI3MzQgbCAwLjA4OTg0LDAuMDA5OCAwLjAxOTUzLC0wLjE4MTY0MSAtMC4wODk4NCwtMC4wMDk4IEMgOS45Njg3Mzg5LDI3LjIxMTY0MyA0LjQ1NDk2MzgsMjIuMTE2NDgxIDMuOTcwNzAzMSwxNS44MzAwNzggMy43MjI2NDkxLDEyLjYwOTY0NCA1LjExMTg5NzksOS43MzkwNDc3IDcuMzc1LDcuNjM0NzY1NiA5LjYzODEwMjEsNS41MzA0ODM2IDEyLjc3NDYyNSw0LjE5ODE5NyAxNi4wMDM5MDYsNC4wNzAzMTI1IGwgMC4wODk4NCwtMC4wMDM5MSB6IG0gMCwxLjUwMTk1MzEgLTAuMDkxOCwwLjAwMzkxIEMgMTMuMTI4MDU0LDUuNTA0MTk3MSAxMC4zNDc0MzQsNi42ODQzNDU0IDguMzM1OTM3NSw4LjU1NDY4NzUgNi4zMjQ0NDExLDEwLjQyNTAzIDUuMDgxMzM0MSwxMi45OTA4MjcgNS4zMDI3MzQ0LDE1Ljg2NTIzNCA1LjczMzUzMzYsMjEuNDU3NjU2IDEwLjYyMTI2NSwyNS45NzA1NDggMTUuOTkwMjM0LDI2LjU1NjY0MSBsIDAuMDg5ODQsMC4wMDk4IDAuMDE5NTMsLTAuMTc5Njg3IC0wLjA4OTg0LC0wLjAwOTggQyAxMC43Mjk0MTksMjUuODAwNTMyIDUuOTA3NjMwNywyMS4zNDYwNTYgNS40ODQzNzUsMTUuODUxNTYzIDUuMjY3NjE4NCwxMy4wMzc0NDIgNi40ODI4MTMzLDEwLjUyNjgxMiA4LjQ2MDkzNzUsOC42ODc1IDEwLjQzOTA2Miw2Ljg0ODE4ODMgMTMuMTgxMTIsNS42ODQwNTI4IDE2LjAwMzkwNiw1LjU3MjI2NTYgbCAwLjA4OTg0LC0wLjAwMzkxIHogbSAwLDEuNTAzOTA2MyAtMC4wOTE4LDAuMDAxOTUgQyAxMy41MzQ1NCw2Ljk5MDA2NjMgMTEuMTQ4NCw4LjAwNDAwNzIgOS40MjE4NzUsOS42MDkzNzUgNy42OTUzNDk3LDExLjIxNDc0MyA2LjYyODI1NTgsMTMuNDE2NjggNi44MTgzNTk0LDE1Ljg4NDc2NiA3LjE4ODE1NTEsMjAuNjg1MjY5IDExLjM4MTk2LDI0LjU1OTQ0NCAxNS45OTAyMzQsMjUuMDYyNSBsIDAuMDg5ODQsMC4wMDk4IDAuMDE5NTMsLTAuMTgxNjQxIC0wLjA4OTg0LC0wLjAwOTggQyAxMS40OTAxMTQsMjQuMzg3NDc3IDcuMzYyMjUyMiwyMC41NzM2NzEgNywxNS44NzEwOTQgNi44MTQ1NDAxLDEzLjQ2MzI5NyA3Ljg1MzcyMTksMTEuMzE2NTI1IDkuNTQ2ODc1LDkuNzQyMTg3NSBjIDEuNjkzMTUzLC0xLjU3NDMzNzQgNC4wNDA3MywtMi41NzAzMjYgNi40NTcwMzEsLTIuNjY2MDE1NiBsIDAuMDg5ODQsLTAuMDAzOTEgeiBtIDAsMS41MDE5NTMxIC0wLjA5MTgsMC4wMDM5MSBjIC0yLjA1NTA3MywwLjA4MTM4NCAtNC4wNDY3MjgsMC45MjUyMzMxIC01LjQ4ODI4MSwyLjI2NTYyNDkgLTEuNDQxNTU0NywxLjM0MDM5MyAtMi4zMzI2MzU0LDMuMTgyMzc5IC0yLjE3MzgyODYsNS4yNDQxNDEgMC4zMDYzOTk0LDMuOTc3NTIgMy43NTc5NjQ2LDcuMTc0ODc3IDcuNTcwMzEyNiw3LjYzNDc2NiBsIC0wLjAwMiwwLjAxNzU4IDAuMDg3ODksMC4wMDc4IGggMC4wMDIgbCAwLjAwOTgsMC4wMDIgMC4wODAwOCwwLjAwOTggMC4wMjE0OCwtMC4xODE2NDEgaCAtMC4wMDM5IHYgLTAuMDAyIGwgLTAuMDg5ODQsLTAuMDA5OCBoIC0wLjAwMiBDIDEyLjI0OTQ3NiwyMi45NzM1NjUgOC44MTY4MTU1LDE5LjgwMjU3NiA4LjUxNTYxNywxNS44OTI1NzEgOC4zNjE0NTQsMTMuODkxMDk4IDkuMjI0NjIyNSwxMi4xMDYyMyAxMC42MzI4MDUsMTAuNzk2ODY4IDEyLjA0MDk4NSw5LjQ4NzUwNTQgMTMuOTk0MDg0LDguNjU3NzA5NyAxNi4wMDM4OTgsOC41NzgxMTc3IGwgMC4wODk4NCwtMC4wMDM5MSB6IG0gMCwxLjUwMTk1MzIgLTAuMDkxOCwwLjAwMzkxIGMgLTEuNjQ4NTgyLDAuMDY1Mjg3IC0zLjI0NTc2NiwwLjc0Mjk0MjcgLTQuNDAyMzQ0LDEuODE4MzU5NyAtMS4xNTY1NzgsMS4wNzU0MTcgLTEuODcxNjUwMywyLjU1MzU0NSAtMS43NDQxNDA2LDQuMjA4OTg0IDAuMjQ1Mzk0NiwzLjE4NTU5IDMuMDAzMTAzNiw1Ljc0NDM4MSA2LjA1NDY4NzYsNi4xMjEwOTQgbCAtMC4wMDIsMC4wMTc1OCAwLjA4Nzg5LDAuMDA3OCBoIDAuMDAyIGwgMC4wODc4OSwwLjAwOTggaCAwLjAwMiBsIDAuMDIxNDgsLTAuMTgxNjQgaCAtMC4wMDM5IGwgLTAuMDg3ODksLTAuMDA5OCBoIC0wLjAwMiAtMC4wMDIgYyAtMi45OTc2MjMsLTAuMzI4MTU2IC01LjczNjM2OCwtMi44NjA0MzMgLTUuOTc2NTYyLC01Ljk3ODUxNiAtMC4xMjI4NjU5LC0xLjU5NTE1IDAuNTY0Mjk0LC0zLjAxODExMyAxLjY4NzUsLTQuMDYyNSAxLjEyMzIwNiwtMS4wNDQzODYgMi42ODE4MzMsLTEuNzA2MDM3IDQuMjg1MTU2LC0xLjc2OTUzMSBsIDAuMDg5ODQsLTAuMDAzOSB6IG0gNC4xMjEwOTMsMS4zMjAzMTI3IGggMS40NjY3OTcgbCAxLjMyODEyNSwzLjk2Mjg5IHYgLTMuOTQ3MjY1IGggMS4xMDM1MTYgdiAxLjczNjMyOCBjIDAuMDQ2MzksLTAuMDg3NDIgMC4wOTk4OSwtMC4xNzYyMTIgMC4xNjAxNTYsLTAuMjYzNjcyIDAuMDYwMzEsLTAuMDg3NDYgMC4xMjAyOTQsLTAuMTY5Njg3IDAuMTc3NzM0LC0wLjI0ODA0NyBsIDAuODUzNTE2LC0xLjIyNDYwOSBoIDMuNTc4MTI1IHYgMC44NjcxODcgaCAtMS4zMTY0MDYgdiAwLjYyNjk1MyBoIDEuMjE4NzUgdiAwLjg2NzE4OCBoIC0xLjIxODc1IHYgMC43NTM5MDYgaCAxLjMxNjQwNiB2IDAuODgwODYgaCAtMy42Mzg2NzIgbCAtMC44MDQ2ODcsLTEuNTI3MzQ0IC0wLjMyNjE3MiwwLjE5MTQwNiB2IDEuMzM1OTM4IGggLTIuMjg5MDYzIGwgLTAuMjAxMTcyLC0wLjc0ODA0NyBoIC0xLjMyMDMxMiBsIC0wLjIwNzAzMSwwLjc0ODA0NyBoIC0xLjIwNzAzMiB6IG0gLTIuNDE0MDYyLDAuMDE1NjMgaCAxLjEwMzUxNSB2IDMuNjA1NDY5IGMgMTBlLTcsMC40MDA5MDUgLTAuMDYxMTcsMC43MjIzNTUgLTAuMTgzNTkzLDAuOTYyODkgLTAuMTIyNDIyLDAuMjQwNTM1IC0wLjI5MDgxMywwLjQxNDAxMSAtMC41MDc4MTMsMC41MjE0ODQgLTAuMjE2OTk5LDAuMTA3NTEzIC0wLjQ2ODI1NSwwLjE2MDE1NyAtMC43NTM5MDYsMC4xNjAxNTcgLTAuMTI0MjU2LDAgLTAuMjM0NDY1LC0wLjAwNTcgLTAuMzI4MTI1LC0wLjAxNzU4IC0wLjA5MzY2LC0wLjAxMTc3IC0wLjE3MzU3OCwtMC4wMjQ0NiAtMC4yNDIxODgsLTAuMDM5MDYgViAxNS41ODM5OSBjIDAuMDU5MzYsMC4wMTA4NiAwLjEyMjY3NCwwLjAyMzQxIDAuMTg5NDU0LDAuMDM3MTEgMC4wNjY3NywwLjAxMzcgMC4xMzg5MzYsMC4wMjE0OCAwLjIxNjc5NiwwLjAyMTQ4IDAuMTMxNjc2LDAgMC4yMzMzNjEsLTAuMDI3MjMgMC4zMDY2NDEsLTAuMDgwMDggMC4wNzMyMywtMC4wNTI4NiAwLjEyNDYxNywtMC4xMzI2MTEgMC4xNTQyOTcsLTAuMjM4MjgxIDAuMDI5NjgsLTAuMTA1NjcgMC4wNDQ5MiwtMC4yMzc5MTkgMC4wNDQ5MiwtMC4zOTY0ODUgeiBtIDguNjY3OTY5LDAuMDU0NjkgLTEuMjQ0MTQxLDEuNzM2MzI4IDEuMjQ0MTQxLDIuMTc1NzgyIHogbSAtMTAuMzc1LDAuMTEzMjgyIC0wLjA5MTgsMC4wMDIgYyAtMS4yNDIwOTUsMC4wNDkxOSAtMi40NDQ4LDAuNTYwNjUyIC0zLjMxNjQwNiwxLjM3MTA5MyAtMC44NzE2MDgsMC44MTA0NDIgLTEuNDEyNjIsMS45MjQ3MTIgLTEuMzE2NDA3LDMuMTczODI5IDAuMTg0MzksMi4zOTM2NTQgMi4yNTAxOTUsNC4zMTIwMjIgNC41NDEwMTYsNC42MDU0NjggbCAtMC4wMDIsMC4wMTc1OCAwLjA4Nzg5LDAuMDA3OCBoIDAuMDAyIGwgMC4wODc4OSwwLjAwOTggaCAwLjAwMiBsIDAuMDE5NTMsLTAuMTc5Njg3IGggLTAuMDAyIHYgLTAuMDAyIGwgLTAuMDc4MTMsLTAuMDA3OCAtMC4wMDk4LC0wLjAwMiBoIC0wLjAwMiAtMC4wMDIgYyAtMi4yMzY5NjEsLTAuMjQ1MTIxIC00LjI4MzcsLTIuMTM2NzMxIC00LjQ2Mjg5LC00LjQ2Mjg5IC0wLjA5MTU3LC0xLjE4ODgyNiAwLjQyMTUzMSwtMi4yNDc5MzMgMS4yNTk3NjYsLTMuMDI3MzQ0IDAuODM4MjM0LC0wLjc3OTQxMSAyLjAwMjM4MiwtMS4yNzI5MTYgMy4xOTkyMTgsLTEuMzIwMzEzIGwgMC4wODk4NCwtMC4wMDM5IHogbSA0Ljg2MTMyOCwwLjQ3NDYwOSBjIC0wLjAxNjcxLDAuMDkxMTEgLTAuMDM5NzIsMC4yMDM5MjggLTAuMDcwMzEsMC4zMzc4OTEgLTAuMDMwNiwwLjEzMzkyMiAtMC4wNjEyOCwwLjI2NTI2OSAtMC4wOTM3NSwwLjM5NjQ4NCAtMC4wMzI0MiwwLjEzMTE3NSAtMC4wNjE4NSwwLjI0MDY2NSAtMC4wODU5NCwwLjMyODEyNSBsIC0wLjE3NTc4MiwwLjY1NjI1IGggMC44NjUyMzUgbCAtMC4xNzM4MjgsLTAuNjU2MjUgYyAtMC4wMTg1MSwtMC4wNzEwNiAtMC4wNDY4MSwtMC4xNzI1MjkgLTAuMDgyMDMsLTAuMzA0Njg4IC0wLjAzNTI2LC0wLjEzMjExOCAtMC4wNjkyMSwtMC4yNjg5MzUgLTAuMTAzNTE1LC0wLjQxMDE1NiAtMC4wMzQzLC0wLjE0MTIyMSAtMC4wNjE1MywtMC4yNTY1NDYgLTAuMDgwMDgsLTAuMzQ3NjU2IHogbSAtNC44NjEzMjgsMS4wMjczNDQgLTAuMDkxOCwwLjAwMzkgYyAtMC44MzU2MDgsMC4wMzMwOSAtMS42NDM4MzYsMC4zNzQ0NTYgLTIuMjMwNDY5LDAuOTE5OTIyIC0wLjU4NjYzMywwLjU0NTQ2NiAtMC45NTE2MzUsMS4yOTk3ODYgLTAuODg2NzE5LDIuMTQyNTc4IDAuMTIzMjA1LDEuNTk5Mzc4IDEuNDk4MTI4LDIuODU5NDY3IDMuMDI1MzkxLDMuMDcyMjY1IGwgLTAuMDAzOSwwLjAzMzIgMC4wODk4NCwwLjAwOTggMC4wODIwMywwLjAwNzggMC4wMDc4LDAuMDAyIGggMC4wMDIgbCAwLjAxOTUzLC0wLjE4MTY0MSBoIC0wLjAwMiBsIC0wLjA4Nzg5LC0wLjAwOTggaCAtMC4wMDIgLTAuMDAyIGMgLTEuNDc2MzM3LC0wLjE2MjA0MSAtMi44MjkwNzYsLTEuNDEyOTk2IC0yLjk0NzI2NSwtMi45NDcyNjYgLTAuMDYwMjcsLTAuNzgyNTAzIDAuMjc2ODE3LC0xLjQ3OTcwNSAwLjgzMDA3OCwtMS45OTQxNDEgMC41NTMyNjEsLTAuNTE0NDM1IDEuMzIyOTMzLC0wLjg0MTc0OCAyLjExMzI4MSwtMC44NzMwNDYgbCAwLjA4OTg0LC0wLjAwMzkgeiBtIDAsMS41MDE5NTMgLTAuMDkxOCwwLjAwMzkgYyAtMC40MjkxMTgsMC4wMTY5OSAtMC44NDI4NzMsMC4xOTIxNjYgLTEuMTQ0NTMxLDAuNDcyNjU2IC0wLjMwMTY2LDAuMjgwNDkxIC0wLjQ5MDY0OCwwLjY3MDk1NSAtMC40NTcwMzIsMS4xMDc0MjIgMC4wNjIxOSwwLjgwNzM2IDAuNzQzODAxLDEuNDMwMjU3IDEuNTA5NzY2LDEuNTU4NTk0IGwgLTAuMDAzOSwwLjAzMzIgMC4wODk4NCwwLjAwNzggaCAwLjAwMiBsIDAuMDg3ODksMC4wMDk4IDAuMDIxNDgsLTAuMTc5Njg3IGggLTAuMDAyIHYgLTAuMDAyIGwgLTAuMDc4MTMsLTAuMDA3OCAtMC4wMDk4LC0wLjAwMiBoIC0wLjAwMiAtMC4wMDIgYyAtMC43MTU2NzUsLTAuMDc5MDEgLTEuMzc0NDU1LC0wLjY4OTI5IC0xLjQzMTY0LC0xLjQzMTY0MSAtMC4wMjg5NywtMC4zNzYxNzkgMC4xMzIxMDQsLTAuNzExNDc3IDAuNDAwMzkxLC0wLjk2MDkzNyAwLjI2ODI4NiwtMC4yNDk0NjEgMC42NDM0ODUsLTAuNDA4NjI3IDEuMDI3MzQzLC0wLjQyMzgyOCBsIDAuMDg5ODQsLTAuMDAzOSB6IG0gNy4wNDEwMTUsMC44NDk2MDkgaCAxLjI2MTcxOSBsIDEuMTQyNTc4LDMuNDE0MDYzIHYgLTMuNDAwMzkxIGggMS4yMzYzMjggbCAxLjI3NTM5MSwyLjM5MjU3OCBoIDAuMDEzNjcgYyAtMC4wMDQ3LC0wLjA3NTM3IC0wLjAwODksLTAuMTY0MDMyIC0wLjAxMzY3LC0wLjI2MzY3MiAtMC4wMDQ4LC0wLjA5OTY0IC0wLjAwOTcsLTAuMjAwNzEzIC0wLjAxMzY3LC0wLjMwMjczNCAtMC4wMDQsLTAuMTAyMDIgLTAuMDA1OSwtMC4xOTEwNTEgLTAuMDA1OSwtMC4yNjk1MzEgdiAtMS41NTY2NDEgaCAwLjg0Mzc1IHYgMy40NDE0MDYgaCAtMS4yNDIxODggbCAtMS4yNzkyOTcsLTIuNDIzODI4IGggLTAuMDIxNDggYyAwLjAwOCwwLjA3Mzc3IDAuMDE1MDgsMC4xNjIwODggMC4wMjE0OCwwLjI2NTYyNSAwLjAwNjQsMC4xMDM1NzkgMC4wMTI4OCwwLjIwODg5MSAwLjAxNzU4LDAuMzE2NDA2IDAuMDA0OCwwLjEwNzQ3NCAwLjAwNzgsMC4yMDQ3MDYgMC4wMDc4LDAuMjkxMDE2IHYgMS41NTA3ODEgSCAyNC41MTM2NzIgTCAyNC4zMzk4NDQsMTguMDYyNSBoIC0xLjEzNjcxOSBsIC0wLjE3NzczNCwwLjY0NDUzMSBoIC0xLjAzOTA2MyB6IG0gLTQuMTU0Mjk3LDAuMDEzNjcgaCAxLjA2MjUgbCAwLjQ3NjU2MywxLjc0NDE0MSBjIDAuMDE3NTQsMC4wNjU4OSAwLjAzOTM3LDAuMTUxMTA3IDAuMDYyNSwwLjI1MzkwNiAwLjAyMzE3LDAuMTAyNzU4IDAuMDQ0NDgsMC4yMDQ2NjEgMC4wNjQ0NSwwLjMwNjY0IDAuMDE5OTcsMC4xMDIwMiAwLjAzMjMxLDAuMTg1NjIgMC4wMzcxMSwwLjI1IDAuMDA2NCwtMC4wNjQzOCAwLjAxNzYxLC0wLjE0NzYyNSAwLjAzNTE2LC0wLjI0ODA0NiAwLjAxNzU5LC0wLjEwMDQyMSAwLjAzNzA0LC0wLjIwMTUzNSAwLjA1ODU5LC0wLjMwMjczNSAwLjAyMTYsLTAuMTAxMjQxIDAuMDQxMzgsLTAuMTg0MDYgMC4wNjA1NSwtMC4yNSBsIDAuNDg2MzI4LC0xLjc1MzkwNiBoIDEuMDYwNTQ3IGwgLTEuMTQ4NDM3LDMuNDQxNDA2IGggLTEuMTEzMjgyIHogbSA0Ljc5MTAxNiwwLjU1MjczNCBjIC0wLjAxNDI5LDAuMDc4NDQgLTAuMDM0MjEsMC4xNzU2NjkgLTAuMDYwNTUsMC4yOTEwMTYgLTAuMDI2MzQsMC4xMTUzNDcgLTAuMDU0MDYsMC4yMzA3ODIgLTAuMDgyMDMsMC4zNDM3NSAtMC4wMjc5MywwLjExMjk2OSAtMC4wNTE0NywwLjIwNTkyIC0wLjA3MjI3LDAuMjgxMjUgbCAtMC4xNTIzNDQsMC41NjQ0NTMgaCAwLjc0NjA5NCBsIC0wLjE1MDM5LC0wLjU2NDQ1MyBjIC0wLjAxNTkyLC0wLjA2MTIyIC0wLjAzOTg4LC0wLjE0Nzk3MSAtMC4wNzAzMSwtMC4yNjE3MTkgLTAuMDMwMjcsLTAuMTEzNzg5IC0wLjA2MDI5LC0wLjIzMTkzNSAtMC4wODk4NCwtMC4zNTM1MTUgLTAuMDI5NTYsLTAuMTIxNjIgLTAuMDUyMzUsLTAuMjIyMzQyIC0wLjA2ODM2LC0wLjMwMDc4MiB6IG0gLTMuNjQ2NDg0LDIuOTkyMTg4IEggMjAuNTYyNSBjIDAuMTc0Nzc1LDAgMC4zMjA2NTgsMC4wMjk2NCAwLjQzOTQ1MywwLjA4OTg0IDAuMTE4NzU0LDAuMDYwMiAwLjIxMDI1NSwwLjE0ODU1NiAwLjI3MTQ4NCwwLjI2NTYyNSAwLjA2MTI3LDAuMTE3MDY5IDAuMDkxOCwwLjI2MTg2NCAwLjA5MTgsMC40MzM1OTMgMCwwLjE3OTgwNyAtMC4wMzMwMSwwLjMzMTMgLTAuMDk3NjYsMC40NTMxMjUgLTAuMDY0NjEsMC4xMjE4MjYgLTAuMTYwNDc3LDAuMjEzNzYxIC0wLjI4NzEwOSwwLjI3NTM5MSAtMC4xMjY1OSwwLjA2MTY3IC0wLjI4Mzk2NSwwLjA5MTggLTAuNDcwNzAzLDAuMDkxOCBIIDIwLjExOTE0IFogbSAxLjQzNTU0NiwwIGggMC44OTY0ODUgdiAwLjEwMTU2MiBoIC0wLjc4MTI1IHYgMC42MTEzMjggSCAyMi40MDYyNSBWIDE5LjYyNSBoIC0wLjczNjMyOCB2IDAuNjkzMzU5IGggMC43ODEyNSB2IDAuMTAxNTYzIGggLTAuODk2NDg1IHogbSAxLjA4Mzk4NSwwIGggMC4zOTg0MzcgYyAwLjEzMDAwOCwwIDAuMjM3MjI5LDAuMDEzMDkgMC4zMjQyMTksMC4wNDEwMiAwLjA4NzAzLDAuMDI3ODggMC4xNTMxNjYsMC4wNzQ3OCAwLjE5NzI2NiwwLjEzODY3MiAwLjA0NDAyLDAuMDYzODQgMC4wNjY0MSwwLjE0OTE5MSAwLjA2NjQxLDAuMjU3ODEzIDAsMC4wODE0OCAtMC4wMTQ2MiwwLjE1MjU4NyAtMC4wNDQ5MiwwLjIxMDkzNyAtMC4wMzAzLDAuMDU4MzUgLTAuMDcyMDIsMC4xMDUxNzggLTAuMTI1LDAuMTQyNTc4IC0wLjA1MzEsMC4wMzc0OCAtMC4xMTQxNTQsMC4wNjYxMyAtMC4xODM1OTQsMC4wODU5NCBsIDAuNDQ5MjE5LDAuNzMyNDIyIEggMjMuNTgzOTkgbCAtMC40MjM4MjgsLTAuNjk5MjE5IGggLTAuNDA2MjUgdiAwLjY5OTIxOSBoIC0wLjExNTIzNCB6IG0gMS4wMDc4MTIsMCBoIDAuMTE5MTQxIGwgMC4zMDg1OTQsMS4xMzQ3NjUgYyAwLjAwODEsMC4wMzAwOSAwLjAxNDM4LDAuMDU4NzkgMC4wMjE0OCwwLjA4NTk0IDAuMDA3LDAuMDI3MTUgMC4wMTM1MywwLjA1MjgxIDAuMDE5NTMsMC4wNzgxMyAwLjAwNiwwLjAyNTM0IDAuMDExOTgsMC4wNTAzNSAwLjAxNzU4LDAuMDc0MjIgMC4wMDU2LDAuMDIzODMgMC4wMTExMiwwLjA0ODA0IDAuMDE1NjMsMC4wNzIyNyAwLjAwNTIsLTAuMDI0MjQgMC4wMTA0MywtMC4wNDkyNSAwLjAxNTYzLC0wLjA3NDIyIDAuMDA1MiwtMC4wMjQ5MyAwLjAxMTI4LC0wLjA0ODU1IDAuMDE3NTgsLTAuMDc0MjIgMC4wMDY0LC0wLjAyNTcxIDAuMDEyMzMsLTAuMDUyNTYgMC4wMTk1MywtMC4wODAwOCAwLjAwNywtMC4wMjc1MiAwLjAxNjM5LC0wLjA1Nzc5IDAuMDI1MzksLTAuMDg3ODkgbCAwLjMyMDMxMywtMS4xMjg5MDYgaCAwLjExNTIzNCBsIDAuMzMzOTg1LDEuMTM2NzE5IGMgMC4wMDksMC4wMzE1MyAwLjAxNzk5LDAuMDU5OTcgMC4wMjUzOSwwLjA4Nzg5IDAuMDA3NSwwLjAyNzg5IDAuMDEzNTMsMC4wNTQ3NCAwLjAxOTUzLDAuMDgwMDggMC4wMDU5LDAuMDI1MyAwLjAxMjI4LDAuMDUwMzUgMC4wMTc1OCwwLjA3NDIyIDAuMDA1MiwwLjAyMzgzIDAuMDEwNDMsMC4wNDgwOCAwLjAxNTYzLDAuMDcyMjcgMC4wMDYsLTAuMDMzMDEgMC4wMTExOCwtMC4wNjU3MiAwLjAxNzU4LC0wLjA5NzY2IDAuMDA2MywtMC4wMzE5IDAuMDE0NDQsLTAuMDY0MzkgMC4wMjM0NCwtMC4wOTk2MSAwLjAwOSwtMC4wMzUyNiAwLjAyLC0wLjA3NTM3IDAuMDMxMjUsLTAuMTE3MTg3IGwgMC4zMTQ0NTMsLTEuMTM2NzE5IGggMC4xMTkxNDEgbCAtMC40NDcyNjYsMS42MDkzNzUgaCAtMC4xMTEzMjggbCAtMC4zNTE1NjIsLTEuMjE0ODQ0IGMgLTAuMDA4MywtMC4wMjU2NyAtMC4wMTUwOCwtMC4wNTEwOSAtMC4wMjE0OCwtMC4wNzQyMiAtMC4wMDYzLC0wLjAyMzEzIC0wLjAxMTg4LC0wLjA0MzU0IC0wLjAxNzU4LC0wLjA2NDQ1IC0wLjAwNTYsLTAuMDIwOTIgLTAuMDEwNzMsLTAuMDQxODUgLTAuMDE1NjMsLTAuMDYwNTUgLTAuMDA0OCwtMC4wMTg2OSAtMC4wMDg3LC0wLjAzNTQgLTAuMDExNzIsLTAuMDUwNzggLTAuMDAyOSwwLjAxNTM4IC0wLjAwNjQsMC4wMzE2MSAtMC4wMDk4LDAuMDQ4ODMgLTAuMDAzNCwwLjAxNzI2IC0wLjAwNzIsMC4wMzQzOCAtMC4wMTE3MiwwLjA1MjczIC0wLjAwNDUsMC4wMTgzMyAtMC4wMDg0LDAuMDM4NzQgLTAuMDEzNjcsMC4wNTg1OSAtMC4wMDUyLDAuMDE5ODEgLTAuMDExNTgsMC4wMzkyNyAtMC4wMTc1OCwwLjA2MDU1IGwgLTAuMzQ5NjA5LDEuMjQ0MTQxIGggLTAuMTEzMjgxIHogbSAyLjAzNTE1NywwIGggMC44OTY0ODQgdiAwLjEwMTU2MiBoIC0wLjc3OTI5NyB2IDAuNjExMzI4IGggMC43MzYzMjggViAxOS42MjUgaCAtMC43MzYzMjggdiAwLjY5MzM1OSBoIDAuNzc5Mjk3IHYgMC4xMDE1NjMgaCAtMC44OTY0ODQgeiBtIDEuMDgzOTg0LDAgaCAwLjM5ODQzNyBjIDAuMTI5OTI2LDAgMC4yMzkxNDIsMC4wMTMwOSAwLjMyNjE3MiwwLjA0MTAyIDAuMDg2OTksMC4wMjc4OCAwLjE1MTIxMywwLjA3NDc4IDAuMTk1MzEzLDAuMTM4NjcyIDAuMDQ0MDIsMC4wNjM4NCAwLjA2NjQxLDAuMTQ5MTkxIDAuMDY2NDEsMC4yNTc4MTMgMCwwLjA4MTQ4IC0wLjAxNDYyLDAuMTUyNTg3IC0wLjA0NDkyLDAuMjEwOTM3IC0wLjAzMDI2LDAuMDU4MzUgLTAuMDcyMDIsMC4xMDUxNzggLTAuMTI1LDAuMTQyNTc4IC0wLjA1MzA2LDAuMDM3NDggLTAuMTE0MTUzLDAuMDY2MTMgLTAuMTgzNTk0LDAuMDg1OTQgbCAwLjQ0OTIxOSwwLjczMjQyMiBoIC0wLjEzNjcxOSBsIC0wLjQyMTg3NSwtMC42OTkyMTkgaCAtMC40MDgyMDMgdiAwLjY5OTIxOSBoIC0wLjExNTIzNCB6IG0gMS4xODE2NDEsMCBoIDAuODk2NDg0IHYgMC4xMDE1NjIgSCAyOC4wNjI1IHYgMC42ODc1IGggMC43MzgyODEgdiAwLjA5OTYxIEggMjguMDYyNSB2IDAuNzIwNzAzIGggLTAuMTE1MjM0IHogbSAtNy43MTI4OTEsMC4wOTk2MSB2IDEuNDEwMTU2IGggMC4yNzE0ODQgYyAwLjI0NzI2MSwwIDAuNDMyMTgzLC0wLjA2MDQgMC41NTQ2ODgsLTAuMTc5Njg3IDAuMTIyNTQ5LC0wLjExOTI0MiAwLjE4MzU5NCwtMC4yOTg1NDIgMC4xODM1OTQsLTAuNTM3MTA5IDAsLTAuMTUzMzU4IC0wLjAyNTM2LC0wLjI4MDA1NCAtMC4wNzYxNywtMC4zODI4MTMgLTAuMDUwNzcsLTAuMTAyNzU4IC0wLjEyOTc5MywtMC4xODA2NzIgLTAuMjM0Mzc1LC0wLjIzMjQyMiAtMC4xMDQ1ODIsLTAuMDUxNzEgLTAuMjM1ODgyLC0wLjA3ODEzIC0wLjM5NjQ4NSwtMC4wNzgxMyB6IG0gMi41MTk1MzEsMCB2IDAuNzA4OTg1IGggMC4zMjYxNzIgYyAwLjEzMzc2LDAgMC4yMzc0NywtMC4wMzA2NCAwLjMxMjUsLTAuMDkzNzUgMC4wNzUxNiwtMC4wNjMxNSAwLjExMzI4MSwtMC4xNTMzNSAwLjExMzI4MSwtMC4yNzE0ODUgMCwtMC4xMjk5NDQgLTAuMDM5OTgsLTAuMjIwMzIxIC0wLjExOTE0LC0wLjI2OTUzMSAtMC4wNzkyNCwtMC4wNDkxNyAtMC4xOTkyMjQsLTAuMDc0MjIgLTAuMzYxMzI4LC0wLjA3NDIyIHogbSA0LjEyNjk1MywwIHYgMC43MDg5ODUgaCAwLjMyNjE3MiBjIDAuMTMzNzU5LDAgMC4yMzk0MjMsLTAuMDMwNjQgMC4zMTQ0NTMsLTAuMDkzNzUgMC4wNzUxMiwtMC4wNjMxNSAwLjExMTMyOCwtMC4xNTMzNSAwLjExMTMyOCwtMC4yNzE0ODUgMCwtMC4xMjk5NDQgLTAuMDM4MDgsLTAuMjIwMzIxIC0wLjExNzE4NywtMC4yNjk1MzEgLTAuMDc5MjQsLTAuMDQ5MTcgLTAuMjAxMTc4LC0wLjA3NDIyIC0wLjM2MzI4MSwtMC4wNzQyMiB6Ig0gICAgc3R5bGU9ImJhc2VsaW5lLXNoaWZ0OmJhc2VsaW5lO2NsaXAtcnVsZTpub256ZXJvO2Rpc3BsYXk6aW5saW5lO292ZXJmbG93OnZpc2libGU7dmVjdG9yLWVmZmVjdDpub25lO2ZpbGw6IzIyMjIyMjtmaWxsLXJ1bGU6bm9uemVybztzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtlbmFibGUtYmFja2dyb3VuZDphY2N1bXVsYXRlO3N0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MSINICAgIGlkPSJwYXRoMTciIC8+PC9zdmc+');}.icon-user-square{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzRINDhBMTQsMTQsMCwwLDAsMzQsNDhWMjA4YTE0LDE0LDAsMCwwLDE0LDE0SDIwOGExNCwxNCwwLDAsMCwxNC0xNFY0OEExNCwxNCwwLDAsMCwyMDgsMzRaTTk0LDEyMGEzNCwzNCwwLDEsMSwzNCwzNEEzNCwzNCwwLDAsMSw5NCwxMjBaTTY1Ljc3LDIxMGE2Ni40Myw2Ni40MywwLDAsMSwyMC43Ny0yOS4zNiw2Niw2NiwwLDAsMSw4Mi45MiwwQTY2LjQzLDY2LjQzLDAsMCwxLDE5MC4yMywyMTBaTTIxMCwyMDhhMiwyLDAsMCwxLTIsMmgtNS4xN2E3Ny44NSw3Ny44NSwwLDAsMC00OS4zOC01MS43MSw0Niw0NiwwLDEsMC01MC45LDBBNzcuODUsNzcuODUsMCwwLDAsNTMuMTcsMjEwSDQ4YTIsMiwwLDAsMS0yLTJWNDhhMiwyLDAsMCwxLDItMkgyMDhhMiwyLDAsMCwxLDIsMloiLz48L3N2Zz4=');}.icon-chat-teardrop{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMzIsMjZhOTguMTEsOTguMTEsMCwwLDAtOTgsOTh2ODRhMTQsMTQsMCwwLDAsMTQsMTRoODRhOTgsOTgsMCwwLDAsMC0xOTZabTAsMTg0SDQ4YTIsMiwwLDAsMS0yLTJWMTI0YTg2LDg2LDAsMSwxLDg2LDg2WiIvPjwvc3ZnPg==');}.icon-caret-left{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xNjQuMjQsMjAzLjc2YTYsNiwwLDEsMS04LjQ4LDguNDhsLTgwLTgwYTYsNiwwLDAsMSwwLTguNDhsODAtODBhNiw2LDAsMCwxLDguNDgsOC40OEw4OC40OSwxMjhaIi8+PC9zdmc+');}.icon-house-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMTcuOSwxMTAuMWwtODAtODBhMTQsMTQsMCwwLDAtMTkuOCwwbC04MCw4MEExMy45MiwxMy45MiwwLDAsMCwzNCwxMjB2OTZhNiw2LDAsMCwwLDYsNkgyMTZhNiw2LDAsMCwwLDYtNlYxMjBBMTMuOTIsMTMuOTIsMCwwLDAsMjE3LjksMTEwLjFaTTIxMCwyMTBINDZWMTIwYTIsMiwwLDAsMSwuNTgtMS40Mmw4MC04MGEyLDIsMCwwLDEsMi44NCwwbDgwLDgwQTIsMiwwLDAsMSwyMTAsMTIwWiIvPjwvc3ZnPg==');}.icon-calendar{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzRIMTgyVjI0YTYsNiwwLDAsMC0xMiwwVjM0SDg2VjI0YTYsNiwwLDAsMC0xMiwwVjM0SDQ4QTE0LDE0LDAsMCwwLDM0LDQ4VjIwOGExNCwxNCwwLDAsMCwxNCwxNEgyMDhhMTQsMTQsMCwwLDAsMTQtMTRWNDhBMTQsMTQsMCwwLDAsMjA4LDM0Wk00OCw0Nkg3NFY1NmE2LDYsMCwwLDAsMTIsMFY0Nmg4NFY1NmE2LDYsMCwwLDAsMTIsMFY0NmgyNmEyLDIsMCwwLDEsMiwyVjgySDQ2VjQ4QTIsMiwwLDAsMSw0OCw0NlpNMjA4LDIxMEg0OGEyLDIsMCwwLDEtMi0yVjk0SDIxMFYyMDhBMiwyLDAsMCwxLDIwOCwyMTBabS05OC05MHY2NGE2LDYsMCwwLDEtMTIsMFYxMjkuNzFsLTcuMzIsMy42NmE2LDYsMCwxLDEtNS4zNi0xMC43NGwxNi04QTYsNiwwLDAsMSwxMTAsMTIwWm01OS41NywyOS4yNUwxNDgsMTc4aDIwYTYsNiwwLDAsMSwwLDEySDEzNmE2LDYsMCwwLDEtNC44LTkuNkwxNjAsMTQyYTEwLDEwLDAsMSwwLTE2LjY1LTExQTYsNiwwLDEsMSwxMzMsMTI1YTIyLDIyLDAsMSwxLDM2LjYyLDI0LjI2WiIvPjwvc3ZnPg==');}.icon-clock-clockwise{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMzQsODB2NDQuNmwzNy4wOSwyMi4yNWE2LDYsMCwwLDEtNi4xOCwxMC4zbC00MC0yNEE2LDYsMCwwLDEsMTIyLDEyOFY4MGE2LDYsMCwwLDEsMTIsMFptOTAtMjJhNiw2LDAsMCwwLTYsNlY4Ny4zNmMtNy40OC04LjgzLTE0Ljk0LTE3LjEzLTIzLjUzLTI1LjgzYTk0LDk0LDAsMSwwLTEuOTUsMTM0LjgzLDYsNiwwLDAsMC04LjI0LTguNzJBODIsODIsMCwxLDEsMTg2LDcwYzkuMjQsOS4zNiwxNy4xOCwxOC4zLDI1LjMxLDI4SDE4NGE2LDYsMCwwLDAsMCwxMmg0MGE2LDYsMCwwLDAsNi02VjY0QTYsNiwwLDAsMCwyMjQsNThaIi8+PC9zdmc+');}.icon-shuffle{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzYuMjQsMTc5Ljc2YTYsNiwwLDAsMSwwLDguNDhsLTI0LDI0YTYsNiwwLDAsMS04LjQ4LTguNDhMMjE3LjUyLDE5MEgyMDAuOTRhNzAuMTYsNzAuMTYsMCwwLDEtNTctMjkuMzFsLTQxLjcxLTU4LjRBNTguMTEsNTguMTEsMCwwLDAsNTUuMDYsNzhIMzJhNiw2LDAsMCwxLDAtMTJINTUuMDZhNzAuMTYsNzAuMTYsMCwwLDEsNTcsMjkuMzFsNDEuNzEsNTguNEE1OC4xMSw1OC4xMSwwLDAsMCwyMDAuOTQsMTc4aDE2LjU4bC0xMy43Ni0xMy43NmE2LDYsMCwwLDEsOC40OC04LjQ4Wm0tOTIuMDYtNzQuNDFhNS45MSw1LjkxLDAsMCwwLDMuNDgsMS4xMiw2LDYsMCwwLDAsNC44OS0yLjUxbDEuMTktMS42N0E1OC4xMSw1OC4xMSwwLDAsMSwyMDAuOTQsNzhoMTYuNThMMjAzLjc2LDkxLjc2YTYsNiwwLDEsMCw4LjQ4LDguNDhsMjQtMjRhNiw2LDAsMCwwLDAtOC40OGwtMjQtMjRhNiw2LDAsMCwwLTguNDgsOC40OEwyMTcuNTIsNjZIMjAwLjk0YTcwLjE2LDcwLjE2LDAsMCwwLTU3LDI5LjMxTDE0Mi43OCw5N0E2LDYsMCwwLDAsMTQ0LjE4LDEwNS4zNVptLTMyLjM2LDQ1LjNhNiw2LDAsMCwwLTguMzcsMS4zOWwtMS4xOSwxLjY3QTU4LjExLDU4LjExLDAsMCwxLDU1LjA2LDE3OEgzMmE2LDYsMCwwLDAsMCwxMkg1NS4wNmE3MC4xNiw3MC4xNiwwLDAsMCw1Ny0yOS4zMWwxLjE5LTEuNjdBNiw2LDAsMCwwLDExMS44MiwxNTAuNjVaIi8+PC9zdmc+');}.icon-sort-descending{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik00MiwxMjhhNiw2LDAsMCwxLDYtNmg3MmE2LDYsMCwwLDEsMCwxMkg0OEE2LDYsMCwwLDEsNDIsMTI4Wm02LTU4aDU2YTYsNiwwLDAsMCwwLTEySDQ4YTYsNiwwLDAsMCwwLDEyWk0xODQsMTg2SDQ4YTYsNiwwLDAsMCwwLDEySDE4NGE2LDYsMCwwLDAsMC0xMlpNMjI4LjI0LDgzLjc2bC00MC00MGE2LDYsMCwwLDAtOC40OCwwbC00MCw0MGE2LDYsMCwwLDAsOC40OCw4LjQ4TDE3OCw2Mi40OVYxNDRhNiw2LDAsMCwwLDEyLDBWNjIuNDlsMjkuNzYsMjkuNzVhNiw2LDAsMCwwLDguNDgtOC40OFoiLz48L3N2Zz4=');}.icon-sort-ascending{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjYsMTI4YTYsNiwwLDAsMS02LDZINDhhNiw2LDAsMCwxLDAtMTJoNzJBNiw2LDAsMCwxLDEyNiwxMjhaTTQ4LDcwSDE4NGE2LDYsMCwwLDAsMC0xMkg0OGE2LDYsMCwwLDAsMCwxMlptNTYsMTE2SDQ4YTYsNiwwLDAsMCwwLDEyaDU2YTYsNiwwLDAsMCwwLTEyWm0xMjQuMjQtMjIuMjRhNiw2LDAsMCwwLTguNDgsMEwxOTAsMTkzLjUxVjExMmE2LDYsMCwwLDAtMTIsMHY4MS41MWwtMjkuNzYtMjkuNzVhNiw2LDAsMCwwLTguNDgsOC40OGw0MCw0MGE2LDYsMCwwLDAsOC40OCwwbDQwLTQwQTYsNiwwLDAsMCwyMjguMjQsMTYzLjc2WiIvPjwvc3ZnPg==');}.icon-arrow-elbow-left-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzgsNzJhNiw2LDAsMCwxLTYsNkg5NFYyMDEuNTFsMzcuNzYtMzcuNzVhNiw2LDAsMCwxLDguNDgsOC40OGwtNDgsNDhhNiw2LDAsMCwxLTguNDgsMGwtNDgtNDhhNiw2LDAsMCwxLDguNDgtOC40OEw4MiwyMDEuNTFWNzJhNiw2LDAsMCwxLDYtNkgyMzJBNiw2LDAsMCwxLDIzOCw3MloiLz48L3N2Zz4=');}.icon-arrow-elbow-right-down{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjguMjQsMTY0LjI0bC00OCw0OGE2LDYsMCwwLDEtOC40OCwwbC00OC00OGE2LDYsMCwxLDEsOC40OC04LjQ4TDE3MCwxOTMuNTFWNzBIMzJhNiw2LDAsMCwxLDAtMTJIMTc2YTYsNiwwLDAsMSw2LDZWMTkzLjUxbDM3Ljc2LTM3Ljc1YTYsNiwwLDAsMSw4LjQ4LDguNDhaIi8+PC9zdmc+');}.icon-caret-right{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xODAuMjQsMTMyLjI0bC04MCw4MGE2LDYsMCwwLDEtOC40OC04LjQ4TDE2Ny41MSwxMjgsOTEuNzYsNTIuMjRhNiw2LDAsMCwxLDguNDgtOC40OGw4MCw4MEE2LDYsMCwwLDEsMTgwLjI0LDEzMi4yNFoiLz48L3N2Zz4=');}.icon-dots-three{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMzgsMTI4YTEwLDEwLDAsMSwxLTEwLTEwQTEwLDEwLDAsMCwxLDEzOCwxMjhaTTYwLDExOGExMCwxMCwwLDEsMCwxMCwxMEExMCwxMCwwLDAsMCw2MCwxMThabTEzNiwwYTEwLDEwLDAsMSwwLDEwLDEwQTEwLDEwLDAsMCwwLDE5NiwxMThaIi8+PC9zdmc+');}.icon-caret-circle-up{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xMjgsMjZBMTAyLDEwMiwwLDEsMCwyMzAsMTI4LDEwMi4xMiwxMDIuMTIsMCwwLDAsMTI4LDI2Wm0wLDE5MmE5MCw5MCwwLDEsMSw5MC05MEE5MC4xLDkwLjEsMCwwLDEsMTI4LDIxOFptNDQuMjQtNzguMjRhNiw2LDAsMSwxLTguNDgsOC40OEwxMjgsMTEyLjQ5LDkyLjI0LDE0OC4yNGE2LDYsMCwwLDEtOC40OC04LjQ4bDQwLTQwYTYsNiwwLDAsMSw4LjQ4LDBaIi8+PC9zdmc+');}.icon-calendar-blank{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMDgsMzRIMTgyVjI0YTYsNiwwLDAsMC0xMiwwVjM0SDg2VjI0YTYsNiwwLDAsMC0xMiwwVjM0SDQ4QTE0LDE0LDAsMCwwLDM0LDQ4VjIwOGExNCwxNCwwLDAsMCwxNCwxNEgyMDhhMTQsMTQsMCwwLDAsMTQtMTRWNDhBMTQsMTQsMCwwLDAsMjA4LDM0Wk00OCw0Nkg3NFY1NmE2LDYsMCwwLDAsMTIsMFY0Nmg4NFY1NmE2LDYsMCwwLDAsMTIsMFY0NmgyNmEyLDIsMCwwLDEsMiwyVjgySDQ2VjQ4QTIsMiwwLDAsMSw0OCw0NlpNMjA4LDIxMEg0OGEyLDIsMCwwLDEtMi0yVjk0SDIxMFYyMDhBMiwyLDAsMCwxLDIwOCwyMTBaIi8+PC9zdmc+');}.icon-currency-dollar-simple{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTgsMTY4YTQ2LjA2LDQ2LjA2LDAsMCwxLTQ2LDQ2SDEzNHYxOGE2LDYsMCwwLDEtMTIsMFYyMTRIMTA0YTQ2LjA2LDQ2LjA2LDAsMCwxLTQ2LTQ2LDYsNiwwLDAsMSwxMiwwLDM0LDM0LDAsMCwwLDM0LDM0aDQ4YTM0LDM0LDAsMCwwLDAtNjhIMTEyYTQ2LDQ2LDAsMCwxLDAtOTJoMTBWMjRhNiw2LDAsMCwxLDEyLDBWNDJoMTBhNDYuMDYsNDYuMDYsMCwwLDEsNDYsNDYsNiw2LDAsMCwxLTEyLDAsMzQsMzQsMCwwLDAtMzQtMzRIMTEyYTM0LDM0LDAsMCwwLDAsNjhoNDBBNDYuMDYsNDYuMDYsMCwwLDEsMTk4LDE2OFoiLz48L3N2Zz4=');}.icon-hourglass-medium{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0xOTgsNzUuNjRWNDBhMTQsMTQsMCwwLDAtMTQtMTRINzJBMTQsMTQsMCwwLDAsNTgsNDBWNzZhMTQuMDYsMTQuMDYsMCwwLDAsNS42LDExLjJMMTE4LDEyOCw2My42LDE2OC44QTE0LjA2LDE0LjA2LDAsMCwwLDU4LDE4MHYzNmExNCwxNCwwLDAsMCwxNCwxNEgxODRhMTQsMTQsMCwwLDAsMTQtMTRWMTgwLjM2YTE0LjA4LDE0LjA4LDAsMCwwLTUuNTYtMTEuMTdMMTM4LDEyOGw1NC40OS00MS4xOUExNC4wOCwxNC4wOCwwLDAsMCwxOTgsNzUuNjRaTTcwLDQwYTIsMiwwLDAsMSwyLTJIMTg0YTIsMiwwLDAsMSwyLDJWNzUuNjRhMiwyLDAsMCwxLS43OSwxLjZMMTc4LjksODJINzYuNjdMNzAuOCw3Ny42QTIsMiwwLDAsMSw3MCw3NlptNTgsODAuNDlMOTIuNjcsOTRIMTYzWm01OCw1OS44N1YyMTZhMiwyLDAsMCwxLTIsMkg3MmEyLDIsMCwwLDEtMi0yVjE4MGEyLDIsMCwwLDEsLjgtMS42TDEyMiwxNDB2MjhhNiw2LDAsMCwwLDEyLDBWMTQwLjA2bDUxLjIxLDM4LjdBMiwyLDAsMCwxLDE4NiwxODAuMzZaIi8+PC9zdmc+');}.icon-arrow-elbow-left-up{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMzgsMTkyYTYsNiwwLDAsMS02LDZIODhhNiw2LDAsMCwxLTYtNlY2Mi40OUw0NC4yNCwxMDAuMjRhNiw2LDAsMCwxLTguNDgtOC40OGw0OC00OGE2LDYsMCwwLDEsOC40OCwwbDQ4LDQ4YTYsNiwwLDEsMS04LjQ4LDguNDhMOTQsNjIuNDlWMTg2SDIzMkE2LDYsMCwwLDEsMjM4LDE5MloiLz48L3N2Zz4=');}.icon-arrow-elbow-right-up{--icon:url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yMjAuMjQsMTAwLjI0YTYsNiwwLDAsMS04LjQ4LDBMMTc0LDYyLjQ5VjE5MmE2LDYsMCwwLDEtNiw2SDI0YTYsNiwwLDAsMSwwLTEySDE2MlY2Mi40OWwtMzcuNzYsMzcuNzVhNiw2LDAsMCwxLTguNDgtOC40OGw0OC00OGE2LDYsMCwwLDEsOC40OCwwbDQ4LDQ4QTYsNiwwLDAsMSwyMjAuMjQsMTAwLjI0WiIvPjwvc3ZnPg==');}.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/blocks/_setup.php b/blocks/_setup.php
index 03ad113..100e980 100644
--- a/blocks/_setup.php
+++ b/blocks/_setup.php
@@ -1,5 +1,7 @@
<?php
+use JVBase\registrar\Registrar;
+
function ajv_render_core_site_logo(array $block, string $content):string
{
$open = $close = '';
@@ -14,25 +16,43 @@
function ajv_render_core_cover(array $block):string
{
- $types = array_map(function($type) {
- return BASE.$type;
- }, array_keys(JVB_CONTENT));
+ $types = array_map(function($type) { return jvbCheckBase($type); }, Registrar::getRegistered('post'));
+ $taxTypes = array_map(function($type) { return jvbCheckBase($type); }, Registrar::getRegistered('term'));
if (is_post_type_archive($types)) {
$obj = get_queried_object();
- foreach ($types as $type) {
- if ($type === $obj->name) {
- $type = jvbNoBase($type);
- $function = 'ajv_render_'.$type.'_cover';
- return '<section class="align-full cover alt '.$type.'">'.call_user_func($function).'</section>';
- }
+ $type = jvbNoBase($obj->name);
+ $function = 'ajv_render_'.$type.'_cover';
+ if (function_exists($function)) {
+ return '<section class="align-full cover alt '.$type.'">'.$function().'</section>';
+ }
+// foreach ($types as $type) {
+// if ($type === $obj->name) {
+// $type = jvbNoBase($type);
+// $function = 'ajv_render_'.$type.'_cover';
+// return '<section class="align-full cover alt '.$type.'">'.call_user_func($function).'</section>';
+// }
+// }
+ } else if (is_tax($taxTypes)) {
+ $obj = get_queried_object();
+ $type = jvbNoBase($obj->taxonomy);
+ $function = 'ajv_render_'.$type.'_cover';
+ if (function_exists($function)) {
+ $result = $function($obj->term_id);
+ return $result === '' ? '' : '<section class="align-full cover '.$type.'">'.$result.'</section>';
}
}
- if(!is_singular(array_map(function($item) { return BASE.$item; }, array_keys(JVB_CONTENT)))) {
+ if(!is_singular($types)) {
return JVB()->blocks()->render_core_cover($block);
}
+ $post_type = jvbNoBase(get_post_type());
+ $registrar = Registrar::getInstance($post_type);
+ if (!$registrar) {
+ return JVB()->blocks()->render_core_cover($block);
+ }
+
$ID = get_the_ID();
$imgID = get_post_thumbnail_id($ID);
@@ -41,8 +61,7 @@
$img = str_replace('<img', '<img style="object-fit:center"',jvbFormatImage($imgID, 'tiny', 'large', false)) ;
}
- $post_type = jvbNoBase(get_post_type());
- $singular = JVB_CONTENT[$post_type]['singular'];
+ $singular = $registrar->getSingular();
$header = 'Canadian made '.$singular.'. Made in Edmonton.';
$title = get_the_title();
@@ -155,4 +174,40 @@
$out .= '<div>'.$img. '</div>';
}
return $out;
+}
+
+function ajv_render_core_post_title($block, $content):string
+{
+ if (!ajv_is_singular()){
+ return JVB()->blocks()->render_core_post_title($block);
+ }
+ $ID = get_the_ID();
+ $city = get_the_terms($ID, BASE.'city');
+ if ($city && !is_wp_error($city)) {
+ $city = $city[0]->name;
+ } else {
+ $city ='Edmonton';
+ }
+ $registrar = Registrar::getInstance(get_post_type($ID));
+ if (!$registrar) {
+ return JVB()->blocks()->render_core_post_title($block);
+ }
+
+ $form = get_the_terms($ID, BASE.'form');
+ if ($form && !is_wp_error($form)){
+ $form = $form[0]->name.' ';
+ } else {
+ $form = '';
+ }
+
+ $title = get_the_title($ID);
+
+ return sprintf(
+ '<h1><small>Canadian made %s%s. Made in %s.</small>%s</h1>',
+ $form,
+ $registrar->getPlural(),
+ $city,
+ $title
+ );
+
}
\ No newline at end of file
diff --git a/content/_setup.php b/content/_setup.php
index 04aafb0..4071e2b 100644
--- a/content/_setup.php
+++ b/content/_setup.php
@@ -28,6 +28,8 @@
* - 'section' => (string) the slug of the section, as defined above
*/
+use JVBase\registrar\Registrar;
+
require(AJV_DIR . '/content/art.php');
require(AJV_DIR . '/content/design.php');
require(AJV_DIR . '/content/development.php');
@@ -35,7 +37,7 @@
require(AJV_DIR . '/content/support.php');
require(AJV_DIR . '/content/writing.php');
-add_filter('jvb_content', 'ajv_content');
+//add_filter('jvb_content', 'ajv_content');
function ajv_content($content):array
{
return [
@@ -51,7 +53,9 @@
add_filter('wp_footer', 'ajv_gallery_output');
function ajv_gallery_output():void
{
- if (is_singular(array_map(function($item) { return BASE.$item; }, array_keys(JVB_CONTENT)))) {
+ $types = array_map(function($type) { return jvbCheckBase($type); }, Registrar::getRegistered('post'));
+
+ if (is_singular($types)) {
jvbRenderGallery();
}
}
\ No newline at end of file
diff --git a/content/art.php b/content/art.php
index 9b4abaa..af748ee 100644
--- a/content/art.php
+++ b/content/art.php
@@ -1,189 +1,333 @@
<?php
// /content/art.php
use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
-function ajv_art():array
-{
- return [
- 'singular' => 'Art',
- 'plural' => 'Art',
- 'dash_title' => 'Art',
- 'dash_description' => 'Manage your art posts',
- 'directory' => 'Art',
- 'breadcrumb' => 'Art',
- 'addCrumb' => 'form',
- 'hide_single' => false,
- 'show_feed' => true,
- 'show_directory'=> true,
- 'favouritable' => true,
- 'karma' => false,
- 'icon' => 'palette',
- 'seo' => [
- 'schema' => [
- 'type' => 'VisualArtwork',
- 'name' => '{{post_title}}',
- 'description' => '{{post_excerpt}}',
- 'about' => ['@id' => '{{site_url}}/#art'],
- 'associatedMedia' => '{{post_thumbnail}}',
- 'dateCreated' => '{{post_date}}',
- // artform, artMedium, creator, keywords auto-enriched by VisualArtworkResolver
- ],
- 'meta' => [
- 'title' => '{{post_title}} — {{form.name}} Art | Handmade. Human.',
- 'description' => '{{post_excerpt}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Canadian Art. Made in Edmonton, Alberta.',
- 'description' => 'Handmade sculpture, jewelry, and more from Edmonton, Alberta.',
- ],
- ],
- 'feed' => [
- 'single' => [
- 'pre_title' => 'Canadian Art. Made in Edmonton, Alberta.',
- ],
- 'archive' => [
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('plugins_loaded', 'ajv_art',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_art_fields', 2);
+
+add_filter('ajv_ArtSchemaDefault', 'ajv_art_schema');
+add_filter('ajv_ArtMetaDefault', 'ajv_art_meta');
+add_filter('ajv_ArtArchiveDefault', 'ajv_art_archive');
+
+function ajv_art(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art = Registrar::forPost('art', 'Art', 'Art')
+ ->setIcon('palette')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'art',
+ 'with_front' => false,
],
- 'config' => [
- 'is_gallery' => false,
- 'content' => 'art',
- 'context' => 'art',
- 'id' => [],
- 'class' => [],
+ 'taxonomies' => [
+ 'project',
+ 'form',
+ 'city',
+ 'media',
+ 'style',
+ 'theme'
]
- ],
- 'rewrite' => [
- 'slug' => 'art',
- 'with_front' => false,
- ],
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'favouritable'
+ ]);
- 'fields' => [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'options' => [
- 'publish' => 'Show',
- 'draft' => 'Hide',
- 'trash' => 'Scrap',
- 'delete' => 'Permanently Delete'
- ],
- 'hidden' => true,
+//$directory = $art->getConfig('directory');
+
+}
+
+function ajv_art_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $art = Registrar::getInstance('art');
+ $breadcrumbs = $art->config('breadcrumbs');
+ $breadcrumbs->setCrumb(['project', 'form']);
+
+ $fields = $art->fields();
+ $fields->addField('project', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'label' => 'Project',
+ ]);
+ $fields->addField('form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'form',
+ 'label' => 'Form',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+ $fields->addField('media', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'media',
+ 'label' => 'Media',
+ ]);
+ $fields->addField('style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'label' => 'Style',
+ ]);
+ $fields->addField('theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'label' => 'Theme',
+ ]);
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
+ ]);
+ $fields->addField('price', [
+ 'type' => 'number',
+ 'label' => 'Price',
+ ]);
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
- ],
- 'post_date' => [
- 'type' => 'date',
- 'label' => 'Date',
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'city',
- 'autocomplete' => true,
- 'label' => 'City',
- ],
- 'form' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'form',
- 'autocomplete' => true,
- 'label' => 'Art Form',
- ],
- 'media' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'media',
- 'autocomplete' => true,
- 'label' => 'Media',
- ],
- 'style' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'style',
- 'autocomplete' => true,
- 'label' => 'Style',
- ],
- 'theme' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'theme',
- 'autocomplete' => true,
- 'label' => 'Theme',
- ],
- 'project' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'project',
- 'autocomplete' => true,
- 'label' => 'Project',
- ],
- 'post_thumbnail' => [
+ 'image' => [
'type' => 'upload',
- 'label' => 'Image',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'gallery' => [
- 'type' => 'upload',
- 'multiple'=> 'true',
- 'label' => 'Gallery',
- ],
- 'price' => [
- 'type' => 'number',
- 'label' => 'Price',
- ],
- 'post_excerpt' => [
- 'type' => 'textarea',
- 'label' => 'Short Blurb',
- ],
- 'post_content' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'label' => 'Notes'
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- ],
- 'single_image' => false,
- 'upload_title' => 'Upload Artwork',
- ];
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
}
+
+//function ajv_art():array
+//{
+// return [
+// 'singular' => 'Art',
+// 'plural' => 'Art',
+// 'dash_title' => 'Art',
+// 'dash_description' => 'Manage your art posts',
+// 'directory' => 'Art',
+// 'breadcrumb' => 'Art',
+// 'addCrumb' => 'form',
+// 'hide_single' => false,
+// 'show_feed' => true,
+// 'show_directory'=> true,
+// 'favouritable' => true,
+// 'karma' => false,
+// 'icon' => 'palette',
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'VisualArtwork',
+// 'name' => '{{post_title}}',
+// 'description' => '{{post_excerpt}}',
+// 'about' => ['@id' => '{{site_url}}/#art'],
+// 'associatedMedia' => '{{post_thumbnail}}',
+// 'dateCreated' => '{{post_date}}',
+// // artform, artMedium, creator, keywords auto-enriched by VisualArtworkResolver
+// ],
+// 'meta' => [
+// 'title' => '{{post_title}} — {{form.name}} Art | Handmade. Human.',
+// 'description' => '{{post_excerpt}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Canadian Art. Made in Edmonton, Alberta.',
+// 'description' => 'Handmade sculpture, jewelry, and more from Edmonton, Alberta.',
+// ],
+// ],
+// 'feed' => [
+// 'single' => [
+// 'pre_title' => 'Canadian Art. Made in Edmonton, Alberta.',
+// ],
+// 'archive' => [
+//
+// ],
+// 'config' => [
+// 'is_gallery' => false,
+// 'content' => 'art',
+// 'context' => 'art',
+// 'id' => [],
+// 'class' => [],
+// ]
+// ],
+// 'rewrite' => [
+// 'slug' => 'art',
+// 'with_front' => false,
+// ],
+//
+// 'fields' => [
+// 'post_status' => [
+// 'type' => 'radio',
+// 'label' => 'Status',
+// 'options' => [
+// 'publish' => 'Show',
+// 'draft' => 'Hide',
+// 'trash' => 'Scrap',
+// 'delete' => 'Permanently Delete'
+// ],
+// 'hidden' => true,
+// ],
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_date' => [
+// 'type' => 'date',
+// 'label' => 'Date',
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'city',
+// 'autocomplete' => true,
+// 'label' => 'City',
+// ],
+// 'form' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'form',
+// 'autocomplete' => true,
+// 'label' => 'Art Form',
+// ],
+// 'media' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'media',
+// 'autocomplete' => true,
+// 'label' => 'Media',
+// ],
+// 'style' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'style',
+// 'autocomplete' => true,
+// 'label' => 'Style',
+// ],
+// 'theme' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'theme',
+// 'autocomplete' => true,
+// 'label' => 'Theme',
+// ],
+// 'project' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'project',
+// 'autocomplete' => true,
+// 'label' => 'Project',
+// ],
+// 'post_thumbnail' => [
+// 'type' => 'upload',
+// 'label' => 'Image',
+// ],
+// 'gallery' => [
+// 'type' => 'upload',
+// 'multiple'=> true,
+// 'label' => 'Gallery',
+// ],
+// 'price' => [
+// 'type' => 'number',
+// 'label' => 'Price',
+// ],
+// 'post_excerpt' => [
+// 'type' => 'textarea',
+// 'label' => 'Short Blurb',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Notes'
+// ],
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// ],
+// 'single_image' => false,
+// 'upload_title' => 'Upload Artwork',
+// ];
+//}
+
function ajv_render_art_content(array $block, string $content):string
{
$out = '';
@@ -196,7 +340,7 @@
if (array_key_exists('post_excerpt', $fields) && !empty($fields['post_excerpt'])) {
$bits[] = sprintf(
'<section id="excerpt"><h2>At a Glance</h2>%s</section>',
- apply_filters('the_content', $fields['post_excerpt'])
+ jvb_filter_content($fields['post_excerpt'])
);
}
@@ -205,7 +349,7 @@
$gallery = array_map(function ($imgID) {
$out = '<figure>'.jvbFormatImage($imgID,'tiny','medium');
$caption = wp_get_attachment_caption($imgID);
- $out .= ($caption && $caption !== '') ? '<figcaption>'.apply_filters('the_content', $caption).'</figcaption>' : '';
+ $out .= ($caption && $caption !== '') ? '<figcaption>'.jvb_filter_content($caption).'</figcaption>' : '';
$out .= '</figure>';
return $out;
@@ -220,7 +364,7 @@
if (array_key_exists('post_content', $fields) && !empty($fields['post_content'])) {
$bits[] = sprintf(
'<section id="content">%s</section>',
- apply_filters('the_content', $fields['post_content'])
+ $fields['post_content']
);
}
@@ -237,4 +381,41 @@
return $out;
+}
+
+
+function ajv_art_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\VisualArtwork\VisualArtwork',
+ 'name' => '{{post_title}} | Canadian Art',
+ 'artist' => '{{post_author}}',
+ 'description' => '{{post_excerpt}}',
+ 'thumbnail' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'dateModified' => '{{post_modified}}',
+ 'artform' => '{{form.name}}',
+ 'artMedium' => '{{medium.name}}',
+ 'keywords' => '{{style.name}}',
+ ];
+}
+
+function ajv_art_meta():array
+{
+ return[
+ 'name' => '{{post_title}} - {{form.name}} | Handmade. Human Art',
+ ];
+}
+
+function ajv_art_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Canadian Art. Made in Edmonton, Alberta.',
+ 'description' => 'Handmade sculpture, jewellery, and more from Edmonton, Alberta.'
+ ]);
+}
+
+function ajv_art_reference_schema(array $defaults):array
+{
+ return $defaults;
}
\ No newline at end of file
diff --git a/content/design.php b/content/design.php
index 213f5d8..8dadd4f 100644
--- a/content/design.php
+++ b/content/design.php
@@ -1,164 +1,394 @@
<?php
// /content/design.php
-function ajv_design():array
-{
- return [
- 'singular' => 'Design',
- 'plural' => 'Designs',
- 'directory' => 'Design',
- 'show_feed' => true,
- 'show_directory'=> true,
- 'addCrumb' => 'project',
- 'favouritable' => true,
- 'karma' => false,
- 'icon' => 'scribble',
- 'rewrite' => [
- 'slug' => 'design',
- 'with_front' => false,
- ],
- // design.php
- 'seo' => [
- 'schema' => [
- 'type' => 'CreativeWork',
- 'name' => '{{post_title}}',
- 'description' => '{{post_excerpt}}',
- 'about' => ['@id' => '{{site_url}}/#design'],
- 'associatedMedia' => '{{post_thumbnail}}',
- 'dateCreated' => '{{post_date}}',
- 'keywords' => '{{style.name}}',
- ],
- 'meta' => [
- 'title' => '{{post_title}} | Human-made Design',
- 'description' => '{{post_excerpt}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Canadian Design. Made in Edmonton, Alberta.',
- ],
- ],
- 'feed' => [
- 'single' => [
- 'pre_title' => 'Canadian Design. Made in Edmonton, Alberta.',
- ],
- 'archive' => [
+use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('plugins_loaded', 'ajv_design',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_design_fields', 2);
+
+
+add_filter('ajv_DesignSchemaDefault', 'ajv_design_schema');
+add_filter('ajv_DesignMetaDefault', 'ajv_design_meta');
+add_filter('ajv_DesignArchiveDefault', 'ajv_design_archive');
+
+function ajv_design(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $design = Registrar::forPost('design', 'Design', 'Designs')
+ ->setIcon('scribble')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'design',
+ 'with_front' => false,
],
- 'config' => [
- 'is_gallery' => false,
- 'content' => 'design',
- 'context' => 'design',
- 'id' => [],
- 'class' => [],
+ 'taxonomies' => [
+ 'project',
+ 'form',
+ 'city',
+ 'style',
+ 'theme',
]
- ],
- 'fields' => [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'options' => [
- 'publish' => 'Show',
- 'draft' => 'Hide',
- 'trash' => 'Scrap',
- 'delete' => 'Permanently Delete'
- ],
- 'hidden' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'favouritable'
+ ]);
+
+}
+function ajv_design_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $design = Registrar::getInstance('design');
+//$directory = $design->getConfig('directory');
+ $breadcrumbs = $design->config('breadcrumbs');
+ $breadcrumbs->setCrumb('project');
+
+ $fields = $design->fields();
+ $fields->addField('project', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'label' => 'Project',
+ ]);
+ $fields->addField('form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'form',
+ 'label' => 'Form',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+ $fields->addField('style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'label' => 'Style',
+ ]);
+ $fields->addField('theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'label' => 'Theme',
+ ]);
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
+ ]);
+ $fields->addField('price', [
+ 'type' => 'number',
+ 'label' => 'Price',
+ ]);
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'post_date' => [
- 'type' => 'date',
- 'label' => 'Date',
- ],
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
- ],
- 'post_thumbnail' => [
+ 'image' => [
'type' => 'upload',
- 'label' => 'Image',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'project' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'project',
- 'autocomplete' => true,
- 'label' => 'Project',
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'autocomplete' => true,
- 'taxonomy' => 'city',
- 'label' => 'City',
- ],
- 'style' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'style',
- 'autocomplete' => true,
- 'label' => 'Styles',
- ],
- 'theme' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'theme',
- 'autocomplete' => true,
- 'label' => 'Theme',
- ],
- 'gallery' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Gallery',
- ],
- 'price' => [
- 'type' => 'number',
- 'label' => 'Price',
- ],
- 'post_content' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'label' => 'Notes'
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
+ ],
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+}
+//function ajv_design():array
+//{
+// return [
+// 'singular' => 'Design',
+// 'plural' => 'Designs',
+// 'directory' => 'Design',
+// 'show_feed' => true,
+// 'show_directory'=> true,
+// 'addCrumb' => 'project',
+// 'favouritable' => true,
+// 'karma' => false,
+// 'icon' => 'scribble',
+// 'rewrite' => [
+// 'slug' => 'design',
+// 'with_front' => false,
+// ],
+// // design.php
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'CreativeWork',
+// 'name' => '{{post_title}}',
+// 'description' => '{{post_excerpt}}',
+// 'about' => ['@id' => '{{site_url}}/#design'],
+// 'associatedMedia' => '{{post_thumbnail}}',
+// 'dateCreated' => '{{post_date}}',
+// 'keywords' => '{{style.name}}',
+// ],
+// 'meta' => [
+// 'title' => '{{post_title}} | Human-made Design',
+// 'description' => '{{post_excerpt}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Canadian Design. Made in Edmonton, Alberta.',
+// ],
+// ],
+// 'feed' => [
+// 'single' => [
+// 'pre_title' => 'Canadian Design. Made in Edmonton, Alberta.',
+// ],
+// 'archive' => [
+//
+// ],
+// 'config' => [
+// 'is_gallery' => false,
+// 'content' => 'design',
+// 'context' => 'design',
+// 'id' => [],
+// 'class' => [],
+// ]
+// ],
+// 'fields' => [
+// 'post_status' => [
+// 'type' => 'radio',
+// 'label' => 'Status',
+// 'options' => [
+// 'publish' => 'Show',
+// 'draft' => 'Hide',
+// 'trash' => 'Scrap',
+// 'delete' => 'Permanently Delete'
+// ],
+// 'hidden' => true,
+// ],
+// 'post_date' => [
+// 'type' => 'date',
+// 'label' => 'Date',
+// ],
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_thumbnail' => [
+// 'type' => 'upload',
+// 'label' => 'Image',
+// ],
+// 'project' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'project',
+// 'autocomplete' => true,
+// 'label' => 'Project',
+// ],
+// 'form' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'form',
+// 'autocomplete' => true,
+// 'label' => 'Format',
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'autocomplete' => true,
+// 'taxonomy' => 'city',
+// 'label' => 'City',
+// ],
+// 'style' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'style',
+// 'autocomplete' => true,
+// 'label' => 'Styles',
+// ],
+// 'theme' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'theme',
+// 'autocomplete' => true,
+// 'label' => 'Theme',
+// ],
+// 'gallery' => [
+// 'type' => 'upload',
+// 'multiple'=> true,
+// 'label' => 'Gallery',
+// ],
+// 'price' => [
+// 'type' => 'number',
+// 'label' => 'Price',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Notes'
+// ],
+//
+//
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// ],
+// 'single_image' => false,
+// 'upload_title' => 'Upload Designs',
+// ];
+//}
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- ],
- 'single_image' => false,
- 'upload_title' => 'Upload Designs',
+function ajv_render_design_content(array $block, string $content):string
+{
+ $out = '';
+ $ID = get_the_ID();
+ $meta = Meta::forPost($ID);
+
+ $fields = $meta->getAll();
+
+ $bits = [];
+ if (array_key_exists('post_excerpt', $fields) && !empty($fields['post_excerpt'])) {
+ $bits[] = sprintf(
+ '<section id="excerpt"><h2>At a Glance</h2>%s</section>',
+ jvb_filter_content($fields['post_excerpt'])
+ );
+ }
+
+ if (array_key_exists('gallery', $fields) && !empty($fields['gallery'])) {
+ $gallery = explode(',',$fields['gallery']);
+ $gallery = array_map(function ($imgID) {
+ $out = '<figure>'.jvbFormatImage($imgID,'tiny','medium');
+ $caption = wp_get_attachment_caption($imgID);
+ $out .= ($caption && $caption !== '') ? '<figcaption>'.jvb_filter_content($caption).'</figcaption>' : '';
+ $out .= '</figure>';
+ return $out;
+
+ }, $gallery);
+ $gallery = implode('',$gallery);
+ $bits[] = sprintf(
+ '<section id="gallery"><h2>Gallery</h2><div>%s</div></section>',
+ $gallery
+ );
+ }
+
+ if (array_key_exists('post_content', $fields) && !empty($fields['post_content'])) {
+ $bits[] = sprintf(
+ '<section id="content">%s</section>',
+ $fields['post_content']
+ );
+ }
+
+ if (array_key_exists('needs', $fields) && !empty($fields['needs'])) {
+ $bits[] = ajvb_format_needs($fields['needs']);
+ }
+ if (array_key_exists('wants', $fields) && !empty($fields['wants'])) {
+ $bits[] = ajvb_format_wants($fields['wants']);
+ }
+
+ if (!empty($bits)) {
+ $out = implode('',$bits);
+ }
+
+
+ return $out;
+}
+
+function ajv_design_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{post_title}} | Canadian Design',
+ 'description' => '{{post_excerpt}}',
+ 'thumbnail' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'dateModified' => '{{post_modified}}',
+ 'keywords' => '{{style.name}}',
+ 'isPartOf' => '{{project}}'
];
}
+
+function ajv_design_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | Human-made Design',
+ ];
+}
+
+function ajv_design_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Canadian Design. Made in Edmonton, Alberta.',
+ ]);
+}
+
+function ajv_design_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/content/development.php b/content/development.php
index 38806bb..ce43adb 100644
--- a/content/development.php
+++ b/content/development.php
@@ -1,158 +1,410 @@
<?php
// /content/development.php
-function ajv_development():array
-{
- return [
- 'singular' => 'Development',
- 'plural' => 'Developments',
- 'directory' => 'Development',
- 'addCrumb' => 'project',
- 'show_directory'=> true,
- 'show_feed' => true,
- 'favouritable' => true,
- 'karma' => false,
- 'icon' => 'brackets-angle',
- 'rewrite' => [
- 'slug' => 'development',
- 'with_front' => false,
- ],
+use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
- 'seo' => [
- 'schema' => [
- 'type' => 'CreativeWork',
- 'name' => '{{post_title}}',
- 'description' => '{{post_excerpt}}',
- 'about' => ['@id' => '{{site_url}}/#development'],
- 'associatedMedia' => '{{post_thumbnail}}',
- 'dateCreated' => '{{post_date}}',
- ],
- 'meta' => [
- 'title' => '{{post_title}} | Custom Website Development',
- 'description' => '{{post_excerpt}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Custom Canadian Website Development. Made in Edmonton, Alberta.',
- ],
- ],
- 'feed' => [
- 'single' => [
- 'pre_title' => 'Custom Canadian Website Development. Made in Edmonton, Alberta.',
- ],
- 'archive' => [
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('plugins_loaded', 'ajv_development',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_development_fields', 2);
+
+add_filter('ajv_DevelopmentSchemaDefault', 'ajv_development_schema');
+add_filter('ajv_DevelopmentMetaDefault', 'ajv_development_meta');
+add_filter('ajv_DevelopmentArchiveDefault', 'ajv_development_archive');
+
+function ajv_development(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $development = Registrar::forPost('development', 'Development', 'Developments')
+ ->setIcon('brackets-angle')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'development',
+ 'with_front' => false,
],
- 'config' => [
- 'is_gallery' => false,
- 'content' => 'development',
- 'context' => 'development',
- 'id' => [],
- 'class' => [],
+ 'taxonomies' => [
+ 'project',
+ 'form',
+ 'city',
+ 'style',
+ 'theme',
+ 'target',
]
- ],
- 'fields' => [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'options' => [
- 'publish' => 'Show',
- 'draft' => 'Hide',
- 'trash' => 'Scrap',
- 'delete' => 'Permanently Delete'
- ],
- 'hidden' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'favouritable'
+ ]);
+}
+function ajv_development_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $development = Registrar::getInstance('development');
+
+//$directory = $development->getConfig('directory');
+ $breadcrumbs = $development->config('breadcrumbs');
+ $breadcrumbs->setCrumb('project');
+
+ $fields = $development->fields();
+ $fields->addField('project', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'label' => 'Project',
+ ]);
+ $fields->addField('form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'form',
+ 'label' => 'Form',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+ $fields->addField('target', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'target',
+ 'label' => 'Target Audience',
+ ]);
+ $fields->addField('style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'label' => 'Style',
+ ]);
+ $fields->addField('theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'label' => 'Theme',
+ ]);
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
+ ]);
+ $fields->addField('price', [
+ 'type' => 'number',
+ 'label' => 'Price',
+ ]);
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
- ],
- 'post_date' => [
- 'type' => 'date',
- 'label' => 'Date',
- ],
- 'post_thumbnail' => [
+ 'image' => [
'type' => 'upload',
- 'label' => 'Image',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'project' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'project',
- 'autocomplete' => true,
- 'label' => 'Project',
- ],
- 'target' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'target',
- 'autocomplete' => true,
- 'label' => 'Target Audience',
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'autocomplete' => true,
- 'taxonomy' => 'city',
- 'label' => 'City',
- ],
- 'gallery' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Gallery',
- ],
- 'price' => [
- 'type' => 'number',
- 'label' => 'Price',
- ],
- 'post_content' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'label' => 'Notes'
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
+ ],
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+}
+//
+//function ajv_development():array
+//{
+// return [
+// 'singular' => 'Development',
+// 'plural' => 'Developments',
+// 'directory' => 'Development',
+// 'addCrumb' => 'project',
+// 'show_directory'=> true,
+// 'show_feed' => true,
+// 'favouritable' => true,
+// 'karma' => false,
+// 'icon' => 'brackets-angle',
+// 'rewrite' => [
+// 'slug' => 'development',
+// 'with_front' => false,
+// ],
+//
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'CreativeWork',
+// 'name' => '{{post_title}}',
+// 'description' => '{{post_excerpt}}',
+// 'about' => ['@id' => '{{site_url}}/#development'],
+// 'associatedMedia' => '{{post_thumbnail}}',
+// 'dateCreated' => '{{post_date}}',
+// ],
+// 'meta' => [
+// 'title' => '{{post_title}} | Custom Website Development',
+// 'description' => '{{post_excerpt}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Custom Canadian Website Development. Made in Edmonton, Alberta.',
+// ],
+// ],
+// 'feed' => [
+// 'single' => [
+// 'pre_title' => 'Custom Canadian Website Development. Made in Edmonton, Alberta.',
+// ],
+// 'archive' => [
+//
+// ],
+// 'config' => [
+// 'is_gallery' => false,
+// 'content' => 'development',
+// 'context' => 'development',
+// 'id' => [],
+// 'class' => [],
+// ]
+// ],
+// 'fields' => [
+// 'post_status' => [
+// 'type' => 'radio',
+// 'label' => 'Status',
+// 'options' => [
+// 'publish' => 'Show',
+// 'draft' => 'Hide',
+// 'trash' => 'Scrap',
+// 'delete' => 'Permanently Delete'
+// ],
+// 'hidden' => true,
+// ],
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_date' => [
+// 'type' => 'date',
+// 'label' => 'Date',
+// ],
+// 'post_thumbnail' => [
+// 'type' => 'upload',
+// 'label' => 'Image',
+// ],
+// 'project' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'project',
+// 'autocomplete' => true,
+// 'label' => 'Project',
+// ],
+// 'url' => [
+// 'type' => 'url',
+// 'label' => 'Live URL',
+// 'quickEdit' => true
+// ],
+//
+// 'form' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'form',
+// 'autocomplete' => true,
+// 'label' => 'Format',
+// ],
+// 'target' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'target',
+// 'autocomplete' => true,
+// 'label' => 'Target Audience',
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'autocomplete' => true,
+// 'taxonomy' => 'city',
+// 'label' => 'City',
+// ],
+// 'gallery' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Gallery',
+// ],
+// 'price' => [
+// 'type' => 'number',
+// 'label' => 'Price',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Notes'
+// ],
+//
+//
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// ],
+// 'single_image' => false,
+// 'upload_title' => 'Upload Development',
+// ];
+//}
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- ],
- 'single_image' => false,
- 'upload_title' => 'Upload Development',
+function ajv_render_development_content(array $block, string $content):string
+{
+ $out = '';
+ $ID = get_the_ID();
+ $meta = Meta::forPost($ID);
+
+ $fields = $meta->getAll();
+
+ $bits = [];
+ if (array_key_exists('post_excerpt', $fields) && !empty($fields['post_excerpt'])) {
+ $bits[] = sprintf(
+ '<section id="excerpt"><h2>At a Glance</h2>%s</section>',
+ jvb_filter_content($fields['post_excerpt'])
+ );
+ }
+
+ if (array_key_exists('url', $fields) && !empty($fields['url'])) {
+ $bits[] = sprintf(
+ '<section id="url"><a class="button" href="%s" target="_blank">See it Live</a></section>',
+ $fields['url']
+ );
+ }
+
+ if (array_key_exists('gallery', $fields) && !empty($fields['gallery'])) {
+ $gallery = explode(',',$fields['gallery']);
+ $gallery = array_map(function ($imgID) {
+ $out = '<figure>'.jvbFormatImage($imgID,'tiny','medium');
+ $caption = wp_get_attachment_caption($imgID);
+ $out .= ($caption && $caption !== '') ? '<figcaption>'.jvb_filter_content($caption).'</figcaption>' : '';
+ $out .= '</figure>';
+ return $out;
+
+ }, $gallery);
+ $gallery = implode('',$gallery);
+ $bits[] = sprintf(
+ '<section id="gallery"><h2>Gallery</h2><div>%s</div></section>',
+ $gallery
+ );
+ }
+
+ if (array_key_exists('post_content', $fields) && !empty($fields['post_content'])) {
+ $bits[] = sprintf(
+ '<section id="content">%s</section>',
+ $fields['post_content']
+ );
+ }
+
+ if (array_key_exists('needs', $fields) && !empty($fields['needs'])) {
+ $bits[] = ajvb_format_needs($fields['needs']);
+ }
+ if (array_key_exists('wants', $fields) && !empty($fields['wants'])) {
+ $bits[] = ajvb_format_wants($fields['wants']);
+ }
+
+ if (!empty($bits)) {
+ $out = implode('',$bits);
+ }
+
+
+ return $out;
+}
+
+
+
+function ajv_development_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{post_title}} | Canadian Development',
+ 'description' => '{{post_excerpt}}',
+ 'thumbnail' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'dateModified' => '{{post_modified}}',
+ 'keywords' => '{{style.name}}'
];
}
+
+function ajv_development_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | Human-made Development',
+ ];
+}
+
+function ajv_development_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Canadian Development. Made in Edmonton, Alberta.',
+ ]);
+}
+
+function ajv_development_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/content/strategy.php b/content/strategy.php
index a3d9e12..2a99027 100644
--- a/content/strategy.php
+++ b/content/strategy.php
@@ -1,158 +1,385 @@
<?php
// /content/strategy.php
-function ajv_strategy():array
-{
- return [
- 'singular' => 'Strategy',
- 'plural' => 'Strategies',
- 'hide_single' => false,
- 'redirectToAuthor'=> false,
- 'show_directory'=> true,
- 'directory' => 'Strategy',
- 'addCrumb' => 'project',
- 'show_feed' => true,
- 'favouritable' => true,
- 'karma' => false,
- 'icon' => 'brain',
- 'rewrite' => [
- 'slug' => 'strategy',
- 'with_front' => false,
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'CreativeWork',
- 'name' => '{{post_title}}',
- 'description' => '{{post_excerpt}}',
- 'about' => ['@id' => '{{site_url}}/#strategy'],
- 'associatedMedia' => '{{post_thumbnail}}',
- 'dateCreated' => '{{post_date}}',
- ],
- 'meta' => [
- 'title' => '{{post_title}} | Brand Strategy in Canada',
- 'description' => '{{post_excerpt}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
- ],
- ],
- 'feed' => [
- 'single' => [
- 'pre_title' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
- ],
- 'archive' => [
+use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_strategy',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_strategy_fields', 2);
+
+add_filter('ajv_StrategySchemaDefault', 'ajv_strategy_schema');
+add_filter('ajv_StrategyMetaDefault', 'ajv_strategy_meta');
+add_filter('ajv_StrategyArchiveDefault', 'ajv_strategy_archive');
+
+function ajv_strategy(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $strategy = Registrar::forPost('strategy', 'Strategy', 'Strategies')
+ ->setIcon('brain')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'strategy',
+ 'with_front' => false,
],
- 'config' => [
- 'is_gallery' => false,
- 'content' => 'strategy',
- 'context' => 'strategy',
- 'id' => [],
- 'class' => [],
+ 'taxonomies' => [
+ 'project',
+ 'form',
+ 'target',
+ 'city'
]
- ],
- 'fields' => [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'options' => [
- 'publish' => 'Show',
- 'draft' => 'Hide',
- 'trash' => 'Scrap',
- 'delete' => 'Permanently Delete'
- ],
- 'hidden' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'favouritable'
+ ]);
+}
+
+function ajv_strategy_fields():void {
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $strategy = Registrar::getInstance('strategy');
+
+
+//$directory = $strategy->getConfig('directory');
+ $breadcrumbs = $strategy->config('breadcrumbs');
+ $breadcrumbs->setCrumb('project');
+
+ $fields = $strategy->fields();
+ $fields->addField('project', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'label' => 'Project',
+ ]);
+ $fields->addField('form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'form',
+ 'label' => 'Format',
+ ]);
+ $fields->addField('target', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'target',
+ 'label' => 'Target Audience',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
+ ]);
+ $fields->addField('price', [
+ 'type' => 'number',
+ 'label' => 'Price',
+ ]);
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'post_date' => [
- 'type' => 'date',
- 'label' => 'Date',
- ],
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
- ],
- 'post_thumbnail' => [
+ 'image' => [
'type' => 'upload',
- 'label' => 'Image',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'project' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'project',
- 'autocomplete' => true,
- 'label' => 'Project',
- ],
- 'target' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'target',
- 'autocomplete' => true,
- 'label' => 'Target Audience',
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'autocomplete' => true,
- 'taxonomy' => 'city',
- 'label' => 'City',
- ],
- 'gallery' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Gallery',
- ],
- 'price' => [
- 'type' => 'number',
- 'label' => 'Price',
- ],
- 'post_content' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'label' => 'Notes'
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
+ ],
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+}
+
+//function ajv_strategy():array
+//{
+// return [
+// 'singular' => 'Strategy',
+// 'plural' => 'Strategies',
+// 'hide_single' => false,
+// 'redirectToAuthor'=> false,
+// 'show_directory'=> true,
+// 'directory' => 'Strategy',
+// 'addCrumb' => 'project',
+// 'show_feed' => true,
+// 'favouritable' => true,
+// 'karma' => false,
+// 'icon' => 'brain',
+// 'rewrite' => [
+// 'slug' => 'strategy',
+// 'with_front' => false,
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'CreativeWork',
+// 'name' => '{{post_title}}',
+// 'description' => '{{post_excerpt}}',
+// 'about' => ['@id' => '{{site_url}}/#strategy'],
+// 'associatedMedia' => '{{post_thumbnail}}',
+// 'dateCreated' => '{{post_date}}',
+// ],
+// 'meta' => [
+// 'title' => '{{post_title}} | Brand Strategy in Canada',
+// 'description' => '{{post_excerpt}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
+// ],
+// ],
+// 'feed' => [
+// 'single' => [
+// 'pre_title' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
+// ],
+// 'archive' => [
+//
+// ],
+// 'config' => [
+// 'is_gallery' => false,
+// 'content' => 'strategy',
+// 'context' => 'strategy',
+// 'id' => [],
+// 'class' => [],
+// ]
+// ],
+// 'fields' => [
+// 'post_status' => [
+// 'type' => 'radio',
+// 'label' => 'Status',
+// 'options' => [
+// 'publish' => 'Show',
+// 'draft' => 'Hide',
+// 'trash' => 'Scrap',
+// 'delete' => 'Permanently Delete'
+// ],
+// 'hidden' => true,
+// ],
+// 'post_date' => [
+// 'type' => 'date',
+// 'label' => 'Date',
+// ],
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_thumbnail' => [
+// 'type' => 'upload',
+// 'label' => 'Image',
+// ],
+// 'project' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'project',
+// 'autocomplete' => true,
+// 'label' => 'Project',
+// ],
+//
+// 'form' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'form',
+// 'autocomplete' => true,
+// 'label' => 'Format',
+// ],
+// 'target' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'target',
+// 'autocomplete' => true,
+// 'label' => 'Target Audience',
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'autocomplete' => true,
+// 'taxonomy' => 'city',
+// 'label' => 'City',
+// ],
+// 'gallery' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Gallery',
+// ],
+// 'price' => [
+// 'type' => 'number',
+// 'label' => 'Price',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Notes'
+// ],
+//
+//
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// ],
+// 'single_image' => false,
+// 'upload_title' => 'Upload Strategies',
+// ];
+//}
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- ],
- 'single_image' => false,
- 'upload_title' => 'Upload Strategies',
+function ajv_render_strategy_content(array $block, string $content):string
+{
+ $out = '';
+ $ID = get_the_ID();
+ $meta = Meta::forPost($ID);
+
+ $fields = $meta->getAll();
+
+ $bits = [];
+ if (array_key_exists('post_excerpt', $fields) && !empty($fields['post_excerpt'])) {
+ $bits[] = sprintf(
+ '<section id="excerpt"><h2>At a Glance</h2>%s</section>',
+ jvb_filter_content($fields['post_excerpt'])
+ );
+ }
+
+ if (array_key_exists('gallery', $fields) && !empty($fields['gallery'])) {
+ $gallery = explode(',',$fields['gallery']);
+ $gallery = array_map(function ($imgID) {
+ $out = '<figure>'.jvbFormatImage($imgID,'tiny','medium');
+ $caption = wp_get_attachment_caption($imgID);
+ $out .= ($caption && $caption !== '') ? '<figcaption>'.jvb_filter_content($caption).'</figcaption>' : '';
+ $out .= '</figure>';
+ return $out;
+
+ }, $gallery);
+ $gallery = implode('',$gallery);
+ $bits[] = sprintf(
+ '<section id="gallery"><h2>Gallery</h2><div>%s</div></section>',
+ $gallery
+ );
+ }
+
+ if (array_key_exists('post_content', $fields) && !empty($fields['post_content'])) {
+ $bits[] = sprintf(
+ '<section id="content">%s</section>',
+ $fields['post_content']
+ );
+ }
+
+ if (array_key_exists('needs', $fields) && !empty($fields['needs'])) {
+ $bits[] = ajvb_format_needs($fields['needs']);
+ }
+ if (array_key_exists('wants', $fields) && !empty($fields['wants'])) {
+ $bits[] = ajvb_format_wants($fields['wants']);
+ }
+
+ if (!empty($bits)) {
+ $out = implode('',$bits);
+ }
+
+
+ return $out;
+}
+
+
+function ajv_strategy_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{post_title}} | Brand Strategy in Canada',
+ 'description' => '{{post_excerpt}}',
+ 'thumbnail' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'dateModified' => '{{post_modified}}',
+ 'keywords' => '{{style.name}}'
];
}
+
+function ajv_strategy_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | Brand Strategy in Canada',
+ ];
+}
+
+function ajv_strategy_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Brand Strategy in Canada. Made in Edmonton, Alberta.',
+ ]);
+}
+
+function ajv_strategy_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/content/support.php b/content/support.php
index 87cb6b3..f26827c 100644
--- a/content/support.php
+++ b/content/support.php
@@ -1,28 +1,57 @@
<?php
// /content/support.php
-function ajv_support(): array
-{
- return [
- 'singular' => 'Support',
- 'plural' => 'Support',
- 'hide_single' => false,
- 'show_feed' => false,
- 'icon' => 'question',
- 'public' => false,
- 'rewrite' => [
- 'slug' => 'support',
- 'with_front' => false,
- ],
- 'fields' => [
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
+
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_support',1);
+
+//add_filter('ajv_SupportSchemaDefault', 'ajv_support_schema');
+//add_filter('ajv_SupportMetaDefault', 'ajv_support_meta');
+//add_filter('ajv_SupportArchiveDefault', 'ajv_support_archive');
+
+function ajv_support(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $support = Registrar::forPost('support', 'Support', 'Supports')
+ ->setIcon('question')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'support',
+ 'with_front' => false,
],
- 'post_content' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'Content'
- ]
- ],
- ];
-}
\ No newline at end of file
+ 'public' => false,
+ 'taxonomies' => []
+ ]);
+}
+//function ajv_support(): array
+//{
+// return [
+// 'singular' => 'Support',
+// 'plural' => 'Support',
+// 'hide_single' => false,
+// 'show_feed' => false,
+// 'icon' => 'question',
+// 'public' => false,
+// 'rewrite' => [
+// 'slug' => 'support',
+// 'with_front' => false,
+// ],
+// 'fields' => [
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Content'
+// ]
+// ],
+// ];
+//}
diff --git a/content/writing.php b/content/writing.php
index 8cd4c7f..5642862 100644
--- a/content/writing.php
+++ b/content/writing.php
@@ -1,158 +1,398 @@
<?php
// /content/writing.php
-function ajv_writing():array
-{
- return [
- 'singular' => 'Writing',
- 'plural' => 'Writings',
- 'hide_single' => false,
- 'redirectToAuthor'=> false,
- 'show_feed' => true,
- 'addCrumb' => 'project',
- 'show_directory'=> true,
- 'directory' => 'Writing',
- 'favouritable' => true,
- 'karma' => false,
- 'icon' => 'pen-nib',
- 'rewrite' => [
- 'slug' => 'writing',
- 'with_front' => false,
- ],
+use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
- 'seo' => [
- 'schema' => [
- 'type' => 'CreativeWork',
- 'name' => '{{post_title}}',
- 'description' => '{{post_excerpt}}',
- 'about' => ['@id' => '{{site_url}}/#writing'],
- 'associatedMedia' => '{{post_thumbnail}}',
- 'dateCreated' => '{{post_date}}',
- ],
- 'meta' => [
- 'title' => '{{post_title}} | Human-made Writing',
- 'description' => '{{post_excerpt}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Canadian Content Writing. From Edmonton, Alberta.',
- ],
- ],
- 'feed' => [
- 'single' => [
- 'pre_title' => 'Canadian Content Writing. From Edmonton, Alberta.',
- ],
- 'archive' => [
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('plugins_loaded', 'ajv_writing',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_writing_fields', 2);
+
+add_filter('ajv_WritingSchemaDefault', 'ajv_writing_schema');
+add_filter('ajv_WritingMetaDefault', 'ajv_writing_meta');
+add_filter('ajv_WritingArchiveDefault', 'ajv_writing_archive');
+
+function ajv_writing(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $writing = Registrar::forPost('writing', 'Writing', 'Writings')
+ ->setIcon('pen-nib')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'writing',
+ 'with_front' => false,
],
- 'config' => [
- 'is_gallery' => false,
- 'content' => 'writing',
- 'context' => 'writing',
- 'id' => [],
- 'class' => [],
+ 'taxonomies' => [
+ 'project',
+ 'form',
+ 'target',
+ 'city',
+ 'style',
+ 'theme'
]
- ],
- 'fields' => [
- 'post_status' => [
- 'type' => 'radio',
- 'label' => 'Status',
- 'options' => [
- 'publish' => 'Show',
- 'draft' => 'Hide',
- 'trash' => 'Scrap',
- 'delete' => 'Permanently Delete'
- ],
- 'hidden' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'favouritable'
+ ]);
+}
+function ajv_writing_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $writing = Registrar::getInstance('writing');
+
+//$directory = $writing->getConfig('directory');
+ $breadcrumbs = $writing->config('breadcrumbs');
+ $breadcrumbs->setCrumb('project');
+
+ $fields = $writing->fields();
+ $fields->addField('project', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'project',
+ 'label' => 'Project',
+ ]);
+ $fields->addField('form', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'form',
+ 'label' => 'Form',
+ ]);
+ $fields->addField('target', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'target',
+ 'label' => 'Target',
+ ]);
+ $fields->addField('city', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ ]);
+ $fields->addField('style', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'style',
+ 'label' => 'Style',
+ ]);
+ $fields->addField('theme', [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'taxonomy' => 'theme',
+ 'label' => 'Theme',
+ ]);
+ $fields->addField('gallery', [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Gallery',
+ ]);
+ $fields->addField('price', [
+ 'type' => 'number',
+ 'label' => 'Price',
+ ]);
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'post_title' => [
- 'type' => 'text',
- 'label' => 'Title',
- ],
- 'post_date' => [
- 'type' => 'date',
- 'label' => 'Date',
- ],
- 'post_thumbnail' => [
+ 'image' => [
'type' => 'upload',
- 'label' => 'Image',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'project' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'project',
- 'autocomplete' => true,
- 'label' => 'Project',
- ],
- 'target' => [
- 'type' => 'taxonomy',
- 'taxonomy' => 'target',
- 'autocomplete' => true,
- 'label' => 'Target Audience',
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'autocomplete' => true,
- 'taxonomy' => 'city',
- 'label' => 'City',
- ],
- 'gallery' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Gallery',
- ],
- 'price' => [
- 'type' => 'number',
- 'label' => 'Price',
- ],
- 'post_content' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'label' => 'Notes'
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
+ ],
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+}
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'image' => [
- 'type' => 'upload',
- 'multiple' => true,
- 'label' => 'Example Image'
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- ],
- 'single_image' => false,
- 'upload_title' => 'Upload Writings',
+//function ajv_writing():array
+//{
+// return [
+// 'singular' => 'Writing',
+// 'plural' => 'Writings',
+// 'hide_single' => false,
+// 'redirectToAuthor'=> false,
+// 'show_feed' => true,
+// 'addCrumb' => 'project',
+// 'show_directory'=> true,
+// 'directory' => 'Writing',
+// 'favouritable' => true,
+// 'karma' => false,
+// 'icon' => 'pen-nib',
+// 'rewrite' => [
+// 'slug' => 'writing',
+// 'with_front' => false,
+// ],
+//
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'CreativeWork',
+// 'name' => '{{post_title}}',
+// 'description' => '{{post_excerpt}}',
+// 'about' => ['@id' => '{{site_url}}/#writing'],
+// 'associatedMedia' => '{{post_thumbnail}}',
+// 'dateCreated' => '{{post_date}}',
+// ],
+// 'meta' => [
+// 'title' => '{{post_title}} | Human-made Writing',
+// 'description' => '{{post_excerpt}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Canadian Content Writing. From Edmonton, Alberta.',
+// ],
+// ],
+// 'feed' => [
+// 'single' => [
+// 'pre_title' => 'Canadian Content Writing. From Edmonton, Alberta.',
+// ],
+// 'archive' => [
+//
+// ],
+// 'config' => [
+// 'is_gallery' => false,
+// 'content' => 'writing',
+// 'context' => 'writing',
+// 'id' => [],
+// 'class' => [],
+// ]
+// ],
+// 'fields' => [
+// 'post_status' => [
+// 'type' => 'radio',
+// 'label' => 'Status',
+// 'options' => [
+// 'publish' => 'Show',
+// 'draft' => 'Hide',
+// 'trash' => 'Scrap',
+// 'delete' => 'Permanently Delete'
+// ],
+// 'hidden' => true,
+// ],
+// 'post_title' => [
+// 'type' => 'text',
+// 'label' => 'Title',
+// ],
+// 'post_date' => [
+// 'type' => 'date',
+// 'label' => 'Date',
+// ],
+// 'post_thumbnail' => [
+// 'type' => 'upload',
+// 'label' => 'Image',
+// ],
+// 'project' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'project',
+// 'autocomplete' => true,
+// 'label' => 'Project',
+// ],
+//
+// 'form' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'form',
+// 'autocomplete' => true,
+// 'label' => 'Format',
+// ],
+// 'target' => [
+// 'type' => 'taxonomy',
+// 'taxonomy' => 'target',
+// 'autocomplete' => true,
+// 'label' => 'Target Audience',
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'autocomplete' => true,
+// 'taxonomy' => 'city',
+// 'label' => 'City',
+// ],
+// 'gallery' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Gallery',
+// ],
+// 'price' => [
+// 'type' => 'number',
+// 'label' => 'Price',
+// ],
+// 'post_content' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Notes'
+// ],
+//
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'image' => [
+// 'type' => 'upload',
+// 'multiple' => true,
+// 'label' => 'Example Image'
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// ],
+// 'single_image' => false,
+// 'upload_title' => 'Upload Writings',
+// ];
+//}
+
+
+function ajv_render_writing_content(array $block, string $content):string
+{
+ $out = '';
+ $ID = get_the_ID();
+ $meta = Meta::forPost($ID);
+
+ $fields = $meta->getAll();
+
+ $bits = [];
+ if (array_key_exists('post_excerpt', $fields) && !empty($fields['post_excerpt'])) {
+ $bits[] = sprintf(
+ '<section id="excerpt"><h2>At a Glance</h2>%s</section>',
+ jvb_filter_content($fields['post_excerpt'])
+ );
+ }
+
+ if (array_key_exists('gallery', $fields) && !empty($fields['gallery'])) {
+ $gallery = explode(',',$fields['gallery']);
+ $gallery = array_map(function ($imgID) {
+ $out = '<figure>'.jvbFormatImage($imgID,'tiny','medium');
+ $caption = wp_get_attachment_caption($imgID);
+ $out .= ($caption && $caption !== '') ? '<figcaption>'.apply_filters('the_content', $caption).'</figcaption>' : '';
+ $out .= '</figure>';
+ return $out;
+
+ }, $gallery);
+ $gallery = implode('',$gallery);
+ $bits[] = sprintf(
+ '<section id="gallery"><h2>Gallery</h2><div>%s</div></section>',
+ $gallery
+ );
+ }
+
+ if (array_key_exists('post_content', $fields) && !empty($fields['post_content'])) {
+ $bits[] = sprintf(
+ '<section id="content">%s</section>',
+ $fields['post_content']
+ );
+ }
+
+ if (array_key_exists('needs', $fields) && !empty($fields['needs'])) {
+ $bits[] = ajvb_format_needs($fields['needs']);
+ }
+ if (array_key_exists('wants', $fields) && !empty($fields['wants'])) {
+ $bits[] = ajvb_format_wants($fields['wants']);
+ }
+
+ if (!empty($bits)) {
+ $out = implode('',$bits);
+ }
+
+
+ return $out;
+}
+
+
+
+function ajv_writing_schema():array
+{
+ return [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{post_title}} | Human-made Canadian Writing',
+ 'description' => '{{post_excerpt}}',
+ 'thumbnail' => '{{post_thumbnail}}',
+ 'dateCreated' => '{{post_date}}',
+ 'dateModified' => '{{post_modified}}',
+ 'keywords' => '{{style.name}}'
];
}
+
+function ajv_writing_meta():array
+{
+ return[
+ 'name' => '{{post_title}} | Human-made Writing',
+ ];
+}
+
+function ajv_writing_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Canadian Content Writing. From Edmonton, Alberta.',
+ ]);
+}
+
+function ajv_writing_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/_setup.php b/taxonomies/_setup.php
index 029cae3..e21774c 100644
--- a/taxonomies/_setup.php
+++ b/taxonomies/_setup.php
@@ -29,7 +29,7 @@
require(AJV_DIR . '/taxonomies/target.php');
require(AJV_DIR . '/taxonomies/theme.php');
-add_filter('jvb_taxonomy', 'ajv_taxonomy');
+//add_filter('jvb_taxonomy', 'ajv_taxonomy');
function ajv_taxonomy():array
{
return [
diff --git a/taxonomies/city.php b/taxonomies/city.php
index d612fa2..d6ca4ef 100644
--- a/taxonomies/city.php
+++ b/taxonomies/city.php
@@ -1,53 +1,159 @@
<?php
// /taxonomies/city.php
-function ajv_city():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_city',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_city_fields', 2);
+
+add_filter('ajv_CitySchemaDefault', 'ajv_city_schema');
+add_filter('ajv_CityMetaDefault', 'ajv_city_meta');
+add_filter('ajv_CityArchiveDefault', 'ajv_city_archive');
+
+function ajv_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' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory'
+ ]);
+}
+
+function ajv_city_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $city = Registrar::getInstance('city');
+
+ //$directory = $city->getConfig('directory');
+ // $breadcrumbs = $city->config('breadcrumbs');
+ // $breadcrumbs->setCrumb('project');
+
+ $fields = $city->fields();
+ $fields->addCommon('wiki');
+ $fields->addField(
+ 'province',
+ [
+ 'type' => 'text',
+ 'label' => 'Province'
+ ]
+ );
+ $fields->addField(
+ 'country',
+ [
+ 'type' => 'text',
+ 'label' => 'Country'
+ ]
+ );
+}
+
+//function ajv_city():array
+//{
+// return [
+// 'singular' => 'City',
+// 'plural' => 'Cities',
+// 'icon' => 'city',
+// 'description' => [
+// 'From Edmonton, yes - but also throughout Alberta.'
+// ],
+// 'show_feed' => true,
+// 'show_directory' => true,
+// 'approve_new' => false,
+// 'rewrite' => [
+// 'slug' => 'in',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art',
+// 'city',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'City',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// 'containedInPlace' => '{{site_url}}/#organization',
+// ],
+// 'meta' => [
+// 'title' => 'Projects in {{name}} | JakeVan',
+// 'description' => 'Art, city, development, and strategy projects in {{name}}.',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => 'Projects in {{name}}',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'common' => [ 'wiki' ]
+// ]
+// ];
+//}
+
+
+
+function ajv_city_schema():array
{
return [
- 'singular' => 'City',
- 'plural' => 'Cities',
- 'icon' => 'city',
- 'description' => [
- 'From Edmonton, yes - but also throughout Alberta.'
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Canadian City',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\Place\AdministrativeArea\City',
+ 'name' => '{{name}}',
],
- 'show_feed' => true,
- 'show_directory' => true,
- 'approve_new' => false,
- 'rewrite' => [
- 'slug' => 'in',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art',
- 'design',
- 'development',
- 'strategy',
- 'writing',
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'City',
- 'name' => '{{term_name}}',
- 'description' => '{{term_description}}',
- 'containedInPlace' => '{{site_url}}/#organization',
- ],
- 'meta' => [
- 'title' => 'Projects in {{term_name}} | JakeVan',
- 'description' => 'Art, design, development, and strategy projects in {{term_name}}.',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => 'Projects in {{term_name}}',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'common' => [ 'wiki' ]
- ]
+ 'description' => '{{description}}',
];
}
+
+function ajv_city_meta():array
+{
+ return[
+ 'name' => 'Projects in {{name}}',
+ 'description' => 'Art, Design, Development, Strategy, and Content Writing projects in {{name}}.'
+ ];
+}
+
+function ajv_city_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Projects in {{name}}',
+ ]);
+}
+
+function ajv_city_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/form.php b/taxonomies/form.php
index 57e6d9e..71bf8dc 100644
--- a/taxonomies/form.php
+++ b/taxonomies/form.php
@@ -1,47 +1,138 @@
<?php
// /taxonomies/form.php
-function ajv_form():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+add_action('plugins_loaded', 'ajv_form',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_form_fields', 2);
+
+add_filter('ajv_FormSchemaDefault', 'ajv_form_schema');
+add_filter('ajv_FormMetaDefault', 'ajv_form_meta');
+add_filter('ajv_FormArchiveDefault', 'ajv_form_archive');
+
+function ajv_form(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $form = Registrar::forTerm('form', 'Form', 'Forms')
+ ->setIcon('shapes')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/form',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ ]);
+
+}
+
+function ajv_form_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $form = Registrar::getInstance('form');
+
+ //$directory = $form->getConfig('directory');
+ //$breadcrumbs = $form->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $form->fields();
+ $fields->addCommon('wiki');
+}
+
+//function ajv_form():array
+//{
+// return [
+// 'singular' => 'Form',
+// 'plural' => 'Forms',
+// 'description' => [
+// 'From paintings to sculptures.'
+// ],
+// 'icon' => 'shapes',
+// 'show_feed' => true,
+// 'show_directory' => false,
+// 'approve_new' => false,
+// 'rewrite' => [
+// 'slug' => 'form',
+// 'with_front' => false,
+// ],
+// 'for_content' => [
+// 'art',
+// 'form',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'DefinedTerm',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// ],
+// 'meta' => [
+// 'title' => '{{name}} | Art Forms',
+// 'description' => '{{description}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}} Art',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'common' => [ 'wiki' ]
+// ]
+// ];
+//}
+
+
+
+function ajv_form_schema():array
{
return [
- 'singular' => 'Form',
- 'plural' => 'Forms',
- 'description' => [
- 'From paintings to sculptures.'
- ],
- 'icon' => 'shapes',
- 'show_feed' => true,
- 'show_directory' => false,
- 'approve_new' => false,
- 'rewrite' => [
- 'slug' => 'form',
- 'with_front' => false,
- ],
- 'for_content' => [
- 'art',
- 'design',
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'DefinedTerm',
- 'name' => '{{term_name}}',
- 'description' => '{{term_description}}',
- ],
- 'meta' => [
- 'title' => '{{term_name}} | Art Forms',
- 'description' => '{{term_description}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}} Art',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'common' => [ 'wiki' ]
- ]
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Art Forms',
+ 'description' => '{{description}}',
];
}
+
+function ajv_form_meta():array
+{
+ return[
+ 'name' => '{{name}} | Art Forms',
+ ];
+}
+
+function ajv_form_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}} Art | Made in Edmonton',
+ ]);
+}
+
+function ajv_form_reference_schema(array $defaults):array
+{
+
+ return $defaults;
+}
diff --git a/taxonomies/media.php b/taxonomies/media.php
index ceb4a5e..3a5c3f5 100644
--- a/taxonomies/media.php
+++ b/taxonomies/media.php
@@ -1,49 +1,134 @@
<?php
// /taxonomies/media.php
-function ajv_media():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_media',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_media_fields', 2);
+
+add_filter('ajv_MediaSchemaDefault', 'ajv_media_schema');
+add_filter('ajv_MediaMetaDefault', 'ajv_media_meta');
+add_filter('ajv_MediaArchiveDefault', 'ajv_media_archive');
+
+function ajv_media(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $media = Registrar::forTerm('media', 'Medium', 'Media')
+ ->setIcon('scribble')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/media',
+ 'with_front' => false,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ ]);
+}
+
+function ajv_media_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $media = Registrar::getInstance('media');
+
+ //$directory = $media->getConfig('directory');
+ //$breadcrumbs = $media->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $media->fields();
+ $fields->addCommon('wiki');
+}
+
+//function ajv_media():array
+//{
+// return [
+// 'singular' => 'Medium',
+// 'plural' => 'Media',
+// 'description' => [
+// '<b>What it\'s made of.</b>',
+// 'From clay to oil paints'
+// ],
+// 'icon' => 'diamonds-four',
+// 'show_feed' => true,
+// 'show_directory' => true,
+// 'approve_new' => true,
+// 'rewrite' => [
+// 'slug' => 'media',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art'
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'DefinedTerm',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// ],
+// 'meta' => [
+// 'title' => '{{name}} Art | JakeVan',
+// 'description' => '{{description}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}} Artwork',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'common' => [ 'wiki' ]
+// ]
+// ];
+//}
+
+
+function ajv_media_schema():array
{
return [
- 'singular' => 'Medium',
- 'plural' => 'Media',
- 'description' => [
- '<b>What it\'s made of.</b>',
- 'From clay to oil paints'
- ],
- 'icon' => 'diamonds-four',
- 'show_feed' => true,
- 'show_directory' => true,
- 'approve_new' => true,
- 'rewrite' => [
- 'slug' => 'media',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art'
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'DefinedTerm',
- 'name' => '{{term_name}}',
- 'description' => '{{term_description}}',
- ],
- 'meta' => [
- 'title' => '{{term_name}} Art | JakeVan',
- 'description' => '{{term_description}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}} Artwork',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'common' => [ 'wiki' ]
- ]
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} Artwork',
+ 'description' => '{{description}}',
];
}
+
+function ajv_media_meta():array
+{
+ return[
+ 'name' => '{{name}} | Human-made Art',
+ ];
+}
+
+function ajv_media_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Canadian {{name}} Artwork. Made in Edmonton, Alberta.',
+ ]);
+}
+
+function ajv_media_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/progress.php b/taxonomies/progress.php
index 2539a6f..3451cef 100644
--- a/taxonomies/progress.php
+++ b/taxonomies/progress.php
@@ -1,43 +1,128 @@
<?php
// /taxonomies/progress.php
-function ajv_progress():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_progress',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_progress_fields', 2);
+
+add_filter('ajv_ProgressSchemaDefault', 'ajv_progress_schema');
+add_filter('ajv_ProgressMetaDefault', 'ajv_progress_meta');
+add_filter('ajv_ProgressArchiveDefault', 'ajv_progress_archive');
+
+function ajv_progress(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $progress = Registrar::forTerm('progress', 'Progress', 'Progresss')
+ ->setIcon('scribble')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/progress',
+ 'with_front' => false,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ ]);
+}
+
+function ajv_progress_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $progress = Registrar::getInstance('progress');
+
+ //$directory = $progress->getConfig('directory');
+ //$breadcrumbs = $progress->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $progress->fields();
+ $fields->addCommon('wiki');
+}
+
+//function ajv_progress():array
+//{
+// return [
+// 'singular' => 'Progress',
+// 'plural' => 'Progress',
+// 'icon' => 'circle-notch',
+// 'show_feed' => true,
+// 'show_directory' => true,
+// 'approve_new' => false,
+// 'rewrite' => [
+// 'slug' => 'progress',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art',
+// 'progress',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'meta' => [
+// 'title' => '{{name}} Projects | JakeVan',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}} Projects',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'common' => [ 'wiki' ]
+// ]
+// ];
+//}
+
+
+function ajv_progress_schema():array
{
return [
- 'singular' => 'Progress',
- 'plural' => 'Progress',
- 'icon' => 'circle-notch',
- 'show_feed' => true,
- 'show_directory' => true,
- 'approve_new' => false,
- 'rewrite' => [
- 'slug' => 'progress',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art',
- 'design',
- 'development',
- 'strategy',
- 'writing',
- ],
- 'seo' => [
- 'meta' => [
- 'title' => '{{term_name}} Projects | JakeVan',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}} Projects',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'common' => [ 'wiki' ]
- ]
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} Projects',
+ 'description' => '{{description}}',
];
}
+
+function ajv_progress_meta():array
+{
+ return[
+ 'name' => '{{name}} Projects',
+ ];
+}
+
+function ajv_progress_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}} Projects',
+ ]);
+}
+
+function ajv_progress_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/project.php b/taxonomies/project.php
index 4f570f2..28865b6 100644
--- a/taxonomies/project.php
+++ b/taxonomies/project.php
@@ -1,138 +1,710 @@
<?php
// /taxonomies/progress.php
-function ajv_project():array
+use JVBase\managers\Cache;
+use JVBase\meta\Meta;
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_project',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_project_fields', 2);
+
+add_filter('ajv_ProjectSchemaDefault', 'ajv_project_schema');
+add_filter('ajv_ProjectMetaDefault', 'ajv_project_meta');
+add_filter('ajv_ProjectArchiveDefault', 'ajv_project_archive');
+
+function ajv_project(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $project = Registrar::forTerm('project', 'Project', 'Projects')
+ ->setIcon('scribble')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'projects',
+ 'with_front' => false,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory',
+ 'is_content'
+ ]);
+}
+function ajv_project_fields():void
{
- return [
- 'singular' => 'Project',
- 'plural' => 'Projects',
- 'icon' => 'cards-three',
- 'show_feed' => true,
- 'show_directory' => true,
- 'approve_new' => false,
- 'rewrite' => [
- 'slug' => 'projects',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art',
- 'design',
- 'development',
- 'strategy',
- 'writing',
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'CreativeWork',
- 'name' => '{{term_name}}',
- 'description' => '{{term_description}}',
- 'dateCreated' => '{{started}}',
- 'keywords' => '{{target.name}}',
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $project = Registrar::getInstance('project');
+
+ //$directory = $project->getConfig('directory');
+ //$breadcrumbs = $project->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $project->fields();
+ $fields->addField(
+ 'city',
+ [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'isReference' => true,
+ 'taxonomy' => 'city',
+ 'label' => 'City',
+ 'quickEdit' => true,
+ ]
+ );
+ $fields->addField(
+ 'thumbnail',
+ [
+ 'type' => 'upload',
+ 'multiple' => false,
+ 'label' => 'Featured Image',
+ ]
+ );
+ $fields->addField(
+ 'summary',
+ [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'Summary',
+ ]
+ );
+ $fields->addField(
+ 'target',
+ [
+ 'type' => 'taxonomy',
+ 'isReference' => true,
+ 'taxonomy' => 'target',
+ 'label' => 'Target Audience',
+ 'quickEdit' => true,
+ ]
+ );
+ $fields->addField(
+ 'started',
+ [
+ 'type' => 'date',
+ 'label' => 'Started',
+ 'quickEdit' => true,
+ ]
+ );
+ $fields->addField(
+ 'ended',
+ [
+ 'type' => 'date',
+ 'label' => 'Ended',
+ 'quickEdit' => true,
+ ]
+ );
+ $fields->addField(
+ 'budget',
+ [
+ 'type' => 'radio',
+ 'label' => 'Budget',
+ 'options' => [
+ 'low' => '$',
+ 'medium-low'=> '$$',
+ 'medium' => '$$$',
+ 'medium-high'=> '$$$$',
+ 'high' => '$$$$$',
+ ]
+ ]
+ );
+ $fields->addField(
+ 'timeline',
+ [
+ 'type' => 'text',
+ 'label' => 'Timeline',
+ 'quickEdit' => true,
+ ]
+ );
+
+ $fields->addField('needs', [
+ 'type' => 'repeater',
+ 'label' => 'Needs',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
],
- 'meta' => [
- 'title' => '{{term_name}} | Project by JakeVan',
- 'description' => '{{term_description}}',
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}}',
- 'description' => '{{term_description}}',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'city' => [
- 'type' => 'taxonomy',
- 'taxonomy_type' => 'reference',
- 'taxonomy' => 'city',
- 'autocomplete' => true,
- 'quickEdit' => true,
- 'label' => 'City',
- ],
- 'target' => [
- 'type' => 'taxonomy',
- 'taxonomy_type' => 'reference',
- 'taxonomy' => 'target',
- 'autocomplete' => true,
- 'quickEdit' => true,
- 'label' => 'Target Audience',
- ],
- 'started' => [
- 'type' => 'date',
- 'label' => 'Started',
- 'quickEdit' => true,
- ],
- 'ended' => [
- 'type' => 'date',
- 'label' => 'Ended',
- 'quickEdit' => true,
- ],
- 'budget' => [
- 'type' => 'radio',
- 'label' => 'Budget',
- 'options' => [
- 'low' => '$',
- 'medium-low'=> '$$',
- 'medium' => '$$$',
- 'medium-high'=> '$$$$',
- 'high' => '$$$$$',
- ]
- ],
- 'timeline' => [
- 'type' => 'text',
- 'label' => 'Timeline',
- 'quickEdit' => true,
- ],
- 'url' => [
- 'type' => 'url',
- 'label' => 'Project URL',
- 'quickEdit' => true,
- ],
- 'description' => [
+ 'fulfilled' => [
'type' => 'textarea',
'quill' => true,
- 'quickEdit' => true,
- 'label' => 'Project Description',
- ],
- 'needs' => [
- 'type' => 'repeater',
- 'label' => 'Needs',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Need',
- 'required' => true
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
- 'wants' => [
- 'type' => 'repeater',
- 'label' => 'Wants',
- 'fields'=> [
- 'need' => [
- 'type' => 'text',
- 'label' => 'Want',
- 'required' => true
- ],
- 'fulfilled' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'How I fulfilled it'
- ]
- ]
- ],
-
- 'common' => [ 'wiki' ]
+ 'label' => 'How I fulfilled it'
+ ]
]
+ ]);
+ $fields->addField('wants', [
+ 'type' => 'repeater',
+ 'label' => 'Wants',
+ 'fields' => [
+ 'need' => [
+ 'type' => 'text',
+ 'label' => 'Need',
+ 'required' => true
+ ],
+ 'image' => [
+ 'type' => 'upload',
+ 'multiple' => true,
+ 'label' => 'Example Image'
+ ],
+ 'fulfilled' => [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'How I fulfilled it'
+ ]
+ ]
+ ]);
+
+ $fields->addField(
+ 'forType',
+ [
+ 'type' => 'repeater',
+ 'label' => 'Person, Organization, or LocalBusiness this is for',
+ 'fields' => [
+ 'type' => [
+ 'type' => 'select',
+ 'label' => 'Type',
+ 'options' => [
+ 'JVBase\managers\SEO\render\Thing\Person' => 'Person',
+ 'JVBase\managers\SEO\render\Thing\Organization\LocalBusiness\LocalBusiness' => 'Local Business',
+ 'JVBase\managers\SEO\render\Thing\Organization\Organization' => 'Organization'
+ ]
+ ],
+ 'name' => [
+ 'type' => 'text',
+ 'label' => 'Name',
+ ],
+ 'url' => [
+ 'type' => 'url',
+ 'label' => 'Website',
+ ],
+ 'location' => [
+ 'type' => 'text',
+ 'label' => 'Location',
+ ],
+ ]
+ ]
+ );
+ $fields->addCommon('review');
+ $fields->addCommon('wiki');
+}
+
+//function ajv_project():array
+//{
+// return [
+// 'singular' => 'Project',
+// 'plural' => 'Projects',
+// 'icon' => 'cards-three',
+// 'show_feed' => true,
+// 'show_directory' => true,
+// 'approve_new' => false,
+// 'rewrite' => [
+// 'slug' => 'projects',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art',
+// 'project',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'CreativeWork',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// 'dateCreated' => '{{started}}',
+// 'keywords' => '{{target.name}}',
+// ],
+// 'meta' => [
+// 'title' => '{{name}} | Project by JakeVan',
+// 'description' => '{{description}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'city' => [
+// 'type' => 'taxonomy',
+// 'isReference' => true,
+// 'taxonomy' => 'city',
+// 'autocomplete' => true,
+// 'quickEdit' => true,
+// 'label' => 'City',
+// ],
+// 'target' => [
+// 'type' => 'taxonomy',
+// 'isReference' => true,
+// 'taxonomy' => 'target',
+// 'autocomplete' => true,
+// 'quickEdit' => true,
+// 'label' => 'Target Audience',
+// ],
+// 'started' => [
+// 'type' => 'date',
+// 'label' => 'Started',
+// 'quickEdit' => true,
+// ],
+// 'ended' => [
+// 'type' => 'date',
+// 'label' => 'Ended',
+// 'quickEdit' => true,
+// ],
+// 'budget' => [
+// 'type' => 'radio',
+// 'label' => 'Budget',
+// 'options' => [
+// 'low' => '$',
+// 'medium-low'=> '$$',
+// 'medium' => '$$$',
+// 'medium-high'=> '$$$$',
+// 'high' => '$$$$$',
+// ]
+// ],
+// 'timeline' => [
+// 'type' => 'text',
+// 'label' => 'Timeline',
+// 'quickEdit' => true,
+// ],
+// 'url' => [
+// 'type' => 'url',
+// 'label' => 'Project URL',
+// 'quickEdit' => true,
+// ],
+// 'description' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'quickEdit' => true,
+// 'label' => 'Project Description',
+// ],
+// 'needs' => [
+// 'type' => 'repeater',
+// 'label' => 'Needs',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Need',
+// 'required' => true
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+// 'wants' => [
+// 'type' => 'repeater',
+// 'label' => 'Wants',
+// 'fields'=> [
+// 'need' => [
+// 'type' => 'text',
+// 'label' => 'Want',
+// 'required' => true
+// ],
+// 'fulfilled' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'How I fulfilled it'
+// ]
+// ]
+// ],
+//
+// 'common' => [ 'wiki' ]
+// ]
+// ];
+//}
+
+
+
+function ajv_project_schema():array
+{
+ return [
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => 'Projects by JakeVan',
+ 'description' => 'Each project can have multiple aspects - from Design to Strategy.',
+// 'primaryImageOfPage' => '{{thumbnail}}',
];
}
+
+function ajv_project_meta():array
+{
+ return[
+ 'name' => '{{name}} | Project',
+ ];
+}
+
+function ajv_project_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}} | Project',
+ 'description' => '{{description}}',
+ 'primaryImageOfPage' => '{{thumbnail}}',
+ 'about' => [
+ 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}}',
+ 'creator' => '{{CREATOR}}',
+ 'sourceOrganization'=> '{{forType}}',
+ 'abstract' => '{{summary}}'
+ ],
+ ]);
+}
+
+function ajv_project_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
+
+function ajv_render_project_cover(int $ID):string
+{
+ return '';
+ $background = '';
+ $meta = Meta::forTerm($ID);
+ $thumbnail = $meta->get('thumbnail');
+ if ($thumbnail !== '') {
+ $background = str_replace('<img', '<img style="object-position:center center"', jvbFormatImage((int)$thumbnail));
+ }
+ return $background;
+}
+add_filter('jvbSummaryHeader', 'ajv_project_summary_header', 11, 2);
+function ajv_project_summary_header(string $return, string $type):string
+{
+ if ($type !== 'project') {
+ return $return;
+ }
+ $ID = get_queried_object_id();
+ $meta = Meta::forTerm($ID);
+ $fields = $meta->getAll();
+ $extra = 'Edmonton';
+ if ($fields['city'] !== '') {
+ $cities = explode(',', $fields['city']);
+ $temp = [];
+ foreach ($cities as $city) {
+ $term = get_term($city, 'ajv_city');
+ if ($term && !is_wp_error($term)) {
+ $temp[] = $term->name;
+ }
+ }
+ if (!empty($temp)) {
+ $extra = jvbCommaList($temp);
+ }
+ }
+ $extra .= ' Made Project';
+ return '<small>'.$extra.'</small>'.$fields['name'].'.';
+}
+
+add_filter('jvbSummaryHeaderExtra', 'ajv_project_summary_extra', 11, 2);
+function ajv_project_summary_extra(string $return, string $type):string
+{
+
+ if ($type !== 'project') {
+ return $return;
+ }
+
+
+ return '<p>Or see <a href="'.JVB()->directories()->getDirectoryList()[$type]['url'].'">all projects</a>.</p>';
+}
+
+add_filter('jvbBeforeSummary', 'ajv_project_before_summary', 10, 2);
+function ajv_project_before_summary(string $return, string $type):string
+{
+ if ($type !== 'project') {
+ return $return;
+ }
+ $meta = Meta::forTerm(get_queried_object_id());
+ $fields = $meta->getAll();
+ $rows = [];
+ if ($fields['city'] !== '') {
+ $rows[] = jvbMetaTermList($fields['city'], 'city');
+ }
+ if ($fields['target'] !== '') {
+ $rows[] = jvbMetaTermList($fields['target'], 'target');
+ }
+
+ if ($fields['started'] !== '') {
+ $rows[] = '<span>'.jvbIcon('calendar-blank').'Started:</span><time datetime="'.$fields['started'].'">'.date('F j, Y', strtotime($fields['started'])).'</time>';
+ }
+ if ($fields['ended'] !== '') {
+ $rows[] = '<span>Ended:</span><time datetime="'.$fields['ended'].'">'.date('F j, Y', strtotime($fields['ended'])).'</time>';
+ }
+
+ if ($fields['budget'] !== '') {
+ $budget = '';
+
+ for ($i = 0; $i <= (int) $fields['budget']; $i++) {
+ $budget .= '$';
+ }
+ $title = match((int)$fields['budget']) {
+ 0 => 'Low',
+ 1 => 'Medium Low',
+ 2 => 'Medium',
+ 3 => 'Medium High',
+ 4 => 'High'
+ };
+ $rows[] = '<span>'.jvbIcon('currency-dollar-simple').'Budget:</span><span title="'.$title.'">'.$budget.'</span>';
+ }
+
+ if ($fields['timeline'] !== '') {
+ $rows[] = '<span>'.jvbIcon('hourglass-medium').'Timeline:</span>'.$fields['timeline'];
+ }
+ $summary = '';
+ if (!empty($rows)) {
+ $summary = '<section id="summary"><h2>At a Glance</h2><ul class="summary">';
+ $summary .= implode('', array_map(function ($row) {
+ return '<li>'.$row.'</li>';
+ }, $rows));
+ $summary .= '</ul></section>';
+ }
+
+ return $summary;
+}
+
+add_filter('jvbSummaryImage', 'ajv_project_summary_image', 10, 2);
+function ajv_project_summary_image(string $return, string $type):string
+{
+ if ($type !== 'project') {
+ return $return;
+ }
+ $meta = Meta::forTerm(get_queried_object_id());
+ $thumbnail = $meta->get('thumbnail');
+
+ return $thumbnail === '' ? '' : jvbFormatImage((int)$thumbnail);
+}
+
+add_filter('jvbSummaryDetails', 'ajv_project_summary_details', 10, 2);
+function ajv_project_summary_details(array $return, string $type):array
+{
+ if ($type !== 'project') {
+ return $return;
+ }
+
+ $return = [];
+ $meta = Meta::forTerm(get_queried_object_id());
+ $fields = $meta->getAll();
+
+ if ($fields['summary'] !== '') {
+ $return['about-this-project'] = $fields['summary'];
+ }
+ if (!empty($fields['needs'])) {
+ $return['needs'] = ajvb_format_needs($fields['needs']);
+ }
+ if (!empty($fields['wants'])) {
+ $return['wants'] = ajvb_format_wants($fields['wants']);
+ }
+
+ if (!empty($fields['review'])) {
+ $return['review'] = $fields['review'];
+ }
+
+ return $return;
+}
+
+
+add_filter('jvbSummaryIsOpen', 'ajv_open_project_summary', 10, 2);
+function ajv_open_project_summary(bool $isOpen, string $type):bool
+{
+ if ($type !== 'project') {
+ return $isOpen;
+ }
+ return true;
+}
+
+add_filter('jvbSummaryDetailsTitle', 'ajv_project_summary_label', 10, 2);
+function ajv_project_summary_label(string $title, string $type):string
+{
+ return 'More about this project';
+}
+
+add_filter('render_block', 'ajv_project_content', 9999, 2);
+function ajv_project_content(string $OG, array $block):string {
+
+
+ if ($block['blockName'] !== 'jvb/summary') {
+ return $OG;
+ }
+ if (!is_tax(BASE.'project')) {
+ return $OG;
+ }
+
+ $menu = Cache::for('project_menu');
+ $ID = get_queried_object_id();
+ $menu->connect('term');
+ $registrar = Registrar::getInstance('project');
+ $menu->flush();
+ $nav = $menu->remember($ID, function() use ($registrar, $ID) {
+ $types = array_map(function ($type) {
+ return jvbCheckBase($type);
+ }, $registrar->registrar->for);
+ $menu = [];
+ foreach ($types as $type) {
+ $query = new WP_Query([
+ 'post_type' => $type,
+ 'post_status' => 'publish',
+ 'tax_query' => [[
+ 'taxonomy' => BASE.'project',
+ 'terms' => $ID
+ ]],
+ 'posts_per_page' => 1,
+ 'fields' => 'ids',
+ ]);
+ if ($query->have_posts()) {
+ $typeRegistrar = Registrar::getInstance($type);
+ $menu[jvbNoBase($type)] = $typeRegistrar;
+ }
+ wp_reset_postdata();
+ }
+ if (!empty($menu)) {
+ global $wp;
+ $base = home_url( $wp->request );
+ $current = home_url(add_query_arg($_GET, $wp->request));
+ $class = $current === $base ? ' class="current"' : '';
+ $nav = sprintf(
+ '<nav class="filter-projects">Filter by: <ul><li><a href="%s"%s>All</a></li>',
+ $base,
+ $class
+ );
+ foreach ($menu as $slug => $registrar) {
+ $url = add_query_arg('content', $slug, $base);
+ $class = $current === $url ? ' class="current"' : '';
+ $nav .= sprintf(
+ '<li><a href="%s"%s>%s%s</a></li>',
+ $url,
+ $class,
+ jvbIcon($registrar->getIcon()),
+ $registrar->getPlural(),
+ );
+ }
+ $nav .= '</ul></nav>';
+
+ return $nav;
+ }
+ return '';
+ });
+ global $_GET;
+ $content = array_key_exists('content', $_GET) ? $_GET['content'] : 'all';
+ $cache = Cache::for($content)->connect('term');
+ $cache->flush();
+ $page = $_GET['jpage']??1;
+ $key = $cache->generateKey([
+ 'id' => $ID,
+ 'page' => $page
+ ]);
+
+ return $OG.$cache->remember(
+ $key,
+ function() use ($content, $ID, $page, $nav, $registrar) {
+ $post_types = ($content === 'all') ? array_map(function ($type) { return jvbCheckBase($type); },$registrar->registrar->for) : jvbCheckBase($content);
+ $args = [
+ 'post_type' => $post_types,
+ 'posts_per_page' => 20,
+ 'paged' => $page,
+ 'fields' => 'ids',
+ 'tax_query' => [[
+ 'taxonomy' => BASE.'project',
+ 'field' => 'term_id',
+ 'terms' => $ID
+ ]]
+ ];
+
+ $posts = new WP_Query($args);
+ $section = '<section id="project-parts" class="project-parts">
+ <h2>Project Parts</h2>'.$nav;
+
+ if (!empty($posts->posts)) {
+ $section .= '<ul class="project-list item-grid list-view">';
+ foreach ($posts->posts as $postID) {
+ $meta = Meta::forPost($postID);
+ $fields = $meta->getAll();
+ $link = get_the_permalink($postID);
+ $thumb = '';
+ if (!empty($fields['post_thumbnail'])) {
+ $thumb = sprintf(
+ '<a href="%s">%s</a>',
+ $link,
+ jvbFormatImage($fields['post_thumbnail'])
+ );
+ }
+ $published = '';
+ if (!empty($fields['post_date'])) {
+ $published = sprintf('<span>%s<time datetime="%s">%s</time></span>',
+ jvbIcon('calendar-blank'),
+ $fields['post_date'],
+ date('F j, Y', strtotime($fields['post_date']))
+ );
+ }
+ $section .= sprintf(
+ '<li class="item">%s<div class="col start w-full">
+ <h3><a href="%s">%s</a></h3>
+ %s
+ %s
+ </div></li>',
+ $thumb,
+ $link,
+ $fields['post_title'],
+ $published,
+ $fields['post_excerpt']
+ );
+ }
+
+ $section .= '</ul>';
+
+ $total = $posts->max_num_pages;
+ if ($total > 1) {
+ $big = 999999999; // need an unlikely integer
+ $format = ($content === 'all') ? '' : '&content='.$content;
+ echo paginate_links([
+ 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
+ 'format' => '?jpage=%#%'.$format,
+ 'current' => $page,
+ 'total' => $total
+ ]);
+ }
+ } else {
+ $section .= '<p>Nothing here yet.</p>';
+ }
+
+ $section .= '</section>';
+ wp_reset_postdata();
+ return $section;
+ }
+ );
+}
+
+add_filter('jvbSummaryOnThisPage', 'ajv_project_on_this_page', 10, 2);
+function ajv_project_on_this_page(array $ids, string $type):array {
+ if ($type !== 'project'){
+ return $ids;
+ }
+ $ids[] = 'project-parts';
+ return $ids;
+}
\ No newline at end of file
diff --git a/taxonomies/style.php b/taxonomies/style.php
index d86c3ac..ff5dee9 100644
--- a/taxonomies/style.php
+++ b/taxonomies/style.php
@@ -1,52 +1,141 @@
<?php
// /taxonomies/style.php
-function ajv_style():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_style',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_style_fields', 2);
+
+add_filter('ajv_StyleSchemaDefault', 'ajv_style_schema');
+add_filter('ajv_StyleMetaDefault', 'ajv_style_meta');
+add_filter('ajv_StyleArchiveDefault', 'ajv_style_archive');
+
+function ajv_style(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $style = Registrar::forTerm('style', 'Style', 'Styles')
+ ->setIcon('folder')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/style',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory'
+ ]);
+}
+
+function ajv_style_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $style = Registrar::getInstance('style');
+
+ //$directory = $style->getConfig('directory');
+ //$breadcrumbs = $style->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $style->fields();
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+
+//function ajv_style():array
+//{
+// return [
+// 'directory' => 'Styles',
+// 'singular' => 'Style',
+// 'plural' => 'Styles',
+// 'show_directory' => true,
+// 'approve_new' => false,
+// 'icon' => 'folder',
+// 'favouritable' => true,
+// 'show_feed' => true,
+// 'rewrite' => [
+// 'slug' => 'style',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art',
+// 'style',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'DefinedTerm',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// 'alternateName' => '{{alternate_name}}',
+// ],
+// 'meta' => [
+// 'title' => '{{name}} Style | JakeVan',
+// 'description' => '{{description}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}} Projects',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'common' => [ 'wiki', 'alternate_name', 'keywords' ]
+// ]
+// ];
+//}
+
+
+function ajv_style_schema():array
{
return [
- 'directory' => 'Styles',
- 'singular' => 'Style',
- 'plural' => 'Styles',
- 'show_directory' => true,
- 'approve_new' => false,
- 'icon' => 'folder',
- 'favouritable' => true,
- 'show_feed' => true,
- 'rewrite' => [
- 'slug' => 'style',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art',
- 'design',
- 'development',
- 'strategy',
- 'writing',
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'DefinedTerm',
- 'name' => '{{term_name}}',
- 'description' => '{{term_description}}',
- 'alternateName' => '{{alternate_name}}',
- ],
- 'meta' => [
- 'title' => '{{term_name}} Style | JakeVan',
- 'description' => '{{term_description}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}} Projects',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'common' => [ 'wiki', 'alternate_name', 'keywords' ]
- ]
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Style',
+ 'alternateName' => '{{alternateName}}',
+ 'description' => '{{description}}',
];
}
+
+function ajv_style_meta():array
+{
+ return[
+ 'name' => '{{name}} | Style',
+ ];
+}
+
+function ajv_style_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}}',
+ ]);
+}
+
+function ajv_style_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/target.php b/taxonomies/target.php
index 9f870f2..8e52e97 100644
--- a/taxonomies/target.php
+++ b/taxonomies/target.php
@@ -1,42 +1,127 @@
<?php
// /taxonomies/target.php
-function ajv_target():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_target',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_target_fields', 2);
+
+add_filter('ajv_TargetSchemaDefault', 'ajv_target_schema');
+add_filter('ajv_TargetMetaDefault', 'ajv_target_meta');
+add_filter('ajv_TargetArchiveDefault', 'ajv_target_archive');
+
+function ajv_target(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $target = Registrar::forTerm('target', 'Target', 'Targets')
+ ->setIcon('crosshair-simple')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/target',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory'
+ ]);
+}
+function ajv_target_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $target = Registrar::getInstance('target');
+
+ //$directory = $target->getConfig('directory');
+ //$breadcrumbs = $target->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $target->fields();
+ $fields->addCommon('wiki');
+}
+
+//function ajv_target():array
+//{
+// return [
+// 'singular' => 'Target Audience',
+// 'plural' => 'Target Audiences',
+// 'icon' => 'crosshair-simple',
+// 'show_feed' => true,
+// 'show_directory' => true,
+// 'rewrite' => [
+// 'slug' => 'target',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art',
+// 'target',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'meta' => [
+// 'title' => '{{name}} Projects | JakeVan',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}} Projects',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'common' => [ 'wiki' ]
+// ]
+// ];
+//}
+
+
+function ajv_target_schema():array
{
return [
- 'singular' => 'Target Audience',
- 'plural' => 'Target Audiences',
- 'icon' => 'crosshair-simple',
- 'show_feed' => true,
- 'show_directory' => true,
- 'rewrite' => [
- 'slug' => 'target',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art',
- 'design',
- 'development',
- 'strategy',
- 'writing',
- ],
- 'seo' => [
- 'meta' => [
- 'title' => '{{term_name}} Projects | JakeVan',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}} Projects',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'common' => [ 'wiki' ]
- ]
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => 'Target Audience: {{name}}',
+ 'description' => '{{description}}',
];
}
+
+function ajv_target_meta():array
+{
+ return[
+ 'name' => 'Target Audience: {{name}}',
+ ];
+}
+
+function ajv_target_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => 'Target Audience: {{name}}',
+ ]);
+}
+
+function ajv_target_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/taxonomies/theme.php b/taxonomies/theme.php
index 0c03cb0..ceb16b2 100644
--- a/taxonomies/theme.php
+++ b/taxonomies/theme.php
@@ -1,73 +1,179 @@
<?php
// /taxonomies/theme.php
-function ajv_theme():array
+use JVBase\registrar\Registrar;
+
+if (!defined('ABSPATH')) {
+ exit;
+}
+
+
+add_action('plugins_loaded', 'ajv_theme',1);
+//Add fields later so we can verify taxonomies/post types exist
+add_action('plugins_loaded', 'ajv_theme_fields', 2);
+
+add_filter('ajv_ThemeSchemaDefault', 'ajv_theme_schema');
+add_filter('ajv_ThemeMetaDefault', 'ajv_theme_meta');
+add_filter('ajv_ThemeArchiveDefault', 'ajv_theme_archive');
+
+function ajv_theme(){
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $theme = Registrar::forTerm('theme', 'Theme', 'Themes')
+ ->setIcon('hash')
+ ->make([
+ 'rewrite' => [
+ 'slug' => 'in/theme',
+ 'with_front' => false,
+ 'hierarchical' => true,
+ ],
+ 'for' => [
+ 'art',
+ 'design',
+ 'development',
+ 'strategy',
+ 'writing'
+ ],
+ 'hierarchical' => true,
+ ])
+ ->setAll([
+ 'show_feed',
+ 'show_directory'
+ ]);
+}
+
+function ajv_theme_fields():void
+{
+ if (!class_exists('JVBase\registrar\Registrar')) {
+ return;
+ }
+ $theme = Registrar::getInstance('theme');
+ //$directory = $theme->getConfig('directory');
+ //$breadcrumbs = $theme->config('breadcrumbs');
+ //$breadcrumbs->setCrumb('project');
+
+ $fields = $theme->fields();
+ $fields->addField(
+ 'similar',
+ [
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'isReference' => true,
+ 'taxonomy' => 'theme',
+ 'label' => 'Similar Themes',
+ ]
+ );
+ $fields->addField(
+ 'description',
+ [
+ 'type' => 'textarea',
+ 'quill' => true,
+ 'label' => 'Description',
+ ]
+ );
+ $fields->addCommon('wiki');
+ $fields->addCommon('alternate_name');
+ $fields->addCommon('keywords');
+}
+//function ajv_theme():array
+//{
+// return [
+// 'directory' => 'Themes',
+// 'show_directory' => true,
+// 'isGrouped' => true,
+// 'description' => [
+// 'What makes up the tattoo, asides from style.',
+// 'From bees to ideas to carrots.'
+// ],
+// 'singular' => 'Theme',
+// 'plural' => 'Themes',
+// 'icon' => 'hash',
+// 'favouritable' => true,
+// 'show_feed' => true,
+// 'approve_new' => false,
+// 'rewrite' => [
+// 'slug' => 'themes',
+// 'with_front' => false,
+// 'hierarchical' => true,
+// ],
+// 'hierarchical' => true,
+// 'for_content' => [
+// 'art',
+// 'theme',
+// 'development',
+// 'strategy',
+// 'writing',
+// ],
+// 'seo' => [
+// 'schema' => [
+// 'type' => 'DefinedTerm',
+// 'name' => '{{name}}',
+// 'description' => '{{description}}',
+// 'alternateName' => '{{alternate_name}}',
+// ],
+// 'meta' => [
+// 'title' => '{{name}} | Themes',
+// 'description' => '{{description}}',
+// ],
+// 'archive' => [
+// 'type' => 'CollectionPage',
+// 'name' => '{{name}} Projects',
+// ],
+// ],
+// 'fields' => [
+// 'term_name' => [
+// 'label' => 'Name',
+// 'type' => 'text',
+// 'quickEdit' => true,
+// ],
+// 'similar' => [
+// 'type' => 'taxonomy',
+// 'isReference' => true,
+// 'taxonomy' => 'theme',
+// 'label' => 'Similar Themes',
+// ],
+// 'description' => [
+// 'type' => 'textarea',
+// 'quill' => true,
+// 'label' => 'Description',
+// ],
+// 'archive_title' => [
+// 'type' => 'text',
+// 'label' => 'Archive Title',
+// 'description' => 'If the generated title does not jive, set it here',
+// ],
+// 'common' => [ 'wiki', 'alternate_name', 'keywords' ]
+// ]
+// ];
+//}
+
+
+
+function ajv_theme_schema():array
{
return [
- 'directory' => 'Themes',
- 'show_directory' => true,
- 'isGrouped' => true,
- 'description' => [
- 'What makes up the tattoo, asides from style.',
- 'From bees to ideas to carrots.'
- ],
- 'singular' => 'Theme',
- 'plural' => 'Themes',
- 'icon' => 'hash',
- 'favouritable' => true,
- 'show_feed' => true,
- 'approve_new' => false,
- 'rewrite' => [
- 'slug' => 'themes',
- 'with_front' => false,
- 'hierarchical' => true,
- ],
- 'hierarchical' => true,
- 'for_content' => [
- 'art',
- 'design',
- 'development',
- 'strategy',
- 'writing',
- ],
- 'seo' => [
- 'schema' => [
- 'type' => 'DefinedTerm',
- 'name' => '{{term_name}}',
- 'description' => '{{description}}',
- 'alternateName' => '{{alternate_name}}',
- ],
- 'meta' => [
- 'title' => '{{term_name}} | Themes',
- 'description' => '{{description}}',
- ],
- 'archive' => [
- 'type' => 'CollectionPage',
- 'name' => '{{term_name}} Projects',
- ],
- ],
- 'fields' => [
- 'term_name' => [
- 'label' => 'Name',
- 'type' => 'text',
- 'quickEdit' => true,
- ],
- 'similar' => [
- 'type' => 'taxonomy',
- 'taxonomy_type' => 'reference',
- 'taxonomy' => 'theme',
- 'label' => 'Similar Themes',
- ],
- 'description' => [
- 'type' => 'textarea',
- 'quill' => true,
- 'label' => 'Description',
- ],
- 'archive_title' => [
- 'type' => 'text',
- 'label' => 'Archive Title',
- 'description' => 'If the generated title does not jive, set it here',
- ],
- 'common' => [ 'wiki', 'alternate_name', 'keywords' ]
- ]
+// 'type' => 'JVBase\managers\SEO\render\Thing\CreativeWork\CreativeWork',
+ 'name' => '{{name}} | Themes',
+ 'alternateName' => '{{alternate_name}}',
+ 'description' => '{{description}}',
];
}
+
+function ajv_theme_meta():array
+{
+ return[
+ 'name' => '{{name}} | Themes',
+ ];
+}
+
+function ajv_theme_archive(array $defaults):array
+{
+ return array_merge($defaults, [
+ 'name' => '{{name}} | Themes',
+ ]);
+}
+
+function ajv_theme_reference_schema(array $defaults):array
+{
+ return $defaults;
+}
\ No newline at end of file
diff --git a/temp.php b/temp.php
index f2591b7..4c45f84 100644
--- a/temp.php
+++ b/temp.php
@@ -306,7 +306,7 @@
require(AJV_DIR . '/content/support.php');
require(AJV_DIR . '/content/writing.php');
-add_filter('jvb_content', 'ajv_content');
+//add_filter('the_content', 'ajv_content');
function ajv_content($content): array
{
return [
@@ -745,8 +745,9 @@
'quickEdit' => true,
],
'similar' => [
- 'type' => 'taxonomy',
- 'taxonomy_type' => 'reference',
+ 'type' => 'selector',
+ 'subtype' => 'taxonomy',
+ 'isReference' => true,
'taxonomy' => 'theme',
'label' => 'Similar Themes',
],
--
Gitblit v1.10.0