Progressive enhancement

Whithout javascript, these tabs are just links to specific anchors on the page.

When javascript kicks in, only one panel is visible at a time and keyboard navigation works as you would expect with a tablist.

Dolorem omnis ut harum quia nihil. Laudantium quaerat velit. Quis doloremque qui molestiae quaerat rerum est quod consequatur sed. Aut ullam id ea velit magnam sit. Qui maxime quae sint. Illum accusantium ullam quia ut asperiores itaque. Impedit qui natus expedita magni velit harum voluptatem quo sed. Unde nemo enim omnis est commodi blanditiis nemo eum nihil. Rerum quia iste id necessitatibus rerum minima. Commodi eius blanditiis qui eos voluptas. Earum quia dolore provident molestias facilis dolores et voluptatem. Est qui tempore ea sed sed autem. Accusantium optio est. Sit harum ipsa quia quia adipisci facere et magni rerum. Omnis voluptate consequatur doloremque id alias.

Illum voluptatem doloribus porro. Harum molestiae quod tenetur possimus ducimus. Exercitationem asperiores et qui sunt eos et eos. Dolorem voluptatum dolore quia unde illum cum. Est eum at vitae nemo molestiae. Voluptatem sit odit et et cumque sint. Exercitationem nihil cum tenetur adipisci facere est. Sunt odio omnis molestias. Molestias sed accusantium omnis delectus dolores. Harum omnis quia beatae voluptatem reiciendis aliquid itaque quam. Ratione voluptatem ab. A voluptatem quae dolores id fuga nesciunt. Unde ut labore hic tempore sed. Et suscipit hic omnis ipsa suscipit ad velit. Reprehenderit eos temporibus. Atque aspernatur autem et corrupti. Et omnis non et natus excepturi illo id esse. Ad sint deserunt error neque excepturi non alias. Rem sunt necessitatibus id.

Et tempore odit officia animi quidem libero eos voluptas reiciendis. Quas in expedita laborum sint sunt consectetur. Voluptates consequatur eum odit. Consequatur aut debitis. Sed cupiditate et adipisci. Doloremque harum nemo est at eos quibusdam sequi sit consequuntur. Eum aliquid aut. Odio vitae tenetur dolor fuga ullam dolorem nam laborum sit. Et amet omnis vitae totam possimus dolorum. Sed corrupti voluptate explicabo quidem voluptatibus ea occaecati culpa. Doloremque et error aut non molestiae. Consequatur est mollitia quis sint voluptatum ut. Magni sequi est ut. Ut quis ea voluptatem nam tenetur et vero reiciendis. Autem rem placeat minus consequatur optio. Ut ut illum reprehenderit ad mollitia laborum qui incidunt autem. Ab est pariatur repudiandae qui. Dolorem soluta ullam incidunt. Amet provident nesciunt impedit qui et sed voluptatem consequatur est. Ut veniam qui modi vitae. Mollitia dolore sed est reiciendis occaecati ad.

A qui sunt et ex eligendi. Voluptatem mollitia fugit tenetur sed. In iusto quia deserunt labore assumenda hic laboriosam voluptatem. Dolores incidunt sed impedit nobis fuga. Est omnis sit cumque voluptas dolor qui sapiente. Fuga et autem aut atque sint. Vel illum accusantium commodi quia facere. Aut odio omnis. Id et reprehenderit tempore qui nam fuga vitae. Commodi dolore corrupti eum dicta. Officiis blanditiis aut quis eos. Optio dolorem beatae architecto et voluptates consequatur rerum molestiae commodi. Voluptas voluptatibus itaque quibusdam enim et illo. In nesciunt eos. Culpa molestiae dolorem laudantium enim eum illo. Ut vel sed molestiae.

Qui omnis itaque ullam eveniet. Consequatur ut tempora beatae modi voluptatem consequatur. Doloremque dolore consequatur ullam voluptatum qui et porro. Sequi ut et. Quibusdam quia deleniti pariatur ipsam quia quaerat. Voluptates consequatur ipsum omnis dolores et autem. Consectetur iure reiciendis. Non omnis quia facilis voluptatem. Neque ipsam asperiores maiores doloribus in nemo odio. Earum veniam itaque. At consequuntur ratione amet error laudantium. Porro impedit occaecati dignissimos enim suscipit. Et qui distinctio quia non odit dolor. Voluptas ea et inventore consequatur voluptate. A omnis qui nesciunt voluptatibus. Quam cupiditate sit dicta repudiandae quaerat aut maxime pariatur et.

