diff --git a/project/composer.json b/project/composer.json
index e749a1c..4afb6db 100644
--- a/project/composer.json
+++ b/project/composer.json
@@ -16,9 +16,12 @@
],
"require": {
"composer/installers": "^2.3",
+ "drupal/admin_toolbar": "^3.5",
"drupal/core-composer-scaffold": "^11.0",
"drupal/core-project-message": "^11.0",
"drupal/core-recommended": "^11.0",
+ "drupal/devel": "^5.3",
+ "drupal/paragraphs": "^1.19",
"drush/drush": "^13.2"
},
"require-dev": {
diff --git a/project/composer.lock b/project/composer.lock
index 799dde6..68aa256 100644
--- a/project/composer.lock
+++ b/project/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "199b3fe4b0a6003344a470743556494d",
+ "content-hash": "00535072b30182812509dd7b5955c6f1",
"packages": [
{
"name": "asm89/stack-cors",
@@ -962,6 +962,97 @@
},
"time": "2024-09-05T10:17:24+00:00"
},
+ {
+ "name": "doctrine/common",
+ "version": "3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5",
+ "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/persistence": "^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9.0 || ^10.0",
+ "doctrine/collections": "^1",
+ "phpstan/phpstan": "^1.4.1",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.0",
+ "symfony/phpunit-bridge": "^6.1",
+ "vimeo/psalm": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.",
+ "homepage": "https://www.doctrine-project.org/projects/common.html",
+ "keywords": [
+ "common",
+ "doctrine",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/common/issues",
+ "source": "https://github.com/doctrine/common/tree/3.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-01-01T22:12:03+00:00"
+ },
{
"name": "doctrine/deprecations",
"version": "1.1.4",
@@ -1007,6 +1098,97 @@
},
"time": "2024-12-07T21:18:45+00:00"
},
+ {
+ "name": "doctrine/event-manager",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/event-manager.git",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.1"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.8.8",
+ "phpunit/phpunit": "^10.5",
+ "vimeo/psalm": "^5.24"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
+ "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
+ "keywords": [
+ "event",
+ "event dispatcher",
+ "event manager",
+ "event system",
+ "events"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/event-manager/issues",
+ "source": "https://github.com/doctrine/event-manager/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-22T20:47:39+00:00"
+ },
{
"name": "doctrine/lexer",
"version": "2.1.1",
@@ -1085,6 +1267,190 @@
],
"time": "2024-02-05T11:35:39+00:00"
},
+ {
+ "name": "doctrine/persistence",
+ "version": "4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/persistence.git",
+ "reference": "45004aca79189474f113cbe3a53847c2115a55fa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa",
+ "reference": "45004aca79189474f113cbe3a53847c2115a55fa",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/event-manager": "^1 || ^2",
+ "php": "^8.1",
+ "psr/cache": "^1.0 || ^2.0 || ^3.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.10"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "1.12.7",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "phpunit/phpunit": "^9.6",
+ "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Persistence\\": "src/Persistence"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ }
+ ],
+ "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
+ "homepage": "https://www.doctrine-project.org/projects/persistence.html",
+ "keywords": [
+ "mapper",
+ "object",
+ "odm",
+ "orm",
+ "persistence"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/persistence/issues",
+ "source": "https://github.com/doctrine/persistence/tree/4.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-11-01T21:49:07+00:00"
+ },
+ {
+ "name": "drupal/admin_toolbar",
+ "version": "3.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/admin_toolbar.git",
+ "reference": "3.5.3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.5.3.zip",
+ "reference": "3.5.3",
+ "shasum": "363cdd6e6ca47983900f40793edf9a8b26f132bb"
+ },
+ "require": {
+ "drupal/core": "^9.5 || ^10 || ^11"
+ },
+ "require-dev": {
+ "drupal/admin_toolbar_tools": "*"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "3.5.3",
+ "datestamp": "1740156799",
+ "security-coverage": {
+ "status": "covered",
+ "message": "Covered by Drupal's security advisory policy"
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Wilfrid Roze (eme)",
+ "homepage": "https://www.drupal.org/u/eme",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Romain Jarraud (romainj)",
+ "homepage": "https://www.drupal.org/u/romainj",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Adrian Cid Almaguer (adriancid)",
+ "homepage": "https://www.drupal.org/u/adriancid",
+ "email": "adriancid@gmail.com",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Mohamed Anis Taktak (matio89)",
+ "homepage": "https://www.drupal.org/u/matio89",
+ "role": "Maintainer"
+ },
+ {
+ "name": "fethi.krout",
+ "homepage": "https://www.drupal.org/user/3206765"
+ },
+ {
+ "name": "japerry",
+ "homepage": "https://www.drupal.org/user/45640"
+ },
+ {
+ "name": "matio89",
+ "homepage": "https://www.drupal.org/user/2320090"
+ },
+ {
+ "name": "musa.thomas",
+ "homepage": "https://www.drupal.org/user/1213824"
+ },
+ {
+ "name": "romainj",
+ "homepage": "https://www.drupal.org/user/370706"
+ }
+ ],
+ "description": "Provides a drop-down menu interface to the core Drupal Toolbar.",
+ "homepage": "http://drupal.org/project/admin_toolbar",
+ "keywords": [
+ "Drupal",
+ "Toolbar"
+ ],
+ "support": {
+ "source": "https://git.drupalcode.org/project/admin_toolbar",
+ "issues": "https://www.drupal.org/project/issues/admin_toolbar"
+ }
+ },
{
"name": "drupal/core",
"version": "11.1.5",
@@ -1430,6 +1796,213 @@
},
"time": "2025-03-19T15:53:25+00:00"
},
+ {
+ "name": "drupal/devel",
+ "version": "5.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/devel.git",
+ "reference": "5.3.1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/devel-5.3.1.zip",
+ "reference": "5.3.1",
+ "shasum": "6a5f13bdf93dc5f7f194b6af847589ae15e37b63"
+ },
+ "require": {
+ "doctrine/common": "^2.7 || ^3.4",
+ "drupal/core": "^10.3 || ^11 || ^12",
+ "php": ">=8.1",
+ "symfony/var-dumper": "^4 || ^5 || ^6 || ^7"
+ },
+ "conflict": {
+ "drupal/core": "<10.3",
+ "drush/drush": "<12.5.1",
+ "kint-php/kint": "<3"
+ },
+ "require-dev": {
+ "drush/drush": "^13",
+ "firephp/firephp-core": "^0.5.3",
+ "kint-php/kint": "^5.1"
+ },
+ "suggest": {
+ "kint-php/kint": "Kint provides an informative display of arrays/objects. Useful for debugging and developing."
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "5.3.1",
+ "datestamp": "1723258446",
+ "security-coverage": {
+ "status": "covered",
+ "message": "Covered by Drupal's security advisory policy"
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "moshe weitzman",
+ "homepage": "https://www.drupal.org/user/23"
+ }
+ ],
+ "description": "Various blocks, pages, and functions for developers.",
+ "homepage": "https://www.drupal.org/project/devel",
+ "support": {
+ "source": "https://gitlab.com/drupalspoons/devel",
+ "issues": "https://gitlab.com/drupalspoons/devel/-/issues",
+ "slack": "https://drupal.slack.com/archives/C012WAW1MH6"
+ }
+ },
+ {
+ "name": "drupal/entity_reference_revisions",
+ "version": "1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/entity_reference_revisions.git",
+ "reference": "8.x-1.12"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/entity_reference_revisions-8.x-1.12.zip",
+ "reference": "8.x-1.12",
+ "shasum": "2a2ff8617c7ce01b56df1caaf0a563da04948e26"
+ },
+ "require": {
+ "drupal/core": "^9 || ^10 || ^11"
+ },
+ "require-dev": {
+ "drupal/diff": "^1 || ^2"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "8.x-1.12",
+ "datestamp": "1722804497",
+ "security-coverage": {
+ "status": "covered",
+ "message": "Covered by Drupal's security advisory policy"
+ }
+ },
+ "drush": {
+ "services": {
+ "drush.services.yml": "^9 || ^10 || ^11"
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "berdir",
+ "homepage": "https://www.drupal.org/user/214652"
+ },
+ {
+ "name": "Frans",
+ "homepage": "https://www.drupal.org/user/514222"
+ },
+ {
+ "name": "jeroen.b",
+ "homepage": "https://www.drupal.org/user/1853532"
+ },
+ {
+ "name": "miro_dietiker",
+ "homepage": "https://www.drupal.org/user/227761"
+ }
+ ],
+ "description": "Entity Reference Revisions",
+ "homepage": "https://www.drupal.org/project/entity_reference_revisions",
+ "support": {
+ "source": "https://git.drupalcode.org/project/entity_reference_revisions"
+ }
+ },
+ {
+ "name": "drupal/paragraphs",
+ "version": "1.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://git.drupalcode.org/project/paragraphs.git",
+ "reference": "8.x-1.19"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.19.zip",
+ "reference": "8.x-1.19",
+ "shasum": "831a81a11eac419e8410db45efef5b283c4d117c"
+ },
+ "require": {
+ "drupal/core": "^10.2 || ^11",
+ "drupal/entity_reference_revisions": "~1.3"
+ },
+ "require-dev": {
+ "drupal/block_field": "1.x-dev",
+ "drupal/diff": "1.x-dev",
+ "drupal/entity_browser": "2.x-dev",
+ "drupal/entity_usage": "2.x-dev",
+ "drupal/feeds": "^3",
+ "drupal/field_group": "3.x-dev",
+ "drupal/inline_entity_form": "3.x-dev",
+ "drupal/paragraphs-paragraphs_library": "*",
+ "drupal/replicate": "1.x-dev",
+ "drupal/search_api": "^1",
+ "drupal/search_api_db": "*"
+ },
+ "suggest": {
+ "drupal/entity_browser": "Recommended for an improved user experience when using the Paragraphs library module"
+ },
+ "type": "drupal-module",
+ "extra": {
+ "drupal": {
+ "version": "8.x-1.19",
+ "datestamp": "1740907076",
+ "security-coverage": {
+ "status": "covered",
+ "message": "Covered by Drupal's security advisory policy"
+ }
+ }
+ },
+ "notification-url": "https://packages.drupal.org/8/downloads",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "berdir",
+ "homepage": "https://www.drupal.org/user/214652"
+ },
+ {
+ "name": "frans",
+ "homepage": "https://www.drupal.org/user/514222"
+ },
+ {
+ "name": "jeroen.b",
+ "homepage": "https://www.drupal.org/user/1853532"
+ },
+ {
+ "name": "jstoller",
+ "homepage": "https://www.drupal.org/user/99012"
+ },
+ {
+ "name": "miro_dietiker",
+ "homepage": "https://www.drupal.org/user/227761"
+ },
+ {
+ "name": "primsi",
+ "homepage": "https://www.drupal.org/user/282629"
+ }
+ ],
+ "description": "Enables the creation of Paragraphs entities.",
+ "homepage": "https://www.drupal.org/project/paragraphs",
+ "support": {
+ "source": "https://git.drupalcode.org/project/paragraphs"
+ }
+ },
{
"name": "drush/drush",
"version": "13.3.3",
diff --git a/project/config/core.extension.yml b/project/config/core.extension.yml
index b28fba1..51dc10a 100644
--- a/project/config/core.extension.yml
+++ b/project/config/core.extension.yml
@@ -42,8 +42,8 @@ module:
user: 0
views_ui: 0
views: 10
- standard: 1000
+ minimal: 1000
theme:
olivero: 0
claro: 0
-profile: standard
+profile: minimal
diff --git a/project/web/themes/custom/drupalcon/README.md b/project/web/themes/custom/drupalcon/README.md
new file mode 100644
index 0000000..3b54eca
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/README.md
@@ -0,0 +1 @@
+drupalcon theme, generated from starterkit_theme. Additional information on generating themes can be found in the [Starterkit documentation](https://www.drupal.org/docs/core-modules-and-themes/core-themes/starterkit-theme).
\ No newline at end of file
diff --git a/project/web/themes/custom/drupalcon/components/card/card.component.yml b/project/web/themes/custom/drupalcon/components/card/card.component.yml
new file mode 100644
index 0000000..d313171
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/components/card/card.component.yml
@@ -0,0 +1,26 @@
+name: Card
+props:
+ type: object
+ properties:
+ image_url:
+ type: string
+ title: Image URL
+ examples:
+ - https://kittenimages.com/400/300
+ title:
+ type: string
+ title: Title
+ examples:
+ - Title of the card
+ body:
+ type: string
+ title: Body
+ examples:
+ - Body of the card
+ slots:
+ headerSlot:
+ title: Header Slot
+ description: Header of the card
+ bodySlot:
+ title: Body Slot
+ description: Body of the card
\ No newline at end of file
diff --git a/project/web/themes/custom/drupalcon/components/card/card.twig b/project/web/themes/custom/drupalcon/components/card/card.twig
new file mode 100644
index 0000000..6f2b47d
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/components/card/card.twig
@@ -0,0 +1,23 @@
+
+
+{% block headerSlot %}
+
+ {% if image_url %}
+
+ {% endif %}
+
+{% endblock headerSlot %}
+
+{% block bodySlot %}
+
+ {% if title %}
+
{{ title }}
+ {% endif %}
+
+ {% if body %}
+
{{ body }}
+ {% endif %}
+
+{% endblock bodySlot %}
+
+
\ No newline at end of file
diff --git a/project/web/themes/custom/drupalcon/css/components/action-links.css b/project/web/themes/custom/drupalcon/css/components/action-links.css
new file mode 100644
index 0000000..7e648df
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/action-links.css
@@ -0,0 +1,43 @@
+/**
+ * @file
+ * Styles for link buttons and action links.
+ */
+
+.action-links {
+ margin: 1em 0;
+ padding: 0;
+ list-style: none;
+}
+[dir="rtl"] .action-links {
+ /* This is required to win over specificity of [dir="rtl"] ul */
+ margin-right: 0;
+}
+.action-links li {
+ display: inline-block;
+ margin: 0 0.3em;
+}
+.action-links li:first-child {
+ margin-left: 0; /* LTR */
+}
+[dir="rtl"] .action-links li:first-child {
+ margin-right: 0;
+ margin-left: 0.3em;
+}
+.button-action {
+ display: inline-block;
+ padding: 0.2em 0.5em 0.3em;
+ text-decoration: none;
+ line-height: 160%;
+}
+.button-action::before {
+ margin-left: -0.1em; /* LTR */
+ padding-right: 0.2em; /* LTR */
+ content: "+";
+ font-weight: 900;
+}
+[dir="rtl"] .button-action::before {
+ margin-right: -0.1em;
+ margin-left: 0;
+ padding-right: 0;
+ padding-left: 0.2em;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/breadcrumb.css b/project/web/themes/custom/drupalcon/css/components/breadcrumb.css
new file mode 100644
index 0000000..1a20eaf
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/breadcrumb.css
@@ -0,0 +1,29 @@
+/**
+ * @file
+ * Styles for breadcrumbs.
+ */
+
+.breadcrumb {
+ padding-bottom: 0.5em;
+}
+.breadcrumb ol {
+ margin: 0;
+ padding: 0;
+}
+[dir="rtl"] .breadcrumb ol {
+ /* This is required to win over specificity of [dir="rtl"] ol */
+ margin-right: 0;
+}
+.breadcrumb li {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+/* IE8 does not support :not() and :last-child. */
+.breadcrumb li::before {
+ content: " \BB ";
+}
+.breadcrumb li:first-child::before {
+ content: none;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/button.css b/project/web/themes/custom/drupalcon/css/components/button.css
new file mode 100644
index 0000000..5eb4f1a
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/button.css
@@ -0,0 +1,15 @@
+/**
+ * @file
+ * Visual styles for buttons.
+ */
+
+.button,
+.image-button {
+ margin-right: 1em;
+ margin-left: 1em;
+}
+.button:first-child,
+.image-button:first-child {
+ margin-right: 0;
+ margin-left: 0;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/container-inline.css b/project/web/themes/custom/drupalcon/css/components/container-inline.css
new file mode 100644
index 0000000..1a91f17
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/container-inline.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Inline items.
+ */
+
+.container-inline label::after,
+.container-inline .label::after {
+ content: ":";
+}
+.form-type-radios .container-inline label::after,
+.form-type-checkboxes .container-inline label::after {
+ content: "";
+}
+.form-type-radios .container-inline .form-type-radio,
+.form-type-checkboxes .container-inline .form-type-checkbox {
+ margin: 0 1em;
+}
+.container-inline .form-actions,
+.container-inline.form-actions {
+ margin-top: 0;
+ margin-bottom: 0;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/details.css b/project/web/themes/custom/drupalcon/css/components/details.css
new file mode 100644
index 0000000..b4165dc
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/details.css
@@ -0,0 +1,20 @@
+/**
+ * @file
+ * Collapsible details.
+ *
+ * @see collapse.js
+ * @see http://nicolasgallagher.com/css-background-image-hacks/
+ */
+
+details {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ border: 1px solid #ccc;
+}
+details > .details-wrapper {
+ padding: 0.5em 1.5em;
+}
+summary {
+ padding: 0.2em 0.5em;
+ cursor: pointer;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/dialog.css b/project/web/themes/custom/drupalcon/css/components/dialog.css
new file mode 100644
index 0000000..aca6afe
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/dialog.css
@@ -0,0 +1,73 @@
+/**
+ * @file
+ * Presentational styles for Drupal dialogs.
+ */
+
+.ui-dialog {
+ position: absolute;
+ z-index: 1260;
+ overflow: visible;
+ padding: 0;
+ color: #000;
+ border: solid 1px #ccc;
+ background: #fff;
+}
+
+@media all and (max-width: 48em) {
+ /* 768px */
+ .ui-dialog {
+ width: 92% !important;
+ }
+}
+.ui-dialog .ui-dialog-titlebar {
+ border-width: 0 0 1px 0;
+ border-style: solid;
+ border-color: #ccc;
+ border-radius: 0;
+ background: #f3f4ee;
+ font-weight: bold;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+ border: 0;
+ background: none;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ margin-top: 0;
+ padding: 0.3em 1em;
+ border-width: 1px 0 0 0;
+ border-color: #ccc;
+ background: #f3f4ee;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ margin: 0;
+ padding: 0;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-button-text-only .ui-button-text {
+ padding: 0;
+}
+
+/* Form action buttons are moved in dialogs. Remove empty space. */
+.ui-dialog .ui-dialog-content .form-actions {
+ margin: 0;
+ padding: 0;
+}
+.ui-dialog .ajax-progress-throbber {
+ position: fixed;
+ z-index: 1000;
+ top: 48.5%;
+ /* Can't do center:50% middle: 50%, so approximate it for a typical window size. */
+ left: 49%;
+ width: 24px;
+ height: 24px;
+ padding: 4px;
+ opacity: 0.9;
+ border-radius: 7px;
+ background-color: #232323;
+ background-image: url(../../images/icons/loading-small.svg);
+ background-repeat: no-repeat;
+ background-position: center center;
+}
+.ui-dialog .ajax-progress-throbber .throbber,
+.ui-dialog .ajax-progress-throbber .message {
+ display: none;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/dropbutton.css b/project/web/themes/custom/drupalcon/css/components/dropbutton.css
new file mode 100644
index 0000000..5e971ba
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/dropbutton.css
@@ -0,0 +1,33 @@
+/**
+ * @file
+ * General styles for dropbuttons.
+ */
+
+.js .dropbutton-widget {
+ border: 1px solid #ccc;
+ background-color: white;
+}
+.js .dropbutton-widget:hover {
+ border-color: #b8b8b8;
+}
+.dropbutton .dropbutton-action > * {
+ padding: 0.1em 0.5em;
+ white-space: nowrap;
+}
+.dropbutton .secondary-action {
+ border-top: 1px solid #e8e8e8;
+}
+.dropbutton-multiple .dropbutton {
+ border-right: 1px solid #e8e8e8; /* LTR */
+}
+[dir="rtl"] .dropbutton-multiple .dropbutton {
+ border-right: 0 none;
+ border-left: 1px solid #e8e8e8;
+}
+.dropbutton-multiple .dropbutton .dropbutton-action > * {
+ margin-right: 0.25em; /* LTR */
+}
+[dir="rtl"] .dropbutton-multiple .dropbutton .dropbutton-action > * {
+ margin-right: 0;
+ margin-left: 0.25em;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/exposed-filters.css b/project/web/themes/custom/drupalcon/css/components/exposed-filters.css
new file mode 100644
index 0000000..b686902
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/exposed-filters.css
@@ -0,0 +1,46 @@
+/**
+ * @file
+ * Visual styles for exposed filters.
+ */
+
+.exposed-filters .filters {
+ float: left; /* LTR */
+ margin-right: 1em; /* LTR */
+}
+[dir="rtl"] .exposed-filters .filters {
+ float: right;
+ margin-right: 0;
+ margin-left: 1em;
+}
+.exposed-filters .form-item {
+ margin: 0 0 0.1em 0;
+ padding: 0;
+}
+.exposed-filters .form-item label {
+ float: left; /* LTR */
+ width: 10em;
+ font-weight: normal;
+}
+[dir="rtl"] .exposed-filters .form-item label {
+ float: right;
+}
+.exposed-filters .form-select {
+ width: 14em;
+}
+/* Current filters */
+.exposed-filters .current-filters {
+ margin-bottom: 1em;
+}
+.exposed-filters .current-filters .placeholder {
+ font-weight: bold;
+ font-style: normal;
+}
+.exposed-filters .additional-filters {
+ float: left; /* LTR */
+ margin-right: 1em; /* LTR */
+}
+[dir="rtl"] .exposed-filters .additional-filters {
+ float: right;
+ margin-right: 0;
+ margin-left: 1em;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/field.css b/project/web/themes/custom/drupalcon/css/components/field.css
new file mode 100644
index 0000000..ff7e9ab
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/field.css
@@ -0,0 +1,25 @@
+/**
+ * @file
+ * Visual styles for fields.
+ */
+
+.field__label {
+ font-weight: bold;
+}
+.field--label-inline .field__label,
+.field--label-inline .field__items {
+ float: left; /* LTR */
+}
+.field--label-inline .field__label,
+.field--label-inline > .field__item,
+.field--label-inline .field__items {
+ padding-right: 0.5em;
+}
+[dir="rtl"] .field--label-inline .field__label,
+[dir="rtl"] .field--label-inline .field__items {
+ padding-right: 0;
+ padding-left: 0.5em;
+}
+.field--label-inline .field__label::after {
+ content: ":";
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/file.css b/project/web/themes/custom/drupalcon/css/components/file.css
new file mode 100644
index 0000000..9aa90eb
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/file.css
@@ -0,0 +1,62 @@
+/**
+ * @file
+ * Default style for file module.
+ */
+
+/* File icons. */
+
+.file {
+ display: inline-block;
+ min-height: 16px;
+ padding-left: 20px; /* LTR */
+ background-repeat: no-repeat;
+ background-position: left center; /* LTR */
+}
+[dir="rtl"] .file {
+ padding-right: 20px;
+ padding-left: inherit;
+ background-position: right center;
+}
+.file--general,
+.file--application-octet-stream {
+ background-image: url(../../images/icons/application-octet-stream.png);
+}
+.file--package-x-generic {
+ background-image: url(../../images/icons/package-x-generic.png);
+}
+.file--x-office-spreadsheet {
+ background-image: url(../../images/icons/x-office-spreadsheet.png);
+}
+.file--x-office-document {
+ background-image: url(../../images/icons/x-office-document.png);
+}
+.file--x-office-presentation {
+ background-image: url(../../images/icons/x-office-presentation.png);
+}
+.file--text-x-script {
+ background-image: url(../../images/icons/text-x-script.png);
+}
+.file--text-html {
+ background-image: url(../../images/icons/text-html.png);
+}
+.file--text-plain {
+ background-image: url(../../images/icons/text-plain.png);
+}
+.file--application-pdf {
+ background-image: url(../../images/icons/application-pdf.png);
+}
+.file--application-x-executable {
+ background-image: url(../../images/icons/application-x-executable.png);
+}
+.file--audio {
+ background-image: url(../../images/icons/audio-x-generic.png);
+}
+.file--video {
+ background-image: url(../../images/icons/video-x-generic.png);
+}
+.file--text {
+ background-image: url(../../images/icons/text-x-generic.png);
+}
+.file--image {
+ background-image: url(../../images/icons/image-x-generic.png);
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/form.css b/project/web/themes/custom/drupalcon/css/components/form.css
new file mode 100644
index 0000000..d53d31f
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/form.css
@@ -0,0 +1,104 @@
+/**
+ * @file
+ * Visual styles for form components.
+ */
+
+form .field-multiple-table {
+ margin: 0;
+}
+form .field-multiple-table .field-multiple-drag {
+ width: 30px;
+ padding-right: 0; /* LTR */
+}
+[dir="rtl"] form .field-multiple-table .field-multiple-drag {
+ padding-left: 0;
+}
+form .field-multiple-table .field-multiple-drag .tabledrag-handle {
+ padding-right: 0.5em; /* LTR */
+}
+[dir="rtl"] form .field-multiple-table .field-multiple-drag .tabledrag-handle {
+ padding-right: 0;
+ padding-left: 0.5em;
+}
+form .field-add-more-submit {
+ margin: 0.5em 0 0;
+}
+
+/**
+ * Markup generated by Form API.
+ */
+.form-item,
+.form-actions {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+tr.odd .form-item,
+tr.even .form-item {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.form-composite > .fieldset-wrapper > .description,
+.form-item .description {
+ font-size: 0.85em;
+}
+label.option {
+ display: inline;
+ font-weight: normal;
+}
+.form-composite > legend,
+.label {
+ display: inline;
+ margin: 0;
+ padding: 0;
+ font-size: inherit;
+ font-weight: bold;
+}
+.form-checkboxes .form-item,
+.form-radios .form-item {
+ margin-top: 0.4em;
+ margin-bottom: 0.4em;
+}
+.form-type-radio .description,
+.form-type-checkbox .description {
+ margin-left: 2.4em; /* LTR */
+}
+[dir="rtl"] .form-type-radio .description,
+[dir="rtl"] .form-type-checkbox .description {
+ margin-right: 2.4em;
+ margin-left: 0;
+}
+.marker {
+ color: #e00;
+}
+.form-required::after {
+ display: inline-block;
+ width: 6px;
+ height: 6px;
+ margin: 0 0.3em;
+ content: "";
+ vertical-align: super;
+ /* Use a background image to prevent screen readers from announcing the text. */
+ background-image: url(../../images/icons/required.svg);
+ background-repeat: no-repeat;
+ background-size: 6px 6px;
+}
+abbr.tabledrag-changed,
+abbr.ajax-changed {
+ border-bottom: none;
+}
+.form-item input.error,
+.form-item textarea.error,
+.form-item select.error {
+ border: 2px solid red;
+}
+
+/* Inline error messages. */
+.form-item--error-message::before {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ content: "";
+ vertical-align: sub;
+ background: url(../../images/icons/error.svg) no-repeat;
+ background-size: contain;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/icons.css b/project/web/themes/custom/drupalcon/css/components/icons.css
new file mode 100644
index 0000000..2733758
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/icons.css
@@ -0,0 +1,21 @@
+/**
+ * @file
+ * Visual styles for icons.
+ */
+
+.icon-help {
+ padding: 1px 0 1px 20px; /* LTR */
+ background: url(../../images/icons/help.png) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .icon-help {
+ padding: 1px 20px 1px 0;
+ background-position: 100% 50%;
+}
+.feed-icon {
+ display: block;
+ overflow: hidden;
+ width: 16px;
+ height: 16px;
+ text-indent: -9999px;
+ background: url(../../images/icons/feed.svg) no-repeat;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/image-widget.css b/project/web/themes/custom/drupalcon/css/components/image-widget.css
new file mode 100644
index 0000000..72e52a2
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/image-widget.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Image upload widget.
+ */
+
+.image-preview {
+ float: left; /* LTR */
+ padding: 0 10px 10px 0; /* LTR */
+}
+[dir="rtl"] .image-preview {
+ float: right;
+ padding: 0 0 10px 10px;
+}
+.image-widget-data {
+ float: left; /* LTR */
+}
+[dir="rtl"] .image-widget-data {
+ float: right;
+}
+.image-widget-data .text-field {
+ width: auto;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/indented.css b/project/web/themes/custom/drupalcon/css/components/indented.css
new file mode 100644
index 0000000..65ae061
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/indented.css
@@ -0,0 +1,15 @@
+/**
+ * @file
+ * Basic styling for comment module.
+ */
+
+/**
+ * Indent threaded comments.
+ */
+.indented {
+ margin-left: 25px; /* LTR */
+}
+[dir="rtl"] .indented {
+ margin-right: 25px;
+ margin-left: 0;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/inline-form.css b/project/web/themes/custom/drupalcon/css/components/inline-form.css
new file mode 100644
index 0000000..b5201a7
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/inline-form.css
@@ -0,0 +1,33 @@
+/**
+ * @file
+ * Visual styles for inline forms.
+ */
+
+.form--inline .form-item {
+ float: left; /* LTR */
+ margin-right: 0.5em; /* LTR */
+}
+[dir="rtl"] .form--inline .form-item {
+ float: right;
+ margin-right: 0;
+ margin-left: 0.5em;
+}
+/* This is required to win over specificity of [dir="rtl"] .form--inline .form-item */
+[dir="rtl"] .views-filterable-options-controls .form-item {
+ margin-right: 2%;
+}
+.form--inline .form-item-separator {
+ margin-top: 2.3em;
+ margin-right: 1em; /* LTR */
+ margin-left: 0.5em; /* LTR */
+}
+[dir="rtl"] .form--inline .form-item-separator {
+ margin-right: 0.5em;
+ margin-left: 1em;
+}
+.form--inline .form-actions {
+ clear: left; /* LTR */
+}
+[dir="rtl"] .form--inline .form-actions {
+ clear: right;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/item-list.css b/project/web/themes/custom/drupalcon/css/components/item-list.css
new file mode 100644
index 0000000..a8ce5d2
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/item-list.css
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * Visual styles for item list.
+ */
+
+.item-list .title {
+ font-weight: bold;
+}
+.item-list ul {
+ margin: 0 0 0.75em 0;
+ padding: 0;
+}
+.item-list li {
+ margin: 0 0 0.25em 1.5em; /* LTR */
+ padding: 0;
+}
+[dir="rtl"] .item-list li {
+ margin: 0 1.5em 0.25em 0;
+}
+
+/**
+ * Comma separated lists.
+ */
+.item-list--comma-list {
+ display: inline;
+}
+.item-list--comma-list .item-list__comma-list,
+.item-list__comma-list li,
+[dir="rtl"] .item-list--comma-list .item-list__comma-list,
+[dir="rtl"] .item-list__comma-list li {
+ margin: 0;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/link.css b/project/web/themes/custom/drupalcon/css/components/link.css
new file mode 100644
index 0000000..fa83f2b
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/link.css
@@ -0,0 +1,16 @@
+/**
+ * @file
+ * Style another element as a link.
+ */
+
+button.link {
+ margin: 0;
+ padding: 0;
+ cursor: pointer;
+ border: 0;
+ background: transparent;
+ font-size: 1em;
+}
+label button.link {
+ font-weight: bold;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/links.css b/project/web/themes/custom/drupalcon/css/components/links.css
new file mode 100644
index 0000000..e483253
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/links.css
@@ -0,0 +1,23 @@
+/**
+ * @file
+ * Visual styles for links.
+ */
+
+ul.inline,
+ul.links.inline {
+ display: inline;
+ padding-left: 0; /* LTR */
+}
+[dir="rtl"] ul.inline,
+[dir="rtl"] ul.links.inline {
+ padding-right: 0;
+ padding-left: 15px;
+}
+ul.inline li {
+ display: inline;
+ padding: 0 0.5em;
+ list-style-type: none;
+}
+ul.links a.is-active {
+ color: #000;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/menu.css b/project/web/themes/custom/drupalcon/css/components/menu.css
new file mode 100644
index 0000000..df73324
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/menu.css
@@ -0,0 +1,34 @@
+/**
+ * @file
+ * Visual styles for menu.
+ */
+
+ul.menu {
+ margin-left: 1em; /* LTR */
+ padding: 0;
+ list-style: none outside;
+ text-align: left; /* LTR */
+}
+[dir="rtl"] ul.menu {
+ margin-right: 1em;
+ margin-left: 0;
+ text-align: right;
+}
+.menu-item--expanded {
+ list-style-type: circle;
+ list-style-image: url(../../images/icons/menu-expanded.png);
+}
+.menu-item--collapsed {
+ list-style-type: disc;
+ list-style-image: url(../../images/icons/menu-collapsed.png); /* LTR */
+}
+[dir="rtl"] .menu-item--collapsed {
+ list-style-image: url(../../images/icons/menu-collapsed-rtl.png);
+}
+.menu-item {
+ margin: 0;
+ padding-top: 0.2em;
+}
+ul.menu a.is-active {
+ color: #000;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/messages.css b/project/web/themes/custom/drupalcon/css/components/messages.css
new file mode 100644
index 0000000..4c41e44
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/messages.css
@@ -0,0 +1,69 @@
+/**
+ * @file
+ * Styles for system messages.
+ */
+
+.messages {
+ padding: 15px 20px 15px 35px; /* LTR */
+ word-wrap: break-word;
+ border: 1px solid;
+ border-width: 1px 1px 1px 0; /* LTR */
+ border-radius: 2px;
+ background: no-repeat 10px 17px; /* LTR */
+ overflow-wrap: break-word;
+}
+[dir="rtl"] .messages {
+ padding-right: 35px;
+ padding-left: 20px;
+ text-align: right;
+ border-width: 1px 0 1px 1px;
+ background-position: right 10px top 17px;
+}
+.messages + .messages {
+ margin-top: 1.538em;
+}
+.messages__list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.messages__item + .messages__item {
+ margin-top: 0.769em;
+}
+.messages--status {
+ color: #325e1c;
+ border-color: #c9e1bd #c9e1bd #c9e1bd transparent; /* LTR */
+ background-color: #f3faef;
+ background-image: url(../../images/icons/check.svg);
+ box-shadow: -8px 0 0 #77b259; /* LTR */
+}
+[dir="rtl"] .messages--status {
+ margin-left: 0;
+ border-color: #c9e1bd transparent #c9e1bd #c9e1bd;
+ box-shadow: 8px 0 0 #77b259;
+}
+.messages--warning {
+ color: #734c00;
+ border-color: #f4daa6 #f4daa6 #f4daa6 transparent; /* LTR */
+ background-color: #fdf8ed;
+ background-image: url(../../images/icons/warning.svg);
+ box-shadow: -8px 0 0 #e09600; /* LTR */
+}
+[dir="rtl"] .messages--warning {
+ border-color: #f4daa6 transparent #f4daa6 #f4daa6;
+ box-shadow: 8px 0 0 #e09600;
+}
+.messages--error {
+ color: #a51b00;
+ border-color: #f9c9bf #f9c9bf #f9c9bf transparent; /* LTR */
+ background-color: #fcf4f2;
+ background-image: url(../../images/icons/error.svg);
+ box-shadow: -8px 0 0 #e62600; /* LTR */
+}
+[dir="rtl"] .messages--error {
+ border-color: #f9c9bf transparent #f9c9bf #f9c9bf;
+ box-shadow: 8px 0 0 #e62600;
+}
+.messages--error p.error {
+ color: #a51b00;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/more-link.css b/project/web/themes/custom/drupalcon/css/components/more-link.css
new file mode 100644
index 0000000..c604061
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/more-link.css
@@ -0,0 +1,12 @@
+/**
+ * @file
+ * Markup generated by #type 'more_link'.
+ */
+
+.more-link {
+ display: block;
+ text-align: right; /* LTR */
+}
+[dir="rtl"] .more-link {
+ text-align: left;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/node.css b/project/web/themes/custom/drupalcon/css/components/node.css
new file mode 100644
index 0000000..6b7cd52
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/node.css
@@ -0,0 +1,8 @@
+/**
+ * @file
+ * Visual styles for nodes.
+ */
+
+.node--unpublished {
+ background-color: #fff4f4;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/pager.css b/project/web/themes/custom/drupalcon/css/components/pager.css
new file mode 100644
index 0000000..a9471fc
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/pager.css
@@ -0,0 +1,16 @@
+/**
+ * @file
+ * Visual styles for pager.
+ */
+
+.pager__items {
+ clear: both;
+ text-align: center;
+}
+.pager__item {
+ display: inline;
+ padding: 0.5em;
+}
+.pager__item.is-active {
+ font-weight: bold;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/progress.css b/project/web/themes/custom/drupalcon/css/components/progress.css
new file mode 100644
index 0000000..f8561b2
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/progress.css
@@ -0,0 +1,58 @@
+/**
+ * @file
+ * Visual styles for progress bar.
+ *
+ * @see progress.js
+ */
+
+.progress__track {
+ border-color: #b3b3b3;
+ border-radius: 10em;
+ background-color: #f2f1eb;
+ background-image: linear-gradient(#e7e7df, #f0f0f0);
+ box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.16);
+}
+.progress__bar {
+ height: 16px;
+ margin-top: -1px;
+ margin-left: -1px; /* LTR */
+ padding: 0 1px;
+ -webkit-transition: width 0.5s ease-out;
+ transition: width 0.5s ease-out;
+ -webkit-animation: animate-stripes 3s linear infinite;
+ border: 1px #07629a solid;
+ border-radius: 10em;
+ background: #057ec9;
+ background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), linear-gradient(to right bottom, #0094f0 0%, #0094f0 25%, #007ecc 25%, #007ecc 50%, #0094f0 50%, #0094f0 75%, #0094f0 100%);
+ background-size: 40px 40px;
+}
+[dir="rtl"] .progress__bar {
+ margin-right: -1px;
+ margin-left: 0;
+ -webkit-animation-direction: reverse;
+ animation-direction: reverse;
+}
+
+@media screen and (prefers-reduced-motion: reduce) {
+ .progress__bar {
+ -webkit-transition: none;
+ transition: none;
+ -webkit-animation: none;
+ }
+}
+
+/**
+ * Progress bar animations.
+ */
+@keyframes animate-stripes {
+ 0% {
+ background-position:
+ 0 0,
+ 0 0;
+ }
+ 100% {
+ background-position:
+ 0 0,
+ -80px 0;
+ }
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/search-results.css b/project/web/themes/custom/drupalcon/css/components/search-results.css
new file mode 100644
index 0000000..343ea8b
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/search-results.css
@@ -0,0 +1,8 @@
+/**
+ * @file
+ * Stylesheet for results generated by the Search module.
+ */
+
+.search-results {
+ list-style: none;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/tabledrag.css b/project/web/themes/custom/drupalcon/css/components/tabledrag.css
new file mode 100644
index 0000000..a197b24
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/tabledrag.css
@@ -0,0 +1,14 @@
+/**
+ * @file
+ * Visual styles for table drag.
+ */
+
+tr.drag {
+ background-color: #fffff0;
+}
+tr.drag-previous {
+ background-color: #ffd;
+}
+body div.tabledrag-changed-warning {
+ margin-bottom: 0.5em;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/tableselect.css b/project/web/themes/custom/drupalcon/css/components/tableselect.css
new file mode 100644
index 0000000..fcfb2a5
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/tableselect.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * Table select behavior.
+ *
+ * @see tableselect.js
+ */
+
+tr.selected td {
+ background: #ffc;
+}
+td.checkbox,
+th.checkbox {
+ text-align: center;
+}
+[dir="rtl"] td.checkbox,
+[dir="rtl"] th.checkbox {
+ /* This is required to win over specificity of [dir="rtl"] td */
+ text-align: center;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/tablesort.css b/project/web/themes/custom/drupalcon/css/components/tablesort.css
new file mode 100644
index 0000000..44e5349
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/tablesort.css
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * Table sort indicator.
+ */
+
+th.is-active img {
+ display: inline;
+}
+td.is-active {
+ background-color: #ddd;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/tabs.css b/project/web/themes/custom/drupalcon/css/components/tabs.css
new file mode 100644
index 0000000..16fb122
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/tabs.css
@@ -0,0 +1,33 @@
+/**
+ * @file
+ * Visual styles for tabs.
+ */
+
+div.tabs {
+ margin: 1em 0;
+}
+ul.tabs {
+ margin: 0 0 0.5em;
+ padding: 0;
+ list-style: none;
+}
+.tabs > li {
+ display: inline-block;
+ margin-right: 0.3em; /* LTR */
+}
+[dir="rtl"] .tabs > li {
+ margin-right: 0;
+ margin-left: 0.3em;
+}
+.tabs a {
+ display: block;
+ padding: 0.2em 1em;
+ text-decoration: none;
+}
+.tabs a.is-active {
+ background-color: #eee;
+}
+.tabs a:focus,
+.tabs a:hover {
+ background-color: #f5f5f5;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/textarea.css b/project/web/themes/custom/drupalcon/css/components/textarea.css
new file mode 100644
index 0000000..2661bae
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/textarea.css
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * Visual styles for a resizable textarea.
+ */
+
+.form-textarea-wrapper textarea {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ margin: 0;
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/ui-dialog.css b/project/web/themes/custom/drupalcon/css/components/ui-dialog.css
new file mode 100644
index 0000000..164ca86
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/ui-dialog.css
@@ -0,0 +1,15 @@
+/**
+ * @file
+ * Styles for modal windows.
+ */
+
+.ui-dialog--narrow {
+ max-width: 500px;
+}
+
+@media screen and (max-width: 600px) {
+ .ui-dialog--narrow {
+ min-width: 95%;
+ max-width: 95%;
+ }
+}
diff --git a/project/web/themes/custom/drupalcon/css/components/user.css b/project/web/themes/custom/drupalcon/css/components/user.css
new file mode 100644
index 0000000..7892fd6
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/css/components/user.css
@@ -0,0 +1,67 @@
+/**
+ * @file
+ * Theme styling for user module.
+ */
+
+/* Visual styling for the Password strength indicator */
+.password-strength__meter {
+ margin-top: 0.5em;
+ background-color: #ebeae4;
+}
+.password-strength__indicator {
+ -webkit-transition: width 0.5s ease-out;
+ transition: width 0.5s ease-out;
+ background-color: #77b259;
+}
+.password-strength__indicator.is-weak {
+ background-color: #e62600;
+}
+.password-strength__indicator.is-fair {
+ background-color: #e09600;
+}
+.password-strength__indicator.is-good {
+ background-color: #0074bd;
+}
+.password-strength__indicator.is-strong {
+ background-color: #77b259;
+}
+
+.password-confirm,
+.password-field,
+.password-strength,
+.password-confirm-match,
+.password-confirm-message {
+ width: 55%;
+}
+
+.password-suggestions {
+ max-width: 34.7em;
+ margin: 0.7em 0;
+ padding: 0.2em 0.5em;
+ border: 1px solid #b4b4b4;
+}
+.password-suggestions ul {
+ margin-bottom: 0;
+}
+
+.confirm-parent,
+.password-parent {
+ clear: left; /* LTR */
+ overflow: hidden;
+ max-width: 33em;
+ margin: 0;
+}
+[dir="rtl"] .confirm-parent,
+[dir="rtl"] .password-parent {
+ clear: right;
+}
+
+/* Styling for the status indicator of the passwords match test. */
+.password-confirm .ok {
+ color: #325e1c;
+ font-weight: bold;
+}
+.password-confirm .error {
+ color: #a51b00;
+ font-weight: bold;
+}
diff --git a/project/web/themes/custom/drupalcon/dist/output.css b/project/web/themes/custom/drupalcon/dist/output.css
new file mode 100644
index 0000000..8ab90dc
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/dist/output.css
@@ -0,0 +1,650 @@
+*, ::before, ::after {
+ --tw-border-spacing-x: 0;
+ --tw-border-spacing-y: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-rotate: 0;
+ --tw-skew-x: 0;
+ --tw-skew-y: 0;
+ --tw-scale-x: 1;
+ --tw-scale-y: 1;
+ --tw-pan-x: ;
+ --tw-pan-y: ;
+ --tw-pinch-zoom: ;
+ --tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
+ --tw-ordinal: ;
+ --tw-slashed-zero: ;
+ --tw-numeric-figure: ;
+ --tw-numeric-spacing: ;
+ --tw-numeric-fraction: ;
+ --tw-ring-inset: ;
+ --tw-ring-offset-width: 0px;
+ --tw-ring-offset-color: #fff;
+ --tw-ring-color: rgb(59 130 246 / 0.5);
+ --tw-ring-offset-shadow: 0 0 #0000;
+ --tw-ring-shadow: 0 0 #0000;
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+ --tw-blur: ;
+ --tw-brightness: ;
+ --tw-contrast: ;
+ --tw-grayscale: ;
+ --tw-hue-rotate: ;
+ --tw-invert: ;
+ --tw-saturate: ;
+ --tw-sepia: ;
+ --tw-drop-shadow: ;
+ --tw-backdrop-blur: ;
+ --tw-backdrop-brightness: ;
+ --tw-backdrop-contrast: ;
+ --tw-backdrop-grayscale: ;
+ --tw-backdrop-hue-rotate: ;
+ --tw-backdrop-invert: ;
+ --tw-backdrop-opacity: ;
+ --tw-backdrop-saturate: ;
+ --tw-backdrop-sepia: ;
+ --tw-contain-size: ;
+ --tw-contain-layout: ;
+ --tw-contain-paint: ;
+ --tw-contain-style: ;
+}
+
+::backdrop {
+ --tw-border-spacing-x: 0;
+ --tw-border-spacing-y: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-rotate: 0;
+ --tw-skew-x: 0;
+ --tw-skew-y: 0;
+ --tw-scale-x: 1;
+ --tw-scale-y: 1;
+ --tw-pan-x: ;
+ --tw-pan-y: ;
+ --tw-pinch-zoom: ;
+ --tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
+ --tw-ordinal: ;
+ --tw-slashed-zero: ;
+ --tw-numeric-figure: ;
+ --tw-numeric-spacing: ;
+ --tw-numeric-fraction: ;
+ --tw-ring-inset: ;
+ --tw-ring-offset-width: 0px;
+ --tw-ring-offset-color: #fff;
+ --tw-ring-color: rgb(59 130 246 / 0.5);
+ --tw-ring-offset-shadow: 0 0 #0000;
+ --tw-ring-shadow: 0 0 #0000;
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+ --tw-blur: ;
+ --tw-brightness: ;
+ --tw-contrast: ;
+ --tw-grayscale: ;
+ --tw-hue-rotate: ;
+ --tw-invert: ;
+ --tw-saturate: ;
+ --tw-sepia: ;
+ --tw-drop-shadow: ;
+ --tw-backdrop-blur: ;
+ --tw-backdrop-brightness: ;
+ --tw-backdrop-contrast: ;
+ --tw-backdrop-grayscale: ;
+ --tw-backdrop-hue-rotate: ;
+ --tw-backdrop-invert: ;
+ --tw-backdrop-opacity: ;
+ --tw-backdrop-saturate: ;
+ --tw-backdrop-sepia: ;
+ --tw-contain-size: ;
+ --tw-contain-layout: ;
+ --tw-contain-paint: ;
+ --tw-contain-style: ;
+}
+
+/*
+! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
+*/
+
+/*
+1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
+2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
+*/
+
+*,
+::before,
+::after {
+ box-sizing: border-box;
+ /* 1 */
+ border-width: 0;
+ /* 2 */
+ border-style: solid;
+ /* 2 */
+ border-color: #e5e7eb;
+ /* 2 */
+}
+
+::before,
+::after {
+ --tw-content: '';
+}
+
+/*
+1. Use a consistent sensible line-height in all browsers.
+2. Prevent adjustments of font size after orientation changes in iOS.
+3. Use a more readable tab size.
+4. Use the user's configured `sans` font-family by default.
+5. Use the user's configured `sans` font-feature-settings by default.
+6. Use the user's configured `sans` font-variation-settings by default.
+7. Disable tap highlights on iOS
+*/
+
+html,
+:host {
+ line-height: 1.5;
+ /* 1 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+ -moz-tab-size: 4;
+ /* 3 */
+ -o-tab-size: 4;
+ tab-size: 4;
+ /* 3 */
+ font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ /* 4 */
+ font-feature-settings: normal;
+ /* 5 */
+ font-variation-settings: normal;
+ /* 6 */
+ -webkit-tap-highlight-color: transparent;
+ /* 7 */
+}
+
+/*
+1. Remove the margin in all browsers.
+2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
+*/
+
+body {
+ margin: 0;
+ /* 1 */
+ line-height: inherit;
+ /* 2 */
+}
+
+/*
+1. Add the correct height in Firefox.
+2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
+3. Ensure horizontal rules are visible by default.
+*/
+
+hr {
+ height: 0;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ border-top-width: 1px;
+ /* 3 */
+}
+
+/*
+Add the correct text decoration in Chrome, Edge, and Safari.
+*/
+
+abbr:where([title]) {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+}
+
+/*
+Remove the default font size and weight for headings.
+*/
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-size: inherit;
+ font-weight: inherit;
+}
+
+/*
+Reset links to optimize for opt-in styling instead of opt-out.
+*/
+
+a {
+ color: inherit;
+ text-decoration: inherit;
+}
+
+/*
+Add the correct font weight in Edge and Safari.
+*/
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/*
+1. Use the user's configured `mono` font-family by default.
+2. Use the user's configured `mono` font-feature-settings by default.
+3. Use the user's configured `mono` font-variation-settings by default.
+4. Correct the odd `em` font sizing in all browsers.
+*/
+
+code,
+kbd,
+samp,
+pre {
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ /* 1 */
+ font-feature-settings: normal;
+ /* 2 */
+ font-variation-settings: normal;
+ /* 3 */
+ font-size: 1em;
+ /* 4 */
+}
+
+/*
+Add the correct font size in all browsers.
+*/
+
+small {
+ font-size: 80%;
+}
+
+/*
+Prevent `sub` and `sup` elements from affecting the line height in all browsers.
+*/
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/*
+1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
+2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
+3. Remove gaps between table borders by default.
+*/
+
+table {
+ text-indent: 0;
+ /* 1 */
+ border-color: inherit;
+ /* 2 */
+ border-collapse: collapse;
+ /* 3 */
+}
+
+/*
+1. Change the font styles in all browsers.
+2. Remove the margin in Firefox and Safari.
+3. Remove default padding in all browsers.
+*/
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ /* 1 */
+ font-feature-settings: inherit;
+ /* 1 */
+ font-variation-settings: inherit;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ font-weight: inherit;
+ /* 1 */
+ line-height: inherit;
+ /* 1 */
+ letter-spacing: inherit;
+ /* 1 */
+ color: inherit;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+ padding: 0;
+ /* 3 */
+}
+
+/*
+Remove the inheritance of text transform in Edge and Firefox.
+*/
+
+button,
+select {
+ text-transform: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Remove default button styles.
+*/
+
+button,
+input:where([type='button']),
+input:where([type='reset']),
+input:where([type='submit']) {
+ -webkit-appearance: button;
+ /* 1 */
+ background-color: transparent;
+ /* 2 */
+ background-image: none;
+ /* 2 */
+}
+
+/*
+Use the modern Firefox focus style for all focusable elements.
+*/
+
+:-moz-focusring {
+ outline: auto;
+}
+
+/*
+Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
+*/
+
+:-moz-ui-invalid {
+ box-shadow: none;
+}
+
+/*
+Add the correct vertical alignment in Chrome and Firefox.
+*/
+
+progress {
+ vertical-align: baseline;
+}
+
+/*
+Correct the cursor style of increment and decrement buttons in Safari.
+*/
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/*
+1. Correct the odd appearance in Chrome and Safari.
+2. Correct the outline style in Safari.
+*/
+
+[type='search'] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/*
+Remove the inner padding in Chrome and Safari on macOS.
+*/
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Change font properties to `inherit` in Safari.
+*/
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/*
+Add the correct display in Chrome and Safari.
+*/
+
+summary {
+ display: list-item;
+}
+
+/*
+Removes the default spacing and border for appropriate elements.
+*/
+
+blockquote,
+dl,
+dd,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+hr,
+figure,
+p,
+pre {
+ margin: 0;
+}
+
+fieldset {
+ margin: 0;
+ padding: 0;
+}
+
+legend {
+ padding: 0;
+}
+
+ol,
+ul,
+menu {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+/*
+Reset default styling for dialogs.
+*/
+
+dialog {
+ padding: 0;
+}
+
+/*
+Prevent resizing textareas horizontally by default.
+*/
+
+textarea {
+ resize: vertical;
+}
+
+/*
+1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
+2. Set the default placeholder color to the user's configured gray 400 color.
+*/
+
+input::-moz-placeholder, textarea::-moz-placeholder {
+ opacity: 1;
+ /* 1 */
+ color: #9ca3af;
+ /* 2 */
+}
+
+input::placeholder,
+textarea::placeholder {
+ opacity: 1;
+ /* 1 */
+ color: #9ca3af;
+ /* 2 */
+}
+
+/*
+Set the default cursor for buttons.
+*/
+
+button,
+[role="button"] {
+ cursor: pointer;
+}
+
+/*
+Make sure disabled buttons don't get the pointer cursor.
+*/
+
+:disabled {
+ cursor: default;
+}
+
+/*
+1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
+2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
+ This can trigger a poorly considered lint error in some tools but is included by design.
+*/
+
+img,
+svg,
+video,
+canvas,
+audio,
+iframe,
+embed,
+object {
+ display: block;
+ /* 1 */
+ vertical-align: middle;
+ /* 2 */
+}
+
+/*
+Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
+*/
+
+img,
+video {
+ max-width: 100%;
+ height: auto;
+}
+
+/* Make elements with the HTML hidden attribute stay hidden by default */
+
+[hidden]:where(:not([hidden="until-found"])) {
+ display: none;
+}
+
+.container {
+ width: 100%;
+}
+
+@media (min-width: 640px) {
+ .container {
+ max-width: 640px;
+ }
+}
+
+@media (min-width: 768px) {
+ .container {
+ max-width: 768px;
+ }
+}
+
+@media (min-width: 1024px) {
+ .container {
+ max-width: 1024px;
+ }
+}
+
+@media (min-width: 1280px) {
+ .container {
+ max-width: 1280px;
+ }
+}
+
+@media (min-width: 1536px) {
+ .container {
+ max-width: 1536px;
+ }
+}
+
+.visible {
+ visibility: visible;
+}
+
+.invisible {
+ visibility: hidden;
+}
+
+.relative {
+ position: relative;
+}
+
+.sticky {
+ position: sticky;
+}
+
+.block {
+ display: block;
+}
+
+.inline {
+ display: inline;
+}
+
+.table {
+ display: table;
+}
+
+.grid {
+ display: grid;
+}
+
+.contents {
+ display: contents;
+}
+
+.hidden {
+ display: none;
+}
+
+.border-2 {
+ border-width: 2px;
+}
+
+.border-solid {
+ border-style: solid;
+}
+
+.bg-green-100 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
+}
+
+.p-8 {
+ padding: 2rem;
+}
+
+.filter {
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
+}
\ No newline at end of file
diff --git a/project/web/themes/custom/drupalcon/drupalcon.info.yml b/project/web/themes/custom/drupalcon/drupalcon.info.yml
new file mode 100644
index 0000000..dc4d497
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/drupalcon.info.yml
@@ -0,0 +1,37 @@
+name: drupalcon
+type: theme
+'base theme': olivero
+version: 1.0.0
+libraries:
+ - drupalcon/base
+ - drupalcon/messages
+ - core/normalize
+ - drupalcon/tailwindcss
+libraries-extend:
+ user/drupal.user:
+ - drupalcon/user
+ core/drupal.dropbutton:
+ - drupalcon/dropbutton
+ core/drupal.dialog:
+ - drupalcon/dialog
+ file/drupal.file:
+ - drupalcon/file
+ core/drupal.progress:
+ - drupalcon/progress
+description: ''
+core_version_requirement: ^11
+generator: 'starterkit_theme:11.1.5'
+regions:
+ header: Header
+ primary_menu: Primary menu
+ secondary_menu: Secondary menu
+ hero: Hero (full width)
+ highlighted: Highlighted
+ breadcrumb: Breadcrumb
+ social: Social Bar
+ content_above: Content Above
+ content: Content
+ sidebar: Sidebar
+ content_below: Content Below
+ footer_top: Footer Top
+ footer_bottom: Footer Bottom
\ No newline at end of file
diff --git a/project/web/themes/custom/drupalcon/drupalcon.libraries.yml b/project/web/themes/custom/drupalcon/drupalcon.libraries.yml
new file mode 100644
index 0000000..ba96192
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/drupalcon.libraries.yml
@@ -0,0 +1,111 @@
+base:
+ version: VERSION
+ css:
+ component:
+ css/components/action-links.css:
+ weight: -10
+ css/components/breadcrumb.css:
+ weight: -10
+ css/components/button.css:
+ weight: -10
+ css/components/container-inline.css:
+ weight: -10
+ css/components/details.css:
+ weight: -10
+ css/components/exposed-filters.css:
+ weight: -10
+ css/components/field.css:
+ weight: -10
+ css/components/form.css:
+ weight: -10
+ css/components/icons.css:
+ weight: -10
+ css/components/inline-form.css:
+ weight: -10
+ css/components/item-list.css:
+ weight: -10
+ css/components/link.css:
+ weight: -10
+ css/components/links.css:
+ weight: -10
+ css/components/menu.css:
+ weight: -10
+ css/components/more-link.css:
+ weight: -10
+ css/components/pager.css:
+ weight: -10
+ css/components/tabledrag.css:
+ weight: -10
+ css/components/tableselect.css:
+ weight: -10
+ css/components/tablesort.css:
+ weight: -10
+ css/components/tabs.css:
+ weight: -10
+ css/components/textarea.css:
+ weight: -10
+ css/components/ui-dialog.css:
+ weight: -10
+dialog:
+ version: VERSION
+ css:
+ component:
+ css/components/dialog.css:
+ weight: -10
+dropbutton:
+ version: VERSION
+ css:
+ component:
+ css/components/dropbutton.css:
+ weight: -10
+file:
+ version: VERSION
+ css:
+ component:
+ css/components/file.css:
+ weight: -10
+image-widget:
+ version: VERSION
+ css:
+ component:
+ css/components/image-widget.css: { }
+indented:
+ version: VERSION
+ css:
+ component:
+ css/components/indented.css: { }
+messages:
+ version: VERSION
+ css:
+ component:
+ css/components/messages.css:
+ weight: -10
+node:
+ version: VERSION
+ css:
+ component:
+ css/components/node.css:
+ weight: -10
+progress:
+ version: VERSION
+ css:
+ component:
+ css/components/progress.css:
+ weight: -10
+search-results:
+ version: VERSION
+ css:
+ component:
+ css/components/search-results.css: { }
+user:
+ version: VERSION
+ css:
+ component:
+ css/components/user.css:
+ weight: -10
+
+tailwindcss:
+ css:
+ base:
+ dist/output.css: {}
+
diff --git a/project/web/themes/custom/drupalcon/drupalcon.theme b/project/web/themes/custom/drupalcon/drupalcon.theme
new file mode 100644
index 0000000..ecbf715
--- /dev/null
+++ b/project/web/themes/custom/drupalcon/drupalcon.theme
@@ -0,0 +1,21 @@
+