{{date[1]}}
+{{ foo[0]}}
+{{ footwo[0]}}
+{{date[1]}}
+{{date[0]}}
++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} +{{ content }}
+ {% endblock %} ++ {{ label }} +
+ {{ title_suffix }} + {% endblock %} ++ {{ label }} +
+ {{ title_suffix }} + {% endblock %} ++ {# do we need to keep this? Removing makes accordion open when text is clicked (expected behavior) + #} + {{ title }} + {# #} +
+{{ title }}
+ {% endif %} + {{ title_suffix }} + + {{ content }} +{# {{ devel_breakpoint() }}#} +
diff --git a/apps/drupal-default/particle_theme/templates/modules/mailchimp/block--mailchimp-signup.html.twig b/apps/drupal-default/particle_theme/templates/modules/mailchimp/block--mailchimp-signup.html.twig
new file mode 100644
index 0000000000..65732da9d5
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/modules/mailchimp/block--mailchimp-signup.html.twig
@@ -0,0 +1,54 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+
+
+ {% endblock %}
+
+ {{ content }}
+
diff --git a/apps/drupal-default/particle_theme/templates/modules/poll/poll-meter.html.twig b/apps/drupal-default/particle_theme/templates/modules/poll/poll-meter.html.twig
new file mode 100644
index 0000000000..88f311ee48
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/modules/poll/poll-meter.html.twig
@@ -0,0 +1,41 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a meter.
+ *
+ * Available variables:
+ * - display_value: The textual representation of the meter bar.
+ * - form: One or more forms to which the element belongs; multiple
+ * forms separated by spaces.
+ * - high: A number specifying the range that is considered to be a high value.
+ * - low: A number specifying the range that is considered to be a low value.
+ * - max: A number specifying the maximum value of the range.
+ * - min: A number specifying the minimum value of the range.
+ * - optimum: A number specifying what value is the optimal value for the gauge.
+ * - value: A number specifying the current value of the gauge.
+ * - percentage: A number specifying the current percentage of the gauge.
+ * - attributes: HTML attributes for the containing element.
+ * - choice: The choice of a poll.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_region()
+ *
+ * @ingroup themeable
+ */
+#}
+
+
+
+
+ {{ percentage }}%
+
+ {{ choice }}
+ ({{ value }} votes)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/drupal-default/particle_theme/templates/modules/poll/poll-results.html.twig b/apps/drupal-default/particle_theme/templates/modules/poll/poll-results.html.twig
new file mode 100644
index 0000000000..52adf23624
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/modules/poll/poll-results.html.twig
@@ -0,0 +1,33 @@
+{#
+/**
+ * @file
+ * Default theme implementation to display the poll results in a block.
+ *
+ * Variables available:
+ * - title: The title of the poll.
+ * - results: The results of the poll.
+ * - votes: The total results in the poll.
+ * - links: Links in the poll.
+ * - pid: The pid of the poll
+ * - cancel_form: A form to cancel the user's vote, if allowed.
+ * - raw_links: The raw array of links.
+ * - vote: The choice number of the current user's vote.
+ *
+ * @see template_preprocess_poll_results()
+ *
+ * @ingroup themeable
+ */
+#}
+
+ {% if show_question %}
+ {{ question }}
+ {% else %}
+ {{ results_title }}
+ {% endif %}
+
+ {{ results }}
+
+
+ {{ 'Total votes: '|t }} {{ votes }}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/modules/poll/poll-vote.html.twig b/apps/drupal-default/particle_theme/templates/modules/poll/poll-vote.html.twig
new file mode 100644
index 0000000000..b83fd37fde
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/modules/poll/poll-vote.html.twig
@@ -0,0 +1,15 @@
+{#
+/**
+ */
+#}
+{{ form.messages }}
+
+
+ {% if show_question %}
+ {{ question }}
+ {% endif %}
+ {{ form.choice }}
+ {{ form.actions }}
+
+{{ form|without('actions', 'choice', 'messages', 'question') }}
+
diff --git a/apps/drupal-default/particle_theme/templates/modules/sitealert/site-alert.html.twig b/apps/drupal-default/particle_theme/templates/modules/sitealert/site-alert.html.twig
new file mode 100644
index 0000000000..2f7b923bf6
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/modules/sitealert/site-alert.html.twig
@@ -0,0 +1,5 @@
+
+
+ {{ alert.message }}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/navigation/breadcrumb-particle.html.twig b/apps/drupal-default/particle_theme/templates/navigation/breadcrumb-particle.html.twig
new file mode 100644
index 0000000000..f729d08a75
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/breadcrumb-particle.html.twig
@@ -0,0 +1,12 @@
+{#
+/**
+ * @file
+ * Theme override for a breadcrumb trail.
+ *
+ * Available variables:
+ * - breadcrumb: Breadcrumb trail items.
+ */
+#}
+{% if breadcrumb %}
+ {% include '@atoms/breadcrumb/_breadcrumb.twig' %}
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/breadcrumb.html.twig b/apps/drupal-default/particle_theme/templates/navigation/breadcrumb.html.twig
old mode 100644
new mode 100755
index f729d08a75..2ed24267ea
--- a/apps/drupal-default/particle_theme/templates/navigation/breadcrumb.html.twig
+++ b/apps/drupal-default/particle_theme/templates/navigation/breadcrumb.html.twig
@@ -8,5 +8,18 @@
*/
#}
{% if breadcrumb %}
- {% include '@atoms/breadcrumb/_breadcrumb.twig' %}
+
{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--human-resources-top-nav.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--human-resources-top-nav.html.twig
new file mode 100644
index 0000000000..a1ad5470d8
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--human-resources-top-nav.html.twig
@@ -0,0 +1,97 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% else %}
+
+ {% else %}
+
+ {% else %}
+
+ {% else %}
+
+ {% else %}
+
+ {% endif %}
+ {% for item in items %}
+
+ {%
+ set listitem = [
+ 'menu-item border-b border-gray-300 flex items-center hover:bg-utc-new-blue-100 w-full',
+ item.is_expanded ? 'menu-item--expanded',
+ item.is_collapsed ? 'menu-item--collapsed',
+ item.in_active_trail ? 'menu-item--active-trail bg-utc-new-blue-100',
+ ]
+ %}
+ {%
+ set menulinktag = [
+ 'text-base border-0 py-4 w-full pl-3 bg-transparent',
+ item.in_active_trail ? 'menu-link--active-trail font-bold',
+ ]
+ %}
+ {% set arialabel = item.link_title|default(item.title)|e %}
+ {% set role = 'link' %}
+ {% set link_title = item.title|clean_class %}
+
+ -
+ {% if item.in_active_trail %}
+
+ {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag).setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }}
+ {% if item.below %}
+ {{ menus.menu_links(item.below, attributes, menu_level + 1, item.attributes.setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }}
+ {% endif %}
+ {% else %}
+ {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag).setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }}
+ {% if item.below %}
+ {{ menus.menu_links(item.below, attributes, menu_level + 1, item.attributes.setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }}
+ {% endif %}
+ {% endif %}
+
+ {% endfor %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--utc-offcanvas-sidebar.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-offcanvas-sidebar.html.twig
new file mode 100644
index 0000000000..46593ff48d
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-offcanvas-sidebar.html.twig
@@ -0,0 +1,55 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% else %}
+
+ {% else %}
+
+ {% else %}
+
+ {% else %}
+
+ {% endif %}
+ {% for item in items %}
+ {%
+ set listitem = [
+ 'menu-item border-b border-gray-300 flex items-center hover:bg-utc-new-blue-100 w-full',
+ item.is_expanded ? 'menu-item--expanded',
+ item.is_collapsed ? 'menu-item--collapsed',
+ item.in_active_trail ? 'menu-item--active-trail bg-utc-new-blue-100',
+ ]
+ %}
+ {%
+ set menulinktag = [
+ 'text-base border-0 py-4 w-full pl-3 bg-transparent',
+ item.in_active_trail ? 'menu-link--active-trail font-bold',
+ ]
+ %}
+ -
+ {% if item.in_active_trail %}
+
+ {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag)) }}
+ {% if item.below %}
+ {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
+ {% endif %}
+ {% else %}
+ {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag)) }}
+ {% if item.below %}
+ {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
+ {% endif %}
+ {% endif %}
+
+ {% endfor %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu-local-tasks.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu-local-tasks.html.twig
index bacae2aa2a..d1a050467a 100644
--- a/apps/drupal-default/particle_theme/templates/navigation/menu-local-tasks.html.twig
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu-local-tasks.html.twig
@@ -12,22 +12,14 @@
*/
#}
-{% set nav_classes = ['nav', 'nav-tabs', 'mb-2']|join(' ') %}
+
{% if primary %}
-
- {{ 'Primary tabs'|t }}
-
-
- {{ primary }}
-
+ {{ 'Primary tabs'|t }}
+ {{ primary }}
{% endif %}
{% if secondary %}
-
- {{ 'Secondary tabs'|t }}
-
-
- {{ secondary }}
-
-{% endif %}
+ {{ 'Secondary tabs'|t }}
+ {{ secondary }}
+{% endif %}
\ No newline at end of file
diff --git a/apps/drupal-default/particle_theme/templates/off-canvas/region--offcanvas-sidebar.html.twig b/apps/drupal-default/particle_theme/templates/off-canvas/region--offcanvas-sidebar.html.twig
new file mode 100755
index 0000000000..6346fe9b80
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/off-canvas/region--offcanvas-sidebar.html.twig
@@ -0,0 +1,35 @@
+{#
+/**
+ * @file
+ * Default theme implementation to display a region.
+ *
+ * Available variables:
+ * - content: The content for this region, typically blocks.
+ * - attributes: HTML attributes for the region .
+ * - region: The name of the region variable as defined in the theme's
+ * .info.yml file.
+ *
+ * @see template_preprocess_region()
+ *
+ * @ingroup themeable
+ */
+#}
+
+{%
+ set classes = [
+ 'region',
+ 'region--' ~ region|clean_class,
+ ]
+%}
+
+{% if content %}
+
+
+
+{% endif %}
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/node--1048--full.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/node--1048--full.html.twig
new file mode 100644
index 0000000000..8ccee0f873
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/node--1048--full.html.twig
@@ -0,0 +1,107 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: (optional) The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: (optional) Themed creation date field.
+ * - author_name: (optional) Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ *
+ * @todo Remove the id attribute (or make it a class), because if that gets
+ * rendered twice on a page this is invalid CSS for example: two lists
+ * in different view modes.
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+
+
+
+ {{ title_prefix }}
+ {% if label and not page %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+
+ {% if display_submitted %}
+
+ {% endif %}
+
+
+ {{ content }}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/node--1049--full.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/node--1049--full.html.twig
new file mode 100644
index 0000000000..61817c8c3b
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/node--1049--full.html.twig
@@ -0,0 +1,108 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: (optional) The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: (optional) Themed creation date field.
+ * - author_name: (optional) Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ *
+ * @todo Remove the id attribute (or make it a class), because if that gets
+ * rendered twice on a page this is invalid CSS for example: two lists
+ * in different view modes.
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+
+
+ {{ title_prefix }}
+ {% if label and not page %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+
+ {% if display_submitted %}
+
+ {% endif %}
+
+
+ {{ content }}
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/node.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/node.html.twig
new file mode 100644
index 0000000000..a42ff52d02
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/node.html.twig
@@ -0,0 +1,108 @@
+{#
+/**
+ * @file
+ * Theme override to display a node.
+ *
+ * Available variables:
+ * - node: The node entity with limited access to object properties and methods.
+ * Only method names starting with "get", "has", or "is" and a few common
+ * methods such as "id", "label", and "bundle" are available. For example:
+ * - node.getCreatedTime() will return the node creation timestamp.
+ * - node.hasField('field_example') returns TRUE if the node bundle includes
+ * field_example. (This does not indicate the presence of a value in this
+ * field.)
+ * - node.isPublished() will return whether the node is published or not.
+ * Calling other methods, such as node.delete(), will result in an exception.
+ * See \Drupal\node\Entity\Node for a full list of public properties and
+ * methods for the node object.
+ * - label: (optional) The title of the node.
+ * - content: All node items. Use {{ content }} to print them all,
+ * or print a subset such as {{ content.field_example }}. Use
+ * {{ content|without('field_example') }} to temporarily suppress the printing
+ * of a given child element.
+ * - author_picture: The node author user entity, rendered using the "compact"
+ * view mode.
+ * - metadata: Metadata for this node.
+ * - date: (optional) Themed creation date field.
+ * - author_name: (optional) Themed author name field.
+ * - url: Direct URL of the current node.
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: HTML attributes for the containing element.
+ * The attributes.class element may contain one or more of the following
+ * classes:
+ * - node: The current template type (also known as a "theming hook").
+ * - node--type-[type]: The current node type. For example, if the node is an
+ * "Article" it would result in "node--type-article". Note that the machine
+ * name will often be in a short form of the human readable label.
+ * - node--view-mode-[view_mode]: The View Mode of the node; for example, a
+ * teaser would result in: "node--view-mode-teaser", and
+ * full: "node--view-mode-full".
+ * The following are controlled through the node publishing options.
+ * - node--promoted: Appears on nodes promoted to the front page.
+ * - node--sticky: Appears on nodes ordered above other non-sticky nodes in
+ * teaser listings.
+ * - node--unpublished: Appears on unpublished nodes visible only to site
+ * admins.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - content_attributes: Same as attributes, except applied to the main
+ * content tag that appears in the template.
+ * - author_attributes: Same as attributes, except applied to the author of
+ * the node tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
+ * - page: Flag for the full page state. Will be true if view_mode is 'full'.
+ * - readmore: Flag for more state. Will be true if the teaser content of the
+ * node cannot hold the main body content.
+ * - logged_in: Flag for authenticated user status. Will be true when the
+ * current user is a logged-in member.
+ * - is_admin: Flag for admin user status. Will be true when the current user
+ * is an administrator.
+ *
+ * @see template_preprocess_node()
+ *
+ * @todo Remove the id attribute (or make it a class), because if that gets
+ * rendered twice on a page this is invalid CSS for example: two lists
+ * in different view modes.
+ */
+#}
+{%
+ set classes = [
+ 'node',
+ 'node--type-' ~ node.bundle|clean_class,
+ node.isPromoted() ? 'node--promoted',
+ node.isSticky() ? 'node--sticky',
+ not node.isPublished() ? 'node--unpublished',
+ view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
+ ]
+%}
+{{ attach_library('classy/node') }}
+
+
+ {{ title_prefix }}
+ {% if label and not page %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+
+ {% if display_submitted %}
+
+ {% endif %}
+
+
+ {{ content }}
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/college-engineering-computer-science/block--college-engineering-and-computer-science-id-1161-label-computing.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/college-engineering-computer-science/block--college-engineering-and-computer-science-id-1161-label-computing.html.twig
new file mode 100644
index 0000000000..85d373d055
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/college-engineering-computer-science/block--college-engineering-and-computer-science-id-1161-label-computing.html.twig
@@ -0,0 +1,79 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+
+
+
+
+ {% endblock %}
+
+
+
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/financial-aid/block--financial-aid-scholarships-id-1049-label-sasdasd.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/financial-aid/block--financial-aid-scholarships-id-1049-label-sasdasd.html.twig
new file mode 100644
index 0000000000..ef58007665
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/financial-aid/block--financial-aid-scholarships-id-1049-label-sasdasd.html.twig
@@ -0,0 +1,88 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+ Which type of student are you?
+
+
+
+
+
+
+
+ Transient
+
+
+
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/financial-aid/financial-aid.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/financial-aid/financial-aid.html.twig
new file mode 100644
index 0000000000..fb1435427f
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/financial-aid/financial-aid.html.twig
@@ -0,0 +1,82 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+
+
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/human-resources/block--human-resources-id-1048-label-footer.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/human-resources/block--human-resources-id-1048-label-footer.html.twig
new file mode 100644
index 0000000000..cdfc76789d
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/human-resources/block--human-resources-id-1048-label-footer.html.twig
@@ -0,0 +1,89 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+ How can we help?
+
+
+
+
+
+ UT Taleo
+
+
+
+
+
+
+
+ UTC Policies
+
+
+
+ New Employees
+
+
+
+
+
+
+
+ UT System HR
+
+
+
+
+
+ {% endblock %}
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/human-resources/block--human-resources-id-1048-label-header.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/human-resources/block--human-resources-id-1048-label-header.html.twig
new file mode 100644
index 0000000000..c88c74ebc2
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/human-resources/block--human-resources-id-1048-label-header.html.twig
@@ -0,0 +1,64 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/information-technology/block--information-technology-id-1047-label-footer.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/information-technology/block--information-technology-id-1047-label-footer.html.twig
new file mode 100644
index 0000000000..5e114c9419
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/information-technology/block--information-technology-id-1047-label-footer.html.twig
@@ -0,0 +1,82 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+{#
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {{ content }}
+ {% endblock %}
+ #}
+
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+ Who are you?
+
+
+
+
+
+
+
+
+ {% endblock %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/information-technology/block--information-technology-id-1141-label-demo.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/information-technology/block--information-technology-id-1141-label-demo.html.twig
new file mode 100644
index 0000000000..d95eaf9658
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/information-technology/block--information-technology-id-1141-label-demo.html.twig
@@ -0,0 +1,78 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endblock %}
diff --git a/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/physical-therapy/block--physical-therapy-id-1181-label-header.html.twig b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/physical-therapy/block--physical-therapy-id-1181-label-header.html.twig
new file mode 100644
index 0000000000..89cd325b6a
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/oucampus-pages/oucampus-blocks/physical-therapy/block--physical-therapy-id-1181-label-header.html.twig
@@ -0,0 +1,54 @@
+{#
+/**
+ * @file
+ * Theme override to display a block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values.
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: array of HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template.
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ */
+#}
+
+
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {# {{ content }} #}
+
+
+
+
+
+
+ Physical Therapy
+ {# With HTML5 Video and Bootstrap 4
#}
+
+
+
+
+
+ {% endblock %}
+
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_1/article_1.png b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_1/article_1.png
new file mode 100644
index 0000000000..ff2e109d54
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_1/article_1.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_1/layout--article-1.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_1/layout--article-1.html.twig
new file mode 100755
index 0000000000..d146a0ea5b
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_1/layout--article-1.html.twig
@@ -0,0 +1,89 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+
+
+ {# == Article content top == #}
+ {% if(content.article_content_top) %}
+ {% block article_content_top %}
+
+
+ {{ content.article_content_top }}
+
+
+ {% endblock %}
+ {% endif %}
+
+
+
+
+
+ {# == Article header == #}
+ {% block article_header %}
+
+ {{ content.article_header }}
+
+ {% endblock %}
+
+ {# == Article footer (article meta) == #}
+ {% block article_footer %}
+
+ {% endblock %}
+
+
+ {{ content.article_social_buttons }}
+
+
+ {# == Tabs == #}
+ {% block tabs %}
+
+ {{ content.tabs }}
+
+ {% endblock %}
+
+ {# == Article main content == #}
+
+ {{ content.article_content }}
+
+
+ {# == Article comments == #}
+
+ {{ content.article_comments }}
+
+
+
+
+
+ {# == Sidebar right == #}
+
+
+
+ {# == Article content bottom == #}
+ {% if(content.article_content_bottom) %}
+ {% block article_content_bottom %}
+
+
+ {{ content.article_content_bottom }}
+
+
+ {% endblock %}
+ {% endif %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_2/article_2.png b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_2/article_2.png
new file mode 100644
index 0000000000..52051d15e1
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_2/article_2.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_2/layout--article-2.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_2/layout--article-2.html.twig
new file mode 100755
index 0000000000..1dead15e43
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_2/layout--article-2.html.twig
@@ -0,0 +1,109 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+
+
+
+ {# == Article media == #}
+
+ {{ content.article_media }}
+
+
+
+
+
+ {# == Article header == #}
+ {% if(content.article_header) %}
+
+ {{ content.article_header }}
+
+ {% endif %}
+
+ {# == Article footer (article meta) == #}
+ {% if(content.article_footer) %}
+
+ {% endif %}
+
+
+
+
+
+ {# == Tabs == #}
+ {% if(content.tabs) %}
+
+
+
+
+ {{ content.tabs }}
+
+
+
+
+ {% endif %}
+
+
+ {# == Article content top == #}
+ {% if(content.article_content_top) %}
+
+
+ {{ content.article_content_top }}
+
+
+ {% endif %}
+
+
+
+
+ {# == Socil buttons == #}
+ {% if(content.article_social_buttons) %}
+
+ {{ content.article_social_buttons }}
+
+ {% endif %}
+
+ {# == Article main content == #}
+ {% if(content.article_content) %}
+
+ {{ content.article_content }}
+
+ {% endif %}
+
+
+
+
+ {# == Content bottom == #}
+ {% if(content.article_content_bottom) %}
+
+
+ {{ content.article_content_bottom }}
+
+
+ {% endif %}
+ {# end: .container #}
+
+
+ {# == Comments == #}
+ {% if(content.article_comments) %}
+
+
+
+
+ {{ content.article_comments }}
+
+
+
+
+ {% endif %}
+
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_3/article_3.png b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_3/article_3.png
new file mode 100644
index 0000000000..bf26087aeb
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_3/article_3.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_3/layout--article-3.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_3/layout--article-3.html.twig
new file mode 100755
index 0000000000..b7efef1177
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/article/article_3/layout--article-3.html.twig
@@ -0,0 +1,120 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+
+
+
+ {# == Article media == #}
+
+ {{ content.article_media }}
+
+
+
+
+ {# == Article header == #}
+ {% if(content.article_header) %}
+
+ {{ content.article_header }}
+
+ {% endif %}
+
+
+
+
+
+
+ {# == Meta and Social Buttons == #}
+
+
+
+
+
+
+ {# == Article content top == #}
+ {% if(content.article_content_top) %}
+
+
+ {{ content.article_content_top }}
+
+
+ {% endif %}
+
+
+
+
+
+ {# == Tabs == #}
+ {% if(content.tabs) %}
+
+ {{ content.tabs }}
+
+ {% endif %}
+
+ {# == Article main content == #}
+ {% if(content.article_content) %}
+
+ {{ content.article_content }}
+
+ {% endif %}
+
+ {# == Comments == #}
+ {% if(content.article_comments) %}
+
+ {{ content.article_comments }}
+
+ {% endif %}
+
+
+ {# == Sidebar right == #}
+
+
+
+
+ {# == Content bottom == #}
+ {% if(content.article_content_bottom) %}
+
+
+ {{ content.article_content_bottom }}
+
+
+ {% endif %}
+ {# end: .container #}
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-b/layout--b.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-b/layout--b.html.twig
new file mode 100755
index 0000000000..bae6c0a9e6
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-b/layout--b.html.twig
@@ -0,0 +1,66 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'layout--b' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+ {# ---------------- #}
+ {# REGION: FEATURED #}
+ {# ---------------- #}
+
+ {{ content.featured }}
+
+
+
+
+ {# ----------- #}
+ {# REGION: TOP #}
+ {# ----------- #}
+ {% if content.top %}
+
+
+ {{ content.top }}
+
+
+ {% endif %}
+
+
+ {# ------------- #}
+ {# REGION MIDDLE #}
+ {# ------------- #}
+
+
+ {{ content.middle_left }}
+
+
+ {{ content.middle_right }}
+
+
+
+ {# ------------- #}
+ {# REGION BOTTOM #}
+ {# ------------- #}
+
+
+
+ {{ content.bottom }}
+
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-b/layout-b.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-b/layout-b.png
new file mode 100755
index 0000000000..91a691c5e4
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-b/layout-b.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-c/layout--c.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-c/layout--c.html.twig
new file mode 100755
index 0000000000..890569e776
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-c/layout--c.html.twig
@@ -0,0 +1,61 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'layout--c' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+ {# ---------------- #}
+ {# REGION: FEATURED #}
+ {# ---------------- #}
+
+ {{ content.featured }}
+
+
+
+
+ {# ----------- #}
+ {# REGION: TOP #}
+ {# ----------- #}
+ {% if content.top %}
+
+
+ {{ content.top }}
+
+
+ {% endif %}
+
+ {# ------------- #}
+ {# REGION MIDDLE #}
+ {# ------------- #}
+
+
+ {{ content.middle }}
+
+
+
+ {# ------------- #}
+ {# REGION BOTTOM #}
+ {# ------------- #}
+
+
+ {{ content.bottom }}
+
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-c/layout-c.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-c/layout-c.png
new file mode 100755
index 0000000000..57508a08e2
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/layout-c/layout-c.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c12/g12c12.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c12/g12c12.html.twig
new file mode 100644
index 0000000000..9b7872af6a
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c12/g12c12.html.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'g12c12' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+
+
+
+ {{ content.col_1 }}
+
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c12/g12c12.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c12/g12c12.png
new file mode 100644
index 0000000000..fcbf9e4c1c
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c12/g12c12.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c3-3-3-3/g12c3-3-3-3.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c3-3-3-3/g12c3-3-3-3.html.twig
new file mode 100644
index 0000000000..c189ae28be
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c3-3-3-3/g12c3-3-3-3.html.twig
@@ -0,0 +1,31 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'g12c3-3-3-3' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+
+
+ {{ content.col_1 }}
+ {{ content.col_2 }}
+ {{ content.col_3 }}
+ {{ content.col_4 }}
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c3-3-3-3/g12c3-3-3-3.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c3-3-3-3/g12c3-3-3-3.png
new file mode 100644
index 0000000000..c50648df37
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c3-3-3-3/g12c3-3-3-3.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c4-4-4/g12c4-4-4.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c4-4-4/g12c4-4-4.html.twig
new file mode 100644
index 0000000000..54acecdf79
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c4-4-4/g12c4-4-4.html.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'g12c4-4-4' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+
+
+ {{ content.col_1 }}
+ {{ content.col_2 }}
+ {{ content.col_3 }}
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c4-4-4/g12c4-4-4.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c4-4-4/g12c4-4-4.png
new file mode 100644
index 0000000000..5e4187ab66
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c4-4-4/g12c4-4-4.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c6-6/g12c6-6.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c6-6/g12c6-6.html.twig
new file mode 100644
index 0000000000..2d59be6704
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c6-6/g12c6-6.html.twig
@@ -0,0 +1,29 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'g12c6-6' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+
+
+ {{ content.col_1 }}
+ {{ content.col_2 }}
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c6-6/g12c6-6.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c6-6/g12c6-6.png
new file mode 100644
index 0000000000..81742df7a6
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c6-6/g12c6-6.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c8-4/g12c8-4.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c8-4/g12c8-4.html.twig
new file mode 100644
index 0000000000..655f40b2a4
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c8-4/g12c8-4.html.twig
@@ -0,0 +1,29 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+{% set classes = [ 'g12c8-4' ] %}
+{% if themag.sticky_sidebar %}
+ {% set sticky_classs = 'stick-in-parent' %}
+{% endif %}
+
+{% if content %}
+
+
+
+
+ {{ content.col_1 }}
+ {{ content.col_2 }}
+
+ {# /.container #}
+
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c8-4/g12c8-4.png b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c8-4/g12c8-4.png
new file mode 100644
index 0000000000..81adf96763
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/deprecated/simple-layouts/g12c8-4/g12c8-4.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/landing/layout-a/layout--a.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/landing/layout-a/layout--a.html.twig
new file mode 100755
index 0000000000..18737da993
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/landing/layout-a/layout--a.html.twig
@@ -0,0 +1,133 @@
+{#
+/**
+ * @file
+ * Default theme implementation for a TheMAG layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+
+
+
+ {# ---------------- #}
+ {# REGION: FEATURED #}
+ {# ---------------- #}
+
+ {{ content.featured }}
+
+
+
+
+ {# ----------- #}
+ {# REGION: TOP #}
+ {# ----------- #}
+ {% if content.top %}
+
+
+ {{ content.top }}
+
+
+ {% endif %}
+
+
+ {# ----------------- #}
+ {# REGION: TOP BELOW #}
+ {# ----------------- #}
+ {% if content.top_left_below or content.top_middle_below or content.top_right_below %}
+
+
+ {{ content.top_left_below }}
+
+
+ {{ content.top_middle_below }}
+
+
+ {{ content.top_right_below }}
+
+
+ {% endif %}
+
+
+ {# ------------------- #}
+ {# REGION MIDDLE ABOVE #}
+ {# ------------------- #}
+ {% if content.middle_left_above or content.middle_right_above %}
+
+
+ {{ content.middle_left_above }}
+
+
+ {{ content.middle_right_above }}
+
+
+ {% endif %}
+
+
+ {# ------------- #}
+ {# REGION MIDDLE #}
+ {# ------------- #}
+ {% if content.middle %}
+
+
+ {{ content.middle }}
+
+
+ {% endif %}
+
+
+ {# ------------------- #}
+ {# REGION MIDDLE BELOW #}
+ {# ------------------- #}
+ {% if content.middle_left_below or content.middle_middle_below or content.middle_right_below %}
+
+
+ {{ content.middle_left_below }}
+
+
+ {{ content.middle_middle_below }}
+
+
+ {{ content.middle_right_below }}
+
+
+ {% endif %}
+
+
+ {# ------------------- #}
+ {# REGION BOTTOM ABOVE #}
+ {# ------------------- #}
+ {% if content.bottom_left_above or content.bottom_right_above %}
+
+
+ {{ content.bottom_left_above }}
+
+
+ {{ content.bottom_right_above }}
+
+
+ {% endif %}
+
+
+ {# ------------- #}
+ {# REGION BOTTOM #}
+ {# ------------- #}
+ {% if content.bottom %}
+
+
+ {{ content.bottom }}
+
+
+ {% endif %}
+
+
+ {# /.container #}
+
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/landing/layout-a/layout-a.png b/apps/drupal-default/particle_theme/templates/panels-layouts/landing/layout-a/layout-a.png
new file mode 100755
index 0000000000..82cee0b967
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/landing/layout-a/layout-a.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_1/layout--page-1.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_1/layout--page-1.html.twig
new file mode 100755
index 0000000000..823b647152
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_1/layout--page-1.html.twig
@@ -0,0 +1,60 @@
+{#
+/**
+ * @file
+ * Default theme implementation for layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+
+
+
+ {# == Heading == #}
+ {# ============= #}
+
+
+ {% block page_heading %}
+
+
+
+
+ {{ content.page_header }}
+
+
+
+
+ {% endblock %}
+
+ {% if(content.page_tabs) %}
+
+
+
+
+ {{ content.page_tabs }}
+
+
+
+
+ {% endif %}
+
+
+ {# == Region: Content == #}
+ {# ===================== #}
+ {% block region_content %}
+
+
+
+
+ {{ content.page_content }}
+
+
+
+
+ {% endblock %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_1/page_1.png b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_1/page_1.png
new file mode 100644
index 0000000000..b80244499d
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_1/page_1.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_2/layout--page-2.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_2/layout--page-2.html.twig
new file mode 100755
index 0000000000..e1e9f6bdcd
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_2/layout--page-2.html.twig
@@ -0,0 +1,29 @@
+{#
+/**
+ * @file
+ * Default theme implementation for layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+{% extends "@themag/panels-layouts/page/page_1/layout--page-1.html.twig" %}
+
+{# == Region: Content == #}
+{# ===================== #}
+{% block region_content %}
+
+
+
+ {{ content.page_content }}
+
+
+ {{ content.page_sidebar_right }}
+
+
+
+{% endblock %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_2/page_2.png b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_2/page_2.png
new file mode 100644
index 0000000000..0c26629b6d
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_2/page_2.png differ
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_3/layout--page-3.html.twig b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_3/layout--page-3.html.twig
new file mode 100755
index 0000000000..6d98136694
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_3/layout--page-3.html.twig
@@ -0,0 +1,60 @@
+{#
+/**
+ * @file
+ * Default theme implementation for layout.
+ *
+ * Available variables:
+ * - content: The content for this layout.
+ * - attributes: HTML attributes for the layout .
+ *
+ * @ingroup themeable
+ */
+#}
+
+{% extends "@themag/panels-layouts/page/page_1/layout--page-1.html.twig" %}
+
+{# == Region: Content == #}
+{# ===================== #}
+{% block region_content %}
+
+
+ {% if(content.page_content_top) %}
+
+
+ {{ content.page_content_top }}
+
+
+ {% endif %}
+
+ {% if(content.page_content or content.page_sidebar_right) %}
+
+
+ {{ content.page_content }}
+
+
+ {{ content.page_sidebar_right }}
+
+
+ {% endif %}
+
+ {% if(content.page_content_bottom) %}
+
+
+ {{ content.page_content_bottom }}
+
+
+ {% endif %}
+
+ {% if(content.page_content_bottom_below_first or content.page_content_bottom_below_second) %}
+
+
+ {{ content.page_content_bottom_below_first }}
+
+
+ {{ content.page_content_bottom_below_second }}
+
+
+ {% endif %}
+
+
+{% endblock %}
diff --git a/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_3/page_3.png b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_3/page_3.png
new file mode 100644
index 0000000000..097dae93d7
Binary files /dev/null and b/apps/drupal-default/particle_theme/templates/panels-layouts/page/page_3/page_3.png differ
diff --git a/apps/drupal-default/particle_theme/templates/region/region--content-header.html.twig b/apps/drupal-default/particle_theme/templates/region/region--content-header.html.twig
new file mode 100644
index 0000000000..17185adbb0
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/region/region--content-header.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Theme override to display a region.
+ *
+ * Available variables:
+ * - content: The content for this region, typically blocks.
+ * - attributes: HTML attributes for the region .
+ * - region: The name of the region variable as defined in the theme's
+ * .info.yml file.
+ *
+ * @see template_preprocess_region()
+ */
+#}
+{%
+ set classes = [
+ 'region',
+ 'region--' ~ region|clean_class,
+ ]
+%}
+{% if content %}
+
+ {{ content }}
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/region/region--top-workbench-menu.html.twig b/apps/drupal-default/particle_theme/templates/region/region--top-workbench-menu.html.twig
new file mode 100644
index 0000000000..5969750f25
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/region/region--top-workbench-menu.html.twig
@@ -0,0 +1,27 @@
+{#
+/**
+ * @file
+ * Theme override to display a region.
+ *
+ * Available variables:
+ * - content: The content for this region, typically blocks.
+ * - attributes: HTML attributes for the region .
+ * - region: The name of the region variable as defined in the theme's
+ * .info.yml file.
+ *
+ * @see template_preprocess_region()
+ */
+#}
+{{ attach_library('utccloud/utc-top-workbench-menus') }}
+
+{%
+ set classes = [
+ 'region',
+ 'region-top-workbench-menu',
+ ]
+%}
+{% if content %}
+
+ {{ content }}
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/search/block--search-form-block.html.twig b/apps/drupal-default/particle_theme/templates/search/block--search-form-block.html.twig
new file mode 100755
index 0000000000..ee0e67c046
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/search/block--search-form-block.html.twig
@@ -0,0 +1,52 @@
+{#
+/**
+ * @file
+ * Theme override for the search form block.
+ *
+ * Available variables:
+ * - plugin_id: The ID of the block implementation.
+ * - label: The configured label of the block if visible.
+ * - configuration: A list of the block's configuration values, including:
+ * - label: The configured label for the block.
+ * - label_display: The display settings for the label.
+ * - provider: The module or other provider that provided this block plugin.
+ * - Block plugin specific settings will also be stored here.
+ * - content: The content of this block.
+ * - attributes: A list HTML attributes populated by modules, intended to
+ * be added to the main container tag of this template. Includes:
+ * - id: A valid HTML ID and guaranteed unique.
+ * - title_attributes: Same as attributes, except applied to the main title
+ * tag that appears in the template.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the main title tag that appears in the template.
+ *
+ * @see template_preprocess_block()
+ * @see search_preprocess_block()
+ */
+#}
+{%
+ set classes = [
+ 'block',
+ 'block-search',
+ 'bg-white',
+ ]
+%}
+
+{% set title_classes = [ 'block-title' ] %}
+
+
+ {{ title_prefix }}
+ {% if label %}
+
+ {{ label }}
+
+ {% endif %}
+ {{ title_suffix }}
+ {% block content %}
+ {{ content }}
+ Hide Search
+
+ {% endblock %}
+
diff --git a/apps/drupal-default/particle_theme/templates/search/page--search.html.twig b/apps/drupal-default/particle_theme/templates/search/page--search.html.twig
new file mode 100755
index 0000000000..d2d095a2ba
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/search/page--search.html.twig
@@ -0,0 +1,93 @@
+{#
+/**
+ * @file
+ * Theme override to display a page-node (post) of type mg_article.
+ *
+ * * Available variables:
+ *
+ * General utility variables:
+ * - base_path: The base URL path of the Drupal installation. Will usually be
+ * "/" unless you have installed Drupal in a sub-directory.
+ * - is_front: A flag indicating if the current page is the front page.
+ * - logged_in: A flag indicating if the user is registered and signed in.
+ * - is_admin: A flag indicating if the user has permission to access
+ * administration pages.
+ *
+ * Site identity:
+ * - front_page: The URL of the front page. Use this instead of base_path when
+ * linking to the front page. This includes the language domain or prefix.
+ *
+ * Page content (in order of occurrence in the default page.html.twig):
+ * - node: Fully loaded node, if there is an automatically-loaded node
+ * associated with the page and the node ID is the second argument in the
+ * page's path (e.g. node/12345 and node/12345/revisions, but not
+ * comment/reply/12345).
+ *
+ * Regions:
+ * - page.header: Items for the header region.
+ * - page.primary_menu: Items for the primary menu region.
+ * - page.secondary_menu: Items for the secondary menu region.
+ * - page.highlighted: Items for the highlighted content region.
+ * - page.help: Dynamic help text, mostly for admin pages.
+ * - page.content: The main content of the current page.
+ * - page.sidebar_first: Items for the first sidebar.
+ * - page.sidebar_second: Items for the second sidebar.
+ * - page.footer: Items for the footer region.
+ * - page.breadcrumb: Items for the breadcrumb region.
+ *
+ * TheMAG article variables
+ * - article.display_submitted:
+ * - article.author_id:
+ * - article.author_name:
+ * - article.author_picture:
+ *
+ * - article.teaser_image:
+ * - article.content:
+ * - article.category:
+ * - article.tags:
+ * - article.post_layout
+ *
+ * @see @themag/includes/page.inc -> themag_preprocess_page()
+ */
+#}
+
+{# Extend page.html.twig #}
+{% extends '@themag/base-layout/page/page.html.twig' %}
+
+{% block page_content %}
+{# Note: my-24 will not apply, using inline instead. #}
+
+ {# link is in html.html.twig #}
+
+ {% block content_top %}
+ {% if page.content_top %}
+
+
+ {{ page.content_top }}
+
+
+ {% endif %}
+ {% endblock %}
+
+ {% block content_main %}
+
+
+ {{ page.content_header }}
+ {{ page.content_administration }}
+ {{ page.content }}
+
+
+ {% endblock %}
+
+ {% block content_bottom %}
+ {% if page.content_bottom %}
+
+
+ {{ page.content_bottom }}
+
+
+ {% endif %}
+ {% endblock %}
+
+
+ {% endblock %}
\ No newline at end of file
diff --git a/apps/drupal-default/particle_theme/templates/search/region--search.html.twig b/apps/drupal-default/particle_theme/templates/search/region--search.html.twig
new file mode 100755
index 0000000000..243ac0f6d6
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/search/region--search.html.twig
@@ -0,0 +1,34 @@
+{#
+/**
+ * @file
+ * Default theme implementation to display a region.
+ *
+ * Available variables:
+ * - content: The content for this region, typically blocks.
+ * - attributes: HTML attributes for the region .
+ * - region: The name of the region variable as defined in the theme's
+ * .info.yml file.
+ *
+ * @see template_preprocess_region()
+ *
+ * @ingroup themeable
+ */
+#}
+
+{%
+ set classes = [
+ 'region',
+ 'region-' ~ region|clean_class,
+ ]
+%}
+
+{% if content %}
+
+
+
+ {{ content }}
+
+
+
+{% endif %}
+
diff --git a/apps/drupal-default/particle_theme/templates/system/html.html.twig b/apps/drupal-default/particle_theme/templates/system/html.html.twig
new file mode 100755
index 0000000000..ede7506ee3
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/system/html.html.twig
@@ -0,0 +1,67 @@
+{#
+/**
+ * @file
+ * Theme override for the basic structure of a single Drupal page.
+ *
+ * Variables:
+ * - logged_in: A flag indicating if user is logged in.
+ * - root_path: The root path of the current page (e.g., node, admin, user).
+ * - node_type: The content type for the current node, if the page is a node.
+ * - head_title: List of text elements that make up the head_title variable.
+ * May contain one or more of the following:
+ * - title: The title of the page.
+ * - name: The name of the site.
+ * - slogan: The slogan of the site.
+ * - page_top: Initial rendered markup. This should be printed before 'page'.
+ * - page: The rendered page markup.
+ * - page_bottom: Closing rendered markup. This variable should be printed after
+ * 'page'.
+ * - db_offline: A flag indicating if the database is offline.
+ * - placeholder_token: The token for generating head, css, js and js-bottom
+ * placeholders.
+ *
+ * @see template_preprocess_html()
+ */
+#}
+{%
+ set body_classes = [
+ logged_in ? 'user-logged-in',
+ not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class,
+ node_type ? 'page-node-type-' ~ node_type|clean_class,
+ db_offline ? 'db-offline',
+ ]
+%}
+
+
+
+
+ {{ head_title|safe_join(' | ') }}
+
+
+
+ {% if themag.additional_css != '' %}
+
+ {% endif %}
+
+
+
+ {{ themag.additional_javascript|raw }}
+ {% block body %}
+ {#
+ Keyboard navigation/accessibility link to main content section in
+ page.html.twig.
+ #}
+
+ {{ 'Skip to main content'|t }}
+
+
+ {# Scroll to top element #}
+
+
+ {{ page_top }}
+ {{ page }}
+ {{ page_bottom }}
+
+ {% endblock %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/system/image.html.twig b/apps/drupal-default/particle_theme/templates/system/image.html.twig
new file mode 100755
index 0000000000..2024dfb7eb
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/system/image.html.twig
@@ -0,0 +1,15 @@
+{#
+/**
+ * @file
+ * Default theme implementation of an image.
+ *
+ * Available variables:
+ * - attributes: HTML attributes for the img tag.
+ * - style_name: (optional) The name of the image style applied.
+ *
+ * @see template_preprocess_image()
+ *
+ * @ingroup themeable
+ */
+#}
+
diff --git a/apps/drupal-default/particle_theme/templates/system/maintenance-page.html.twig b/apps/drupal-default/particle_theme/templates/system/maintenance-page.html.twig
new file mode 100755
index 0000000000..f42d7a18da
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/system/maintenance-page.html.twig
@@ -0,0 +1,50 @@
+{#
+/**
+ * @file
+ * Theme override to display a single Drupal page while offline.
+ *
+ * All available variables are mirrored in page.html.twig.
+ * Some may be blank but they are provided for consistency.
+ *
+ * @see template_preprocess_maintenance_page()
+ */
+#}
+
+
+
+ {% if logo %}
+
+
+
+ {% endif %}
+
+
+
+ {% if title %}
+ {{ title }}
+ {% endif %}
+
+ {{ page.highlighted }}
+
+ {{ page.content }}
+
+
+ {% if page.sidebar_first %}
+ {# /.layout-sidebar-first #}
+ {% endif %}
+
+ {% if page.sidebar_second %}
+ {# /.layout-sidebar-second #}
+ {% endif %}
+
+ {% if page.footer %}
+
+ {% endif %}
+
+{# /.layout-container #}
diff --git a/apps/drupal-default/particle_theme/templates/system/page--403.html.twig b/apps/drupal-default/particle_theme/templates/system/page--403.html.twig
new file mode 100755
index 0000000000..2e1dd7beea
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/system/page--403.html.twig
@@ -0,0 +1,19 @@
+{#
+/**
+ * @file
+ * Error 404 page.
+ */
+#}
+
+
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/system/page--404.html.twig b/apps/drupal-default/particle_theme/templates/system/page--404.html.twig
new file mode 100755
index 0000000000..1fbfa45c33
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/system/page--404.html.twig
@@ -0,0 +1,19 @@
+{#
+/**
+ * @file
+ * Error 404 page.
+ */
+#}
+
+
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/taxonomy/taxonomy-term--mg-category-icon-link.html.twig b/apps/drupal-default/particle_theme/templates/taxonomy/taxonomy-term--mg-category-icon-link.html.twig
new file mode 100755
index 0000000000..f26f147586
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/taxonomy/taxonomy-term--mg-category-icon-link.html.twig
@@ -0,0 +1,37 @@
+{#
+/**
+ * @file
+ * Theme override to display a taxonomy term.
+ *
+ * Available variables:
+ * - url: URL of the current term.
+ * - name: Name of the current term.
+ * - content: Items for the content of the term (fields and description).
+ * Use 'content' to print them all, or print a subset such as
+ * 'content.description'. Use the following code to exclude the
+ * printing of a given child element:
+ * @code
+ * {{ content|without('description') }}
+ * @endcode
+ * - attributes: HTML attributes for the wrapper.
+ * - page: Flag for the full page state.
+ * - term: The taxonomy term entity, including:
+ * - id: The ID of the taxonomy term.
+ * - bundle: Machine name of the current vocabulary.
+ * - view_mode: View mode, e.g. 'full', 'teaser', etc.
+ *
+ * @see template_preprocess_taxonomy_term()
+ */
+#}
+
+
+ {% block clategory_icon %}
+
+ {% endblock %}
+ {% block clategory_name %}
+ {{ name }}
+ {% endblock %}
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/taxonomy/taxonomy-term--mg-category-icon.html.twig b/apps/drupal-default/particle_theme/templates/taxonomy/taxonomy-term--mg-category-icon.html.twig
new file mode 100755
index 0000000000..73dfe6b7fa
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/taxonomy/taxonomy-term--mg-category-icon.html.twig
@@ -0,0 +1,31 @@
+{#
+/**
+ * @file
+ * Theme override to display a taxonomy term.
+ *
+ * Available variables:
+ * - url: URL of the current term.
+ * - name: Name of the current term.
+ * - content: Items for the content of the term (fields and description).
+ * Use 'content' to print them all, or print a subset such as
+ * 'content.description'. Use the following code to exclude the
+ * printing of a given child element:
+ * @code
+ * {{ content|without('description') }}
+ * @endcode
+ * - attributes: HTML attributes for the wrapper.
+ * - page: Flag for the full page state.
+ * - term: The taxonomy term entity, including:
+ * - id: The ID of the taxonomy term.
+ * - bundle: Machine name of the current vocabulary.
+ * - view_mode: View mode, e.g. 'full', 'teaser', etc.
+ *
+ * @see template_preprocess_taxonomy_term()
+ */
+#}
+{% extends '@themag/taxonomy/taxonomy-term--mg-category-icon-link.html.twig' %}
+{% block clategory_name %}
+ {{ name }}
+{% endblock %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/user/components/user-social-pages.html.twig b/apps/drupal-default/particle_theme/templates/user/components/user-social-pages.html.twig
new file mode 100644
index 0000000000..434fd2a9a5
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/user/components/user-social-pages.html.twig
@@ -0,0 +1,37 @@
+
+{% endblock %}
diff --git a/apps/drupal-default/particle_theme/templates/user/page--user--password.html.twig b/apps/drupal-default/particle_theme/templates/user/page--user--password.html.twig
new file mode 100644
index 0000000000..ae5fd3f327
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/user/page--user--password.html.twig
@@ -0,0 +1,47 @@
+{#
+/**
+ * @file
+ * Theme override to display a single page.
+ *
+ * The doctype, html, head and body tags are not in this template. Instead they
+ * can be found in the html.html.twig template in this directory.
+ *
+ * Available variables:
+ *
+ * General utility variables:
+ * - base_path: The base URL path of the Drupal installation. Will usually be
+ * "/" unless you have installed Drupal in a sub-directory.
+ * - is_front: A flag indicating if the current page is the front page.
+ * - logged_in: A flag indicating if the user is registered and signed in.
+ * - is_admin: A flag indicating if the user has permission to access
+ * administration pages.
+ *
+ * Site identity:
+ * - front_page: The URL of the front page. Use this instead of base_path when
+ * linking to the front page. This includes the language domain or prefix.
+ *
+ * Page content (in order of occurrence in the default page.html.twig):
+ * - node: Fully loaded node, if there is an automatically-loaded node
+ * associated with the page and the node ID is the second argument in the
+ * page's path (e.g. node/12345 and node/12345/revisions, but not
+ * comment/reply/12345).
+ *
+ * Regions:
+ * - page.header: Items for the header region.
+ * - page.primary_menu: Items for the primary menu region.
+ * - page.secondary_menu: Items for the secondary menu region.
+ * - page.highlighted: Items for the highlighted content region.
+ * - page.help: Dynamic help text, mostly for admin pages.
+ * - page.content: The main content of the current page.
+ * - page.sidebar_first: Items for the first sidebar.
+ * - page.sidebar_second: Items for the second sidebar.
+ * - page.footer: Items for the footer region.
+ * - page.breadcrumb: Items for the breadcrumb region.
+ *
+ * @see template_preprocess_page()
+ * @see html.html.twig
+ */
+#}
+
+{# Extend page.html.twig #}
+{% extends '@themag/user/page--user--login.html.twig' %}
diff --git a/apps/drupal-default/particle_theme/templates/user/page--user--register.html.twig b/apps/drupal-default/particle_theme/templates/user/page--user--register.html.twig
new file mode 100644
index 0000000000..ae5fd3f327
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/user/page--user--register.html.twig
@@ -0,0 +1,47 @@
+{#
+/**
+ * @file
+ * Theme override to display a single page.
+ *
+ * The doctype, html, head and body tags are not in this template. Instead they
+ * can be found in the html.html.twig template in this directory.
+ *
+ * Available variables:
+ *
+ * General utility variables:
+ * - base_path: The base URL path of the Drupal installation. Will usually be
+ * "/" unless you have installed Drupal in a sub-directory.
+ * - is_front: A flag indicating if the current page is the front page.
+ * - logged_in: A flag indicating if the user is registered and signed in.
+ * - is_admin: A flag indicating if the user has permission to access
+ * administration pages.
+ *
+ * Site identity:
+ * - front_page: The URL of the front page. Use this instead of base_path when
+ * linking to the front page. This includes the language domain or prefix.
+ *
+ * Page content (in order of occurrence in the default page.html.twig):
+ * - node: Fully loaded node, if there is an automatically-loaded node
+ * associated with the page and the node ID is the second argument in the
+ * page's path (e.g. node/12345 and node/12345/revisions, but not
+ * comment/reply/12345).
+ *
+ * Regions:
+ * - page.header: Items for the header region.
+ * - page.primary_menu: Items for the primary menu region.
+ * - page.secondary_menu: Items for the secondary menu region.
+ * - page.highlighted: Items for the highlighted content region.
+ * - page.help: Dynamic help text, mostly for admin pages.
+ * - page.content: The main content of the current page.
+ * - page.sidebar_first: Items for the first sidebar.
+ * - page.sidebar_second: Items for the second sidebar.
+ * - page.footer: Items for the footer region.
+ * - page.breadcrumb: Items for the breadcrumb region.
+ *
+ * @see template_preprocess_page()
+ * @see html.html.twig
+ */
+#}
+
+{# Extend page.html.twig #}
+{% extends '@themag/user/page--user--login.html.twig' %}
diff --git a/apps/drupal-default/particle_theme/templates/user/user--author-info.html.twig b/apps/drupal-default/particle_theme/templates/user/user--author-info.html.twig
new file mode 100644
index 0000000000..6d297cd794
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/user/user--author-info.html.twig
@@ -0,0 +1,33 @@
+{#
+/**
+ * @file
+ * Theme override to present all user data.
+ *
+ * This template is used when viewing a registered user's page,
+ * e.g., example.com/user/123. 123 being the user's ID.
+ *
+ * Available variables:
+ * - content: A list of content items. Use 'content' to print all content, or
+ * print a subset such as 'content.field_example'. Fields attached to a user
+ * such as 'user_picture' are available as 'content.user_picture'.
+ * - attributes: HTML attributes for the container element.
+ * - user: A Drupal User entity.
+ *
+ * @see template_preprocess_user()
+ */
+#}
+
+
+
+
+ {{ content.user_picture }}
+
+ {{ user.getDisplayName }}
+ {{ content|without('user_picture', 'field_facebook', 'field_twitter', 'field_google_plus', 'field_instagram', 'field_linkedin', 'field_pinterest') }}
+
+ {{ include('@themag/user/components/user-social-pages.html.twig') }}
+
+
+
+
+
diff --git a/apps/drupal-default/particle_theme/templates/user/user--full.html.twig b/apps/drupal-default/particle_theme/templates/user/user--full.html.twig
new file mode 100755
index 0000000000..60213f145e
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/user/user--full.html.twig
@@ -0,0 +1,44 @@
+{#
+/**
+ * @file
+ * Theme override to present all user data.
+ *
+ * This template is used when viewing a registered user's page,
+ * e.g., example.com/user/123. 123 being the user's ID.
+ *
+ * Available variables:
+ * - content: A list of content items. Use 'content' to print all content, or
+ * print a subset such as 'content.field_example'. Fields attached to a user
+ * such as 'user_picture' are available as 'content.user_picture'.
+ * - attributes: HTML attributes for the container element.
+ * - user: A Drupal User entity.
+ *
+ * @see template_preprocess_user()
+ */
+#}
+
+
+
+{# @todo Remove commented code. #}
+{# #}
+{# {{ content.user_picture }}#}
+{# #}
+
+{# #}
+{# #}
+{# {{ 'Account informations'|t }}
#}
+{# #}
+{# {{ 'User name'|t }}: {{ user.getAccountName }}#}
+{# #}
+{# #}
+{# {{ 'E-mail'|t }}: {{ user.mail.value }}#}
+{# #}
+{# #}
+{# {{ content.member_for }}#}
+{# #}
+
+{# #}
+{# #}
+
+ {{ content|without('user_picture', 'member_for') }}
+
diff --git a/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-directory.html.twig b/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-directory.html.twig
new file mode 100644
index 0000000000..5298a2337d
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-directory.html.twig
@@ -0,0 +1,35 @@
+{#
+/**
+ * @file
+ * Theme override for a views exposed form.
+ *
+ * Available variables:
+ * - form: A render element representing the form.
+ *
+ * @see template_preprocess_views_exposed_form()
+ */
+#}
+{# NOTES
+ related files:
+ docroot/modules/custom/utccloud/utccloud.module
+ - (preprocess for both twig files)
+ docroot/themes/custom/particle/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-directory.html.twig
+ - this file - shows/hides the exposed filters based on variables in URL
+ docroot/themes/custom/particle/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-directory.html.twig
+ renders view content
+#}
+{# testing variable being passed from preprocess
+{{ argument_count }} #}
+
+{% if q is not empty %}
+ {#
+ This ensures that, if clean URLs are off, the 'q' is added first,
+ as a hidden form element, so that it shows up first in the POST URL.
+ #}
+{{ q }}
+{% endif %}
+{% if argument_count < 3 %}
+
+ {{ form }}
+
+{% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-library-item.html.twig b/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-library-item.html.twig
new file mode 100644
index 0000000000..5a6f8a7034
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-library-item.html.twig
@@ -0,0 +1,23 @@
+{#
+/**
+ * @file
+ * Theme override for a views exposed form.
+ *
+ * Available variables:
+ * - form: A render element representing the form.
+ *
+ * @see template_preprocess_views_exposed_form()
+ */
+#}
+{% if q is not empty %}
+ {#
+ This ensures that, if clean URLs are off, the 'q' is added first,
+ as a hidden form element, so that it shows up first in the POST URL.
+ #}
+{{ q }}
+{% endif %}
+
+
+ {{ form }}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/views/views-view--utc-library-events-feed.html.twig b/apps/drupal-default/particle_theme/templates/views/views-view--utc-library-events-feed.html.twig
new file mode 100644
index 0000000000..beb200a95e
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-view--utc-library-events-feed.html.twig
@@ -0,0 +1,111 @@
+{#
+/**
+ * @file
+ * Theme override for a main view template.
+ *
+ * Available variables:
+ * - attributes: Remaining HTML attributes for the element.
+ * - css_name: A CSS-safe version of the view name.
+ * - css_class: The user-specified classes names, if any.
+ * - header: The optional header.
+ * - footer: The optional footer.
+ * - rows: The results of the view query, if any.
+ * - empty: The content to display if there are no rows.
+ * - pager: The optional pager next/prev links to display.
+ * - exposed: Exposed widget form/info to display.
+ * - feed_icons: Optional feed icons to display.
+ * - more: An optional link to the next page of results.
+ * - title: Title of the view, only used when displaying in the admin preview.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the view title.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the view title.
+ * - attachment_before: An optional attachment view to be displayed before the
+ * view content.
+ * - attachment_after: An optional attachment view to be displayed after the
+ * view content.
+ * - dom_id: Unique id for every view being printed to give unique class for
+ * JavaScript.
+ *
+ * @see template_preprocess_views_view()
+ */
+#}
+{%
+ set classes = [
+ 'view',
+ 'view-' ~ id|clean_class,
+ 'view-id-' ~ id,
+ 'view-display-id-' ~ display_id,
+ dom_id ? 'js-view-dom-id-' ~ dom_id,
+ ]
+%}
+
+ {{ title_prefix }}
+ {% if title %}
+ {{ title }}
+ {% endif %}
+ {{ title_suffix }}
+ {% if header %}
+
+ {#
+ only show header when there are events
+ #}
+ {% if view.total_rows > 0 %}
+ {{ header }}
+ {% endif %}
+
+ {% endif %}
+ {% if exposed %}
+
+ {{ exposed }}
+
+ {% endif %}
+ {% if attachment_before %}
+
+ {% endif %}
+ {% if rows %}
+
+ {{ rows }}
+
+ {% elseif empty %}
+
+ {{ empty }}
+
+ {% endif %}
+
+ {% if pager %}
+ {{ pager }}
+ {% endif %}
+ {% if attachment_after %}
+
+ {% endif %}
+ {% if more %}
+ {{ more }}
+ {% endif %}
+ {% if footer %}
+
+ {% endif %}
+ {% if feed_icons %}
+
+ {% endif %}
+
diff --git a/apps/drupal-default/particle_theme/templates/views/views-view--utc-people-finder.html.twig b/apps/drupal-default/particle_theme/templates/views/views-view--utc-people-finder.html.twig
new file mode 100644
index 0000000000..a58a109746
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-view--utc-people-finder.html.twig
@@ -0,0 +1,102 @@
+{#
+/**
+ * @file
+ * Theme override for a main view template.
+ *
+ * Available variables:
+ * - attributes: Remaining HTML attributes for the element.
+ * - css_name: A css-safe version of the view name.
+ * - css_class: The user-specified classes names, if any.
+ * - header: The optional header.
+ * - footer: The optional footer.
+ * - rows: The results of the view query, if any.
+ * - empty: The content to display if there are no rows.
+ * - pager: The optional pager next/prev links to display.
+ * - exposed: Exposed widget form/info to display.
+ * - feed_icons: Optional feed icons to display.
+ * - more: An optional link to the next page of results.
+ * - title: Title of the view, only used when displaying in the admin preview.
+ * - title_prefix: Additional output populated by modules, intended to be
+ * displayed in front of the view title.
+ * - title_suffix: Additional output populated by modules, intended to be
+ * displayed after the view title.
+ * - attachment_before: An optional attachment view to be displayed before the
+ * view content.
+ * - attachment_after: An optional attachment view to be displayed after the
+ * view content.
+ * - dom_id: Unique id for every view being printed to give unique class for
+ * Javascript.
+ *
+ * @see template_preprocess_views_view()
+ */
+#}
+{%
+ set classes = [
+ 'view',
+ 'view-' ~ id|clean_class,
+ 'view-id-' ~ id,
+ 'view-display-id-' ~ display_id,
+ dom_id ? 'js-view-dom-id-' ~ dom_id,
+ ]
+%}
+
+ {{ title_prefix }}
+ {% if title %}
+ {{ title }}
+ {% endif %}
+ {{ title_suffix }}
+ {% if header %}
+
+ {{ header }}
+
+ {% endif %}
+ {% if exposed %}
+
+ {{ exposed }}
+
+ {% endif %}
+ {% if attachment_before %}
+
+ {% endif %}
+
+ {% if rows %}
+
+
+ {{ rows }}
+
+
+ {% elseif empty %}
+
+
+
+ {{ empty }}
+
+
+ {% endif %}
+
+ {% if pager %}
+ {{ pager }}
+ {% endif %}
+ {% if attachment_after %}
+
+ {% endif %}
+ {% if more %}
+ {{ more }}
+ {% endif %}
+ {% if footer %}
+
+ {% endif %}
+ {% if feed_icons %}
+
+ {% endif %}
+
diff --git a/apps/drupal-default/particle_theme/templates/views/views-view-table--department-directory.html.twig b/apps/drupal-default/particle_theme/templates/views/views-view-table--department-directory.html.twig
new file mode 100644
index 0000000000..7f9434146d
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-view-table--department-directory.html.twig
@@ -0,0 +1,193 @@
+{#
+/**
+ * @file
+ * Theme override for displaying a view as a table.
+ *
+ * Available variables:
+ * - attributes: Remaining HTML attributes for the element.
+ * - class: HTML classes that can be used to style contextually through CSS.
+ * - title : The title of this group of rows.
+ * - header: The table header columns.
+ * - attributes: Remaining HTML attributes for the element.
+ * - content: HTML classes to apply to each header cell, indexed by
+ * the header's key.
+ * - default_classes: A flag indicating whether default classes should be
+ * used.
+ * - caption_needed: Is the caption tag needed.
+ * - caption: The caption for this table.
+ * - accessibility_description: Extended description for the table details.
+ * - accessibility_summary: Summary for the table details.
+ * - rows: Table row items. Rows are keyed by row number.
+ * - attributes: HTML classes to apply to each row.
+ * - columns: Row column items. Columns are keyed by column number.
+ * - attributes: HTML classes to apply to each column.
+ * - content: The column content.
+ * - default_classes: A flag indicating whether default classes should be
+ * used.
+ * - responsive: A flag indicating whether table is responsive.
+ * - sticky: A flag indicating whether table header is sticky.
+ *
+ * @see template_preprocess_views_view_table()
+ */
+#}
+
+{%
+ set classes = [
+ 'border-collapse',
+ 'w-full',
+ ]
+%}
+
+ {% if caption_needed %}
+
+ {% if caption %}
+ {{ caption }}
+ {% else %}
+ {{ title }}
+ {% endif %}
+ {% if (summary is not empty) or (description is not empty) %}
+
+ {% if summary is not empty %}
+ {{ summary }}
+ {% endif %}
+ {% if description is not empty %}
+ {{ description }}
+ {% endif %}
+
+ {% endif %}
+
+ {% endif %}
+ {% if header %}
+
+
+ {% for key, column in header %}
+ {% if column.default_classes %}
+ {%
+ set column_classes = [
+ 'p-3',
+ 'font-semibold',
+ 'uppercase',
+ 'bg-utc-new-blue-100',
+ 'text-utc-new-blue-500',
+ 'tracking-wider',
+ 'border-0',
+ 'hidden',
+ 'xl:table-cell',
+ 'xl:text-base'
+ ]
+ %}
+ {% endif %}
+
+ {%- if column.wrapper_element -%}
+ <{{ column.wrapper_element }}>
+ {%- if column.url -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {%- else -%}
+ {%- if column is not empty -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {% endif %}
+ {%- endif -%}
+ {{ column.wrapper_element }}>
+ {%- else -%}
+ {%- if column.url -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {%- else -%}
+ {%- if column.content is not empty -%}
+ {{- column.content }}{{ column.sort_indicator }}
+ {% endif %}
+ {%- endif -%}
+ {%- endif -%}
+
+ {% endfor %}
+
+
+ {% endif %}
+
+ {%
+ set row_classes = [
+ 'bg-white',
+ 'font-medium',
+ 'flex',
+ 'xl:table-row',
+ 'flex-row',
+ 'xl:flex-row',
+ 'flex-wrap',
+ 'xl:flex-no-wrap',
+ 'mb-5',
+ 'xl:mb-0',
+ 'shadow',
+ 'xl:shadow-lg',
+ ]
+ %}
+ {% for row in rows %}
+
+ {% for key, column in row.columns %}
+ {% if column.default_classes %}
+ {%
+ set column_classes = [
+ 'text-gray-800',
+ 'block',
+ 'text-sm',
+ 'my-3',
+ 'xl:w-auto',
+ 'xl:table-cell',
+ 'xl:border-b',
+ 'xl:border-l-0',
+ 'xl:border-r-0',
+ 'xl:my-8',
+ 'xl:p-0',
+ 'xl:text-xs',
+
+ ]
+ %}
+ {% for field in column.fields %}
+ {% set column_classes = column_classes|merge(['views-' ~ field]) %}
+ {% endfor %}
+ {% endif %}
+ {% if loop.first %}
+ {% set column_classes = [
+ 'block',
+ 'w-full',
+ 'text-white',
+ 'bg-utc-new-blue-400',
+ 'font-semibold',
+ 'text-lg',
+ 'mt-0',
+ 'mb-3',
+ 'px-5',
+ 'py-3',
+ 'xl:w-1/5',
+ 'xl:table-cell',
+ 'xl:border-b',
+ 'xl:border-l-0',
+ 'xl:border-r-0',
+ 'xl:text-gray-800',
+ 'xl:bg-white',
+ 'xl:text-sm',
+ 'xl:my-8',
+ 'xl:p-3',
+ ] %}
+ {% endif %}
+ {% if loop.last %}
+ {% set column_classes = column_classes|merge(['w-full', 'bg-gray-100', 'font-semibold', 'xl:bg-white', 'xl:w-auto', 'mt-3', 'mb-0', 'xl:my-8']) %}
+ {% endif %}
+
+ {{ header.content }}
+ {%- if column.wrapper_element -%}
+ <{{ column.wrapper_element }}>
+ {% for content in column.content %}
+ {{ content.separator }}{{ content.field_output }}
+ {% endfor %}
+ {{ column.wrapper_element }}>
+ {%- else -%}
+ {% for content in column.content %}
+
+ {{- content.separator }}{{ content.field_output -}}
+ {% endfor %}
+ {%- endif %}
+
+ {% endfor %}
+
+ {% endfor %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/views/views-view-table.html.twig b/apps/drupal-default/particle_theme/templates/views/views-view-table.html.twig
new file mode 100644
index 0000000000..5c3649d5bf
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-view-table.html.twig
@@ -0,0 +1,127 @@
+{#
+/**
+ * @file
+ * Theme override for displaying a view as a table.
+ *
+ * Available variables:
+ * - attributes: Remaining HTML attributes for the element.
+ * - class: HTML classes that can be used to style contextually through CSS.
+ * - title : The title of this group of rows.
+ * - header: The table header columns.
+ * - attributes: Remaining HTML attributes for the element.
+ * - content: HTML classes to apply to each header cell, indexed by
+ * the header's key.
+ * - default_classes: A flag indicating whether default classes should be
+ * used.
+ * - caption_needed: Is the caption tag needed.
+ * - caption: The caption for this table.
+ * - accessibility_description: Extended description for the table details.
+ * - accessibility_summary: Summary for the table details.
+ * - rows: Table row items. Rows are keyed by row number.
+ * - attributes: HTML classes to apply to each row.
+ * - columns: Row column items. Columns are keyed by column number.
+ * - attributes: HTML classes to apply to each column.
+ * - content: The column content.
+ * - default_classes: A flag indicating whether default classes should be
+ * used.
+ * - responsive: A flag indicating whether table is responsive.
+ * - sticky: A flag indicating whether table header is sticky.
+ *
+ * @see template_preprocess_views_view_table()
+ */
+#}
+{%
+ set classes = [
+ 'table',
+ 'views-table',
+ 'views-view-table',
+ 'cols-' ~ header|length,
+ responsive ? 'responsive-enabled',
+ sticky ? 'sticky-enabled',
+ ]
+%}
+
+ {% if caption_needed %}
+
+ {% if caption %}
+ {{ caption }}
+ {% else %}
+ {{ title }}
+ {% endif %}
+ {% if (summary is not empty) or (description is not empty) %}
+
+ {% if summary is not empty %}
+ {{ summary }}
+ {% endif %}
+ {% if description is not empty %}
+ {{ description }}
+ {% endif %}
+
+ {% endif %}
+
+ {% endif %}
+ {% if header %}
+
+
+ {% for key, column in header %}
+ {% if column.default_classes %}
+ {%
+ set column_classes = [
+ 'views-field',
+ 'views-field-' ~ fields[key],
+ ]
+ %}
+ {% endif %}
+
+ {%- if column.wrapper_element -%}
+ <{{ column.wrapper_element }}>
+ {%- if column.url -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {%- else -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {%- endif -%}
+ {{ column.wrapper_element }}>
+ {%- else -%}
+ {%- if column.url -%}
+ {{ column.content }}{{ column.sort_indicator }}
+ {%- else -%}
+ {{- column.content }}{{ column.sort_indicator }}
+ {%- endif -%}
+ {%- endif -%}
+
+ {% endfor %}
+
+
+ {% endif %}
+
+ {% for row in rows %}
+
+ {% for key, column in row.columns %}
+ {% if column.default_classes %}
+ {%
+ set column_classes = [
+ 'views-field'
+ ]
+ %}
+ {% for field in column.fields %}
+ {% set column_classes = column_classes|merge(['views-field-' ~ field]) %}
+ {% endfor %}
+ {% endif %}
+
+ {%- if column.wrapper_element -%}
+ <{{ column.wrapper_element }}>
+ {% for content in column.content %}
+ {{ content.separator }}{{ content.field_output }}
+ {% endfor %}
+ {{ column.wrapper_element }}>
+ {%- else -%}
+ {% for content in column.content %}
+ {{- content.separator }}{{ content.field_output -}}
+ {% endfor %}
+ {%- endif %}
+
+ {% endfor %}
+
+ {% endfor %}
+
+
diff --git a/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-directory.html.twig b/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-directory.html.twig
new file mode 100644
index 0000000000..81ce7685dc
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-directory.html.twig
@@ -0,0 +1,211 @@
+{#
+/**
+ * @file
+ * Theme override to display a view of unformatted rows.
+ *
+ * Available variables:
+ * - title: The title of this group of rows. May be empty.
+ * - rows: A list of the view's row items.
+ * - attributes: The row's HTML attributes.
+ * - content: The row's content.
+ * - view: The view object.
+ * - default_row_class: A flag indicating whether default classes should be
+ * used on rows.
+ *
+ * @see template_preprocess_views_view_unformatted()
+ */
+#}
+{# NOTES
+ related files:
+ docroot/modules/custom/utccloud/utccloud.module
+ - (preprocess for both twig files)
+ docroot/themes/custom/particle/apps/drupal-default/particle_theme/templates/views/views-exposed-form--utc-directory.html.twig
+ - this shows/hides the exposed filters based on variables in URL
+ docroot/themes/custom/particle/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-directory.html.twig
+ - this file - renders view content
+ #}
+{{ attach_library('utccloud/utc-directory') }}
+
+{% if title %}
+ {{ title }}
+{% endif %}
+{% for key,row in rows %}
+
+{# set variables #}
+ {%
+ set row_classes = [
+ default_row_class ? 'views-row employee-profile__grid',
+ ]
+ %}
+ {# set urls #}
+ {% set dept_url = view.style_plugin.getField(key, 'field_utc_organizational_section')|render|striptags|trim|lower|replace({" ":"-"}) %}
+ {% set profile_url = '' %} {# declare empty variable re/set #}
+ {% if profile != 'individual' %}{# profile cards in directory list #}
+ {# one option would be to check for body and render with a view -- creates url if a profile page is needed #}
+ {% if
+ ((view.style_plugin.getField(key, 'body')|render|striptags|trim is not empty) and (view.style_plugin.getField(key, 'field_mocs_id')|render|striptags|trim is not empty))
+ or
+ (view.style_plugin.getField(key, 'field_use_digital_measures')|render|striptags|trim == "On")
+ %}
+ {% set profile_url = '/directory/' ~ dept_url ~ '/' ~ view.style_plugin.getField(key, 'field_mocs_id')|render|striptags|trim %}
+ {% endif %}
+ {% if view.style_plugin.getField(key, 'field_employee_website')|render|striptags|trim is not empty %}
+ {% set profile_url = view.style_plugin.getField(key, 'field_employee_website')|render|striptags|trim %}
+ {% endif %}
+ {# if it is a profile card in the directory view, uses this html #}
+
+
+ {% if profile_url %}
+
+ {% endif %}
+
+
+ Image
+
+
+
+
+
+ {% if profile_url != '#' %}
+
+ {% endif %}
+
+
+ {% if profile_url %}
+
+ {% endif %}
+
+ {{ view.style_plugin.getField(key, 'field_employee_first_name') }} {{ view.style_plugin.getField(key, 'field_employee_last_name') }}
+
+ {% if profile_url %}
+
+ {% endif %}
+
+ {{ view.style_plugin.getField(key, 'field_employee_title') }}
+
+
+
+
+
+ {{ view.style_plugin.getField(key, 'field_utc_organizational_section')|render|striptags|trim }}
+
+
+
+ {% if view.style_plugin.getField(key, 'field_employee_email')|render|striptags|trim %}
+
+ {{ view.style_plugin.getField(key, 'field_employee_email') }}
+
+ {% endif %}
+ {% if view.style_plugin.getField(key, 'field_employee_office_location')|render|striptags|trim %}
+
+ {{ view.style_plugin.getField(key, 'field_employee_office_location') }}
+
+ {% endif %}
+ {% if view.style_plugin.getField(key, 'field_employee_telephone')|render|striptags|trim %}
+
+ {{ view.style_plugin.getField(key, 'field_employee_telephone') }}
+
+ {% endif %}
+
+
+ {% if profile_url %}
+
+
+ More
+
+
+ {% endif %}
+
+
+
+
+ {% else %} {# full page profile #}
+ {% set employee_body = view.style_plugin.getField(key, 'body') %}
+ {# test render DM#}
+ {% if view.style_plugin.getField(key, 'field_use_digital_measures')|render|striptags|trim == "On" %}
+ {{ attach_library('utccloud/utc-digitalmeasures2') }}
+
+ {% set employee_body = '' %}
+ {% set hide_profile = 'hidden' %}
+ {% endif %}
+ {# need to move this JS to external + add functionality to handle dept breadcrumb #}
+
+ {# if it is a profile page created in Drupal, uses this html #}
+
+{% if employee_body %}
+
+
+
+ {{ employee_body }}
+ {# this utcid could be used for DM script
+ {{ view.storage.executable.args[0] }}
+ #}
+
+{% endif %}
+ {% endif %}
+ {% if ( profile != 'all') and ( profile != 'individual') and ( key == 0 ) %}
+ {# need to move this JS to external + add functionality to handle dept breadcrumb #}
+ {% set dept_name = view.style_plugin.getField(key, 'field_utc_organizational_section')|render|striptags|trim %}
+
+ {% endif %}
+{% endfor %}
+ {% if profile == 'all' %}
+ {# need to move this JS to external + add functionality to handle dept breadcrumb #}
+
+ {% endif %}
diff --git a/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-library-employee-view.html.twig b/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-library-employee-view.html.twig
new file mode 100644
index 0000000000..c4f8955316
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/views/views-view-unformatted--utc-library-employee-view.html.twig
@@ -0,0 +1,108 @@
+{#
+/**
+ * @file
+ * Theme override to display a view of unformatted rows.
+ *
+ * Available variables:
+ * - title: The title of this group of rows. May be empty.
+ * - rows: A list of the view's row items.
+ * - attributes: The row's HTML attributes.
+ * - content: The row's content.
+ * - view: The view object.
+ * - default_row_class: A flag indicating whether default classes should be
+ * used on rows.
+ *
+ * @see template_preprocess_views_view_unformatted()
+ */
+#}
+{% if title %}
+ {{ title }}
+{% endif %}
+{% for key,row in rows %}
+ {%
+ set row_classes = [
+ default_row_class ? 'views-row employee-card__grid',
+ ]
+ %}
+{% set employee_body = '' %}
+ {% set profile_url = '' %} {# declare empty variable re/set #}
+ {% if view.storage.executable.args[0] == 'all' %}{# could use to check for indvidual view if utcid not set #}
+ {# one option would be to check for body and render with a view #}
+ {% if view.style_plugin.getField(key, 'body')|render|striptags|trim is not empty %}
+ {% set profile_url = site_url|render ~ '?utcid=' ~ view.style_plugin.getField(key, 'field_mocs_id')|render|striptags|trim ~ '&dept=' ~ view.style_plugin.getField(key, 'field_utc_department_3')|render|striptags|trim %}
+ {#
+ {% if view.style_plugin.getField(key, 'field_employee_website')|render|striptags|trim is not empty %}
+ {% set profile_url = view.style_plugin.getField(key, 'field_employee_website')|render|striptags|trim %}
+ #}
+ {% endif %}
+
+ ') {
return '/';
}
@@ -237,7 +241,7 @@ function ($title, $url, $attributes) {
*
* Https://www.drupal.org/node/2486991.
*/
- $url_function = new Twig_SimpleFunction('url', function ($string) {
+ $url_function = new TwigFunction('url', function ($string) {
return '#';
});
$env->addFunction($url_function);
@@ -249,10 +253,10 @@ function ($title, $url, $attributes) {
* To enable Twig Debugging, add this function's name to patternlab-config.json
* under engines.twig.alterTwigEnv.functions
*
- * @param Twig_Environment $env - The Twig Environment -
+ * @param Twig\Environment $env - The Twig Environment -
* https://twig.symfony.com/api/1.x/Twig_Environment.html
* @param $config - Config of `@basalt/twig-renderer`
*/
-function addDebug(\Twig_Environment &$env, $config) {
- $env->addExtension(new \Twig\Extension\DebugExtension());
+function addDebug(Environment &$env, $config) {
+ $env->addExtension(new DebugExtension());
}
diff --git a/apps/pl-default/patternlab-config.json b/apps/pl-default/patternlab-config.json
index e86361ba83..994ef1dd1d 100644
--- a/apps/pl-default/patternlab-config.json
+++ b/apps/pl-default/patternlab-config.json
@@ -21,9 +21,30 @@
"tools-docs": false
},
"ishViewportRange": {
- "s": [240, 500, 240, 500, 240, 500],
- "m": [500, 800, 500, 800, 500, 800],
- "l": [800, 2600, 800, 2600, 800, 2600]
+ "s": [
+ 240,
+ 500,
+ 240,
+ 500,
+ 240,
+ 500
+ ],
+ "m": [
+ 500,
+ 800,
+ 500,
+ 800,
+ 500,
+ 800
+ ],
+ "l": [
+ 800,
+ 2600,
+ 800,
+ 2600,
+ 800,
+ 2600
+ ]
},
"logLevel": "error",
"outputFileSuffixes": {
@@ -94,58 +115,82 @@
{
"id": "uikit",
"recursive": true,
- "paths": ["./node_modules/@pattern-lab/uikit-workshop/views-twig"]
+ "paths": [
+ "./node_modules/@pattern-lab/uikit-workshop/views-twig"
+ ]
},
{
"id": "protons",
"recursive": true,
- "paths": ["./source/default/_patterns/00-protons"]
+ "paths": [
+ "./source/default/_patterns/00-protons"
+ ]
},
{
"id": "atoms",
"recursive": true,
- "paths": ["source/default/_patterns/01-atoms"]
+ "paths": [
+ "source/default/_patterns/01-atoms"
+ ]
},
{
"id": "molecules",
"recursive": true,
- "paths": ["./source/default/_patterns/02-molecules"]
+ "paths": [
+ "./source/default/_patterns/02-molecules"
+ ]
},
{
"id": "organisms",
"recursive": true,
- "paths": ["./source/default/_patterns/03-organisms"]
+ "paths": [
+ "./source/default/_patterns/03-organisms"
+ ]
},
{
"id": "templates",
"recursive": true,
- "paths": ["./source/default/_patterns/04-templates"]
+ "paths": [
+ "./source/default/_patterns/04-templates"
+ ]
},
{
"id": "pages",
"recursive": true,
- "paths": ["./source/default/_patterns/05-pages"]
+ "paths": [
+ "./source/default/_patterns/05-pages"
+ ]
},
{
"id": "demo",
"recursive": true,
- "paths": ["./apps/pl-default/pattern-lab/_patterns/00-protons-demo"]
+ "paths": [
+ "./apps/pl-default/pattern-lab/_patterns/00-protons-demo"
+ ]
},
{
"id": "demos",
"recursive": true,
- "paths": ["./apps/pl-default/pattern-lab/_patterns"]
+ "paths": [
+ "./apps/pl-default/pattern-lab/_patterns"
+ ]
},
{
"id": "macros",
"recursive": true,
- "paths": ["./source/default/_macros"]
+ "paths": [
+ "./source/default/_macros"
+ ]
}
],
"alterTwigEnv": [
{
"file": "./apps/pl-default/pattern-lab/alter-twig.php",
- "functions": ["addFilters", "addFunctions", "addDebug"]
+ "functions": [
+ "addFilters",
+ "addFunctions",
+ "addDebug"
+ ]
}
]
}
diff --git a/dist/app-drupal/assets/app.js b/dist/app-drupal/assets/app.js
new file mode 100644
index 0000000000..1fc0070de7
--- /dev/null
+++ b/dist/app-drupal/assets/app.js
@@ -0,0 +1,3 @@
+/*! For license information please see app.js.LICENSE.txt */
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="app-drupal/assets/",n(n.s=166)}([function(t,e,n){var r=n(2),i=n(13).f,o=n(16),a=n(14),s=n(86),c=n(114),u=n(54);t.exports=function(t,e){var n,f,l,p,d,h=t.target,v=t.global,g=t.stat;if(n=v?r:g?r[h]||s(h,{}):(r[h]||{}).prototype)for(f in e){if(p=e[f],l=t.noTargetGet?(d=i(n,f))&&d.value:n[f],!u(v?f:h+(g?".":"#")+f,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;c(p,l)}(t.sham||l&&l.sham)&&o(p,"sham",!0),a(n,f,p,t)}}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")()}).call(this,n(40))},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(3);t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},function(t,e,n){var r=n(2),i=n(88),o=n(10),a=n(51),s=n(92),c=n(117),u=i("wks"),f=r.Symbol,l=c?f:f&&f.withoutSetter||a;t.exports=function(t){return o(u,t)||(s&&o(f,t)?u[t]=f[t]:u[t]=l("Symbol."+t)),u[t]}},function(t,e,n){var r=n(1);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,n){"use strict";var r,i=n(132),o=n(6),a=n(2),s=n(3),c=n(10),u=n(61),f=n(16),l=n(14),p=n(9).f,d=n(29),h=n(46),v=n(5),g=n(51),m=a.Int8Array,y=m&&m.prototype,b=a.Uint8ClampedArray,x=b&&b.prototype,w=m&&d(m),_=y&&d(y),S=Object.prototype,A=S.isPrototypeOf,k=v("toStringTag"),C=g("TYPED_ARRAY_TAG"),T=i&&!!h&&"Opera"!==u(a.opera),E=!1,O={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},j=function(t){return s(t)&&c(O,u(t))};for(r in O)a[r]||(T=!1);if((!T||"function"!=typeof w||w===Function.prototype)&&(w=function(){throw TypeError("Incorrect invocation")},T))for(r in O)a[r]&&h(a[r],w);if((!T||!_||_===S)&&(_=w.prototype,T))for(r in O)a[r]&&h(a[r].prototype,_);if(T&&d(x)!==_&&h(x,_),o&&!c(_,k))for(r in E=!0,p(_,k,{get:function(){return s(this)?this[C]:void 0}}),O)a[r]&&f(a[r],C,r);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:T,TYPED_ARRAY_TAG:E&&C,aTypedArray:function(t){if(j(t))return t;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(t){if(h){if(A.call(w,t))return t}else for(var e in O)if(c(O,r)){var n=a[e];if(n&&(t===n||A.call(n,t)))return t}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n){if(o){if(n)for(var r in O){var i=a[r];i&&c(i.prototype,t)&&delete i.prototype[t]}_[t]&&!n||l(_,t,n?e:T&&y[t]||e)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(o){if(h){if(n)for(r in O)(i=a[r])&&c(i,t)&&delete i[t];if(w[t]&&!n)return;try{return l(w,t,n?e:T&&m[t]||e)}catch(t){}}for(r in O)!(i=a[r])||i[t]&&!n||l(i,t,e)}},isView:function(t){var e=u(t);return"DataView"===e||c(O,e)},isTypedArray:j,TypedArray:w,TypedArrayPrototype:_}},function(t,e,n){var r=n(25),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(6),i=n(111),o=n(4),a=n(30),s=Object.defineProperty;e.f=r?s:function(t,e,n){if(o(t),e=a(e,!0),o(n),i)try{return s(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(15);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(36),i=n(50),o=n(11),a=n(8),s=n(57),c=[].push,u=function(t){var e=1==t,n=2==t,u=3==t,f=4==t,l=6==t,p=5==t||l;return function(d,h,v,g){for(var m,y,b=o(d),x=i(b),w=r(h,v,3),_=a(x.length),S=0,A=g||s,k=e?A(d,_):n?A(d,0):void 0;_>S;S++)if((p||S in x)&&(y=w(m=x[S],S,b),t))if(e)k[S]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return S;case 2:c.call(k,m)}else if(f)return!1;return l?-1:u||f?f:k}};t.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6)}},function(t,e,n){var r=n(6),i=n(66),o=n(34),a=n(18),s=n(30),c=n(10),u=n(111),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=s(e,!0),u)try{return f(t,e)}catch(t){}if(c(t,e))return o(!i.f.call(t,e),t[e])}},function(t,e,n){var r=n(2),i=n(16),o=n(10),a=n(86),s=n(87),c=n(19),u=c.get,f=c.enforce,l=String(String).split("String");(t.exports=function(t,e,n,s){var c=!!s&&!!s.unsafe,u=!!s&&!!s.enumerable,p=!!s&&!!s.noTargetGet;"function"==typeof n&&("string"!=typeof e||o(n,"name")||i(n,"name",e),f(n).source=l.join("string"==typeof e?e:"")),t!==r?(c?!p&&t[e]&&(u=!0):delete t[e],u?t[e]=n:i(t,e,n)):u?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||s(this)}))},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(6),i=n(9),o=n(34);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(6),i=n(1),o=n(10),a=Object.defineProperty,s={},c=function(t){throw t};t.exports=function(t,e){if(o(s,t))return s[t];e||(e={});var n=[][t],u=!!o(e,"ACCESSORS")&&e.ACCESSORS,f=o(e,0)?e[0]:c,l=o(e,1)?e[1]:void 0;return s[t]=!!n&&!i((function(){if(u&&!r)return!0;var t={length:-1};u?a(t,1,{enumerable:!0,get:c}):t[1]=1,n.call(t,f,l)}))}},function(t,e,n){var r=n(50),i=n(15);t.exports=function(t){return r(i(t))}},function(t,e,n){var r,i,o,a=n(113),s=n(2),c=n(3),u=n(16),f=n(10),l=n(67),p=n(52),d=s.WeakMap;if(a){var h=new d,v=h.get,g=h.has,m=h.set;r=function(t,e){return m.call(h,t,e),e},i=function(t){return v.call(h,t)||{}},o=function(t){return g.call(h,t)}}else{var y=l("state");p[y]=!0,r=function(t,e){return u(t,y,e),e},i=function(t){return f(t,y)?t[y]:{}},o=function(t){return f(t,y)}}t.exports={set:r,get:i,has:o,enforce:function(t){return o(t)?i(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){var r=n(115),i=n(10),o=n(121),a=n(9).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||a(e,t,{value:o.f(t)})}},function(t,e,n){var r=n(15),i=/"/g;t.exports=function(t,e,n,o){var a=String(r(t)),s="<"+e;return""!==n&&(s+=" "+n+'="'+String(o).replace(i,""")+'"'),s+">"+a+""+e+">"}},function(t,e,n){var r=n(1);t.exports=function(t){return r((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},function(t,e,n){"use strict";n(368),n(369),n(370),n(371),n(372),n(373),n(374),n(375),n(376),n(377),n(378),n(379),n(380),n(381),n(382),n(383),n(384),n(385),n(386),n(387),n(388),n(389),n(390),n(391),n(392),n(393),n(394),n(395),n(396),n(397),n(398),n(399),n(400),n(401),n(402),n(403),n(404),n(405),n(406),n(407),n(408),n(409),n(410),n(411),n(412)},function(t,e,n){(function(t){var n;function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(e,n){"use strict";"object"===r(t)&&"object"===r(t.exports)?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,(function(i,o){"use strict";var a=[],s=Object.getPrototypeOf,c=a.slice,u=a.flat?function(t){return a.flat.call(t)}:function(t){return a.concat.apply([],t)},f=a.push,l=a.indexOf,p={},d=p.toString,h=p.hasOwnProperty,v=h.toString,g=v.call(Object),m={},y=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType},b=function(t){return null!=t&&t===t.window},x=i.document,w={type:!0,src:!0,nonce:!0,noModule:!0};function _(t,e,n){var r,i,o=(n=n||x).createElement("script");if(o.text=t,e)for(r in w)(i=e[r]||e.getAttribute&&e.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function S(t){return null==t?t+"":"object"===r(t)||"function"==typeof t?p[d.call(t)]||"object":r(t)}var A=function t(e,n){return new t.fn.init(e,n)};function k(t){var e=!!t&&"length"in t&&t.length,n=S(t);return!y(t)&&!b(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}A.fn=A.prototype={jquery:"3.5.1",constructor:A,length:0,toArray:function(){return c.call(this)},get:function(t){return null==t?c.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=A.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return A.each(this,t)},map:function(t){return this.pushStack(A.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(c.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(A.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(A.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),W=new RegExp(P+"|>"),V=new RegExp(q),G=new RegExp("^"+D+"$"),X={ID:new RegExp("^#("+D+")"),CLASS:new RegExp("^\\.("+D+")"),TAG:new RegExp("^("+D+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\[\\da-fA-F]{1,6}"+P+"?|\\\\([^\\r\\n\\f])","g"),nt=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},rt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,it=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},ot=function(){p()},at=xt((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply(j=I.call(w.childNodes),w.childNodes),j[w.childNodes.length].nodeType}catch(t){L={apply:j.length?function(t,e){M.apply(t,I.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function st(t,e,r,i){var o,s,u,f,l,h,m,y=e&&e.ownerDocument,w=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(e),e=e||d,v)){if(11!==w&&(l=Z.exec(t)))if(o=l[1]){if(9===w){if(!(u=e.getElementById(o)))return r;if(u.id===o)return r.push(u),r}else if(y&&(u=y.getElementById(o))&&b(e,u)&&u.id===o)return r.push(u),r}else{if(l[2])return L.apply(r,e.getElementsByTagName(t)),r;if((o=l[3])&&n.getElementsByClassName&&e.getElementsByClassName)return L.apply(r,e.getElementsByClassName(o)),r}if(n.qsa&&!T[t+" "]&&(!g||!g.test(t))&&(1!==w||"object"!==e.nodeName.toLowerCase())){if(m=t,y=e,1===w&&(W.test(t)||z.test(t))){for((y=tt.test(t)&&mt(e.parentNode)||e)===e&&n.scope||((f=e.getAttribute("id"))?f=f.replace(rt,it):e.setAttribute("id",f=x)),s=(h=a(t)).length;s--;)h[s]=(f?"#"+f:":scope")+" "+bt(h[s]);m=h.join(",")}try{return L.apply(r,y.querySelectorAll(m)),r}catch(e){T(t,!0)}finally{f===x&&e.removeAttribute("id")}}}return c(t.replace(H,"$1"),e,r,i)}function ct(){var t=[];return function e(n,i){return t.push(n+" ")>r.cacheLength&&delete e[t.shift()],e[n+" "]=i}}function ut(t){return t[x]=!0,t}function ft(t){var e=d.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function lt(t,e){for(var n=t.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=e}function pt(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function dt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function ht(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function vt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&at(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function gt(t){return ut((function(e){return e=+e,ut((function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function mt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in n=st.support={},o=st.isXML=function(t){var e=t.namespaceURI,n=(t.ownerDocument||t).documentElement;return!Y.test(e||n&&n.nodeName||"HTML")},p=st.setDocument=function(t){var e,i,a=t?t.ownerDocument||t:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,v=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",ot,!1):i.attachEvent&&i.attachEvent("onunload",ot)),n.scope=ft((function(t){return h.appendChild(t).appendChild(d.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length})),n.attributes=ft((function(t){return t.className="i",!t.getAttribute("className")})),n.getElementsByTagName=ft((function(t){return t.appendChild(d.createComment("")),!t.getElementsByTagName("*").length})),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ft((function(t){return h.appendChild(t).id=x,!d.getElementsByName||!d.getElementsByName(x).length})),n.getById?(r.filter.ID=function(t){var e=t.replace(et,nt);return function(t){return t.getAttribute("id")===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&v){var n=e.getElementById(t);return n?[n]:[]}}):(r.filter.ID=function(t){var e=t.replace(et,nt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&v){var n,r,i,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(i=e.getElementsByName(t),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):n.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&v)return e.getElementsByClassName(t)},m=[],g=[],(n.qsa=Q.test(d.querySelectorAll))&&(ft((function(t){var e;h.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+R+")"),t.querySelectorAll("[id~="+x+"-]").length||g.push("~="),(e=d.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||g.push("\\["+P+"*name"+P+"*="+P+"*(?:''|\"\")"),t.querySelectorAll(":checked").length||g.push(":checked"),t.querySelectorAll("a#"+x+"+*").length||g.push(".#.+[+~]"),t.querySelectorAll("\\\f"),g.push("[\\r\\n\\f]")})),ft((function(t){t.innerHTML="";var e=d.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&g.push("name"+P+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=Q.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ft((function(t){n.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),m.push("!=",q)})),g=g.length&&new RegExp(g.join("|")),m=m.length&&new RegExp(m.join("|")),e=Q.test(h.compareDocumentPosition),b=e||Q.test(h.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},E=e?function(t,e){if(t===e)return l=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!n.sortDetached&&e.compareDocumentPosition(t)===r?t==d||t.ownerDocument==w&&b(w,t)?-1:e==d||e.ownerDocument==w&&b(w,e)?1:f?$(f,t)-$(f,e):0:4&r?-1:1)}:function(t,e){if(t===e)return l=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!i||!o)return t==d?-1:e==d?1:i?-1:o?1:f?$(f,t)-$(f,e):0;if(i===o)return pt(t,e);for(n=t;n=n.parentNode;)a.unshift(n);for(n=e;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pt(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},st.matches=function(t,e){return st(t,null,null,e)},st.matchesSelector=function(t,e){if(p(t),n.matchesSelector&&v&&!T[e+" "]&&(!m||!m.test(e))&&(!g||!g.test(e)))try{var r=y.call(t,e);if(r||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){T(e,!0)}return st(e,d,null,[t]).length>0},st.contains=function(t,e){return(t.ownerDocument||t)!=d&&p(t),b(t,e)},st.attr=function(t,e){(t.ownerDocument||t)!=d&&p(t);var i=r.attrHandle[e.toLowerCase()],o=i&&O.call(r.attrHandle,e.toLowerCase())?i(t,e,!v):void 0;return void 0!==o?o:n.attributes||!v?t.getAttribute(e):(o=t.getAttributeNode(e))&&o.specified?o.value:null},st.escape=function(t){return(t+"").replace(rt,it)},st.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},st.uniqueSort=function(t){var e,r=[],i=0,o=0;if(l=!n.detectDuplicates,f=!n.sortStable&&t.slice(0),t.sort(E),l){for(;e=t[o++];)e===t[o]&&(i=r.push(o));for(;i--;)t.splice(r[i],1)}return f=null,t},i=st.getText=function(t){var e,n="",r=0,o=t.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=i(t)}else if(3===o||4===o)return t.nodeValue}else for(;e=t[r++];)n+=i(e);return n},(r=st.selectors={cacheLength:50,createPseudo:ut,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,nt),t[3]=(t[3]||t[4]||t[5]||"").replace(et,nt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||st.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&st.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return X.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&V.test(n)&&(e=a(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,nt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=A[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&A(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(r){var i=st.attr(r,t);return null==i?"!="===e:!e||(i+="","="===e?i===n:"!="===e?i!==n:"^="===e?n&&0===i.indexOf(n):"*="===e?n&&i.indexOf(n)>-1:"$="===e?n&&i.slice(-n.length)===n:"~="===e?(" "+i.replace(U," ")+" ").indexOf(n)>-1:"|="===e&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,c){var u,f,l,p,d,h,v=o!==a?"nextSibling":"previousSibling",g=e.parentNode,m=s&&e.nodeName.toLowerCase(),y=!c&&!s,b=!1;if(g){if(o){for(;v;){for(p=e;p=p[v];)if(s?p.nodeName.toLowerCase()===m:1===p.nodeType)return!1;h=v="only"===t&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(b=(d=(u=(f=(l=(p=g)[x]||(p[x]={}))[p.uniqueID]||(l[p.uniqueID]={}))[t]||[])[0]===_&&u[1])&&u[2],p=d&&g.childNodes[d];p=++d&&p&&p[v]||(b=d=0)||h.pop();)if(1===p.nodeType&&++b&&p===e){f[t]=[_,d,b];break}}else if(y&&(b=d=(u=(f=(l=(p=e)[x]||(p[x]={}))[p.uniqueID]||(l[p.uniqueID]={}))[t]||[])[0]===_&&u[1]),!1===b)for(;(p=++d&&p&&p[v]||(b=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==m:1!==p.nodeType)||!++b||(y&&((f=(l=p[x]||(p[x]={}))[p.uniqueID]||(l[p.uniqueID]={}))[t]=[_,b]),p!==e)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(t,e){var n,i=r.pseudos[t]||r.setFilters[t.toLowerCase()]||st.error("unsupported pseudo: "+t);return i[x]?i(e):i.length>1?(n=[t,t,"",e],r.setFilters.hasOwnProperty(t.toLowerCase())?ut((function(t,n){for(var r,o=i(t,e),a=o.length;a--;)t[r=$(t,o[a])]=!(n[r]=o[a])})):function(t){return i(t,0,n)}):i}},pseudos:{not:ut((function(t){var e=[],n=[],r=s(t.replace(H,"$1"));return r[x]?ut((function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))})):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}})),has:ut((function(t){return function(e){return st(t,e).length>0}})),contains:ut((function(t){return t=t.replace(et,nt),function(e){return(e.textContent||i(e)).indexOf(t)>-1}})),lang:ut((function(t){return G.test(t||"")||st.error("unsupported lang: "+t),t=t.replace(et,nt).toLowerCase(),function(e){var n;do{if(n=v?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===h},focus:function(t){return t===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:vt(!1),disabled:vt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!r.pseudos.empty(t)},header:function(t){return J.test(t.nodeName)},input:function(t){return K.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:gt((function(){return[0]})),last:gt((function(t,e){return[e-1]})),eq:gt((function(t,e,n){return[n<0?n+e:n]})),even:gt((function(t,e){for(var n=0;ne?e:n;--r>=0;)t.push(r);return t})),gt:gt((function(t,e,n){for(var r=n<0?n+e:n;++r1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function _t(t,e,n,r,i){for(var o,a=[],s=0,c=t.length,u=null!=e;s-1&&(o[u]=!(a[u]=l))}}else m=_t(m===a?m.splice(h,m.length):m),i?i(null,a,m,c):L.apply(a,m)}))}function At(t){for(var e,n,i,o=t.length,a=r.relative[t[0].type],s=a||r.relative[" "],c=a?1:0,f=xt((function(t){return t===e}),s,!0),l=xt((function(t){return $(e,t)>-1}),s,!0),p=[function(t,n,r){var i=!a&&(r||n!==u)||((e=n).nodeType?f(t,n,r):l(t,n,r));return e=null,i}];c1&&wt(p),c>1&&bt(t.slice(0,c-1).concat({value:" "===t[c-2].type?"*":""})).replace(H,"$1"),n,c0,i=t.length>0,o=function(o,a,s,c,f){var l,h,g,m=0,y="0",b=o&&[],x=[],w=u,S=o||i&&r.find.TAG("*",f),A=_+=null==w?1:Math.random()||.1,k=S.length;for(f&&(u=a==d||a||f);y!==k&&null!=(l=S[y]);y++){if(i&&l){for(h=0,a||l.ownerDocument==d||(p(l),s=!v);g=t[h++];)if(g(l,a||d,s)){c.push(l);break}f&&(_=A)}n&&((l=!g&&l)&&m--,o&&b.push(l))}if(m+=y,n&&y!==m){for(h=0;g=e[h++];)g(b,x,a,s);if(o){if(m>0)for(;y--;)b[y]||x[y]||(x[y]=N.call(c));x=_t(x)}L.apply(c,x),f&&!o&&x.length>0&&m+e.length>1&&st.uniqueSort(c)}return f&&(_=A,u=w),b};return n?ut(o):o}(o,i))).selector=t}return s},c=st.select=function(t,e,n,i){var o,c,u,f,l,p="function"==typeof t&&t,d=!i&&a(t=p.selector||t);if(n=n||[],1===d.length){if((c=d[0]=d[0].slice(0)).length>2&&"ID"===(u=c[0]).type&&9===e.nodeType&&v&&r.relative[c[1].type]){if(!(e=(r.find.ID(u.matches[0].replace(et,nt),e)||[])[0]))return n;p&&(e=e.parentNode),t=t.slice(c.shift().value.length)}for(o=X.needsContext.test(t)?0:c.length;o--&&(u=c[o],!r.relative[f=u.type]);)if((l=r.find[f])&&(i=l(u.matches[0].replace(et,nt),tt.test(c[0].type)&&mt(e.parentNode)||e))){if(c.splice(o,1),!(t=i.length&&bt(c)))return L.apply(n,i),n;break}}return(p||s(t,d))(i,e,!v,n,!e||tt.test(t)&&mt(e.parentNode)||e),n},n.sortStable=x.split("").sort(E).join("")===x,n.detectDuplicates=!!l,p(),n.sortDetached=ft((function(t){return 1&t.compareDocumentPosition(d.createElement("fieldset"))})),ft((function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")}))||lt("type|href|height|width",(function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)})),n.attributes&&ft((function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")}))||lt("value",(function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue})),ft((function(t){return null==t.getAttribute("disabled")}))||lt(R,(function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null})),st}(i);A.find=C,(A.expr=C.selectors)[":"]=A.expr.pseudos,A.uniqueSort=A.unique=C.uniqueSort,A.text=C.getText,A.isXMLDoc=C.isXML,A.contains=C.contains,A.escapeSelector=C.escape;var T=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&A(t).is(n))break;r.push(t)}return r},E=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},O=A.expr.match.needsContext;function j(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function M(t,e,n){return y(e)?A.grep(t,(function(t,r){return!!e.call(t,r,t)!==n})):e.nodeType?A.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?A.grep(t,(function(t){return l.call(e,t)>-1!==n})):A.filter(e,t,n)}A.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?A.find.matchesSelector(r,t)?[r]:[]:A.find.matches(t,A.grep(e,(function(t){return 1===t.nodeType})))},A.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(A(t).filter((function(){for(e=0;e1?A.uniqueSort(n):n},filter:function(t){return this.pushStack(M(this,t||[],!1))},not:function(t){return this.pushStack(M(this,t||[],!0))},is:function(t){return!!M(this,"string"==typeof t&&O.test(t)?A(t):t||[],!1).length}});var L,I=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(A.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||L,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:I.exec(t))||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof A?e[0]:e,A.merge(this,A.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:x,!0)),N.test(r[1])&&A.isPlainObject(e))for(r in e)y(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return(i=x.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(A):A.makeArray(t,this)}).prototype=A.fn,L=A(x);var $=/^(?:parents|prev(?:Until|All))/,R={children:!0,contents:!0,next:!0,prev:!0};function P(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}A.fn.extend({has:function(t){var e=A(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&A.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?A.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?l.call(A(t),this[0]):l.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(A.uniqueSort(A.merge(this.get(),A(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),A.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return T(t,"parentNode")},parentsUntil:function(t,e,n){return T(t,"parentNode",n)},next:function(t){return P(t,"nextSibling")},prev:function(t){return P(t,"previousSibling")},nextAll:function(t){return T(t,"nextSibling")},prevAll:function(t){return T(t,"previousSibling")},nextUntil:function(t,e,n){return T(t,"nextSibling",n)},prevUntil:function(t,e,n){return T(t,"previousSibling",n)},siblings:function(t){return E((t.parentNode||{}).firstChild,t)},children:function(t){return E(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(j(t,"template")&&(t=t.content||t),A.merge([],t.childNodes))}},(function(t,e){A.fn[t]=function(n,r){var i=A.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=A.filter(r,i)),this.length>1&&(R[t]||A.uniqueSort(i),$.test(t)&&i.reverse()),this.pushStack(i)}}));var D=/[^\x20\t\r\n\f]+/g;function F(t){return t}function q(t){throw t}function U(t,e,n,r){var i;try{t&&y(i=t.promise)?i.call(t).done(e).fail(n):t&&y(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}A.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return A.each(t.match(D)||[],(function(t,n){e[n]=!0})),e}(t):A.extend({},t);var e,n,r,i,o=[],a=[],s=-1,c=function(){for(i=i||t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(t){return t?A.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=[t,(n=n||[]).slice?n.slice():n],a.push(n),e||c()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},A.extend({Deferred:function(t){var e=[["notify","progress",A.Callbacks("memory"),A.Callbacks("memory"),2],["resolve","done",A.Callbacks("once memory"),A.Callbacks("once memory"),0,"resolved"],["reject","fail",A.Callbacks("once memory"),A.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return a.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return A.Deferred((function(n){A.each(e,(function(e,r){var i=y(t[r[4]])&&t[r[4]];a[r[1]]((function(){var t=i&&i.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var a=0;function s(t,e,n,o){return function(){var c=this,u=arguments,f=function(){var i,f;if(!(t=a&&(n!==q&&(c=void 0,u=[r]),e.rejectWith(c,u))}};t?l():(A.Deferred.getStackHook&&(l.stackTrace=A.Deferred.getStackHook()),i.setTimeout(l))}}return A.Deferred((function(r){e[0][3].add(s(0,r,y(o)?o:F,r.notifyWith)),e[1][3].add(s(0,r,y(t)?t:F)),e[2][3].add(s(0,r,y(n)?n:q))})).promise()},promise:function(t){return null!=t?A.extend(t,o):o}},a={};return A.each(e,(function(t,r){var i=r[2],s=r[5];o[r[1]]=i.add,s&&i.add((function(){n=s}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),i.add(r[3].fire),a[r[0]]=function(){return a[r[0]+"With"](this===a?void 0:this,arguments),this},a[r[0]+"With"]=i.fireWith})),o.promise(a),t&&t.call(a,a),a},when:function(t){var e=arguments.length,n=e,r=Array(n),i=c.call(arguments),o=A.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?c.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(U(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||y(i[n]&&i[n].then)))return o.then();for(;n--;)U(i[n],a(n),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;A.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&H.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},A.readyException=function(t){i.setTimeout((function(){throw t}))};var B=A.Deferred();function z(){x.removeEventListener("DOMContentLoaded",z),i.removeEventListener("load",z),A.ready()}A.fn.ready=function(t){return B.then(t).catch((function(t){A.readyException(t)})),this},A.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--A.readyWait:A.isReady)||(A.isReady=!0,!0!==t&&--A.readyWait>0||B.resolveWith(x,[A]))}}),A.ready.then=B.then,"complete"===x.readyState||"loading"!==x.readyState&&!x.documentElement.doScroll?i.setTimeout(A.ready):(x.addEventListener("DOMContentLoaded",z),i.addEventListener("load",z));var W=function t(e,n,r,i,o,a,s){var c=0,u=e.length,f=null==r;if("object"===S(r))for(c in o=!0,r)t(e,n,c,r[c],!0,a,s);else if(void 0!==i&&(o=!0,y(i)||(s=!0),f&&(s?(n.call(e,i),n=null):(f=n,n=function(t,e,n){return f.call(A(t),n)})),n))for(;c1,null,!0)},removeData:function(t){return this.each((function(){Z.remove(this,t)}))}}),A.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=Q.get(t,e),n&&(!r||Array.isArray(n)?r=Q.access(t,e,A.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){var n=A.queue(t,e=e||"fx"),r=n.length,i=n.shift(),o=A._queueHooks(t,e);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,(function(){A.dequeue(t,e)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Q.get(t,n)||Q.access(t,n,{empty:A.Callbacks("once memory").add((function(){Q.remove(t,[e+"queue",n])}))})}}),A.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,yt=/^$|^module$|\/(?:java|ecma)script/i;ht=x.createDocumentFragment().appendChild(x.createElement("div")),(vt=x.createElement("input")).setAttribute("type","radio"),vt.setAttribute("checked","checked"),vt.setAttribute("name","t"),ht.appendChild(vt),m.checkClone=ht.cloneNode(!0).cloneNode(!0).lastChild.checked,ht.innerHTML="",m.noCloneChecked=!!ht.cloneNode(!0).lastChild.defaultValue,ht.innerHTML="",m.option=!!ht.lastChild;var bt={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function xt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&j(t,e)?A.merge([t],n):n}function wt(t,e){for(var n=0,r=t.length;n",""]);var _t=/<|?\w+;/;function St(t,e,n,r,i){for(var o,a,s,c,u,f,l=e.createDocumentFragment(),p=[],d=0,h=t.length;d-1)i&&i.push(o);else if(u=st(o),a=xt(l.appendChild(o),"script"),u&&wt(a),n)for(f=0;o=a[f++];)yt.test(o.type||"")&&n.push(o);return l}var At=/^key/,kt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ct=/^([^.]*)(?:\.(.+)|)/;function Tt(){return!0}function Et(){return!1}function Ot(t,e){return t===function(){try{return x.activeElement}catch(t){}}()==("focus"===e)}function jt(t,e,n,i,o,a){var s,c;if("object"===r(e)){for(c in"string"!=typeof n&&(i=i||n,n=void 0),e)jt(t,c,n,i,e[c],a);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=Et;else if(!o)return t;return 1===a&&(s=o,(o=function(t){return A().off(t),s.apply(this,arguments)}).guid=s.guid||(s.guid=A.guid++)),t.each((function(){A.event.add(this,e,o,i,n)}))}function Nt(t,e,n){n?(Q.set(t,e,!1),A.event.add(t,e,{namespace:!1,handler:function(t){var r,i,o=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(o.length)(A.event.special[e]||{}).delegateType&&t.stopPropagation();else if(o=c.call(arguments),Q.set(this,e,o),r=n(this,e),this[e](),o!==(i=Q.get(this,e))||r?Q.set(this,e,!1):i={},o!==i)return t.stopImmediatePropagation(),t.preventDefault(),i.value}else o.length&&(Q.set(this,e,{value:A.event.trigger(A.extend(o[0],A.Event.prototype),o.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&A.event.add(t,e,Tt)}A.event={global:{},add:function(t,e,n,r,i){var o,a,s,c,u,f,l,p,d,h,v,g=Q.get(t);if(K(t))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&A.find.matchesSelector(at,i),n.guid||(n.guid=A.guid++),(c=g.events)||(c=g.events=Object.create(null)),(a=g.handle)||(a=g.handle=function(e){return void 0!==A&&A.event.triggered!==e.type?A.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(D)||[""]).length;u--;)d=v=(s=Ct.exec(e[u])||[])[1],h=(s[2]||"").split(".").sort(),d&&(l=A.event.special[d]||{},d=(i?l.delegateType:l.bindType)||d,l=A.event.special[d]||{},f=A.extend({type:d,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&A.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=c[d])||((p=c[d]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),l.add&&(l.add.call(t,f),f.handler.guid||(f.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,f):p.push(f),A.event.global[d]=!0)},remove:function(t,e,n,r,i){var o,a,s,c,u,f,l,p,d,h,v,g=Q.hasData(t)&&Q.get(t);if(g&&(c=g.events)){for(u=(e=(e||"").match(D)||[""]).length;u--;)if(d=v=(s=Ct.exec(e[u])||[])[1],h=(s[2]||"").split(".").sort(),d){for(l=A.event.special[d]||{},p=c[d=(r?l.delegateType:l.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)f=p[o],!i&&v!==f.origType||n&&n.guid!==f.guid||s&&!s.test(f.namespace)||r&&r!==f.selector&&("**"!==r||!f.selector)||(p.splice(o,1),f.selector&&p.delegateCount--,l.remove&&l.remove.call(t,f));a&&!p.length&&(l.teardown&&!1!==l.teardown.call(t,h,g.handle)||A.removeEvent(t,d,g.handle),delete c[d])}else for(d in c)A.event.remove(t,d+e[u],n,r,!0);A.isEmptyObject(c)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=new Array(arguments.length),c=A.event.fix(t),u=(Q.get(this,"events")||Object.create(null))[c.type]||[],f=A.event.special[c.type]||{};for(s[0]=c,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:A.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,c\s*$/g;function $t(t,e){return j(t,"table")&&j(11!==e.nodeType?e:e.firstChild,"tr")&&A(t).children("tbody")[0]||t}function Rt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Pt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Dt(t,e){var n,r,i,o,a,s;if(1===e.nodeType){if(Q.hasData(t)&&(s=Q.get(t).events))for(i in Q.remove(e,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"==typeof h&&!m.checkClone&&Lt.test(h))return t.each((function(i){var o=t.eq(i);v&&(e[0]=h.call(this,i,o.html())),qt(o,e,n,r)}));if(p&&(o=(i=St(e,t[0].ownerDocument,!1,t,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=A.map(xt(i,"script"),Rt)).length;l
diff --git a/apps/pl-default/pattern-lab/alter-twig.php b/apps/pl-default/pattern-lab/alter-twig.php
index 0c548f634b..fe9c04208c 100644
--- a/apps/pl-default/pattern-lab/alter-twig.php
+++ b/apps/pl-default/pattern-lab/alter-twig.php
@@ -1,17 +1,21 @@
addFilter($clean_class_filter);
@@ -21,7 +25,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $clean_id_filter = new Twig_SimpleFilter('clean_id', function ($string) {
+ $clean_id_filter = new TwigFilter('clean_id', function ($string) {
return $string;
});
$env->addFilter($clean_id_filter);
@@ -31,7 +35,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $format_date_filter = new Twig_SimpleFilter('format_date', function ($string) {
+ $format_date_filter = new TwigFilter('format_date', function ($string) {
return $string;
});
$env->addFilter($format_date_filter);
@@ -52,7 +56,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return float
*/
- $luma_filter = new Twig_SimpleFilter('luma', function ($rgba) {
+ $luma_filter = new TwigFilter('luma', function ($rgba) {
// Doesn't handle alpha, yet.
return 0.2126 * $rgba['r'] + 0.7152 * $rgba['g'] + 0.0722 * $rgba['b'];
});
@@ -66,7 +70,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @param string $color a hex color value with or without leading hash(#)
*/
- $hex_to_rgba_filter = new Twig_SimpleFilter('hex_to_rgba', function ($color) {
+ $hex_to_rgba_filter = new TwigFilter('hex_to_rgba', function ($color) {
$default = 'rgba(0,0,0)';
// If "#" is provided, drop it
@@ -108,7 +112,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $placeholder_filter = new Twig_SimpleFilter('placeholder', function ($string) {
+ $placeholder_filter = new TwigFilter('placeholder', function ($string) {
return $string;
});
$env->addFilter($placeholder_filter);
@@ -118,7 +122,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $render_filter = new Twig_SimpleFilter('render', function ($string) {
+ $render_filter = new TwigFilter('render', function ($string) {
return $string;
});
$env->addFilter($render_filter);
@@ -128,7 +132,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $rgba_string_filter = new Twig_SimpleFilter('rgba_string', function ($string) {
+ $rgba_string_filter = new TwigFilter('rgba_string', function ($string) {
$rgba = trim(str_replace(' ', '', $string));
if (stripos($rgba, 'rgba') !== FALSE) {
$res = sscanf($rgba, "rgba(%d, %d, %d, %f)");
@@ -146,7 +150,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $safe_join_filter = new Twig_SimpleFilter('safe_join', function ($string) {
+ $safe_join_filter = new TwigFilter('safe_join', function ($string) {
return $string;
});
$env->addFilter($safe_join_filter);
@@ -156,7 +160,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $t_filter = new Twig_SimpleFilter('t', function ($string) {
+ $t_filter = new TwigFilter('t', function ($string) {
return $string;
});
$env->addFilter($t_filter);
@@ -166,7 +170,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $without_filter = new Twig_SimpleFilter('without', function ($string) {
+ $without_filter = new TwigFilter('without', function ($string) {
return $string;
});
$env->addFilter($without_filter);
@@ -176,7 +180,7 @@ function addFilters(\Twig_Environment &$env, $config) {
*
* @return string
*/
- $attributify_filter = new Twig_SimpleFilter('attributify', function ($attributes) {
+ $attributify_filter = new TwigFilter('attributify', function ($attributes) {
// if we already have attributes as a renderable string, return.
if (is_string($attributes)) {
return $attributes;
@@ -198,12 +202,12 @@ function addFilters(\Twig_Environment &$env, $config) {
$env->addFilter($attributify_filter);
}
-function addFunctions(\Twig_Environment &$env, $config) {
+function addFunctions(Environment &$env, $config) {
/**
* Link
*
*/
- $link_function = new Twig_SimpleFunction(
+ $link_function = new TwigFunction(
'link',
function ($title, $url, $attributes) {
if (isset($attributes) && isset($attributes['class'])) {
@@ -222,7 +226,7 @@ function ($title, $url, $attributes) {
* Path
*
*/
- $path_function = new Twig_SimpleFunction('path', function ($string) {
+ $path_function = new TwigFunction('path', function ($string) {
if ($string === '
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--utclib-brandbar-menu.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--utclib-brandbar-menu.html.twig
new file mode 100644
index 0000000000..f88e110b67
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--utclib-brandbar-menu.html.twig
@@ -0,0 +1,69 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--utc-sidemenu.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-sidemenu.html.twig
new file mode 100644
index 0000000000..f303906b05
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-sidemenu.html.twig
@@ -0,0 +1,79 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--utc-people-sidenav.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-people-sidenav.html.twig
new file mode 100644
index 0000000000..76144bff6e
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-people-sidenav.html.twig
@@ -0,0 +1,55 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--utc-brandbar-menu.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-brandbar-menu.html.twig
new file mode 100644
index 0000000000..5c45ee0ca9
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--utc-brandbar-menu.html.twig
@@ -0,0 +1,74 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% endif %}
+{% endmacro %} #}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--shortcuts.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--shortcuts.html.twig
new file mode 100644
index 0000000000..0f68b3fa54
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--shortcuts.html.twig
@@ -0,0 +1,55 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% endif %}
+{% endmacro %}
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--main.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--main.html.twig
new file mode 100644
index 0000000000..abd30dfb67
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--main.html.twig
@@ -0,0 +1,56 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{# might not be needed anymore #}
+{# {% import _self as menus %} #}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{# {{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {% endif %}
+{% endmacro %}
+
+
+{# it allows the active state to have a hover over #}
+ {# .menu-item-topmenu .is-active:hover {
+ background-color: #F6E05E;
+ color: #112e51;
+ } #}
\ No newline at end of file
diff --git a/apps/drupal-default/particle_theme/templates/navigation/menu--info-for.html.twig b/apps/drupal-default/particle_theme/templates/navigation/menu--info-for.html.twig
new file mode 100644
index 0000000000..3dadbdba96
--- /dev/null
+++ b/apps/drupal-default/particle_theme/templates/navigation/menu--info-for.html.twig
@@ -0,0 +1,55 @@
+{#
+/**
+ * @file
+ * Theme override to display a menu.
+ *
+ * Available variables:
+ * - menu_name: The machine name of the menu.
+ * - items: A nested list of menu items. Each menu item contains:
+ * - attributes: HTML attributes for the menu item.
+ * - below: The menu item child items.
+ * - title: The menu link title.
+ * - url: The menu link url, instance of \Drupal\Core\Url
+ * - localized_options: Menu link localized options.
+ * - is_expanded: TRUE if the link has visible children within the current
+ * menu tree.
+ * - is_collapsed: TRUE if the link has children within the current menu tree
+ * that are not currently visible.
+ * - in_active_trail: TRUE if the link is in the active trail.
+ */
+#}
+{% import _self as menus %}
+
+{#
+ We call a macro which calls itself to render the full tree.
+ @see https://twig.symfony.com/doc/1.x/tags/macro.html
+#}
+{{ menus.menu_links(items, attributes, 0) }}
+
+{% macro menu_links(items, attributes, menu_level) %}
+ {% import _self as menus %}
+ {% if items %}
+ {% if menu_level == 0 %}
+
+ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} +{{ question }}
+ {% else %} +{{ results_title }}
+ {% endif %} +{{ question }}
+ {% endif %} + {{ form.choice }} + {{ form.actions }} +-
+ {% else %}
+
- + {% if item.in_active_trail %} + + {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag).setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }} + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1, item.attributes.setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }} + {% endif %} + {% else %} + {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag).setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }} + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1, item.attributes.setAttribute('title', link_title).setAttribute('aria-label', arialabel).setAttribute('role', role)) }} + {% endif %} + {% endif %} + + {% endfor %} +
- + {% if item.in_active_trail %} + + {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag)) }} + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + {% else %} + {{ link(item.title, item.url, item.attributes.removeClass(listitem).addClass(menulinktag)) }} + {% if item.below %} + {{ menus.menu_links(item.below, attributes, menu_level + 1) }} + {% endif %} + {% endif %} + + {% endfor %} +
-
+ {% else %}
+
-
+ {% else %}
+
-
+ {% else %}
+
-
+ {% else %}
+
-
+ {% endif %}
+ {% for item in items %}
+
+ {%
+ set listitem = [
+ 'menu-item border-b border-gray-300 flex items-center hover:bg-utc-new-blue-100 w-full',
+ item.is_expanded ? 'menu-item--expanded',
+ item.is_collapsed ? 'menu-item--collapsed',
+ item.in_active_trail ? 'menu-item--active-trail bg-utc-new-blue-100',
+ ]
+ %}
+ {%
+ set menulinktag = [
+ 'text-base border-0 py-4 w-full pl-3 bg-transparent',
+ item.in_active_trail ? 'menu-link--active-trail font-bold',
+ ]
+ %}
+ {% set arialabel = item.link_title|default(item.title)|e %}
+ {% set role = 'link' %}
+ {% set link_title = item.title|clean_class %}
+
+
-
+ {% else %}
+
-
+ {% else %}
+
-
+ {% else %}
+
-
+ {% else %}
+
-
+ {% endif %}
+ {% for item in items %}
+ {%
+ set listitem = [
+ 'menu-item border-b border-gray-300 flex items-center hover:bg-utc-new-blue-100 w-full',
+ item.is_expanded ? 'menu-item--expanded',
+ item.is_collapsed ? 'menu-item--collapsed',
+ item.in_active_trail ? 'menu-item--active-trail bg-utc-new-blue-100',
+ ]
+ %}
+ {%
+ set menulinktag = [
+ 'text-base border-0 py-4 w-full pl-3 bg-transparent',
+ item.in_active_trail ? 'menu-link--active-trail font-bold',
+ ]
+ %}
+
- {{ 'Primary tabs'|t }} -
--
- {{ primary }}
-
{{ 'Primary tabs'|t }}
+- {{ primary }}
- {{ 'Secondary tabs'|t }} -
--
- {{ secondary }}
-
{{ 'Secondary tabs'|t }}
+- {{ secondary }}
+ {{ label }} +
+ {% endif %} + {{ title_suffix }} + + {% if display_submitted %} + + {% endif %} + ++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + + {% if display_submitted %} + + {% endif %} + ++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + + {% if display_submitted %} + + {% endif %} + ++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#+ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#Which type of student are you?
+ + + + + +Transient
++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#+ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#How can we help?
+ +UT Taleo
+UTC Policies
+New Employees
+UT System HR
++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#+ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} ++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#Who are you?
+ + ++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#+ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} + {#Physical Therapy
+ {#With HTML5 Video and Bootstrap 4
#} ++ {{ label }} +
+ {% endif %} + {{ title_suffix }} + {% block content %} +{{ title }}
+ {% endif %} + + {{ page.highlighted }} + + {{ page.content }} +{{ user.getDisplayName }}
+ {{ content|without('user_picture', 'field_facebook', 'field_twitter', 'field_google_plus', 'field_instagram', 'field_linkedin', 'field_pinterest') }} +{{ 'Account informations'|t }}
#} +{#+ {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {%- if column.url -%} + {{ column.content }}{{ column.sort_indicator }} + {%- else -%} + {%- if column is not empty -%} + {{ column.content }}{{ column.sort_indicator }} + {% endif %} + {%- endif -%} + {{ column.wrapper_element }}> + {%- else -%} + {%- if column.url -%} + {{ column.content }}{{ column.sort_indicator }} + {%- else -%} + {%- if column.content is not empty -%} + {{- column.content }}{{ column.sort_indicator }} + {% endif %} + {%- endif -%} + {%- endif -%} + | + {% endfor %} +
---|
+ {{ header.content }} + {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {% for content in column.content %} + {{ content.separator }}{{ content.field_output }} + {% endfor %} + {{ column.wrapper_element }}> + {%- else -%} + {% for content in column.content %} + + {{- content.separator }}{{ content.field_output -}} + {% endfor %} + {%- endif %} + | + {% endfor %} +
+ {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {%- if column.url -%} + {{ column.content }}{{ column.sort_indicator }} + {%- else -%} + {{ column.content }}{{ column.sort_indicator }} + {%- endif -%} + {{ column.wrapper_element }}> + {%- else -%} + {%- if column.url -%} + {{ column.content }}{{ column.sort_indicator }} + {%- else -%} + {{- column.content }}{{ column.sort_indicator }} + {%- endif -%} + {%- endif -%} + | + {% endfor %} +
---|
+ {%- if column.wrapper_element -%} + <{{ column.wrapper_element }}> + {% for content in column.content %} + {{ content.separator }}{{ content.field_output }} + {% endfor %} + {{ column.wrapper_element }}> + {%- else -%} + {% for content in column.content %} + {{- content.separator }}{{ content.field_output -}} + {% endfor %} + {%- endif %} + | + {% endfor %} +
{{ title }}
+{% endif %} +{% for key,row in rows %} + +{# set variables #} + {% + set row_classes = [ + default_row_class ? 'views-row employee-profile__grid', + ] + %} + {# set urls #} + {% set dept_url = view.style_plugin.getField(key, 'field_utc_organizational_section')|render|striptags|trim|lower|replace({" ":"-"}) %} + {% set profile_url = '' %} {# declare empty variable re/set #} + {% if profile != 'individual' %}{# profile cards in directory list #} + {# one option would be to check for body and render with a view -- creates url if a profile page is needed #} + {% if + ((view.style_plugin.getField(key, 'body')|render|striptags|trim is not empty) and (view.style_plugin.getField(key, 'field_mocs_id')|render|striptags|trim is not empty)) + or + (view.style_plugin.getField(key, 'field_use_digital_measures')|render|striptags|trim == "On") + %} + {% set profile_url = '/directory/' ~ dept_url ~ '/' ~ view.style_plugin.getField(key, 'field_mocs_id')|render|striptags|trim %} + {% endif %} + {% if view.style_plugin.getField(key, 'field_employee_website')|render|striptags|trim is not empty %} + {% set profile_url = view.style_plugin.getField(key, 'field_employee_website')|render|striptags|trim %} + {% endif %} + {# if it is a profile card in the directory view, uses this html #} ++ {{ view.style_plugin.getField(key, 'field_employee_first_name') }} {{ view.style_plugin.getField(key, 'field_employee_last_name') }} +
+ {% if profile_url %} + + {% endif %} ++ {{ view.style_plugin.getField(key, 'field_employee_title') }} +
++ + {{ view.style_plugin.getField(key, 'field_utc_organizational_section')|render|striptags|trim }} +
++ {{ view.style_plugin.getField(key, 'field_employee_email') }} +
+ {% endif %} + {% if view.style_plugin.getField(key, 'field_employee_office_location')|render|striptags|trim %} ++ {{ view.style_plugin.getField(key, 'field_employee_office_location') }} +
+ {% endif %} + {% if view.style_plugin.getField(key, 'field_employee_telephone')|render|striptags|trim %} ++ {{ view.style_plugin.getField(key, 'field_employee_telephone') }} +
+ {% endif %} ++ + More + +
+ {% endif %} +