├── export ├── content │ ├── assets │ │ ├── .gitkeep │ │ └── assets.yaml │ ├── globals │ │ ├── .gitkeep │ │ ├── scripts.yaml │ │ ├── strings.yaml │ │ ├── browser_appearance.yaml │ │ ├── newsletter.yaml │ │ ├── banner.yaml │ │ ├── social_media.yaml │ │ └── theme.yaml │ ├── trees │ │ ├── .gitkeep │ │ ├── collections │ │ │ ├── team.yaml │ │ │ └── pages.yaml │ │ └── navigation │ │ │ ├── bottom_footer.yaml │ │ │ └── footer.yaml │ ├── collections │ │ ├── .gitkeep │ │ ├── pages.yaml │ │ ├── posts.yaml │ │ ├── testimonials.yaml │ │ ├── team.yaml │ │ ├── pages │ │ │ ├── search.md │ │ │ ├── blog.md │ │ │ └── results.md │ │ ├── testimonials │ │ │ ├── ian-dooley.md │ │ │ ├── albert-dera.md │ │ │ ├── michele-dam.md │ │ │ ├── evie-maralyn.md │ │ │ ├── ayo-ogunseinde.md │ │ │ ├── brook-cagle.md │ │ │ ├── jess-nackos.md │ │ │ ├── alexander-hipp.md │ │ │ ├── jane-scott.md │ │ │ ├── alexandru-zdrobau.md │ │ │ ├── clarisse-meyer.md │ │ │ ├── joseph-gonzalez.md │ │ │ ├── prince-akachi.md │ │ │ ├── anna-balobanov.md │ │ │ ├── monica-campbell.md │ │ │ ├── christian-buehner.md │ │ │ ├── jurica-koletic.md │ │ │ └── imansyah-putera.md │ │ ├── team │ │ │ ├── albert-dera.md │ │ │ ├── ayo-ogunseinde.md │ │ │ ├── ian-dooley.md │ │ │ ├── anna-balobanov.md │ │ │ ├── alexander-hipp.md │ │ │ └── joseph-gonzalez.md │ │ └── posts │ │ │ ├── 2024-05-22.data-driven-decisions-using-insights-to-guide-your-next-move.md │ │ │ ├── 2024-08-14.finding-your-niche-standing-out-in-a-saturated-market.md │ │ │ ├── 2024-03-06.the-power-of-authenticity-how-honesty-builds-brand-loyalty.md │ │ │ ├── 2024-09-12.leading-through-uncertainty-building-resilience-in-your-team.md │ │ │ ├── 2024-04-02.storytelling-for-impact-crafting-narratives-that-resonate.md │ │ │ ├── 2024-06-21.engaging-audiences-tips-for-building-genuine-social-communities.md │ │ │ ├── 2022-08-02.beyond-acquisition-strategies-to-keep-customers-coming-back.md │ │ │ ├── 2024-07-10.scaling-sustainably-balancing-ambition-with-operational-readiness.md │ │ │ └── 2024-01-10.title-beyond-the-funnel-creating-a-customer-journey-map-that-converts.md │ ├── navigation │ │ ├── .gitkeep │ │ ├── bottom_footer.yaml │ │ ├── footer.yaml │ │ └── header.yaml │ ├── taxonomies │ │ ├── .gitkeep │ │ ├── categories.yaml │ │ └── categories │ │ │ ├── branding.yaml │ │ │ ├── business.yaml │ │ │ ├── leadership.yaml │ │ │ ├── marketing.yaml │ │ │ └── research.yaml │ └── seo.yaml ├── public │ ├── assets │ │ ├── .gitkeep │ │ ├── avatars │ │ │ ├── .gitkeep │ │ │ ├── ben-scott-twb7isl9cny-unsplash.jpg │ │ │ ├── aiony-haust-jmati5q_ygy-unsplash.jpg │ │ │ ├── albert-dera-ilip77sbmoe-unsplash.jpg │ │ │ ├── ian-dooley-d1upkifd04a-unsplash.jpg │ │ │ ├── jake-nackos-if9tk5uy-ki-unsplash.jpg │ │ │ ├── michael-dam-mez3pofgs_k-unsplash.jpg │ │ │ ├── alexander-hipp-ieebwgy_6la-unsplash.jpg │ │ │ ├── ayo-ogunseinde-sibvworyqs0-unsplash.jpg │ │ │ ├── brooke-cagle-w7pk4ffrsy0-unsplash.jpg │ │ │ ├── clarisse-meyer-x9cxi2eqlbw-unsplash.jpg │ │ │ ├── jurica-koletic-7yvzyzeitc8-unsplash.jpg │ │ │ ├── prince-akachi-4yv84vgqkrm-unsplash.jpg │ │ │ ├── joseph-gonzalez-ifgrcqhznqg-unsplash.jpg │ │ │ ├── kirill-balobanov-ef3aokt6hhg-unsplash.jpg │ │ │ ├── alexandru-zdrobau-bgz8vo3pk8k-unsplash.jpg │ │ │ ├── christian-buehner-ditylc26zvi-unsplash.jpg │ │ │ ├── christopher-campbell-rdeovte7vos-unsplash.jpg │ │ │ ├── imansyah-muhamad-putera-n4kewlkfozw-unsplash.jpg │ │ │ └── .meta │ │ │ │ ├── ben-scott-twb7isl9cny-unsplash.jpg.yaml │ │ │ │ ├── ian-dooley-d1upkifd04a-unsplash.jpg.yaml │ │ │ │ ├── aiony-haust-jmati5q_ygy-unsplash.jpg.yaml │ │ │ │ ├── albert-dera-ilip77sbmoe-unsplash.jpg.yaml │ │ │ │ ├── alexander-hipp-ieebwgy_6la-unsplash.jpg.yaml │ │ │ │ ├── brooke-cagle-w7pk4ffrsy0-unsplash.jpg.yaml │ │ │ │ ├── jake-nackos-if9tk5uy-ki-unsplash.jpg.yaml │ │ │ │ ├── joseph-gonzalez-ifgrcqhznqg-unsplash.jpg.yaml │ │ │ │ ├── michael-dam-mez3pofgs_k-unsplash.jpg.yaml │ │ │ │ ├── prince-akachi-4yv84vgqkrm-unsplash.jpg.yaml │ │ │ │ ├── alexandru-zdrobau-bgz8vo3pk8k-unsplash.jpg.yaml │ │ │ │ ├── ayo-ogunseinde-sibvworyqs0-unsplash.jpg.yaml │ │ │ │ ├── christian-buehner-ditylc26zvi-unsplash.jpg.yaml │ │ │ │ ├── clarisse-meyer-x9cxi2eqlbw-unsplash.jpg.yaml │ │ │ │ ├── jurica-koletic-7yvzyzeitc8-unsplash.jpg.yaml │ │ │ │ ├── kirill-balobanov-ef3aokt6hhg-unsplash.jpg.yaml │ │ │ │ ├── christopher-campbell-rdeovte7vos-unsplash.jpg.yaml │ │ │ │ └── imansyah-muhamad-putera-n4kewlkfozw-unsplash.jpg.yaml │ │ ├── images │ │ │ ├── .gitkeep │ │ │ ├── bedrock-screenshot-social.png │ │ │ ├── blake-wisz--jjg90oanwi-unsplash.jpg │ │ │ ├── carlos-muza-hpjsku2uysu-unsplash.jpg │ │ │ ├── jed-villejo-becc0nyip2g-unsplash.jpg │ │ │ ├── krakenimages-y5bvrlccx8k-unsplash.jpg │ │ │ ├── matt-howard-a4il43vunly-unsplash.jpg │ │ │ ├── dmitry-novikov-49gi04retc4-unsplash.jpg │ │ │ ├── jeremy-bishop-vgjgvtsfys4-unsplash.jpg │ │ │ ├── melanie-deziel-84g0uqydlt0-unsplash.jpg │ │ │ ├── campaign-creators-pypeceajezy-unsplash.jpg │ │ │ ├── jacopo-maiarelli--goux23dnks-unsplash.jpg │ │ │ └── .meta │ │ │ │ ├── blake-wisz--jjg90oanwi-unsplash.jpg.yaml │ │ │ │ ├── carlos-muza-hpjsku2uysu-unsplash.jpg.yaml │ │ │ │ ├── jed-villejo-becc0nyip2g-unsplash.jpg.yaml │ │ │ │ ├── jeremy-bishop-vgjgvtsfys4-unsplash.jpg.yaml │ │ │ │ ├── krakenimages-y5bvrlccx8k-unsplash.jpg.yaml │ │ │ │ ├── matt-howard-a4il43vunly-unsplash.jpg.yaml │ │ │ │ ├── melanie-deziel-84g0uqydlt0-unsplash.jpg.yaml │ │ │ │ ├── campaign-creators-pypeceajezy-unsplash.jpg.yaml │ │ │ │ ├── dmitry-novikov-49gi04retc4-unsplash.jpg.yaml │ │ │ │ ├── jacopo-maiarelli--goux23dnks-unsplash.jpg.yaml │ │ │ │ └── bedrock-screenshot-social.png.yaml │ │ └── logos │ │ │ └── .meta │ │ │ ├── logo-brand.svg.yaml │ │ │ ├── logo-brand-fixed.svg.yaml │ │ │ ├── logoipsum-logo-1.svg.yaml │ │ │ ├── logoipsum-logo-2.svg.yaml │ │ │ ├── logoipsum-logo-3.svg.yaml │ │ │ ├── logoipsum-logo-4.svg.yaml │ │ │ └── logoipsum-logo-5.svg.yaml │ └── favicon │ │ ├── favicon.ico │ │ ├── favicon-96x96.png │ │ ├── apple-touch-icon.png │ │ ├── web-app-manifest-192x192.png │ │ ├── web-app-manifest-512x512.png │ │ ├── favicon.svg │ │ └── site.webmanifest ├── resources │ ├── views │ │ ├── .gitkeep │ │ ├── sets │ │ │ ├── text.blade.php │ │ │ ├── buttons.blade.php │ │ │ ├── picture.blade.php │ │ │ ├── faqs.blade.php │ │ │ ├── pull-quote.blade.php │ │ │ └── video.blade.php │ │ ├── components │ │ │ ├── ui │ │ │ │ ├── form │ │ │ │ │ ├── integer.blade.php │ │ │ │ │ ├── dictionary.blade.php │ │ │ │ │ ├── submit.blade.php │ │ │ │ │ ├── honeypot.blade.php │ │ │ │ │ ├── files.blade.php │ │ │ │ │ ├── textarea.blade.php │ │ │ │ │ ├── radio.blade.php │ │ │ │ │ ├── select.blade.php │ │ │ │ │ ├── checkboxes.blade.php │ │ │ │ │ └── text.blade.php │ │ │ │ ├── pagination │ │ │ │ │ ├── item-slider.blade.php │ │ │ │ │ ├── item.blade.php │ │ │ │ │ └── item-current.blade.php │ │ │ │ ├── input-instructions.blade.php │ │ │ │ ├── label.blade.php │ │ │ │ ├── tabs │ │ │ │ │ ├── tabs.blade.php │ │ │ │ │ ├── panel.blade.php │ │ │ │ │ └── trigger.blade.php │ │ │ │ ├── carousel │ │ │ │ │ ├── slide.blade.php │ │ │ │ │ ├── previous.blade.php │ │ │ │ │ └── next.blade.php │ │ │ │ ├── avatar.blade.php │ │ │ │ ├── badge.blade.php │ │ │ │ ├── dropdown │ │ │ │ │ └── item.blade.php │ │ │ │ ├── input-error.blade.php │ │ │ │ ├── collapsible.blade.php │ │ │ │ ├── banner.blade.php │ │ │ │ └── alert.blade.php │ │ │ ├── faqs.blade.php │ │ │ ├── logo.blade.php │ │ │ ├── section-header.blade.php │ │ │ ├── entry-meta.blade.php │ │ │ ├── cp-toolbar.blade.php │ │ │ ├── entry-posts.blade.php │ │ │ ├── faqs-item.blade.php │ │ │ ├── buttons.blade.php │ │ │ ├── form-field.blade.php │ │ │ ├── search-form.blade.php │ │ │ ├── breadcrumbs.blade.php │ │ │ └── entry-testimonials.blade.php │ │ ├── partials │ │ │ ├── skip-to-content.blade.php │ │ │ ├── prose-class.blade.php │ │ │ ├── nav-social.blade.php │ │ │ ├── nav-bottom-footer.blade.php │ │ │ ├── related-posts.blade.php │ │ │ ├── nav-footer.blade.php │ │ │ ├── fallback-description.blade.php │ │ │ ├── nav-header-item.blade.php │ │ │ ├── browser-appearance.blade.php │ │ │ └── footer.blade.php │ │ ├── default.blade.php │ │ ├── blocks │ │ │ ├── search-form.blade.php │ │ │ ├── article.blade.php │ │ │ ├── contact.blade.php │ │ │ ├── faqs.blade.php │ │ │ ├── blog-excerpt.blade.php │ │ │ ├── blog-paginated.blade.php │ │ │ ├── team.blade.php │ │ │ └── search-results.blade.php │ │ ├── errors │ │ │ └── 404.blade.php │ │ ├── posts │ │ │ └── show.blade.php │ │ ├── sitemap │ │ │ └── sitemap.antlers.xml │ │ └── layout.blade.php │ ├── blueprints │ │ ├── .gitkeep │ │ ├── assets │ │ │ ├── social_images.yaml │ │ │ └── assets.yaml │ │ ├── globals │ │ │ ├── strings.yaml │ │ │ ├── scripts.yaml │ │ │ ├── newsletter.yaml │ │ │ ├── banner.yaml │ │ │ └── theme.yaml │ │ ├── user.yaml │ │ ├── taxonomies │ │ │ └── categories │ │ │ │ └── category.yaml │ │ ├── navigation │ │ │ └── header.yaml │ │ └── collections │ │ │ ├── testimonials │ │ │ └── testimonial.yaml │ │ │ ├── team │ │ │ └── team.yaml │ │ │ └── pages │ │ │ └── page.yaml │ ├── fieldsets │ │ ├── .gitkeep │ │ ├── style_guide.yaml │ │ ├── picture.yaml │ │ ├── search_form.yaml │ │ ├── newsletter.yaml │ │ ├── pull_quote.yaml │ │ ├── video.yaml │ │ ├── buttons.yaml │ │ ├── seo_json-ld_schema.yaml │ │ ├── hero_demo.yaml │ │ ├── blog_paginated.yaml │ │ ├── search_results.yaml │ │ ├── seo_basic.yaml │ │ ├── contact.yaml │ │ ├── table.yaml │ │ ├── blog_excerpt.yaml │ │ ├── testimonials.yaml │ │ ├── faqs_set.yaml │ │ ├── seo_sitemap.yaml │ │ ├── team.yaml │ │ ├── faqs.yaml │ │ ├── seo_open_graph.yaml │ │ └── seo_advanced.yaml │ ├── js │ │ ├── components │ │ │ ├── actions │ │ │ │ └── .gitkeep │ │ │ ├── fieldtypes │ │ │ │ └── ExampleFieldtype.vue │ │ │ ├── stepper.js │ │ │ ├── newsletter.js │ │ │ └── toaster.js │ │ ├── lite-yt-embed.js │ │ ├── embla.js │ │ ├── cp.js │ │ ├── site.js │ │ └── lib │ │ │ └── utils.js │ ├── css │ │ ├── cp.css │ │ ├── lite-yt-embed.css │ │ ├── utilities │ │ │ ├── site-grid.css │ │ │ ├── container.css │ │ │ ├── fill-current-nested.css │ │ │ └── br-hidden.css │ │ ├── elements │ │ │ ├── images.css │ │ │ ├── typography.css │ │ │ ├── page.css │ │ │ ├── borders.css │ │ │ └── links.css │ │ ├── objects │ │ │ └── layout.css │ │ ├── components │ │ │ ├── misc.css │ │ │ ├── card.css │ │ │ ├── scrollbar.css │ │ │ ├── typography.css │ │ │ ├── headings.css │ │ │ ├── badge.css │ │ │ ├── tooltip.css │ │ │ ├── alert.css │ │ │ └── button.css │ │ ├── fonts.css │ │ ├── typography.css │ │ └── site.css │ ├── forms │ │ └── contact.yaml │ ├── fonts │ │ └── Mona-Sans.woff2 │ └── svg │ │ ├── heroicons-outline │ │ ├── minus.svg │ │ ├── plus.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right.svg │ │ ├── x-mark.svg │ │ ├── bars-3.svg │ │ ├── cursor-arrow-rays.svg │ │ ├── square-3-stack-3d.svg │ │ ├── adjustments-horizontal.svg │ │ ├── swatch.svg │ │ ├── square-plus.svg │ │ └── cog-6-tooth.svg │ │ └── social │ │ ├── email.svg │ │ ├── x.svg │ │ ├── facebook.svg │ │ ├── linkedin.svg │ │ ├── youtube.svg │ │ ├── github.svg │ │ └── instagram.svg ├── app │ ├── Console │ │ └── Commands │ │ │ └── Scaffold │ │ │ └── stubs │ │ │ ├── fieldset_set.yaml.stub │ │ │ ├── set.blade.php.stub │ │ │ ├── block.blade.php.stub │ │ │ └── fieldset_block.yaml.stub │ ├── Support │ │ └── Yaml │ │ │ ├── ArticleYaml.php │ │ │ └── BlocksYaml.php │ ├── Http │ │ ├── Controllers │ │ │ └── NewsletterController.php │ │ └── Requests │ │ │ └── NewsletterRequest.php │ ├── View │ │ └── Components │ │ │ ├── CpToolbar.php │ │ │ ├── Ui │ │ │ └── Banner.php │ │ │ ├── FormField.php │ │ │ └── Faqs.php │ └── Tags │ │ └── YoutubeId.php ├── config │ └── statamic │ │ └── editions.php ├── .gitignore ├── routes │ └── web.php ├── prettier.config.js ├── package.json ├── vite.config.js └── .env.example ├── composer.json ├── StarterKitPostInstall.php ├── starter-kit.yaml ├── README.md └── .github └── ISSUE_TEMPLATE └── bug_report.yaml /export/content/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/content/globals/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/content/trees/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/public/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/resources/views/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/content/collections/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/content/navigation/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/content/taxonomies/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/public/assets/images/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/resources/blueprints/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/resources/fieldsets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/resources/js/components/actions/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /export/content/globals/scripts.yaml: -------------------------------------------------------------------------------- 1 | title: Scripts 2 | -------------------------------------------------------------------------------- /export/resources/css/cp.css: -------------------------------------------------------------------------------- 1 | /* This is all you. */ 2 | -------------------------------------------------------------------------------- /export/content/assets/assets.yaml: -------------------------------------------------------------------------------- 1 | title: Assets 2 | disk: assets -------------------------------------------------------------------------------- /export/content/taxonomies/categories.yaml: -------------------------------------------------------------------------------- 1 | title: Categories 2 | -------------------------------------------------------------------------------- /export/resources/views/sets/text.blade.php: -------------------------------------------------------------------------------- 1 | {!! $text !!} 2 | -------------------------------------------------------------------------------- /export/content/navigation/bottom_footer.yaml: -------------------------------------------------------------------------------- 1 | title: 'Bottom footer' 2 | -------------------------------------------------------------------------------- /export/resources/fieldsets/style_guide.yaml: -------------------------------------------------------------------------------- 1 | title: 'Styleguide' 2 | fields: [ ] 3 | -------------------------------------------------------------------------------- /export/resources/forms/contact.yaml: -------------------------------------------------------------------------------- 1 | title: Contact 2 | honeypot: fax_number 3 | -------------------------------------------------------------------------------- /export/resources/js/lite-yt-embed.js: -------------------------------------------------------------------------------- 1 | import 'lite-youtube-embed/src/lite-yt-embed.js' 2 | -------------------------------------------------------------------------------- /export/resources/css/lite-yt-embed.css: -------------------------------------------------------------------------------- 1 | @import 'lite-youtube-embed/src/lite-yt-embed.css'; 2 | -------------------------------------------------------------------------------- /export/resources/views/sets/buttons.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/content/globals/strings.yaml: -------------------------------------------------------------------------------- 1 | title: Strings 2 | data: 3 | related_posts: 'Related posts' 4 | -------------------------------------------------------------------------------- /export/content/navigation/footer.yaml: -------------------------------------------------------------------------------- 1 | title: Footer 2 | collections: 3 | - pages 4 | max_depth: 2 5 | -------------------------------------------------------------------------------- /export/content/navigation/header.yaml: -------------------------------------------------------------------------------- 1 | title: Header 2 | collections: 3 | - pages 4 | max_depth: 2 5 | -------------------------------------------------------------------------------- /export/app/Console/Commands/Scaffold/stubs/fieldset_set.yaml.stub: -------------------------------------------------------------------------------- 1 | title: '{{ name }}' 2 | fields: [ ] 3 | -------------------------------------------------------------------------------- /export/public/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/favicon/favicon.ico -------------------------------------------------------------------------------- /export/resources/blueprints/assets/social_images.yaml: -------------------------------------------------------------------------------- 1 | sections: 2 | main: 3 | display: Main 4 | fields: { } 5 | -------------------------------------------------------------------------------- /export/resources/js/embla.js: -------------------------------------------------------------------------------- 1 | import EmblaCarousel from 'embla-carousel' 2 | 3 | window.EmblaCarousel = EmblaCarousel 4 | -------------------------------------------------------------------------------- /export/resources/css/utilities/site-grid.css: -------------------------------------------------------------------------------- 1 | @utility site-grid { 2 | @apply grid gap-6 sm:grid-cols-12 lg:gap-8; 3 | } 4 | -------------------------------------------------------------------------------- /export/resources/css/utilities/container.css: -------------------------------------------------------------------------------- 1 | @utility container { 2 | @apply mx-auto w-full max-w-screen-xl px-6 md:px-8; 3 | } 4 | -------------------------------------------------------------------------------- /export/resources/fonts/Mona-Sans.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/resources/fonts/Mona-Sans.woff2 -------------------------------------------------------------------------------- /export/app/Console/Commands/Scaffold/stubs/set.blade.php.stub: -------------------------------------------------------------------------------- 1 |
2 |

