[{"data":1,"prerenderedAt":882},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-public-routes-mode":78,"-getting-started-public-routes-mode-surround":877},[4,26,62],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":25},"Getting Started","i-lucide-rocket","/getting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Installation","/getting-started/installation","1.getting-started/1.installation","i-lucide-download",{"title":16,"path":17,"stem":18,"icon":19},"Frontend Setup (headless)","/getting-started/frontend-setup","1.getting-started/2.frontend-setup","i-lucide-layout",{"title":21,"path":22,"stem":23,"icon":24},"Public-routes mode","/getting-started/public-routes-mode","1.getting-started/3.public-routes-mode","i-lucide-zap",false,{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":25},"Essentials","i-lucide-book-open","/essentials","2.essentials",[32,37,42,47,52,57],{"title":33,"path":34,"stem":35,"icon":36},"Blade Components","/essentials/blade-components","2.essentials/1.blade-components","i-lucide-component",{"title":38,"path":39,"stem":40,"icon":41},"Filament Admin","/essentials/filament-admin","2.essentials/2.filament-admin","i-lucide-layout-dashboard",{"title":43,"path":44,"stem":45,"icon":46},"MCP Tools","/essentials/mcp-tools","2.essentials/3.mcp-tools","i-lucide-bot",{"title":48,"path":49,"stem":50,"icon":51},"Configuration","/essentials/configuration","2.essentials/4.configuration","i-lucide-settings",{"title":53,"path":54,"stem":55,"icon":56},"Tags Taxonomy","/essentials/tags","2.essentials/5.tags","i-lucide-hash",{"title":58,"path":59,"stem":60,"icon":61},"MediaLibrary Integration","/essentials/media-library","2.essentials/6.media-library","i-lucide-image",{"title":63,"icon":64,"path":65,"stem":66,"children":67,"page":25},"Community","i-lucide-users","/community","4.community",[68,73],{"title":69,"path":70,"stem":71,"icon":72},"Contributing","/community/contributing","4.community/1.contributing","i-lucide-git-pull-request",{"title":74,"path":75,"stem":76,"icon":77},"License","/community/license","4.community/2.license","i-lucide-scale",{"id":79,"title":21,"body":80,"description":870,"extension":871,"links":872,"meta":873,"navigation":874,"path":22,"seo":875,"stem":23,"__hash__":876},"docs/1.getting-started/3.public-routes-mode.md",{"type":81,"value":82,"toc":862},"minimark",[83,92,217,222,345,348,352,363,602,609,631,635,638,672,675,679,686,690,693,757,772,776,847,858],[84,85,86,87,91],"p",{},"The package ships an ",[88,89,90],"strong",{},"opt-in public-routes mode",". Flip a flag in config and you get:",[93,94,95,111],"table",{},[96,97,98],"thead",{},[99,100,101,105,108],"tr",{},[102,103,104],"th",{},"Route",[102,106,107],{},"Name",[102,109,110],{},"Notes",[112,113,114,131,146,161,180,199],"tbody",{},[99,115,116,123,128],{},[117,118,119],"td",{},[120,121,122],"code",{},"GET /blog",[117,124,125],{},[120,126,127],{},"blog.index",[117,129,130],{},"Paginated post listing",[99,132,133,138,143],{},[117,134,135],{},[120,136,137],{},"GET /blog/{slug}",[117,139,140],{},[120,141,142],{},"blog.show",[117,144,145],{},"Single post (only published)",[99,147,148,153,158],{},[117,149,150],{},[120,151,152],{},"GET /blog/category/{slug}",[117,154,155],{},[120,156,157],{},"blog.category",[117,159,160],{},"Category archive (paginated)",[99,162,163,168,173],{},[117,164,165],{},[120,166,167],{},"GET /blog/preview/{post}",[117,169,170],{},[120,171,172],{},"blog.preview",[117,174,175,176,179],{},"Signed-only draft preview, with ",[120,177,178],{},"noindex,nofollow"," meta",[99,181,182,187,192],{},[117,183,184],{},[120,185,186],{},"GET /blog/feed",[117,188,189],{},[120,190,191],{},"blog.feed",[117,193,194,195,198],{},"RSS 2.0 feed (gated by ",[120,196,197],{},"features.feed",")",[99,200,201,206,211],{},[117,202,203],{},[120,204,205],{},"GET /blog/tag/{slug}",[117,207,208],{},[120,209,210],{},"blog.tag",[117,212,213,214,198],{},"Tag archive (gated by ",[120,215,216],{},"features.tags",[218,219,221],"h2",{"id":220},"enable-it","Enable it",[223,224,230],"pre",{"className":225,"code":226,"filename":227,"language":228,"meta":229,"style":229},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","'features' => [\n    'public_routes' => true,\n    'feed'          => true,   // optional, enables /blog/feed\n    'tags'          => true,   // optional, enables /blog/tag/{slug}\n],\n\n'layout' => 'layouts.app',     // your host layout the page views extend\n","config/filament-blog.php","php","",[120,231,232,253,269,289,306,312,319],{"__ignoreMap":229},[233,234,237,241,245,247,250],"span",{"class":235,"line":236},"line",1,[233,238,240],{"class":239},"sMK4o","'",[233,242,244],{"class":243},"sfazB","features",[233,246,240],{"class":239},[233,248,249],{"class":239}," =>",[233,251,252],{"class":239}," [\n",[233,254,256,259,262,264,266],{"class":235,"line":255},2,[233,257,258],{"class":239},"    '",[233,260,261],{"class":243},"public_routes",[233,263,240],{"class":239},[233,265,249],{"class":239},[233,267,268],{"class":239}," true,\n",[233,270,272,274,277,279,282,285],{"class":235,"line":271},3,[233,273,258],{"class":239},[233,275,276],{"class":243},"feed",[233,278,240],{"class":239},[233,280,281],{"class":239},"          =>",[233,283,284],{"class":239}," true,",[233,286,288],{"class":287},"sHwdD","   // optional, enables /blog/feed\n",[233,290,292,294,297,299,301,303],{"class":235,"line":291},4,[233,293,258],{"class":239},[233,295,296],{"class":243},"tags",[233,298,240],{"class":239},[233,300,281],{"class":239},[233,302,284],{"class":239},[233,304,305],{"class":287},"   // optional, enables /blog/tag/{slug}\n",[233,307,309],{"class":235,"line":308},5,[233,310,311],{"class":239},"],\n",[233,313,315],{"class":235,"line":314},6,[233,316,318],{"emptyLinePlaceholder":317},true,"\n",[233,320,322,324,327,329,331,334,337,339,342],{"class":235,"line":321},7,[233,323,240],{"class":239},[233,325,326],{"class":243},"layout",[233,328,240],{"class":239},[233,330,249],{"class":239},[233,332,333],{"class":239}," '",[233,335,336],{"class":243},"layouts.app",[233,338,240],{"class":239},[233,340,341],{"class":239},",",[233,343,344],{"class":287},"     // your host layout the page views extend\n",[84,346,347],{},"That's it. The service provider registers the routes at boot — no Filament panel boot is required, so the public site keeps working for guests who never touch the admin.",[218,349,351],{"id":350},"required-a-host-layout","Required: a host layout",[84,353,354,355,358,359,362],{},"The page views extend the layout you set in ",[120,356,357],{},"'layout'",". It must define a ",[120,360,361],{},"@yield('content')"," slot. A minimal example:",[223,364,369],{"className":365,"code":366,"filename":367,"language":368,"meta":229,"style":229},"language-blade shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C!doctype html>\n\u003Chtml lang=\"en\">\n\u003Chead>\n    \u003Cmeta charset=\"utf-8\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    \u003Ctitle>{{ $title ?? config('app.name') }}\u003C/title>\n    @stack('head')\n\u003C/head>\n\u003Cbody class=\"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100\">\n    @yield('content')\n\u003C/body>\n\u003C/html>\n","resources/views/layouts/app.blade.php","blade",[120,370,371,387,411,420,442,474,520,536,545,567,584,593],{"__ignoreMap":229},[233,372,373,376,380,384],{"class":235,"line":236},[233,374,375],{"class":239},"\u003C!",[233,377,379],{"class":378},"swJcz","doctype",[233,381,383],{"class":382},"spNyl"," html",[233,385,386],{"class":239},">\n",[233,388,389,392,395,398,401,404,407,409],{"class":235,"line":255},[233,390,391],{"class":239},"\u003C",[233,393,394],{"class":378},"html",[233,396,397],{"class":382}," lang",[233,399,400],{"class":239},"=",[233,402,403],{"class":239},"\"",[233,405,406],{"class":243},"en",[233,408,403],{"class":239},[233,410,386],{"class":239},[233,412,413,415,418],{"class":235,"line":271},[233,414,391],{"class":239},[233,416,417],{"class":378},"head",[233,419,386],{"class":239},[233,421,422,425,428,431,433,435,438,440],{"class":235,"line":291},[233,423,424],{"class":239},"    \u003C",[233,426,427],{"class":378},"meta",[233,429,430],{"class":382}," charset",[233,432,400],{"class":239},[233,434,403],{"class":239},[233,436,437],{"class":243},"utf-8",[233,439,403],{"class":239},[233,441,386],{"class":239},[233,443,444,446,448,451,453,455,458,460,463,465,467,470,472],{"class":235,"line":308},[233,445,424],{"class":239},[233,447,427],{"class":378},[233,449,450],{"class":382}," name",[233,452,400],{"class":239},[233,454,403],{"class":239},[233,456,457],{"class":243},"viewport",[233,459,403],{"class":239},[233,461,462],{"class":382}," content",[233,464,400],{"class":239},[233,466,403],{"class":239},[233,468,469],{"class":243},"width=device-width, initial-scale=1",[233,471,403],{"class":239},[233,473,386],{"class":239},[233,475,476,478,481,484,488,491,495,498,501,503,506,508,510,513,516,518],{"class":235,"line":314},[233,477,424],{"class":239},[233,479,480],{"class":378},"title",[233,482,483],{"class":239},">",[233,485,487],{"class":486},"s2Zo4","{{",[233,489,490],{"class":239}," $",[233,492,494],{"class":493},"sTEyZ","title ?? ",[233,496,497],{"class":486},"config",[233,499,500],{"class":239},"(",[233,502,240],{"class":239},[233,504,505],{"class":243},"app.name",[233,507,240],{"class":239},[233,509,198],{"class":239},[233,511,512],{"class":486}," }}",[233,514,515],{"class":239},"\u003C/",[233,517,480],{"class":378},[233,519,386],{"class":239},[233,521,522,525,527,529,531,533],{"class":235,"line":321},[233,523,524],{"class":239},"    @stack",[233,526,500],{"class":493},[233,528,240],{"class":239},[233,530,417],{"class":243},[233,532,240],{"class":239},[233,534,535],{"class":493},")\n",[233,537,539,541,543],{"class":235,"line":538},8,[233,540,515],{"class":239},[233,542,417],{"class":378},[233,544,386],{"class":239},[233,546,548,550,553,556,558,560,563,565],{"class":235,"line":547},9,[233,549,391],{"class":239},[233,551,552],{"class":378},"body",[233,554,555],{"class":382}," class",[233,557,400],{"class":239},[233,559,403],{"class":239},[233,561,562],{"class":243},"bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100",[233,564,403],{"class":239},[233,566,386],{"class":239},[233,568,570,573,575,577,580,582],{"class":235,"line":569},10,[233,571,572],{"class":239},"    @yield",[233,574,500],{"class":493},[233,576,240],{"class":239},[233,578,579],{"class":243},"content",[233,581,240],{"class":239},[233,583,535],{"class":493},[233,585,587,589,591],{"class":235,"line":586},11,[233,588,515],{"class":239},[233,590,552],{"class":378},[233,592,386],{"class":239},[233,594,596,598,600],{"class":235,"line":595},12,[233,597,515],{"class":239},[233,599,394],{"class":378},[233,601,386],{"class":239},[84,603,604,605,608],{},"If your layout uses a different slot mechanism (e.g. Blade components with ",[120,606,607],{},"{{ $slot }}","), publish the page views and adapt them:",[223,610,615],{"className":611,"code":612,"filename":613,"language":614,"meta":229,"style":229},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan vendor:publish --tag=filament-blog-views\n","Terminal","bash",[120,616,617],{"__ignoreMap":229},[233,618,619,622,625,628],{"class":235,"line":236},[233,620,228],{"class":621},"sBMFI",[233,623,624],{"class":243}," artisan",[233,626,627],{"class":243}," vendor:publish",[233,629,630],{"class":243}," --tag=filament-blog-views\n",[218,632,634],{"id":633},"customizing-pages","Customizing pages",[84,636,637],{},"The shipped pages live at:",[639,640,641,647,652,657,662,667],"ul",{},[642,643,644],"li",{},[120,645,646],{},"resources/views/vendor/blog/pages/index.blade.php",[642,648,649],{},[120,650,651],{},"resources/views/vendor/blog/pages/show.blade.php",[642,653,654],{},[120,655,656],{},"resources/views/vendor/blog/pages/category.blade.php",[642,658,659],{},[120,660,661],{},"resources/views/vendor/blog/pages/preview.blade.php",[642,663,664],{},[120,665,666],{},"resources/views/vendor/blog/pages/tag.blade.php",[642,668,669],{},[120,670,671],{},"resources/views/vendor/blog/pages/feed.blade.php",[84,673,674],{},"Edit them freely — once published, the package no longer serves its own copies.",[218,676,678],{"id":677},"custom-prefix","Custom prefix",[84,680,681,682,685],{},"Change ",[120,683,684],{},"'prefix' => 'blog'"," in config. All routes pick up the new prefix.",[218,687,689],{"id":688},"disabling-individual-pieces","Disabling individual pieces",[84,691,692],{},"Each feature flag is independent:",[223,694,696],{"className":225,"code":695,"language":228,"meta":229,"style":229},"'features' => [\n    'public_routes' => true,\n    'feed'          => false,   // no RSS feed\n    'tags'          => false,   // no tag archive (admin still works if registered)\n],\n",[120,697,698,710,722,738,753],{"__ignoreMap":229},[233,699,700,702,704,706,708],{"class":235,"line":236},[233,701,240],{"class":239},[233,703,244],{"class":243},[233,705,240],{"class":239},[233,707,249],{"class":239},[233,709,252],{"class":239},[233,711,712,714,716,718,720],{"class":235,"line":255},[233,713,258],{"class":239},[233,715,261],{"class":243},[233,717,240],{"class":239},[233,719,249],{"class":239},[233,721,268],{"class":239},[233,723,724,726,728,730,732,735],{"class":235,"line":271},[233,725,258],{"class":239},[233,727,276],{"class":243},[233,729,240],{"class":239},[233,731,281],{"class":239},[233,733,734],{"class":239}," false,",[233,736,737],{"class":287},"   // no RSS feed\n",[233,739,740,742,744,746,748,750],{"class":235,"line":291},[233,741,258],{"class":239},[233,743,296],{"class":243},[233,745,240],{"class":239},[233,747,281],{"class":239},[233,749,734],{"class":239},[233,751,752],{"class":287},"   // no tag archive (admin still works if registered)\n",[233,754,755],{"class":235,"line":308},[233,756,311],{"class":239},[84,758,759,760,763,764,767,768,771],{},"When a flag is off, requests to that path return ",[88,761,762],{},"404"," (not registered). ",[120,765,766],{},"Route::has(...)"," returns true (the route is defined) but the controller calls ",[120,769,770],{},"abort_unless($flag, 404)",". That's a deliberate choice so route ordering stays predictable and you can probe the route name without crashing.",[218,773,775],{"id":774},"mode-comparison","Mode comparison",[93,777,778,790],{},[96,779,780],{},[99,781,782,784,787],{},[102,783],{},[102,785,786],{},"Headless",[102,788,789],{},"Public-routes",[112,791,792,803,814,825,836],{},[99,793,794,797,800],{},[117,795,796],{},"Routes registered",[117,798,799],{},"None",[117,801,802],{},"All 6",[99,804,805,808,811],{},[117,806,807],{},"Controllers",[117,809,810],{},"You write",[117,812,813],{},"Shipped",[99,815,816,819,822],{},[117,817,818],{},"Views",[117,820,821],{},"Components only",[117,823,824],{},"Full pages",[99,826,827,830,833],{},[117,828,829],{},"Custom domain logic",[117,831,832],{},"Yes (any)",[117,834,835],{},"Limited to view overrides",[99,837,838,841,844],{},[117,839,840],{},"Effort to ship a blog",[117,842,843],{},"~2 hours",[117,845,846],{},"~5 minutes",[84,848,849,850,853,854,857],{},"If you outgrow public-routes mode, flip the flag back to ",[120,851,852],{},"false"," and write your own controllers — see ",[855,856,16],"a",{"href":17},".",[859,860,861],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":229,"searchDepth":255,"depth":255,"links":863},[864,865,866,867,868,869],{"id":220,"depth":255,"text":221},{"id":350,"depth":255,"text":351},{"id":633,"depth":255,"text":634},{"id":677,"depth":255,"text":678},{"id":688,"depth":255,"text":689},{"id":774,"depth":255,"text":775},"Get a working blog at /blog without writing controllers — opt in via config flags.","md",null,{},{"icon":24},{"title":21,"description":870},"T4QviloBXI04qhNbKyLgolvM4D-5GZrFFv7c_TcMPDw",[878,880],{"title":16,"path":17,"stem":18,"description":879,"icon":19,"children":-1},"Build your own blog frontend using the package's Blade components.",{"title":33,"path":34,"stem":35,"description":881,"icon":36,"children":-1},"All available Blade components for building your blog frontend.",1778325338216]