{"id":33985052,"url":"https://github.com/yardinternet/brave-components","last_synced_at":"2026-04-02T23:38:59.999Z","repository":{"id":328426249,"uuid":"938819408","full_name":"yardinternet/brave-components","owner":"yardinternet","description":"Collection of logic-heavy components used in Brave projects. ","archived":false,"fork":false,"pushed_at":"2025-12-05T12:14:33.000Z","size":535,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-14T16:55:56.257Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yardinternet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-25T14:54:40.000Z","updated_at":"2025-12-05T12:15:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yardinternet/brave-components","commit_stats":null,"previous_names":["yardinternet/brave-components"],"tags_count":10,"template":false,"template_full_name":"yardinternet/skeleton-package","purl":"pkg:github/yardinternet/brave-components","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yardinternet%2Fbrave-components","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yardinternet%2Fbrave-components/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yardinternet%2Fbrave-components/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yardinternet%2Fbrave-components/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yardinternet","download_url":"https://codeload.github.com/yardinternet/brave-components/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yardinternet%2Fbrave-components/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28388865,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-13T04:43:17.737Z","updated_at":"2026-04-02T23:38:59.994Z","avatar_url":"https://github.com/yardinternet.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Brave components\n\n[![Code Style](https://github.com/yardinternet/brave-components/actions/workflows/format-php.yml/badge.svg?no-cache)](https://github.com/yardinternet/brave-components/actions/workflows/format-php.yml)\n[![PHPStan](https://github.com/yardinternet/brave-components/actions/workflows/phpstan.yml/badge.svg?no-cache)](https://github.com/yardinternet/brave-components/actions/workflows/phpstan.yml)\n[![Tests](https://github.com/yardinternet/brave-components/actions/workflows/run-tests.yml/badge.svg?no-cache)](https://github.com/yardinternet/brave-components/actions/workflows/run-tests.yml)\n[![Code Coverage Badge](https://github.com/yardinternet/brave-components/blob/badges/coverage.svg)](https://github.com/yardinternet/brave-components/actions/workflows/badges.yml)\n[![Lines of Code Badge](https://github.com/yardinternet/brave-components/blob/badges/lines-of-code.svg)](https://github.com/yardinternet/brave-components/actions/workflows/badges.yml)\n\nCollection of logic-heavy components used in Brave projects.\n\n## Requirements\n\n- [Sage](https://github.com/roots/sage) \u003e= 10.0\n- [Acorn](https://github.com/roots/acorn) \u003e= 4.0\n\n## Installation\n\nTo install this package using Composer, follow these steps:\n\n1. Install this package with Composer:\n\n    ```sh\n    composer require yard/brave-components\n    ```\n\n2. Run the Acorn WP-CLI command to discover this package:\n\n    ```shell\n    wp acorn package:discover\n    ```\n\nYou can publish the config file with:\n\n```shell\nwp acorn vendor:publish --provider=\"Yard\\Brave\\ComponentsServiceProvider\"\n```\n\nTo only publish the views, run:\n\n```shell\nwp acorn vendor:publish --provider=\"Yard\\Brave\\ComponentsServiceProvider\" --tag=\"views\"\n```\n\n## Components\n\n### Back Button\n\nShows a back button that determines its link and text by checking the parent page. If the post has no parent, it sets the link to a predefined parent page slug or defaults to \"javascript:history.back();\".\n\nUsage:\n\n```blade\n\u003cx-brave-back-button /\u003e \n\u003cx-brave-back-button text=\"Terug naar het vacature-overzicht\" /\u003e\n\u003cx-brave-back-button className=\"custom-class\" /\u003e\n```\n\n### Breadcrumb\n\nGenerate a breadcrumb based on the current page. Also adds posts added through the `parent-page` supports feature. Usage:\n\n```blade\n\u003cx-brave-breadcrumb listClass=\"\" itemClass=\"\" linkClass=\"\" currentItemClass=\"\" /\u003e\n```\n\nOr pass your own collection of items to show a custom breadcrumb:\n\n```blade\n\u003cx-brave-breadcrumb :items=\"collect([\n    ['id' =\u003e null, 'url' =\u003e home_url(), 'label' =\u003e 'Home'],\n    ['id' =\u003e null, 'url' =\u003e home_url('woo-verzoeken'), 'label' =\u003e 'Woo verzoeken'],\n])\" /\u003e\n```\n\n### Dialog\n\nUsage:\n\n```blade\n\u003cx-brave::dialog.trigger dialogId=\"my-dialog\"\u003e\n    Open dialog\n\u003c/x-brave::dialog.trigger\u003e\n\n\u003cx-brave-dialog id=\"my-dialog\" ariaLabel=\"My dialog\"\u003e\n    \u003cp\u003eThis is the content of the dialog.\u003c/p\u003e\n    \n    \u003cx-brave::dialog.trigger dialogId=\"my-dialog\"\u003e\n        Close dialog\n    \u003c/x-brave::dialog.trigger\u003e\n\u003c/x-brave-dialog\u003e\n```\n\n### Pattern Content\n\nShows the content of a pattern by its slug. You can find the slug (post name) using the `wp post get` CLI command and providing the post ID.\n\nUsage:\n\n```blade\n\u003cx-brave-pattern-content slug=\"footer\" /\u003e\n\u003cx-brave-pattern-content slug=\"single-vacancy-contact-information\" /\u003e\n```\n\nConfigure the admin behavior of each pattern in the `components.php` config file to automatically save them as drafts (thus hiding them from the pattern inserter), prevent their deletion, and add custom labels in the admin view.\n\n### Read Speaker\n\nAdds a ReadSpeaker button on specific places with the component and automatically adds it to the content of H1 blocks in the post content. Make sure to configure the `readSpeaker` settings in the `components.php` config file to set your customer ID and other options.\n\nUsage:\n\n```blade\n\u003cx-brave-read-speaker /\u003e\n```\n\n## About us\n\n[![banner](https://raw.githubusercontent.com/yardinternet/.github/refs/heads/main/profile/assets/small-banner-github.svg)](https://www.yard.nl/werken-bij/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyardinternet%2Fbrave-components","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyardinternet%2Fbrave-components","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyardinternet%2Fbrave-components/lists"}