🔧
{{ name }}

3 |
4 | -------------------------------------------------------------------------------- /export/public/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /export/public/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /export/resources/css/utilities/fill-current-nested.css: -------------------------------------------------------------------------------- 1 | @utility fill-current-nested { 2 | & * { 3 | @apply fill-current; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /export/public/favicon/web-app-manifest-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/favicon/web-app-manifest-192x192.png -------------------------------------------------------------------------------- /export/public/favicon/web-app-manifest-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/favicon/web-app-manifest-512x512.png -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/integer.blade.php: -------------------------------------------------------------------------------- 1 | @props(['model']) 2 | 3 | @include('components.ui.form.text', ['model' => $model, ...$attributes]) 4 | -------------------------------------------------------------------------------- /export/content/trees/collections/team.yaml: -------------------------------------------------------------------------------- 1 | tree: 2 | - 3 | entry: bcab7536-8e22-44c7-b727-30252f40786c 4 | - 5 | entry: df7cd462-3b98-4e40-b109-e0948d8a90c7 6 | -------------------------------------------------------------------------------- /export/public/assets/images/bedrock-screenshot-social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/bedrock-screenshot-social.png -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/dictionary.blade.php: -------------------------------------------------------------------------------- 1 | @props(['model']) 2 | 3 | @include('components.ui.form.combobox', ['model' => $model, ...$attributes]) 4 | -------------------------------------------------------------------------------- /export/content/taxonomies/categories/branding.yaml: -------------------------------------------------------------------------------- 1 | title: Branding 2 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 3 | updated_at: 1734444221 4 | blueprint: category 5 | -------------------------------------------------------------------------------- /export/content/taxonomies/categories/business.yaml: -------------------------------------------------------------------------------- 1 | title: Business 2 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 3 | updated_at: 1734444156 4 | blueprint: category 5 | -------------------------------------------------------------------------------- /export/content/taxonomies/categories/leadership.yaml: -------------------------------------------------------------------------------- 1 | title: Leadership 2 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 3 | updated_at: 1734444636 4 | blueprint: category 5 | -------------------------------------------------------------------------------- /export/content/taxonomies/categories/marketing.yaml: -------------------------------------------------------------------------------- 1 | title: Marketing 2 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 3 | updated_at: 1734438131 4 | blueprint: category 5 | -------------------------------------------------------------------------------- /export/content/taxonomies/categories/research.yaml: -------------------------------------------------------------------------------- 1 | title: Research 2 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 3 | updated_at: 1734444376 4 | blueprint: category 5 | -------------------------------------------------------------------------------- /export/resources/css/elements/images.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | img { 3 | @apply italic; 4 | } 5 | 6 | svg { 7 | @apply max-h-full; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /export/public/assets/avatars/ben-scott-twb7isl9cny-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/ben-scott-twb7isl9cny-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/blake-wisz--jjg90oanwi-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/blake-wisz--jjg90oanwi-unsplash.jpg -------------------------------------------------------------------------------- /export/resources/css/elements/typography.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | q { 3 | quotes: '“ ”'; 4 | } 5 | 6 | strong { 7 | @apply font-bold; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /export/config/statamic/editions.php: -------------------------------------------------------------------------------- 1 | env('STATAMIC_PRO_ENABLED', true), 5 | 6 | 'addons' => [ 7 | // 8 | ], 9 | ]; 10 | -------------------------------------------------------------------------------- /export/public/assets/avatars/aiony-haust-jmati5q_ygy-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/aiony-haust-jmati5q_ygy-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/albert-dera-ilip77sbmoe-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/albert-dera-ilip77sbmoe-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/ian-dooley-d1upkifd04a-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/ian-dooley-d1upkifd04a-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/jake-nackos-if9tk5uy-ki-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/jake-nackos-if9tk5uy-ki-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/michael-dam-mez3pofgs_k-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/michael-dam-mez3pofgs_k-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/carlos-muza-hpjsku2uysu-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/carlos-muza-hpjsku2uysu-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/jed-villejo-becc0nyip2g-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/jed-villejo-becc0nyip2g-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/krakenimages-y5bvrlccx8k-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/krakenimages-y5bvrlccx8k-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/matt-howard-a4il43vunly-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/matt-howard-a4il43vunly-unsplash.jpg -------------------------------------------------------------------------------- /export/resources/css/elements/page.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | html { 3 | @apply scroll-smooth; 4 | } 5 | 6 | hr { 7 | @apply border-gray-200; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /export/public/assets/avatars/alexander-hipp-ieebwgy_6la-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/alexander-hipp-ieebwgy_6la-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/ayo-ogunseinde-sibvworyqs0-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/ayo-ogunseinde-sibvworyqs0-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/brooke-cagle-w7pk4ffrsy0-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/brooke-cagle-w7pk4ffrsy0-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/clarisse-meyer-x9cxi2eqlbw-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/clarisse-meyer-x9cxi2eqlbw-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/jurica-koletic-7yvzyzeitc8-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/jurica-koletic-7yvzyzeitc8-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/prince-akachi-4yv84vgqkrm-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/prince-akachi-4yv84vgqkrm-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/dmitry-novikov-49gi04retc4-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/dmitry-novikov-49gi04retc4-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/jeremy-bishop-vgjgvtsfys4-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/jeremy-bishop-vgjgvtsfys4-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/melanie-deziel-84g0uqydlt0-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/melanie-deziel-84g0uqydlt0-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/joseph-gonzalez-ifgrcqhznqg-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/joseph-gonzalez-ifgrcqhznqg-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/kirill-balobanov-ef3aokt6hhg-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/kirill-balobanov-ef3aokt6hhg-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/campaign-creators-pypeceajezy-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/campaign-creators-pypeceajezy-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/images/jacopo-maiarelli--goux23dnks-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/images/jacopo-maiarelli--goux23dnks-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logo-brand.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 8380 3 | last_modified: 1729069243 4 | width: '237' 5 | height: '46' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/content/collections/pages.yaml: -------------------------------------------------------------------------------- 1 | title: Pages 2 | template: default 3 | layout: layout 4 | revisions: false 5 | route: '{parent_uri}/{slug}' 6 | sort_dir: asc 7 | structure: 8 | root: true 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/alexandru-zdrobau-bgz8vo3pk8k-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/alexandru-zdrobau-bgz8vo3pk8k-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/christian-buehner-ditylc26zvi-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/christian-buehner-ditylc26zvi-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logo-brand-fixed.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 8392 3 | last_modified: 1729145856 4 | width: '237' 5 | height: '46' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logoipsum-logo-1.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 2169 3 | last_modified: 1729069243 4 | width: '132' 5 | height: '35' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logoipsum-logo-2.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 4484 3 | last_modified: 1729069243 4 | width: '132' 5 | height: '35' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logoipsum-logo-3.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 2303 3 | last_modified: 1729069243 4 | width: '140' 5 | height: '30' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logoipsum-logo-4.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 1883 3 | last_modified: 1729069243 4 | width: '100' 5 | height: '51' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/logos/.meta/logoipsum-logo-5.svg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 570 3 | last_modified: 1729069243 4 | width: '119' 5 | height: '30' 6 | mime_type: image/svg+xml 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/avatars/christopher-campbell-rdeovte7vos-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/christopher-campbell-rdeovte7vos-unsplash.jpg -------------------------------------------------------------------------------- /export/public/assets/avatars/imansyah-muhamad-putera-n4kewlkfozw-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jasonbaciulis/bedrock/HEAD/export/public/assets/avatars/imansyah-muhamad-putera-n4kewlkfozw-unsplash.jpg -------------------------------------------------------------------------------- /export/resources/css/utilities/br-hidden.css: -------------------------------------------------------------------------------- 1 | @utility br-hidden { 2 | br { 3 | display: none; 4 | } 5 | } 6 | 7 | @utility br-visible { 8 | br { 9 | display: block; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/blake-wisz--jjg90oanwi-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 203223 3 | last_modified: 1734445510 4 | width: 1920 5 | height: 1280 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/carlos-muza-hpjsku2uysu-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 279196 3 | last_modified: 1734445548 4 | width: 1920 5 | height: 1368 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/jed-villejo-becc0nyip2g-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 551057 3 | last_modified: 1734445615 4 | width: 1920 5 | height: 1517 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/jeremy-bishop-vgjgvtsfys4-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 1408910 3 | last_modified: 1734445148 4 | width: 5184 5 | height: 3456 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/krakenimages-y5bvrlccx8k-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 596111 3 | last_modified: 1734445721 4 | width: 1920 5 | height: 2880 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/matt-howard-a4il43vunly-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 2091439 3 | last_modified: 1734444976 4 | width: 3992 5 | height: 2242 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/melanie-deziel-84g0uqydlt0-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 384852 3 | last_modified: 1734445445 4 | width: 1920 5 | height: 1249 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/resources/css/objects/layout.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .p-section { 3 | @apply py-24 sm:py-32 lg:py-40; 4 | } 5 | 6 | .m-section { 7 | @apply my-24 sm:my-32 lg:my-40; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/pagination/item-slider.blade.php: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | 4 | 5 |
  • 6 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/pagination/item.blade.php: -------------------------------------------------------------------------------- 1 | @props(['url', 'page']) 2 | 3 |
  • 4 | 5 | {{ $page }} 6 | 7 |
  • 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/campaign-creators-pypeceajezy-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 626871 3 | last_modified: 1734445095 4 | width: 3008 5 | height: 2177 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/dmitry-novikov-49gi04retc4-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 1546606 3 | last_modified: 1734445296 4 | width: 3968 5 | height: 5952 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/jacopo-maiarelli--goux23dnks-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: { } 2 | size: 694004 3 | last_modified: 1734445667 4 | width: 1920 5 | height: 1280 6 | mime_type: image/jpeg 7 | duration: null 8 | -------------------------------------------------------------------------------- /export/resources/blueprints/assets/assets.yaml: -------------------------------------------------------------------------------- 1 | title: Asset 2 | fields: 3 | - 4 | handle: alt 5 | field: 6 | display: 'Alt Text' 7 | type: text 8 | instructions: 'Description of the image' 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/ben-scott-twb7isl9cny-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 49-33-1 3 | size: 95312 4 | last_modified: 1736254135 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/ian-dooley-d1upkifd04a-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 51-43-1 3 | size: 66028 4 | last_modified: 1736254143 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jasonbaciulis/bedrock", 3 | "extra": { 4 | "statamic": { 5 | "name": "Bedrock", 6 | "description": "The Foundation for your Statamic projects" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/aiony-haust-jmati5q_ygy-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 55-39-1.2 3 | size: 79632 4 | last_modified: 1736254253 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/albert-dera-ilip77sbmoe-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 49-31-1 3 | size: 148958 4 | last_modified: 1736253712 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/alexander-hipp-ieebwgy_6la-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 50-32-1 3 | size: 45533 4 | last_modified: 1736253713 5 | width: 640 6 | height: 640 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/brooke-cagle-w7pk4ffrsy0-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 44-43-1.4 3 | size: 107834 4 | last_modified: 1736254137 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/jake-nackos-if9tk5uy-ki-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 50-52-1.3 3 | size: 58392 4 | last_modified: 1736253722 5 | width: 640 6 | height: 805 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/joseph-gonzalez-ifgrcqhznqg-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 46-35-1 3 | size: 67908 4 | last_modified: 1736253723 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/michael-dam-mez3pofgs_k-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 49-32-1.4 3 | size: 60855 4 | last_modified: 1736253729 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/prince-akachi-4yv84vgqkrm-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 39-34-1.6 3 | size: 84245 4 | last_modified: 1736253734 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/resources/css/elements/borders.css: -------------------------------------------------------------------------------- 1 | @layer base { 2 | *, 3 | ::after, 4 | ::before, 5 | ::backdrop, 6 | ::file-selector-button { 7 | border-color: var(--color-border, currentColor); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/alexandru-zdrobau-bgz8vo3pk8k-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 54-27-1.2 3 | size: 94391 4 | last_modified: 1736254134 5 | width: 640 6 | height: 963 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/ayo-ogunseinde-sibvworyqs0-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 55-37-1.2 3 | size: 65683 4 | last_modified: 1736253717 5 | width: 640 6 | height: 427 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/christian-buehner-ditylc26zvi-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 64-40-1.4 3 | size: 44012 4 | last_modified: 1736253718 5 | width: 640 6 | height: 427 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/clarisse-meyer-x9cxi2eqlbw-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 52-44-2.4 3 | size: 111128 4 | last_modified: 1736254142 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/jurica-koletic-7yvzyzeitc8-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 51-34-1.1 3 | size: 114431 4 | last_modified: 1736253728 5 | width: 640 6 | height: 960 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/kirill-balobanov-ef3aokt6hhg-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 44-33-1.3 3 | size: 20726 4 | last_modified: 1736254250 5 | width: 640 6 | height: 420 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/christopher-campbell-rdeovte7vos-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 52-41-1.2 3 | size: 33113 4 | last_modified: 1736253720 5 | width: 640 6 | height: 427 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/public/assets/avatars/.meta/imansyah-muhamad-putera-n4kewlkfozw-unsplash.jpg.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | focus: 62-53-1 3 | size: 42121 4 | last_modified: 1736254144 5 | width: 640 6 | height: 640 7 | mime_type: image/jpeg 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/resources/css/components/misc.css: -------------------------------------------------------------------------------- 1 | /* Used to hide alpine elements before being rendered. */ 2 | [x-cloak] { 3 | @apply !hidden; 4 | } 5 | 6 | .no-scroll { 7 | @apply h-full overflow-hidden pr-[var(--scrollbar-width)]; 8 | } 9 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/pagination/item-current.blade.php: -------------------------------------------------------------------------------- 1 | @props(['url', 'page']) 2 | 3 |
  • 4 | 5 | {{ $page }} 6 | 7 |
  • 8 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/x-mark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/content/trees/navigation/bottom_footer.yaml: -------------------------------------------------------------------------------- 1 | tree: 2 | - 3 | id: e2b72cc1-795c-4b38-ae70-69e9714b0610 4 | title: Terms 5 | url: '#' 6 | - 7 | id: 7729099b-6d44-4a1a-a85f-3a3a80673769 8 | title: Privacy 9 | url: '#' 10 | -------------------------------------------------------------------------------- /export/resources/fieldsets/picture.yaml: -------------------------------------------------------------------------------- 1 | title: Picture 2 | fields: 3 | - 4 | handle: image 5 | field: common.image 6 | - 7 | handle: caption 8 | field: 9 | type: text 10 | localizable: true 11 | display: Caption 12 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/input-instructions.blade.php: -------------------------------------------------------------------------------- 1 | @props(['id', 'instructions']) 2 | 3 |

    class(['text-muted-foreground text-sm']) }} 5 | id="{{ $id }}-instructions" 6 | > 7 | {{ $instructions }} 8 |

    9 | -------------------------------------------------------------------------------- /export/content/seo.yaml: -------------------------------------------------------------------------------- 1 | title: '@seo:title' 2 | site_name: 'Site Name' 3 | site_name_position: after 4 | site_name_separator: '|' 5 | canonical_url: '@seo:permalink' 6 | robots: 7 | - noindex 8 | image: false 9 | priority: 0.5 10 | change_frequency: monthly 11 | -------------------------------------------------------------------------------- /export/public/assets/images/.meta/bedrock-screenshot-social.png.yaml: -------------------------------------------------------------------------------- 1 | data: 2 | alt: 'Bedrock Statamic starter-kit demo components screenshot' 3 | size: 65641 4 | last_modified: 1756634011 5 | width: 1200 6 | height: 600 7 | mime_type: image/png 8 | duration: null 9 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/bars-3.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/resources/views/partials/skip-to-content.blade.php: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /export/resources/fieldsets/search_form.yaml: -------------------------------------------------------------------------------- 1 | title: 'Search form' 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | config: 12 | display: Text 13 | -------------------------------------------------------------------------------- /export/app/Console/Commands/Scaffold/stubs/block.blade.php.stub: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |
    6 | -------------------------------------------------------------------------------- /export/content/trees/collections/pages.yaml: -------------------------------------------------------------------------------- 1 | tree: 2 | - 3 | entry: home 4 | - 5 | entry: 506c8e50-bc23-4c16-b691-c8aca71c1258 6 | - 7 | entry: 00527668-31b8-4658-88e3-b41fba9dc10c 8 | children: 9 | - 10 | entry: d50dbcf7-2ed9-4a10-91c5-5b5557d694ea 11 | -------------------------------------------------------------------------------- /export/content/globals/browser_appearance.yaml: -------------------------------------------------------------------------------- 1 | title: 'Browser appearance' 2 | data: 3 | disable_phone_detection: false 4 | disable_email_detection: false 5 | disable_address_detection: false 6 | theme_color: '#171717' 7 | apple_mobile_web_app: false 8 | android_mobile_web_app: false 9 | -------------------------------------------------------------------------------- /export/resources/css/elements/links.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | a, 3 | button { 4 | @apply focus-visible:border-ring focus-visible:ring-ring/50 rounded-lg transition focus:outline-none focus-visible:ring-3; 5 | } 6 | 7 | button { 8 | @apply cursor-pointer; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /export/resources/fieldsets/newsletter.yaml: -------------------------------------------------------------------------------- 1 | title: Newsletter 2 | fields: 3 | - 4 | handle: form 5 | field: 6 | type: section 7 | display: Form 8 | instructions: 'Form content is configured inside [Globals](/cp/globals/newsletter).' 9 | hide_display: true 10 | -------------------------------------------------------------------------------- /export/content/globals/newsletter.yaml: -------------------------------------------------------------------------------- 1 | title: Newsletter 2 | data: 3 | title: 'Sign up for our newsletter' 4 | text: 'This is where you make your best pitch on why anyone should subscribe.' 5 | input_placeholder: 'Enter your email' 6 | button_label: Subscribe 7 | success_message: "Congrats, you're in!" 8 | -------------------------------------------------------------------------------- /export/resources/views/sets/picture.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | @isset($caption) 5 |
    6 | {!! $caption !!} 7 |
    8 | @endisset 9 |
    10 | -------------------------------------------------------------------------------- /export/resources/views/default.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layout') 2 | 3 | @section('body') 4 |
    5 | @foreach ($page->blocks as $block) 6 | @include('blocks.'.str_replace('_', '-', $block->type), ['block' => $block]) 7 | @endforeach 8 |
    9 | @endsection 10 | -------------------------------------------------------------------------------- /export/resources/fieldsets/pull_quote.yaml: -------------------------------------------------------------------------------- 1 | title: 'Pull Quote' 2 | fields: 3 | - 4 | handle: quote 5 | field: 6 | type: textarea 7 | localizable: true 8 | display: Quote 9 | - 10 | handle: author 11 | field: 12 | type: text 13 | localizable: true 14 | display: Author 15 | -------------------------------------------------------------------------------- /export/resources/views/components/faqs.blade.php: -------------------------------------------------------------------------------- 1 |
    except(['items']) }}> 2 | {{ $slot }} 3 |
    4 | 5 | @section('json_ld') 6 | 9 | @endsection 10 | -------------------------------------------------------------------------------- /export/resources/views/sets/faqs.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | @foreach ($items as $item) 4 | 5 | @endforeach 6 | 7 |
    8 | -------------------------------------------------------------------------------- /export/resources/fieldsets/video.yaml: -------------------------------------------------------------------------------- 1 | title: Video 2 | fields: 3 | - 4 | handle: youtube_url 5 | field: 6 | display: 'YouTube URL' 7 | type: video 8 | always_save: false 9 | - 10 | handle: caption 11 | field: 12 | type: text 13 | localizable: true 14 | display: Caption 15 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['id', 'display', 'color' => 'text-foreground', 'hide_display' => false]) 2 | 3 | 10 | -------------------------------------------------------------------------------- /export/resources/views/sets/pull-quote.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    “{!! $quote !!}”
    3 | @isset($author) 4 |
    — {!! $author !!}
    5 | @endisset 6 |
    7 | -------------------------------------------------------------------------------- /export/resources/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Mona Sans'; 3 | src: 4 | url('/resources/fonts/Mona-Sans.woff2') format('woff2 supports variations'), 5 | url('/resources/fonts/Mona-Sans.woff2') format('woff2-variations'); 6 | font-weight: 400 700; 7 | font-stretch: 100%; 8 | font-display: swap; 9 | } 10 | -------------------------------------------------------------------------------- /export/resources/svg/social/email.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /export/resources/fieldsets/buttons.yaml: -------------------------------------------------------------------------------- 1 | title: Buttons 2 | fields: 3 | - 4 | handle: buttons 5 | field: 6 | mode: stacked 7 | add_row: 'Add button' 8 | type: grid 9 | localizable: true 10 | display: Buttons 11 | replicator_preview: false 12 | fields: 13 | - 14 | import: button 15 | -------------------------------------------------------------------------------- /export/app/Console/Commands/Scaffold/stubs/fieldset_block.yaml.stub: -------------------------------------------------------------------------------- 1 | title: '{{ name }}' 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | config: 12 | display: Text 13 | - 14 | handle: image 15 | field: common.image 16 | -------------------------------------------------------------------------------- /export/app/Support/Yaml/ArticleYaml.php: -------------------------------------------------------------------------------- 1 | class(['flex flex-col gap-2']) }}> 7 |
    attributes }}> 8 | {{ $list }} 9 |
    10 | 11 | {{ $panels }} 12 | 13 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/carousel/slide.blade.php: -------------------------------------------------------------------------------- 1 |
    class(['min-w-0 shrink-0 grow-0 basis-full']) }} 3 | role="group" 4 | aria-roledescription="slide" 5 | x-bind:class="{ 6 | 'pl-4': orientation === 'horizontal', 7 | 'pt-4': orientation === 'vertical', 8 | }" 9 | > 10 | {{ $slot }} 11 |
    12 | -------------------------------------------------------------------------------- /export/content/collections/posts.yaml: -------------------------------------------------------------------------------- 1 | title: Posts 2 | template: posts/show 3 | layout: layout 4 | taxonomies: 5 | - categories 6 | revisions: false 7 | route: '/posts/{slug}' 8 | date: true 9 | sort_dir: desc 10 | date_behavior: 11 | past: public 12 | future: private 13 | preview_targets: 14 | - 15 | label: Entry 16 | url: '{permalink}' 17 | refresh: true 18 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/cursor-arrow-rays.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/resources/views/components/logo.blade.php: -------------------------------------------------------------------------------- 1 | {{-- 2 | Set the logo inside Control Panel in /cp/globals/theme 3 | --}} 4 | 5 | @props([ 6 | 'logo', 7 | 'url' => config('app.url'), 8 | 'aria_label' => config('app.name').' logo', 9 | ]) 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/avatar.blade.php: -------------------------------------------------------------------------------- 1 | @props(['image', 'w', 'h', 'name']) 2 | 3 |
    class(['shrink-0 rounded-full overflow-hidden bg-primary-foreground']) }}> 4 | 5 | {!! $name !!}'s avatar 6 | 7 |
    8 | -------------------------------------------------------------------------------- /export/content/collections/testimonials.yaml: -------------------------------------------------------------------------------- 1 | title: Testimonials 2 | template: default 3 | layout: layout 4 | revisions: false 5 | slugs: false 6 | sort_dir: asc 7 | date_behavior: 8 | past: public 9 | future: private 10 | preview_targets: 11 | - 12 | label: Entry 13 | url: '{permalink}' 14 | refresh: true 15 | structure: 16 | root: false 17 | max_depth: 1 18 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/square-3-stack-3d.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/content/collections/team.yaml: -------------------------------------------------------------------------------- 1 | title: Team 2 | template: default 3 | layout: layouts/site 4 | revisions: false 5 | title_format: '{first_name} {last_name}' 6 | sort_dir: asc 7 | date_behavior: 8 | past: public 9 | future: private 10 | preview_targets: 11 | - 12 | label: Entry 13 | url: '{permalink}' 14 | refresh: true 15 | structure: 16 | root: false 17 | max_depth: 1 18 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/adjustments-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/resources/fieldsets/hero_demo.yaml: -------------------------------------------------------------------------------- 1 | title: 'Hero Demo' 2 | fields: 3 | - 4 | handle: title 5 | field: common.text_plain 6 | config: 7 | display: Title 8 | instructions: 'You can use `shift+enter` to control line breaks on large screens' 9 | - 10 | handle: text 11 | field: common.text_plain 12 | config: 13 | display: Text 14 | - 15 | import: buttons 16 | -------------------------------------------------------------------------------- /export/resources/css/components/card.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .card { 3 | @apply bg-card text-card-foreground flex flex-col gap-5 rounded-xl border p-6 shadow-sm; 4 | } 5 | 6 | .card__header { 7 | @apply flex flex-col gap-1.5; 8 | } 9 | 10 | .card__content { 11 | @apply flex flex-1 flex-col gap-5; 12 | } 13 | 14 | .card__footer { 15 | @apply flex items-center; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /export/resources/svg/social/x.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/resources/js/components/fieldtypes/ExampleFieldtype.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | -------------------------------------------------------------------------------- /export/resources/views/components/section-header.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'title', 3 | 'text', 4 | 'margin' => 'mb-20', 5 | ]) 6 | 7 |
    class(['mx-auto max-w-xl text-center', $margin]) }}> 8 |

    {!! $title !!}

    9 | 10 | @isset($text) 11 |

    {!! $text !!}

    12 | @endisset 13 |
    14 | -------------------------------------------------------------------------------- /export/resources/svg/social/facebook.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/resources/views/blocks/search-form.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 |
    6 | 7 |
    8 |
    9 |
    10 | -------------------------------------------------------------------------------- /export/resources/views/blocks/article.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    5 | @foreach ($block->article as $set) 6 | @include('sets.'.str_replace('_', '-', $set->type), [...$set]) 7 | @endforeach 8 |
    9 |
    10 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/submit.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'label' => 'Submit', 3 | ]) 4 | 5 | 17 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/badge.blade.php: -------------------------------------------------------------------------------- 1 | @props(['variant' => 'primary', 'as' => 'span']) 2 | 3 | <{{ $as }} 4 | {{ 5 | $attributes->class([ 6 | 'badge', 7 | 'badge--primary' => $variant === 'primary', 8 | 'badge--secondary' => $variant === 'secondary', 9 | 'badge--outline' => $variant === 'outline', 10 | ]) 11 | }} 12 | > 13 | {{ $slot }} 14 | 15 | -------------------------------------------------------------------------------- /export/content/globals/banner.yaml: -------------------------------------------------------------------------------- 1 | title: Banner 2 | data: 3 | show: true 4 | text: 5 | - 6 | type: paragraph 7 | content: 8 | - 9 | type: text 10 | marks: 11 | - 12 | type: bold 13 | text: 'Big news!' 14 | - 15 | type: text 16 | text: " We're excited to announce a brand new product. Check it out →" 17 | link_url: '#' 18 | cookie_expires: 7 19 | -------------------------------------------------------------------------------- /export/resources/svg/social/linkedin.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/resources/js/cp.js: -------------------------------------------------------------------------------- 1 | /** 2 | * When extending the control panel, be sure to uncomment the necessary code for your build process: 3 | * https://statamic.dev/extending/control-panel 4 | */ 5 | 6 | Statamic.booting(() => { 7 | // Field actions allow you to modify value for specific fields: 8 | // https://statamic.dev/extending/field-actions 9 | // Action registration example 10 | // Statamic.$fieldActions.add('slug-fieldtype', action) 11 | }) 12 | -------------------------------------------------------------------------------- /export/resources/css/components/scrollbar.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .scrollbar { 3 | scrollbar-width: thin; 4 | scrollbar-color: theme('colors.gray.400') transparent; 5 | 6 | &::-webkit-scrollbar { 7 | @apply w-1 pr-1; 8 | } 9 | 10 | &::-webkit-scrollbar-track { 11 | @apply rounded-full bg-transparent; 12 | } 13 | 14 | &::-webkit-scrollbar-thumb { 15 | @apply rounded-full bg-gray-400; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /export/resources/blueprints/globals/strings.yaml: -------------------------------------------------------------------------------- 1 | tabs: 2 | main: 3 | display: Main 4 | sections: 5 | - 6 | display: Strings 7 | instructions: 'Strings that still need to be updated in CP but make more sense to be set globally instead of inside a Block or every Entry' 8 | fields: 9 | - 10 | handle: related_posts 11 | field: 12 | display: 'Related posts' 13 | type: text 14 | -------------------------------------------------------------------------------- /export/content/collections/pages/search.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 00527668-31b8-4658-88e3-b41fba9dc10c 3 | blueprint: page 4 | title: Search 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 11 | updated_at: 1736333700 12 | blocks: 13 | - 14 | id: m5ns90sh 15 | title: Search 16 | type: search_form 17 | enabled: true 18 | --- 19 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/carousel/previous.blade.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /export/resources/views/blocks/contact.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 |
    6 | 11 |
    12 |
    13 |
    14 | -------------------------------------------------------------------------------- /export/resources/svg/social/youtube.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/carousel/next.blade.php: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/honeypot.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'handle', 4 | 'formHandle', 5 | ]) 6 | 7 | 18 | -------------------------------------------------------------------------------- /export/resources/fieldsets/blog_paginated.yaml: -------------------------------------------------------------------------------- 1 | title: 'Blog Paginated' 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | config: 12 | display: Text 13 | - 14 | handle: limit 15 | field: 16 | default: '9' 17 | display: Limit 18 | type: integer 19 | width: 50 20 | if: 21 | query: 'not custom' 22 | instructions: 'Entries per page' 23 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/ian-dooley.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 96a0905f-ab61-4a12-9449-a4f8c8ec9721 3 | blueprint: testimonial 4 | title: 'Ian Dooley' 5 | first_name: Ian 6 | last_name: Dooley 7 | quote: 'I deployed my Statamic site in record time. This kit is like instant coffee—just add water and enjoy!' 8 | avatar: avatars/ian-dooley-d1upkifd04a-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256806 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/fieldsets/search_results.yaml: -------------------------------------------------------------------------------- 1 | title: 'Search results' 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | type: text 7 | display: Title 8 | - 9 | handle: no_results_text 10 | field: common.text_plain 11 | config: 12 | display: 'No results text' 13 | - 14 | handle: limit 15 | field: 16 | default: 6 17 | display: Limit 18 | type: integer 19 | instructions: 'Entries per page' 20 | width: 50 21 | always_save: false 22 | -------------------------------------------------------------------------------- /export/resources/views/components/entry-meta.blade.php: -------------------------------------------------------------------------------- 1 | @props(['date', 'categories']) 2 | 3 |
    class(['flex items-center gap-4']) }}> 4 | 10 | @isset($categories->title) 11 | {!! $categories->title !!} 12 | @endisset 13 |
    14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/albert-dera.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 84b0c988-3fdc-4f37-a548-df1d444961a4 3 | blueprint: testimonial 4 | title: 'Albert Dera' 5 | first_name: Albert 6 | last_name: Dera 7 | quote: "This kit is my new secret weapon. It's like having a personal coding ninja stashed in my project folder." 8 | avatar: avatars/albert-dera-ilip77sbmoe-unsplash.jpg 9 | author_title: 'Laravel developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256298 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/michele-dam.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 05c77479-d67e-4cd3-8696-38b1c80446cc 3 | blueprint: testimonial 4 | title: 'Michele Dam' 5 | first_name: Michele 6 | last_name: Dam 7 | quote: "It's like Laravel Forge for your front-end. I spin up sites so fast, my boss thinks I'm a coding wizard!" 8 | avatar: avatars/michael-dam-mez3pofgs_k-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736258332 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/dropdown/item.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'as' => 'a', 3 | ]) 4 | 5 | <{{ $as }} 6 | {{ 7 | $attributes->class([ 8 | 'hover:bg-accent hover:text-accent-foreground [&_svg:not([class*="text-"])]:text-muted-foreground relative flex items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-hidden select-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*="size-"])]:size-4', 9 | ]) 10 | }} 11 | > 12 | {{ $slot }} 13 | 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/evie-maralyn.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: ddbd1fc2-e109-4db3-9774-403011160fcb 3 | blueprint: testimonial 4 | title: 'Aiony Haust' 5 | quote: 'I spun this kit up in minutes, and my dev environment never looked so sharp.' 6 | author: 'Evie Maralyn' 7 | author_title: 'Statamic developer' 8 | featured: false 9 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 10 | updated_at: 1736256234 11 | first_name: Aiony 12 | last_name: Haust 13 | avatar: avatars/aiony-haust-jmati5q_ygy-unsplash.jpg 14 | --- 15 | -------------------------------------------------------------------------------- /export/resources/css/components/typography.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .tagline { 3 | @apply text-sm font-semibold tracking-wide uppercase sm:text-base; 4 | } 5 | 6 | .content-xl { 7 | @apply text-xl sm:text-2xl; 8 | } 9 | 10 | .content-lg { 11 | @apply text-lg sm:text-xl/8; 12 | } 13 | 14 | .content { 15 | @apply text-base sm:text-lg; 16 | } 17 | 18 | .content-sm { 19 | @apply text-sm sm:text-base; 20 | } 21 | 22 | .content-xs { 23 | @apply text-xs sm:text-sm; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/input-error.blade.php: -------------------------------------------------------------------------------- 1 | {{-- 2 | Display error when there is a validation error with the name field. 3 | Uses Laravel Precognition: 4 | https://laravel.com/docs/12.x/precognition#using-alpine 5 | --}} 6 | 7 | @props(['handle', 'id']) 8 | 9 | 16 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/ayo-ogunseinde.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: d594d5da-ed13-4d42-8530-f0e85e74a38e 3 | blueprint: testimonial 4 | title: 'Ayo Ogunseinde' 5 | first_name: Ayo 6 | last_name: Ogunseinde 7 | quote: "One install, and I'm in. It's the easiest CMS setup since npm init—fewer weird errors, more coding mojo!" 8 | avatar: avatars/ayo-ogunseinde-sibvworyqs0-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256488 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/brook-cagle.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: a9c0391b-565a-47cb-a5d2-578116ba027d 3 | blueprint: testimonial 4 | title: 'Brook Cagle' 5 | first_name: Brook 6 | last_name: Cagle 7 | quote: 'Seriously powerful, yet beginner-friendly. My favorite trifecta: speed, simplicity, and total control over content.' 8 | avatar: avatars/brooke-cagle-w7pk4ffrsy0-unsplash.jpg 9 | author_title: 'Full-stack developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256601 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/jess-nackos.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 5f54a892-98ce-4840-a832-bc578044fa6c 3 | blueprint: testimonial 4 | title: 'Jess Nackos' 5 | first_name: Jess 6 | last_name: Nackos 7 | quote: 'Saves me time, keeps my code squeaky clean, and impresses clients. This kit is the triple threat for Statamic devs.' 8 | avatar: avatars/jake-nackos-if9tk5uy-ki-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256895 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/js/site.js: -------------------------------------------------------------------------------- 1 | import Alpine from 'alpinejs' 2 | import Collapse from '@alpinejs/collapse' 3 | import Persist from '@alpinejs/persist' 4 | import Focus from '@alpinejs/focus' 5 | import Intersect from '@alpinejs/intersect' 6 | import Mask from '@alpinejs/mask' 7 | import Precognition from 'laravel-precognition-alpine' 8 | import Cookies from 'js-cookie' 9 | 10 | window.Cookies = Cookies 11 | window.Alpine = Alpine 12 | 13 | Alpine.plugin([Collapse, Focus, Persist, Intersect, Mask, Precognition]) 14 | Alpine.start() 15 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/tabs/panel.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'name', 3 | 'alpine_property' => 'activeTab', // Alpine property of the parent component that controls the active tab. 4 | ]) 5 | 6 |
    15 | {{ $slot }} 16 |
    17 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/alexander-hipp.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 753bb167-dff2-4a9c-99f6-bf6dfe579a73 3 | blueprint: testimonial 4 | title: 'Alexander Hipp' 5 | first_name: Alexander 6 | last_name: Hipp 7 | quote: 'No more wrestling with front-end config. This starter kit handles the heavy lifting so I can code the fun stuff!' 8 | avatar: avatars/alexander-hipp-ieebwgy_6la-unsplash.jpg 9 | author_title: 'Laravel developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256373 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/jane-scott.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 5f43de73-acf2-4038-9dc5-5f7ba5fb6c0d 3 | blueprint: testimonial 4 | title: 'Jane Scott' 5 | first_name: Jane 6 | last_name: Scott 7 | quote: "I love how everything's so modular. I can hack features, push code, and watch the updates go live without manual tinkering." 8 | avatar: avatars/ben-scott-twb7isl9cny-unsplash.jpg 9 | author_title: 'Full-stack developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256563 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/alexandru-zdrobau.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: f0e82659-2eec-4afc-b711-7fd98c94e85b 3 | blueprint: testimonial 4 | title: 'Alexandru Zdrobau' 5 | first_name: Alexandru 6 | last_name: Zdrobau 7 | quote: 'Statamic plus this starter kit = unstoppable developer flow. My Git commits have never been so consistent!' 8 | avatar: avatars/alexandru-zdrobau-bgz8vo3pk8k-unsplash.jpg 9 | author_title: 'Laravel developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256447 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/clarisse-meyer.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 645f8dad-3f0d-4ea4-9fc9-a63b4d43f417 3 | blueprint: testimonial 4 | title: 'Clarisse Meyer' 5 | first_name: Clarisse 6 | last_name: Meyer 7 | quote: 'The codebase is so clean, my linter basically took a nap. Couldn’t ask for a more robust jumpstart to my projects!' 8 | avatar: avatars/clarisse-meyer-x9cxi2eqlbw-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256774 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/joseph-gonzalez.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: f7a8e63c-ce48-4d45-87a0-f36ea3a62f4c 3 | blueprint: testimonial 4 | title: 'Joseph Gonzalez' 5 | first_name: Joseph 6 | last_name: Gonzalez 7 | quote: "Zero to production in half the time. I'm officially spoiled and can't go back to my old workflows. Awesome kit!" 8 | avatar: avatars/joseph-gonzalez-ifgrcqhznqg-unsplash.jpg 9 | author_title: 'Full-stack developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256935 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/prince-akachi.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 8ca28192-f142-4531-8a61-44adbb845504 3 | blueprint: testimonial 4 | title: 'Prince Akachi' 5 | first_name: Prince 6 | last_name: Akachi 7 | quote: 'This starter kit is my new jam. I can focus on building epic content instead of fumbling around with boilerplate code.' 8 | avatar: avatars/prince-akachi-4yv84vgqkrm-unsplash.jpg 9 | author_title: 'Laravel developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736258367 13 | --- 14 | -------------------------------------------------------------------------------- /export/public/favicon/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /export/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /public/hot 3 | /public/storage 4 | /public/vendor/statamic 5 | /public/img/ 6 | /public/static/ 7 | /storage/*.key 8 | /vendor 9 | .env 10 | .env.backup 11 | .phpunit.result.cache 12 | .php_cs.cache 13 | docker-compose.override.yml 14 | Homestead.json 15 | Homestead.yaml 16 | npm-debug.log 17 | yarn-error.log 18 | .DS_Store 19 | /.idea 20 | /.vscode 21 | /.cursor 22 | /.claude 23 | # Comment the following lines if you don't compile your assets on the server: 24 | /public/build/ 25 | /public/css/ 26 | /public/js/ 27 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/anna-balobanov.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: b725af43-e73a-4432-99d3-125d4c9f908a 3 | blueprint: testimonial 4 | title: 'Anna Balobanov' 5 | first_name: Anna 6 | last_name: Balobanov 7 | quote: "If you hate repetitive setup tasks, this kit is your new BFF. It's like a framework buddy that always has your back!" 8 | avatar: avatars/kirill-balobanov-ef3aokt6hhg-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736258292 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/monica-campbell.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 10500ffa-361c-45aa-8f50-e3fddd4919a1 3 | blueprint: testimonial 4 | title: 'Monica Campbell' 5 | first_name: Monica 6 | last_name: Campbell 7 | quote: "If coding were a game, this starter kit is the cheat code. It's simply unstoppable for rapid Statamic builds!" 8 | avatar: avatars/christopher-campbell-rdeovte7vos-unsplash.jpg 9 | author_title: 'Full-stack developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256733 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/christian-buehner.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: ba7aa295-efa7-44e3-a619-a41fe441082d 3 | blueprint: testimonial 4 | title: 'Christian Buehner' 5 | first_name: Christian 6 | last_name: Buehner 7 | quote: 'Goodbye, messy config. Hello, streamlined layout. This starter kit made my Statamic dev a pure joy to work with!' 8 | avatar: avatars/christian-buehner-ditylc26zvi-unsplash.jpg 9 | author_title: 'Statamic developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256634 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/jurica-koletic.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 5ed5da46-4bea-42e4-9305-b52353fcd120 3 | blueprint: testimonial 4 | title: 'Jurica Koletic' 5 | first_name: Jurica 6 | last_name: Koletic 7 | quote: "Finally, a starter kit that doesn't require me to fight with plugins. It's like coding on easy mode, but with pro-level results!" 8 | avatar: avatars/jurica-koletic-7yvzyzeitc8-unsplash.jpg 9 | author_title: 'Laravel developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736258238 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/testimonials/imansyah-putera.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: a0a78c1b-6494-4690-a807-f144b970dc19 3 | blueprint: testimonial 4 | title: 'Imansyah Putera' 5 | first_name: Imansyah 6 | last_name: Putera 7 | quote: 'I love how the file structure is a breeze to navigate. My debugging sessions got a whole lot shorter thanks to this kit!' 8 | avatar: avatars/imansyah-muhamad-putera-n4kewlkfozw-unsplash.jpg 9 | author_title: 'Laravel developer' 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736256860 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/views/blocks/faqs.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 | 6 | @foreach ($block->items as $item) 7 | 8 | @endforeach 9 | 10 |
    11 |
    12 | -------------------------------------------------------------------------------- /export/content/collections/pages/blog.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 506c8e50-bc23-4c16-b691-c8aca71c1258 3 | blueprint: pages 4 | title: Blog 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 11 | updated_at: 1734455434 12 | blocks: 13 | - 14 | id: m4sowj8r 15 | title: 'Our blog' 16 | text: 'Everything about marketing, growth and running a business' 17 | type: blog_paginated 18 | enabled: true 19 | limit: 9 20 | --- 21 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/swatch.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/content/collections/pages/results.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: d50dbcf7-2ed9-4a10-91c5-5b5557d694ea 3 | blueprint: page 4 | title: Results 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 11 | updated_at: 1736333682 12 | blocks: 13 | - 14 | id: m5nrsdbk 15 | no_results_text: "Sorry, we couldn't find any results for this search." 16 | limit: 6 17 | type: search_results 18 | enabled: true 19 | title: 'Search results' 20 | --- 21 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/square-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/content/collections/team/albert-dera.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: df7cd462-3b98-4e40-b109-e0948d8a90c7 3 | blueprint: team 4 | title: 'Albert Dera' 5 | first_name: Albert 6 | last_name: Dera 7 | position: 'Senior developer' 8 | bio: 'Praesentium iure error aliquam voluptas ut libero. Commodi placeat sit iure nulla officiis. Ut ex sit repellat tempora. Qui est accusamus exercitationem natus ut voluptas. Officiis velit eos ducimus.' 9 | image: avatars/albert-dera-ilip77sbmoe-unsplash.jpg 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736270955 13 | --- 14 | -------------------------------------------------------------------------------- /export/public/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Bedrock Statamic starter-kit", 3 | "short_name": "Bedrock", 4 | "icons": [ 5 | { 6 | "src": "/favicon/web-app-manifest-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png", 9 | "purpose": "maskable" 10 | }, 11 | { 12 | "src": "/favicon/web-app-manifest-512x512.png", 13 | "sizes": "512x512", 14 | "type": "image/png", 15 | "purpose": "maskable" 16 | } 17 | ], 18 | "theme_color": "#ffffff", 19 | "background_color": "#ffffff", 20 | "display": "standalone" 21 | } -------------------------------------------------------------------------------- /export/resources/blueprints/user.yaml: -------------------------------------------------------------------------------- 1 | title: User 2 | fields: 3 | - 4 | handle: name 5 | field: 6 | type: text 7 | display: Name 8 | - 9 | handle: email 10 | field: 11 | type: text 12 | input: email 13 | display: Email Address 14 | - 15 | handle: roles 16 | field: 17 | type: user_roles 18 | width: 50 19 | - 20 | handle: groups 21 | field: 22 | type: user_groups 23 | width: 50 24 | - 25 | handle: avatar 26 | field: 27 | type: assets 28 | max_files: 1 29 | container: assets 30 | -------------------------------------------------------------------------------- /export/routes/web.php: -------------------------------------------------------------------------------- 1 | middleware([HandlePrecognitiveRequests::class]) 10 | ->name('newsletter'); 11 | 12 | // The Sitemap route to the sitemap.xml 13 | Route::statamic('/sitemap.xml', 'sitemap/sitemap', [ 14 | 'layout' => null, 15 | 'content_type' => 'application/xml', 16 | ]); 17 | -------------------------------------------------------------------------------- /export/content/collections/team/ayo-ogunseinde.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: e2f70ac4-b15b-43eb-9e0c-320cf947862e 3 | blueprint: team 4 | title: 'Ayo Ogunseinde' 5 | first_name: Ayo 6 | last_name: Ogunseinde 7 | position: 'Full-stack developer' 8 | bio: 'Aliquet adipiscing lectus praesent cras sed quis lectus egestas erat. Bibendum curabitur eget habitant feugiat nec faucibus eu lorem suscipit. Vitae vitae tempor enim eget lacus nulla leo.' 9 | image: avatars/ayo-ogunseinde-sibvworyqs0-unsplash.jpg 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736271434 13 | --- 14 | -------------------------------------------------------------------------------- /export/content/collections/team/ian-dooley.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 44263a4c-b477-406a-8f26-5429532e4bdd 3 | blueprint: team 4 | title: 'Ian Dooley' 5 | first_name: Ian 6 | last_name: Dooley 7 | position: Copywriter 8 | bio: 'Turpis lectus et amet elementum. Mi duis integer sed in vitae consequat. Nam vitae, in felis mi dui tempus. Porta at turpis eu odio. Et, sed duis in blandit bibendum accumsan. Purus viverra facilisi suspendisse quis est.' 9 | image: avatars/ian-dooley-d1upkifd04a-unsplash.jpg 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736271612 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/fieldsets/seo_basic.yaml: -------------------------------------------------------------------------------- 1 | title: 'SEO basic' 2 | fields: 3 | - 4 | handle: seo_title 5 | field: 6 | type: text 7 | localizable: true 8 | display: 'Page title' 9 | character_limit: 70 10 | instructions: 'This entries title, defaults to title. Max 70 chars including the site name.' 11 | - 12 | handle: seo_description 13 | field: common.text_plain 14 | config: 15 | listable: hidden 16 | display: 'Meta description' 17 | character_limit: 160 18 | instructions: 'This entries meta description. Max 160 chars.' 19 | -------------------------------------------------------------------------------- /export/content/collections/team/anna-balobanov.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 4f77e94c-1234-418e-bec7-b715e140799b 3 | blueprint: team 4 | title: 'Anna Balobanov' 5 | first_name: Anna 6 | last_name: Balobanov 7 | position: 'Product designer' 8 | bio: 'Praesentium iure error aliquam voluptas ut libero. Commodi placeat sit iure nulla officiis. Ut ex sit repellat tempora. Qui est accusamus exercitationem natus ut voluptas. Officiis velit eos ducimus.' 9 | image: avatars/kirill-balobanov-ef3aokt6hhg-unsplash.jpg 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736271536 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/fieldsets/contact.yaml: -------------------------------------------------------------------------------- 1 | title: Contact 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | config: 12 | display: Text 13 | - 14 | handle: form 15 | field: 16 | max_items: 1 17 | type: form 18 | display: Form 19 | - 20 | handle: submit_label 21 | field: 22 | type: text 23 | display: 'Submit label' 24 | - 25 | handle: success_message 26 | field: common.text_plain 27 | config: 28 | display: 'Success message' 29 | -------------------------------------------------------------------------------- /export/content/collections/team/alexander-hipp.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: bcab7536-8e22-44c7-b727-30252f40786c 3 | blueprint: team 4 | title: 'Alexander hipp' 5 | first_name: Alexander 6 | last_name: hipp 7 | position: 'Managing director' 8 | bio: 'Turpis lectus et amet elementum. Mi duis integer sed in vitae consequat. Nam vitae, in felis mi dui tempus. Porta at turpis eu odio. Et, sed duis in blandit bibendum accumsan. Purus viverra facilisi suspendisse quis est.' 9 | image: avatars/alexander-hipp-ieebwgy_6la-unsplash.jpg 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736271831 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/tabs/trigger.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'name', 3 | 'alpine_property' => 'activeTab', // Alpine property of the parent component that controls the active tab. 4 | ]) 5 | 6 | 18 | -------------------------------------------------------------------------------- /export/resources/css/components/headings.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .h1, 3 | .h2, 4 | .h3, 5 | .h4, 6 | .h5 { 7 | @apply font-semibold tracking-tight text-neutral-950; 8 | } 9 | 10 | .h1 { 11 | @apply text-5xl sm:text-6xl lg:text-7xl; 12 | } 13 | 14 | .h2 { 15 | @apply text-4xl sm:text-5xl; 16 | } 17 | 18 | .h3 { 19 | @apply text-3xl sm:text-4xl; 20 | } 21 | 22 | .h4 { 23 | @apply text-2xl sm:text-3xl; 24 | } 25 | 26 | .h5 { 27 | @apply text-xl sm:text-2xl; 28 | } 29 | 30 | .h6 { 31 | @apply text-lg font-semibold text-neutral-950 sm:text-xl; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /export/resources/views/partials/prose-class.blade.php: -------------------------------------------------------------------------------- 1 | {{-- format-ignore-start --}} 2 | prose 3 | prose-p:content 4 | prose-p:my-0 5 | prose-headings:mt-em 6 | prose-headings:mb-0 7 | prose-h2:h2 8 | prose-h3:h3 9 | prose-h4:h4 10 | prose-ul:my-0 11 | prose-ol:my-0 12 | prose-ul:space-y-em 13 | prose-ol:space-y-em 14 | prose-li:my-0 15 | prose-blockquote:my-0 16 | prose-blockquote:border-primary-700 17 | prose-blockquote:pl-7 18 | prose-blockquote:not-italic 19 | prose-li:marker:text-primary 20 | prose-pre:whitespace-pre-wrap 21 | prose-pre:my-0 22 | prose-strong:text-neutral-900 23 | prose-code:text-rose 24 | max-w-none 25 | 26 | -------------------------------------------------------------------------------- /export/resources/css/components/badge.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .badge { 3 | @apply inline-flex shrink-0 items-center justify-center gap-1 rounded-full border border-transparent px-2 py-0.5 text-xs font-medium [&>svg]:pointer-events-none [&>svg]:size-3; 4 | } 5 | 6 | .badge--primary { 7 | @apply bg-primary text-primary-foreground [a&]:hover:bg-primary/90; 8 | } 9 | 10 | .badge--secondary { 11 | @apply bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90; 12 | } 13 | 14 | .badge--outline { 15 | @apply text-foreground bg-background border-border [a&]:hover:bg-accent; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /export/content/collections/team/joseph-gonzalez.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 62f96708-51c4-4739-b821-aa5bb9c3ca62 3 | blueprint: team 4 | title: 'Joseph Gonzalez' 5 | first_name: Joseph 6 | last_name: Gonzalez 7 | position: 'Sales director' 8 | bio: 'Quis bibendum velit diam tellus sed ut. Faucibus posuere enim, vitae enim eget neque tortor. Metus lectus mattis id id. Tellus ornare etiam id velit ut enim lacinia congue ultrices. Sit morbi vel elit a maecenas mauris elit lectus magna.' 9 | image: avatars/joseph-gonzalez-ifgrcqhznqg-unsplash.jpg 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736271779 13 | --- 14 | -------------------------------------------------------------------------------- /export/resources/js/lib/utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Slugify a string. 3 | * 4 | * @param {string} input - The input string. 5 | * @returns {string} - The slugified string. 6 | */ 7 | export function slugify(input) { 8 | if (!input) return '' 9 | 10 | const asString = String(input) 11 | const normalized = asString.normalize('NFKD').replace(/[\u0300-\u036f]/g, '') 12 | const slug = normalized 13 | .toLowerCase() 14 | .replace(/&/g, ' and ') 15 | .replace(/\//g, '-') 16 | .replace(/[\s_]+/g, '-') 17 | .replace(/[^a-z0-9-]/g, '') 18 | .replace(/-+/g, '-') 19 | .replace(/^-+|-+$/g, '') 20 | 21 | return slug 22 | } 23 | -------------------------------------------------------------------------------- /export/resources/views/components/cp-toolbar.blade.php: -------------------------------------------------------------------------------- 1 | {{-- 2 | Control panel Toolbar. 3 | Only show if the toolbar is enabled for the current environment (inside: cp/preferences/edit#toolbar) and the user has edit entries permission. 4 | Use nocache to ensure the toolbar works with static caching enabled. 5 | --}} 6 | 7 | 8 | 9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /export/resources/blueprints/taxonomies/categories/category.yaml: -------------------------------------------------------------------------------- 1 | tabs: 2 | main: 3 | display: Main 4 | sections: 5 | - 6 | fields: 7 | - 8 | handle: title 9 | field: 10 | type: text 11 | required: true 12 | validate: 13 | - required 14 | sidebar: 15 | display: Sidebar 16 | sections: 17 | - 18 | fields: 19 | - 20 | handle: slug 21 | field: 22 | type: slug 23 | required: true 24 | validate: 25 | - required 26 | - 'max:200' 27 | title: Category 28 | -------------------------------------------------------------------------------- /export/resources/css/components/tooltip.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .tooltip { 3 | @apply relative z-40; 4 | 5 | &::before { 6 | @apply bg-gray invisible absolute -top-1 left-1/2 w-32 -translate-x-1/2 -translate-y-full rounded-lg p-2.5 text-sm opacity-0 ring-1 ring-gray-300/10 transition content-[attr(data-tooltip)] sm:w-64; 7 | } 8 | 9 | &::after { 10 | @apply bg-gray invisible absolute -top-[9px] left-1/2 h-2.5 w-2.5 -translate-x-1/2 rotate-45 rounded-br-sm border-r border-b border-gray-300/10 opacity-0 transition content-['']; 11 | } 12 | } 13 | 14 | .tooltip:hover::before, 15 | .tooltip:hover::after { 16 | @apply visible opacity-100; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /export/resources/views/partials/nav-social.blade.php: -------------------------------------------------------------------------------- 1 | @if (count($social_media->platforms)) 2 |
    3 | @foreach ($social_media->platforms as $platform) 4 | 11 | 12 | 13 | @endforeach 14 |
    15 | @endif 16 | -------------------------------------------------------------------------------- /export/prettier.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | trailingComma: 'es5', 3 | trailingCommaPHP: true, 4 | printWidth: 100, 5 | tabWidth: 2, 6 | overrides: [ 7 | { 8 | files: ['*.php', '*.vue'], 9 | options: { 10 | tabWidth: 4, 11 | }, 12 | }, 13 | { 14 | files: ['*.blade.php'], 15 | options: { 16 | tabWidth: 4, 17 | parser: 'blade', 18 | }, 19 | }, 20 | ], 21 | semi: false, 22 | singleQuote: true, 23 | jsxSingleQuote: false, 24 | bracketSpacing: true, 25 | jsxBracketSameLine: false, 26 | arrowParens: 'avoid', 27 | plugins: ['@prettier/plugin-php', 'prettier-plugin-tailwindcss', 'prettier-plugin-blade'], 28 | } 29 | -------------------------------------------------------------------------------- /export/resources/blueprints/globals/scripts.yaml: -------------------------------------------------------------------------------- 1 | tabs: 2 | head: 3 | display: Head 4 | sections: 5 | - 6 | fields: 7 | - 8 | handle: code_head 9 | field: 10 | display: 'Head scripts' 11 | instructions: 'Scripts placed right before the closing of head tag' 12 | type: code 13 | footer: 14 | display: Footer 15 | sections: 16 | - 17 | fields: 18 | - 19 | handle: code_footer 20 | field: 21 | display: 'Footer scripts' 22 | instructions: 'Scripts placed after the site JS, right before the closing of body tag' 23 | type: code 24 | -------------------------------------------------------------------------------- /export/resources/views/partials/nav-bottom-footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | -------------------------------------------------------------------------------- /export/resources/css/typography.css: -------------------------------------------------------------------------------- 1 | @plugin '@tailwindcss/typography'; 2 | 3 | @utility prose { 4 | --tw-prose-body: var(--color-neutral-800); 5 | --tw-prose-headings: var(--color-neutral-950); 6 | --tw-prose-counters: var(--color-primary); 7 | --tw-prose-bullets: var(--color-neutral-950); 8 | --tw-prose-quotes: var(--color-neutral-950); 9 | --tw-prose-quote-borders: var(--color-primary); 10 | --tw-prose-bold: var(--color-neutral-950); 11 | --tw-prose-links: var(--color-primary); 12 | } 13 | 14 | @layer components { 15 | .prose { 16 | ul > li p, 17 | ol > li p { 18 | @apply !my-0; 19 | } 20 | 21 | a { 22 | @apply font-medium no-underline underline-offset-4 hover:underline; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /export/app/Http/Controllers/NewsletterController.php: -------------------------------------------------------------------------------- 1 | json( 21 | [ 22 | 'success' => true, 23 | ], 24 | Response::HTTP_OK 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /export/app/Http/Requests/NewsletterRequest.php: -------------------------------------------------------------------------------- 1 | |string> 21 | */ 22 | public function rules(): array 23 | { 24 | return [ 25 | 'email' => ['required', 'email:rfc,dns'], 26 | ]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /export/resources/views/components/entry-posts.blade.php: -------------------------------------------------------------------------------- 1 | @props(['image', 'url', 'title', 'excerpt', 'date', 'categories']) 2 | 3 |
    4 |
    7 | 8 |
    9 | 10 | 11 | 12 | 13 |

    {!! $title !!}

    14 |

    15 | {!! $excerpt !!} 16 |

    17 |
    18 |
    19 | -------------------------------------------------------------------------------- /export/resources/views/errors/404.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layout') 2 | 3 | @section('body') 4 |
    5 |
    6 |
    7 |
    8 |

    404 Error

    9 |

    The page you're looking for does not exist.

    10 | 15 |
    16 |
    17 |
    18 |
    19 | @endsection 20 | -------------------------------------------------------------------------------- /export/resources/views/partials/related-posts.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    {!! $strings->related_posts !!}

    4 | 5 |
    6 | 7 | 16 | 17 |
    18 |
    19 |
    20 | -------------------------------------------------------------------------------- /export/resources/css/components/alert.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .alert { 3 | @apply bg-card text-card-foreground relative flex items-start gap-x-3 rounded-lg border px-4 py-3 text-sm; 4 | } 5 | 6 | .alert__content { 7 | @apply min-h-4 space-y-0.5; 8 | } 9 | 10 | .alert__icon { 11 | @apply size-4 shrink-0 translate-y-0.5; 12 | } 13 | 14 | /* .alert--success { 15 | .alert__content {} 16 | 17 | .alert__icon { 18 | @apply text-green-400; 19 | } 20 | } */ 21 | 22 | /* .alert--warning { 23 | .alert__content {} 24 | 25 | .alert__icon { 26 | @apply text-yellow-400; 27 | } 28 | } */ 29 | 30 | .alert--error { 31 | .alert__content { 32 | @apply text-destructive; 33 | } 34 | 35 | .alert__icon { 36 | @apply text-destructive; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/files.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'max_files' => 1, 4 | 'handle', 5 | 'id', 6 | 'instructions', 7 | ]) 8 | 9 | merge([ 13 | 'multiple' => $max_files !== 1, 14 | ]) 15 | }} 16 | id="{{ $id }}" 17 | name="{{ $handle }}{{ $max_files !== 1 ? '[]' : '' }}" 18 | type="file" 19 | x-bind:aria-invalid="form.invalid('{{ $handle }}')" 20 | @isset($instructions) 21 | x-bind:aria-describedby="form.invalid('{{ $handle }}') ? '{{ $id }}-error' : '{{ $id }}-instructions'" 22 | @else 23 | x-bind:aria-describedby="form.invalid('{{ $handle }}') ? '{{ $id }}-error' : false" 24 | @endisset 25 | x-on:change="form.validate('{{ $handle }}')" 26 | /> 27 | -------------------------------------------------------------------------------- /export/resources/views/components/faqs-item.blade.php: -------------------------------------------------------------------------------- 1 | @props(['title', 'text']) 2 | 3 | merge(['class' => 'group']) }}> 4 | 7 | {!! $title !!} 8 | 12 | 13 | 14 | 15 |
    16 | {!! $text !!} 17 |
    18 | 19 |
    20 | -------------------------------------------------------------------------------- /export/resources/fieldsets/table.yaml: -------------------------------------------------------------------------------- 1 | title: Table 2 | fields: 3 | - 4 | handle: first_row_headers 5 | field: 6 | display: 'First row as header' 7 | type: toggle 8 | width: 50 9 | instructions: 'Show the first row as header and give it a header styling.' 10 | instructions_position: below 11 | - 12 | handle: first_column_headers 13 | field: 14 | display: 'First column as header' 15 | type: toggle 16 | width: 50 17 | instructions: 'Show the first column as header and give it a header styling.' 18 | instructions_position: below 19 | - 20 | handle: table 21 | field: 22 | display: Table 23 | type: table 24 | localizable: true 25 | - 26 | handle: caption 27 | field: 28 | type: text 29 | localizable: true 30 | display: Caption 31 | -------------------------------------------------------------------------------- /export/resources/svg/social/github.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/content/globals/social_media.yaml: -------------------------------------------------------------------------------- 1 | title: 'Social media' 2 | data: 3 | platforms: 4 | - 5 | id: m32jlzlr 6 | url: JasonBaciulis 7 | prefix: 'https://x.com/' 8 | type: x 9 | enabled: true 10 | - 11 | id: 1pQqfxOP 12 | handle: in/jasonbaciulis/ 13 | prefix: 'https://www.linkedin.com/' 14 | type: linkedin 15 | enabled: true 16 | url: in/jasonbaciulis 17 | - 18 | id: m32k08y1 19 | url: JasonBaciulis 20 | prefix: 'https://www.github.com/' 21 | type: github 22 | enabled: true 23 | - 24 | id: m32k0hix 25 | url: statamic 26 | prefix: 'https://www.youtube.com/' 27 | type: youtube 28 | enabled: true 29 | - 30 | id: m32kbi2g 31 | url: jason@remarkable.dev 32 | prefix: 'mailto:' 33 | type: email 34 | enabled: true 35 | -------------------------------------------------------------------------------- /export/resources/views/components/buttons.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'buttons' => [], 3 | 'size' => null, 4 | ]) 5 | 6 | @isset($buttons) 7 |
    class(['flex flex-wrap gap-4' => count($buttons) > 1]) }}> 8 | @foreach ($buttons as $button) 9 | 21 | {!! $button->label !!} 22 | 23 | @endforeach 24 |
    25 | @endisset 26 | -------------------------------------------------------------------------------- /export/resources/views/partials/nav-footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    {!! $title !!}

    4 | @if (count($children)) 5 | 18 | @endif 19 |
    20 |
    21 | -------------------------------------------------------------------------------- /export/resources/fieldsets/blog_excerpt.yaml: -------------------------------------------------------------------------------- 1 | title: 'Blog Excerpt' 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | - 12 | handle: query 13 | field: 14 | options: 15 | latest: Latest 16 | featured: Featured 17 | custom: Custom 18 | max_items: 1 19 | default: latest 20 | display: Query 21 | type: select 22 | width: 50 23 | validate: 24 | - required 25 | - 26 | handle: limit 27 | field: 28 | default: '3' 29 | display: Limit 30 | type: integer 31 | width: 50 32 | if: 33 | query: 'not custom' 34 | - 35 | handle: entries 36 | field: 37 | collections: 38 | - posts 39 | display: Entries 40 | type: entries 41 | if: 42 | query: 'equals custom' 43 | -------------------------------------------------------------------------------- /export/resources/fieldsets/testimonials.yaml: -------------------------------------------------------------------------------- 1 | title: Testimonials 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | - 12 | handle: query 13 | field: 14 | options: 15 | latest: Latest 16 | featured: Featured 17 | custom: Custom 18 | max_items: 1 19 | default: latest 20 | display: Query 21 | type: select 22 | width: 50 23 | validate: 24 | - required 25 | - 26 | handle: limit 27 | field: 28 | default: 6 29 | display: Limit 30 | type: integer 31 | width: 50 32 | if: 33 | query: 'not custom' 34 | - 35 | handle: entries 36 | field: 37 | collections: 38 | - testimonials 39 | display: Entries 40 | type: entries 41 | if: 42 | query: 'equals custom' 43 | -------------------------------------------------------------------------------- /export/resources/views/sets/video.blade.php: -------------------------------------------------------------------------------- 1 | @once 2 | @push('scripts') 3 | @vite('resources/css/lite-yt-embed.css') 4 | @vite('resources/js/lite-yt-embed.js') 5 | @endpush 6 | @endonce 7 | 8 | @php($youtube_id = Statamic::tag('youtube_id')->youtubeUrl($youtube_url)->fetch()) 9 | 10 |
    11 | 16 | 17 | Play Video 18 | 19 | 20 | 21 | @isset($caption) 22 |
    23 | {!! $caption !!} 24 |
    25 | @endisset 26 |
    27 | -------------------------------------------------------------------------------- /StarterKitPostInstall.php: -------------------------------------------------------------------------------- 1 | starRepo(); 12 | } 13 | 14 | protected function starRepo(): void 15 | { 16 | if (!confirm('Would you like to star the Bedrock repo?')) { 17 | return; 18 | } 19 | 20 | if (PHP_OS_FAMILY === 'Darwin') { 21 | exec('open https://github.com/jasonbaciulis/bedrock'); 22 | } 23 | 24 | if (PHP_OS_FAMILY === 'Windows') { 25 | exec('start https://github.com/jasonbaciulis/bedrock'); 26 | } 27 | 28 | if (PHP_OS_FAMILY === 'Linux') { 29 | exec('xdg-open https://github.com/jasonbaciulis/bedrock'); 30 | } 31 | 32 | info('Thank you!'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/textarea.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'rows' => 5, 4 | 'placeholder' => null, 5 | 'character_limit' => null, 6 | 'handle', 7 | 'id', 8 | 'instructions', 9 | 'display', 10 | ]) 11 | 12 | 31 | -------------------------------------------------------------------------------- /export/resources/views/components/form-field.blade.php: -------------------------------------------------------------------------------- 1 | 25 | -------------------------------------------------------------------------------- /starter-kit.yaml: -------------------------------------------------------------------------------- 1 | export_paths: 2 | - app/Console/Commands 3 | - app/Fieldtypes 4 | - app/Http/Controllers/NewsletterController.php 5 | - app/Http/Requests/NewsletterRequest.php 6 | - app/Providers/AppServiceProvider.php 7 | - app/Tags 8 | - app/View/Components 9 | - app/Support/Yaml 10 | - config/statamic/editions.php 11 | - config/statamic/git.php 12 | - config/statamic/search.php 13 | - content 14 | - public/assets 15 | - public/favicon 16 | - resources/blueprints 17 | - resources/css 18 | - resources/fieldsets 19 | - resources/fonts 20 | - resources/forms 21 | - resources/js 22 | - resources/svg 23 | - resources/views 24 | - routes/web.php 25 | - .env.example 26 | - .gitignore 27 | - .cursorrules 28 | - package.json 29 | - prettier.config.js 30 | - AGENTS.md 31 | - vite.config.js 32 | dependencies: 33 | blade-ui-kit/blade-icons: ^1.8 34 | mallardduck/blade-lucide-icons: ^1.23 35 | dependencies_dev: 36 | laravel/boost: ^1.0 37 | -------------------------------------------------------------------------------- /export/app/View/Components/CpToolbar.php: -------------------------------------------------------------------------------- 1 | collection_defaults)->where('collection', $collection->value()->handle())->first()) 2 | @php($fallback = $item['fallback']->value()) 3 | @if ($fallback === 'field') 4 | @php($field = $page->{$item['field_handle']}) 5 | @if (is_array($field)) 6 | {!! Statamic::modify($field)->bardText()->stripTags()->trim()->safeTruncate([160, '…']) !!} 7 | @else 8 | {!! Statamic::modify($field)->stripTags()->trim()->safeTruncate([160, '…']) !!} 9 | @endif 10 | @elseif ($fallback === 'custom_text') 11 | {!! $item['custom_text'] !!} 12 | @elseif ($fallback === 'blocks') 13 | @if ($first_block = Arr::first($page->blocks)?->all()) 14 | @isset($first_block['text']) 15 | {!! Statamic::modify($first_block['text'])->stripTags()->trim()->safeTruncate([160, '…']) !!} 16 | @endisset 17 | @endif 18 | @endif 19 | @endif 20 | -------------------------------------------------------------------------------- /export/app/View/Components/Ui/Banner.php: -------------------------------------------------------------------------------- 1 | banner->show; 20 | } 21 | 22 | public function data(): array 23 | { 24 | return [ 25 | 'cookie_expires' => $this->banner->cookie_expires, 26 | 'link_url' => $this->banner->link_url, 27 | 'text' => $this->banner->text, 28 | ]; 29 | } 30 | 31 | /** 32 | * Get the view / contents that represent the component. 33 | */ 34 | public function render(): View|Closure|string 35 | { 36 | return view('components.ui.banner'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /export/resources/fieldsets/seo_sitemap.yaml: -------------------------------------------------------------------------------- 1 | title: 'SEO sitemap' 2 | fields: 3 | - 4 | handle: sitemap_change_frequency 5 | field: 6 | options: 7 | always: Always 8 | hourly: Hourly 9 | daily: Daily 10 | weekly: Weekly 11 | monthly: Monthly 12 | yearly: Yearly 13 | never: Never 14 | type: select 15 | instructions: 'How often to instruct search engines to crawl.' 16 | instructions_position: below 17 | width: 50 18 | default: weekly 19 | listable: false 20 | display: 'Change frequency' 21 | - 22 | handle: sitemap_priority 23 | field: 24 | type: text 25 | display: Priority 26 | default: 0.5 27 | instructions: 'Valid values range from 0.0 to 1.0. This value does not affect how your pages are compared to pages on other sites, it only lets the search engines know which pages you deem most important for the crawlers.' 28 | instructions_position: below 29 | width: 50 30 | listable: false 31 | -------------------------------------------------------------------------------- /export/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build" 7 | }, 8 | "devDependencies": { 9 | "@alpinejs/collapse": "^3.13.0", 10 | "@alpinejs/focus": "^3.13.0", 11 | "@alpinejs/intersect": "^3.14.9", 12 | "@alpinejs/mask": "^3.14.9", 13 | "@alpinejs/persist": "^3.13.0", 14 | "@prettier/plugin-php": "^0.22.4", 15 | "@tailwindcss/forms": "^0.5.10", 16 | "@tailwindcss/typography": "^0.5.16", 17 | "@tailwindcss/vite": "^4.1.11", 18 | "alpinejs": "^3.14.0", 19 | "concurrently": "^9.2.0", 20 | "embla-carousel": "^8.6.0", 21 | "js-cookie": "^3.0.5", 22 | "laravel-precognition-alpine": "^0.7.2", 23 | "laravel-vite-plugin": "^1.2.0", 24 | "lite-youtube-embed": "^0.3.3", 25 | "prettier": "^3.5.3", 26 | "prettier-plugin-blade": "^2.1.21", 27 | "prettier-plugin-tailwindcss": "^0.6.14", 28 | "tailwindcss": "^4.1.11", 29 | "vite": "^6.3.5", 30 | "vue-template-compiler": "^2.7.16" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /export/resources/fieldsets/team.yaml: -------------------------------------------------------------------------------- 1 | title: Team 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | config: 12 | display: Text 13 | - 14 | handle: query 15 | field: 16 | options: 17 | - 18 | key: ordered 19 | value: Ordered 20 | - 21 | key: featured 22 | value: Featured 23 | - 24 | key: custom 25 | value: Custom 26 | max_items: 1 27 | default: latest 28 | display: Query 29 | type: select 30 | width: 50 31 | validate: 32 | - required 33 | - 34 | handle: limit 35 | field: 36 | default: 6 37 | display: Limit 38 | type: integer 39 | width: 50 40 | if: 41 | query: 'not custom' 42 | - 43 | handle: entries 44 | field: 45 | collections: 46 | - team 47 | display: Entries 48 | type: entries 49 | if: 50 | query: 'equals custom' 51 | -------------------------------------------------------------------------------- /export/resources/views/partials/nav-header-item.blade.php: -------------------------------------------------------------------------------- 1 | 6 | @unless (empty($icon->value())) 7 | 11 | @endunless 12 | 13 |
    14 | 15 | {!! $title !!} 16 | 17 | @unless (empty($badge->value())) 18 | 19 | {!! $badge !!} 20 | 21 | @endunless 22 | 23 | @isset($description) 24 | 27 | @endisset 28 |
    29 |
    30 | -------------------------------------------------------------------------------- /export/app/View/Components/FormField.php: -------------------------------------------------------------------------------- 1 | field['width'] ?? 100); 24 | return match ($width) { 25 | 25 => 'md:col-span-3', 26 | 33 => 'md:col-span-4', 27 | 50 => 'md:col-span-6', 28 | 66 => 'md:col-span-8', 29 | 75 => 'md:col-span-9', 30 | default => 'md:col-span-12', 31 | }; 32 | } 33 | 34 | /** 35 | * Get the view / contents that represent the component. 36 | */ 37 | public function render(): View|Closure|string 38 | { 39 | return view('components.form-field', [...$this->field]); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /export/resources/js/components/stepper.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('alpine:init', () => { 2 | Alpine.data('stepper', (min = 0, max = 9999, step = 1) => ({ 3 | count: 0, 4 | min: min, 5 | max: max, 6 | step: step, 7 | 8 | isAtMax() { 9 | return this.count >= this.max 10 | }, 11 | 12 | isAtMin() { 13 | return this.count <= this.min 14 | }, 15 | 16 | increment() { 17 | let newValue = parseInt(this.count) + this.step 18 | 19 | if (newValue > this.max) { 20 | newValue = this.max 21 | } 22 | 23 | this.count = newValue 24 | }, 25 | 26 | decrement() { 27 | let newValue = parseInt(this.count) - this.step 28 | 29 | if (newValue < this.min) { 30 | newValue = this.min 31 | } 32 | 33 | this.count = newValue 34 | }, 35 | 36 | handleInput(event) { 37 | const count = parseInt(event.target.value) || 0 38 | if (count >= this.max) { 39 | event.target.value = this.max 40 | } else if (count <= this.min) { 41 | event.target.value = this.min 42 | } else { 43 | this.count = count 44 | } 45 | }, 46 | })) 47 | }) 48 | -------------------------------------------------------------------------------- /export/content/globals/theme.yaml: -------------------------------------------------------------------------------- 1 | title: Theme 2 | data: 3 | logo: logos/logo-brand.svg 4 | search_results: d50dbcf7-2ed9-4a10-91c5-5b5557d694ea 5 | header_buttons: 6 | - 7 | id: 1wCZptZ7 8 | link_type: url 9 | target_blank: false 10 | url: '#' 11 | variant: ghost 12 | label: 'Sign in' 13 | - 14 | id: k0sBnlT1 15 | link_type: url 16 | target_blank: false 17 | url: '#faqs' 18 | variant: primary 19 | label: 'Get started' 20 | about: 'Features shadcn/ui style Alpine.js components that you can customize, extend, and build on. Plus page builder and complete SEO setup.' 21 | copyright_text: 22 | - 23 | type: paragraph 24 | content: 25 | - 26 | type: text 27 | text: ':copyright_year Bedrock. Built by ' 28 | - 29 | type: text 30 | marks: 31 | - 32 | type: link 33 | attrs: 34 | href: 'https://remarkable.dev' 35 | rel: noopener 36 | target: _blank 37 | title: null 38 | text: 'Jason Baciulis' 39 | - 40 | type: text 41 | text: . 42 | -------------------------------------------------------------------------------- /export/resources/blueprints/globals/newsletter.yaml: -------------------------------------------------------------------------------- 1 | tabs: 2 | main: 3 | display: Main 4 | sections: 5 | - 6 | display: Newsletter 7 | instructions: 'Configure email opt-in form that can be used inside the Newsletter block' 8 | fields: 9 | - 10 | handle: title 11 | field: 12 | type: text 13 | display: Title 14 | localizable: true 15 | - 16 | handle: text 17 | field: common.text_plain 18 | config: 19 | display: Text 20 | - 21 | handle: input_placeholder 22 | field: 23 | type: text 24 | display: 'Input placeholder' 25 | width: 50 26 | localizable: true 27 | - 28 | handle: button_label 29 | field: 30 | type: text 31 | display: 'Button label' 32 | width: 50 33 | localizable: true 34 | - 35 | handle: success_message 36 | field: 37 | type: text 38 | display: 'Success message' 39 | localizable: true 40 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/collapsible.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'trigger', 3 | 'content', 4 | 'name' => Str::random(8), 5 | ]) 6 | 7 |
    class(['relative']) }} 18 | > 19 |
    20 | 32 |
    33 |
    attributes->class(['relative']) }} 41 | > 42 | {{ $content }} 43 |
    44 |
    45 | -------------------------------------------------------------------------------- /export/resources/views/posts/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layout') 2 | 3 | @section('body') 4 |
    5 |
    6 |
    7 | 8 |
    9 | 16 |
    17 |

    {{ $page->title }}

    18 | 19 | @include('partials.social-sharing', ['class' => 'mt-6']) 20 |
    21 |
    22 | 23 | @include('blocks.article', ['block' => $page]) 24 | 25 | @if ($page->show_related_posts) 26 | @include('partials.related-posts') 27 | @endif 28 |
    29 | @endsection 30 | -------------------------------------------------------------------------------- /export/resources/svg/heroicons-outline/cog-6-tooth.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /export/resources/fieldsets/faqs.yaml: -------------------------------------------------------------------------------- 1 | title: FAQs 2 | fields: 3 | - 4 | handle: title 5 | field: 6 | display: Title 7 | type: text 8 | - 9 | handle: text 10 | field: common.text_plain 11 | config: 12 | display: Text 13 | - 14 | handle: items 15 | field: 16 | collapse: true 17 | display: Items 18 | type: replicator 19 | if: 20 | block_type: 'equals collapsed' 21 | button_label: 'Add Item' 22 | sets: 23 | main: 24 | display: Main 25 | sets: 26 | item: 27 | display: Item 28 | hide: true 29 | fields: 30 | - 31 | handle: title 32 | field: 33 | display: Title 34 | type: text 35 | - 36 | handle: text 37 | field: common.text_basic 38 | config: 39 | buttons: 40 | - bold 41 | - italic 42 | - unorderedlist 43 | - orderedlist 44 | - removeformat 45 | - anchor 46 | display: Text 47 | -------------------------------------------------------------------------------- /export/app/View/Components/Faqs.php: -------------------------------------------------------------------------------- 1 | items ?? []) 19 | ->map(function ($item) { 20 | return [ 21 | '@type' => 'Question', 22 | 'name' => $item->title, 23 | 'acceptedAnswer' => [ 24 | '@type' => 'Answer', 25 | 'text' => $item->text, 26 | ], 27 | ]; 28 | }) 29 | ->all(); 30 | 31 | return [ 32 | '@context' => 'https://schema.org', 33 | '@type' => 'FAQPage', 34 | 'mainEntity' => $faqEntities, 35 | ]; 36 | } 37 | 38 | /** 39 | * Get the view / contents that represent the component. 40 | */ 41 | public function render(): View|Closure|string 42 | { 43 | return view('components.faqs'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-05-22.data-driven-decisions-using-insights-to-guide-your-next-move.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 30b072fb-c998-4b68-a148-92118e960d8f 3 | blueprint: posts 4 | title: 'Data-Driven Decisions: Using Insights to Guide Your Next Move' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445551 13 | excerpt: 'Guesswork is risky business. Successful entrepreneurs rely on data—sales figures, customer interviews, competitor analysis—to inform their strategies.' 14 | show_related_posts: false 15 | article: 16 | - 17 | type: paragraph 18 | content: 19 | - 20 | type: text 21 | text: 'Guesswork is risky business. Successful entrepreneurs rely on data—sales figures, customer interviews, competitor analysis—to inform their strategies. Market research helps identify trends, test assumptions, and refine messaging. Collect qualitative and quantitative data from a range of sources, then distill it into actionable insights. Over time, this rigorous approach leads to informed decisions, minimized risks, and more confident leadership.' 22 | categories: research 23 | image: images/carlos-muza-hpjsku2uysu-unsplash.jpg 24 | --- 25 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-08-14.finding-your-niche-standing-out-in-a-saturated-market.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 63ee432c-f3f7-42dd-9b3f-d318729b2125 3 | blueprint: posts 4 | title: 'Finding Your Niche: Standing Out in a Saturated Market' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445669 13 | image: images/jacopo-maiarelli--goux23dnks-unsplash.jpg 14 | excerpt: 'When everyone seems to offer similar products, meaningful differentiation is key. Analyze competitor messaging and identify gaps in the market.' 15 | show_related_posts: false 16 | article: 17 | - 18 | type: paragraph 19 | content: 20 | - 21 | type: text 22 | text: 'When everyone seems to offer similar products, meaningful differentiation is key. Analyze competitor messaging and identify gaps in the market. Focus on specialized expertise, unique product features, or an underserved customer segment. Position your brand as the top choice for a particular problem by consistently highlighting what sets you apart. Over time, a clear positioning strategy cements brand recognition and attracts an audience that values what you do best.' 23 | categories: branding 24 | --- 25 | -------------------------------------------------------------------------------- /export/resources/views/blocks/blog-excerpt.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 | @if ($block->query->value() === 'custom') 6 | @php($entries = $block->entries) 7 | @elseif ($block->query->value() === 'latest') 8 | @php($entries = Statamic::tag('collection:posts')->limit($block->limit)->sort('date:desc')->fetch()) 9 | @elseif ($block->query->value() === 'featured') 10 | @php($entries = Statamic::tag('collection:posts')->limit($block->limit)->featured()->sort('order')->fetch()) 11 | @endif 12 | 13 |
    14 | @foreach ($entries as $entry) 15 | 24 | @endforeach 25 |
    26 |
    27 |
    28 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-03-06.the-power-of-authenticity-how-honesty-builds-brand-loyalty.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 962469cf-df9b-4744-a46a-b0acee4d453f 3 | blueprint: posts 4 | title: 'The Power of Authenticity: How Honesty Builds Brand Loyalty' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445318 13 | excerpt: 'In a crowded marketplace, authenticity stands out. Consumers are increasingly drawn to brands that communicate openly, transparently, and honestly.' 14 | show_related_posts: false 15 | article: 16 | - 17 | type: paragraph 18 | content: 19 | - 20 | type: text 21 | text: 'In a crowded marketplace, authenticity stands out. Consumers are increasingly drawn to brands that communicate openly, transparently, and honestly. To forge genuine connections, share your company’s values, admit mistakes promptly, and celebrate the people behind the product. Authentic brands humanize their messaging and listen closely to customer feedback. The result: strengthened trust, loyal customers, and a reputation that sets you apart from the competition.' 22 | categories: branding 23 | image: images/dmitry-novikov-49gi04retc4-unsplash.jpg 24 | --- 25 | -------------------------------------------------------------------------------- /export/resources/views/blocks/blog-paginated.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 | 12 | @isset($posts) 13 |
    14 | @foreach ($posts as $post) 15 | 24 | @endforeach 25 |
    26 | @endisset 27 | 28 | @isset($paginate) 29 | 30 | @endisset 31 |
    32 |
    33 |
    34 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-09-12.leading-through-uncertainty-building-resilience-in-your-team.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: fe1c34f1-e1ec-4be9-8479-9f404b83bd6c 3 | blueprint: posts 4 | title: 'Leading Through Uncertainty: Building Resilience in Your Team' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445724 13 | show_related_posts: false 14 | article: 15 | - 16 | type: paragraph 17 | content: 18 | - 19 | type: text 20 | text: 'In volatile markets and unpredictable economies, strong leadership can steady the ship. Transparent communication, flexible planning, and empathy for employees’ concerns help build trust. Encourage team members to experiment, learn from failures, and embrace change. With the right support and vision, leaders can cultivate a resilient team that remains cohesive, innovative, and productive, no matter what the business environment throws their way.' 21 | categories: leadership 22 | image: images/krakenimages-y5bvrlccx8k-unsplash.jpg 23 | excerpt: 'In volatile markets and unpredictable economies, strong leadership can steady the ship. Transparent communication, flexible planning, and empathy for employees’ concerns help build trust.' 24 | --- 25 | -------------------------------------------------------------------------------- /export/resources/blueprints/globals/banner.yaml: -------------------------------------------------------------------------------- 1 | tabs: 2 | main: 3 | display: Main 4 | sections: 5 | - 6 | display: Banner 7 | instructions: 'Announce new product releases, rebranding, or any other important stuff that warrants prime real estate on your website.' 8 | fields: 9 | - 10 | handle: show 11 | field: 12 | display: Show 13 | type: toggle 14 | instructions: 'Displays banner sitewide at the very top of the page' 15 | - 16 | handle: text 17 | field: common.text_basic 18 | config: 19 | display: Text 20 | if: 21 | show: 'equals true' 22 | - 23 | handle: link_url 24 | field: 25 | display: 'Link URL' 26 | type: link 27 | if: 28 | show: 'equals true' 29 | - 30 | handle: cookie_expires 31 | field: 32 | input_type: number 33 | default: '7' 34 | display: 'Cookie expires' 35 | type: text 36 | instructions: 'After a user clicks dismiss button how many days to not show the banner' 37 | if: 38 | show: 'equals true' 39 | width: 66 40 | append: days 41 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-04-02.storytelling-for-impact-crafting-narratives-that-resonate.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 22b8cbf2-f005-4bea-8d63-01160d1ef63a 3 | blueprint: posts 4 | title: 'Storytelling for Impact: Crafting Narratives That Resonate' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445448 13 | excerpt: 'Content marketing isn’t just about pushing information—it’s about captivating audiences with compelling stories. Great narratives solve problems, convey emotion, and inspire action.' 14 | show_related_posts: false 15 | article: 16 | - 17 | type: paragraph 18 | content: 19 | - 20 | type: text 21 | text: 'Content marketing isn’t just about pushing information—it’s about captivating audiences with compelling stories. Great narratives solve problems, convey emotion, and inspire action. Start by understanding who your audience is, what they care about, and the obstacles they face. Use character-driven stories, vivid imagery, and relatable scenarios to show how your brand can be part of their solution. Thoughtful storytelling not only informs but also motivates, turning casual readers into loyal followers.' 22 | categories: marketing 23 | image: images/melanie-deziel-84g0uqydlt0-unsplash.jpg 24 | --- 25 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-06-21.engaging-audiences-tips-for-building-genuine-social-communities.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: b8e36eb0-4626-4e78-894a-84f916802dfe 3 | blueprint: posts 4 | title: 'Engaging Audiences: Tips for Building Genuine Social Communities' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445617 13 | image: images/jed-villejo-becc0nyip2g-unsplash.jpg 14 | excerpt: 'Social media marketing isn’t just about posting content; it’s about fostering meaningful interactions. Start with platforms that align with your audience’s preferences and craft messages that invite conversation.' 15 | show_related_posts: false 16 | article: 17 | - 18 | type: paragraph 19 | content: 20 | - 21 | type: text 22 | text: 'Social media marketing isn’t just about posting content; it’s about fostering meaningful interactions. Start with platforms that align with your audience’s preferences and craft messages that invite conversation. Encourage user-generated content, respond to comments promptly, and show appreciation for feedback. Leveraging polls, Q&A sessions, and behind-the-scenes glimpses can create a sense of community, turning passive followers into active brand ambassadors.' 23 | categories: marketing 24 | --- 25 | -------------------------------------------------------------------------------- /export/content/collections/posts/2022-08-02.beyond-acquisition-strategies-to-keep-customers-coming-back.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 0c78480a-f6ae-40f9-bcdf-a415ecf2964a 3 | blueprint: posts 4 | title: 'Beyond Acquisition: Strategies to Keep Customers Coming Back' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445512 13 | excerpt: 'Acquiring new customers is expensive, so smart businesses focus on nurturing existing relationships. Personalized email campaigns, loyalty programs, and attentive support teams all contribute to a stronger bond.' 14 | show_related_posts: false 15 | article: 16 | - 17 | type: paragraph 18 | content: 19 | - 20 | type: text 21 | text: 'Acquiring new customers is expensive, so smart businesses focus on nurturing existing relationships. Personalized email campaigns, loyalty programs, and attentive support teams all contribute to a stronger bond. Regular check-ins, surveys, and social media listening provide insights into evolving needs and preferences. By valuing and rewarding existing customers, you create brand advocates who keep revenue flowing and help attract new prospects through positive word-of-mouth.' 22 | categories: marketing 23 | image: images/blake-wisz--jjg90oanwi-unsplash.jpg 24 | --- 25 | -------------------------------------------------------------------------------- /export/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig, loadEnv } from 'vite' 2 | import laravel from 'laravel-vite-plugin' 3 | import tailwindcss from '@tailwindcss/vite' 4 | // import vue2 from '@vitejs/plugin-vue2'; 5 | 6 | export default defineConfig(({ command, mode }) => { 7 | const env = loadEnv(mode, process.cwd(), '') 8 | return { 9 | plugins: [ 10 | laravel({ 11 | input: [ 12 | 'resources/css/site.css', 13 | 'resources/css/fonts.css', 14 | 'resources/js/site.js', 15 | 'resources/js/embla.js', 16 | 'resources/js/lite-yt-embed.js', 17 | 'resources/css/lite-yt-embed.css', 18 | 'resources/js/fetchEntries.js', 19 | 'resources/js/components/cookieDialog.js', 20 | 'resources/js/components/newsletter.js', 21 | 'resources/js/components/combobox.js', 22 | 'resources/js/components/stepper.js', 23 | 'resources/js/components/toaster.js', 24 | 25 | // Control Panel assets. 26 | // https://statamic.dev/extending/control-panel#adding-css-and-js-assets 27 | // 'resources/css/cp.css', 28 | 'resources/js/cp.js', 29 | ], 30 | refresh: true, 31 | detectTls: false, 32 | }), 33 | tailwindcss(), 34 | // vue2(), 35 | ], 36 | server: { 37 | open: env.APP_URL, 38 | }, 39 | define: { 40 | appName: JSON.stringify(env.APP_NAME), 41 | }, 42 | } 43 | }) 44 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-07-10.scaling-sustainably-balancing-ambition-with-operational-readiness.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 2d3bbac9-62e6-4f40-b470-d7a8ecf0c05b 3 | blueprint: posts 4 | title: 'Scaling Sustainably: Balancing Ambition with Operational Readiness' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1734445153 13 | excerpt: 'The allure of fast growth can tempt business leaders to push sales and marketing aggressively. Yet, sustainable scaling requires more than a healthy sales pipeline.' 14 | show_related_posts: false 15 | article: 16 | - 17 | type: paragraph 18 | content: 19 | - 20 | type: text 21 | text: 'The allure of fast growth can tempt business leaders to push sales and marketing aggressively. Yet, sustainable scaling requires more than a healthy sales pipeline. It demands well-structured operations, robust supply chains, and efficient customer support systems. By aligning sales forecasts with production capacity, regularly reviewing key performance metrics, and nurturing a strong organizational culture, businesses can scale without sacrificing quality. The ultimate goal is to achieve steady, manageable expansion that enhances brand reputation and profitability.' 22 | categories: business 23 | image: images/jeremy-bishop-vgjgvtsfys4-unsplash.jpg 24 | --- 25 | -------------------------------------------------------------------------------- /export/resources/views/sitemap/sitemap.antlers.xml: -------------------------------------------------------------------------------- 1 | {{ xml_header }} 2 | 3 | {{ seo:sitemap_collections }} 4 | {{ collection from="{handle}" seo_noindex:isnt="true" as="results" }} 5 | {{ results where (x => x.permalink !== null) }} 6 | {{ if permalink }} 7 | 8 | {{ permalink }} 9 | {{ updated_at format="Y-m-d" }} 10 | {{ sitemap_change_frequency ?? 'weekly' }} 11 | {{ sitemap_priority ?? '0.5' }} 12 | {{ if {locales:count} > 1 }} 13 | {{ once }} 14 | {{ section:namespace}} 15 | xmlns:xhtml="http://www.w3.org/1999/xhtml" 16 | {{ /section:namespace}} 17 | {{ /once }} 18 | {{ locales }} 19 | 20 | {{ /locales }} 21 | {{ /if }} 22 | 23 | {{ /if }} 24 | {{ /results }} 25 | {{ /collection }} 26 | {{ /seo:sitemap_collections }} 27 | 28 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/banner.blade.php: -------------------------------------------------------------------------------- 1 | {{-- 2 | Configure Banner inside Control Panel in /cp/globals/banner 3 | Relies on a tiny `js-cookie` npm package for setting and getting cookies. 4 | --}} 5 | 6 |
    30 | 35 |
    36 | 44 |
    45 |
    46 | -------------------------------------------------------------------------------- /export/resources/blueprints/globals/theme.yaml: -------------------------------------------------------------------------------- 1 | tabs: 2 | general: 3 | display: General 4 | sections: 5 | - 6 | fields: 7 | - 8 | handle: logo 9 | field: common.image 10 | config: 11 | display: Logo 12 | - 13 | display: Search 14 | fields: 15 | - 16 | handle: search_results 17 | field: common.entry 18 | config: 19 | display: 'Search results' 20 | instructions: 'Used inside the search form to point to a page that contains the "Search results" Block.' 21 | collections: 22 | - pages 23 | header: 24 | display: Header 25 | sections: 26 | - 27 | fields: 28 | - 29 | import: buttons 30 | prefix: header_ 31 | footer: 32 | display: Footer 33 | sections: 34 | - 35 | fields: 36 | - 37 | handle: about 38 | field: common.text_plain 39 | config: 40 | display: About 41 | - 42 | handle: copyright_text 43 | field: common.text_basic 44 | config: 45 | display: 'Copyright text' 46 | instructions: 'Company name, registration, address, etc. You can use `:copyright_year` placeholder string to automatically replace it with a copy symbol and a current year.' 47 | default: 'All rights reserved.' 48 | -------------------------------------------------------------------------------- /export/content/collections/posts/2024-01-10.title-beyond-the-funnel-creating-a-customer-journey-map-that-converts.md: -------------------------------------------------------------------------------- 1 | --- 2 | id: 12c9c024-8225-46f9-8fa3-894ea054f8be 3 | blueprint: posts 4 | title: 'Beyond the Funnel: Creating a Customer Journey Map That Converts' 5 | seo_noindex: false 6 | seo_nofollow: false 7 | seo_canonical_type: entry 8 | sitemap_change_frequency: weekly 9 | sitemap_priority: 0.5 10 | featured: false 11 | updated_by: 6d26d0a8-ff9c-4c3e-a25e-7e036508908c 12 | updated_at: 1736333415 13 | show_related_posts: false 14 | article: 15 | - 16 | type: paragraph 17 | content: 18 | - 19 | type: text 20 | text: 'Traditional marketing funnels often focus solely on the initial sale, but true success comes from understanding the entire customer journey. By mapping every stage of interaction—from the first brand introduction to repeat purchases—marketers can identify what inspires, frustrates, and influences customers. Start by analyzing data, conducting interviews, and observing user behavior. Then, transform these insights into a visual roadmap that highlights touchpoints, motivations, and pain points. The result is a blueprint for more personalized messaging, improved customer experiences, and higher long-term retention.' 21 | categories: marketing 22 | excerpt: 'Traditional marketing funnels often focus solely on the initial sale, but true success comes from understanding the entire customer journey.' 23 | image: images/matt-howard-a4il43vunly-unsplash.jpg 24 | --- 25 | -------------------------------------------------------------------------------- /export/app/Tags/YoutubeId.php: -------------------------------------------------------------------------------- 1 | params->get('youtube_url'); 34 | 35 | if (empty($youtubeUrl)) { 36 | return false; 37 | } 38 | 39 | // Checks if it matches a pattern and returns the value 40 | if (preg_match($pattern, $youtubeUrl, $match)) { 41 | return $match[1]; 42 | } 43 | 44 | // if no match return false. 45 | return false; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /export/resources/views/components/search-form.blade.php: -------------------------------------------------------------------------------- 1 | {{-- 2 | Set the search results URL inside Control Panel in /cp/globals/theme 3 | Docs: https://statamic.dev/search#forms 4 | --}} 5 | 6 | @props([ 7 | 'action', 8 | 'query' => request()->get('q'), 9 | 'total_results' => null, 10 | 'placeholder' => 'Search…', 11 | ]) 12 | 13 |
    18 |
    19 | 29 | 32 | 41 |
    42 | @isset($query) 43 | 44 | {{ $total_results }} {{ Statamic::modify('result')->plural($total_results) }} 45 | 46 | @endisset 47 |
    48 | -------------------------------------------------------------------------------- /export/resources/views/partials/browser-appearance.blade.php: -------------------------------------------------------------------------------- 1 | @if ($browser_appearance->disable_phone_detection) 2 | 3 | @endif 4 | 5 | @if ($browser_appearance->disable_email_detection) 6 | 7 | @endif 8 | 9 | @if ($browser_appearance->disable_address_detection) 10 | 11 | @endif 12 | 13 | @if ($browser_appearance->apple_mobile_web_app) 14 | 15 | @if ($browser_appearance->apple_status_bar_black) 16 | 17 | @endif 18 | @endif 19 | 20 | @if ($browser_appearance->android_mobile_web_app) 21 | 22 | @endif 23 | 24 | @isset($browser_appearance->theme_color) 25 | 26 | @endisset 27 | 28 | {{-- 29 | Generate favicons here: 30 | https://realfavicongenerator.net 31 | --}} 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /export/resources/css/site.css: -------------------------------------------------------------------------------- 1 | /* 2 | Instead of rellying 100% on TailwindCSS utility classes, 3 | for highly reusable UI elements we create BEM CSS components. 4 | We think this approach is faster and more maintainable and eliminates the 5 | need to create/import a bunch of tiny Blade components with a single HTML tag. 6 | 7 | Introduction to BEM: 8 | @see http://getbem.com/introduction/ 9 | @see https://cssguidelin.es/#bem-like-naming 10 | 11 | CSS folder structure is based on ITCSS: 12 | @see https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/ 13 | */ 14 | 15 | /* Configs */ 16 | @import 'tailwindcss'; 17 | @import './config.css'; 18 | @import './typography.css'; 19 | 20 | /* Elements */ 21 | @import './elements/borders.css'; 22 | @import './elements/images.css'; 23 | @import './elements/inputs.css'; 24 | @import './elements/links.css'; 25 | @import './elements/page.css'; 26 | @import './elements/typography.css'; 27 | 28 | /* Objects */ 29 | @import './objects/layout.css'; 30 | 31 | /* Components */ 32 | @import './components/alert.css'; 33 | @import './components/badge.css'; 34 | @import './components/button.css'; 35 | @import './components/card.css'; 36 | @import './components/headings.css'; 37 | @import './components/misc.css'; 38 | @import './components/scrollbar.css'; 39 | @import './components/tooltip.css'; 40 | @import './components/typography.css'; 41 | 42 | /* Utilities */ 43 | @import './utilities/br-hidden.css'; 44 | @import './utilities/container.css'; 45 | @import './utilities/fill-current-nested.css'; 46 | @import './utilities/site-grid.css'; 47 | -------------------------------------------------------------------------------- /export/resources/fieldsets/seo_open_graph.yaml: -------------------------------------------------------------------------------- 1 | title: 'SEO open graph' 2 | fields: 3 | - 4 | handle: og_title 5 | field: 6 | type: text 7 | localizable: true 8 | listable: false 9 | display: 'Social title' 10 | instructions: 'This entries OG title, defaults to custom SEO title and title. Recommended max 70 chars.' 11 | character_limit: 70 12 | - 13 | handle: og_description 14 | field: common.text_plain 15 | config: 16 | listable: false 17 | display: 'Social description' 18 | instructions: 'This entries OG description, defaults to meta description. Recommended max 200 chars.' 19 | character_limit: 200 20 | width: 100 21 | - 22 | handle: og_image 23 | field: common.image 24 | config: 25 | container: assets 26 | mode: grid 27 | listable: false 28 | display: 'Social image' 29 | instructions: 'This entries OG image. Defaults to global site OG image. The recommended size is 1200px x 630px. The image will be focal cropped to this dimension.' 30 | instructions_position: below 31 | width: 50 32 | - 33 | handle: twitter_image 34 | field: common.image 35 | config: 36 | container: assets 37 | mode: grid 38 | listable: false 39 | display: 'Twitter image' 40 | instructions: 'This entries Twitter Summary with large image. Defaults to global site Twitter image. Images should have an aspect ratio of 2:1 with minimum dimensions of 1200 x 600px. This image will be focal cropped to this dimension.' 41 | instructions_position: below 42 | width: 50 43 | -------------------------------------------------------------------------------- /export/content/trees/navigation/footer.yaml: -------------------------------------------------------------------------------- 1 | tree: 2 | - 3 | id: fe2d2a59-9774-418b-b56d-540b0ed2ca65 4 | title: Product 5 | children: 6 | - 7 | id: beb0ec14-bc6e-44d3-99a8-91a6ddc72372 8 | title: Blocks 9 | url: '#faqs' 10 | - 11 | id: d2af953f-3b02-4a34-af90-5d3c96218a6c 12 | title: Components 13 | url: '#components' 14 | - 15 | id: 519f57d4-f444-4d30-9f1b-413daa367b64 16 | title: Styleguide 17 | url: '#style-guide' 18 | - 19 | id: 522da2da-89bb-407f-a491-b12c03714125 20 | title: Company 21 | children: 22 | - 23 | id: de58fcc1-fe3f-4b89-855b-b96423b87c64 24 | title: Terms 25 | url: '#' 26 | - 27 | id: 95168561-8954-407f-b2c2-691d56231500 28 | title: Privacy 29 | url: '#' 30 | - 31 | id: 4a3e3ee2-331b-4fad-8293-af6ef3089cd9 32 | title: Resources 33 | children: 34 | - 35 | id: 59596fc1-dbbf-40bf-874c-289334b67bd4 36 | title: About 37 | url: '#' 38 | - 39 | id: 32bc32da-5c3d-43ea-82a7-f8ef2ce8f44d 40 | title: Careers 41 | url: '#' 42 | - 43 | id: 71c00076-7635-45a0-a880-c1efccc55d08 44 | entry: 506c8e50-bc23-4c16-b691-c8aca71c1258 45 | - 46 | id: 6168f495-da0a-4563-9a1e-2e4630054508 47 | title: Support 48 | children: 49 | - 50 | id: 20c48043-51f3-47ef-965a-b58ee8fc97f3 51 | title: Documentation 52 | url: '#' 53 | - 54 | id: a41aa20a-e854-4d35-98ad-0c8de510ba02 55 | title: 'Help Center' 56 | url: '#' 57 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/radio.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'options', 4 | 'display', 5 | 'handle', 6 | 'id', 7 | 'instructions', 8 | ]) 9 | 10 |
    18 | {!! $display !!} 19 | 20 | @isset($instructions) 21 | 22 | @endisset 23 | 24 |
    25 | @foreach ($options as $option => $label) 26 |
    27 | 37 | 40 |
    41 | @endforeach 42 |
    43 |
    44 | -------------------------------------------------------------------------------- /export/resources/blueprints/collections/testimonials/testimonial.yaml: -------------------------------------------------------------------------------- 1 | title: Testimonials 2 | tabs: 3 | main: 4 | display: Main 5 | sections: 6 | - 7 | fields: 8 | - 9 | handle: title 10 | field: 11 | type: text 12 | required: true 13 | validate: 14 | - required 15 | - 16 | handle: quote 17 | field: common.text_plain 18 | config: 19 | display: Quote 20 | validate: 21 | - required 22 | - 23 | handle: avatar 24 | field: common.image 25 | config: 26 | mode: list 27 | display: Avatar 28 | width: 50 29 | validate: 30 | - required 31 | always_save: false 32 | - 33 | handle: author_title 34 | field: 35 | display: 'Author title' 36 | type: text 37 | width: 50 38 | sidebar: 39 | display: Sidebar 40 | sections: 41 | - 42 | fields: 43 | - 44 | handle: slug 45 | field: 46 | type: slug 47 | localizable: true 48 | validate: 'max:200' 49 | show_regenerate: true 50 | - 51 | handle: featured 52 | field: 53 | display: Featured 54 | type: toggle 55 | instructions: 'Used inside the Testimonials block to create a query with only featured entries' 56 | always_save: false 57 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Bedrock](https://bedrock.remarkable.dev) 2 | 3 | ## The Foundation for your Statamic projects. 4 | 5 | Features shadcn/ui style Alpine.js components that you can customize, extend, and build on. Plus a block-based page builder with CLI tools and complete SEO setup. 6 | 7 | ## Features 8 | - **shadcn/ui style Alpine.js components**. 10+ beautifully-designed, accessible components for rapid development. 9 | - **Blocks**. Blocks are based on Replicator Fieldtype and are like LEGO bricks that provide you the maximum flexibility when building pages. You can use CLI commands to quickly create or remove Blocks. Bedrock includes a few commonly used Blocks like FAQs and Form. 10 | - **Blade templates**. Unlocks the full potential of Laravel, while still utilizing Statamic modifiers and tags. 11 | - **SEO**. Full SEO settings without extra addon. Including cookie consent dialog that works with GTM. 12 | - **Style guide.** A Block that’s very useful when starting projects. It’s more of an upgrade to your dev process that let’s you see all your small UI parts in one place before starting to build other Blocks and pages. 13 | 14 | ## Installation 15 | 16 | Using the [Statamic CLI](https://github.com/statamic/cli) tool run the following command: 17 | 18 | ```bash 19 | statamic new {sitename} jasonbaciulis/bedrock 20 | ``` 21 | 22 | ## Documentation 23 | You can find [docs on GitHub](https://github.com/jasonbaciulis/bedrock/blob/main/DOCUMENTATION.md). 24 | 25 | ## Contributing 26 | 27 | If you found a bug or have some ideas how to make Bedrock even better, please [create an issue](https://github.com/jasonbaciulis/bedrock/issues/new) or submit a PR on GitHub. 28 | -------------------------------------------------------------------------------- /export/resources/js/components/newsletter.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('alpine:init', () => { 2 | const persistKey = appName.toLowerCase().replaceAll(' ', '_') + '_newsletter_subscribed' 3 | 4 | Alpine.data('newsletter', ({ form }) => ({ 5 | // component state 6 | success: false, 7 | error: false, 8 | subscribed: Alpine.$persist(false).as(persistKey), 9 | form, 10 | 11 | init() { 12 | this.form.setValidationTimeout(100) 13 | }, 14 | 15 | // derived state 16 | get isSubscribed() { 17 | return this.subscribed 18 | }, 19 | set isSubscribed(status) { 20 | this.subscribed = !!status 21 | }, 22 | 23 | /** main submit flow */ 24 | async submit() { 25 | try { 26 | // honeypot: pretend success (don’t surface errors to bots) 27 | if (this.form.honeypot) { 28 | this.form.reset() 29 | this.success = true 30 | this.error = false 31 | return 32 | } 33 | 34 | this.form 35 | .submit() 36 | .then(response => { 37 | if (response?.data?.success) { 38 | this.success = true 39 | this.error = false 40 | this.isSubscribed = true 41 | this.form.reset() 42 | } else { 43 | this.success = false 44 | this.error = true 45 | } 46 | }) 47 | .catch(error => { 48 | console.log(error) 49 | }) 50 | } catch (error) { 51 | console.error(error) 52 | this.success = false 53 | this.error = true 54 | } 55 | }, 56 | })) 57 | }) 58 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/select.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'options', 4 | 'placeholder' => 'Select a value…', 5 | 'multiple' => false, 6 | 'handle', 7 | 'id', 8 | 'instructions', 9 | 'searchable' => false, 10 | ]) 11 | 12 | @if ($searchable) 13 | @include('components.ui.form.combobox', [...$attributes, 'model' => $model]) 14 | @else 15 | 47 | @endif 48 | -------------------------------------------------------------------------------- /export/resources/views/components/breadcrumbs.blade.php: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /export/resources/views/partials/footer.blade.php: -------------------------------------------------------------------------------- 1 | 41 | -------------------------------------------------------------------------------- /export/resources/views/components/entry-testimonials.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'entry', 3 | 'fetched_from_rest_api' => false, 4 | ]) 5 | 6 |
    7 |
    8 | @if ($fetched_from_rest_api) 9 |

    10 | @else 11 |

    “{!! $entry->quote !!}”

    12 | @endif 13 |
    14 |
    15 | @if ($fetched_from_rest_api) 16 |
    17 | 23 |
    24 | @else 25 | 32 | @endif 33 |
    34 | @if ($fetched_from_rest_api) 35 |

    36 |

    37 | @else 38 |

    {!! $entry->title !!}

    39 |

    {!! $entry->author_title !!}

    40 | @endif 41 |
    42 |
    43 |
    44 | -------------------------------------------------------------------------------- /export/resources/blueprints/collections/team/team.yaml: -------------------------------------------------------------------------------- 1 | title: Team 2 | tabs: 3 | main: 4 | display: Main 5 | sections: 6 | - 7 | fields: 8 | - 9 | handle: title 10 | field: 11 | type: hidden 12 | required: false 13 | - 14 | handle: first_name 15 | field: 16 | type: text 17 | display: 'First name' 18 | width: 50 19 | validate: 20 | - required 21 | - 22 | handle: last_name 23 | field: 24 | type: text 25 | display: 'Last name' 26 | width: 50 27 | validate: 28 | - required 29 | - 30 | handle: position 31 | field: 32 | display: Position 33 | type: text 34 | - 35 | handle: bio 36 | field: common.text_plain 37 | config: 38 | display: Bio 39 | - 40 | handle: image 41 | field: common.image 42 | sidebar: 43 | display: Sidebar 44 | sections: 45 | - 46 | fields: 47 | - 48 | handle: slug 49 | field: 50 | type: slug 51 | localizable: true 52 | validate: 'max:200' 53 | show_regenerate: true 54 | - 55 | handle: featured 56 | field: 57 | display: Featured 58 | type: toggle 59 | instructions: 'Used inside the Team block to create a query with only featured team members' 60 | always_save: false 61 | -------------------------------------------------------------------------------- /export/resources/views/blocks/team.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 | @if ($block->query->value() === 'custom') 6 | @php($entries = $block->entries) 7 | @elseif ($block->query->value() === 'ordered') 8 | @php($entries = Statamic::tag('collection:team')->limit($block->limit)->sort('order')->fetch()) 9 | @elseif ($block->query->value() === 'featured') 10 | @php($entries = Statamic::tag('collection:team')->limit($block->limit)->featured()->sort('order')->fetch()) 11 | @endif 12 | 13 |
    14 | @foreach ($entries as $entry) 15 |
    16 |
    19 | 26 |
    27 |

    {!! $entry->title !!}

    28 |

    {!! $entry->position !!}

    29 |

    {!! $entry->bio !!}

    30 |
    31 | @endforeach 32 |
    33 |
    34 |
    35 | -------------------------------------------------------------------------------- /export/resources/svg/social/instagram.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/alert.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'style' => 'success', // success, warning, error 3 | 'title', 4 | 'description' => null, 5 | 'dismissible' => false, 6 | ]) 7 | 8 |
    class([ 10 | 'alert', 11 | 'alert--success' => $style === 'success', 12 | 'alert--warning' => $style === 'warning', 13 | 'alert--error' => $style === 'error', 14 | ]) }} 15 | @if ($dismissible) 16 | x-data="{ dismissed: false }" 17 | x-show="!dismissed" 18 | @endif 19 | > 20 |
    21 | @if ($style === 'success') 22 | 23 | @elseif ($style === 'warning') 24 | 25 | @elseif ($style === 'error') 26 | 27 | @endif 28 |
    29 |
    30 |

    {!! $title !!}

    31 | @isset($description) 32 |

    {!! $description !!}

    33 | @endisset 34 |
    35 | 36 | @if ($dismissible) 37 |
    38 |
    39 | 47 |
    48 |
    49 | @endif 50 |
    51 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/checkboxes.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'options', 4 | 'display', 5 | 'handle', 6 | 'id', 7 | 'instructions', 8 | ]) 9 | 10 |
    19 | {!! $display !!} 20 | 21 | @isset($instructions) 22 | 23 | @endisset 24 | 25 |
    26 | @foreach ($options as $option => $label) 27 |
    28 | 38 | 44 |
    45 | @endforeach 46 |
    47 |
    48 | -------------------------------------------------------------------------------- /export/.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Bedrock 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://127.0.0.1:8000 6 | 7 | APP_LOCALE=en 8 | APP_FALLBACK_LOCALE=en 9 | APP_FAKER_LOCALE=en_US 10 | 11 | APP_MAINTENANCE_DRIVER=file 12 | # APP_MAINTENANCE_STORE=file 13 | 14 | BCRYPT_ROUNDS=12 15 | 16 | LOG_CHANNEL=stack 17 | LOG_STACK=single 18 | LOG_DEPRECATIONS_CHANNEL=null 19 | LOG_LEVEL=debug 20 | 21 | DB_CONNECTION=sqlite 22 | # DB_HOST=127.0.0.1 23 | # DB_PORT=3306 24 | # DB_DATABASE=laravel 25 | # DB_USERNAME=root 26 | # DB_PASSWORD= 27 | 28 | SESSION_DRIVER=file 29 | SESSION_LIFETIME=120 30 | SESSION_ENCRYPT=false 31 | SESSION_PATH=/ 32 | SESSION_DOMAIN=null 33 | 34 | BROADCAST_CONNECTION=log 35 | FILESYSTEM_DISK=local 36 | QUEUE_CONNECTION=sync 37 | 38 | CACHE_STORE=file 39 | CACHE_PREFIX= 40 | 41 | MEMCACHED_HOST=127.0.0.1 42 | 43 | REDIS_CLIENT=phpredis 44 | REDIS_HOST=127.0.0.1 45 | REDIS_PASSWORD=null 46 | REDIS_PORT=6379 47 | 48 | MAIL_MAILER=log 49 | MAIL_HOST=127.0.0.1 50 | MAIL_PORT=2525 51 | MAIL_USERNAME=null 52 | MAIL_PASSWORD=null 53 | MAIL_ENCRYPTION=null 54 | MAIL_FROM_ADDRESS="hello@example.com" 55 | MAIL_FROM_NAME="${APP_NAME}" 56 | 57 | AWS_ACCESS_KEY_ID= 58 | AWS_SECRET_ACCESS_KEY= 59 | AWS_DEFAULT_REGION=us-east-1 60 | AWS_BUCKET= 61 | AWS_USE_PATH_STYLE_ENDPOINT=false 62 | 63 | VITE_APP_NAME="${APP_NAME}" 64 | 65 | STATAMIC_LICENSE_KEY= 66 | STATAMIC_PRO_ENABLED=true 67 | STATAMIC_STACHE_WATCHER=auto 68 | STATAMIC_STATIC_CACHING_STRATEGY=null 69 | STATAMIC_REVISIONS_ENABLED=false 70 | STATAMIC_GRAPHQL_ENABLED=false 71 | STATAMIC_API_ENABLED=false 72 | STATAMIC_GIT_ENABLED=false 73 | 74 | STATAMIC_THEME=business 75 | STATAMIC_CUSTOM_CMS_NAME="${APP_NAME}" 76 | STATAMIC_CUSTOM_LOGO_URL='/assets/logos/logo-brand-fixed.svg' 77 | 78 | DEBUGBAR_ENABLED=false 79 | -------------------------------------------------------------------------------- /export/resources/fieldsets/seo_advanced.yaml: -------------------------------------------------------------------------------- 1 | title: 'SEO advanced' 2 | fields: 3 | - 4 | handle: seo_noindex 5 | field: 6 | type: toggle 7 | instructions: 'Instruct crawlers not to index this entry, also excludes it from the sitemap.xml.' 8 | instructions_position: below 9 | width: 50 10 | display: No-index 11 | - 12 | handle: seo_nofollow 13 | field: 14 | type: toggle 15 | instructions: 'Instruct crawlers not to follow links on this page.' 16 | instructions_position: below 17 | width: 50 18 | display: No-follow 19 | - 20 | handle: seo_canonical_type 21 | field: 22 | options: 23 | - 24 | key: entry 25 | value: 'Current entry' 26 | - 27 | key: domain 28 | value: 'Current domain' 29 | - 30 | key: external 31 | value: 'External domain' 32 | display: 'Canonical type' 33 | type: button_group 34 | default: entry 35 | instructions: 'Where should the canonical URL for this entry point to.' 36 | listable: false 37 | - 38 | handle: seo_canonical_domain 39 | field: common.entry 40 | config: 41 | localizable: true 42 | listable: false 43 | display: 'Canonical URL' 44 | width: 66 45 | instructions: 'If this is an entry with duplicate content. Enter the original URL for this content.' 46 | validate: 47 | - 'required_if:seo_canonical_type,domain' 48 | if: 49 | seo_canonical_type: 'equals domain' 50 | - 51 | handle: seo_canonical_external 52 | field: 53 | input_type: url 54 | display: 'Canonical URL' 55 | type: text 56 | listable: false 57 | validate: 58 | - 'required_if:seo_canonical_type,external' 59 | if: 60 | seo_canonical_type: 'equals external' 61 | -------------------------------------------------------------------------------- /export/resources/blueprints/collections/pages/page.yaml: -------------------------------------------------------------------------------- 1 | title: Page 2 | tabs: 3 | main: 4 | display: Main 5 | sections: 6 | - 7 | fields: 8 | - 9 | handle: title 10 | field: 11 | type: text 12 | required: true 13 | validate: 14 | - required 15 | - 16 | import: blocks 17 | seo: 18 | display: SEO 19 | sections: 20 | - 21 | display: Basic 22 | instructions: 'Basic SEO settings' 23 | fields: 24 | - 25 | import: seo_basic 26 | - 27 | display: Advanced 28 | instructions: 'Advanced SEO settings' 29 | fields: 30 | - 31 | import: seo_advanced 32 | - 33 | display: 'Open Graph' 34 | instructions: 'Open Graph meta tags for social sharing' 35 | fields: 36 | - 37 | import: seo_open_graph 38 | - 39 | display: Sitemap 40 | instructions: 'Sitemap configuration' 41 | fields: 42 | - 43 | import: seo_sitemap 44 | - 45 | display: 'JSON-ld Schema' 46 | instructions: 'Custom JSON-ld schema objects' 47 | fields: 48 | - 49 | import: seo_json-ld_schema 50 | sidebar: 51 | display: Sidebar 52 | sections: 53 | - 54 | fields: 55 | - 56 | handle: slug 57 | field: 58 | type: slug 59 | localizable: true 60 | validate: 'max:200' 61 | show_regenerate: true 62 | - 63 | handle: parent 64 | field: 65 | type: entries 66 | collections: 67 | - pages 68 | max_items: 1 69 | listable: false 70 | localizable: true 71 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.yaml: -------------------------------------------------------------------------------- 1 | name: Bug report 2 | description: Fill out a bug report to help me improve Bedrock. 3 | body: 4 | - type: textarea 5 | attributes: 6 | label: Bug description 7 | description: What happened? What did you expect to happen? Feel free to drop any screenshots in here. 8 | placeholder: I did this thing over here, and saw this error… 9 | validations: 10 | required: true 11 | - type: textarea 12 | attributes: 13 | label: How to reproduce 14 | description: List the steps so I'm able to recreate this bug. Bonus points if you can provide an example GitHub repo with this bug reproduced. 15 | placeholder: Go here, Type this, Click that, Look over there. 16 | validations: 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Logs 21 | description: You can paste any relevant logs here, they'll be automatically rendered in code blocks. You can find your logs in `storage/logs`. 22 | render: shell 23 | - type: textarea 24 | attributes: 25 | label: Environment 26 | description: | 27 | Please paste the *full* output of the `php please support:details` command. It gives me some context about your project. 28 | render: yaml # the format of the command is close to yaml and gets highlighted nicely 29 | validations: 30 | required: true 31 | - type: dropdown 32 | attributes: 33 | label: Installation 34 | description: How did you install Statamic? 35 | options: 36 | - Fresh statamic/statamic site via CLI 37 | - Starter Kit using via CLI 38 | - Existing Laravel app 39 | - Other (please explain) 40 | validations: 41 | required: true 42 | - type: textarea 43 | attributes: 44 | label: Additional details 45 | description: Fancy setup? Anything else you need to share? 46 | -------------------------------------------------------------------------------- /export/resources/views/components/ui/form/text.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'model', 3 | 'prepend' => null, 4 | 'append' => null, 5 | 'character_limit' => null, 6 | 'autocomplete' => null, 7 | 'visibility' => null, 8 | 'placeholder' => null, 9 | 'id', 10 | 'handle', 11 | 'input_type' => 'text', 12 | 'instructions' => null, 13 | ]) 14 | 15 |
    16 | @isset($prepend) 17 |
    18 | {!! $prepend !!} 19 |
    20 | @endisset 21 | 22 | class(['pl-10' => $prepend, 'pr-10' => $append]) 27 | ->merge([ 28 | 'maxlength' => $character_limit, 29 | 'autocomplete' => $autocomplete, 30 | 'readonly' => $visibility === 'read_only' ? 'readonly' : null, 31 | 'placeholder' => $placeholder, 32 | ]) 33 | }} 34 | id="{{ $id }}" 35 | name="{{ $handle }}" 36 | type="{{ $input_type }}" 37 | x-bind:aria-invalid="form.invalid('{{ $handle }}')" 38 | @isset($instructions) 39 | x-bind:aria-describedby="form.invalid('{{ $handle }}') ? '{{ $id }}-error' : '{{ $id }}-instructions'" 40 | @else 41 | x-bind:aria-describedby="form.invalid('{{ $handle }}') ? '{{ $id }}-error' : false" 42 | @endisset 43 | x-on:change="form.validate('{{ $handle }}')" 44 | /> 45 | @isset($append) 46 |
    47 | {!! $append !!} 48 |
    49 | @endisset 50 |
    51 | -------------------------------------------------------------------------------- /export/resources/css/components/button.css: -------------------------------------------------------------------------------- 1 | @layer components { 2 | .btn { 3 | @apply focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:ring-3 disabled:pointer-events-none disabled:opacity-50 has-[>svg]:px-3 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4; 4 | } 5 | 6 | .btn--primary { 7 | @apply bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary/90 h-9 px-4 py-2 shadow-xs; 8 | } 9 | 10 | .btn--secondary { 11 | @apply bg-secondary text-secondary-foreground hover:bg-secondary/80 h-9 px-4 py-2 shadow-xs; 12 | } 13 | 14 | .btn--outline { 15 | @apply bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 border px-4 py-2 shadow-xs; 16 | } 17 | 18 | .btn--link { 19 | @apply text-neutral-900 underline-offset-4 hover:underline active:underline; 20 | } 21 | 22 | .btn--ghost { 23 | @apply hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-9 px-4 py-2 text-neutral-900; 24 | } 25 | 26 | .btn--destructive { 27 | @apply bg-destructive hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 h-9 px-4 py-2 text-white shadow-xs; 28 | } 29 | 30 | .btn--round { 31 | @apply w-9 rounded-full p-0; 32 | } 33 | 34 | .btn--square { 35 | @apply w-9 p-0; 36 | } 37 | 38 | .btn--sm { 39 | @apply h-8 gap-1.5 px-3 has-[>svg]:px-2.5; 40 | 41 | &.btn--round, 42 | &.btn--square { 43 | @apply w-8; 44 | } 45 | } 46 | 47 | .btn--lg { 48 | @apply h-10 px-6 has-[>svg]:px-4; 49 | } 50 | 51 | .btn--xl { 52 | @apply h-12 px-8 has-[>svg]:px-4; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /export/resources/views/blocks/search-results.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 5 | {{-- 6 | You can set index in config/statamic/search.php 7 | Docs: https://statamic.dev/search#indexes 8 | --}} 9 | 16 | @isset($results) 17 |
    18 |
    19 | 23 |
    24 | 25 | @forelse ($results as $result) 26 | 35 | @empty 36 |
    37 |

    {!! $block->no_results_text !!}

    38 |
    39 | @endforelse 40 |
    41 | @endisset 42 | 43 | @isset($paginate) 44 | 45 | @endisset 46 |
    47 |
    48 |
    49 | -------------------------------------------------------------------------------- /export/resources/views/layout.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | @include('partials.seo') 9 | @include('partials.browser-appearance') 10 | 11 | 12 | 13 | {{-- 14 | Async-load fonts: 15 | 1) Preload fonts.css (rel="preload" as="style") so it starts downloading early without applying. 16 | 2) Load again with media="print", then switch to media="all" onload to avoid render blocking. 17 | With font-display: swap in fonts.css, fallback text paints immediately; the webfont swaps in when ready. 18 | --}} 19 | 20 | 25 | 26 | {{-- Scripts global --}} 27 | {!! $scripts->code_head !!} 28 | 29 | 32 | @include('partials.skip-to-content') 33 | @yield('seo_body') 34 | 35 | {{-- Banner global --}} 36 | 37 | 38 | @include('partials.header') 39 | @yield('body') 40 | @include('partials.footer') 41 | 42 | {{-- Control panel toolbar --}} 43 | 44 | 45 | {{-- Notifications --}} 46 | 47 | 48 | {{-- Push scripts when various components are added --}} 49 | @stack('scripts') 50 | 51 | 52 | {{-- Scripts global --}} 53 | {!! $scripts->code_footer !!} 54 | 55 | 56 | -------------------------------------------------------------------------------- /export/resources/js/components/toaster.js: -------------------------------------------------------------------------------- 1 | const VISIBLE_TOASTS_LIMIT = 3 2 | const TOAST_LIFETIME = 4000 3 | const ALLOWED_TYPES = ['success', 'error', 'warning', 'info', 'default'] 4 | 5 | // To show a toast, dispatch a custom event: 6 | // this.$dispatch('toast', { message: 'Hello, world!', description: 'This is a description', type: 'success', dismissible: true }) 7 | 8 | document.addEventListener('alpine:init', () => { 9 | Alpine.data('toaster', () => { 10 | return { 11 | toasts: [], 12 | toastsCounter: 1, 13 | 14 | enqueue(detail) { 15 | const toast = this.create(detail) 16 | 17 | if (!toast) { 18 | return 19 | } 20 | 21 | if (this.toasts.length >= VISIBLE_TOASTS_LIMIT) { 22 | this.dismiss(this.toasts[0]?.id) 23 | } 24 | 25 | this.toasts.push(toast) 26 | 27 | toast.timeout = window.setTimeout(() => { 28 | this.dismiss(toast.id) 29 | }, TOAST_LIFETIME) 30 | }, 31 | 32 | dismiss(id) { 33 | if (!id) { 34 | return 35 | } 36 | 37 | const toast = this.toasts.find(item => item.id === id) 38 | 39 | if (!toast) { 40 | return 41 | } 42 | 43 | if (toast.timeout) { 44 | window.clearTimeout(toast.timeout) 45 | } 46 | 47 | this.toasts = this.toasts.filter(item => item.id !== id) 48 | }, 49 | 50 | create(detail) { 51 | const id = this.toastsCounter++ 52 | const type = this.resolveType(detail.type) 53 | const message = detail.message ?? '' 54 | const description = detail.description ?? '' 55 | 56 | if (!message && !description) { 57 | return null 58 | } 59 | 60 | return { 61 | id: this.$id('toast', id), 62 | message, 63 | description, 64 | type, 65 | dismissible: Boolean(detail?.dismissible), 66 | timeout: null, 67 | } 68 | }, 69 | 70 | resolveType(type) { 71 | return ALLOWED_TYPES.includes(type) ? type : 'default' 72 | }, 73 | } 74 | }) 75 | }) 76 | --------------------------------------------------------------------------------