├── drupal ├── keys │ ├── .keep │ ├── web.config │ └── .htaccess ├── config │ ├── claro.settings.yml │ ├── system.image.yml │ ├── dblog.settings.yml │ ├── system.image.gd.yml │ ├── system.logging.yml │ ├── automated_cron.settings.yml │ ├── field.settings.yml │ ├── field_ui.settings.yml │ ├── node.settings.yml │ ├── system.rss.yml │ ├── comment.settings.yml │ ├── system.feature_flags.yml │ ├── text.settings.yml │ ├── menu_ui.settings.yml │ ├── system.advisories.yml │ ├── system.theme.yml │ ├── system.diff.yml │ ├── announcements_feed.settings.yml │ ├── filter.settings.yml │ ├── jsonapi.settings.yml │ ├── system.file.yml │ ├── taxonomy.settings.yml │ ├── user.flood.yml │ ├── system.cron.yml │ ├── contact.settings.yml │ ├── image.settings.yml │ ├── system.maintenance.yml │ ├── shortcut.set.default.yml │ ├── core.menu.static_menu_link_overrides.yml │ ├── system.date.yml │ ├── system.mail.yml │ ├── core.date_format.html_date.yml │ ├── core.date_format.html_week.yml │ ├── core.date_format.html_year.yml │ ├── core.date_format.html_month.yml │ ├── core.date_format.html_time.yml │ ├── core.date_format.short.yml │ ├── system.menu.footer.yml │ ├── system.menu.main.yml │ ├── core.date_format.long.yml │ ├── core.date_format.fallback.yml │ ├── core.date_format.medium.yml │ ├── system.menu.admin.yml │ ├── core.date_format.html_datetime.yml │ ├── core.date_format.html_yearless_date.yml │ ├── system.menu.tools.yml │ ├── user.role.administrator.yml │ ├── update.settings.yml │ ├── simple_oauth.oauth2_token.bundle.auth_code.yml │ ├── system.menu.account.yml │ ├── block_content.type.basic.yml │ ├── comment.type.comment.yml │ ├── core.entity_view_mode.node.rss.yml │ ├── simple_oauth.oauth2_token.bundle.access_token.yml │ ├── simple_oauth.oauth2_token.bundle.refresh_token.yml │ ├── core.entity_view_mode.node.teaser.yml │ ├── core.entity_form_mode.user.register.yml │ ├── core.entity_view_mode.node.full.yml │ ├── core.entity_view_mode.user.compact.yml │ ├── core.entity_view_mode.user.full.yml │ ├── search.page.help_search.yml │ ├── search.page.user_search.yml │ ├── core.date_format.olivero_medium.yml │ ├── taxonomy.vocabulary.tags.yml │ ├── core.entity_view_mode.comment.full.yml │ ├── core.entity_view_mode.node.search_index.yml │ ├── contact.form.personal.yml │ ├── search.page.node_search.yml │ ├── system.action.node_save_action.yml │ ├── core.entity_view_mode.block_content.full.yml │ ├── system.action.node_delete_action.yml │ ├── system.action.node_publish_action.yml │ ├── contact.form.feedback.yml │ ├── core.entity_view_mode.taxonomy_term.full.yml │ ├── system.action.comment_save_action.yml │ ├── system.action.node_promote_action.yml │ ├── system.action.user_add_role_action.oauth.yml │ ├── core.entity_view_mode.node.search_result.yml │ ├── system.action.comment_delete_action.yml │ ├── system.action.node_make_sticky_action.yml │ ├── system.action.node_unpublish_action.yml │ ├── system.action.user_block_user_action.yml │ ├── system.action.comment_publish_action.yml │ ├── system.action.node_make_unsticky_action.yml │ ├── system.action.node_unpromote_action.yml │ ├── system.action.user_remove_role_action.oauth.yml │ ├── system.action.user_unblock_user_action.yml │ ├── system.site.yml │ ├── system.action.comment_unpublish_action.yml │ ├── system.action.user_cancel_user_action.yml │ ├── system.theme.global.yml │ ├── node.type.page.yml │ ├── simple_oauth.settings.yml │ ├── system.action.taxonomy_term_publish_action.yml │ ├── system.action.user_add_role_action.administrator.yml │ ├── system.action.user_add_role_action.content_editor.yml │ ├── node.type.article.yml │ ├── system.action.taxonomy_term_unpublish_action.yml │ ├── system.action.user_remove_role_action.administrator.yml │ ├── system.action.user_remove_role_action.content_editor.yml │ ├── search.settings.yml │ ├── file.settings.yml │ ├── olivero.settings.yml │ ├── block.block.claro_help.yml │ ├── block.block.claro_page_title.yml │ ├── block.block.olivero_help.yml │ ├── block.block.olivero_page_title.yml │ ├── field.storage.node.body.yml │ ├── block.block.claro_local_actions.yml │ ├── simple_oauth.oauth2_scope.oauth.yml │ ├── block.block.claro_content.yml │ ├── field.storage.comment.comment_body.yml │ ├── block.block.olivero_content.yml │ ├── field.storage.node.comment.yml │ ├── block.block.claro_breadcrumbs.yml │ ├── block.block.claro_messages.yml │ ├── block.block.olivero_primary_admin_actions.yml │ ├── field.storage.block_content.body.yml │ ├── block.block.olivero_breadcrumbs.yml │ ├── block.block.olivero_messages.yml │ ├── block.block.react_example_theme_help.yml │ ├── block.block.react_example_theme_page_title.yml │ ├── block.block.claro_primary_local_tasks.yml │ ├── block.block.olivero_powered.yml │ ├── block.block.olivero_syndicate.yml │ ├── field.storage.node.field_tags.yml │ ├── user.settings.yml │ ├── user.role.oauth.yml │ ├── block.block.claro_secondary_local_tasks.yml │ ├── block.block.olivero_primary_local_tasks.yml │ ├── block.block.olivero_secondary_local_tasks.yml │ ├── system.performance.yml │ ├── block.block.olivero_search_form_wide.yml │ ├── block.block.olivero_search_form_narrow.yml │ ├── block.block.react_example_theme_content.yml │ ├── block.block.react_example_theme_primary_admin_actions.yml │ ├── block.block.react_example_theme_messages.yml │ ├── block.block.react_example_theme_breadcrumbs.yml │ ├── block.block.react_example_theme_powered.yml │ ├── core.base_field_override.node.page.promote.yml │ ├── user.role.anonymous.yml │ ├── block.block.react_example_theme_syndicate.yml │ ├── block.block.react_example_theme_primary_local_tasks.yml │ ├── block.block.react_example_theme_secondary_local_tasks.yml │ ├── block.block.react_example_theme_search_form_wide.yml │ ├── block.block.olivero_site_branding.yml │ ├── block.block.react_example_theme_search_form_narrow.yml │ ├── field.field.comment.comment.comment_body.yml │ ├── image.style.wide.yml │ ├── core.entity_view_display.block_content.basic.default.yml │ ├── image.style.large.yml │ ├── block.block.olivero_main_menu.yml │ ├── field.field.node.page.body.yml │ ├── image.style.medium.yml │ ├── image.style.thumbnail.yml │ ├── field.field.node.article.body.yml │ ├── block.block.olivero_account_menu.yml │ ├── block.block.react_example_theme_site_branding.yml │ ├── core.entity_view_display.node.page.default.yml │ ├── block.block.react_example_theme_main_menu.yml │ ├── core.entity_view_display.comment.comment.default.yml │ ├── field.field.block_content.basic.body.yml │ ├── filter.format.plain_text.yml │ ├── block.block.react_example_theme_account_menu.yml │ ├── core.entity_view_display.node.page.teaser.yml │ ├── user.role.authenticated.yml │ ├── core.entity_view_display.node.article.rss.yml │ ├── block.block.claro_help_search.yml │ ├── field.storage.node.field_image.yml │ ├── field.storage.user.user_picture.yml │ ├── core.entity_view_display.user.user.compact.yml │ ├── core.entity_view_display.user.user.default.yml │ ├── .htaccess │ ├── field.field.node.article.comment.yml │ ├── field.field.node.article.field_tags.yml │ ├── core.entity_form_display.comment.comment.default.yml │ ├── core.entity_form_display.block_content.basic.default.yml │ ├── core.entity_form_display.user.user.default.yml │ ├── filter.format.restricted_html.yml │ ├── filter.format.full_html.yml │ ├── views.settings.yml │ ├── core.extension.yml │ ├── field.field.node.article.field_image.yml │ ├── field.field.user.user.user_picture.yml │ ├── user.role.content_editor.yml │ ├── core.entity_view_display.node.article.teaser.yml │ ├── filter.format.basic_html.yml │ ├── editor.editor.basic_html.yml │ ├── core.entity_view_display.node.article.default.yml │ ├── core.entity_form_display.node.page.default.yml │ ├── editor.editor.full_html.yml │ ├── core.entity_form_display.node.article.default.yml │ └── user.mail.yml ├── backup.sql.gz ├── backup-d9.sql.gz ├── web │ ├── themes │ │ └── react_example_theme │ │ │ ├── .babelrc │ │ │ ├── js │ │ │ ├── .DS_Store │ │ │ └── src │ │ │ │ ├── .DS_Store │ │ │ │ ├── components │ │ │ │ ├── NodeAdd.jsx │ │ │ │ ├── NodeEdit.jsx │ │ │ │ ├── NodeDelete.jsx │ │ │ │ ├── DrupalProjectStats.jsx │ │ │ │ ├── NodeListOnly.jsx │ │ │ │ └── NodeForm.jsx │ │ │ │ ├── index.jsx │ │ │ │ └── utils │ │ │ │ └── fetch.js │ │ │ ├── .proxyrc │ │ │ ├── react_example_theme.info.yml │ │ │ ├── react_example_theme.theme │ │ │ ├── package.json │ │ │ ├── react_example_theme.libraries.yml │ │ │ └── webpack.config.js │ ├── sites │ │ └── default │ │ │ ├── .gitignore │ │ │ └── settings.php │ └── README.md ├── drush │ └── .gitignore ├── .editorconfig ├── composer.json └── .gitattributes ├── react-decoupled-vite ├── src │ ├── index.css │ ├── components │ │ ├── NodeAdd.jsx │ │ ├── NodeEdit.jsx │ │ ├── Login.jsx │ │ ├── AuthCallback.jsx │ │ ├── NodeDelete.jsx │ │ ├── DrupalProjectStats.jsx │ │ └── NodeListOnly.jsx │ ├── main.jsx │ ├── App.css │ ├── App.jsx │ ├── utils │ │ └── fetch.js │ └── assets │ │ └── react.svg ├── vite.config.js ├── .gitignore ├── index.html ├── package.json ├── README.md ├── eslint.config.js └── public │ └── vite.svg ├── react-decoupled ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── index.html ├── src │ ├── components │ │ ├── NodeAdd.jsx │ │ ├── NodeEdit.jsx │ │ ├── Login.jsx │ │ ├── AuthCallback.jsx │ │ ├── NodeDelete.jsx │ │ ├── DrupalProjectStats.jsx │ │ └── NodeListOnly.jsx │ ├── setupTests.js │ ├── index.js │ ├── App.test.js │ ├── index.css │ ├── App.css │ ├── App.js │ ├── utils │ │ └── fetch.js │ └── logo.svg ├── .gitignore ├── .vscode │ └── launch.json ├── package.json └── README.md ├── README.md └── .gitignore /drupal/keys/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /drupal/config/claro.settings.yml: -------------------------------------------------------------------------------- 1 | third_party_settings: 2 | shortcut: 3 | module_link: true 4 | -------------------------------------------------------------------------------- /drupal/backup.sql.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/drupal/backup.sql.gz -------------------------------------------------------------------------------- /react-decoupled/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /drupal/backup-d9.sql.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/drupal/backup-d9.sql.gz -------------------------------------------------------------------------------- /drupal/config/system.image.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: durWHaKeBaq4d9Wpi4RqwADj1OufDepcnJuhVLmKN24 3 | toolkit: gd 4 | -------------------------------------------------------------------------------- /drupal/config/dblog.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: e883aGsrt1wFrsydlYU584PZONCSfRy0DtkZ9KzHb58 3 | row_limit: 1000 4 | -------------------------------------------------------------------------------- /drupal/config/system.image.gd.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: eNXaHfkJJUThHeF0nvkoXyPLRrKYGxgHRjORvT4F5rQ 3 | jpeg_quality: 75 4 | -------------------------------------------------------------------------------- /drupal/config/system.logging.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: u3-njszl92FaxjrCMiq0yDcjAfcdx72w1zT1O9dx6aA 3 | error_level: hide 4 | -------------------------------------------------------------------------------- /drupal/config/automated_cron.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: fUksROt4FfkAU9BV4hV2XvhTBSS2nTNrZS4U7S-tKrs 3 | interval: 10800 4 | -------------------------------------------------------------------------------- /drupal/config/field.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: nJk0TAQBzlNo52ehiHI7bIEPLGi0BYqZvPdEn7Chfu0 3 | purge_batch_size: 50 4 | -------------------------------------------------------------------------------- /drupal/config/field_ui.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: Q1nMi90W6YQxKzZAgJQw7Ag9U4JrsEUwkomF0lhvbIM 3 | field_prefix: field_ 4 | -------------------------------------------------------------------------------- /drupal/config/node.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: W0cgFPhPJ3gAdqm06-az48BLf5MVcoZVS0HdByoofi0 3 | use_admin_theme: true 4 | -------------------------------------------------------------------------------- /drupal/config/system.rss.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: MIpNzlG4gPunfS7vTCwUPum6QH3GUsEBMj-qS631Jw0 3 | items: 4 | view_mode: rss 5 | -------------------------------------------------------------------------------- /react-decoupled/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/react-decoupled/public/favicon.ico -------------------------------------------------------------------------------- /react-decoupled/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/react-decoupled/public/logo192.png -------------------------------------------------------------------------------- /react-decoupled/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/react-decoupled/public/logo512.png -------------------------------------------------------------------------------- /drupal/config/comment.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: YNUW2Ij5uE7a4oaXp3i_2lvaFdYM1zNKPPfnEjB0jEc 3 | log_ip_addresses: false 4 | -------------------------------------------------------------------------------- /drupal/config/system.feature_flags.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: ZYyVj1FtPGV40Cf65YDVTUIc7YgLH6trXlotuevfs2I 3 | linkset_endpoint: false 4 | -------------------------------------------------------------------------------- /drupal/config/text.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: Bkewb77RBOK3_aXMPsp8p87gbc03NvmC5gBLzPl7hVA 3 | default_summary_length: 600 4 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | "@babel/preset-react" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /drupal/config/menu_ui.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: SqMarzIjxC3F8dZo9FEOxfqDKD_sdW1tbcFTV1BA2zU 3 | override_parent_selector: false 4 | -------------------------------------------------------------------------------- /drupal/config/system.advisories.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: x0FuQ_7Cg81mSDQwG028_Z0CjH3R9ib5IDlHeV2BbAo 3 | enabled: true 4 | interval_hours: 6 5 | -------------------------------------------------------------------------------- /drupal/config/system.theme.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: eJ529VM1gSIA_vgTy2PdiDvJuG0xhSxfQjCyl5WKlv4 3 | admin: claro 4 | default: react_example_theme 5 | -------------------------------------------------------------------------------- /drupal/config/system.diff.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: 1WanmaEhxW_vM8_5Ktsdntj8MaO9UBHXg0lN603PsWM 3 | context: 4 | lines_leading: 2 5 | lines_trailing: 2 6 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/drupal/web/themes/react_example_theme/js/.DS_Store -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/js/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DrupalizeMe/react-and-drupal-examples/HEAD/drupal/web/themes/react_example_theme/js/src/.DS_Store -------------------------------------------------------------------------------- /drupal/config/announcements_feed.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: 0G5pZBcxbg8ONYzNLd1RJIsvuFFewm9htnS4I-ABKJ8 3 | max_age: 86400 4 | cron_interval: 21600 5 | limit: 10 6 | -------------------------------------------------------------------------------- /drupal/config/filter.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: FiPjM3WdB__ruFA7B6TLwni_UcZbmek5G4b2dxQItxA 3 | fallback_format: plain_text 4 | always_show_fallback_choice: false 5 | -------------------------------------------------------------------------------- /drupal/keys/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/.proxyrc: -------------------------------------------------------------------------------- 1 | { 2 | "**": { 3 | "target": "http://react-tutorials-2.ddev.site", 4 | "changeOrigin": true, 5 | "xfwd": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /drupal/drush/.gitignore: -------------------------------------------------------------------------------- 1 | #ddev-generated: Automatically generated ddev .gitignore. 2 | # You can remove the above line if you want to edit and maintain this file yourself. 3 | 4 | /drush.yml 5 | -------------------------------------------------------------------------------- /drupal/config/jsonapi.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: bbhVQEgCMWzCNQ9nBMR-PZeax3Tkujtue1HA7CE5574 3 | read_only: false 4 | maintenance_header_retry_seconds: 5 | min: 5 6 | max: 10 7 | -------------------------------------------------------------------------------- /drupal/config/system.file.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: mguGHCYb9Dw5EcpfjwoShGV1Vjkbz3QuPRCLfxiye-g 3 | allow_insecure_uploads: false 4 | default_scheme: public 5 | temporary_maximum_age: 21600 6 | -------------------------------------------------------------------------------- /drupal/config/taxonomy.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: zKpaWT6cJc1tVQQaTqatGELaCqU_oyRym6zTl27Yias 3 | maintain_index_table: true 4 | override_selector: false 5 | terms_per_page_admin: 100 6 | -------------------------------------------------------------------------------- /drupal/config/user.flood.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: UYfMzeP1S8jKm9PSvxf7nQNe8DsNS-3bc2WSNNXBQWs 3 | uid_only: false 4 | ip_limit: 50 5 | ip_window: 3600 6 | user_limit: 5 7 | user_window: 21600 8 | -------------------------------------------------------------------------------- /drupal/config/system.cron.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: f3yToH8v8EaBZU0NFFw2qR8ogSCuWVmQaN0hpYR1BD8 3 | threshold: 4 | requirements_warning: 172800 5 | requirements_error: 1209600 6 | logging: true 7 | -------------------------------------------------------------------------------- /drupal/config/contact.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: U69DBeuvXuNVOC15rVNaBjDPK2fWFbo9v4takdYSSO8 3 | default_form: feedback 4 | flood: 5 | limit: 5 6 | interval: 3600 7 | user_default_enabled: true 8 | -------------------------------------------------------------------------------- /react-decoupled-vite/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }) 8 | -------------------------------------------------------------------------------- /drupal/config/image.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: k-yDFHbqNfpe-Srg4sdCSqaosCl2D8uwyEY5esF8gEw 3 | preview_image: core/modules/image/sample.png 4 | allow_insecure_derivatives: false 5 | suppress_itok_output: false 6 | -------------------------------------------------------------------------------- /drupal/config/system.maintenance.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: 1SNdA25INsV5YjlgAJtfC-6AM8VcWe_00xneMLb2yFg 3 | langcode: en 4 | message: '@site is currently under maintenance. We should be back shortly. Thank you for your patience.' 5 | -------------------------------------------------------------------------------- /drupal/web/sites/default/.gitignore: -------------------------------------------------------------------------------- 1 | #ddev-generated: Automatically generated ddev .gitignore. 2 | # You can remove the above line if you want to edit and maintain this file yourself. 3 | /.gitignore 4 | 5 | /settings.ddev.php 6 | /drushrc.php 7 | -------------------------------------------------------------------------------- /drupal/config/shortcut.set.default.yml: -------------------------------------------------------------------------------- 1 | uuid: 50c801bc-7e8d-4888-81e6-a52d48410183 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: U5VlGjd_SfV0Qm_EfnaynOfc549cNscFAx48JfYoMRI 7 | id: default 8 | label: Default 9 | -------------------------------------------------------------------------------- /react-decoupled/src/components/NodeAdd.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NodeForm from './NodeForm'; 3 | 4 | const NodeAdd = ({ onSuccess }) => ( 5 | 9 | ); 10 | 11 | export default NodeAdd; 12 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/components/NodeAdd.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NodeForm from './NodeForm'; 3 | 4 | const NodeAdd = ({ onSuccess }) => ( 5 | 9 | ); 10 | 11 | export default NodeAdd; 12 | -------------------------------------------------------------------------------- /drupal/config/core.menu.static_menu_link_overrides.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: CXhei_vpaZk-3f_Mj2cH0YmpK-ZpKHoSzVA3yZrDq0g 3 | definitions: 4 | contact__site_page: 5 | menu_name: footer 6 | parent: '' 7 | weight: 0 8 | expanded: false 9 | enabled: true 10 | -------------------------------------------------------------------------------- /drupal/config/system.date.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: IVsFTD1mvR2NGBP_1myt9kFIFmGepH4PyaN5aQBYpno 3 | first_day: 0 4 | country: 5 | default: null 6 | timezone: 7 | default: America/Chicago 8 | user: 9 | configurable: true 10 | default: 0 11 | warn: false 12 | -------------------------------------------------------------------------------- /drupal/config/system.mail.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: 5PvD9swkqWUeHkabdvbJ2SQqdhrzjkCT21wtD4BLfk4 3 | interface: 4 | default: php_mail 5 | mailer_dsn: 6 | scheme: sendmail 7 | host: default 8 | user: null 9 | password: null 10 | port: null 11 | options: { } 12 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/js/src/components/NodeAdd.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NodeForm from './NodeForm'; 3 | 4 | const NodeAdd = ({ onSuccess }) => ( 5 | 9 | ); 10 | 11 | export default NodeAdd; 12 | -------------------------------------------------------------------------------- /react-decoupled/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom/extend-expect'; 6 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/main.jsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from 'react' 2 | import { createRoot } from 'react-dom/client' 3 | import './index.css' 4 | import App from './App.jsx' 5 | 6 | createRoot(document.getElementById('root')).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_date.yml: -------------------------------------------------------------------------------- 1 | uuid: 7e476b0c-4285-4f26-8f9f-2351e39c040e 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: EOQltUQPmgc6UQ2rcJ4Xi_leCEJj5ui0TR-12duS-Tk 7 | id: html_date 8 | label: 'HTML Date' 9 | locked: true 10 | pattern: Y-m-d 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_week.yml: -------------------------------------------------------------------------------- 1 | uuid: 0d678ae3-35d6-4c7d-a72c-daa6b123f4e1 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: wKD4WsoV_wFgv2vgI4mcAAFSIzrye17ykzdwrnApkfY 7 | id: html_week 8 | label: 'HTML Week' 9 | locked: true 10 | pattern: Y-\WW 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_year.yml: -------------------------------------------------------------------------------- 1 | uuid: e0da39e7-50fe-4b2a-a4ef-bdf6e31f80b9 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: OjekiQuX9RbVQ2_8jOHBL94RgYLePqX7wpfNGgcQzrk 7 | id: html_year 8 | label: 'HTML Year' 9 | locked: true 10 | pattern: 'Y' 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_month.yml: -------------------------------------------------------------------------------- 1 | uuid: 3e7c53d1-210e-4bac-afc7-f59b6c915cf9 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: Z7KuCUwM_WdTNvLcoltuX3_8d-s-8FZkTN6KgNwF0eM 7 | id: html_month 8 | label: 'HTML Month' 9 | locked: true 10 | pattern: Y-m 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_time.yml: -------------------------------------------------------------------------------- 1 | uuid: 9c5b1066-bde7-4bf9-b26b-13d3282b702a 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: M7yqicYkU36hRy5p9drAaGBBihhUD1OyujFrAaQ93ZE 7 | id: html_time 8 | label: 'HTML Time' 9 | locked: true 10 | pattern: 'H:i:s' 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.short.yml: -------------------------------------------------------------------------------- 1 | uuid: 8bb1acd5-7323-4014-9421-67a1bc627f16 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: AlzeyytA8InBgxIG9H2UDJYs3CG98Zj6yRsDKmlbZwA 7 | id: short 8 | label: 'Default short date' 9 | locked: false 10 | pattern: 'm/d/Y - H:i' 11 | -------------------------------------------------------------------------------- /drupal/config/system.menu.footer.yml: -------------------------------------------------------------------------------- 1 | uuid: a44e6676-52a3-4aab-9647-393549120ad1 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: 7yrlW5z9zdg2eBucB2GPqXKSMQfH9lSRSO4DbWF7AFc 7 | id: footer 8 | label: Footer 9 | description: 'Site information links' 10 | locked: true 11 | -------------------------------------------------------------------------------- /drupal/config/system.menu.main.yml: -------------------------------------------------------------------------------- 1 | uuid: 3c85ab48-e0f0-4316-b708-5a4d404b4886 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: Q2Ra3jfoIVk0f3SjxJX61byRQFVBAbpzYDQOiY-kno8 7 | id: main 8 | label: 'Main navigation' 9 | description: 'Site section links' 10 | locked: true 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.long.yml: -------------------------------------------------------------------------------- 1 | uuid: fe756ddf-729f-4b7f-b2ec-761f7508281b 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: og8sWXhBuHbLMw3CoiBEZjgqSyhFBFmcbUW_wLcfNbo 7 | id: long 8 | label: 'Default long date' 9 | locked: false 10 | pattern: 'l, F j, Y - H:i' 11 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/react_example_theme.info.yml: -------------------------------------------------------------------------------- 1 | name: React Example Theme 2 | type: theme 3 | description: 'A theme that loads React JavaScript libraries, and a basic React application.' 4 | core_version_requirement: ^9.5 || ^10 5 | base theme: olivero 6 | 7 | libraries: 8 | - react_example_theme/react_app 9 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.fallback.yml: -------------------------------------------------------------------------------- 1 | uuid: 95ed6f9f-cc6b-440b-b500-719a30c920a2 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: 7klS5IWXrwzVaPpYZFAs6wcx8U2FF1X73OfrtTsvuvE 7 | id: fallback 8 | label: 'Fallback date format' 9 | locked: true 10 | pattern: 'D, m/d/Y - H:i' 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.medium.yml: -------------------------------------------------------------------------------- 1 | uuid: 9a497d71-3937-4bce-a323-788f4a500069 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: nzL5d024NjXIX_8TlT6uFAu973lmfkmHklJC-2i9rAE 7 | id: medium 8 | label: 'Default medium date' 9 | locked: false 10 | pattern: 'D, m/d/Y - H:i' 11 | -------------------------------------------------------------------------------- /drupal/config/system.menu.admin.yml: -------------------------------------------------------------------------------- 1 | uuid: c2baf0e7-2c06-4d23-8947-a26910d08e98 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: sapEi2YDGoI9yQIT_WgIV2vUdQ6DScH0V3fAyTadAL0 7 | id: admin 8 | label: Administration 9 | description: 'Administrative task links' 10 | locked: true 11 | -------------------------------------------------------------------------------- /react-decoupled/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import './index.css'; 4 | import App from './App'; 5 | 6 | const root = ReactDOM.createRoot(document.getElementById('root')); 7 | root.render( 8 | 9 | 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_datetime.yml: -------------------------------------------------------------------------------- 1 | uuid: cb04bc46-85b9-4d99-b818-c8312c69aeac 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: jxfClwZIRXIdcvMrE--WkcZxDGUVoOIE3Sm2NRZlFuE 7 | id: html_datetime 8 | label: 'HTML Datetime' 9 | locked: true 10 | pattern: 'Y-m-d\TH:i:sO' 11 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.html_yearless_date.yml: -------------------------------------------------------------------------------- 1 | uuid: 3dc6ea6a-658c-4543-950b-f8bc4a36997e 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: 5VpawMrKPEPCkoO4YpPa0TDFO2dgiIHfTziJtwlmUxc 7 | id: html_yearless_date 8 | label: 'HTML Yearless date' 9 | locked: true 10 | pattern: m-d 11 | -------------------------------------------------------------------------------- /drupal/config/system.menu.tools.yml: -------------------------------------------------------------------------------- 1 | uuid: 5ca41714-1b31-41c9-b6f8-92f9d0da2dd4 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: BCM-vV1zzRaLHN18dqAR_CuGOj8AFJvTx7BKl_8Gcxc 7 | id: tools 8 | label: Tools 9 | description: 'User tool links, often added by modules' 10 | locked: true 11 | -------------------------------------------------------------------------------- /drupal/config/user.role.administrator.yml: -------------------------------------------------------------------------------- 1 | uuid: 4ddc9820-2d57-4121-ae4c-05d57d9c6fbb 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: OeKGIkmZA_c-t6QLH81WNQx8gDCc1MRmxaTuQgxBByU 7 | id: administrator 8 | label: Administrator 9 | weight: 3 10 | is_admin: true 11 | permissions: { } 12 | -------------------------------------------------------------------------------- /drupal/config/update.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: xbYr66-g0FjNgVBkGypCuN46vBI2XHntXN1URawq1s4 3 | check: 4 | disabled_extensions: false 5 | interval_days: 1 6 | fetch: 7 | url: null 8 | max_attempts: 2 9 | timeout: 30 10 | notification: 11 | emails: 12 | - admin@example.com 13 | threshold: all 14 | -------------------------------------------------------------------------------- /react-decoupled/src/components/NodeEdit.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NodeForm from "./NodeForm"; 3 | 4 | const NodeEdit = ({ id, title, body, onSuccess }) => ( 5 | 11 | ); 12 | 13 | export default NodeEdit; 14 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/components/NodeEdit.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NodeForm from "./NodeForm"; 3 | 4 | const NodeEdit = ({ id, title, body, onSuccess }) => ( 5 | 11 | ); 12 | 13 | export default NodeEdit; 14 | -------------------------------------------------------------------------------- /drupal/config/simple_oauth.oauth2_token.bundle.auth_code.yml: -------------------------------------------------------------------------------- 1 | uuid: e2280c50-fea5-412e-a640-44e82f5e4687 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: zYKaSl4QZrKMFj7aIhSGDRcBy4SoNjvY2EZlT7amrBk 7 | id: auth_code 8 | label: 'Auth code' 9 | description: 'The auth code type.' 10 | locked: true 11 | -------------------------------------------------------------------------------- /drupal/config/system.menu.account.yml: -------------------------------------------------------------------------------- 1 | uuid: d1b76d1a-b33f-49a6-a10d-7df32e9b9630 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: M_Bh81osDyUQ4wV0GgU_NdBNqkzM87sLxjaCdFj9mnw 7 | id: account 8 | label: 'User account menu' 9 | description: 'Links related to the active user account' 10 | locked: true 11 | -------------------------------------------------------------------------------- /react-decoupled/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import App from './App'; 4 | 5 | test('renders learn react link', () => { 6 | const { getByText } = render(); 7 | const linkElement = getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /drupal/config/block_content.type.basic.yml: -------------------------------------------------------------------------------- 1 | uuid: e4603126-27a6-41cf-875b-9d3eb9b49812 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: pQP5iQy4SdhAMVcjDUncCfkJmTofnHVtXrsMzx4k6Yk 7 | id: basic 8 | label: 'Basic block' 9 | revision: false 10 | description: 'A basic block contains a title and a body.' 11 | -------------------------------------------------------------------------------- /drupal/config/comment.type.comment.yml: -------------------------------------------------------------------------------- 1 | uuid: 80436c0f-dce9-4249-a508-28404b2bfb44 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: bqZsN31T2n0UjcbyCpOPi9D2iO0sAOHR7FnEs9qMvaA 7 | id: comment 8 | label: 'Default comments' 9 | target_entity_type_id: node 10 | description: 'Allows commenting on content' 11 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.node.rss.yml: -------------------------------------------------------------------------------- 1 | uuid: de4d2e6c-95ef-49f8-97c6-061aa512606f 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: l8fiAFE3Kng_6bhLlUDnVTkTDzXWxzYFrCWTrngVXEA 9 | id: node.rss 10 | label: RSS 11 | description: '' 12 | targetEntityType: node 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/simple_oauth.oauth2_token.bundle.access_token.yml: -------------------------------------------------------------------------------- 1 | uuid: ea1fa420-714b-4a36-a20f-3c41c30c3574 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: z9ULI9nj9yt73YKI3ZE8v9yXhkVfvQsDJToEDzijcxY 7 | id: access_token 8 | label: 'Access Token' 9 | description: 'The access token type.' 10 | locked: true 11 | -------------------------------------------------------------------------------- /drupal/config/simple_oauth.oauth2_token.bundle.refresh_token.yml: -------------------------------------------------------------------------------- 1 | uuid: 6472b420-a3e5-402e-897d-1591a21c3349 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: YWMv3Do9fsPFhylyFkOwcqcFP4jSU6DLRootOlgrC0M 7 | id: refresh_token 8 | label: 'Refresh token' 9 | description: 'The refresh token type.' 10 | locked: true 11 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/js/src/components/NodeEdit.jsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import NodeForm from "./NodeForm"; 3 | 4 | const NodeEdit = ({ id, title, body, onSuccess }) => ( 5 | 11 | ); 12 | 13 | export default NodeEdit; 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.node.teaser.yml: -------------------------------------------------------------------------------- 1 | uuid: 9712206b-d595-470e-8696-252ecb54f369 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: KgGJDZFpMaz_8bTv6fN1bXS3Qi5LWmRJI9R53kEGsNQ 9 | id: node.teaser 10 | label: Teaser 11 | description: '' 12 | targetEntityType: node 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_form_mode.user.register.yml: -------------------------------------------------------------------------------- 1 | uuid: afd2437b-9129-41fc-b592-8d26b693c902 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: 5pE_4hurqtIlZN3XDi7eTo5RG13BMG0Rh9HYlRI3h8U 9 | id: user.register 10 | label: Register 11 | description: '' 12 | targetEntityType: user 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.node.full.yml: -------------------------------------------------------------------------------- 1 | uuid: 9a2bb549-1ea1-49b8-b3a8-f245c7951004 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: QJ2aZ1xfVf59aq6Pz5X7fyUOa2HxuCoTwQ_RQjoulAU 9 | id: node.full 10 | label: 'Full content' 11 | description: '' 12 | targetEntityType: node 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.user.compact.yml: -------------------------------------------------------------------------------- 1 | uuid: ba63c8dc-5513-4223-9c71-2ccf81ab6c35 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: TtD7OuGskOsQfoGyxXkrdtllBpR37J19d5BMQDZWJgA 9 | id: user.compact 10 | label: Compact 11 | description: '' 12 | targetEntityType: user 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.user.full.yml: -------------------------------------------------------------------------------- 1 | uuid: 8e4824e9-af3b-479a-b1d4-d02cc2d1bbf6 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: ZbXunWS_xAvMZXFfinyvClDAb_RCVLt7gAzE3v16E-Q 9 | id: user.full 10 | label: 'User account' 11 | description: '' 12 | targetEntityType: user 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/search.page.help_search.yml: -------------------------------------------------------------------------------- 1 | uuid: 98f67dd7-22b5-4d6d-b905-bf04ca308a9c 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - help 7 | _core: 8 | default_config_hash: RZ-bcSekNSsAbIPLW7Gmyd3uUjIOSrPvnb8RCCZYJm8 9 | id: help_search 10 | label: Help 11 | path: help 12 | weight: 0 13 | plugin: help_search 14 | configuration: { } 15 | -------------------------------------------------------------------------------- /drupal/config/search.page.user_search.yml: -------------------------------------------------------------------------------- 1 | uuid: 1c84339f-a8a4-4a17-8b42-1bd8c0461c6a 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: k3aUaZXGDuhkek2TZIee0PApOPTvYZLadziekdyHA5A 9 | id: user_search 10 | label: Users 11 | path: user 12 | weight: 0 13 | plugin: user_search 14 | configuration: { } 15 | -------------------------------------------------------------------------------- /drupal/config/core.date_format.olivero_medium.yml: -------------------------------------------------------------------------------- 1 | uuid: b024dfd3-17dd-49c3-b845-ad6d9c23f660 2 | langcode: en 3 | status: true 4 | dependencies: 5 | enforced: 6 | theme: 7 | - olivero 8 | _core: 9 | default_config_hash: Mt6cmxUbDZ9XxD6p25WQ8tj3_JcX8ylfcddwZc8gcAE 10 | id: olivero_medium 11 | label: 'Olivero Medium' 12 | locked: false 13 | pattern: 'j F, Y' 14 | -------------------------------------------------------------------------------- /drupal/config/taxonomy.vocabulary.tags.yml: -------------------------------------------------------------------------------- 1 | uuid: f094ac98-03e6-43d3-a5e5-06c08f6f62f5 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: iTEzwrEQ_4JIb-OYGiqzyF2TmMgWyWayresXcWgwGWM 7 | name: Tags 8 | vid: tags 9 | description: 'Use tags to group articles on similar topics into categories.' 10 | weight: 0 11 | new_revision: false 12 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.comment.full.yml: -------------------------------------------------------------------------------- 1 | uuid: 427a52c5-54a1-430c-b266-60ee4c878289 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - comment 7 | _core: 8 | default_config_hash: N4mUjXpPckUkVRY1PbKw4GGoL1i2ECU7PL3EreiKStk 9 | id: comment.full 10 | label: 'Full comment' 11 | description: '' 12 | targetEntityType: comment 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.node.search_index.yml: -------------------------------------------------------------------------------- 1 | uuid: 60696a3e-0d88-40f3-b2bd-07b2ce4bcbb6 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: r_A0T3aTqGDwLyvoH7wLps-0PM--RHlS8UsiJe_Ac64 9 | id: node.search_index 10 | label: 'Search index' 11 | description: '' 12 | targetEntityType: node 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/contact.form.personal.yml: -------------------------------------------------------------------------------- 1 | uuid: 0b2bcbb3-6dd6-4674-8eb9-82b18996207c 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: jonvgt3CkUM2eMLTFwWfHileWWDC4YtXCuIlCahTk_I 7 | id: personal 8 | label: 'Personal contact form' 9 | recipients: { } 10 | reply: '' 11 | weight: 0 12 | message: 'Your message has been sent.' 13 | redirect: '' 14 | -------------------------------------------------------------------------------- /drupal/config/search.page.node_search.yml: -------------------------------------------------------------------------------- 1 | uuid: 76e7de16-b540-4fd4-9caf-09fbef6d98e7 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: 97tvtzGOa8_flb22CzSjgtm_YkiGMHvEBO-6q2K9V_U 9 | id: node_search 10 | label: Content 11 | path: node 12 | weight: -10 13 | plugin: node_search 14 | configuration: 15 | rankings: { } 16 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_save_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 8ebd7653-7e08-4927-9a93-7249c1a96fbc 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: LhdsoZPL_pFas2fjaAWue4zvrQ_tEVofLYtcNec-JGM 9 | id: node_save_action 10 | label: 'Save content' 11 | type: node 12 | plugin: 'entity:save_action:node' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.block_content.full.yml: -------------------------------------------------------------------------------- 1 | uuid: c1cda967-5a48-4062-95c6-5ab2f5b60917 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - block_content 7 | _core: 8 | default_config_hash: Q7yUUYeRLByl-MCGveKKF_KhAtNICLCMJuKWfugCvso 9 | id: block_content.full 10 | label: Full 11 | description: '' 12 | targetEntityType: block_content 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_delete_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 2086c178-c46f-4823-a264-7ae11b8f6147 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: t43OqwzP3CTbcAagSsWKNy6KwMm_zShXo3c4-So6rQg 9 | id: node_delete_action 10 | label: 'Delete content' 11 | type: node 12 | plugin: 'entity:delete_action:node' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /react-decoupled-vite/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_publish_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 4bd89fc9-4ebf-4bde-9ce4-ece3d60575bc 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: 2B9uF8NL5gutNKSdPRAhhAsDWFZZG1PJOBmx0aBGd_0 9 | id: node_publish_action 10 | label: 'Publish content' 11 | type: node 12 | plugin: 'entity:publish_action:node' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/contact.form.feedback.yml: -------------------------------------------------------------------------------- 1 | uuid: 77c69f17-fa74-4db4-bce3-cd773ce55e3d 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: vymHlgJy26BuI5GGj9-IXjwR3dRC5C0tij4BpWJnoqw 7 | id: feedback 8 | label: 'Website feedback' 9 | recipients: 10 | - admin@example.com 11 | reply: '' 12 | weight: 0 13 | message: 'Your message has been sent.' 14 | redirect: '' 15 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.taxonomy_term.full.yml: -------------------------------------------------------------------------------- 1 | uuid: 1272dc32-a0ec-49f9-9256-940ac5a4f89f 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - taxonomy 7 | _core: 8 | default_config_hash: iukUENpf8CFvjZbGGacKX_Ges0-lU9z6zvsd32P6kbo 9 | id: taxonomy_term.full 10 | label: 'Taxonomy term page' 11 | description: '' 12 | targetEntityType: taxonomy_term 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.comment_save_action.yml: -------------------------------------------------------------------------------- 1 | uuid: da881368-cb50-4279-97f6-1866fd376b13 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - comment 7 | _core: 8 | default_config_hash: lfyE_snmvfg_EQ3VDyhUtGAXgmqtEiqa46I3bTMg8DU 9 | id: comment_save_action 10 | label: 'Save comment' 11 | type: comment 12 | plugin: 'entity:save_action:comment' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_promote_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 2ff43a93-b644-4e8e-b9b8-de127271bd8c 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: N0RDBTqiK4dKoN4p4oW2j0SGWycdHyALUe9M-Ofp89U 9 | id: node_promote_action 10 | label: 'Promote content to front page' 11 | type: node 12 | plugin: node_promote_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_add_role_action.oauth.yml: -------------------------------------------------------------------------------- 1 | uuid: d6fdd47f-1601-4778-972f-0ee454ecf860 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - user.role.oauth 7 | module: 8 | - user 9 | id: user_add_role_action.oauth 10 | label: 'Add the OAUTH role to the selected user(s)' 11 | type: user 12 | plugin: user_add_role_action 13 | configuration: 14 | rid: oauth 15 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_mode.node.search_result.yml: -------------------------------------------------------------------------------- 1 | uuid: 0b4e4d7b-6b79-4e84-beab-e40565b8d1d1 2 | langcode: en 3 | status: false 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: d8wBEm7XvJ6H3S0IneDD9PfTBklPIH7GMpxElVemPf8 9 | id: node.search_result 10 | label: 'Search result highlighting input' 11 | description: '' 12 | targetEntityType: node 13 | cache: true 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.comment_delete_action.yml: -------------------------------------------------------------------------------- 1 | uuid: da1e6eb1-0c39-425f-b4f0-3a2a7986c273 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - comment 7 | _core: 8 | default_config_hash: vpBH8OmL4sdesCdeZLsW8KOutB5gkbreWJbfjhfFKaQ 9 | id: comment_delete_action 10 | label: 'Delete comment' 11 | type: comment 12 | plugin: 'entity:delete_action:comment' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_make_sticky_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 3c86040a-6d02-43fb-883b-3dba433b77e5 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: sOb26JSy3fGpWkvR0WYN6_hMqj_6d1rvbvrkzp1yya0 9 | id: node_make_sticky_action 10 | label: 'Make content sticky' 11 | type: node 12 | plugin: node_make_sticky_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_unpublish_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 4f47e761-0c3a-4724-ad4b-016c9f900540 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: C7X8h9FWlwkQ9y5mnU2JzgaZICAdc6HFbPVbhvjlAYE 9 | id: node_unpublish_action 10 | label: 'Unpublish content' 11 | type: node 12 | plugin: 'entity:unpublish_action:node' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_block_user_action.yml: -------------------------------------------------------------------------------- 1 | uuid: ae118994-6ba0-4a72-b8c7-a4ac626895b1 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: DyypzTfThX10FFQw-399qPfEbLLyrhXgQrKPVsmAoJ4 9 | id: user_block_user_action 10 | label: 'Block the selected user(s)' 11 | type: user 12 | plugin: user_block_user_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.comment_publish_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 40f09fcc-f019-46f2-8e53-c9b70f0ae642 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - comment 7 | _core: 8 | default_config_hash: C00dyL_W_5M0nFlgUB3lWUTUs96jn51Jw1MLHVEHZD0 9 | id: comment_publish_action 10 | label: 'Publish comment' 11 | type: comment 12 | plugin: 'entity:publish_action:comment' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_make_unsticky_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 33fc9f5b-0d2b-4a6e-ad9c-2decf1043e80 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: lDM9mvIGAu8Sw8rt-uCO4Sr7yX5VPrDPxYcawkbKd6k 9 | id: node_make_unsticky_action 10 | label: 'Make content unsticky' 11 | type: node 12 | plugin: node_make_unsticky_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.node_unpromote_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 4f67685f-2f74-4eaa-9ec1-00286c70f260 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | _core: 8 | default_config_hash: JBptjnfuOMtsdKygklXxoOgeOCTMtQxlkymjnnj-cC0 9 | id: node_unpromote_action 10 | label: 'Remove content from front page' 11 | type: node 12 | plugin: node_unpromote_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_remove_role_action.oauth.yml: -------------------------------------------------------------------------------- 1 | uuid: 9556e2c1-3f51-4adb-960b-426959573c23 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - user.role.oauth 7 | module: 8 | - user 9 | id: user_remove_role_action.oauth 10 | label: 'Remove the OAUTH role from the selected user(s)' 11 | type: user 12 | plugin: user_remove_role_action 13 | configuration: 14 | rid: oauth 15 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_unblock_user_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 876fbe40-7329-4f95-a316-97dcb7a210e8 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: SPsUXsR3Rc8d1y3gewzaAKWa1ncea_ywXX3f7LTn7k0 9 | id: user_unblock_user_action 10 | label: 'Unblock the selected user(s)' 11 | type: user 12 | plugin: user_unblock_user_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.site.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: ijfbzDTN4CbE7Sr-6ubWzy_t1vH4OtU1doNCLssVz-4 3 | langcode: en 4 | uuid: 9323f5b7-2a4c-4429-9e7c-ded5a60bdadd 5 | name: 'Drush Site-Install' 6 | mail: admin@example.com 7 | slogan: '' 8 | page: 9 | 403: '' 10 | 404: '' 11 | front: /node 12 | admin_compact_mode: false 13 | weight_select_max: 100 14 | default_langcode: en 15 | mail_notification: null 16 | -------------------------------------------------------------------------------- /drupal/config/system.action.comment_unpublish_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 97458019-a612-4551-8362-b90fbcabe5ac 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - comment 7 | _core: 8 | default_config_hash: tWOIjSMobEWOFZddMkNqb9JySbOVwE1diC6NRqcfLTk 9 | id: comment_unpublish_action 10 | label: 'Unpublish comment' 11 | type: comment 12 | plugin: 'entity:unpublish_action:comment' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_cancel_user_action.yml: -------------------------------------------------------------------------------- 1 | uuid: c406813d-b8d0-4c84-bd87-bd385a47bc26 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - user 7 | _core: 8 | default_config_hash: nvrL9bFilzBvm2bjO9rQnFDpBA7dBBUjShSSt6NS-DU 9 | id: user_cancel_user_action 10 | label: 'Cancel the selected user account(s)' 11 | type: user 12 | plugin: user_cancel_user_action 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.theme.global.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: KZiV2LB312xgJBphfq5BTjmp16xiR5KM8InBJ-pff7Y 3 | favicon: 4 | mimetype: image/vnd.microsoft.icon 5 | path: '' 6 | url: '' 7 | use_default: true 8 | features: 9 | comment_user_picture: true 10 | comment_user_verification: true 11 | favicon: true 12 | node_user_picture: true 13 | logo: 14 | path: '' 15 | url: null 16 | use_default: true 17 | -------------------------------------------------------------------------------- /react-decoupled/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /drupal/config/node.type.page.yml: -------------------------------------------------------------------------------- 1 | uuid: b77070db-8b92-432b-994b-4430a14ec6f1 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: i0snV8Wj--OkRW12UdachUiYiz3FbeMwHu_pZYfzKLc 7 | name: 'Basic page' 8 | type: page 9 | description: "Use basic pages for your static content, such as an 'About us' page." 10 | help: null 11 | new_revision: true 12 | preview_mode: 1 13 | display_submitted: false 14 | -------------------------------------------------------------------------------- /drupal/config/simple_oauth.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: KsPFWSp6mgXIQgjBJEShfKUGn6VLRlbpIJ2EysXvXWM 3 | scope_provider: dynamic 4 | token_cron_batch_size: 0 5 | public_key: ../keys/public.key 6 | private_key: ../keys/private.key 7 | disable_openid_connect: false 8 | access_token_expiration: 300 9 | authorization_code_expiration: 300 10 | refresh_token_expiration: 1209600 11 | remember_clients: true 12 | use_implicit: false 13 | -------------------------------------------------------------------------------- /drupal/config/system.action.taxonomy_term_publish_action.yml: -------------------------------------------------------------------------------- 1 | uuid: 661ecb1e-76d8-4496-800e-9b76e99b5cf6 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - taxonomy 7 | _core: 8 | default_config_hash: DoVt_VGgVLcDD4XmVbSFzr0K17SJy9imFiYusKkJBgY 9 | id: taxonomy_term_publish_action 10 | label: 'Publish taxonomy term' 11 | type: taxonomy_term 12 | plugin: 'entity:publish_action:taxonomy_term' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_add_role_action.administrator.yml: -------------------------------------------------------------------------------- 1 | uuid: e8768c02-2535-4b84-a1be-6afce4362935 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - user.role.administrator 7 | module: 8 | - user 9 | id: user_add_role_action.administrator 10 | label: 'Add the Administrator role to the selected user(s)' 11 | type: user 12 | plugin: user_add_role_action 13 | configuration: 14 | rid: administrator 15 | -------------------------------------------------------------------------------- /react-decoupled-vite/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /drupal/.editorconfig: -------------------------------------------------------------------------------- 1 | # Drupal editor configuration normalization 2 | # @see http://editorconfig.org/ 3 | 4 | # This is the top-most .editorconfig file; do not search in parent directories. 5 | root = true 6 | 7 | # All files. 8 | [*] 9 | end_of_line = LF 10 | indent_style = space 11 | indent_size = 2 12 | charset = utf-8 13 | trim_trailing_whitespace = true 14 | insert_final_newline = true 15 | 16 | [composer.{json,lock}] 17 | indent_size = 4 18 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_add_role_action.content_editor.yml: -------------------------------------------------------------------------------- 1 | uuid: e8542a1d-8232-499f-8d03-e61d179fc21e 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - user.role.content_editor 7 | module: 8 | - user 9 | id: user_add_role_action.content_editor 10 | label: 'Add the Content editor role to the selected user(s)' 11 | type: user 12 | plugin: user_add_role_action 13 | configuration: 14 | rid: content_editor 15 | -------------------------------------------------------------------------------- /react-decoupled/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /drupal/config/node.type.article.yml: -------------------------------------------------------------------------------- 1 | uuid: 235d03db-1c41-43a7-8433-4c62f8b54299 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: Fe3N1uqaAyyKJbVkqT-btXy3t98puW8GCRD822xjl10 7 | name: Article 8 | type: article 9 | description: 'Use articles for time-sensitive content like news, press releases or blog posts.' 10 | help: null 11 | new_revision: true 12 | preview_mode: 1 13 | display_submitted: true 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.taxonomy_term_unpublish_action.yml: -------------------------------------------------------------------------------- 1 | uuid: ef013ef3-8ac0-4cb9-b333-a43e648e985f 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - taxonomy 7 | _core: 8 | default_config_hash: z2sNRM3ECa7FPCGnSNje_9SmZJQgwhD_6fG_L4Mr8zI 9 | id: taxonomy_term_unpublish_action 10 | label: 'Unpublish taxonomy term' 11 | type: taxonomy_term 12 | plugin: 'entity:unpublish_action:taxonomy_term' 13 | configuration: { } 14 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_remove_role_action.administrator.yml: -------------------------------------------------------------------------------- 1 | uuid: 43a03a10-5a52-44cc-8f69-7ec9605f24ae 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - user.role.administrator 7 | module: 8 | - user 9 | id: user_remove_role_action.administrator 10 | label: 'Remove the Administrator role from the selected user(s)' 11 | type: user 12 | plugin: user_remove_role_action 13 | configuration: 14 | rid: administrator 15 | -------------------------------------------------------------------------------- /drupal/config/system.action.user_remove_role_action.content_editor.yml: -------------------------------------------------------------------------------- 1 | uuid: e8831aa2-0110-4f55-b593-0d71e1b5940f 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - user.role.content_editor 7 | module: 8 | - user 9 | id: user_remove_role_action.content_editor 10 | label: 'Remove the Content editor role from the selected user(s)' 11 | type: user 12 | plugin: user_remove_role_action 13 | configuration: 14 | rid: content_editor 15 | -------------------------------------------------------------------------------- /drupal/config/search.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: hvVxL1G-ZCxaq32IZws0YsfuhvaDiQE_np-0g35KjUk 3 | and_or_limit: 7 4 | default_page: node_search 5 | index: 6 | cron_limit: 100 7 | overlap_cjk: true 8 | minimum_word_size: 3 9 | tag_weights: 10 | h1: 25 11 | h2: 18 12 | h3: 15 13 | h4: 14 14 | h5: 9 15 | h6: 6 16 | u: 3 17 | b: 3 18 | i: 3 19 | strong: 3 20 | em: 3 21 | a: 10 22 | logging: false 23 | -------------------------------------------------------------------------------- /drupal/config/file.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: 2bwjZB1IjEYbppgZT3g7YW_5h_LDZYNa3DaDEfWX82U 3 | description: 4 | type: textfield 5 | length: 128 6 | icon: 7 | directory: core/modules/file/icons 8 | make_unused_managed_files_temporary: false 9 | filename_sanitization: 10 | transliterate: false 11 | replace_whitespace: false 12 | replace_non_alphanumeric: false 13 | deduplicate_separators: false 14 | lowercase: false 15 | replacement_character: '-' 16 | -------------------------------------------------------------------------------- /drupal/config/olivero.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: 1TswGK46jyu77aIM7Z-0JVQs5bxHmo-gtgrvrQGMXxc 3 | favicon: 4 | use_default: true 5 | features: 6 | comment_user_picture: true 7 | comment_user_verification: true 8 | favicon: true 9 | node_user_picture: false 10 | logo: 11 | use_default: false 12 | third_party_settings: 13 | shortcut: 14 | module_link: true 15 | mobile_menu_all_widths: 0 16 | site_branding_bg_color: default 17 | base_primary_color: '#1b9ae4' 18 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_help.yml: -------------------------------------------------------------------------------- 1 | uuid: 9bbb63e6-c41f-4fb4-b2cd-a6b9cd1c13ce 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - help 7 | theme: 8 | - claro 9 | _core: 10 | default_config_hash: jccFSSVqV0WCDb6NtML1VWAWTtDbZ-zn5YgTRMgMrIM 11 | id: claro_help 12 | theme: claro 13 | region: help 14 | weight: 0 15 | provider: null 16 | plugin: help_block 17 | settings: 18 | id: help_block 19 | label: Help 20 | label_display: '0' 21 | provider: help 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_page_title.yml: -------------------------------------------------------------------------------- 1 | uuid: ff0eadbc-4191-41e4-8543-dc2f47ae4742 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - claro 7 | _core: 8 | default_config_hash: fNwDdW063tk_ktzSWzZVeQS9wzvLooVO280BQ9WrsIs 9 | id: claro_page_title 10 | theme: claro 11 | region: header 12 | weight: -30 13 | provider: null 14 | plugin: page_title_block 15 | settings: 16 | id: page_title_block 17 | label: 'Page title' 18 | label_display: '0' 19 | provider: core 20 | visibility: { } 21 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | border: 1px solid #000; 3 | margin: 1em auto; 4 | max-width: 600px; 5 | padding: 1em; 6 | } 7 | 8 | hr { 9 | border: 1px solid palevioletred; 10 | } 11 | 12 | input, textarea, button { 13 | border: 1px solid #444; 14 | margin: 0.5em 0.5em 0.5em 0; 15 | padding: 0.5em; 16 | } 17 | 18 | input[type="submit"] { 19 | padding: 0.5em; 20 | } 21 | 22 | button:hover, 23 | input[type="submit"]:hover { 24 | border-color: yellowgreen; 25 | cursor: pointer; 26 | } 27 | -------------------------------------------------------------------------------- /react-decoupled/src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | border: 1px solid #000; 3 | margin: 1em auto; 4 | max-width: 600px; 5 | padding: 1em; 6 | } 7 | 8 | hr { 9 | border: 1px solid palevioletred; 10 | } 11 | 12 | input, textarea, button { 13 | border: 1px solid #444; 14 | margin: 0.5em 0.5em 0.5em 0; 15 | padding: 0.5em; 16 | } 17 | 18 | input[type="submit"] { 19 | padding: 0.5em; 20 | } 21 | 22 | button:hover, 23 | input[type="submit"]:hover { 24 | border-color: yellowgreen; 25 | cursor: pointer; 26 | } 27 | 28 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_help.yml: -------------------------------------------------------------------------------- 1 | uuid: 3b2f15a5-58c5-4f8c-a310-be7fde404b03 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - help 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: VfPFqqxfkomud5CO8DUijw85QIl9GIxh_nIxLOYESxg 11 | id: olivero_help 12 | theme: olivero 13 | region: content_above 14 | weight: 0 15 | provider: null 16 | plugin: help_block 17 | settings: 18 | id: help_block 19 | label: Help 20 | label_display: '0' 21 | provider: help 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /react-decoupled/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "pwa-chrome", 9 | "request": "launch", 10 | "name": "Launch Chrome against localhost", 11 | "url": "http://localhost:3000", 12 | "webRoot": "${workspaceFolder}" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_page_title.yml: -------------------------------------------------------------------------------- 1 | uuid: ccae60db-1f87-4d04-85a0-9781b72f1d43 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - olivero 7 | _core: 8 | default_config_hash: 6aOgWsNTXjqrDm98TXSAjP6qd2nCijD1xw45MrnbK-Y 9 | id: olivero_page_title 10 | theme: olivero 11 | region: content_above 12 | weight: -5 13 | provider: null 14 | plugin: page_title_block 15 | settings: 16 | id: page_title_block 17 | label: 'Page title' 18 | label_display: '0' 19 | provider: core 20 | visibility: { } 21 | -------------------------------------------------------------------------------- /drupal/config/field.storage.node.body.yml: -------------------------------------------------------------------------------- 1 | uuid: 192b5da0-9a9b-4b49-8ad2-b20fef874251 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | - text 8 | _core: 9 | default_config_hash: EBUo7qOWqaiZaQ_RC9sLY5IoDKphS34v77VIHSACmVY 10 | id: node.body 11 | field_name: body 12 | entity_type: node 13 | type: text_with_summary 14 | settings: { } 15 | module: text 16 | locked: false 17 | cardinality: 1 18 | translatable: true 19 | indexes: { } 20 | persist_with_no_fields: true 21 | custom_storage: false 22 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_local_actions.yml: -------------------------------------------------------------------------------- 1 | uuid: 0a670b4c-e030-418c-bd10-885b987e386c 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - claro 7 | _core: 8 | default_config_hash: CdXfDmRgAvms7EQovxxWPdYi0GitxeRbVtScYK16ZH0 9 | id: claro_local_actions 10 | theme: claro 11 | region: content 12 | weight: -10 13 | provider: null 14 | plugin: local_actions_block 15 | settings: 16 | id: local_actions_block 17 | label: 'Primary admin actions' 18 | label_display: '0' 19 | provider: core 20 | visibility: { } 21 | -------------------------------------------------------------------------------- /drupal/config/simple_oauth.oauth2_scope.oauth.yml: -------------------------------------------------------------------------------- 1 | uuid: cdd21559-1592-472f-92f1-e98f299ebccd 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | id: oauth 6 | name: oauth 7 | description: OAUTH 8 | grant_types: 9 | authorization_code: 10 | status: true 11 | description: '' 12 | refresh_token: 13 | status: true 14 | description: '' 15 | client_credentials: 16 | status: false 17 | description: '' 18 | umbrella: false 19 | parent: _none 20 | granularity_id: role 21 | granularity_configuration: 22 | role: oauth 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_content.yml: -------------------------------------------------------------------------------- 1 | uuid: 2ae7124d-216d-4fb5-85cd-4b551ee8878f 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - claro 9 | _core: 10 | default_config_hash: a0Yyx1GeyKarZ4T_yXQBR_ZFKnXiFLtxAb6gWLd8nr0 11 | id: claro_content 12 | theme: claro 13 | region: content 14 | weight: 0 15 | provider: null 16 | plugin: system_main_block 17 | settings: 18 | id: system_main_block 19 | label: 'Main page content' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/field.storage.comment.comment_body.yml: -------------------------------------------------------------------------------- 1 | uuid: b0fb6e54-15a7-46d3-9c84-70e76ce0937a 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - comment 7 | - text 8 | _core: 9 | default_config_hash: swYoCch_hY8QO5uwr4FURplfnUCUlpPB4idF8WGVCpw 10 | id: comment.comment_body 11 | field_name: comment_body 12 | entity_type: comment 13 | type: text_long 14 | settings: { } 15 | module: text 16 | locked: false 17 | cardinality: 1 18 | translatable: true 19 | indexes: { } 20 | persist_with_no_fields: true 21 | custom_storage: false 22 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_content.yml: -------------------------------------------------------------------------------- 1 | uuid: ad1c45f3-dd58-446c-a604-02ee27e0eab6 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: erQSEZF2XUjNmgTl0uNRBzmg18ZGXwUcw2FhApoeuHk 11 | id: olivero_content 12 | theme: olivero 13 | region: content 14 | weight: 0 15 | provider: null 16 | plugin: system_main_block 17 | settings: 18 | id: system_main_block 19 | label: 'Main page content' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/field.storage.node.comment.yml: -------------------------------------------------------------------------------- 1 | uuid: 39bcef95-f357-4c84-8088-2d8e5690ee5d 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - comment 7 | - node 8 | _core: 9 | default_config_hash: ktCna9xmWvYZIUfOCUyDQvedn5RtnS4CRmEIwNmvYjc 10 | id: node.comment 11 | field_name: comment 12 | entity_type: node 13 | type: comment 14 | settings: 15 | comment_type: comment 16 | module: comment 17 | locked: false 18 | cardinality: 1 19 | translatable: true 20 | indexes: { } 21 | persist_with_no_fields: false 22 | custom_storage: false 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_breadcrumbs.yml: -------------------------------------------------------------------------------- 1 | uuid: a08439e0-d614-4096-9f99-0b8377ca32a3 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - claro 9 | _core: 10 | default_config_hash: NjcxOBrPOiK5-38t56DwFBDVY4yer7YSlbRWXFuHe7A 11 | id: claro_breadcrumbs 12 | theme: claro 13 | region: breadcrumb 14 | weight: 0 15 | provider: null 16 | plugin: system_breadcrumb_block 17 | settings: 18 | id: system_breadcrumb_block 19 | label: Breadcrumbs 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_messages.yml: -------------------------------------------------------------------------------- 1 | uuid: 4f489567-a4da-4135-b038-36ca729977b8 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - claro 9 | _core: 10 | default_config_hash: '-Ac3ISpIT0PQ-whzD7_dw0SdKi6dAbRFNWdSjOiVDqg' 11 | id: claro_messages 12 | theme: claro 13 | region: highlighted 14 | weight: 0 15 | provider: null 16 | plugin: system_messages_block 17 | settings: 18 | id: system_messages_block 19 | label: 'Status messages' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_primary_admin_actions.yml: -------------------------------------------------------------------------------- 1 | uuid: 777c3058-7e5a-482c-9ce2-4c0e06a3b81d 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - olivero 7 | _core: 8 | default_config_hash: Q9_2whdOj1YIomfvsIfopROW4FT_X5pY0DjdOiOaQ5U 9 | id: olivero_primary_admin_actions 10 | theme: olivero 11 | region: highlighted 12 | weight: -5 13 | provider: null 14 | plugin: local_actions_block 15 | settings: 16 | id: local_actions_block 17 | label: 'Primary admin actions' 18 | label_display: '0' 19 | provider: core 20 | visibility: { } 21 | -------------------------------------------------------------------------------- /drupal/config/field.storage.block_content.body.yml: -------------------------------------------------------------------------------- 1 | uuid: 47439c08-1163-463c-bc11-aef4a7add8a2 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - block_content 7 | - text 8 | _core: 9 | default_config_hash: eS0snV_L3dx9shtWRTzm5eblwOJ7qKWC9IE-4GMTDFc 10 | id: block_content.body 11 | field_name: body 12 | entity_type: block_content 13 | type: text_with_summary 14 | settings: { } 15 | module: text 16 | locked: false 17 | cardinality: 1 18 | translatable: true 19 | indexes: { } 20 | persist_with_no_fields: true 21 | custom_storage: false 22 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_breadcrumbs.yml: -------------------------------------------------------------------------------- 1 | uuid: 4e93f851-c91d-4d09-b0cb-8932f7ed1eb6 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: VhBzWb7lMRtIOg9G7VSw_0uopi-7zXeHq4vXqqV1HFE 11 | id: olivero_breadcrumbs 12 | theme: olivero 13 | region: breadcrumb 14 | weight: 0 15 | provider: null 16 | plugin: system_breadcrumb_block 17 | settings: 18 | id: system_breadcrumb_block 19 | label: Breadcrumbs 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_messages.yml: -------------------------------------------------------------------------------- 1 | uuid: 9ccfc920-b3ed-448a-82a3-82b7bd264f68 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: BZ5tpW7H8X4PVGRm3MImTIHd2tN0eF7zOtp4SpRYUA0 11 | id: olivero_messages 12 | theme: olivero 13 | region: highlighted 14 | weight: -5 15 | provider: null 16 | plugin: system_messages_block 17 | settings: 18 | id: system_messages_block 19 | label: 'Status messages' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_help.yml: -------------------------------------------------------------------------------- 1 | uuid: 6ac1853c-6e40-45cf-94fc-d33e58e334b8 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - help 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: VfPFqqxfkomud5CO8DUijw85QIl9GIxh_nIxLOYESxg 11 | id: react_example_theme_help 12 | theme: react_example_theme 13 | region: sidebar_first 14 | weight: 0 15 | provider: null 16 | plugin: help_block 17 | settings: 18 | id: help_block 19 | label: Help 20 | label_display: '0' 21 | provider: help 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_page_title.yml: -------------------------------------------------------------------------------- 1 | uuid: 6538094c-acdf-4f91-b404-b5f1c1c00fa5 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - react_example_theme 7 | _core: 8 | default_config_hash: 6aOgWsNTXjqrDm98TXSAjP6qd2nCijD1xw45MrnbK-Y 9 | id: react_example_theme_page_title 10 | theme: react_example_theme 11 | region: sidebar_first 12 | weight: -5 13 | provider: null 14 | plugin: page_title_block 15 | settings: 16 | id: page_title_block 17 | label: 'Page title' 18 | label_display: '0' 19 | provider: core 20 | visibility: { } 21 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_primary_local_tasks.yml: -------------------------------------------------------------------------------- 1 | uuid: 3f763052-4ef9-4e13-a3ca-13d5d5614a68 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - claro 7 | _core: 8 | default_config_hash: ACjBZI5shAMiiUpsz-inLYVXDqNNXRnSzAWV3kV_8Hw 9 | id: claro_primary_local_tasks 10 | theme: claro 11 | region: header 12 | weight: 0 13 | provider: null 14 | plugin: local_tasks_block 15 | settings: 16 | id: local_tasks_block 17 | label: 'Primary tabs' 18 | label_display: '0' 19 | provider: core 20 | primary: true 21 | secondary: false 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_powered.yml: -------------------------------------------------------------------------------- 1 | uuid: a5a6748c-82ea-4601-92a8-2f6de2c4ca14 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: eYL19CLDyinGTWYQfBD1DswWzglEotE_kHnHx3AxTXM 11 | id: olivero_powered 12 | theme: olivero 13 | region: footer_bottom 14 | weight: 0 15 | provider: null 16 | plugin: system_powered_by_block 17 | settings: 18 | id: system_powered_by_block 19 | label: 'Powered by Drupal' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_syndicate.yml: -------------------------------------------------------------------------------- 1 | uuid: 48c8a3b4-ee5f-439a-8a33-fd52a37ba319 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: 0gq3VPg-_UM69FCCWurLFIrrnIjC2HLKhwo9iQNtcUo 11 | id: olivero_syndicate 12 | theme: olivero 13 | region: social 14 | weight: 0 15 | provider: null 16 | plugin: node_syndicate_block 17 | settings: 18 | id: node_syndicate_block 19 | label: 'RSS feed' 20 | label_display: '0' 21 | provider: node 22 | block_count: 10 23 | visibility: { } 24 | -------------------------------------------------------------------------------- /drupal/config/field.storage.node.field_tags.yml: -------------------------------------------------------------------------------- 1 | uuid: 24941124-d50e-4b9e-9cbd-d05794fa64b6 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | - taxonomy 8 | _core: 9 | default_config_hash: WpOE_bs8Bs_HY2ns7n2r__de-xno0-Bxkqep5-MsHAs 10 | id: node.field_tags 11 | field_name: field_tags 12 | entity_type: node 13 | type: entity_reference 14 | settings: 15 | target_type: taxonomy_term 16 | module: core 17 | locked: false 18 | cardinality: -1 19 | translatable: true 20 | indexes: { } 21 | persist_with_no_fields: false 22 | custom_storage: false 23 | -------------------------------------------------------------------------------- /drupal/config/user.settings.yml: -------------------------------------------------------------------------------- 1 | _core: 2 | default_config_hash: '-htDFWUv1S4OlJMzta2nhFl4QbhJvu0D9xsJ-clxo-M' 3 | langcode: en 4 | anonymous: Anonymous 5 | verify_mail: true 6 | notify: 7 | cancel_confirm: true 8 | password_reset: true 9 | status_activated: true 10 | status_blocked: false 11 | status_canceled: false 12 | register_admin_created: true 13 | register_no_approval_required: true 14 | register_pending_approval: true 15 | register: visitors_admin_approval 16 | cancel_method: user_cancel_block 17 | password_reset_timeout: 86400 18 | password_strength: true 19 | -------------------------------------------------------------------------------- /drupal/config/user.role.oauth.yml: -------------------------------------------------------------------------------- 1 | uuid: a1310fdb-71d2-4de5-b561-dab1b8c10e6b 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - node.type.article 7 | - node.type.page 8 | module: 9 | - node 10 | id: oauth 11 | label: OAUTH 12 | weight: 4 13 | is_admin: null 14 | permissions: 15 | - 'access content overview' 16 | - 'create article content' 17 | - 'create page content' 18 | - 'delete any article content' 19 | - 'delete any page content' 20 | - 'edit any article content' 21 | - 'edit any page content' 22 | - 'view own unpublished content' 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.claro_secondary_local_tasks.yml: -------------------------------------------------------------------------------- 1 | uuid: 7fe725c2-2ef0-449f-9633-1e11cda99b39 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - claro 7 | _core: 8 | default_config_hash: 2L0geP-ixCbCkEpW6BVF6H7vDUZN4ea07_Y9CociQm4 9 | id: claro_secondary_local_tasks 10 | theme: claro 11 | region: pre_content 12 | weight: 0 13 | provider: null 14 | plugin: local_tasks_block 15 | settings: 16 | id: local_tasks_block 17 | label: 'Secondary tabs' 18 | label_display: '0' 19 | provider: core 20 | primary: false 21 | secondary: true 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/web/sites/default/settings.php: -------------------------------------------------------------------------------- 1 | 404 Not Found

Not Found

The requested URL "@path" was not found on this server.

' 14 | js: 15 | preprocess: true 16 | gzip: true 17 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_search_form_wide.yml: -------------------------------------------------------------------------------- 1 | uuid: 9feda69f-d7de-415b-bba0-1a57920e8546 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - search 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: imMyHD6LYci0gtXq56qr9ZKGHzbEG9uFydrN5EhKtSU 11 | id: olivero_search_form_wide 12 | theme: olivero 13 | region: secondary_menu 14 | weight: -5 15 | provider: null 16 | plugin: search_form_block 17 | settings: 18 | id: search_form_block 19 | label: 'Search form (wide)' 20 | label_display: '0' 21 | provider: search 22 | page_id: '' 23 | visibility: { } 24 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_search_form_narrow.yml: -------------------------------------------------------------------------------- 1 | uuid: 753ec493-7b3c-40c3-8701-153ec9522f4a 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - search 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: yEBET0cqDbk8dkWzaJw-8CKft0961VBflsISoSR6Lj8 11 | id: olivero_search_form_narrow 12 | theme: olivero 13 | region: primary_menu 14 | weight: -4 15 | provider: null 16 | plugin: search_form_block 17 | settings: 18 | id: search_form_block 19 | label: 'Search form (narrow)' 20 | label_display: '0' 21 | provider: search 22 | page_id: '' 23 | visibility: { } 24 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_content.yml: -------------------------------------------------------------------------------- 1 | uuid: d70ae40a-b020-4959-9d5a-646956ad12cd 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: erQSEZF2XUjNmgTl0uNRBzmg18ZGXwUcw2FhApoeuHk 11 | id: react_example_theme_content 12 | theme: react_example_theme 13 | region: content 14 | weight: 0 15 | provider: null 16 | plugin: system_main_block 17 | settings: 18 | id: system_main_block 19 | label: 'Main page content' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_primary_admin_actions.yml: -------------------------------------------------------------------------------- 1 | uuid: 91ade099-43a7-47b4-91fe-0dcb164c6284 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - react_example_theme 7 | _core: 8 | default_config_hash: Q9_2whdOj1YIomfvsIfopROW4FT_X5pY0DjdOiOaQ5U 9 | id: react_example_theme_primary_admin_actions 10 | theme: react_example_theme 11 | region: highlighted 12 | weight: -5 13 | provider: null 14 | plugin: local_actions_block 15 | settings: 16 | id: local_actions_block 17 | label: 'Primary admin actions' 18 | label_display: '0' 19 | provider: core 20 | visibility: { } 21 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_messages.yml: -------------------------------------------------------------------------------- 1 | uuid: c3a99074-8690-4b08-8f9e-ef2410b695d3 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: BZ5tpW7H8X4PVGRm3MImTIHd2tN0eF7zOtp4SpRYUA0 11 | id: react_example_theme_messages 12 | theme: react_example_theme 13 | region: highlighted 14 | weight: -5 15 | provider: null 16 | plugin: system_messages_block 17 | settings: 18 | id: system_messages_block 19 | label: 'Status messages' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_breadcrumbs.yml: -------------------------------------------------------------------------------- 1 | uuid: 36864cae-8028-41dc-a65a-a08d878ce95f 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: VhBzWb7lMRtIOg9G7VSw_0uopi-7zXeHq4vXqqV1HFE 11 | id: react_example_theme_breadcrumbs 12 | theme: react_example_theme 13 | region: breadcrumb 14 | weight: 0 15 | provider: null 16 | plugin: system_breadcrumb_block 17 | settings: 18 | id: system_breadcrumb_block 19 | label: Breadcrumbs 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_powered.yml: -------------------------------------------------------------------------------- 1 | uuid: 6c18f090-3e60-48fa-aaf0-6c5739fabd8b 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: eYL19CLDyinGTWYQfBD1DswWzglEotE_kHnHx3AxTXM 11 | id: react_example_theme_powered 12 | theme: react_example_theme 13 | region: sidebar_first 14 | weight: 0 15 | provider: null 16 | plugin: system_powered_by_block 17 | settings: 18 | id: system_powered_by_block 19 | label: 'Powered by Drupal' 20 | label_display: '0' 21 | provider: system 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/core.base_field_override.node.page.promote.yml: -------------------------------------------------------------------------------- 1 | uuid: 27002b90-af62-4cc9-bdc0-3c1e316e815a 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - node.type.page 7 | _core: 8 | default_config_hash: fPUEnm4T5zfZRr3ttDUqq7yCDd2uW3clWD-pvos4tlQ 9 | id: node.page.promote 10 | field_name: promote 11 | entity_type: node 12 | bundle: page 13 | label: 'Promoted to front page' 14 | description: '' 15 | required: false 16 | translatable: false 17 | default_value: 18 | - 19 | value: 0 20 | default_value_callback: '' 21 | settings: 22 | on_label: 'On' 23 | off_label: 'Off' 24 | field_type: boolean 25 | -------------------------------------------------------------------------------- /drupal/config/user.role.anonymous.yml: -------------------------------------------------------------------------------- 1 | uuid: ebf859fa-c86f-4a94-8777-d7d3763485e9 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - filter.format.restricted_html 7 | module: 8 | - comment 9 | - contact 10 | - filter 11 | - search 12 | - system 13 | _core: 14 | default_config_hash: 6WavjUYXIegP9AAg2zXGx54MWIVoomC3SZhNiqe-Dyk 15 | id: anonymous 16 | label: 'Anonymous user' 17 | weight: 0 18 | is_admin: false 19 | permissions: 20 | - 'access comments' 21 | - 'access content' 22 | - 'access site-wide contact form' 23 | - 'search content' 24 | - 'use text format restricted_html' 25 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_syndicate.yml: -------------------------------------------------------------------------------- 1 | uuid: 8b753819-0ddf-4a72-b10f-bbd92f8ca69b 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - node 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: 0gq3VPg-_UM69FCCWurLFIrrnIjC2HLKhwo9iQNtcUo 11 | id: react_example_theme_syndicate 12 | theme: react_example_theme 13 | region: sidebar_first 14 | weight: 0 15 | provider: null 16 | plugin: node_syndicate_block 17 | settings: 18 | id: node_syndicate_block 19 | label: 'RSS feed' 20 | label_display: '0' 21 | provider: node 22 | block_count: 10 23 | visibility: { } 24 | -------------------------------------------------------------------------------- /react-decoupled/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_primary_local_tasks.yml: -------------------------------------------------------------------------------- 1 | uuid: dde95bee-5ead-48a9-a3f5-1e44d12edb5b 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - react_example_theme 7 | _core: 8 | default_config_hash: nGE3EoPQQaQCuqTUtZgw0-KIzmrqdKDzdNQf2JyPUt4 9 | id: react_example_theme_primary_local_tasks 10 | theme: react_example_theme 11 | region: highlighted 12 | weight: -4 13 | provider: null 14 | plugin: local_tasks_block 15 | settings: 16 | id: local_tasks_block 17 | label: 'Primary tabs' 18 | label_display: '0' 19 | provider: core 20 | primary: true 21 | secondary: false 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_secondary_local_tasks.yml: -------------------------------------------------------------------------------- 1 | uuid: d7b16937-8d45-4bba-a57c-88e26b858624 2 | langcode: en 3 | status: true 4 | dependencies: 5 | theme: 6 | - react_example_theme 7 | _core: 8 | default_config_hash: ydSxdq7R66I8UMC460rOzlfzvlUL4VRbdwc6z9DWaUI 9 | id: react_example_theme_secondary_local_tasks 10 | theme: react_example_theme 11 | region: highlighted 12 | weight: -2 13 | provider: null 14 | plugin: local_tasks_block 15 | settings: 16 | id: local_tasks_block 17 | label: 'Secondary tabs' 18 | label_display: '0' 19 | provider: core 20 | primary: false 21 | secondary: true 22 | visibility: { } 23 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_search_form_wide.yml: -------------------------------------------------------------------------------- 1 | uuid: 4f6cf7aa-a1b5-40f5-8d71-64d1477e50c2 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - search 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: imMyHD6LYci0gtXq56qr9ZKGHzbEG9uFydrN5EhKtSU 11 | id: react_example_theme_search_form_wide 12 | theme: react_example_theme 13 | region: secondary_menu 14 | weight: -5 15 | provider: null 16 | plugin: search_form_block 17 | settings: 18 | id: search_form_block 19 | label: 'Search form (wide)' 20 | label_display: '0' 21 | provider: search 22 | page_id: '' 23 | visibility: { } 24 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_site_branding.yml: -------------------------------------------------------------------------------- 1 | uuid: c42cfcec-d790-466a-8cf6-1920c2d5aa48 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - olivero 9 | _core: 10 | default_config_hash: n_nlgjggHVfQt2H__zvLOKB2YtjPDbQ5tHijF9LE1aM 11 | id: olivero_site_branding 12 | theme: olivero 13 | region: header 14 | weight: 0 15 | provider: null 16 | plugin: system_branding_block 17 | settings: 18 | id: system_branding_block 19 | label: 'Site branding' 20 | label_display: '0' 21 | provider: system 22 | use_site_logo: true 23 | use_site_name: true 24 | use_site_slogan: false 25 | visibility: { } 26 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_search_form_narrow.yml: -------------------------------------------------------------------------------- 1 | uuid: bc4243c3-5b3f-4956-9720-d2922c8ebf65 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - search 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: yEBET0cqDbk8dkWzaJw-8CKft0961VBflsISoSR6Lj8 11 | id: react_example_theme_search_form_narrow 12 | theme: react_example_theme 13 | region: primary_menu 14 | weight: -4 15 | provider: null 16 | plugin: search_form_block 17 | settings: 18 | id: search_form_block 19 | label: 'Search form (narrow)' 20 | label_display: '0' 21 | provider: search 22 | page_id: '' 23 | visibility: { } 24 | -------------------------------------------------------------------------------- /drupal/config/field.field.comment.comment.comment_body.yml: -------------------------------------------------------------------------------- 1 | uuid: 6e476071-b31c-4c4b-a2b2-6da59ed5720d 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - comment.type.comment 7 | - field.storage.comment.comment_body 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: 62rlTOx3sPVrYhBnSBHZStXwiO02v1UpHSMrhWDsuG8 12 | id: comment.comment.comment_body 13 | field_name: comment_body 14 | entity_type: comment 15 | bundle: comment 16 | label: Comment 17 | description: '' 18 | required: true 19 | translatable: true 20 | default_value: { } 21 | default_value_callback: '' 22 | settings: 23 | allowed_formats: { } 24 | field_type: text_long 25 | -------------------------------------------------------------------------------- /drupal/config/image.style.wide.yml: -------------------------------------------------------------------------------- 1 | uuid: 4152ba66-9338-41bd-b5d1-0b01ac62a741 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: XHh3ATMH7z4ljwmzdndM47qNMkgLnoYsP98rGxVgCOw 7 | name: wide 8 | label: 'Wide (1090)' 9 | effects: 10 | 09959c15-59ce-4f6d-90df-e2d7cf32bce5: 11 | uuid: 09959c15-59ce-4f6d-90df-e2d7cf32bce5 12 | id: image_scale 13 | weight: 1 14 | data: 15 | width: 1090 16 | height: null 17 | upscale: false 18 | 294c5f76-42a4-43ce-82c2-81c2f4723da0: 19 | uuid: 294c5f76-42a4-43ce-82c2-81c2f4723da0 20 | id: image_convert 21 | weight: 2 22 | data: 23 | extension: webp 24 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_display.block_content.basic.default.yml: -------------------------------------------------------------------------------- 1 | uuid: 1612c6a4-32cd-4947-84cc-a42f59cade64 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - block_content.type.basic 7 | - field.field.block_content.basic.body 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: hBNNDTFwakREOTa6GGMqN899Iyrii0hInwSJtQ7Kj30 12 | id: block_content.basic.default 13 | targetEntityType: block_content 14 | bundle: basic 15 | mode: default 16 | content: 17 | body: 18 | type: text_default 19 | label: hidden 20 | settings: { } 21 | third_party_settings: { } 22 | weight: 0 23 | region: content 24 | hidden: { } 25 | -------------------------------------------------------------------------------- /drupal/config/image.style.large.yml: -------------------------------------------------------------------------------- 1 | uuid: 75c261e7-332f-4a55-abac-e1242b2e9b70 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: rDR2BOewa2UFH9yG4tVvrGxEVv8U7LQo-RLkJhFpERs 7 | name: large 8 | label: 'Large (480×480)' 9 | effects: 10 | ddd73aa7-4bd6-4c85-b600-bdf2b1628d1d: 11 | uuid: ddd73aa7-4bd6-4c85-b600-bdf2b1628d1d 12 | id: image_scale 13 | weight: 0 14 | data: 15 | width: 480 16 | height: 480 17 | upscale: false 18 | 6e8fe467-84c1-4ef0-a73b-7eccf1cc20e8: 19 | uuid: 6e8fe467-84c1-4ef0-a73b-7eccf1cc20e8 20 | id: image_convert 21 | weight: 2 22 | data: 23 | extension: webp 24 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_main_menu.yml: -------------------------------------------------------------------------------- 1 | uuid: ab6c69fc-4519-4aef-b5c2-72d535501c7d 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - system.menu.main 7 | module: 8 | - system 9 | theme: 10 | - olivero 11 | _core: 12 | default_config_hash: KWAiziL39uEzmOJEql_wbUP2RtqGceL3WM2CfxhMelE 13 | id: olivero_main_menu 14 | theme: olivero 15 | region: primary_menu 16 | weight: 0 17 | provider: null 18 | plugin: 'system_menu_block:main' 19 | settings: 20 | id: 'system_menu_block:main' 21 | label: 'Main navigation' 22 | label_display: '0' 23 | provider: system 24 | level: 1 25 | depth: 2 26 | expand_all_items: true 27 | visibility: { } 28 | -------------------------------------------------------------------------------- /drupal/config/field.field.node.page.body.yml: -------------------------------------------------------------------------------- 1 | uuid: 1b0a0b67-3951-4967-94ea-47e637a8dc71 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.storage.node.body 7 | - node.type.page 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: KHu9I-pR4FnP79crRJ5gVD_1mKGSZcJsdIm9bn64iFg 12 | id: node.page.body 13 | field_name: body 14 | entity_type: node 15 | bundle: page 16 | label: Body 17 | description: '' 18 | required: false 19 | translatable: true 20 | default_value: { } 21 | default_value_callback: '' 22 | settings: 23 | display_summary: true 24 | required_summary: false 25 | allowed_formats: { } 26 | field_type: text_with_summary 27 | -------------------------------------------------------------------------------- /drupal/config/image.style.medium.yml: -------------------------------------------------------------------------------- 1 | uuid: 3026f1a4-54e6-4901-b940-fd09b3efc3c7 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: dlar76VBuGj5iMGTruB_uMZX8VbivXt9_QLemaG2q4E 7 | name: medium 8 | label: 'Medium (220×220)' 9 | effects: 10 | bddf0d06-42f9-4c75-a700-a33cafa25ea0: 11 | uuid: bddf0d06-42f9-4c75-a700-a33cafa25ea0 12 | id: image_scale 13 | weight: 0 14 | data: 15 | width: 220 16 | height: 220 17 | upscale: false 18 | c410ed2f-aa30-4d9c-a224-d2865d9188cd: 19 | uuid: c410ed2f-aa30-4d9c-a224-d2865d9188cd 20 | id: image_convert 21 | weight: 2 22 | data: 23 | extension: webp 24 | -------------------------------------------------------------------------------- /react-decoupled/src/components/Login.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react'; 2 | import { beginLogin, logout, isLoggedIn } from '../utils/oauth'; 3 | 4 | export default function Login() { 5 | const [loggedIn, setLoggedIn] = useState(false); 6 | useEffect(() => { isLoggedIn().then(setLoggedIn); }, []); 7 | 8 | if (loggedIn) { 9 | return ( 10 |
11 |

You're currently signed in.

12 | 13 |
14 | ); 15 | } 16 | return ( 17 |
18 | 19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /drupal/config/image.style.thumbnail.yml: -------------------------------------------------------------------------------- 1 | uuid: 3578bf3c-0a0a-4152-bc84-7aef093b7fc0 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: BgeBV-xOFINMsz-y2thm45EGesj6bRM6DTLZ6ce3V9I 7 | name: thumbnail 8 | label: 'Thumbnail (100×100)' 9 | effects: 10 | 1cfec298-8620-4749-b100-ccb6c4500779: 11 | uuid: 1cfec298-8620-4749-b100-ccb6c4500779 12 | id: image_scale 13 | weight: 0 14 | data: 15 | width: 100 16 | height: 100 17 | upscale: false 18 | c4eb9942-2c9e-4a81-949f-6161a44b6559: 19 | uuid: c4eb9942-2c9e-4a81-949f-6161a44b6559 20 | id: image_convert 21 | weight: 2 22 | data: 23 | extension: webp 24 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/components/Login.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from 'react'; 2 | import { beginLogin, logout, isLoggedIn } from '../utils/oauth'; 3 | 4 | export default function Login() { 5 | const [loggedIn, setLoggedIn] = useState(false); 6 | useEffect(() => { isLoggedIn().then(setLoggedIn); }, []); 7 | 8 | if (loggedIn) { 9 | return ( 10 |
11 |

You're currently signed in.

12 | 13 |
14 | ); 15 | } 16 | return ( 17 |
18 | 19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /drupal/config/field.field.node.article.body.yml: -------------------------------------------------------------------------------- 1 | uuid: ad24879c-947a-4556-a43c-4f7a755b66b7 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.storage.node.body 7 | - node.type.article 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: 4Wxs1LseZ8JsNwD9uJVIbzZqG35yQXN8Eo1Hub6NMuI 12 | id: node.article.body 13 | field_name: body 14 | entity_type: node 15 | bundle: article 16 | label: Body 17 | description: '' 18 | required: false 19 | translatable: true 20 | default_value: { } 21 | default_value_callback: '' 22 | settings: 23 | display_summary: true 24 | required_summary: false 25 | allowed_formats: { } 26 | field_type: text_with_summary 27 | -------------------------------------------------------------------------------- /drupal/config/block.block.olivero_account_menu.yml: -------------------------------------------------------------------------------- 1 | uuid: d616e653-4b49-466c-994c-631d41a7621c 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - system.menu.account 7 | module: 8 | - system 9 | theme: 10 | - olivero 11 | _core: 12 | default_config_hash: gmxYWWHmgbe0Pnv8y48ZLSLH5mEHejOjAP6RLxUfdzU 13 | id: olivero_account_menu 14 | theme: olivero 15 | region: secondary_menu 16 | weight: -4 17 | provider: null 18 | plugin: 'system_menu_block:account' 19 | settings: 20 | id: 'system_menu_block:account' 21 | label: 'User account menu' 22 | label_display: '0' 23 | provider: system 24 | level: 1 25 | depth: 1 26 | expand_all_items: false 27 | visibility: { } 28 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_site_branding.yml: -------------------------------------------------------------------------------- 1 | uuid: 0363ad9f-4dde-40eb-8ec8-48bcd244ac40 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - system 7 | theme: 8 | - react_example_theme 9 | _core: 10 | default_config_hash: n_nlgjggHVfQt2H__zvLOKB2YtjPDbQ5tHijF9LE1aM 11 | id: react_example_theme_site_branding 12 | theme: react_example_theme 13 | region: header 14 | weight: 0 15 | provider: null 16 | plugin: system_branding_block 17 | settings: 18 | id: system_branding_block 19 | label: 'Site branding' 20 | label_display: '0' 21 | provider: system 22 | use_site_logo: true 23 | use_site_name: true 24 | use_site_slogan: false 25 | visibility: { } 26 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_display.node.page.default.yml: -------------------------------------------------------------------------------- 1 | uuid: 9b7db9f4-d459-4bd4-86a4-16c288c34fb1 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.field.node.page.body 7 | - node.type.page 8 | module: 9 | - text 10 | - user 11 | _core: 12 | default_config_hash: M_Y8L5tfmhx7DR143E05YyZSpvgil6VFvqcfBWykalg 13 | id: node.page.default 14 | targetEntityType: node 15 | bundle: page 16 | mode: default 17 | content: 18 | body: 19 | type: text_default 20 | label: hidden 21 | settings: { } 22 | third_party_settings: { } 23 | weight: 100 24 | region: content 25 | links: 26 | weight: 101 27 | region: content 28 | hidden: { } 29 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_main_menu.yml: -------------------------------------------------------------------------------- 1 | uuid: b30914df-4859-4519-9f87-d015c2b25c54 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - system.menu.main 7 | module: 8 | - system 9 | theme: 10 | - react_example_theme 11 | _core: 12 | default_config_hash: KWAiziL39uEzmOJEql_wbUP2RtqGceL3WM2CfxhMelE 13 | id: react_example_theme_main_menu 14 | theme: react_example_theme 15 | region: primary_menu 16 | weight: 0 17 | provider: null 18 | plugin: 'system_menu_block:main' 19 | settings: 20 | id: 'system_menu_block:main' 21 | label: 'Main navigation' 22 | label_display: '0' 23 | provider: system 24 | level: 1 25 | depth: 2 26 | expand_all_items: true 27 | visibility: { } 28 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_display.comment.comment.default.yml: -------------------------------------------------------------------------------- 1 | uuid: 36d75b40-4ca5-44bc-a0a4-7497fd93c3ca 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - comment.type.comment 7 | - field.field.comment.comment.comment_body 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: aBQUGsQ46M4048fIlFuTXwl2zV0j2cJX89CTUobh9hA 12 | id: comment.comment.default 13 | targetEntityType: comment 14 | bundle: comment 15 | mode: default 16 | content: 17 | comment_body: 18 | type: text_default 19 | label: hidden 20 | settings: { } 21 | third_party_settings: { } 22 | weight: 0 23 | region: content 24 | links: 25 | weight: 100 26 | region: content 27 | hidden: { } 28 | -------------------------------------------------------------------------------- /drupal/config/field.field.block_content.basic.body.yml: -------------------------------------------------------------------------------- 1 | uuid: 03029f54-26ff-49f3-b5c6-880d8c86428c 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - block_content.type.basic 7 | - field.storage.block_content.body 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: j00Gfs9AFqwK4x9RIsISLbPO7vA12psPR4s60wOIwQo 12 | id: block_content.basic.body 13 | field_name: body 14 | entity_type: block_content 15 | bundle: basic 16 | label: Body 17 | description: '' 18 | required: false 19 | translatable: true 20 | default_value: { } 21 | default_value_callback: '' 22 | settings: 23 | display_summary: false 24 | required_summary: false 25 | allowed_formats: { } 26 | field_type: text_with_summary 27 | -------------------------------------------------------------------------------- /drupal/config/filter.format.plain_text.yml: -------------------------------------------------------------------------------- 1 | uuid: bbd99edd-bfe9-4423-8c58-662b538258bd 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: JLMwODO0epnA_H-jFlH9ezVfa5YBJniRv3MmLqYNl_Q 7 | name: 'Plain text' 8 | format: plain_text 9 | weight: 10 10 | filters: 11 | filter_autop: 12 | id: filter_autop 13 | provider: filter 14 | status: true 15 | weight: 0 16 | settings: { } 17 | filter_html_escape: 18 | id: filter_html_escape 19 | provider: filter 20 | status: true 21 | weight: -10 22 | settings: { } 23 | filter_url: 24 | id: filter_url 25 | provider: filter 26 | status: true 27 | weight: 0 28 | settings: 29 | filter_url_length: 72 30 | -------------------------------------------------------------------------------- /react-decoupled/src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { BrowserRouter, Routes, Route } from 'react-router'; 3 | import Login from './components/Login'; 4 | import AuthCallback from './components/AuthCallback'; 5 | import NodeReadWrite from './components/NodeReadWrite'; 6 | import './App.css'; 7 | 8 | export default function App() { 9 | return ( 10 | 11 | 12 | 16 | 17 | 18 | 19 | } 20 | /> 21 | } /> 22 | 23 | 24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/App.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { BrowserRouter, Routes, Route } from 'react-router'; 3 | import Login from './components/Login'; 4 | import AuthCallback from './components/AuthCallback'; 5 | import NodeReadWrite from './components/NodeReadWrite'; 6 | import './App.css'; 7 | 8 | export default function App() { 9 | return ( 10 | 11 | 12 | 16 | 17 | 18 | 19 | } 20 | /> 21 | } /> 22 | 23 | 24 | ); 25 | } 26 | -------------------------------------------------------------------------------- /drupal/config/block.block.react_example_theme_account_menu.yml: -------------------------------------------------------------------------------- 1 | uuid: 14a7a683-0a14-4e63-8a8a-f78bfbe6af3b 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - system.menu.account 7 | module: 8 | - system 9 | theme: 10 | - react_example_theme 11 | _core: 12 | default_config_hash: gmxYWWHmgbe0Pnv8y48ZLSLH5mEHejOjAP6RLxUfdzU 13 | id: react_example_theme_account_menu 14 | theme: react_example_theme 15 | region: secondary_menu 16 | weight: -4 17 | provider: null 18 | plugin: 'system_menu_block:account' 19 | settings: 20 | id: 'system_menu_block:account' 21 | label: 'User account menu' 22 | label_display: '0' 23 | provider: system 24 | level: 1 25 | depth: 1 26 | expand_all_items: false 27 | visibility: { } 28 | -------------------------------------------------------------------------------- /drupal/web/themes/react_example_theme/react_example_theme.theme: -------------------------------------------------------------------------------- 1 | 3 | Require all denied 4 | 5 | 6 | # Deny all requests from Apache 2.0-2.2. 7 | 8 | Deny from all 9 | 10 | 11 | # Turn off all options we don't need. 12 | Options -Indexes -ExecCGI -Includes -MultiViews 13 | 14 | # Set the catch-all handler to prevent scripts from being executed. 15 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 16 | 17 | # Override the handler again if we're run later in the evaluation list. 18 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 19 | 20 | 21 | # If we know how to do it safely, disable the PHP engine entirely. 22 | 23 | php_flag engine off 24 | -------------------------------------------------------------------------------- /react-decoupled-vite/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-decoupled-vite", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "react": "^19.1.1", 14 | "react-dom": "^19.1.1", 15 | "react-router": "^7.8.2" 16 | }, 17 | "devDependencies": { 18 | "@eslint/js": "^9.33.0", 19 | "@types/react": "^19.1.10", 20 | "@types/react-dom": "^19.1.7", 21 | "@vitejs/plugin-react": "^5.0.0", 22 | "eslint": "^9.33.0", 23 | "eslint-plugin-react-hooks": "^5.2.0", 24 | "eslint-plugin-react-refresh": "^0.4.20", 25 | "globals": "^16.3.0", 26 | "vite": "^7.1.2" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /drupal/config/field.storage.node.field_image.yml: -------------------------------------------------------------------------------- 1 | uuid: f2b751da-8bdc-4459-a655-28d584e123ab 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - file 7 | - image 8 | - node 9 | _core: 10 | default_config_hash: EymokncRIZ7SgQT2IdOQhQJicX4nNc0K89ik-LxmOHE 11 | id: node.field_image 12 | field_name: field_image 13 | entity_type: node 14 | type: image 15 | settings: 16 | target_type: file 17 | display_field: false 18 | display_default: false 19 | uri_scheme: public 20 | default_image: 21 | uuid: null 22 | alt: '' 23 | title: '' 24 | width: null 25 | height: null 26 | module: image 27 | locked: false 28 | cardinality: 1 29 | translatable: true 30 | indexes: 31 | target_id: 32 | - target_id 33 | persist_with_no_fields: false 34 | custom_storage: false 35 | -------------------------------------------------------------------------------- /drupal/config/field.storage.user.user_picture.yml: -------------------------------------------------------------------------------- 1 | uuid: 66f166e7-0151-4a69-9229-93041cbbe6c4 2 | langcode: en 3 | status: true 4 | dependencies: 5 | module: 6 | - file 7 | - image 8 | - user 9 | _core: 10 | default_config_hash: 0q8-mw8y-Ls5I578sIPQFLp4ljpH7WvVYpzY-I9O-8E 11 | id: user.user_picture 12 | field_name: user_picture 13 | entity_type: user 14 | type: image 15 | settings: 16 | target_type: file 17 | display_field: false 18 | display_default: false 19 | uri_scheme: public 20 | default_image: 21 | uuid: null 22 | alt: '' 23 | title: '' 24 | width: null 25 | height: null 26 | module: image 27 | locked: false 28 | cardinality: 1 29 | translatable: true 30 | indexes: 31 | target_id: 32 | - target_id 33 | persist_with_no_fields: false 34 | custom_storage: false 35 | -------------------------------------------------------------------------------- /react-decoupled/src/components/AuthCallback.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useRef, useState } from 'react'; 2 | import { handleAuthCallback } from '../utils/oauth'; 3 | 4 | export default function AuthCallback() { 5 | const [message, setMessage] = useState('Completing sign-in…'); 6 | const ran = useRef(false); // run once even under StrictMode dev 7 | 8 | useEffect(() => { 9 | if (ran.current) return; 10 | ran.current = true; 11 | 12 | handleAuthCallback(window.location.href) 13 | .then(() => setMessage('Sign‑in complete. You can go back, or click the link to return to the frontpage.')) 14 | .catch((e) => setMessage(`Sign-in failed: ${e.message}`)); 15 | }, []); 16 | 17 | return
18 |

{message}

19 |

Return to frontpage

20 |
; 21 | } 22 | -------------------------------------------------------------------------------- /react-decoupled-vite/src/components/AuthCallback.jsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useRef, useState } from 'react'; 2 | import { handleAuthCallback } from '../utils/oauth'; 3 | 4 | export default function AuthCallback() { 5 | const [message, setMessage] = useState('Completing sign-in…'); 6 | const ran = useRef(false); // run once even under StrictMode dev 7 | 8 | useEffect(() => { 9 | if (ran.current) return; 10 | ran.current = true; 11 | 12 | handleAuthCallback(window.location.href) 13 | .then(() => setMessage('Sign‑in complete. You can go back, or click the link to return to the frontpage.')) 14 | .catch((e) => setMessage(`Sign-in failed: ${e.message}`)); 15 | }, []); 16 | 17 | return
18 |

{message}

19 |

Return to frontpage

20 |
; 21 | } 22 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_display.user.user.compact.yml: -------------------------------------------------------------------------------- 1 | uuid: b5f2ded5-dc1a-43a2-a11d-9a8c5130e807 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - core.entity_view_mode.user.compact 7 | - field.field.user.user.user_picture 8 | - image.style.thumbnail 9 | module: 10 | - image 11 | - user 12 | _core: 13 | default_config_hash: 00zr_RBdTjPjBGITD3h4c1ESQZimjdVCcHGt1trLqIY 14 | id: user.user.compact 15 | targetEntityType: user 16 | bundle: user 17 | mode: compact 18 | content: 19 | user_picture: 20 | type: image 21 | label: hidden 22 | settings: 23 | image_style: thumbnail 24 | image_link: content 25 | image_loading: 26 | attribute: lazy 27 | third_party_settings: { } 28 | weight: 0 29 | region: content 30 | hidden: 31 | member_for: true 32 | -------------------------------------------------------------------------------- /drupal/config/core.entity_view_display.user.user.default.yml: -------------------------------------------------------------------------------- 1 | uuid: e98b7b7b-4887-4cb4-a654-8c688e085928 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.field.user.user.user_picture 7 | - image.style.thumbnail 8 | module: 9 | - image 10 | - user 11 | _core: 12 | default_config_hash: mZLyuWM9CQx2ZJVqFGSbzgFnHzudVbHBYmdU256A5Wk 13 | id: user.user.default 14 | targetEntityType: user 15 | bundle: user 16 | mode: default 17 | content: 18 | member_for: 19 | weight: 5 20 | region: content 21 | user_picture: 22 | type: image 23 | label: hidden 24 | settings: 25 | image_style: thumbnail 26 | image_link: content 27 | image_loading: 28 | attribute: lazy 29 | third_party_settings: { } 30 | weight: 0 31 | region: content 32 | hidden: { } 33 | -------------------------------------------------------------------------------- /drupal/config/.htaccess: -------------------------------------------------------------------------------- 1 | # Deny all requests from Apache 2.4+. 2 | 3 | Require all denied 4 | 5 | 6 | # Deny all requests from Apache 2.0-2.2. 7 | 8 | Deny from all 9 | 10 | 11 | # Turn off all options we don't need. 12 | Options -Indexes -ExecCGI -Includes -MultiViews 13 | 14 | # Set the catch-all handler to prevent scripts from being executed. 15 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 16 | 17 | # Override the handler again if we're run later in the evaluation list. 18 | SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 19 | 20 | 21 | # If we know how to do it safely, disable the PHP engine entirely. 22 | 23 | php_flag engine off 24 | 25 | 26 | php_flag engine off 27 | -------------------------------------------------------------------------------- /drupal/config/field.field.node.article.comment.yml: -------------------------------------------------------------------------------- 1 | uuid: 76e07cfb-ccfc-4be1-a543-042f19ea0a35 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.storage.node.comment 7 | - node.type.article 8 | module: 9 | - comment 10 | _core: 11 | default_config_hash: UqXlkKC4v2-bDfWx4zcXQrD5YIi3d5byENEmWv-G_Uc 12 | id: node.article.comment 13 | field_name: comment 14 | entity_type: node 15 | bundle: article 16 | label: Comments 17 | description: '' 18 | required: false 19 | translatable: true 20 | default_value: 21 | - 22 | status: 2 23 | cid: 0 24 | last_comment_timestamp: 0 25 | last_comment_name: null 26 | last_comment_uid: 0 27 | comment_count: 0 28 | default_value_callback: '' 29 | settings: 30 | default_mode: 1 31 | per_page: 50 32 | anonymous: 0 33 | form_location: true 34 | preview: 1 35 | field_type: comment 36 | -------------------------------------------------------------------------------- /drupal/config/field.field.node.article.field_tags.yml: -------------------------------------------------------------------------------- 1 | uuid: 8fd888aa-0dc1-4507-a43f-a76a0658b6c8 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.storage.node.field_tags 7 | - node.type.article 8 | - taxonomy.vocabulary.tags 9 | _core: 10 | default_config_hash: QdUgf_beeoaPiyKorFv0q1fcJpWH_uZTqe_xoVJacrw 11 | id: node.article.field_tags 12 | field_name: field_tags 13 | entity_type: node 14 | bundle: article 15 | label: Tags 16 | description: 'Enter a comma-separated list. For example: Amsterdam, Mexico City, "Cleveland, Ohio"' 17 | required: false 18 | translatable: true 19 | default_value: { } 20 | default_value_callback: '' 21 | settings: 22 | handler: 'default:taxonomy_term' 23 | handler_settings: 24 | target_bundles: 25 | tags: tags 26 | sort: 27 | field: _none 28 | auto_create: true 29 | field_type: entity_reference 30 | -------------------------------------------------------------------------------- /react-decoupled-vite/README.md: -------------------------------------------------------------------------------- 1 | # React + Vite 2 | 3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. 4 | 5 | Currently, two official plugins are available: 6 | 7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh 8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh 9 | 10 | ## Expanding the ESLint configuration 11 | 12 | If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. 13 | -------------------------------------------------------------------------------- /react-decoupled-vite/eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import { defineConfig, globalIgnores } from 'eslint/config' 6 | 7 | export default defineConfig([ 8 | globalIgnores(['dist']), 9 | { 10 | files: ['**/*.{js,jsx}'], 11 | extends: [ 12 | js.configs.recommended, 13 | reactHooks.configs['recommended-latest'], 14 | reactRefresh.configs.vite, 15 | ], 16 | languageOptions: { 17 | ecmaVersion: 2020, 18 | globals: globals.browser, 19 | parserOptions: { 20 | ecmaVersion: 'latest', 21 | ecmaFeatures: { jsx: true }, 22 | sourceType: 'module', 23 | }, 24 | }, 25 | rules: { 26 | 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], 27 | }, 28 | }, 29 | ]) 30 | -------------------------------------------------------------------------------- /drupal/config/core.entity_form_display.comment.comment.default.yml: -------------------------------------------------------------------------------- 1 | uuid: 7087ad48-ff66-4fda-b13b-5ba7b4489c79 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - comment.type.comment 7 | - field.field.comment.comment.comment_body 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: I0Pa0aQvT_jawlPo9oz4FE3h_ickc55dYKTPl6gILes 12 | id: comment.comment.default 13 | targetEntityType: comment 14 | bundle: comment 15 | mode: default 16 | content: 17 | author: 18 | weight: -2 19 | region: content 20 | comment_body: 21 | type: text_textarea 22 | weight: 11 23 | region: content 24 | settings: 25 | rows: 5 26 | placeholder: '' 27 | third_party_settings: { } 28 | subject: 29 | type: string_textfield 30 | weight: 10 31 | region: content 32 | settings: 33 | size: 60 34 | placeholder: '' 35 | third_party_settings: { } 36 | hidden: { } 37 | -------------------------------------------------------------------------------- /drupal/config/core.entity_form_display.block_content.basic.default.yml: -------------------------------------------------------------------------------- 1 | uuid: 3845b41f-695e-4bf9-8fc3-9ca442917b50 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - block_content.type.basic 7 | - field.field.block_content.basic.body 8 | module: 9 | - text 10 | _core: 11 | default_config_hash: jAps3FCxvKecABS_tgExbhCZrBLQB3bNPWw18WjE3ss 12 | id: block_content.basic.default 13 | targetEntityType: block_content 14 | bundle: basic 15 | mode: default 16 | content: 17 | body: 18 | type: text_textarea_with_summary 19 | weight: -4 20 | region: content 21 | settings: 22 | rows: 9 23 | summary_rows: 3 24 | placeholder: '' 25 | show_summary: false 26 | third_party_settings: { } 27 | info: 28 | type: string_textfield 29 | weight: -5 30 | region: content 31 | settings: 32 | size: 60 33 | placeholder: '' 34 | third_party_settings: { } 35 | hidden: { } 36 | -------------------------------------------------------------------------------- /drupal/config/core.entity_form_display.user.user.default.yml: -------------------------------------------------------------------------------- 1 | uuid: ef6b898c-e908-4b8b-afde-11ea11b270d5 2 | langcode: en 3 | status: true 4 | dependencies: 5 | config: 6 | - field.field.user.user.user_picture 7 | - image.style.thumbnail 8 | module: 9 | - image 10 | - user 11 | _core: 12 | default_config_hash: FaQ9Ptcpxpg30AtiqRDtl_8zbJArHP1LPfug_s59TOA 13 | id: user.user.default 14 | targetEntityType: user 15 | bundle: user 16 | mode: default 17 | content: 18 | account: 19 | weight: -10 20 | region: content 21 | contact: 22 | weight: 5 23 | region: content 24 | language: 25 | weight: 0 26 | region: content 27 | timezone: 28 | weight: 6 29 | region: content 30 | user_picture: 31 | type: image_image 32 | weight: -1 33 | region: content 34 | settings: 35 | progress_indicator: throbber 36 | preview_image_style: thumbnail 37 | third_party_settings: { } 38 | hidden: { } 39 | -------------------------------------------------------------------------------- /react-decoupled/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-decoupled", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@testing-library/jest-dom": "^6.8.0", 7 | "@testing-library/react": "^16.3.0", 8 | "@testing-library/user-event": "^14.6.1", 9 | "react": "^19.1.1", 10 | "react-dom": "^19.1.1", 11 | "react-router": "^7.8.2", 12 | "react-scripts": "^5.0.1" 13 | }, 14 | "scripts": { 15 | "start": "react-scripts start", 16 | "build": "react-scripts build", 17 | "test": "react-scripts test", 18 | "eject": "react-scripts eject" 19 | }, 20 | "eslintConfig": { 21 | "extends": "react-app" 22 | }, 23 | "browserslist": { 24 | "production": [ 25 | ">0.2%", 26 | "not dead", 27 | "not op_mini all" 28 | ], 29 | "development": [ 30 | "last 1 chrome version", 31 | "last 1 firefox version", 32 | "last 1 safari version" 33 | ] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /drupal/config/filter.format.restricted_html.yml: -------------------------------------------------------------------------------- 1 | uuid: d65459b4-e1b6-46c1-be2a-ad80c1bbc8b9 2 | langcode: en 3 | status: true 4 | dependencies: { } 5 | _core: 6 | default_config_hash: QiKqQS_YGAT3Qr4vaAgZICJknm-MGCzt_xBAMqg-tRM 7 | name: 'Restricted HTML' 8 | format: restricted_html 9 | weight: 1 10 | filters: 11 | filter_autop: 12 | id: filter_autop 13 | provider: filter 14 | status: true 15 | weight: 0 16 | settings: { } 17 | filter_html: 18 | id: filter_html 19 | provider: filter 20 | status: true 21 | weight: -10 22 | settings: 23 | allowed_html: '