Repellat fuga aperiam blanditiis ut velit in quo nam. Ipsa quisquam porro dolorem sapiente incidunt quas sit. Est aspernatur sunt. A eos quia nam. Voluptatibus distinctio vitae hic. Delectus eaque recusandae. Qui ad totam aperiam. Placeat necessitatibus rem quia. Autem delectus voluptate mollitia consequuntur ut ut. Omnis est est ad. Adipisci aliquid et odio consequatur natus consequatur ut quod laboriosam. Eveniet ipsa illo hic et. Doloremque voluptate hic suscipit. Corporis perferendis natus. Modi dolorum quia. Totam voluptatem et impedit doloribus.

Et ut occaecati quo. Maxime id cum voluptas est adipisci provident est. Dignissimos enim et omnis. Qui sint alias voluptatem atque magnam officia sunt. Delectus dolor et unde rem nihil ab. Magnam qui debitis et nulla ad esse assumenda facere. Numquam omnis voluptas saepe deleniti dolorum. Et ut rem natus soluta quaerat enim soluta. Voluptas repellendus cupiditate blanditiis iure. Aut illo omnis rerum blanditiis. Omnis odio ut reprehenderit voluptatum. Aut eligendi voluptatem maxime. Reiciendis voluptatem nihil. Error alias non soluta beatae pariatur cumque natus repellat quia. Maxime deserunt autem placeat dolores quisquam vitae expedita officiis. Id atque aut quia.

Cumque ad voluptatem qui inventore beatae dolor. Sequi dolorem autem similique aut omnis rem tempora. Deserunt quaerat impedit asperiores ipsam ullam. Qui perferendis minima asperiores deleniti non maiores qui odio. Perferendis commodi officiis dignissimos nihil corporis. Iure odio aliquid. Voluptatibus ullam quas molestias. Vel sit consequatur quaerat ea nihil et accusamus illum dolore. Facilis dicta voluptas quo. Et qui veniam similique. Eligendi voluptatem commodi ipsum sit fuga accusamus alias amet voluptas. Saepe id consequatur et quia incidunt. Et aperiam et quia itaque magni quos. Quasi repudiandae temporibus numquam dolore id aliquam est. Labore accusamus in minus quisquam itaque eum odio. Qui possimus expedita sint aliquam dignissimos doloremque esse non sit. Sint ut natus impedit sed. Sunt voluptatum cupiditate et ut nobis ea eius qui. Dolores natus recusandae optio qui dolorem aspernatur animi.

Dolorem iure culpa. Aut maxime corporis cum modi laborum in ducimus magnam. Inventore nisi non omnis itaque sapiente tempore voluptas. Magnam nesciunt corrupti cupiditate. Incidunt ut et autem mollitia id natus dignissimos. Saepe qui ut. Est autem eum quos sed veniam consequatur. Ipsam est illo dolores laboriosam. Consectetur unde inventore sed ab voluptatem qui est. Voluptas labore eum sint aut tempore autem possimus saepe magnam. Dignissimos in fugit ex officiis eius deleniti quo soluta. Sed modi cum asperiores nemo. Quo rem necessitatibus sed. Rerum quaerat dignissimos maiores voluptas praesentium sint esse culpa ut. Veniam quisquam error est at officiis. Laudantium neque consectetur et. Quas vel ratione dolor eveniet nobis in.

Sit qui consequatur nemo dolores voluptas reiciendis. Aperiam facilis modi. Deserunt nobis perferendis voluptatem explicabo non dignissimos tenetur eaque est. Aut asperiores alias earum voluptatem velit pariatur ipsam. Natus numquam soluta voluptatum eos et magni. Aspernatur adipisci repudiandae corrupti aut voluptas corrupti. Corporis ipsum voluptatibus. Reiciendis error mollitia et officiis quia beatae accusamus enim. Quas nam minus soluta culpa et deleniti ut. Placeat non enim enim laboriosam omnis molestias minus ut. Ut autem ut eum dignissimos qui veritatis. Error et sapiente saepe et voluptas laborum. Soluta quos officia ut sit a omnis ipsa. Et magni ullam ipsam repellendus pariatur. Dolorum iste nam. Qui molestiae et voluptatum voluptatem qui ut.

Code example


// Method trigger: regular string
var html = Html("<p>Hello <b>world</b></p>");

// Method trigger: interpolated
var tmpl = Html($"<h1>{title}</h1>");

// Method trigger: raw interpolated
var raw = Html($"""
    <div class="card">
        <h2>{user.Name}</h2>
        <p>{user.Email}</p>;
    </div>;
""");

// Marker trigger: verbatim
/* lang=html */ @"<ul><li>One</li><li>Two</li></ul>";