diff --git a/.vscode/settings.json b/.vscode/settings.json index c669d342..6e19d926 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,11 +20,8 @@ "yavsc", "Yavsc" ], - "cSpell.dictionaries": [ - "fr" - ], "cSpell.reportUnknownWords": true, - "cSpell.language": "fr,fr-FR,en,en-GB", + "cSpell.language": "fr,en", "chat.tools.terminal.autoApprove": { "dotnet test": true }, diff --git a/doc/Architecture.md b/doc/Architecture.md new file mode 100644 index 00000000..3eed419c --- /dev/null +++ b/doc/Architecture.md @@ -0,0 +1,124 @@ +# Architecture de Yavsc + +## Vision générale + +Yavsc est une plateforme de mise en relation client/fournisseur, +spécialisable par domaine d'activité, avec une origine musicale. + +Elle gère des **devis** (pas de facturation directe), et s'intègre +dans des workflows collaboratifs pouvant aboutir à des livrables +sous licence libre. + +--- + +## Workflow de mise en relation multi-parties + +### Initiateur + +Le projet peut être initié par n'importe quelle partie : +- Un **client** (particulier ou pro) qui exprime un besoin +- Un **fournisseur** qui propose une offre ou monte un collectif +- Un **tiers coordinateur** qui orchestre sans être client ni prestataire + +### Rôles + +| Rôle | Type de compte | Description | +|---------------|--------------------|-----------------------------------------------------------| +| Client | Pro ou particulier | Exprime le besoin, valide les devis, co-signe la licence | +| Fournisseur | Pro | Répond aux besoins, peut sous-traiter | +| Coordinateur | Pro ou particulier | Orchestre le projet sans relation de facturation directe | + +### Sous-traitance + +Un fournisseur peut faire appel à d'autres fournisseurs, +**avec accord explicite du client**. Chaque sous-traitant : +- Est visible dans le projet +- Co-signe l'accord de licence +- Peut recevoir un devis distinct + +### B2B / B2C + +La distinction est portée par le **type de compte** : +- Compte **pro** : SIRET, TVA, facturation professionnelle +- Compte **particulier** : usage personnel, sans obligations fiscales pro + +Un projet peut mélanger les deux (ex: un particulier client, +plusieurs prestataires pro) — Yavsc n'impose pas d'homogénéité. + +### États d'un projet + +``` +Initié → En recherche de parties → Devis en cours + → Accord de licence signé → En production + → Livré → Publié (si licence libre) +``` + +### Contrainte clé + +L'accord de licence est établi **avant** tout début de production, +signé (ou validé) par toutes les parties : client, fournisseurs, +et sous-traitants éventuels. + +--- + +## Domaine musical — Titres collaboratifs + +### Objectif + +Permettre la production collaborative de titres musicaux sous licence +libre, à partir de la mise en relation assurée par Yavsc. + +### Formats supportés + +- Audio (ex: WAV, FLAC, MP3) +- Partition (ex: MusicXML, LilyPond, PDF) +- MIDI + +### Flux de production + +1. Un client exprime un besoin musical +2. Des prestataires répondent avec des devis +3. Un **consensus est établi en amont** entre le client et les + contributeurs sur la licence du livrable final +4. La collaboration produit les fichiers +5. Le titre est publié sous la licence choisie + +--- + +## Licences + +### Modèle `LicenceModele` + +Géré par l'administration Yavsc. Chaque modèle porte : + +- `EstLibre` (bool) — détermine le badge affiché sur le projet +- Les conditions : attribution, partage à l'identique, usage commercial, + modification +- Une URL vers le texte officiel de la licence + +### Seed initial + +Licences Creative Commons préchargées : CC0, CC BY, CC BY-SA, CC BY-ND, +CC BY-NC, CC BY-NC-SA, CC BY-NC-ND (toutes en version 4.0) + ODbL 1.0. + +### Badge projet + +Rendu CSS/HTML — vert si `EstLibre`, orange sinon. + +--- + +## Stack technique + +- **Backend** : ASP.NET Core, C# +- **ORM** : Entity Framework Core (migrations générées) +- **Base de données** : PostgreSQL (provider Npgsql) +- **Frontend** : Razor views + +--- + +## À documenter ensuite + +- Modèle `ProjetMusical` +- Gestion des fichiers (audio, partition, MIDI) +- Workflow de validation de licence par l'administration + diff --git a/src/Yavsc.Abstract/domains/musical/LicenceModele.cs b/src/Yavsc.Abstract/domains/musical/LicenceModele.cs new file mode 100644 index 00000000..b59d95ee --- /dev/null +++ b/src/Yavsc.Abstract/domains/musical/LicenceModele.cs @@ -0,0 +1,15 @@ +namespace Yavsc.Domains.Musical; +public class LicenceTemplate +{ + public long Id { get; set; } + public string Nom { get; set; } + public string Texte { get; set; } // ou Uri vers le texte officiel + public bool EstLibre { get; set; } + public bool PermetUsageCommercial { get; set; } + public bool PermetModification { get; set; } + public bool ExigePartageAIdentique { get; set; } // ShareAlike + public bool ExigeAttribution { get; set; } // BY + public bool AdminValidated { get; set; } + public DateTimeOffset DateValidation { get; set; } + public string AdminValidateurId { get; set; } // FK vers ApplicationUser +} diff --git a/src/Yavsc.Abstract/domains/musical/LicenceModelesSeed.cs b/src/Yavsc.Abstract/domains/musical/LicenceModelesSeed.cs new file mode 100644 index 00000000..3ab450ca --- /dev/null +++ b/src/Yavsc.Abstract/domains/musical/LicenceModelesSeed.cs @@ -0,0 +1,43 @@ +namespace Yavsc.Domains.Musical; + +public static class LicenceModelesSeed +{ + public static IEnumerable GetSeedData() => new[] + { + new LicenceTemplate { + Id = 1, Nom = "CC0 1.0", IsFreeAndOpen = true, + PermetUsageCommercial = true, PermetModification = true, + ExigeAttribution = false, ExigePartageAIdentique = false, + Texte = "https://creativecommons.org/publicdomain/zero/1.0/", + AdminValidated = true + }, + new LicenceTemplate { + Id = 2, Nom = "CC BY 4.0", IsFreeAndOpen = true, + PermetUsageCommercial = true, PermetModification = true, + ExigeAttribution = true, ExigePartageAIdentique = false, + Texte = "https://creativecommons.org/licenses/by/4.0/", + AdminValidated = true + }, + new LicenceTemplate { + Id = 3, Nom = "CC BY-SA 4.0", IsFreeAndOpen = true, + PermetUsageCommercial = true, PermetModification = true, + ExigeAttribution = true, ExigePartageAIdentique = true, + Texte = "https://creativecommons.org/licenses/by-sa/4.0/", + AdminValidated = true + }, + new LicenceTemplate { + Id = 4, Nom = "CC BY-NC 4.0", IsFreeAndOpen = false, + PermetUsageCommercial = false, PermetModification = true, + ExigeAttribution = true, ExigePartageAIdentique = false, + Texte = "https://creativecommons.org/licenses/by-nc/4.0/", + AdminValidated = true + }, + new LicenceTemplate { + Id = 5, Nom = "CC BY-NC-SA 4.0", IsFreeAndOpen = false, + PermetUsageCommercial = false, PermetModification = true, + ExigeAttribution = true, ExigePartageAIdentique = true, + Texte = "https://creativecommons.org/licenses/by-nc-sa/4.0/", + AdminValidated = true + }, + }; +} \ No newline at end of file diff --git a/src/Yavsc.Abstract/domains/musical/ProjetMusical.cs b/src/Yavsc.Abstract/domains/musical/ProjetMusical.cs new file mode 100644 index 00000000..964b6660 --- /dev/null +++ b/src/Yavsc.Abstract/domains/musical/ProjetMusical.cs @@ -0,0 +1,10 @@ +namespace Yavsc.Domains.Musical; + +public class ProjetMusical +{ + public long Id { get; set; } + public string Titre { get; set; } + public long LicenceModeleId { get; set; } + public LicenceTemplate Licence { get; set; } + // ... contributeurs, fichiers, devis liés +} \ No newline at end of file diff --git a/src/Yavsc.Org/Views/Shared/DisplayTemplates/ProjetMusical.cshtml b/src/Yavsc.Org/Views/Shared/DisplayTemplates/ProjetMusical.cshtml new file mode 100644 index 00000000..21c2c8cb --- /dev/null +++ b/src/Yavsc.Org/Views/Shared/DisplayTemplates/ProjetMusical.cshtml @@ -0,0 +1,14 @@ +@model Yavsc.Domains.Musical.ProjetMusical + +@if (Model.Licence.EstLibre) +{ + + 🎵 Libre · @Model.Licence.Nom + +} +else +{ + + 🔒 @Model.Licence.Nom + +} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html deleted file mode 100644 index 1bd11d35..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/album-rtl/index.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - - مثال الألبوم · Bootstrap v5.0 - - - - - - - - - - - - - - -
- - -
- -
- -
-
-
-

مثال الألبوم

-

وصف قصير حول الألبوم أدناه (محتوياته ، ومنشؤه ، وما إلى ذلك). اجعله قصير ولطيف، ولكن ليست قصير جدًا حتى لا يتخطى الناس هذا الألبوم تمامًا.

-

- الدعوة الرئيسية للعمل - عمل ثانوي -

-
-
-
- -
-
- -
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
- -
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
- -
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
- Placeholderصورة مصغرة - -
-

هذه بطاقة أوسع مع نص داعم أدناه كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-
-
- - -
- 9 دقائق -
-
-
-
-
-
-
- -
- - - - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/album/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/album/index.html deleted file mode 100644 index bf6f0cb5..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/album/index.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - - Album example · Bootstrap v5.0 - - - - - - - - - - - - - - -
- - -
- -
- -
-
-
-

Album example

-

Something short and leading about the collection below—its contents, the creator, etc. Make it short and sweet, but not too short so folks don’t simply skip over it entirely.

-

- Main call to action - Secondary action -

-
-
-
- -
-
- -
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
- -
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
- -
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
- PlaceholderThumbnail - -
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
- - -
- 9 mins -
-
-
-
-
-
-
- -
- - - - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg deleted file mode 100644 index f73d7ca2..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg deleted file mode 100644 index f0189652..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/brand/bootstrap-logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css deleted file mode 100644 index edfbbb03..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8";/*! - * Bootstrap v5.0.2 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + (.5rem + 2px));padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + (1rem + 2px));padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + (.75rem + 2px))}textarea.form-control-sm{min-height:calc(1.5em + (.5rem + 2px))}textarea.form-control-lg{min-height:calc(1.5em + (1rem + 2px))}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1050;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#0d6efd!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#0dcaf0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#f8f9fa!important}.text-dark{color:#212529!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.bg-primary{background-color:#0d6efd!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#0dcaf0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#f8f9fa!important}.bg-dark{background-color:#212529!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map deleted file mode 100644 index 3fe6cda5..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/assets/dist/css/bootstrap.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.0.2 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` -

- - - - -
- - - - - - - -
- - -
-
- Placeholder140x140 - -

عنوان

-

تذكر دائماً أن الحاسوب لا يمتلك ذكاءً، ولكنه يكتسب الذكاء الاصطناعي من خلال ثلاثة عناصر وظيفية رئيسة، هي: القدرة على التحليل، والقدرة على التأليف، والاستدلال المنطقي.

-

عرض التفاصيل

-
-
- Placeholder140x140 - -

عنوان آخر

-

إذا أردنا استخدام الحاسوب الذكي في معالجة اللغة العربية فإننا نجد أنفسنا أمام تحدٍّ كبير، خاصة وأن لغتنا تمتاز بتماسك منظوماتها وتداخلها، ومع ذلك فإن الذكاء الاصطناعي يمكّننا من الحصول على أربعة أنواع من المعالجة، هي: المعالجة الصوتية، والمعالجة الصرفية، والمعالجة النحوية، والمعالجة الدلالية.

-

عرض التفاصيل

-
-
- Placeholder140x140 - -

عنوان ثالث لتأكيد المعلومة

-

بفضل بحوث الذكاء الاصطناعي وتقنياته استطعنا الانتقال من مرحلة التعامل مع الفيزيائي إلى مرحلة التعامل مع المنطقي، وقد انعكس هذا الانتقال بصورة إيجابية على الكيفية التي تتعامل بها الشعوب مع لغاتها الحيَّة، وهذا يعني أنه يجب أن ينعكس بصورة إيجابية على كيفية تعاملنا مع لغتنا العربية.

-

عرض التفاصيل

-
-
- - - - -
- -
-
-

العنوان الأول المميز. سيذهل عقلك.

-

وجه الإنسان هو جزء معقَّد ومتميِّز للغاية من جسمه. وفي الواقع، إنه أحد أكثر أنظمة الإشارات المتاحة تعقيداً لدينا؛ فهو يتضمَّن أكثر من 40 عضلة مستقلة هيكلياً ووظيفياً، بحيث يمكن تشغيل كل منها بشكل مستقل عن البعض الآخر؛ وتشكِّل أحد أقوى مؤشرات العواطف.

-
-
- Placeholder500x500 - -
-
- -
- -
-
-

أوه نعم، هذا جيد. شاهد بنفسك.

-

عندما نضحك أو نبكي، فإننا نعرض عواطفنا، مما يسمح للآخرين بإلقاء نظرة خاطفة على أذهاننا أثناء "قراءة" وجوهنا بناءً على التغييرات في مكوّنات الوجه الرئيسة، مثل: العينين والحاجبين والجفنين والأنف والشفتين.

-
-
- Placeholder500x500 - -
-
- -
- -
-
-

وأخيرًا، هذا. كش ملك.

-

إن جميع العضلات في أجسامنا مدعمة بالأعصاب المتصلة من كافة أنحاء الجسم بالنخاع الشوكي والدماغ. وهذا الاتصال العصبي هو ثنائي الاتجاه، أي إن العصب يتسبَّب في تقلصات العضلات بناءً على إشارات الدماغ، ويقوم في الوقت نفسه بإرسال معلومات عن حالة العضلات إلى الدماغ

-
-
- Placeholder500x500 - -
-
- -
- - - -
- - - - -
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css deleted file mode 100644 index f91faec7..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.css +++ /dev/null @@ -1,93 +0,0 @@ -/* GLOBAL STYLES --------------------------------------------------- */ -/* Padding below the footer and lighter body text */ - -body { - padding-top: 3rem; - padding-bottom: 3rem; - color: #5a5a5a; -} - - -/* CUSTOMIZE THE CAROUSEL --------------------------------------------------- */ - -/* Carousel base class */ -.carousel { - margin-bottom: 4rem; -} -/* Since positioning the image, we need to help out the caption */ -.carousel-caption { - bottom: 3rem; - z-index: 10; -} - -/* Declare heights because of positioning of img element */ -.carousel-item { - height: 32rem; -} -.carousel-item > img { - position: absolute; - top: 0; - left: 0; - min-width: 100%; - height: 32rem; -} - - -/* MARKETING CONTENT --------------------------------------------------- */ - -/* Center align the text within the three columns below the carousel */ -.marketing .col-lg-4 { - margin-bottom: 1.5rem; - text-align: center; -} -.marketing h2 { - font-weight: 400; -} -/* rtl:begin:ignore */ -.marketing .col-lg-4 p { - margin-right: .75rem; - margin-left: .75rem; -} -/* rtl:end:ignore */ - - -/* Featurettes -------------------------- */ - -.featurette-divider { - margin: 5rem 0; /* Space out the Bootstrap
more */ -} - -/* Thin out the marketing headings */ -.featurette-heading { - font-weight: 300; - line-height: 1; - /* rtl:remove */ - letter-spacing: -.05rem; -} - - -/* RESPONSIVE CSS --------------------------------------------------- */ - -@media (min-width: 40em) { - /* Bump up size of carousel content */ - .carousel-caption p { - margin-bottom: 1.25rem; - font-size: 1.25rem; - line-height: 1.4; - } - - .featurette-heading { - font-size: 50px; - } -} - -@media (min-width: 62em) { - .featurette-heading { - margin-top: 7rem; - } -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css deleted file mode 100644 index 853640b9..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/carousel.rtl.css +++ /dev/null @@ -1,89 +0,0 @@ -/* GLOBAL STYLES --------------------------------------------------- */ -/* Padding below the footer and lighter body text */ - -body { - padding-top: 3rem; - padding-bottom: 3rem; - color: #5a5a5a; -} - - -/* CUSTOMIZE THE CAROUSEL --------------------------------------------------- */ - -/* Carousel base class */ -.carousel { - margin-bottom: 4rem; -} -/* Since positioning the image, we need to help out the caption */ -.carousel-caption { - bottom: 3rem; - z-index: 10; -} - -/* Declare heights because of positioning of img element */ -.carousel-item { - height: 32rem; -} -.carousel-item > img { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - height: 32rem; -} - - -/* MARKETING CONTENT --------------------------------------------------- */ - -/* Center align the text within the three columns below the carousel */ -.marketing .col-lg-4 { - margin-bottom: 1.5rem; - text-align: center; -} -.marketing h2 { - font-weight: 400; -} -.marketing .col-lg-4 p { - margin-right: .75rem; - margin-left: .75rem; -} - - -/* Featurettes -------------------------- */ - -.featurette-divider { - margin: 5rem 0; /* Space out the Bootstrap
more */ -} - -/* Thin out the marketing headings */ -.featurette-heading { - font-weight: 300; - line-height: 1; -} - - -/* RESPONSIVE CSS --------------------------------------------------- */ - -@media (min-width: 40em) { - /* Bump up size of carousel content */ - .carousel-caption p { - margin-bottom: 1.25rem; - font-size: 1.25rem; - line-height: 1.4; - } - - .featurette-heading { - font-size: 50px; - } -} - -@media (min-width: 62em) { - .featurette-heading { - margin-top: 7rem; - } -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/index.html deleted file mode 100644 index bfdc5fb5..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/carousel/index.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - - - Carousel Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
- -
- -
- - - - - - - -
- - -
-
- Placeholder140x140 - -

Heading

-

Some representative placeholder content for the three columns of text below the carousel. This is the first column.

-

View details »

-
-
- Placeholder140x140 - -

Heading

-

Another exciting bit of representative placeholder content. This time, we've moved on to the second column.

-

View details »

-
-
- Placeholder140x140 - -

Heading

-

And lastly this, the third column of representative placeholder content.

-

View details »

-
-
- - - - -
- -
-
-

First featurette heading. It’ll blow your mind.

-

Some great placeholder content for the first featurette here. Imagine some exciting prose here.

-
-
- Placeholder500x500 - -
-
- -
- -
-
-

Oh yeah, it’s that good. See for yourself.

-

Another featurette? Of course. More placeholder content here to give you an idea of how this layout would work with some actual real-world content in place.

-
-
- Placeholder500x500 - -
-
- -
- -
-
-

And lastly, this one. Checkmate.

-

And yes, this is the last block of representative placeholder content. Again, not really intended to be actually read, simply here to give you a better view of what this would look like with some actual content. Your content.

-
-
- Placeholder500x500 - -
-
- -
- - - -
- - - - -
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html deleted file mode 100644 index 82f50091..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet-rtl/index.html +++ /dev/null @@ -1,1760 +0,0 @@ - - - - - - - - - ورقة الغش · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
-

- Bootstrap - ورقة الغش -

- جدول بيانات LTR -
-
- -
-
-

المحتوى

- -
-
-

النصوص

- دليل الإستخدام -
- -
-
-

العرض 1

-

العرض 2

-

العرض 3

-

العرض 4

-

العرض 5

-

العرض 6

-
- -
-

عنوان 1

-

عنوان 2

-

عنوان 3

-

عنوان 4

-

عنوان 5

-

عنوان 6

-
- -
-

- هذه قطعة إملائية متميزة، فهي مصممة لتكون بارزة من بين القطع الإملائية الأخرى. -

-
- -
-

يمكنك استخدام تصنيف mark لتحديد نص.

-

من المفترض أن يتم التعامل مع هذا السطر كنص محذوف.

-

من المفترض أن يتم التعامل مع هذا السطر على أنه لم يعد دقيقًا.

-

من المفترض أن يتم التعامل مع هذا السطر كإضافة إلى المستند.

-

سيتم عرض النص في هذا السطر كما وتحته خط.

-

من المفترض أن يتم التعامل مع هذا السطر على أنه يحوي تفاصيل صغيرة.

-

هذا السطر يحوي نص عريض.

-

هذا السطر يحوي نص مائل.

-
- -
-
-

إقتباس مبهر، موضوع في عنصر blockquote

-
شخص مشهور في عنوان المصدر
-
-
- -
-
    -
  • هذه قائمة عناصر.
  • -
  • بالرغم من أنها مصممة كي لا تظهر كذلك.
  • -
  • إلا أنها مجهزة كـ قائمة خلف الكواليس
  • -
  • هذا التصميم ينطبق فقد على القائمة الرئيسية
  • -
  • القوائم الفرعية -
      -
    • لا تتأثر بهذا التصميم
    • -
    • فهي تظهر عليها علامات الترقيم
    • -
    • وتحتوي على مساحة فارغة بجوارها
    • -
    -
  • -
  • قد يكون هذا التصميم مفيدًا في بعض الأحيان.
  • -
-
- -
-
    -
  • هذا عنصر في قائمة.
  • -
  • وهذا أيضًا.
  • -
  • لكنهم يظهرون متجاورين.
  • -
-
-
-
-
-
-

الصور

- دليل الإستخدام -
- -
-
- Placeholderصورة مستجيبة - -
- -
- صورة عنصر نائب مربع عام مع حدود بيضاء حولها ، مما يجعلها تشبه صورة تم التقاطها بكاميرا فورية قديمة200x200 - -
-
-
-
-
-

الجداول

- دليل الإستخدام -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#الاسم الاولالكنيةالاسم المستعار
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#الاسم الاولالكنيةالاسم المستعار
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Classعنوانعنوان
Defaultخليةخلية
Primaryخليةخلية
Secondaryخليةخلية
Successخليةخلية
Dangerخليةخلية
Warningخليةخلية
Infoخليةخلية
Lightخليةخلية
Darkخليةخلية
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#الاسم الاولالكنيةالاسم المستعار
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
-
-
-
-
-

النماذج البيانية

- دليل الإستخدام -
- -
-
-
- Placeholder400x300 - -
شرح للصورة أعلاه.
-
-
-
-
-
- -
-

النماذج

- -
-
-

نظرة عامة

- دليل الإستخدام -
- -
-
-
-
- - -
لن نقوم بمشاركة بريدك الإلكتروني مع أي شخص آخر.
-
-
- - -
-
- - -
-
- أزرار الاختيار الأحادي -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-
-
-
-
-
-

الحقول المعطلة

- دليل الإستخدام -
- -
-
-
-
-
- - -
-
- - -
-
-
- - -
-
-
- أزرار اختيار أحادي معطلين -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-
-
-
-
-
-
-

الأحجام

- دليل الإستخدام -
- -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-

مجموعة الإدخال

- دليل الإستخدام -
- -
-
-
- أنا اسمي - -
-
- - وغيرها -
- -
- - https://example.com/users/ -
-
- .00 - - $ -
-
- مع textarea - -
-
-
-
-
-
-

الحقول ذوي العناوين العائمة

- دليل الإستخدام -
- -
-
-
-
- - -
-
- - -
-
-
-
-
-
-
-

التحقق

- دليل الإستخدام -
- -
-
-
-
- - -
- يبدو صحيحًا! -
-
-
- - -
- يبدو صحيحًا! -
-
-
- -
- - @ -
- يرجى اختيار اسم مستخدم. -
-
-
-
- - -
- يرجى إدخال مدينة صحيحة. -
-
-
- - -
- يرجى اختيار ولاية صحيحة. -
-
-
- - -
- يرجى إدخال رمز بريدي صحيح. -
-
-
-
- - -
- تجب الموافقة قبل إرسال النموذج. -
-
-
-
- -
-
-
-
-
-
- -
-

العناصر

- -
-
-

المطوية

- دليل الإستخدام -
- -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الأول. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الثاني. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الثالث. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootsrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-
-
-
-
-
-

الإنذارات

- دليل الإستخدام -
- -
-
- - - - - - - - - -
- -
- -
-
-
-
-
-

الشارة

- دليل الإستخدام -
- -
-
-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-
- -
- - Primary - Secondary - Success - Danger - Warning - Info - Light - Dark -
-
-
- -
-
-

الأزرار

- دليل الإستخدام -
- -
-
- - - - - - - - - - - -
- -
- - - - - - - - - -
- -
- - - -
-
-
- -
-
-

البطاقة

- دليل الإستخدام -
- -
-
-
-
-
- Placeholderغطاء الصورة - -
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

- اذهب لمكان ما -
-
-
-
-
-
- متميز -
-
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

- اذهب لمكان ما -
- -
-
-
-
-
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

-
-
    -
  • عنصر
  • -
  • عنصر آخر
  • -
  • عنصر ثالث
  • -
- -
-
-
-
-
-
- Placeholderصورة - -
-
-
-
عنوان البطاقة
-

هذه بطاقة أعرض مع نص داعم تحتها كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-

آخر تحديث منذ 3 دقائق

-
-
-
-
-
-
-
-
-
- - -
-
-

مجموعة العناصر

- دليل الإستخدام -
- - -
- - - - -
-
-

الصناديق المنبثقة

- دليل الإستخدام -
- -
-
- -
- -
- - - - -
-
-
-
-
-

شريط التقدم

- دليل الإستخدام -
- -
-
-
-
0%
-
-
-
25%
-
-
-
50%
-
-
-
75%
-
-
-
100%
-
-
- -
-
-
-
-
-
-
-
-
-
-

المخطوطة

- دليل الإستخدام -
- -
-
- -
-

@fat

-

محتوى لتوضيح كيف تعمل المخطوطة. ببساطة، المخطوطة عبارة عن منشور طويل يحتوي على عدة أقسام، ولديه شريط تنقل يسهل الوصول إلى هذه الأقسام الفرعية.

-

@mdo

-

بصرف النظر عن تحسيننا جدوى المكيّفات أو عدم تحسينها، فإن الطلب على الطاقة سيزداد. وطبقاً لما جاء في مقالة معهد ماساشوستس للتكنولوجيا، السالف ذكره، ثمَّة أمر يجب عدم إغفاله، وهو كيف أن هذا الطلب سيضغط على نظم توفير الطاقة الحالية. إذ لا بد من إعادة تأهيل كل شبكات الكهرباء، وتوسيعها لتلبية طلب الطاقة في زمن الذروة، خلال موجات الحرارة المتزايدة. فحين يكون الحر شديداً يجنح الناس إلى البقاء في الداخل، وإلى زيادة تشغيل المكيّفات، سعياً إلى جو لطيف وهم يستخدمون أدوات وأجهزة مختلفة أخرى.

-

واحد

-

وكل هذه الأمور المتزامنة من تشغيل الأجهزة، يزيد الضغط على شبكات الطاقة، كما أسلفنا. لكن مجرد زيادة سعة الشبكة ليس كافياً. إذ لا بد من تطوير الشبكات الذكية التي تستخدم الجسّاسات، ونظم المراقبة، والبرامج الإلكترونية، لتحديد متى يكون الشاغلون في المبنى، ومتى يكون ثمَّة حاجة إلى الطاقة، ومتى تكون الحرارة منخفضة، وبذلك يخرج الناس، فلا يستخدمون كثيراً من الكهرباء.

-

اثنان

-

مع الأسف، كل هذه الحلول المبتكرة مكلِّفة، وهذا ما يجعلها عديمة الجدوى في نظر بعض الشركات الخاصة والمواطن المتقشّف. إن بعض الأفراد الواعين بيئياً يبذلون قصارى جهدهم في تقليص استهلاكهم من الطاقة، ويعون جيداً أهمية أجهزة التكييف المجدية والأرفق بالبيئة. ولكن جهات كثيرة لن تتحرّك لمجرد حافز سلامة المناخ ووقف هدر الطاقة، ما دامت لا تحركها حوافز قانونية. وعلى الحكومات أن تُقدِم عند الاهتمام بالتغيّر المناخي، على وضع التشريعات المناسبة. فبالنظم والحوافز والدعم، يمكن دفع الشركات إلى اعتماد الحلول الأجدى في مكاتبها.

-

ثلاثة

-

وكما يتبيّن لنا، من عدد الحلول الملطِّفة للمشكلة، ومن تنوّعها، وهي الحلول التي أسلفنا الحديث عنها، فإن التكنولوجيا التي نحتاج إليها من أجل معالجة هذه التحديات، هي في مدى قدرتنا، لكنها ربما تتطلّب بعض التحسين، ودعماً استثمارياً أكبر!

-

ولا مانع من إضافة محتوى آخر ليس تحت أي قسم معين.

-
-
-
-
-
-
-

الدوائر المتحركة

- دليل الإستخدام -
- -
-
- -
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- -
- -
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
- جار التحميل... -
-
-
-
-
-
-

الإشعارات

- دليل الإستخدام -
- -
-
- -
-
-
-
-
-

التلميحات

- دليل الإستخدام -
- -
-
- - - - - -
-
-
-
-
- - - - - - - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css deleted file mode 100644 index 77aa0f23..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.css +++ /dev/null @@ -1,169 +0,0 @@ -body { - scroll-behavior: smooth; -} - -/** - * Bootstrap "Journal code" icon - * @link https://icons.getbootstrap.com/icons/journal-code/ - */ -.bd-heading a::before { - display: inline-block; - width: 1em; - height: 1em; - margin-right: .25rem; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%25230d6efd' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); - background-size: 1em; -} - -/* stylelint-disable-next-line selector-max-universal */ -.bd-heading + div > * + * { - margin-top: 3rem; -} - -/* Table of contents */ -.bd-aside a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: .3125rem; - color: rgba(0, 0, 0, .65); - text-decoration: none; -} - -.bd-aside a:hover, -.bd-aside a:focus { - color: rgba(0, 0, 0, .85); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .active { - font-weight: 600; - color: rgba(0, 0, 0, .85); -} - -.bd-aside .btn { - padding: .25rem .5rem; - font-weight: 600; - color: rgba(0, 0, 0, .65); - border: 0; -} - -.bd-aside .btn:hover, -.bd-aside .btn:focus { - color: rgba(0, 0, 0, .85); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .btn:focus { - box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); -} - -.bd-aside .btn::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - - /* rtl:raw: - transform: rotate(180deg) translateX(-2px); - */ - transform-origin: .5em 50%; -} - -.bd-aside .btn[aria-expanded="true"]::before { - transform: rotate(90deg)/* rtl:ignore */; -} - - -/* Examples */ -.scrollspy-example { - position: relative; - height: 200px; - margin-top: .5rem; - overflow: auto; -} - -[id="modal"] .bd-example .btn, -[id="buttons"] .bd-example .btn, -[id="tooltips"] .bd-example .btn, -[id="popovers"] .bd-example .btn, -[id="dropdowns"] .bd-example .btn-group, -[id="dropdowns"] .bd-example .dropdown, -[id="dropdowns"] .bd-example .dropup, -[id="dropdowns"] .bd-example .dropend, -[id="dropdowns"] .bd-example .dropstart { - margin: 0 1rem 1rem 0; -} - -/* Layout */ -@media (min-width: 1200px) { - body { - display: grid; - gap: 1rem; - grid-template-columns: 1fr 4fr 1fr; - grid-template-rows: auto; - } - - .bd-header { - position: fixed; - top: 0; - /* rtl:begin:ignore */ - right: 0; - left: 0; - /* rtl:end:ignore */ - z-index: 1030; - grid-column: 1 / span 3; - } - - .bd-aside, - .bd-cheatsheet { - padding-top: 4rem; - } - - /** - * 1. Too bad only Firefox supports subgrids ATM - */ - .bd-cheatsheet, - .bd-cheatsheet section, - .bd-cheatsheet article { - display: inherit; /* 1 */ - gap: inherit; /* 1 */ - grid-template-columns: 1fr 4fr; - grid-column: 1 / span 2; - grid-template-rows: auto; - } - - .bd-aside { - grid-area: 1 / 3; - scroll-margin-top: 4rem; - } - - .bd-cheatsheet section, - .bd-cheatsheet section > h2 { - top: 2rem; - scroll-margin-top: 2rem; - } - - .bd-cheatsheet section > h2::before { - position: absolute; - /* rtl:begin:ignore */ - top: 0; - right: 0; - bottom: -2rem; - left: 0; - /* rtl:end:ignore */ - z-index: -1; - content: ""; - background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1) calc(100% - 3rem), rgba(255, 255, 255, .01)); - } - - .bd-cheatsheet article, - .bd-cheatsheet .bd-heading { - top: 8rem; - scroll-margin-top: 8rem; - } - - .bd-cheatsheet .bd-heading { - z-index: 1; - } -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js deleted file mode 100644 index 0a50258b..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.js +++ /dev/null @@ -1,73 +0,0 @@ -/* global bootstrap: false */ - -(function () { - 'use strict' - - // Tooltip and popover demos - document.querySelectorAll('.tooltip-demo') - .forEach(function (tooltip) { - new bootstrap.Tooltip(tooltip, { - selector: '[data-bs-toggle="tooltip"]' - }) - }) - - document.querySelectorAll('[data-bs-toggle="popover"]') - .forEach(function (popover) { - new bootstrap.Popover(popover) - }) - - document.querySelectorAll('.toast') - .forEach(function (toastNode) { - var toast = new bootstrap.Toast(toastNode, { - autohide: false - }) - - toast.show() - }) - - // Disable empty links and submit buttons - document.querySelectorAll('[href="#"], [type="submit"]') - .forEach(function (link) { - link.addEventListener('click', function (event) { - event.preventDefault() - }) - }) - - function setActiveItem() { - var hash = window.location.hash - - if (hash === '') { - return - } - - var link = document.querySelector('.bd-aside a[href="' + hash + '"]') - - if (!link) { - return - } - - var active = document.querySelector('.bd-aside .active') - var parent = link.parentNode.parentNode.previousElementSibling - - link.classList.add('active') - - if (parent.classList.contains('collapsed')) { - parent.click() - } - - if (!active) { - return - } - - var expanded = active.parentNode.parentNode.previousElementSibling - - active.classList.remove('active') - - if (expanded && parent !== expanded) { - expanded.click() - } - } - - setActiveItem() - window.addEventListener('hashchange', setActiveItem) -})() diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css deleted file mode 100644 index c1a4a1cc..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/cheatsheet.rtl.css +++ /dev/null @@ -1,162 +0,0 @@ -body { - scroll-behavior: smooth; -} - -/** - * Bootstrap "Journal code" icon - * @link https://icons.getbootstrap.com/icons/journal-code/ - */ -.bd-heading a::before { - display: inline-block; - width: 1em; - height: 1em; - margin-left: .25rem; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%25230d6efd' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); - background-size: 1em; -} - -/* stylelint-disable-next-line selector-max-universal */ -.bd-heading + div > * + * { - margin-top: 3rem; -} - -/* Table of contents */ -.bd-aside a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-right: .3125rem; - color: rgba(0, 0, 0, .65); - text-decoration: none; -} - -.bd-aside a:hover, -.bd-aside a:focus { - color: rgba(0, 0, 0, .85); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .active { - font-weight: 600; - color: rgba(0, 0, 0, .85); -} - -.bd-aside .btn { - padding: .25rem .5rem; - font-weight: 600; - color: rgba(0, 0, 0, .65); - border: 0; -} - -.bd-aside .btn:hover, -.bd-aside .btn:focus { - color: rgba(0, 0, 0, .85); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .btn:focus { - box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); -} - -.bd-aside .btn::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - transform: rotate(180deg) translateX(-2px); - transform-origin: .5em 50%; -} - -.bd-aside .btn[aria-expanded="true"]::before { - transform: rotate(90deg); -} - - -/* Examples */ -.scrollspy-example { - position: relative; - height: 200px; - margin-top: .5rem; - overflow: auto; -} - -[id="modal"] .bd-example .btn, -[id="buttons"] .bd-example .btn, -[id="tooltips"] .bd-example .btn, -[id="popovers"] .bd-example .btn, -[id="dropdowns"] .bd-example .btn-group, -[id="dropdowns"] .bd-example .dropdown, -[id="dropdowns"] .bd-example .dropup, -[id="dropdowns"] .bd-example .dropend, -[id="dropdowns"] .bd-example .dropstart { - margin: 0 0 1rem 1rem; -} - -/* Layout */ -@media (min-width: 1200px) { - body { - display: grid; - gap: 1rem; - grid-template-columns: 1fr 4fr 1fr; - grid-template-rows: auto; - } - - .bd-header { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; - grid-column: 1 / span 3; - } - - .bd-aside, - .bd-cheatsheet { - padding-top: 4rem; - } - - /** - * 1. Too bad only Firefox supports subgrids ATM - */ - .bd-cheatsheet, - .bd-cheatsheet section, - .bd-cheatsheet article { - display: inherit; /* 1 */ - gap: inherit; /* 1 */ - grid-template-columns: 1fr 4fr; - grid-column: 1 / span 2; - grid-template-rows: auto; - } - - .bd-aside { - grid-area: 1 / 3; - scroll-margin-top: 4rem; - } - - .bd-cheatsheet section, - .bd-cheatsheet section > h2 { - top: 2rem; - scroll-margin-top: 2rem; - } - - .bd-cheatsheet section > h2::before { - position: absolute; - top: 0; - right: 0; - bottom: -2rem; - left: 0; - z-index: -1; - content: ""; - background-image: linear-gradient(to bottom, rgba(255, 255, 255, 1) calc(100% - 3rem), rgba(255, 255, 255, .01)); - } - - .bd-cheatsheet article, - .bd-cheatsheet .bd-heading { - top: 8rem; - scroll-margin-top: 8rem; - } - - .bd-cheatsheet .bd-heading { - z-index: 1; - } -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html deleted file mode 100644 index efdee2d1..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cheatsheet/index.html +++ /dev/null @@ -1,1745 +0,0 @@ - - - - - - - - - Cheatsheet · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
-

- Bootstrap - Cheatsheet -

- RTL cheatsheet -
-
- -
-
-

Contents

- -
-
-

Typography

- Documentation -
- -
-
-

Display 1

-

Display 2

-

Display 3

-

Display 4

-

Display 5

-

Display 6

-
- -
-

Heading 1

-

Heading 2

-

Heading 3

-

Heading 4

-

Heading 5

-

Heading 6

-
- -
-

- This is a lead paragraph. It stands out from regular paragraphs. -

-
- -
-

You can use the mark tag to highlight text.

-

This line of text is meant to be treated as deleted text.

-

This line of text is meant to be treated as no longer accurate.

-

This line of text is meant to be treated as an addition to the document.

-

This line of text will render as underlined.

-

This line of text is meant to be treated as fine print.

-

This line rendered as bold text.

-

This line rendered as italicized text.

-
- -
-
-

A well-known quote, contained in a blockquote element.

-
Someone famous in Source Title
-
-
- -
-
    -
  • This is a list.
  • -
  • It appears completely unstyled.
  • -
  • Structurally, it's still a list.
  • -
  • However, this style only applies to immediate child elements.
  • -
  • Nested lists: -
      -
    • are unaffected by this style
    • -
    • will still show a bullet
    • -
    • and have appropriate left margin
    • -
    -
  • -
  • This may still come in handy in some situations.
  • -
-
- -
-
    -
  • This is a list item.
  • -
  • And another one.
  • -
  • But they're displayed inline.
  • -
-
-
-
-
-
-

Images

- Documentation -
- -
-
- PlaceholderResponsive image - -
- -
- A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera200x200 - -
-
-
-
-
-

Tables

- Documentation -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassHeadingHeading
DefaultCellCell
PrimaryCellCell
SecondaryCellCell
SuccessCellCell
DangerCellCell
WarningCellCell
InfoCellCell
LightCellCell
DarkCellCell
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#FirstLastHandle
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
-
-
-
-
-

Figures

- Documentation -
- -
-
-
- Placeholder400x300 - -
A caption for the above image.
-
-
-
-
-
- -
-

Forms

- -
-
-

Overview

- Documentation -
- -
-
-
-
- - -
We'll never share your email with anyone else.
-
-
- - -
-
- - -
-
- Radios buttons -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-
-
-
-
-
-

Disabled forms

- Documentation -
- -
-
-
-
-
- - -
-
- - -
-
-
- - -
-
-
- Disabled radios buttons -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
-
-
-
-
-
-
-

Sizing

- Documentation -
- -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
-
-
-
-

Input group

- Documentation -
- -
-
-
- @ - -
-
- - @example.com -
- -
- https://example.com/users/ - -
-
- $ - - .00 -
-
- With textarea - -
-
-
-
-
-
-

Floating labels

- Documentation -
- -
-
-
-
- - -
-
- - -
-
-
-
-
-
-
-

Validation

- Documentation -
- -
-
-
-
- - -
- Looks good! -
-
-
- - -
- Looks good! -
-
-
- -
- @ - -
- Please choose a username. -
-
-
-
- - -
- Please provide a valid city. -
-
-
- - -
- Please select a valid state. -
-
-
- - -
- Please provide a valid zip. -
-
-
-
- - -
- You must agree before submitting. -
-
-
-
- -
-
-
-
-
-
- -
-

Components

- -
-
-

Accordion

- Documentation -
- -
-
-
-
-

- -

-
-
- This is the first item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-
-
-
-
-
-

Alerts

- Documentation -
- -
-
- - - - - - - - - -
- -
- -
-
-
-
-
-

Badge

- Documentation -
- -
-
-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-
- -
- - Primary - Secondary - Success - Danger - Warning - Info - Light - Dark -
-
-
- -
-
-

Buttons

- Documentation -
- -
-
- - - - - - - - - - - -
- -
- - - - - - - - - -
- -
- - - -
-
-
-
-
-

Button group

- Documentation -
- -
-
- -
-
-
-
-
-

Card

- Documentation -
- -
-
-
-
-
- PlaceholderImage cap - -
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
-
-
-
-
-
- Featured -
-
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Go somewhere -
- -
-
-
-
-
-
Card title
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
- -
-
-
-
-
-
- PlaceholderImage - -
-
-
-
Card title
-

This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-

Last updated 3 mins ago

-
-
-
-
-
-
-
-
-
- - -
-
-

List group

- Documentation -
- -
-
-
    -
  • A disabled item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
-
- -
-
    -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • -
-
- - -
-
- - - - -
-
-

Popovers

- Documentation -
- -
-
- -
- -
- - - - -
-
-
-
-
-

Progress

- Documentation -
- -
-
-
-
0%
-
-
-
25%
-
-
-
50%
-
-
-
75%
-
-
-
100%
-
-
- -
-
-
-
-
-
-
-
-
-
-

Scrollspy

- Documentation -
- -
-
- -
-

First heading

-

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-

Second heading

-

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-

Third heading

-

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-

Fourth heading

-

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-

Fifth heading

-

This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

-
-
-
-
-
-
-

Spinners

- Documentation -
- -
-
- -
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- -
- -
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
- Loading... -
-
-
-
-
-
-

Toasts

- Documentation -
- -
-
- -
-
-
-
-
-

Tooltips

- Documentation -
- -
-
- - - - - -
-
-
-
-
- - - - - - - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html deleted file mode 100644 index c74e82ba..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout-rtl/index.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - مثال إتمام الشراء · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
-
- -

نموذج إتمام الشراء

-

فيما يلي مثال على نموذج تم إنشاؤه بالكامل باستخدام عناصر تحكم النموذج في Bootstrap. لكل مجموعة نماذج مطلوبة حالة تحقق يمكن تشغيلها بمحاولة إرسال النموذج دون استكماله.

-
- -
-
-

- عربة التسوق - 3 -

-
    -
  • -
    -
    اسم المنتج
    - وصف مختصر -
    - $12 -
  • -
  • -
    -
    المنتج الثاني
    - وصف مختصر -
    - $8 -
  • -
  • -
    -
    البند الثالث
    - وصف مختصر -
    - $5 -
  • -
  • -
    -
    رمز ترويجي
    - EXAMPLECODE -
    - -$5 -
  • -
  • - مجموع (USD) - $20 -
  • -
- -
-
- - -
-
-
-
-

عنوان الفوترة

-
-
-
- - -
- يرجى إدخال اسم أول صحيح. -
-
- -
- - -
- يرجى إدخال اسم عائلة صحيح. -
-
- -
- -
- @ - -
- اسم المستخدم الخاص بك مطلوب. -
-
-
- -
- - -
- يرجى إدخال عنوان بريد إلكتروني صحيح لتصلكم تحديثات الشحن. -
-
- -
- - -
- يرجى إدخال عنوان الشحن الخاص بك. -
-
- -
- - -
- -
- - -
- يرجى اختيار بلد صحيح. -
-
- -
- - -
- يرجى اختيار اسم منطقة صحيح. -
-
- -
- - -
- الرمز البريدي مطلوب. -
-
-
- -
- -
- - -
- -
- - -
- -
- -

طريقة الدفع

- -
-
- - -
-
- - -
-
- - -
-
- -
-
- - - الاسم الكامل كما هو معروض على البطاقة -
- الاسم على البطاقة مطلوب -
-
- -
- - -
- رقم بطاقة الائتمان مطلوب -
-
- -
- - -
- تاريخ انتهاء الصلاحية مطلوب -
-
- -
- - -
- رمز الحماية مطلوب -
-
-
- -
- - -
-
-
-
- -
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css deleted file mode 100644 index e5ea31c4..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.css +++ /dev/null @@ -1,3 +0,0 @@ -.container { - max-width: 960px; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js deleted file mode 100644 index f8fd583d..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/form-validation.js +++ /dev/null @@ -1,20 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(function () { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - var forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.prototype.slice.call(forms) - .forEach(function (form) { - form.addEventListener('submit', function (event) { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/index.html deleted file mode 100644 index 5839139e..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/checkout/index.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - Checkout example · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
-
- -

Checkout form

-

Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

-
- -
-
-

- Your cart - 3 -

-
    -
  • -
    -
    Product name
    - Brief description -
    - $12 -
  • -
  • -
    -
    Second product
    - Brief description -
    - $8 -
  • -
  • -
    -
    Third item
    - Brief description -
    - $5 -
  • -
  • -
    -
    Promo code
    - EXAMPLECODE -
    - −$5 -
  • -
  • - Total (USD) - $20 -
  • -
- -
-
- - -
-
-
-
-

Billing address

-
-
-
- - -
- Valid first name is required. -
-
- -
- - -
- Valid last name is required. -
-
- -
- -
- @ - -
- Your username is required. -
-
-
- -
- - -
- Please enter a valid email address for shipping updates. -
-
- -
- - -
- Please enter your shipping address. -
-
- -
- - -
- -
- - -
- Please select a valid country. -
-
- -
- - -
- Please provide a valid state. -
-
- -
- - -
- Zip code required. -
-
-
- -
- -
- - -
- -
- - -
- -
- -

Payment

- -
-
- - -
-
- - -
-
- - -
-
- -
-
- - - Full name as displayed on card -
- Name on card is required -
-
- -
- - -
- Credit card number is required -
-
- -
- - -
- Expiration date required -
-
- -
- - -
- Security code required -
-
-
- -
- - -
-
-
-
- - -
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cover/cover.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cover/cover.css deleted file mode 100644 index 87afc3be..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cover/cover.css +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Globals - */ - - -/* Custom default button */ -.btn-secondary, -.btn-secondary:hover, -.btn-secondary:focus { - color: #333; - text-shadow: none; /* Prevent inheritance from `body` */ -} - - -/* - * Base structure - */ - -body { - text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5); - box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5); -} - -.cover-container { - max-width: 42em; -} - - -/* - * Header - */ - -.nav-masthead .nav-link { - padding: .25rem 0; - font-weight: 700; - color: rgba(255, 255, 255, .5); - background-color: transparent; - border-bottom: .25rem solid transparent; -} - -.nav-masthead .nav-link:hover, -.nav-masthead .nav-link:focus { - border-bottom-color: rgba(255, 255, 255, .25); -} - -.nav-masthead .nav-link + .nav-link { - margin-left: 1rem; -} - -.nav-masthead .active { - color: #fff; - border-bottom-color: #fff; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cover/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cover/index.html deleted file mode 100644 index 8604faeb..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/cover/index.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - Cover Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
-
-

Cover

- -
-
- -
-

Cover your page.

-

Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.

-

- Learn more -

-
- - -
- - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js deleted file mode 100644 index 7831fa9d..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/dashboard.js +++ /dev/null @@ -1,53 +0,0 @@ -/* globals Chart:false, feather:false */ - -(function () { - 'use strict' - - feather.replace({ 'aria-hidden': 'true' }) - - // Graphs - var ctx = document.getElementById('myChart') - // eslint-disable-next-line no-unused-vars - var myChart = new Chart(ctx, { - type: 'line', - data: { - labels: [ - 'الأحد', - 'الإثنين', - 'الثلاثاء', - 'الأربعاء', - 'الخميس', - 'الجمعة', - 'السبت' - ], - datasets: [{ - data: [ - 15339, - 21345, - 18483, - 24003, - 23489, - 24092, - 12034 - ], - lineTension: 0, - backgroundColor: 'transparent', - borderColor: '#007bff', - borderWidth: 4, - pointBackgroundColor: '#007bff' - }] - }, - options: { - scales: { - yAxes: [{ - ticks: { - beginAtZero: false - } - }] - }, - legend: { - display: false - } - } - }) -})() diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html deleted file mode 100644 index 78801988..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard-rtl/index.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - قالب لوحة القيادة · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - -
-
- - -
-
-

لوحة القيادة

-
-
- - -
- -
-
- - - -

عنوان القسم

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#عنوانعنوانعنوانعنوان
1,001بياناتعشوائيةتثريالجدول
1,002تثريمبهةتصميمتنسيق
1,003عشوائيةغنيةقيمةمفيدة
1,003معلوماتتثريتوضيحيةعشوائية
1,004الجدولبياناتتنسيققيمة
1,005قيمةمبهةالجدولتثري
1,006قيمةتوضيحيةغنيةعشوائية
1,007تثريمفيدةمعلوماتمبهة
1,008بياناتعشوائيةتثريالجدول
1,009تثريمبهةتصميمتنسيق
1,010عشوائيةغنيةقيمةمفيدة
1,011معلوماتتثريتوضيحيةعشوائية
1,012الجدولتثريتنسيققيمة
1,013قيمةمبهةالجدولتصميم
1,014قيمةتوضيحيةغنيةعشوائية
1,015بياناتمفيدةمعلوماتالجدول
-
-
-
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css deleted file mode 100644 index e1099fbb..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.css +++ /dev/null @@ -1,100 +0,0 @@ -body { - font-size: .875rem; -} - -.feather { - width: 16px; - height: 16px; - vertical-align: text-bottom; -} - -/* - * Sidebar - */ - -.sidebar { - position: fixed; - top: 0; - /* rtl:raw: - right: 0; - */ - bottom: 0; - /* rtl:remove */ - left: 0; - z-index: 100; /* Behind the navbar */ - padding: 48px 0 0; /* Height of navbar */ - box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); -} - -@media (max-width: 767.98px) { - .sidebar { - top: 5rem; - } -} - -.sidebar-sticky { - position: relative; - top: 0; - height: calc(100vh - 48px); - padding-top: .5rem; - overflow-x: hidden; - overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ -} - -.sidebar .nav-link { - font-weight: 500; - color: #333; -} - -.sidebar .nav-link .feather { - margin-right: 4px; - color: #727272; -} - -.sidebar .nav-link.active { - color: #2470dc; -} - -.sidebar .nav-link:hover .feather, -.sidebar .nav-link.active .feather { - color: inherit; -} - -.sidebar-heading { - font-size: .75rem; - text-transform: uppercase; -} - -/* - * Navbar - */ - -.navbar-brand { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: 1rem; - background-color: rgba(0, 0, 0, .25); - box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); -} - -.navbar .navbar-toggler { - top: .25rem; - right: 1rem; -} - -.navbar .form-control { - padding: .75rem 1rem; - border-width: 0; - border-radius: 0; -} - -.form-control-dark { - color: #fff; - background-color: rgba(255, 255, 255, .1); - border-color: rgba(255, 255, 255, .1); -} - -.form-control-dark:focus { - border-color: transparent; - box-shadow: 0 0 0 3px rgba(255, 255, 255, .25); -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js deleted file mode 100644 index 7c2402ae..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.js +++ /dev/null @@ -1,53 +0,0 @@ -/* globals Chart:false, feather:false */ - -(function () { - 'use strict' - - feather.replace({ 'aria-hidden': 'true' }) - - // Graphs - var ctx = document.getElementById('myChart') - // eslint-disable-next-line no-unused-vars - var myChart = new Chart(ctx, { - type: 'line', - data: { - labels: [ - 'Sunday', - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday' - ], - datasets: [{ - data: [ - 15339, - 21345, - 18483, - 24003, - 23489, - 24092, - 12034 - ], - lineTension: 0, - backgroundColor: 'transparent', - borderColor: '#007bff', - borderWidth: 4, - pointBackgroundColor: '#007bff' - }] - }, - options: { - scales: { - yAxes: [{ - ticks: { - beginAtZero: false - } - }] - }, - legend: { - display: false - } - } - }) -})() diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css deleted file mode 100644 index a88226ec..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/dashboard.rtl.css +++ /dev/null @@ -1,96 +0,0 @@ -body { - font-size: .875rem; -} - -.feather { - width: 16px; - height: 16px; - vertical-align: text-bottom; -} - -/* - * Sidebar - */ - -.sidebar { - position: fixed; - top: 0; - right: 0; - bottom: 0; - z-index: 100; /* Behind the navbar */ - padding: 48px 0 0; /* Height of navbar */ - box-shadow: inset 1px 0 0 rgba(0, 0, 0, .1); -} - -@media (max-width: 767.98px) { - .sidebar { - top: 5rem; - } -} - -.sidebar-sticky { - position: relative; - top: 0; - height: calc(100vh - 48px); - padding-top: .5rem; - overflow-x: hidden; - overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ -} - -.sidebar .nav-link { - font-weight: 500; - color: #333; -} - -.sidebar .nav-link .feather { - margin-left: 4px; - color: #727272; -} - -.sidebar .nav-link.active { - color: #2470dc; -} - -.sidebar .nav-link:hover .feather, -.sidebar .nav-link.active .feather { - color: inherit; -} - -.sidebar-heading { - font-size: .75rem; - text-transform: uppercase; -} - -/* - * Navbar - */ - -.navbar-brand { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: 1rem; - background-color: rgba(0, 0, 0, .25); - box-shadow: inset 1px 0 0 rgba(0, 0, 0, .25); -} - -.navbar .navbar-toggler { - top: .25rem; - left: 1rem; -} - -.navbar .form-control { - padding: .75rem 1rem; - border-width: 0; - border-radius: 0; -} - -.form-control-dark { - color: #fff; - background-color: rgba(255, 255, 255, .1); - border-color: rgba(255, 255, 255, .1); -} - -.form-control-dark:focus { - border-color: transparent; - box-shadow: 0 0 0 3px rgba(255, 255, 255, .25); -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html deleted file mode 100644 index ff4bc8d0..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/dashboard/index.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - Dashboard Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - -
-
- - -
-
-

Dashboard

-
-
- - -
- -
-
- - - -

Section title

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#HeaderHeaderHeaderHeader
1,001randomdataplaceholdertext
1,002placeholderirrelevantvisuallayout
1,003datarichdashboardtabular
1,003informationplaceholderillustrativedata
1,004textrandomlayoutdashboard
1,005dashboardirrelevanttextplaceholder
1,006dashboardillustrativerichdata
1,007placeholdertabularinformationirrelevant
1,008randomdataplaceholdertext
1,009placeholderirrelevantvisuallayout
1,010datarichdashboardtabular
1,011informationplaceholderillustrativedata
1,012textplaceholderlayoutdashboard
1,013dashboardirrelevanttextvisual
1,014dashboardillustrativerichdata
1,015randomtabularinformationtext
-
-
-
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/features.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/features.css deleted file mode 100644 index 33942f7f..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/features.css +++ /dev/null @@ -1,61 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - -.feature-icon { - display: inline-flex; - align-items: center; - justify-content: center; - width: 4rem; - height: 4rem; - margin-bottom: 1rem; - font-size: 2rem; - color: #fff; - border-radius: .75rem; -} - -.icon-link { - display: inline-flex; - align-items: center; -} -.icon-link > .bi { - margin-top: .125rem; - margin-left: .125rem; - transition: transform .25s ease-in-out; - fill: currentColor; -} -.icon-link:hover > .bi { - transform: translate(.25rem); -} - -.icon-square { - display: inline-flex; - align-items: center; - justify-content: center; - width: 3rem; - height: 3rem; - font-size: 1.5rem; - border-radius: .75rem; -} - -.rounded-4 { border-radius: .5rem; } -.rounded-5 { border-radius: 1rem; } - -.text-shadow-1 { text-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25); } -.text-shadow-2 { text-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); } -.text-shadow-3 { text-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .25); } - -.card-cover { - background-repeat: no-repeat; - background-position: center center; - background-size: cover; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/index.html deleted file mode 100644 index be94f5ef..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/index.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - Features · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - - Bootstrap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Features examples

- - - -
- -
-

Hanging icons

-
-
-
- -
-
-

Featured title

-

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

- - Primary button - -
-
-
-
- -
-
-

Featured title

-

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

- - Primary button - -
-
-
-
- -
-
-

Featured title

-

Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

- - Primary button - -
-
-
-
- -
- -
-

Custom cards

- -
-
-
-
-

Short title, long jacket

-
    -
  • - Bootstrap -
  • -
  • - - Earth -
  • -
  • - - 3d -
  • -
-
-
-
- -
-
-
-

Much longer title that wraps to multiple lines

-
    -
  • - Bootstrap -
  • -
  • - - Pakistan -
  • -
  • - - 4d -
  • -
-
-
-
- -
-
-
-

Another longer title belongs here

-
    -
  • - Bootstrap -
  • -
  • - - California -
  • -
  • - - 5d -
  • -
-
-
-
-
-
- -
- -
-

Icon grid

- -
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
- -
-

Featured title

-

Paragraph of text beneath the heading to explain the heading.

-
-
-
-
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-1.jpg b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-1.jpg deleted file mode 100644 index ed2e36a7..00000000 Binary files a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-1.jpg and /dev/null differ diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-2.jpg b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-2.jpg deleted file mode 100644 index b66864a0..00000000 Binary files a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-2.jpg and /dev/null differ diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-3.jpg b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-3.jpg deleted file mode 100644 index c411b17e..00000000 Binary files a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/features/unsplash-photo-3.jpg and /dev/null differ diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/grid/grid.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/grid/grid.css deleted file mode 100644 index 18e3568b..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/grid/grid.css +++ /dev/null @@ -1,13 +0,0 @@ -.themed-grid-col { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(86, 61, 124, .15); - border: 1px solid rgba(86, 61, 124, .2); -} - -.themed-container { - padding: .75rem; - margin-bottom: 1.5rem; - background-color: rgba(0, 123, 255, .15); - border: 1px solid rgba(0, 123, 255, .2); -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/grid/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/grid/index.html deleted file mode 100644 index 122552d5..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/grid/index.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - Grid Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
- -

Bootstrap grid examples

-

Basic grid layouts to get you familiar with building within the Bootstrap grid system.

-

In these examples the .themed-grid-col class is added to the columns to add some theming. This is not a class that is available in Bootstrap by default.

- -

Five grid tiers

-

There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.

- -
-
.col-4
-
.col-4
-
.col-4
-
- -
-
.col-sm-4
-
.col-sm-4
-
.col-sm-4
-
- -
-
.col-md-4
-
.col-md-4
-
.col-md-4
-
- -
-
.col-lg-4
-
.col-lg-4
-
.col-lg-4
-
- -
-
.col-xl-4
-
.col-xl-4
-
.col-xl-4
-
- -
-
.col-xxl-4
-
.col-xxl-4
-
.col-xxl-4
-
- -

Three equal columns

-

Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

-
-
.col-md-4
-
.col-md-4
-
.col-md-4
-
- -

Three equal columns alternative

-

By using the .row-cols-* classes, you can easily create a grid with equal columns.

-
-
.col child of .row-cols-md-3
-
.col child of .row-cols-md-3
-
.col child of .row-cols-md-3
-
- -

Three unequal columns

-

Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

-
-
.col-md-3
-
.col-md-6
-
.col-md-3
-
- -

Two columns

-

Get two columns starting at desktops and scaling to large desktops.

-
-
.col-md-8
-
.col-md-4
-
- -

Full width, single column

-

- No grid classes are necessary for full-width elements. -

- -
- -

Two columns with two nested columns

-

Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

-

At mobile device sizes, tablets and down, these columns and their nested columns will stack.

-
-
-
- .col-md-8 -
-
-
.col-md-6
-
.col-md-6
-
-
-
.col-md-4
-
- -
- -

Mixed: mobile and desktop

-

The Bootstrap v4 grid system has five tiers of classes: xs (extra small, this class infix is not used), sm (small), md (medium), lg (large), and xl (extra large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

-

Each tier of classes scales up, meaning if you plan on setting the same widths for md, lg and xl, you only need to specify md.

-
-
.col-md-8
-
.col-6 .col-md-4
-
-
-
.col-6 .col-md-4
-
.col-6 .col-md-4
-
.col-6 .col-md-4
-
-
-
.col-6
-
.col-6
-
- -
- -

Mixed: mobile, tablet, and desktop

-
-
.col-sm-6 .col-lg-8
-
.col-6 .col-lg-4
-
-
-
.col-6 .col-sm-4
-
.col-6 .col-sm-4
-
.col-6 .col-sm-4
-
- -
- -

Gutters

-

With .gx-* classes, the horizontal gutters can be adjusted.

-
-
.col with .gx-4 gutters
-
.col with .gx-4 gutters
-
.col with .gx-4 gutters
-
.col with .gx-4 gutters
-
.col with .gx-4 gutters
-
.col with .gx-4 gutters
-
-

Use the .gy-* classes to control the vertical gutters.

-
-
.col with .gy-4 gutters
-
.col with .gy-4 gutters
-
.col with .gy-4 gutters
-
.col with .gy-4 gutters
-
.col with .gy-4 gutters
-
.col with .gy-4 gutters
-
-

With .g-* classes, the gutters in both directions can be adjusted.

-
-
.col with .g-3 gutters
-
.col with .g-3 gutters
-
.col with .g-3 gutters
-
.col with .g-3 gutters
-
.col with .g-3 gutters
-
.col with .g-3 gutters
-
-
- -
-
- -

Containers

-

Additional classes added in Bootstrap v4.4 allow containers that are 100% wide until a particular breakpoint. v5 adds a new xxl breakpoint.

-
- -
.container
-
.container-sm
-
.container-md
-
.container-lg
-
.container-xl
-
.container-xxl
-
.container-fluid
-
- - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/headers/headers.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/headers/headers.css deleted file mode 100644 index 661a74d5..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/headers/headers.css +++ /dev/null @@ -1,32 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.form-control-dark { - color: #fff; - background-color: var(--bs-dark); - border-color: var(--bs-gray); -} -.form-control-dark:focus { - color: #fff; - background-color: var(--bs-dark); - border-color: #fff; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); -} - -.bi { - vertical-align: -.125em; - fill: currentColor; -} - -.text-small { - font-size: 85%; -} - -.dropdown-toggle { - outline: 0; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/headers/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/headers/index.html deleted file mode 100644 index 43329ffd..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/headers/index.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - - - Headers · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - - Bootstrap - - - - - - - - - - - - - - - - - - - - - -
-

Headers examples

- - - -
- -
-
- -
-
- -
- -
-
- - - - - - -
- - -
-
-
- -
- -
-
-
- - - - - - -
- -
- -
- - -
-
-
-
- -
- -
-
-
- - - - - - -
- -
- - -
-
-
- -
- -
-
- - -
-
- -
- - -
-
-
- -
-
-
-









-
-
-









-
-
-
- -
- - -
- -
- -
- -
- -
-
-
- -
- -
- - -
-
-
-
- -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-docs.png b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-docs.png deleted file mode 100644 index 471a9edd..00000000 Binary files a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-docs.png and /dev/null differ diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-themes.png b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-themes.png deleted file mode 100644 index 13c32337..00000000 Binary files a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/bootstrap-themes.png and /dev/null differ diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/heroes.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/heroes.css deleted file mode 100644 index 380b70a4..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/heroes.css +++ /dev/null @@ -1,11 +0,0 @@ -.b-example-divider { - height: 3rem; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -@media (min-width: 992px) { - .rounded-lg-3 { border-radius: .3rem; } -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/index.html deleted file mode 100644 index d95b0b11..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/heroes/index.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - Heroes · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-

Heroes examples

- -
- -

Centered hero

-
-

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

-
- - -
-
-
- -
- -
-

Centered screenshot

-
-

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

-
- - -
-
-
-
- Example image -
-
-
- -
- -
-
-
- Bootstrap Themes -
-
-

Responsive left-aligned hero with image

-

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

-
- - -
-
-
-
- -
- -
-
-
-

Vertically centered hero sign-up form

-

Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

-
-
-
-
- - -
-
- - -
-
- -
- -
- By clicking Sign up, you agree to the terms of use. -
-
-
-
- -
- -
-
-
-

Border hero with cropped image and shadows

-

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

-
- - -
-
-
- -
-
-
- -
- -
-
-

Dark mode hero

-
-

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

-
- - -
-
-
-
- -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/jumbotron/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/jumbotron/index.html deleted file mode 100644 index 2171b235..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/jumbotron/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - Jumbotron example · Bootstrap v5.0 - - - - - - - - - - - - - - -
-
-
- - Bootstrap - Jumbotron example - -
- -
-
-

Custom jumbotron

-

Using a series of utilities, you can create this jumbotron, just like the one in previous versions of Bootstrap. Check out the examples below for how you can remix and restyle it to your liking.

- -
-
- -
-
-
-

Change the background

-

Swap the background-color utility and add a `.text-*` color utility to mix up the jumbotron look. Then, mix and match with additional component themes and more.

- -
-
-
-
-

Add borders

-

Or, keep it light and add a border for some added definition to the boundaries of your content. Be sure to look under the hood at the source HTML here as we've adjusted the alignment and sizing of both column's content for equal-height.

- -
-
-
- -
- © 2021 -
-
-
- - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/masonry/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/masonry/index.html deleted file mode 100644 index e89c9366..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/masonry/index.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - Masonry example · Bootstrap v5.0 - - - - - - - - - - - - - - -
-

Bootstrap and Masonry

-

Integrate Masonry with the Bootstrap grid system and cards component.

- -

Masonry is not included in Bootstrap. Add it by including the JavaScript plugin manually, or using a CDN like so:

- -

-<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js" integrity="sha384-GNFwBvfVxBkLMJpYMOABq3c+d3KnQxudP/mGPkzpZSTYykLBNsZEnG2D9G/X/+7D" crossorigin="anonymous" async></script>
-  
- -

By adding data-masonry='{"percentPosition": true }' to the .row wrapper, we can combine the powers of Bootstrap's responsive grid and Masonry's positioning.

- -
- -
-
-
- PlaceholderImage cap - -
-
Card title that wraps to a new line
-

This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

-
-
-
-
-
-
-
-

A well-known quote, contained in a blockquote element.

-
- -
-
-
-
-
- PlaceholderImage cap - -
-
Card title
-

This card has supporting text below as a natural lead-in to additional content.

-

Last updated 3 mins ago

-
-
-
-
-
-
-
-

A well-known quote, contained in a blockquote element.

-
- -
-
-
-
-
-
-
Card title
-

This card has a regular title and short paragraph of text below it.

-

Last updated 3 mins ago

-
-
-
-
-
- PlaceholderCard image - -
-
-
-
-
-
-

A well-known quote, contained in a blockquote element.

-
- -
-
-
-
-
-
-
Card title
-

This is another card with title and supporting text below. This card has some additional content to make it slightly taller overall.

-

Last updated 3 mins ago

-
-
-
-
- -
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-bottom/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-bottom/index.html deleted file mode 100644 index 54c00c51..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-bottom/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - Bottom navbar example · Bootstrap v5.0 - - - - - - - - - - - - - - -
-
-

Bottom Navbar example

-

This example is a quick exercise to illustrate how the bottom navbar works.

- View navbar docs » -
-
- - - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/index.html deleted file mode 100644 index 60095c60..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - Fixed top navbar example · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - -
-
-

Navbar example

-

This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser’s viewport.

- View navbar docs » -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/navbar-top-fixed.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/navbar-top-fixed.css deleted file mode 100644 index c77c0c14..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-fixed/navbar-top-fixed.css +++ /dev/null @@ -1,5 +0,0 @@ -/* Show it is fixed to the top */ -body { - min-height: 75rem; - padding-top: 4.5rem; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-static/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-static/index.html deleted file mode 100644 index 6eff7ec2..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-static/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - Top navbar example · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - -
-
-

Navbar example

-

This example is a quick exercise to illustrate how the top-aligned navbar works. As you scroll, this navbar remains in its original position and moves with the rest of the page.

- View navbar docs » -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-static/navbar-top.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-static/navbar-top.css deleted file mode 100644 index 25bbdde0..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbar-static/navbar-top.css +++ /dev/null @@ -1,4 +0,0 @@ -/* Show it's not fixed to the top */ -body { - min-height: 75rem; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbars/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbars/index.html deleted file mode 100644 index 4daf76ed..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbars/index.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - - - Navbar Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - -
-

Matching .container-xl...

-
- - - -
- - - - -
-
-
-

Navbar examples

-

This example is a quick exercise to illustrate how the navbar and its contents work. Some navbars extend the width of the viewport, others are confined within a .container. For positioning of navbars, checkout the top and fixed top examples.

-

At the smallest breakpoint, the collapse plugin is used to hide the links and show a menu button to toggle the collapsed content.

-

- View navbar docs » -

-
-
-
-
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbars/navbar.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbars/navbar.css deleted file mode 100644 index 70d20940..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/navbars/navbar.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - padding-bottom: 20px; -} - -.navbar { - margin-bottom: 20px; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/index.html deleted file mode 100644 index ba693a20..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/index.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - Offcanvas navbar template · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - - - -
-
- -
-

Bootstrap

- Since 2011 -
-
- -
-
Recent updates
-
- Placeholder32x32 - -

- @username - Some representative placeholder content, with some information about this user. Imagine this being some sort of status update, perhaps? -

-
-
- Placeholder32x32 - -

- @username - Some more representative placeholder content, related to this other user. Another status update, perhaps. -

-
-
- Placeholder32x32 - -

- @username - This user also gets some representative placeholder content. Maybe they did something interesting, and you really want to highlight this in the recent updates. -

-
- - All updates - -
- -
-
Suggestions
-
- Placeholder32x32 - -
-
- Full Name - Follow -
- @username -
-
-
- Placeholder32x32 - -
-
- Full Name - Follow -
- @username -
-
-
- Placeholder32x32 - -
-
- Full Name - Follow -
- @username -
-
- - All suggestions - -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.css deleted file mode 100644 index 29e26b11..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.css +++ /dev/null @@ -1,67 +0,0 @@ -html, -body { - overflow-x: hidden; /* Prevent scroll on narrow devices */ -} - -body { - padding-top: 56px; -} - -@media (max-width: 991.98px) { - .offcanvas-collapse { - position: fixed; - top: 56px; /* Height of navbar */ - bottom: 0; - left: 100%; - width: 100%; - padding-right: 1rem; - padding-left: 1rem; - overflow-y: auto; - visibility: hidden; - background-color: #343a40; - transition: transform .3s ease-in-out, visibility .3s ease-in-out; - } - .offcanvas-collapse.open { - visibility: visible; - transform: translateX(-100%); - } -} - -.nav-scroller { - position: relative; - z-index: 2; - height: 2.75rem; - overflow-y: hidden; -} - -.nav-scroller .nav { - display: flex; - flex-wrap: nowrap; - padding-bottom: 1rem; - margin-top: -1px; - overflow-x: auto; - color: rgba(255, 255, 255, .75); - text-align: center; - white-space: nowrap; - -webkit-overflow-scrolling: touch; -} - -.nav-underline .nav-link { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: .875rem; - color: #6c757d; -} - -.nav-underline .nav-link:hover { - color: #007bff; -} - -.nav-underline .active { - font-weight: 500; - color: #343a40; -} - -.text-white-50 { color: rgba(255, 255, 255, .5); } - -.bg-purple { background-color: #6f42c1; } diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.js b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.js deleted file mode 100644 index 91103b1c..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas-navbar/offcanvas.js +++ /dev/null @@ -1,7 +0,0 @@ -(function () { - 'use strict' - - document.querySelector('#navbarSideCollapse').addEventListener('click', function () { - document.querySelector('.offcanvas-collapse').classList.toggle('open') - }) -})() diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas/index.html deleted file mode 100644 index 1fa7e99a..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/offcanvas/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - https://getbootstrap.com/docs/5.0/examples/offcanvas-navbar/ - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/pricing/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/pricing/index.html deleted file mode 100644 index c4f383fa..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/pricing/index.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - Pricing example · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - - Check - - - - -
-
- - -
-

Pricing

-

Quickly build an effective pricing table for your potential customers with this Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.

-
-
- -
-
-
-
-
-

Free

-
-
-

$0/mo

-
    -
  • 10 users included
  • -
  • 2 GB of storage
  • -
  • Email support
  • -
  • Help center access
  • -
- -
-
-
-
-
-
-

Pro

-
-
-

$15/mo

-
    -
  • 20 users included
  • -
  • 10 GB of storage
  • -
  • Priority email support
  • -
  • Help center access
  • -
- -
-
-
-
-
-
-

Enterprise

-
-
-

$29/mo

-
    -
  • 30 users included
  • -
  • 15 GB of storage
  • -
  • Phone and email support
  • -
  • Help center access
  • -
- -
-
-
-
- -

Compare plans

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FreeProEnterprise
Public
Private
Permissions
Sharing
Unlimited members
Extra security
-
-
- - -
- - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/pricing/pricing.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/pricing/pricing.css deleted file mode 100644 index c7304d10..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/pricing/pricing.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - background-image: linear-gradient(180deg, #eee, #fff 100px, #fff); -} - -.container { - max-width: 960px; -} - -.pricing-header { - max-width: 700px; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/product/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/product/index.html deleted file mode 100644 index e08f4f75..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/product/index.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - Product example · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - -
-
-
-

Punny headline

-

And an even wittier subheading to boot. Jumpstart your marketing efforts with this example based on Apple’s marketing pages.

- Coming soon -
-
-
-
- -
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
- -
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
- -
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
- -
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
-
-

Another headline

-

And an even wittier subheading.

-
-
-
-
-
- - - - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/product/product.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/product/product.css deleted file mode 100644 index 5fcb582b..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/product/product.css +++ /dev/null @@ -1,69 +0,0 @@ -.container { - max-width: 960px; -} - -/* - * Custom translucent site header - */ - -.site-header { - background-color: rgba(0, 0, 0, .85); - -webkit-backdrop-filter: saturate(180%) blur(20px); - backdrop-filter: saturate(180%) blur(20px); -} -.site-header a { - color: #8e8e8e; - transition: color .15s ease-in-out; -} -.site-header a:hover { - color: #fff; - text-decoration: none; -} - -/* - * Dummy devices (replace them with your own or something else entirely!) - */ - -.product-device { - position: absolute; - right: 10%; - bottom: -30%; - width: 300px; - height: 540px; - background-color: #333; - border-radius: 21px; - transform: rotate(30deg); -} - -.product-device::before { - position: absolute; - top: 10%; - right: 10px; - bottom: 10%; - left: 10px; - content: ""; - background-color: rgba(255, 255, 255, .1); - border-radius: 5px; -} - -.product-device-2 { - top: -25%; - right: auto; - bottom: 0; - left: 5%; - background-color: #e5e5e5; -} - - -/* - * Extra utilities - */ - -.flex-equal > * { - flex: 1; -} -@media (min-width: 768px) { - .flex-md-equal > * { - flex: 1; - } -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/index.html deleted file mode 100644 index 1d83b0da..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/index.html +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - - - Sidebars · Bootstrap v5.0 - - - - - - - - - - - - - - - - - - - Bootstrap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Sidebars examples

- - - -
- - - -
- -
- - - Icon-only - - - -
- -
- -
- - - Collapsible - - -
- -
- - - -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.css deleted file mode 100644 index 6949a379..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.css +++ /dev/null @@ -1,89 +0,0 @@ -body { - min-height: 100vh; - min-height: -webkit-fill-available; -} - -html { - height: -webkit-fill-available; -} - -main { - display: flex; - flex-wrap: nowrap; - height: 100vh; - height: -webkit-fill-available; - max-height: 100vh; - overflow-x: auto; - overflow-y: hidden; -} - -.b-example-divider { - flex-shrink: 0; - width: 1.5rem; - height: 100vh; - background-color: rgba(0, 0, 0, .1); - border: solid rgba(0, 0, 0, .15); - border-width: 1px 0; - box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); -} - -.bi { - vertical-align: -.125em; - pointer-events: none; - fill: currentColor; -} - -.dropdown-toggle { outline: 0; } - -.nav-flush .nav-link { - border-radius: 0; -} - -.btn-toggle { - display: inline-flex; - align-items: center; - padding: .25rem .5rem; - font-weight: 600; - color: rgba(0, 0, 0, .65); - background-color: transparent; - border: 0; -} -.btn-toggle:hover, -.btn-toggle:focus { - color: rgba(0, 0, 0, .85); - background-color: #d2f4ea; -} - -.btn-toggle::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - transform-origin: .5em 50%; -} - -.btn-toggle[aria-expanded="true"] { - color: rgba(0, 0, 0, .85); -} -.btn-toggle[aria-expanded="true"]::before { - transform: rotate(90deg); -} - -.btn-toggle-nav a { - display: inline-flex; - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: 1.25rem; - text-decoration: none; -} -.btn-toggle-nav a:hover, -.btn-toggle-nav a:focus { - background-color: #d2f4ea; -} - -.scrollarea { - overflow-y: auto; -} - -.fw-semibold { font-weight: 600; } -.lh-tight { line-height: 1.25; } diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.js b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.js deleted file mode 100644 index 68384c16..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sidebars/sidebars.js +++ /dev/null @@ -1,8 +0,0 @@ -/* global bootstrap: false */ -(function () { - 'use strict' - var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) - tooltipTriggerList.forEach(function (tooltipTriggerEl) { - new bootstrap.Tooltip(tooltipTriggerEl) - }) -})() diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sign-in/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sign-in/index.html deleted file mode 100644 index bca71ad1..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sign-in/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - Signin Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
- -

Please sign in

- -
- - -
-
- - -
- -
- -
- -

© 2017–2021

-
-
- - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sign-in/signin.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sign-in/signin.css deleted file mode 100644 index 4732d1fb..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sign-in/signin.css +++ /dev/null @@ -1,39 +0,0 @@ -html, -body { - height: 100%; -} - -body { - display: flex; - align-items: center; - padding-top: 40px; - padding-bottom: 40px; - background-color: #f5f5f5; -} - -.form-signin { - width: 100%; - max-width: 330px; - padding: 15px; - margin: auto; -} - -.form-signin .checkbox { - font-weight: 400; -} - -.form-signin .form-floating:focus-within { - z-index: 2; -} - -.form-signin input[type="email"] { - margin-bottom: -1px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.form-signin input[type="password"] { - margin-bottom: 10px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/starter-template/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/starter-template/index.html deleted file mode 100644 index a3d89547..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/starter-template/index.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - Starter Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
-
- - Bootstrap - Starter template - -
- -
-

Get started with Bootstrap

-

Quickly and easily get started with Bootstrap's compiled, production-ready files with this barebones example featuring some basic HTML and helpful links. Download all our examples to get started.

- - - -
- -
-
-

Starter projects

-

Ready to beyond the starter template? Check out these open source projects that you can quickly duplicate to a new GitHub repository.

- -
- -
-

Guides

-

Read more detailed instructions and documentation on using or contributing to Bootstrap.

- -
-
-
-
- Created by the Bootstrap team · © 2021 -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/starter-template/starter-template.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/starter-template/starter-template.css deleted file mode 100644 index d03436db..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/starter-template/starter-template.css +++ /dev/null @@ -1,18 +0,0 @@ -.icon-list { - padding-left: 0; - list-style: none; -} -.icon-list li { - display: flex; - align-items: flex-start; - margin-bottom: .25rem; -} -.icon-list li::before { - display: block; - flex-shrink: 0; - width: 1.5em; - height: 1.5em; - margin-right: .5rem; - content: ""; - background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23212529' viewBox='0 0 16 16'%3E%3Cpath d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zM4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5z'/%3E%3C/svg%3E") no-repeat center center / 100% auto; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/index.html deleted file mode 100644 index 8a201cb1..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/index.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - Sticky Footer Navbar Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - -
- - -
- - -
-
-

Sticky footer with fixed navbar

-

Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added with padding-top: 60px; on the main > .container.

-

Back to the default sticky footer minus the navbar.

-
-
- -
-
- Place sticky footer content here. -
-
- - - - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/sticky-footer-navbar.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/sticky-footer-navbar.css deleted file mode 100644 index 3087ead7..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer-navbar/sticky-footer-navbar.css +++ /dev/null @@ -1,7 +0,0 @@ -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -main > .container { - padding: 60px 15px 0; -} diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer/index.html b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer/index.html deleted file mode 100644 index 29b49760..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer/index.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - Sticky Footer Template · Bootstrap v5.0 - - - - - - - - - - - - - - - - - -
-
-

Sticky footer

-

Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.

-

Use the sticky footer with a fixed navbar if need be, too.

-
-
- -
-
- Place sticky footer content here. -
-
- - - - - diff --git a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer/sticky-footer.css b/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer/sticky-footer.css deleted file mode 100644 index f8be4372..00000000 --- a/src/Yavsc.Org/wwwroot/bootstrap-5.0.2-examples/sticky-footer/sticky-footer.css +++ /dev/null @@ -1,9 +0,0 @@ -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -.container { - width: auto; - max-width: 680px; - padding: 0 15px; -} diff --git a/src/Yavsc.Org/wwwroot/css/site.scss b/src/Yavsc.Org/wwwroot/css/site.scss index 74beb3e8..08a3cd74 100644 --- a/src/Yavsc.Org/wwwroot/css/site.scss +++ b/src/Yavsc.Org/wwwroot/css/site.scss @@ -198,3 +198,20 @@ body { { padding: .5em; } + +.badge-libre { + background-color: #2ecc71; + color: white; + padding: 4px 10px; + border-radius: 12px; + font-size: 0.85em; + font-weight: bold; +} +.badge-non-libre { + background-color: #e67e22; + color: white; + padding: 4px 10px; + border-radius: 12px; + font-size: 0.85em; +} + diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/alert.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/alert.js deleted file mode 100644 index 88232bce..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/alert.js +++ /dev/null @@ -1,87 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap alert.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import { enableDismissTrigger } from './util/component-functions.js' -import { defineJQueryPlugin } from './util/index.js' - -/** - * Constants - */ - -const NAME = 'alert' -const DATA_KEY = 'bs.alert' -const EVENT_KEY = `.${DATA_KEY}` - -const EVENT_CLOSE = `close${EVENT_KEY}` -const EVENT_CLOSED = `closed${EVENT_KEY}` -const CLASS_NAME_FADE = 'fade' -const CLASS_NAME_SHOW = 'show' - -/** - * Class definition - */ - -class Alert extends BaseComponent { - // Getters - static get NAME() { - return NAME - } - - // Public - close() { - const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE) - - if (closeEvent.defaultPrevented) { - return - } - - this._element.classList.remove(CLASS_NAME_SHOW) - - const isAnimated = this._element.classList.contains(CLASS_NAME_FADE) - this._queueCallback(() => this._destroyElement(), this._element, isAnimated) - } - - // Private - _destroyElement() { - this._element.remove() - EventHandler.trigger(this._element, EVENT_CLOSED) - this.dispose() - } - - // Static - static jQueryInterface(config) { - return this.each(function () { - const data = Alert.getOrCreateInstance(this) - - if (typeof config !== 'string') { - return - } - - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError(`No method named "${config}"`) - } - - data[config](this) - }) - } -} - -/** - * Data API implementation - */ - -enableDismissTrigger(Alert, 'close') - -/** - * jQuery - */ - -defineJQueryPlugin(Alert) - -export default Alert diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/base-component.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/base-component.js deleted file mode 100644 index 82bf7703..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/base-component.js +++ /dev/null @@ -1,85 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap base-component.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import Data from './dom/data.js' -import EventHandler from './dom/event-handler.js' -import Config from './util/config.js' -import { executeAfterTransition, getElement } from './util/index.js' - -/** - * Constants - */ - -const VERSION = '5.3.3' - -/** - * Class definition - */ - -class BaseComponent extends Config { - constructor(element, config) { - super() - - element = getElement(element) - if (!element) { - return - } - - this._element = element - this._config = this._getConfig(config) - - Data.set(this._element, this.constructor.DATA_KEY, this) - } - - // Public - dispose() { - Data.remove(this._element, this.constructor.DATA_KEY) - EventHandler.off(this._element, this.constructor.EVENT_KEY) - - for (const propertyName of Object.getOwnPropertyNames(this)) { - this[propertyName] = null - } - } - - _queueCallback(callback, element, isAnimated = true) { - executeAfterTransition(callback, element, isAnimated) - } - - _getConfig(config) { - config = this._mergeConfigObj(config, this._element) - config = this._configAfterMerge(config) - this._typeCheckConfig(config) - return config - } - - // Static - static getInstance(element) { - return Data.get(getElement(element), this.DATA_KEY) - } - - static getOrCreateInstance(element, config = {}) { - return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null) - } - - static get VERSION() { - return VERSION - } - - static get DATA_KEY() { - return `bs.${this.NAME}` - } - - static get EVENT_KEY() { - return `.${this.DATA_KEY}` - } - - static eventName(name) { - return `${name}${this.EVENT_KEY}` - } -} - -export default BaseComponent diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/button.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/button.js deleted file mode 100644 index a797f505..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/button.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap button.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import { defineJQueryPlugin } from './util/index.js' - -/** - * Constants - */ - -const NAME = 'button' -const DATA_KEY = 'bs.button' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' - -const CLASS_NAME_ACTIVE = 'active' -const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="button"]' -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` - -/** - * Class definition - */ - -class Button extends BaseComponent { - // Getters - static get NAME() { - return NAME - } - - // Public - toggle() { - // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method - this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE)) - } - - // Static - static jQueryInterface(config) { - return this.each(function () { - const data = Button.getOrCreateInstance(this) - - if (config === 'toggle') { - data[config]() - } - }) - } -} - -/** - * Data API implementation - */ - -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => { - event.preventDefault() - - const button = event.target.closest(SELECTOR_DATA_TOGGLE) - const data = Button.getOrCreateInstance(button) - - data.toggle() -}) - -/** - * jQuery - */ - -defineJQueryPlugin(Button) - -export default Button diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/carousel.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/carousel.js deleted file mode 100644 index 68d11a32..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/carousel.js +++ /dev/null @@ -1,474 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import Manipulator from './dom/manipulator.js' -import SelectorEngine from './dom/selector-engine.js' -import { - defineJQueryPlugin, - getNextActiveElement, - isRTL, - isVisible, - reflow, - triggerTransitionEnd -} from './util/index.js' -import Swipe from './util/swipe.js' - -/** - * Constants - */ - -const NAME = 'carousel' -const DATA_KEY = 'bs.carousel' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' - -const ARROW_LEFT_KEY = 'ArrowLeft' -const ARROW_RIGHT_KEY = 'ArrowRight' -const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch - -const ORDER_NEXT = 'next' -const ORDER_PREV = 'prev' -const DIRECTION_LEFT = 'left' -const DIRECTION_RIGHT = 'right' - -const EVENT_SLIDE = `slide${EVENT_KEY}` -const EVENT_SLID = `slid${EVENT_KEY}` -const EVENT_KEYDOWN = `keydown${EVENT_KEY}` -const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}` -const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}` -const EVENT_DRAG_START = `dragstart${EVENT_KEY}` -const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}` -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` - -const CLASS_NAME_CAROUSEL = 'carousel' -const CLASS_NAME_ACTIVE = 'active' -const CLASS_NAME_SLIDE = 'slide' -const CLASS_NAME_END = 'carousel-item-end' -const CLASS_NAME_START = 'carousel-item-start' -const CLASS_NAME_NEXT = 'carousel-item-next' -const CLASS_NAME_PREV = 'carousel-item-prev' - -const SELECTOR_ACTIVE = '.active' -const SELECTOR_ITEM = '.carousel-item' -const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM -const SELECTOR_ITEM_IMG = '.carousel-item img' -const SELECTOR_INDICATORS = '.carousel-indicators' -const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]' -const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]' - -const KEY_TO_DIRECTION = { - [ARROW_LEFT_KEY]: DIRECTION_RIGHT, - [ARROW_RIGHT_KEY]: DIRECTION_LEFT -} - -const Default = { - interval: 5000, - keyboard: true, - pause: 'hover', - ride: false, - touch: true, - wrap: true -} - -const DefaultType = { - interval: '(number|boolean)', // TODO:v6 remove boolean support - keyboard: 'boolean', - pause: '(string|boolean)', - ride: '(boolean|string)', - touch: 'boolean', - wrap: 'boolean' -} - -/** - * Class definition - */ - -class Carousel extends BaseComponent { - constructor(element, config) { - super(element, config) - - this._interval = null - this._activeElement = null - this._isSliding = false - this.touchTimeout = null - this._swipeHelper = null - - this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element) - this._addEventListeners() - - if (this._config.ride === CLASS_NAME_CAROUSEL) { - this.cycle() - } - } - - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Public - next() { - this._slide(ORDER_NEXT) - } - - nextWhenVisible() { - // FIXME TODO use `document.visibilityState` - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && isVisible(this._element)) { - this.next() - } - } - - prev() { - this._slide(ORDER_PREV) - } - - pause() { - if (this._isSliding) { - triggerTransitionEnd(this._element) - } - - this._clearInterval() - } - - cycle() { - this._clearInterval() - this._updateInterval() - - this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval) - } - - _maybeEnableCycle() { - if (!this._config.ride) { - return - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, () => this.cycle()) - return - } - - this.cycle() - } - - to(index) { - const items = this._getItems() - if (index > items.length - 1 || index < 0) { - return - } - - if (this._isSliding) { - EventHandler.one(this._element, EVENT_SLID, () => this.to(index)) - return - } - - const activeIndex = this._getItemIndex(this._getActive()) - if (activeIndex === index) { - return - } - - const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV - - this._slide(order, items[index]) - } - - dispose() { - if (this._swipeHelper) { - this._swipeHelper.dispose() - } - - super.dispose() - } - - // Private - _configAfterMerge(config) { - config.defaultInterval = config.interval - return config - } - - _addEventListeners() { - if (this._config.keyboard) { - EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)) - } - - if (this._config.pause === 'hover') { - EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause()) - EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle()) - } - - if (this._config.touch && Swipe.isSupported()) { - this._addTouchEventListeners() - } - } - - _addTouchEventListeners() { - for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { - EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()) - } - - const endCallBack = () => { - if (this._config.pause !== 'hover') { - return - } - - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - - this.pause() - if (this.touchTimeout) { - clearTimeout(this.touchTimeout) - } - - this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval) - } - - const swipeConfig = { - leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), - rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), - endCallback: endCallBack - } - - this._swipeHelper = new Swipe(this._element, swipeConfig) - } - - _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return - } - - const direction = KEY_TO_DIRECTION[event.key] - if (direction) { - event.preventDefault() - this._slide(this._directionToOrder(direction)) - } - } - - _getItemIndex(element) { - return this._getItems().indexOf(element) - } - - _setActiveIndicatorElement(index) { - if (!this._indicatorsElement) { - return - } - - const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement) - - activeIndicator.classList.remove(CLASS_NAME_ACTIVE) - activeIndicator.removeAttribute('aria-current') - - const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement) - - if (newActiveIndicator) { - newActiveIndicator.classList.add(CLASS_NAME_ACTIVE) - newActiveIndicator.setAttribute('aria-current', 'true') - } - } - - _updateInterval() { - const element = this._activeElement || this._getActive() - - if (!element) { - return - } - - const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10) - - this._config.interval = elementInterval || this._config.defaultInterval - } - - _slide(order, element = null) { - if (this._isSliding) { - return - } - - const activeElement = this._getActive() - const isNext = order === ORDER_NEXT - const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap) - - if (nextElement === activeElement) { - return - } - - const nextElementIndex = this._getItemIndex(nextElement) - - const triggerEvent = eventName => { - return EventHandler.trigger(this._element, eventName, { - relatedTarget: nextElement, - direction: this._orderToDirection(order), - from: this._getItemIndex(activeElement), - to: nextElementIndex - }) - } - - const slideEvent = triggerEvent(EVENT_SLIDE) - - if (slideEvent.defaultPrevented) { - return - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - // TODO: change tests that use empty divs to avoid this check - return - } - - const isCycling = Boolean(this._interval) - this.pause() - - this._isSliding = true - - this._setActiveIndicatorElement(nextElementIndex) - this._activeElement = nextElement - - const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END - const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV - - nextElement.classList.add(orderClassName) - - reflow(nextElement) - - activeElement.classList.add(directionalClassName) - nextElement.classList.add(directionalClassName) - - const completeCallBack = () => { - nextElement.classList.remove(directionalClassName, orderClassName) - nextElement.classList.add(CLASS_NAME_ACTIVE) - - activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName) - - this._isSliding = false - - triggerEvent(EVENT_SLID) - } - - this._queueCallback(completeCallBack, activeElement, this._isAnimated()) - - if (isCycling) { - this.cycle() - } - } - - _isAnimated() { - return this._element.classList.contains(CLASS_NAME_SLIDE) - } - - _getActive() { - return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element) - } - - _getItems() { - return SelectorEngine.find(SELECTOR_ITEM, this._element) - } - - _clearInterval() { - if (this._interval) { - clearInterval(this._interval) - this._interval = null - } - } - - _directionToOrder(direction) { - if (isRTL()) { - return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT - } - - return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV - } - - _orderToDirection(order) { - if (isRTL()) { - return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT - } - - return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT - } - - // Static - static jQueryInterface(config) { - return this.each(function () { - const data = Carousel.getOrCreateInstance(this, config) - - if (typeof config === 'number') { - data.to(config) - return - } - - if (typeof config === 'string') { - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError(`No method named "${config}"`) - } - - data[config]() - } - }) - } -} - -/** - * Data API implementation - */ - -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) { - const target = SelectorEngine.getElementFromSelector(this) - - if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { - return - } - - event.preventDefault() - - const carousel = Carousel.getOrCreateInstance(target) - const slideIndex = this.getAttribute('data-bs-slide-to') - - if (slideIndex) { - carousel.to(slideIndex) - carousel._maybeEnableCycle() - return - } - - if (Manipulator.getDataAttribute(this, 'slide') === 'next') { - carousel.next() - carousel._maybeEnableCycle() - return - } - - carousel.prev() - carousel._maybeEnableCycle() -}) - -EventHandler.on(window, EVENT_LOAD_DATA_API, () => { - const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE) - - for (const carousel of carousels) { - Carousel.getOrCreateInstance(carousel) - } -}) - -/** - * jQuery - */ - -defineJQueryPlugin(Carousel) - -export default Carousel diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/collapse.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/collapse.js deleted file mode 100644 index 9f0c60cc..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/collapse.js +++ /dev/null @@ -1,297 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap collapse.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import SelectorEngine from './dom/selector-engine.js' -import { - defineJQueryPlugin, - getElement, - reflow -} from './util/index.js' - -/** - * Constants - */ - -const NAME = 'collapse' -const DATA_KEY = 'bs.collapse' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' - -const EVENT_SHOW = `show${EVENT_KEY}` -const EVENT_SHOWN = `shown${EVENT_KEY}` -const EVENT_HIDE = `hide${EVENT_KEY}` -const EVENT_HIDDEN = `hidden${EVENT_KEY}` -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` - -const CLASS_NAME_SHOW = 'show' -const CLASS_NAME_COLLAPSE = 'collapse' -const CLASS_NAME_COLLAPSING = 'collapsing' -const CLASS_NAME_COLLAPSED = 'collapsed' -const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}` -const CLASS_NAME_HORIZONTAL = 'collapse-horizontal' - -const WIDTH = 'width' -const HEIGHT = 'height' - -const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing' -const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]' - -const Default = { - parent: null, - toggle: true -} - -const DefaultType = { - parent: '(null|element)', - toggle: 'boolean' -} - -/** - * Class definition - */ - -class Collapse extends BaseComponent { - constructor(element, config) { - super(element, config) - - this._isTransitioning = false - this._triggerArray = [] - - const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE) - - for (const elem of toggleList) { - const selector = SelectorEngine.getSelectorFromElement(elem) - const filterElement = SelectorEngine.find(selector) - .filter(foundElement => foundElement === this._element) - - if (selector !== null && filterElement.length) { - this._triggerArray.push(elem) - } - } - - this._initializeChildren() - - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()) - } - - if (this._config.toggle) { - this.toggle() - } - } - - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Public - toggle() { - if (this._isShown()) { - this.hide() - } else { - this.show() - } - } - - show() { - if (this._isTransitioning || this._isShown()) { - return - } - - let activeChildren = [] - - // find active children - if (this._config.parent) { - activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES) - .filter(element => element !== this._element) - .map(element => Collapse.getOrCreateInstance(element, { toggle: false })) - } - - if (activeChildren.length && activeChildren[0]._isTransitioning) { - return - } - - const startEvent = EventHandler.trigger(this._element, EVENT_SHOW) - if (startEvent.defaultPrevented) { - return - } - - for (const activeInstance of activeChildren) { - activeInstance.hide() - } - - const dimension = this._getDimension() - - this._element.classList.remove(CLASS_NAME_COLLAPSE) - this._element.classList.add(CLASS_NAME_COLLAPSING) - - this._element.style[dimension] = 0 - - this._addAriaAndCollapsedClass(this._triggerArray, true) - this._isTransitioning = true - - const complete = () => { - this._isTransitioning = false - - this._element.classList.remove(CLASS_NAME_COLLAPSING) - this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW) - - this._element.style[dimension] = '' - - EventHandler.trigger(this._element, EVENT_SHOWN) - } - - const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1) - const scrollSize = `scroll${capitalizedDimension}` - - this._queueCallback(complete, this._element, true) - this._element.style[dimension] = `${this._element[scrollSize]}px` - } - - hide() { - if (this._isTransitioning || !this._isShown()) { - return - } - - const startEvent = EventHandler.trigger(this._element, EVENT_HIDE) - if (startEvent.defaultPrevented) { - return - } - - const dimension = this._getDimension() - - this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px` - - reflow(this._element) - - this._element.classList.add(CLASS_NAME_COLLAPSING) - this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW) - - for (const trigger of this._triggerArray) { - const element = SelectorEngine.getElementFromSelector(trigger) - - if (element && !this._isShown(element)) { - this._addAriaAndCollapsedClass([trigger], false) - } - } - - this._isTransitioning = true - - const complete = () => { - this._isTransitioning = false - this._element.classList.remove(CLASS_NAME_COLLAPSING) - this._element.classList.add(CLASS_NAME_COLLAPSE) - EventHandler.trigger(this._element, EVENT_HIDDEN) - } - - this._element.style[dimension] = '' - - this._queueCallback(complete, this._element, true) - } - - _isShown(element = this._element) { - return element.classList.contains(CLASS_NAME_SHOW) - } - - // Private - _configAfterMerge(config) { - config.toggle = Boolean(config.toggle) // Coerce string values - config.parent = getElement(config.parent) - return config - } - - _getDimension() { - return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT - } - - _initializeChildren() { - if (!this._config.parent) { - return - } - - const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE) - - for (const element of children) { - const selected = SelectorEngine.getElementFromSelector(element) - - if (selected) { - this._addAriaAndCollapsedClass([element], this._isShown(selected)) - } - } - } - - _getFirstLevelChildren(selector) { - const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent) - // remove children if greater depth - return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)) - } - - _addAriaAndCollapsedClass(triggerArray, isOpen) { - if (!triggerArray.length) { - return - } - - for (const element of triggerArray) { - element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen) - element.setAttribute('aria-expanded', isOpen) - } - } - - // Static - static jQueryInterface(config) { - const _config = {} - if (typeof config === 'string' && /show|hide/.test(config)) { - _config.toggle = false - } - - return this.each(function () { - const data = Collapse.getOrCreateInstance(this, _config) - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`) - } - - data[config]() - } - }) - } -} - -/** - * Data API implementation - */ - -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) { - event.preventDefault() - } - - for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { - Collapse.getOrCreateInstance(element, { toggle: false }).toggle() - } -}) - -/** - * jQuery - */ - -defineJQueryPlugin(Collapse) - -export default Collapse diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/data.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/data.js deleted file mode 100644 index 407f67e3..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/data.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap dom/data.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -/** - * Constants - */ - -const elementMap = new Map() - -export default { - set(element, key, instance) { - if (!elementMap.has(element)) { - elementMap.set(element, new Map()) - } - - const instanceMap = elementMap.get(element) - - // make it clear we only want one instance per element - // can be removed later when multiple key/instances are fine to be used - if (!instanceMap.has(key) && instanceMap.size !== 0) { - // eslint-disable-next-line no-console - console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`) - return - } - - instanceMap.set(key, instance) - }, - - get(element, key) { - if (elementMap.has(element)) { - return elementMap.get(element).get(key) || null - } - - return null - }, - - remove(element, key) { - if (!elementMap.has(element)) { - return - } - - const instanceMap = elementMap.get(element) - - instanceMap.delete(key) - - // free up element references if there are no instances left for an element - if (instanceMap.size === 0) { - elementMap.delete(element) - } - } -} diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/event-handler.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/event-handler.js deleted file mode 100644 index 561d8751..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/event-handler.js +++ /dev/null @@ -1,317 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap dom/event-handler.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import { getjQuery } from '../util/index.js' - -/** - * Constants - */ - -const namespaceRegex = /[^.]*(?=\..*)\.|.*/ -const stripNameRegex = /\..*/ -const stripUidRegex = /::\d+$/ -const eventRegistry = {} // Events storage -let uidEvent = 1 -const customEvents = { - mouseenter: 'mouseover', - mouseleave: 'mouseout' -} - -const nativeEvents = new Set([ - 'click', - 'dblclick', - 'mouseup', - 'mousedown', - 'contextmenu', - 'mousewheel', - 'DOMMouseScroll', - 'mouseover', - 'mouseout', - 'mousemove', - 'selectstart', - 'selectend', - 'keydown', - 'keypress', - 'keyup', - 'orientationchange', - 'touchstart', - 'touchmove', - 'touchend', - 'touchcancel', - 'pointerdown', - 'pointermove', - 'pointerup', - 'pointerleave', - 'pointercancel', - 'gesturestart', - 'gesturechange', - 'gestureend', - 'focus', - 'blur', - 'change', - 'reset', - 'select', - 'submit', - 'focusin', - 'focusout', - 'load', - 'unload', - 'beforeunload', - 'resize', - 'move', - 'DOMContentLoaded', - 'readystatechange', - 'error', - 'abort', - 'scroll' -]) - -/** - * Private methods - */ - -function makeEventUid(element, uid) { - return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++ -} - -function getElementEvents(element) { - const uid = makeEventUid(element) - - element.uidEvent = uid - eventRegistry[uid] = eventRegistry[uid] || {} - - return eventRegistry[uid] -} - -function bootstrapHandler(element, fn) { - return function handler(event) { - hydrateObj(event, { delegateTarget: element }) - - if (handler.oneOff) { - EventHandler.off(element, event.type, fn) - } - - return fn.apply(element, [event]) - } -} - -function bootstrapDelegationHandler(element, selector, fn) { - return function handler(event) { - const domElements = element.querySelectorAll(selector) - - for (let { target } = event; target && target !== this; target = target.parentNode) { - for (const domElement of domElements) { - if (domElement !== target) { - continue - } - - hydrateObj(event, { delegateTarget: target }) - - if (handler.oneOff) { - EventHandler.off(element, event.type, selector, fn) - } - - return fn.apply(target, [event]) - } - } - } -} - -function findHandler(events, callable, delegationSelector = null) { - return Object.values(events) - .find(event => event.callable === callable && event.delegationSelector === delegationSelector) -} - -function normalizeParameters(originalTypeEvent, handler, delegationFunction) { - const isDelegated = typeof handler === 'string' - // TODO: tooltip passes `false` instead of selector, so we need to check - const callable = isDelegated ? delegationFunction : (handler || delegationFunction) - let typeEvent = getTypeEvent(originalTypeEvent) - - if (!nativeEvents.has(typeEvent)) { - typeEvent = originalTypeEvent - } - - return [isDelegated, callable, typeEvent] -} - -function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { - if (typeof originalTypeEvent !== 'string' || !element) { - return - } - - let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction) - - // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position - // this prevents the handler from being dispatched the same way as mouseover or mouseout does - if (originalTypeEvent in customEvents) { - const wrapFunction = fn => { - return function (event) { - if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) { - return fn.call(this, event) - } - } - } - - callable = wrapFunction(callable) - } - - const events = getElementEvents(element) - const handlers = events[typeEvent] || (events[typeEvent] = {}) - const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null) - - if (previousFunction) { - previousFunction.oneOff = previousFunction.oneOff && oneOff - - return - } - - const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')) - const fn = isDelegated ? - bootstrapDelegationHandler(element, handler, callable) : - bootstrapHandler(element, callable) - - fn.delegationSelector = isDelegated ? handler : null - fn.callable = callable - fn.oneOff = oneOff - fn.uidEvent = uid - handlers[uid] = fn - - element.addEventListener(typeEvent, fn, isDelegated) -} - -function removeHandler(element, events, typeEvent, handler, delegationSelector) { - const fn = findHandler(events[typeEvent], handler, delegationSelector) - - if (!fn) { - return - } - - element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)) - delete events[typeEvent][fn.uidEvent] -} - -function removeNamespacedHandlers(element, events, typeEvent, namespace) { - const storeElementEvent = events[typeEvent] || {} - - for (const [handlerKey, event] of Object.entries(storeElementEvent)) { - if (handlerKey.includes(namespace)) { - removeHandler(element, events, typeEvent, event.callable, event.delegationSelector) - } - } -} - -function getTypeEvent(event) { - // allow to get the native events from namespaced events ('click.bs.button' --> 'click') - event = event.replace(stripNameRegex, '') - return customEvents[event] || event -} - -const EventHandler = { - on(element, event, handler, delegationFunction) { - addHandler(element, event, handler, delegationFunction, false) - }, - - one(element, event, handler, delegationFunction) { - addHandler(element, event, handler, delegationFunction, true) - }, - - off(element, originalTypeEvent, handler, delegationFunction) { - if (typeof originalTypeEvent !== 'string' || !element) { - return - } - - const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction) - const inNamespace = typeEvent !== originalTypeEvent - const events = getElementEvents(element) - const storeElementEvent = events[typeEvent] || {} - const isNamespace = originalTypeEvent.startsWith('.') - - if (typeof callable !== 'undefined') { - // Simplest case: handler is passed, remove that listener ONLY. - if (!Object.keys(storeElementEvent).length) { - return - } - - removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null) - return - } - - if (isNamespace) { - for (const elementEvent of Object.keys(events)) { - removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)) - } - } - - for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { - const handlerKey = keyHandlers.replace(stripUidRegex, '') - - if (!inNamespace || originalTypeEvent.includes(handlerKey)) { - removeHandler(element, events, typeEvent, event.callable, event.delegationSelector) - } - } - }, - - trigger(element, event, args) { - if (typeof event !== 'string' || !element) { - return null - } - - const $ = getjQuery() - const typeEvent = getTypeEvent(event) - const inNamespace = event !== typeEvent - - let jQueryEvent = null - let bubbles = true - let nativeDispatch = true - let defaultPrevented = false - - if (inNamespace && $) { - jQueryEvent = $.Event(event, args) - - $(element).trigger(jQueryEvent) - bubbles = !jQueryEvent.isPropagationStopped() - nativeDispatch = !jQueryEvent.isImmediatePropagationStopped() - defaultPrevented = jQueryEvent.isDefaultPrevented() - } - - const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args) - - if (defaultPrevented) { - evt.preventDefault() - } - - if (nativeDispatch) { - element.dispatchEvent(evt) - } - - if (evt.defaultPrevented && jQueryEvent) { - jQueryEvent.preventDefault() - } - - return evt - } -} - -function hydrateObj(obj, meta = {}) { - for (const [key, value] of Object.entries(meta)) { - try { - obj[key] = value - } catch { - Object.defineProperty(obj, key, { - configurable: true, - get() { - return value - } - }) - } - } - - return obj -} - -export default EventHandler diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/manipulator.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/manipulator.js deleted file mode 100644 index dd86a9ff..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/manipulator.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap dom/manipulator.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -function normalizeData(value) { - if (value === 'true') { - return true - } - - if (value === 'false') { - return false - } - - if (value === Number(value).toString()) { - return Number(value) - } - - if (value === '' || value === 'null') { - return null - } - - if (typeof value !== 'string') { - return value - } - - try { - return JSON.parse(decodeURIComponent(value)) - } catch { - return value - } -} - -function normalizeDataKey(key) { - return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`) -} - -const Manipulator = { - setDataAttribute(element, key, value) { - element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value) - }, - - removeDataAttribute(element, key) { - element.removeAttribute(`data-bs-${normalizeDataKey(key)}`) - }, - - getDataAttributes(element) { - if (!element) { - return {} - } - - const attributes = {} - const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')) - - for (const key of bsKeys) { - let pureKey = key.replace(/^bs/, '') - pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length) - attributes[pureKey] = normalizeData(element.dataset[key]) - } - - return attributes - }, - - getDataAttribute(element, key) { - return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)) - } -} - -export default Manipulator diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/selector-engine.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/selector-engine.js deleted file mode 100644 index a4d81f3b..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dom/selector-engine.js +++ /dev/null @@ -1,126 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap dom/selector-engine.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import { isDisabled, isVisible, parseSelector } from '../util/index.js' - -const getSelector = element => { - let selector = element.getAttribute('data-bs-target') - - if (!selector || selector === '#') { - let hrefAttribute = element.getAttribute('href') - - // The only valid content that could double as a selector are IDs or classes, - // so everything starting with `#` or `.`. If a "real" URL is used as the selector, - // `document.querySelector` will rightfully complain it is invalid. - // See https://github.com/twbs/bootstrap/issues/32273 - if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) { - return null - } - - // Just in case some CMS puts out a full URL with the anchor appended - if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { - hrefAttribute = `#${hrefAttribute.split('#')[1]}` - } - - selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null - } - - return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null -} - -const SelectorEngine = { - find(selector, element = document.documentElement) { - return [].concat(...Element.prototype.querySelectorAll.call(element, selector)) - }, - - findOne(selector, element = document.documentElement) { - return Element.prototype.querySelector.call(element, selector) - }, - - children(element, selector) { - return [].concat(...element.children).filter(child => child.matches(selector)) - }, - - parents(element, selector) { - const parents = [] - let ancestor = element.parentNode.closest(selector) - - while (ancestor) { - parents.push(ancestor) - ancestor = ancestor.parentNode.closest(selector) - } - - return parents - }, - - prev(element, selector) { - let previous = element.previousElementSibling - - while (previous) { - if (previous.matches(selector)) { - return [previous] - } - - previous = previous.previousElementSibling - } - - return [] - }, - // TODO: this is now unused; remove later along with prev() - next(element, selector) { - let next = element.nextElementSibling - - while (next) { - if (next.matches(selector)) { - return [next] - } - - next = next.nextElementSibling - } - - return [] - }, - - focusableChildren(element) { - const focusables = [ - 'a', - 'button', - 'input', - 'textarea', - 'select', - 'details', - '[tabindex]', - '[contenteditable="true"]' - ].map(selector => `${selector}:not([tabindex^="-"])`).join(',') - - return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)) - }, - - getSelectorFromElement(element) { - const selector = getSelector(element) - - if (selector) { - return SelectorEngine.findOne(selector) ? selector : null - } - - return null - }, - - getElementFromSelector(element) { - const selector = getSelector(element) - - return selector ? SelectorEngine.findOne(selector) : null - }, - - getMultipleElementsFromSelector(element) { - const selector = getSelector(element) - - return selector ? SelectorEngine.find(selector) : [] - } -} - -export default SelectorEngine diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dropdown.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dropdown.js deleted file mode 100644 index af5fd16f..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/dropdown.js +++ /dev/null @@ -1,455 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap dropdown.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import * as Popper from '@popperjs/core' -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import Manipulator from './dom/manipulator.js' -import SelectorEngine from './dom/selector-engine.js' -import { - defineJQueryPlugin, - execute, - getElement, - getNextActiveElement, - isDisabled, - isElement, - isRTL, - isVisible, - noop -} from './util/index.js' - -/** - * Constants - */ - -const NAME = 'dropdown' -const DATA_KEY = 'bs.dropdown' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' - -const ESCAPE_KEY = 'Escape' -const TAB_KEY = 'Tab' -const ARROW_UP_KEY = 'ArrowUp' -const ARROW_DOWN_KEY = 'ArrowDown' -const RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button - -const EVENT_HIDE = `hide${EVENT_KEY}` -const EVENT_HIDDEN = `hidden${EVENT_KEY}` -const EVENT_SHOW = `show${EVENT_KEY}` -const EVENT_SHOWN = `shown${EVENT_KEY}` -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` -const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}` -const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}` - -const CLASS_NAME_SHOW = 'show' -const CLASS_NAME_DROPUP = 'dropup' -const CLASS_NAME_DROPEND = 'dropend' -const CLASS_NAME_DROPSTART = 'dropstart' -const CLASS_NAME_DROPUP_CENTER = 'dropup-center' -const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center' - -const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)' -const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}` -const SELECTOR_MENU = '.dropdown-menu' -const SELECTOR_NAVBAR = '.navbar' -const SELECTOR_NAVBAR_NAV = '.navbar-nav' -const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' - -const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start' -const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end' -const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start' -const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end' -const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start' -const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start' -const PLACEMENT_TOPCENTER = 'top' -const PLACEMENT_BOTTOMCENTER = 'bottom' - -const Default = { - autoClose: true, - boundary: 'clippingParents', - display: 'dynamic', - offset: [0, 2], - popperConfig: null, - reference: 'toggle' -} - -const DefaultType = { - autoClose: '(boolean|string)', - boundary: '(string|element)', - display: 'string', - offset: '(array|string|function)', - popperConfig: '(null|object|function)', - reference: '(string|element|object)' -} - -/** - * Class definition - */ - -class Dropdown extends BaseComponent { - constructor(element, config) { - super(element, config) - - this._popper = null - this._parent = this._element.parentNode // dropdown wrapper - // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ - this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || - SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || - SelectorEngine.findOne(SELECTOR_MENU, this._parent) - this._inNavbar = this._detectNavbar() - } - - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Public - toggle() { - return this._isShown() ? this.hide() : this.show() - } - - show() { - if (isDisabled(this._element) || this._isShown()) { - return - } - - const relatedTarget = { - relatedTarget: this._element - } - - const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget) - - if (showEvent.defaultPrevented) { - return - } - - this._createPopper() - - // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { - for (const element of [].concat(...document.body.children)) { - EventHandler.on(element, 'mouseover', noop) - } - } - - this._element.focus() - this._element.setAttribute('aria-expanded', true) - - this._menu.classList.add(CLASS_NAME_SHOW) - this._element.classList.add(CLASS_NAME_SHOW) - EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget) - } - - hide() { - if (isDisabled(this._element) || !this._isShown()) { - return - } - - const relatedTarget = { - relatedTarget: this._element - } - - this._completeHide(relatedTarget) - } - - dispose() { - if (this._popper) { - this._popper.destroy() - } - - super.dispose() - } - - update() { - this._inNavbar = this._detectNavbar() - if (this._popper) { - this._popper.update() - } - } - - // Private - _completeHide(relatedTarget) { - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget) - if (hideEvent.defaultPrevented) { - return - } - - // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - if ('ontouchstart' in document.documentElement) { - for (const element of [].concat(...document.body.children)) { - EventHandler.off(element, 'mouseover', noop) - } - } - - if (this._popper) { - this._popper.destroy() - } - - this._menu.classList.remove(CLASS_NAME_SHOW) - this._element.classList.remove(CLASS_NAME_SHOW) - this._element.setAttribute('aria-expanded', 'false') - Manipulator.removeDataAttribute(this._menu, 'popper') - EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget) - } - - _getConfig(config) { - config = super._getConfig(config) - - if (typeof config.reference === 'object' && !isElement(config.reference) && - typeof config.reference.getBoundingClientRect !== 'function' - ) { - // Popper virtual elements require a getBoundingClientRect method - throw new TypeError(`${NAME.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`) - } - - return config - } - - _createPopper() { - if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)') - } - - let referenceElement = this._element - - if (this._config.reference === 'parent') { - referenceElement = this._parent - } else if (isElement(this._config.reference)) { - referenceElement = getElement(this._config.reference) - } else if (typeof this._config.reference === 'object') { - referenceElement = this._config.reference - } - - const popperConfig = this._getPopperConfig() - this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig) - } - - _isShown() { - return this._menu.classList.contains(CLASS_NAME_SHOW) - } - - _getPlacement() { - const parentDropdown = this._parent - - if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { - return PLACEMENT_RIGHT - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { - return PLACEMENT_LEFT - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { - return PLACEMENT_TOPCENTER - } - - if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { - return PLACEMENT_BOTTOMCENTER - } - - // We need to trim the value because custom properties can also include spaces - const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end' - - if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { - return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP - } - - return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM - } - - _detectNavbar() { - return this._element.closest(SELECTOR_NAVBAR) !== null - } - - _getOffset() { - const { offset } = this._config - - if (typeof offset === 'string') { - return offset.split(',').map(value => Number.parseInt(value, 10)) - } - - if (typeof offset === 'function') { - return popperData => offset(popperData, this._element) - } - - return offset - } - - _getPopperConfig() { - const defaultBsPopperConfig = { - placement: this._getPlacement(), - modifiers: [{ - name: 'preventOverflow', - options: { - boundary: this._config.boundary - } - }, - { - name: 'offset', - options: { - offset: this._getOffset() - } - }] - } - - // Disable Popper if we have a static display or Dropdown is in Navbar - if (this._inNavbar || this._config.display === 'static') { - Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove - defaultBsPopperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false - }] - } - - return { - ...defaultBsPopperConfig, - ...execute(this._config.popperConfig, [defaultBsPopperConfig]) - } - } - - _selectMenuItem({ key, target }) { - const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)) - - if (!items.length) { - return - } - - // if target isn't included in items (e.g. when expanding the dropdown) - // allow cycling to get the last item in case key equals ARROW_UP_KEY - getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus() - } - - // Static - static jQueryInterface(config) { - return this.each(function () { - const data = Dropdown.getOrCreateInstance(this, config) - - if (typeof config !== 'string') { - return - } - - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`) - } - - data[config]() - }) - } - - static clearMenus(event) { - if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) { - return - } - - const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN) - - for (const toggle of openToggles) { - const context = Dropdown.getInstance(toggle) - if (!context || context._config.autoClose === false) { - continue - } - - const composedPath = event.composedPath() - const isMenuTarget = composedPath.includes(context._menu) - if ( - composedPath.includes(context._element) || - (context._config.autoClose === 'inside' && !isMenuTarget) || - (context._config.autoClose === 'outside' && isMenuTarget) - ) { - continue - } - - // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu - if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) { - continue - } - - const relatedTarget = { relatedTarget: context._element } - - if (event.type === 'click') { - relatedTarget.clickEvent = event - } - - context._completeHide(relatedTarget) - } - } - - static dataApiKeydownHandler(event) { - // If not an UP | DOWN | ESCAPE key => not a dropdown command - // If input/textarea && if key is other than ESCAPE => not a dropdown command - - const isInput = /input|textarea/i.test(event.target.tagName) - const isEscapeEvent = event.key === ESCAPE_KEY - const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key) - - if (!isUpOrDownEvent && !isEscapeEvent) { - return - } - - if (isInput && !isEscapeEvent) { - return - } - - event.preventDefault() - - // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ - const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? - this : - (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] || - SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] || - SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode)) - - const instance = Dropdown.getOrCreateInstance(getToggleButton) - - if (isUpOrDownEvent) { - event.stopPropagation() - instance.show() - instance._selectMenuItem(event) - return - } - - if (instance._isShown()) { // else is escape and we check if it is shown - event.stopPropagation() - instance.hide() - getToggleButton.focus() - } - } -} - -/** - * Data API implementation - */ - -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler) -EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler) -EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus) -EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus) -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { - event.preventDefault() - Dropdown.getOrCreateInstance(this).toggle() -}) - -/** - * jQuery - */ - -defineJQueryPlugin(Dropdown) - -export default Dropdown diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/modal.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/modal.js deleted file mode 100644 index dd61649e..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/modal.js +++ /dev/null @@ -1,378 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap modal.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import SelectorEngine from './dom/selector-engine.js' -import Backdrop from './util/backdrop.js' -import { enableDismissTrigger } from './util/component-functions.js' -import FocusTrap from './util/focustrap.js' -import { - defineJQueryPlugin, isRTL, isVisible, reflow -} from './util/index.js' -import ScrollBarHelper from './util/scrollbar.js' - -/** - * Constants - */ - -const NAME = 'modal' -const DATA_KEY = 'bs.modal' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' -const ESCAPE_KEY = 'Escape' - -const EVENT_HIDE = `hide${EVENT_KEY}` -const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}` -const EVENT_HIDDEN = `hidden${EVENT_KEY}` -const EVENT_SHOW = `show${EVENT_KEY}` -const EVENT_SHOWN = `shown${EVENT_KEY}` -const EVENT_RESIZE = `resize${EVENT_KEY}` -const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}` -const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}` -const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}` -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` - -const CLASS_NAME_OPEN = 'modal-open' -const CLASS_NAME_FADE = 'fade' -const CLASS_NAME_SHOW = 'show' -const CLASS_NAME_STATIC = 'modal-static' - -const OPEN_SELECTOR = '.modal.show' -const SELECTOR_DIALOG = '.modal-dialog' -const SELECTOR_MODAL_BODY = '.modal-body' -const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]' - -const Default = { - backdrop: true, - focus: true, - keyboard: true -} - -const DefaultType = { - backdrop: '(boolean|string)', - focus: 'boolean', - keyboard: 'boolean' -} - -/** - * Class definition - */ - -class Modal extends BaseComponent { - constructor(element, config) { - super(element, config) - - this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element) - this._backdrop = this._initializeBackDrop() - this._focustrap = this._initializeFocusTrap() - this._isShown = false - this._isTransitioning = false - this._scrollBar = new ScrollBarHelper() - - this._addEventListeners() - } - - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Public - toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget) - } - - show(relatedTarget) { - if (this._isShown || this._isTransitioning) { - return - } - - const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { - relatedTarget - }) - - if (showEvent.defaultPrevented) { - return - } - - this._isShown = true - this._isTransitioning = true - - this._scrollBar.hide() - - document.body.classList.add(CLASS_NAME_OPEN) - - this._adjustDialog() - - this._backdrop.show(() => this._showElement(relatedTarget)) - } - - hide() { - if (!this._isShown || this._isTransitioning) { - return - } - - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE) - - if (hideEvent.defaultPrevented) { - return - } - - this._isShown = false - this._isTransitioning = true - this._focustrap.deactivate() - - this._element.classList.remove(CLASS_NAME_SHOW) - - this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()) - } - - dispose() { - EventHandler.off(window, EVENT_KEY) - EventHandler.off(this._dialog, EVENT_KEY) - - this._backdrop.dispose() - this._focustrap.deactivate() - - super.dispose() - } - - handleUpdate() { - this._adjustDialog() - } - - // Private - _initializeBackDrop() { - return new Backdrop({ - isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value, - isAnimated: this._isAnimated() - }) - } - - _initializeFocusTrap() { - return new FocusTrap({ - trapElement: this._element - }) - } - - _showElement(relatedTarget) { - // try to append dynamic modal - if (!document.body.contains(this._element)) { - document.body.append(this._element) - } - - this._element.style.display = 'block' - this._element.removeAttribute('aria-hidden') - this._element.setAttribute('aria-modal', true) - this._element.setAttribute('role', 'dialog') - this._element.scrollTop = 0 - - const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog) - if (modalBody) { - modalBody.scrollTop = 0 - } - - reflow(this._element) - - this._element.classList.add(CLASS_NAME_SHOW) - - const transitionComplete = () => { - if (this._config.focus) { - this._focustrap.activate() - } - - this._isTransitioning = false - EventHandler.trigger(this._element, EVENT_SHOWN, { - relatedTarget - }) - } - - this._queueCallback(transitionComplete, this._dialog, this._isAnimated()) - } - - _addEventListeners() { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { - if (event.key !== ESCAPE_KEY) { - return - } - - if (this._config.keyboard) { - this.hide() - return - } - - this._triggerBackdropTransition() - }) - - EventHandler.on(window, EVENT_RESIZE, () => { - if (this._isShown && !this._isTransitioning) { - this._adjustDialog() - } - }) - - EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { - // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks - EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { - if (this._element !== event.target || this._element !== event2.target) { - return - } - - if (this._config.backdrop === 'static') { - this._triggerBackdropTransition() - return - } - - if (this._config.backdrop) { - this.hide() - } - }) - }) - } - - _hideModal() { - this._element.style.display = 'none' - this._element.setAttribute('aria-hidden', true) - this._element.removeAttribute('aria-modal') - this._element.removeAttribute('role') - this._isTransitioning = false - - this._backdrop.hide(() => { - document.body.classList.remove(CLASS_NAME_OPEN) - this._resetAdjustments() - this._scrollBar.reset() - EventHandler.trigger(this._element, EVENT_HIDDEN) - }) - } - - _isAnimated() { - return this._element.classList.contains(CLASS_NAME_FADE) - } - - _triggerBackdropTransition() { - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED) - if (hideEvent.defaultPrevented) { - return - } - - const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight - const initialOverflowY = this._element.style.overflowY - // return if the following background transition hasn't yet completed - if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { - return - } - - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden' - } - - this._element.classList.add(CLASS_NAME_STATIC) - this._queueCallback(() => { - this._element.classList.remove(CLASS_NAME_STATIC) - this._queueCallback(() => { - this._element.style.overflowY = initialOverflowY - }, this._dialog) - }, this._dialog) - - this._element.focus() - } - - /** - * The following methods are used to handle overflowing modals - */ - - _adjustDialog() { - const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight - const scrollbarWidth = this._scrollBar.getWidth() - const isBodyOverflowing = scrollbarWidth > 0 - - if (isBodyOverflowing && !isModalOverflowing) { - const property = isRTL() ? 'paddingLeft' : 'paddingRight' - this._element.style[property] = `${scrollbarWidth}px` - } - - if (!isBodyOverflowing && isModalOverflowing) { - const property = isRTL() ? 'paddingRight' : 'paddingLeft' - this._element.style[property] = `${scrollbarWidth}px` - } - } - - _resetAdjustments() { - this._element.style.paddingLeft = '' - this._element.style.paddingRight = '' - } - - // Static - static jQueryInterface(config, relatedTarget) { - return this.each(function () { - const data = Modal.getOrCreateInstance(this, config) - - if (typeof config !== 'string') { - return - } - - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`) - } - - data[config](relatedTarget) - }) - } -} - -/** - * Data API implementation - */ - -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { - const target = SelectorEngine.getElementFromSelector(this) - - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault() - } - - EventHandler.one(target, EVENT_SHOW, showEvent => { - if (showEvent.defaultPrevented) { - // only register focus restorer if modal will actually get shown - return - } - - EventHandler.one(target, EVENT_HIDDEN, () => { - if (isVisible(this)) { - this.focus() - } - }) - }) - - // avoid conflict when clicking modal toggler while another one is open - const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR) - if (alreadyOpen) { - Modal.getInstance(alreadyOpen).hide() - } - - const data = Modal.getOrCreateInstance(target) - - data.toggle(this) -}) - -enableDismissTrigger(Modal) - -/** - * jQuery - */ - -defineJQueryPlugin(Modal) - -export default Modal diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/offcanvas.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/offcanvas.js deleted file mode 100644 index 8d1feb13..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/offcanvas.js +++ /dev/null @@ -1,282 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap offcanvas.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import SelectorEngine from './dom/selector-engine.js' -import Backdrop from './util/backdrop.js' -import { enableDismissTrigger } from './util/component-functions.js' -import FocusTrap from './util/focustrap.js' -import { - defineJQueryPlugin, - isDisabled, - isVisible -} from './util/index.js' -import ScrollBarHelper from './util/scrollbar.js' - -/** - * Constants - */ - -const NAME = 'offcanvas' -const DATA_KEY = 'bs.offcanvas' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' -const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}` -const ESCAPE_KEY = 'Escape' - -const CLASS_NAME_SHOW = 'show' -const CLASS_NAME_SHOWING = 'showing' -const CLASS_NAME_HIDING = 'hiding' -const CLASS_NAME_BACKDROP = 'offcanvas-backdrop' -const OPEN_SELECTOR = '.offcanvas.show' - -const EVENT_SHOW = `show${EVENT_KEY}` -const EVENT_SHOWN = `shown${EVENT_KEY}` -const EVENT_HIDE = `hide${EVENT_KEY}` -const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}` -const EVENT_HIDDEN = `hidden${EVENT_KEY}` -const EVENT_RESIZE = `resize${EVENT_KEY}` -const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` -const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}` - -const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]' - -const Default = { - backdrop: true, - keyboard: true, - scroll: false -} - -const DefaultType = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - scroll: 'boolean' -} - -/** - * Class definition - */ - -class Offcanvas extends BaseComponent { - constructor(element, config) { - super(element, config) - - this._isShown = false - this._backdrop = this._initializeBackDrop() - this._focustrap = this._initializeFocusTrap() - this._addEventListeners() - } - - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Public - toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget) - } - - show(relatedTarget) { - if (this._isShown) { - return - } - - const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget }) - - if (showEvent.defaultPrevented) { - return - } - - this._isShown = true - this._backdrop.show() - - if (!this._config.scroll) { - new ScrollBarHelper().hide() - } - - this._element.setAttribute('aria-modal', true) - this._element.setAttribute('role', 'dialog') - this._element.classList.add(CLASS_NAME_SHOWING) - - const completeCallBack = () => { - if (!this._config.scroll || this._config.backdrop) { - this._focustrap.activate() - } - - this._element.classList.add(CLASS_NAME_SHOW) - this._element.classList.remove(CLASS_NAME_SHOWING) - EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget }) - } - - this._queueCallback(completeCallBack, this._element, true) - } - - hide() { - if (!this._isShown) { - return - } - - const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE) - - if (hideEvent.defaultPrevented) { - return - } - - this._focustrap.deactivate() - this._element.blur() - this._isShown = false - this._element.classList.add(CLASS_NAME_HIDING) - this._backdrop.hide() - - const completeCallback = () => { - this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING) - this._element.removeAttribute('aria-modal') - this._element.removeAttribute('role') - - if (!this._config.scroll) { - new ScrollBarHelper().reset() - } - - EventHandler.trigger(this._element, EVENT_HIDDEN) - } - - this._queueCallback(completeCallback, this._element, true) - } - - dispose() { - this._backdrop.dispose() - this._focustrap.deactivate() - super.dispose() - } - - // Private - _initializeBackDrop() { - const clickCallback = () => { - if (this._config.backdrop === 'static') { - EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED) - return - } - - this.hide() - } - - // 'static' option will be translated to true, and booleans will keep their value - const isVisible = Boolean(this._config.backdrop) - - return new Backdrop({ - className: CLASS_NAME_BACKDROP, - isVisible, - isAnimated: true, - rootElement: this._element.parentNode, - clickCallback: isVisible ? clickCallback : null - }) - } - - _initializeFocusTrap() { - return new FocusTrap({ - trapElement: this._element - }) - } - - _addEventListeners() { - EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { - if (event.key !== ESCAPE_KEY) { - return - } - - if (this._config.keyboard) { - this.hide() - return - } - - EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED) - }) - } - - // Static - static jQueryInterface(config) { - return this.each(function () { - const data = Offcanvas.getOrCreateInstance(this, config) - - if (typeof config !== 'string') { - return - } - - if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { - throw new TypeError(`No method named "${config}"`) - } - - data[config](this) - }) - } -} - -/** - * Data API implementation - */ - -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { - const target = SelectorEngine.getElementFromSelector(this) - - if (['A', 'AREA'].includes(this.tagName)) { - event.preventDefault() - } - - if (isDisabled(this)) { - return - } - - EventHandler.one(target, EVENT_HIDDEN, () => { - // focus on trigger when it is closed - if (isVisible(this)) { - this.focus() - } - }) - - // avoid conflict when clicking a toggler of an offcanvas, while another is open - const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR) - if (alreadyOpen && alreadyOpen !== target) { - Offcanvas.getInstance(alreadyOpen).hide() - } - - const data = Offcanvas.getOrCreateInstance(target) - data.toggle(this) -}) - -EventHandler.on(window, EVENT_LOAD_DATA_API, () => { - for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { - Offcanvas.getOrCreateInstance(selector).show() - } -}) - -EventHandler.on(window, EVENT_RESIZE, () => { - for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { - if (getComputedStyle(element).position !== 'fixed') { - Offcanvas.getOrCreateInstance(element).hide() - } - } -}) - -enableDismissTrigger(Offcanvas) - -/** - * jQuery - */ - -defineJQueryPlugin(Offcanvas) - -export default Offcanvas diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/popover.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/popover.js deleted file mode 100644 index 612c5218..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/popover.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap popover.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import Tooltip from './tooltip.js' -import { defineJQueryPlugin } from './util/index.js' - -/** - * Constants - */ - -const NAME = 'popover' - -const SELECTOR_TITLE = '.popover-header' -const SELECTOR_CONTENT = '.popover-body' - -const Default = { - ...Tooltip.Default, - content: '', - offset: [0, 8], - placement: 'right', - template: '', - trigger: 'click' -} - -const DefaultType = { - ...Tooltip.DefaultType, - content: '(null|string|element|function)' -} - -/** - * Class definition - */ - -class Popover extends Tooltip { - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Overrides - _isWithContent() { - return this._getTitle() || this._getContent() - } - - // Private - _getContentForTemplate() { - return { - [SELECTOR_TITLE]: this._getTitle(), - [SELECTOR_CONTENT]: this._getContent() - } - } - - _getContent() { - return this._resolvePossibleFunction(this._config.content) - } - - // Static - static jQueryInterface(config) { - return this.each(function () { - const data = Popover.getOrCreateInstance(this, config) - - if (typeof config !== 'string') { - return - } - - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`) - } - - data[config]() - }) - } -} - -/** - * jQuery - */ - -defineJQueryPlugin(Popover) - -export default Popover diff --git a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/scrollspy.js b/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/scrollspy.js deleted file mode 100644 index 368092de..00000000 --- a/src/Yavsc.Org/wwwroot/lib/bootstrap/js/src/scrollspy.js +++ /dev/null @@ -1,296 +0,0 @@ -/** - * -------------------------------------------------------------------------- - * Bootstrap scrollspy.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - * -------------------------------------------------------------------------- - */ - -import BaseComponent from './base-component.js' -import EventHandler from './dom/event-handler.js' -import SelectorEngine from './dom/selector-engine.js' -import { - defineJQueryPlugin, getElement, isDisabled, isVisible -} from './util/index.js' - -/** - * Constants - */ - -const NAME = 'scrollspy' -const DATA_KEY = 'bs.scrollspy' -const EVENT_KEY = `.${DATA_KEY}` -const DATA_API_KEY = '.data-api' - -const EVENT_ACTIVATE = `activate${EVENT_KEY}` -const EVENT_CLICK = `click${EVENT_KEY}` -const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}` - -const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item' -const CLASS_NAME_ACTIVE = 'active' - -const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]' -const SELECTOR_TARGET_LINKS = '[href]' -const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group' -const SELECTOR_NAV_LINKS = '.nav-link' -const SELECTOR_NAV_ITEMS = '.nav-item' -const SELECTOR_LIST_ITEMS = '.list-group-item' -const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}` -const SELECTOR_DROPDOWN = '.dropdown' -const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle' - -const Default = { - offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons - rootMargin: '0px 0px -25%', - smoothScroll: false, - target: null, - threshold: [0.1, 0.5, 1] -} - -const DefaultType = { - offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons - rootMargin: 'string', - smoothScroll: 'boolean', - target: 'element', - threshold: 'array' -} - -/** - * Class definition - */ - -class ScrollSpy extends BaseComponent { - constructor(element, config) { - super(element, config) - - // this._element is the observablesContainer and config.target the menu links wrapper - this._targetLinks = new Map() - this._observableSections = new Map() - this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element - this._activeTarget = null - this._observer = null - this._previousScrollData = { - visibleEntryTop: 0, - parentScrollTop: 0 - } - this.refresh() // initialize - } - - // Getters - static get Default() { - return Default - } - - static get DefaultType() { - return DefaultType - } - - static get NAME() { - return NAME - } - - // Public - refresh() { - this._initializeTargetsAndObservables() - this._maybeEnableSmoothScroll() - - if (this._observer) { - this._observer.disconnect() - } else { - this._observer = this._getNewObserver() - } - - for (const section of this._observableSections.values()) { - this._observer.observe(section) - } - } - - dispose() { - this._observer.disconnect() - super.dispose() - } - - // Private - _configAfterMerge(config) { - // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case - config.target = getElement(config.target) || document.body - - // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only - config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin - - if (typeof config.threshold === 'string') { - config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)) - } - - return config - } - - _maybeEnableSmoothScroll() { - if (!this._config.smoothScroll) { - return - } - - // unregister any previous listeners - EventHandler.off(this._config.target, EVENT_CLICK) - - EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { - const observableSection = this._observableSections.get(event.target.hash) - if (observableSection) { - event.preventDefault() - const root = this._rootElement || window - const height = observableSection.offsetTop - this._element.offsetTop - if (root.scrollTo) { - root.scrollTo({ top: height, behavior: 'smooth' }) - return - } - - // Chrome 60 doesn't support `scrollTo` - root.scrollTop = height - } - }) - } - - _getNewObserver() { - const options = { - root: this._rootElement, - threshold: this._config.threshold, - rootMargin: this._config.rootMargin - } - - return new IntersectionObserver(entries => this._observerCallback(entries), options) - } - - // The logic of selection - _observerCallback(entries) { - const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`) - const activate = entry => { - this._previousScrollData.visibleEntryTop = entry.target.offsetTop - this._process(targetElement(entry)) - } - - const parentScrollTop = (this._rootElement || document.documentElement).scrollTop - const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop - this._previousScrollData.parentScrollTop = parentScrollTop - - for (const entry of entries) { - if (!entry.isIntersecting) { - this._activeTarget = null - this._clearActiveClass(targetElement(entry)) - - continue - } - - const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop - // if we are scrolling down, pick the bigger offsetTop - if (userScrollsDown && entryIsLowerThanPrevious) { - activate(entry) - // if parent isn't scrolled, let's keep the first visible item, breaking the iteration - if (!parentScrollTop) { - return - } - - continue - } - - // if we are scrolling up, pick the smallest offsetTop - if (!userScrollsDown && !entryIsLowerThanPrevious) { - activate(entry) - } - } - } - - _initializeTargetsAndObservables() { - this._targetLinks = new Map() - this._observableSections = new Map() - - const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target) - - for (const anchor of targetLinks) { - // ensure that the anchor has an id and is not disabled - if (!anchor.hash || isDisabled(anchor)) { - continue - } - - const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element) - - // ensure that the observableSection exists & is visible - if (isVisible(observableSection)) { - this._targetLinks.set(decodeURI(anchor.hash), anchor) - this._observableSections.set(anchor.hash, observableSection) - } - } - } - - _process(target) { - if (this._activeTarget === target) { - return - } - - this._clearActiveClass(this._config.target) - this._activeTarget = target - target.classList.add(CLASS_NAME_ACTIVE) - this._activateParents(target) - - EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target }) - } - - _activateParents(target) { - // Activate dropdown parents - if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { - SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN)) - .classList.add(CLASS_NAME_ACTIVE) - return - } - - for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { - // Set triggered links parents as active - // With both - `} /> - - - -
-
-

الجداول

- دليل الإستخدام -
- -
- - - - # - الاسم الاول - الكنية - الاسم المستعار - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - - - `} /> - - - - - # - الاسم الاول - الكنية - الاسم المستعار - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - - - `} /> - - - - - Class - عنوان - عنوان - - - - - Default - خلية - خلية - `, - ...getData('theme-colors').map((themeColor) => ` - ${themeColor.title} - خلية - خلية - `), - ` - - `]} /> - - - - - # - الاسم الاول - الكنية - الاسم المستعار - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - - - `} /> -
-
- - - -
-

النماذج

- -
-
-

نظرة عامة

- دليل الإستخدام -
- -
- -
- - -
لن نقوم بمشاركة بريدك الإلكتروني مع أي شخص آخر.
-
-
- - -
-
- - -
-
- - -
-
- أزرار الاختيار الأحادي -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- - - `} /> -
-
-
-
-

الحقول المعطلة

- دليل الإستخدام -
- -
- -
-
- - -
-
- - -
-
-
- - -
-
-
- أزرار اختيار أحادي معطلين -
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
- -
- - `} /> -
-
-
-
-

الأحجام

- دليل الإستخدام -
- -
- - -
-
- -
-
- -
- `} /> - - - - -
- -
-
- -
- `} /> - -
-
-
-

مجموعة الإدخال

- دليل الإستخدام -
- -
- - أنا اسمي - -
-
- - وغيرها -
- -
- - https://example.com/users/ -
-
- .00 - - $ -
-
- مع textarea - -
- `} /> - -
-
-
-

الحقول ذوي العناوين العائمة

- دليل الإستخدام -
- -
- -
- - -
-
- - -
- - `} /> -
-
-
-
-

التحقق

- دليل الإستخدام -
- -
- -
- - -
- يبدو صحيحًا! -
-
-
- - -
- يبدو صحيحًا! -
-
-
- -
- - @ -
- يرجى اختيار اسم مستخدم. -
-
-
-
- - -
- يرجى إدخال مدينة صحيحة. -
-
-
- - -
- يرجى اختيار ولاية صحيحة. -
-
-
- - -
- يرجى إدخال رمز بريدي صحيح. -
-
-
-
- - -
- تجب الموافقة قبل إرسال النموذج. -
-
-
-
- -
- - `} /> -
-
-
- -
-

العناصر

- -
-
-

المطوية

- دليل الإستخدام -
- -
- -
-

- -

-
-
- هذا هو محتوى عنصر المطوية الأول. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الثاني. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
-

- -

-
-
- هذا هو محتوى عنصر المطوية الثالث. سيكون المحتوى مخفيًا بشكل إفتراضي حتى يقوم Bootstrap بإضافة الكلاسات اللازمة لكل عنصر في المطوية. هذه الكلاسات تتحكم بالمظهر العام ووتتحكم أيضا بإظهار وإخفاء أقسام المطوية عبر حركات CSS الإنتقالية. يمكنك تعديل أي من هذه عبر كلاسات CSS خاصة بك، او عبر تغيير القيم الإفتراضية المقدمة من Bootstrap. من الجدير بالذكر أنه يمكن وضع أي كود HTML هنا، ولكن الحركة الإنتقالية قد تحد من الoverflow. -
-
-
-
- `} /> - -
-
-
-

الإنذارات

- دليل الإستخدام -
- -
- ` - - `)} /> - - -

أحسنت!

-

لقد نجحت في قراءة رسالة التنبيه المهمة هذه. سيتم تشغيل نص المثال هذا لفترة أطول قليلاً حتى تتمكن من رؤية كيفية عمل التباعد داخل التنبيه مع هذا النوع من المحتوى.

-
-

كلما احتجت إلى ذلك ، تأكد من استخدام أدوات الهامش للحفاظ على الأشياء لطيفة ومرتبة.

-
- `} /> - -
-
-
-

الشارة

- دليل الإستخدام -
- -
- مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

-

مثال على عنوان جديد

- `} /> - - ` - ${themeColor.title} - `)} /> -
-
- -
-
-

الأزرار

- دليل الإستخدام -
- -
- ` - - `), - ``]} /> - - ` - - `)} /> - - زر صغير - - - `} /> -
-
- -
-
-

البطاقة

- دليل الإستخدام -
- -
- -
-
- -
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

- اذهب لمكان ما -
-
-
-
-
-
- متميز -
-
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

- اذهب لمكان ما -
- -
-
-
-
-
-
عنوان البطاقة
-

بعض الأمثلة السريعة للنصوص للبناء على عنوان البطاقة وتشكيل الجزء الأكبر من محتوى البطاقة.

-
-
    -
  • عنصر
  • -
  • عنصر آخر
  • -
  • عنصر ثالث
  • -
- -
-
-
-
-
-
- -
-
-
-
عنوان البطاقة
-

هذه بطاقة أعرض مع نص داعم تحتها كمقدمة طبيعية لمحتوى إضافي. هذا المحتوى أطول قليلاً.

-

آخر تحديث منذ 3 دقائق

-
-
-
-
-
-
- `} /> - -
- - -
-
-

مجموعة العناصر

- دليل الإستخدام -
- -
- -
  • عنصر معطل
  • -
  • عنصر ثاني
  • -
  • عنصر ثالث
  • -
  • عنصر رابع
  • -
  • وعنصر خامس أيضًا
  • - - `} /> - - -
  • عنصر
  • -
  • عنصر ثاني
  • -
  • عنصر ثالث
  • -
  • عنصر رابع
  • -
  • وعنصر خامس أيضًا
  • - - `} /> - - - عنصر مجموعة قائمة default بسيط`, - ...getData('theme-colors').map((themeColor) => ` - عنصر مجموعة قائمة ${themeColor.name} بسيط - `), - `
    - `]} /> - -
    - - - - -
    -
    -

    الصناديق المنبثقة

    - دليل الإستخدام -
    - -
    - - انقر لعرض/إخفاء الصندوق المنبثق - - `} /> - - - انبثاق إلى الأعلى - - - - - `} /> -
    -
    -
    -
    -

    شريط التقدم

    - دليل الإستخدام -
    - -
    - -
    0%
    -
    -
    -
    25%
    -
    -
    -
    50%
    -
    -
    -
    75%
    -
    -
    -
    100%
    -
    - `} /> - - -
    -
    -
    -
    -
    -
    - - `} /> - -
    -
    -
    -

    المخطوطة

    - دليل الإستخدام -
    - -
    -
    - -
    -

    @fat

    -

    محتوى لتوضيح كيف تعمل المخطوطة. ببساطة، المخطوطة عبارة عن منشور طويل يحتوي على عدة أقسام، ولديه شريط تنقل يسهل الوصول إلى هذه الأقسام الفرعية.

    -

    @mdo

    -

    بصرف النظر عن تحسيننا جدوى المكيّفات أو عدم تحسينها، فإن الطلب على الطاقة سيزداد. وطبقاً لما جاء في مقالة معهد ماساشوستس للتكنولوجيا، السالف ذكره، ثمَّة أمر يجب عدم إغفاله، وهو كيف أن هذا الطلب سيضغط على نظم توفير الطاقة الحالية. إذ لا بد من إعادة تأهيل كل شبكات الكهرباء، وتوسيعها لتلبية طلب الطاقة في زمن الذروة، خلال موجات الحرارة المتزايدة. فحين يكون الحر شديداً يجنح الناس إلى البقاء في الداخل، وإلى زيادة تشغيل المكيّفات، سعياً إلى جو لطيف وهم يستخدمون أدوات وأجهزة مختلفة أخرى.

    -

    واحد

    -

    وكل هذه الأمور المتزامنة من تشغيل الأجهزة، يزيد الضغط على شبكات الطاقة، كما أسلفنا. لكن مجرد زيادة سعة الشبكة ليس كافياً. إذ لا بد من تطوير الشبكات الذكية التي تستخدم الجسّاسات، ونظم المراقبة، والبرامج الإلكترونية، لتحديد متى يكون الشاغلون في المبنى، ومتى يكون ثمَّة حاجة إلى الطاقة، ومتى تكون الحرارة منخفضة، وبذلك يخرج الناس، فلا يستخدمون كثيراً من الكهرباء.

    -

    اثنان

    -

    مع الأسف، كل هذه الحلول المبتكرة مكلِّفة، وهذا ما يجعلها عديمة الجدوى في نظر بعض الشركات الخاصة والمواطن المتقشّف. إن بعض الأفراد الواعين بيئياً يبذلون قصارى جهدهم في تقليص استهلاكهم من الطاقة، ويعون جيداً أهمية أجهزة التكييف المجدية والأرفق بالبيئة. ولكن جهات كثيرة لن تتحرّك لمجرد حافز سلامة المناخ ووقف هدر الطاقة، ما دامت لا تحركها حوافز قانونية. وعلى الحكومات أن تُقدِم عند الاهتمام بالتغيّر المناخي، على وضع التشريعات المناسبة. فبالنظم والحوافز والدعم، يمكن دفع الشركات إلى اعتماد الحلول الأجدى في مكاتبها.

    -

    ثلاثة

    -

    وكما يتبيّن لنا، من عدد الحلول الملطِّفة للمشكلة، ومن تنوّعها، وهي الحلول التي أسلفنا الحديث عنها، فإن التكنولوجيا التي نحتاج إليها من أجل معالجة هذه التحديات، هي في مدى قدرتنا، لكنها ربما تتطلّب بعض التحسين، ودعماً استثمارياً أكبر!

    -

    ولا مانع من إضافة محتوى آخر ليس تحت أي قسم معين.

    -
    -
    -
    -
    -
    -
    -

    الدوائر المتحركة

    - دليل الإستخدام -
    - -
    - ` -
    - جار التحميل... -
    - `)} /> - - ` -
    - جار التحميل... -
    - `)} /> -
    -
    -
    -
    -

    الإشعارات

    - دليل الإستخدام -
    - -
    - -
    - - Bootstrap - قبل 11 دقيقة - -
    -
    - مرحبًا بالعالم! هذه رسالة إشعار. -
    -
    - `} /> - -
    -
    -
    -

    التلميحات

    - دليل الإستخدام -
    - -
    - تلميح يظهر في الأعلى - - - - - `} /> -
    -
    -
    - - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.css deleted file mode 100644 index 5721a028..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.css +++ /dev/null @@ -1,163 +0,0 @@ -body { - scroll-behavior: smooth; -} - -/** - * Bootstrap "Journal code" icon - * @link https://icons.getbootstrap.com/icons/journal-code/ - */ -.bd-heading a::before { - display: inline-block; - width: 1em; - height: 1em; - margin-right: .25rem; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23999' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); - background-size: 1em; -} - -/* stylelint-disable-next-line selector-max-universal */ -.bd-heading + div > * + * { - margin-top: 3rem; -} - -/* Table of contents */ -.bd-aside a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: .3125rem; - color: var(--bs-body-color); -} - -.bd-aside a:hover, -.bd-aside a:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .active { - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn { - padding: .25rem .5rem; - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn:hover, -.bd-aside .btn:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .btn:focus { - box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); -} - -.bd-aside .btn::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ccc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - - /* rtl:raw: - transform: rotate(180deg) translateX(-2px); - */ - transform-origin: .5em 50%; -} - -.bd-aside .btn[aria-expanded="true"]::before { - transform: rotate(90deg)/* rtl:ignore */; -} - - -/* Examples */ -.scrollspy-example { - height: 200px; -} - -[id="modal"] .bd-example .btn, -[id="buttons"] .bd-example .btn, -[id="tooltips"] .bd-example .btn, -[id="popovers"] .bd-example .btn, -[id="dropdowns"] .bd-example .btn-group, -[id="dropdowns"] .bd-example .dropdown, -[id="dropdowns"] .bd-example .dropup, -[id="dropdowns"] .bd-example .dropend, -[id="dropdowns"] .bd-example .dropstart { - margin: 0 1rem 1rem 0; -} - -/* Layout */ -@media (min-width: 1200px) { - body { - display: grid; - grid-template-rows: auto; - grid-template-columns: 1fr 4fr 1fr; - gap: 1rem; - } - - .bd-header { - position: fixed; - top: 0; - /* rtl:begin:ignore */ - right: 0; - left: 0; - /* rtl:end:ignore */ - z-index: 1030; - grid-column: 1 / span 3; - } - - .bd-aside, - .bd-cheatsheet { - padding-top: 4rem; - } - - /** - * 1. Too bad only Firefox supports subgrids ATM - */ - .bd-cheatsheet, - .bd-cheatsheet section, - .bd-cheatsheet article { - display: inherit; /* 1 */ - grid-template-rows: auto; - grid-template-columns: 1fr 4fr; - grid-column: 1 / span 2; - gap: inherit; /* 1 */ - } - - .bd-aside { - grid-area: 1 / 3; - scroll-margin-top: 4rem; - } - - .bd-cheatsheet section, - .bd-cheatsheet section > h2 { - top: 2rem; - scroll-margin-top: 2rem; - } - - .bd-cheatsheet section > h2::before { - position: absolute; - /* rtl:begin:ignore */ - top: 0; - right: 0; - bottom: -2rem; - left: 0; - /* rtl:end:ignore */ - z-index: -1; - content: ""; - } - - .bd-cheatsheet article, - .bd-cheatsheet .bd-heading { - top: 8rem; - scroll-margin-top: 8rem; - } - - .bd-cheatsheet .bd-heading { - z-index: 1; - } -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.js deleted file mode 100644 index e25a89e7..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.js +++ /dev/null @@ -1,73 +0,0 @@ -/* global bootstrap: false */ - -(() => { - 'use strict' - - // Tooltip and popover demos - document.querySelectorAll('.tooltip-demo') - .forEach(tooltip => { - new bootstrap.Tooltip(tooltip, { - selector: '[data-bs-toggle="tooltip"]' - }) - }) - - document.querySelectorAll('[data-bs-toggle="popover"]') - .forEach(popover => { - new bootstrap.Popover(popover) - }) - - document.querySelectorAll('.toast') - .forEach(toastNode => { - const toast = new bootstrap.Toast(toastNode, { - autohide: false - }) - - toast.show() - }) - - // Disable empty links and submit buttons - document.querySelectorAll('[href="#"], [type="submit"]') - .forEach(link => { - link.addEventListener('click', event => { - event.preventDefault() - }) - }) - - function setActiveItem() { - const { hash } = window.location - - if (hash === '') { - return - } - - const link = document.querySelector(`.bd-aside a[href="${hash}"]`) - - if (!link) { - return - } - - const active = document.querySelector('.bd-aside .active') - const parent = link.parentNode.parentNode.previousElementSibling - - link.classList.add('active') - - if (parent.classList.contains('collapsed')) { - parent.click() - } - - if (!active) { - return - } - - const expanded = active.parentNode.parentNode.previousElementSibling - - active.classList.remove('active') - - if (expanded && parent !== expanded) { - expanded.click() - } - } - - setActiveItem() - window.addEventListener('hashchange', setActiveItem) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.rtl.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.rtl.css deleted file mode 100644 index 416e39fc..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/cheatsheet.rtl.css +++ /dev/null @@ -1,156 +0,0 @@ -body { - scroll-behavior: smooth; -} - -/** - * Bootstrap "Journal code" icon - * @link https://icons.getbootstrap.com/icons/journal-code/ - */ -.bd-heading a::before { - display: inline-block; - width: 1em; - height: 1em; - margin-left: .25rem; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23999' viewBox='0 0 16 16'%3E%3Cpath d='M4 1h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2h1a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1H2a2 2 0 0 1 2-2z'/%3E%3Cpath d='M2 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H2z'/%3E%3Cpath fill-rule='evenodd' d='M8.646 5.646a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1 0 .708l-2 2a.5.5 0 0 1-.708-.708L10.293 8 8.646 6.354a.5.5 0 0 1 0-.708zm-1.292 0a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 0 .708l2 2a.5.5 0 0 0 .708-.708L5.707 8l1.647-1.646a.5.5 0 0 0 0-.708z'/%3E%3C/svg%3E"); - background-size: 1em; -} - -/* stylelint-disable-next-line selector-max-universal */ -.bd-heading + div > * + * { - margin-top: 3rem; -} - -/* Table of contents */ -.bd-aside a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-right: .3125rem; - color: var(--bs-body-color); -} - -.bd-aside a:hover, -.bd-aside a:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .active { - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn { - padding: .25rem .5rem; - font-weight: 600; - color: var(--bs-body-color); -} - -.bd-aside .btn:hover, -.bd-aside .btn:focus { - color: var(--bs-body-color); - background-color: rgba(121, 82, 179, .1); -} - -.bd-aside .btn:focus { - box-shadow: 0 0 0 1px rgba(121, 82, 179, .7); -} - -.bd-aside .btn::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ccc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - transform: rotate(180deg) translateX(-2px); - transform-origin: .5em 50%; -} - -.bd-aside .btn[aria-expanded="true"]::before { - transform: rotate(90deg); -} - - -/* Examples */ -.scrollspy-example { - height: 200px; -} - -[id="modal"] .bd-example .btn, -[id="buttons"] .bd-example .btn, -[id="tooltips"] .bd-example .btn, -[id="popovers"] .bd-example .btn, -[id="dropdowns"] .bd-example .btn-group, -[id="dropdowns"] .bd-example .dropdown, -[id="dropdowns"] .bd-example .dropup, -[id="dropdowns"] .bd-example .dropend, -[id="dropdowns"] .bd-example .dropstart { - margin: 0 0 1rem 1rem; -} - -/* Layout */ -@media (min-width: 1200px) { - body { - display: grid; - grid-template-rows: auto; - grid-template-columns: 1fr 4fr 1fr; - gap: 1rem; - } - - .bd-header { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; - grid-column: 1 / span 3; - } - - .bd-aside, - .bd-cheatsheet { - padding-top: 4rem; - } - - /** - * 1. Too bad only Firefox supports subgrids ATM - */ - .bd-cheatsheet, - .bd-cheatsheet section, - .bd-cheatsheet article { - display: inherit; /* 1 */ - grid-template-rows: auto; - grid-template-columns: 1fr 4fr; - grid-column: 1 / span 2; - gap: inherit; /* 1 */ - } - - .bd-aside { - grid-area: 1 / 3; - scroll-margin-top: 4rem; - } - - .bd-cheatsheet section, - .bd-cheatsheet section > h2 { - top: 2rem; - scroll-margin-top: 2rem; - } - - .bd-cheatsheet section > h2::before { - position: absolute; - top: 0; - right: 0; - bottom: -2rem; - left: 0; - z-index: -1; - content: ""; - } - - .bd-cheatsheet article, - .bd-cheatsheet .bd-heading { - top: 8rem; - scroll-margin-top: 8rem; - } - - .bd-cheatsheet .bd-heading { - z-index: 1; - } -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/index.astro deleted file mode 100644 index ae2752e0..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cheatsheet/index.astro +++ /dev/null @@ -1,1563 +0,0 @@ ---- -import { getData } from '@libs/data' -import { getVersionedDocsPath } from '@libs/path' -import Example from '@shortcodes/Example.astro' -import Placeholder from '@shortcodes/Placeholder.astro' - -export const title = 'Cheatsheet' -export const extra_css = ['cheatsheet.css'] -export const extra_js = [{ src: 'cheatsheet.js' }] -export const body_class = 'bg-body-tertiary' ---- - -
    -
    -

    - Bootstrap - Cheatsheet -

    - RTL cheatsheet -
    -
    - -
    -
    -

    Contents

    - -
    -
    -

    Typography

    - Documentation -
    - -
    - Display 1

    -

    Display 2

    -

    Display 3

    -

    Display 4

    -

    Display 5

    -

    Display 6

    `} /> - - Heading 1

    -

    Heading 2

    -

    Heading 3

    -

    Heading 4

    -

    Heading 5

    -

    Heading 6

    `} /> - - - This is a lead paragraph. It stands out from regular paragraphs. -

    `} /> - - You can use the mark tag to highlight text.

    -

    This line of text is meant to be treated as deleted text.

    -

    This line of text is meant to be treated as no longer accurate.

    -

    This line of text is meant to be treated as an addition to the document.

    -

    This line of text will render as underlined.

    -

    This line of text is meant to be treated as fine print.

    -

    This line rendered as bold text.

    -

    This line rendered as italicized text.

    `} /> - - `} /> - - -

    A well-known quote, contained in a blockquote element.

    -
    Someone famous in Source Title
    - `} /> - - -
  • This is a list.
  • -
  • It appears completely unstyled.
  • -
  • Structurally, it's still a list.
  • -
  • However, this style only applies to immediate child elements.
  • -
  • Nested lists: -
      -
    • are unaffected by this style
    • -
    • will still show a bullet
    • -
    • and have appropriate left margin
    • -
    -
  • -
  • This may still come in handy in some situations.
  • - `} /> - - -
  • This is a list item.
  • -
  • And another one.
  • -
  • But they're displayed inline.
  • - `} /> -
    -
    - -
    -
    -

    Tables

    - Documentation -
    -
    - - - - # - First - Last - Handle - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - - `} /> - - - - - # - First - Last - Handle - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - - `} /> - - - - - Class - Heading - Heading - - - - - Default - Cell - Cell - `, - ...getData('theme-colors').map((themeColor) => ` - ${themeColor.title} - Cell - Cell - `), - ` - `]} /> - - - - - # - First - Last - Handle - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - - `} /> -
    -
    - -
    -
    -

    Figures

    - Documentation -
    - -
    - - -
    A caption for the above image.
    - `} /> -
    -
    -
    - -
    -

    Forms

    - -
    -
    -

    Overview

    - Documentation -
    - -
    - -
    - - -
    We'll never share your email with anyone else.
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - Radios buttons -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    - - `} /> -
    -
    -
    -
    -

    Disabled forms

    - Documentation -
    - -
    - -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    -
    - Disabled radios buttons -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    - -
    - `} /> -
    -
    -
    -
    -

    Sizing

    - Documentation -
    - -
    - - -
    -
    - -
    -
    - -
    `} /> - - - - -
    - -
    -
    - -
    - `} /> - -
    -
    -
    -

    Input group

    - Documentation -
    - -
    - - @ - -
    -
    - - @example.com -
    - -
    - https://example.com/users/ - -
    -
    - $ - - .00 -
    -
    - With textarea - -
    - `} /> - -
    -
    -
    -

    Floating labels

    - Documentation -
    - -
    - -
    - - -
    -
    - - -
    - - `} /> -
    -
    -
    -
    -

    Validation

    - Documentation -
    - -
    - -
    - - -
    - Looks good! -
    -
    -
    - - -
    - Looks good! -
    -
    -
    - -
    - @ - -
    - Please choose a username. -
    -
    -
    -
    - - -
    - Please provide a valid city. -
    -
    -
    - - -
    - Please select a valid state. -
    -
    -
    - - -
    - Please provide a valid zip. -
    -
    -
    -
    - - -
    - You must agree before submitting. -
    -
    -
    -
    - -
    - - `} /> -
    -
    -
    - -
    -

    Components

    - -
    -
    -

    Accordion

    - Documentation -
    - -
    - -
    -

    - -

    -
    -
    - This is the first item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    -

    - -

    -
    -
    - This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    -

    - -

    -
    -
    - This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    - `} /> - -
    -
    -
    -

    Alerts

    - Documentation -
    - -
    - ` - - `)} /> - - -

    Well done!

    -

    Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

    -
    -

    Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

    -
    - `} /> - -
    -
    -
    -

    Badge

    - Documentation -
    - -
    - Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    - `} /> - - ` - ${themeColor.title} - `)} /> -
    -
    - -
    -
    -

    Buttons

    - Documentation -
    -
    - ` - - `), - ``]} /> - - ` - - `)} /> - - Small button - - - `} /> -
    -
    -
    -
    -

    Button group

    - Documentation -
    - -
    - -
    - - - - -
    -
    - - - -
    -
    - -
    -
    - `} /> - -
    -
    -
    -

    Card

    - Documentation -
    - -
    - -
    -
    - -
    -
    Card title
    -

    Some quick example text to build on the card title and make up the bulk of the card's content.

    - Go somewhere -
    -
    -
    -
    -
    -
    - Featured -
    -
    -
    Card title
    -

    Some quick example text to build on the card title and make up the bulk of the card's content.

    - Go somewhere -
    - -
    -
    -
    -
    -
    -
    Card title
    -

    Some quick example text to build on the card title and make up the bulk of the card's content.

    -
    -
      -
    • An item
    • -
    • A second item
    • -
    • A third item
    • -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    Card title
    -

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    -

    Last updated 3 mins ago

    -
    -
    -
    -
    -
    -
    - `} /> - -
    - - - - - - - -
    -
    -

    Popovers

    - Documentation -
    - -
    - Click to toggle popover - `} /> - - - Popover on top - - - - - `} /> -
    -
    -
    -
    -

    Progress

    - Documentation -
    - -
    - -
    0%
    -
    -
    -
    25%
    -
    -
    -
    50%
    -
    -
    -
    75%
    -
    -
    -
    100%
    -
    - `} /> - - -
    -
    -
    -
    -
    -
    - - `} /> - -
    -
    -
    -

    Scrollspy

    - Documentation -
    - -
    -
    - -
    -

    First heading

    -

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    -

    Second heading

    -

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    -

    Third heading

    -

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    -

    Fourth heading

    -

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    -

    Fifth heading

    -

    This is some placeholder content for the scrollspy page. Note that as you scroll down the page, the appropriate navigation link is highlighted. It's repeated throughout the component example. We keep adding some more example copy here to emphasize the scrolling and highlighting.

    -
    -
    -
    -
    -
    -
    -

    Spinners

    - Documentation -
    - -
    - ` -
    - Loading... -
    - `)} /> - - ` -
    - Loading... -
    - `)} /> -
    -
    -
    -
    -

    Toasts

    - Documentation -
    - -
    - -
    - - Bootstrap - 11 mins ago - -
    -
    - Hello, world! This is a toast message. -
    -
    - `} /> - -
    -
    -
    -

    Tooltips

    - Documentation -
    - -
    - Tooltip on top - - - - - `} /> -
    -
    -
    -
    - - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout-rtl/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout-rtl/index.astro deleted file mode 100644 index 1b019357..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout-rtl/index.astro +++ /dev/null @@ -1,231 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'مثال إتمام الشراء' -export const direction = 'rtl' -export const extra_css = ['../checkout/checkout.css'] -export const extra_js = [{ src: '../checkout/checkout.js' }] -export const body_class = 'bg-body-tertiary' ---- - -
    -
    -
    - -

    نموذج إتمام الشراء

    -

    فيما يلي مثال على نموذج تم إنشاؤه بالكامل باستخدام عناصر تحكم النموذج في Bootstrap. لكل مجموعة نماذج مطلوبة حالة تحقق يمكن تشغيلها بمحاولة إرسال النموذج دون استكماله.

    -
    - -
    -
    -

    - عربة التسوق - 3 -

    -
      -
    • -
      -
      اسم المنتج
      - وصف مختصر -
      - $12 -
    • -
    • -
      -
      المنتج الثاني
      - وصف مختصر -
      - $8 -
    • -
    • -
      -
      البند الثالث
      - وصف مختصر -
      - $5 -
    • -
    • -
      -
      رمز ترويجي
      - EXAMPLECODE -
      - -$5 -
    • -
    • - مجموع (USD) - $20 -
    • -
    - -
    -
    - - -
    -
    -
    -
    -

    عنوان الفوترة

    -
    -
    -
    - - -
    - يرجى إدخال اسم أول صحيح. -
    -
    - -
    - - -
    - يرجى إدخال اسم عائلة صحيح. -
    -
    - -
    - -
    - @ - -
    - اسم المستخدم الخاص بك مطلوب. -
    -
    -
    - -
    - - -
    - يرجى إدخال عنوان بريد إلكتروني صحيح لتصلكم تحديثات الشحن. -
    -
    - -
    - - -
    - يرجى إدخال عنوان الشحن الخاص بك. -
    -
    - -
    - - -
    - -
    - - -
    - يرجى اختيار بلد صحيح. -
    -
    - -
    - - -
    - يرجى اختيار اسم منطقة صحيح. -
    -
    - -
    - - -
    - الرمز البريدي مطلوب. -
    -
    -
    - -
    - -
    - - -
    - -
    - - -
    - -
    - -

    طريقة الدفع

    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    -
    - - - الاسم الكامل كما هو معروض على البطاقة -
    - الاسم على البطاقة مطلوب -
    -
    - -
    - - -
    - رقم بطاقة الائتمان مطلوب -
    -
    - -
    - - -
    - تاريخ انتهاء الصلاحية مطلوب -
    -
    - -
    - - -
    - رمز الحماية مطلوب -
    -
    -
    - -
    - - -
    -
    -
    -
    - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/checkout.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/checkout.css deleted file mode 100644 index e5ea31c4..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/checkout.css +++ /dev/null @@ -1,3 +0,0 @@ -.container { - max-width: 960px; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/checkout.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/checkout.js deleted file mode 100644 index 30ea0aa6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/checkout.js +++ /dev/null @@ -1,19 +0,0 @@ -// Example starter JavaScript for disabling form submissions if there are invalid fields -(() => { - 'use strict' - - // Fetch all the forms we want to apply custom Bootstrap validation styles to - const forms = document.querySelectorAll('.needs-validation') - - // Loop over them and prevent submission - Array.from(forms).forEach(form => { - form.addEventListener('submit', event => { - if (!form.checkValidity()) { - event.preventDefault() - event.stopPropagation() - } - - form.classList.add('was-validated') - }, false) - }) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/index.astro deleted file mode 100644 index 029bc796..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/checkout/index.astro +++ /dev/null @@ -1,231 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Checkout example' -export const extra_css = ['checkout.css'] -export const extra_js = [{ src: 'checkout.js' }] -export const body_class = 'bg-body-tertiary' ---- - -
    -
    -
    - -

    Checkout form

    -

    Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

    -
    - -
    -
    -

    - Your cart - 3 -

    -
      -
    • -
      -
      Product name
      - Brief description -
      - $12 -
    • -
    • -
      -
      Second product
      - Brief description -
      - $8 -
    • -
    • -
      -
      Third item
      - Brief description -
      - $5 -
    • -
    • -
      -
      Promo code
      - EXAMPLECODE -
      - −$5 -
    • -
    • - Total (USD) - $20 -
    • -
    - -
    -
    - - -
    -
    -
    -
    -

    Billing address

    -
    -
    -
    - - -
    - Valid first name is required. -
    -
    - -
    - - -
    - Valid last name is required. -
    -
    - -
    - -
    - @ - -
    - Your username is required. -
    -
    -
    - -
    - - -
    - Please enter a valid email address for shipping updates. -
    -
    - -
    - - -
    - Please enter your shipping address. -
    -
    - -
    - - -
    - -
    - - -
    - Please select a valid country. -
    -
    - -
    - - -
    - Please provide a valid state. -
    -
    - -
    - - -
    - Zip code required. -
    -
    -
    - -
    - -
    - - -
    - -
    - - -
    - -
    - -

    Payment

    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    -
    - - - Full name as displayed on card -
    - Name on card is required -
    -
    - -
    - - -
    - Credit card number is required -
    -
    - -
    - - -
    - Expiration date required -
    -
    - -
    - - -
    - Security code required -
    -
    -
    - -
    - - -
    -
    -
    -
    - - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cover/cover.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cover/cover.css deleted file mode 100644 index 2e7aef8f..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cover/cover.css +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Globals - */ - - -/* Custom default button */ -.btn-light, -.btn-light:hover, -.btn-light:focus { - color: #333; - text-shadow: none; /* Prevent inheritance from `body` */ -} - - -/* - * Base structure - */ - -body { - text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5); - box-shadow: inset 0 0 5rem rgba(0, 0, 0, .5); -} - -.cover-container { - max-width: 42em; -} - - -/* - * Header - */ - -.nav-masthead .nav-link { - color: rgba(255, 255, 255, .5); - border-bottom: .25rem solid transparent; -} - -.nav-masthead .nav-link:hover, -.nav-masthead .nav-link:focus { - border-bottom-color: rgba(255, 255, 255, .25); -} - -.nav-masthead .nav-link + .nav-link { - margin-left: 1rem; -} - -.nav-masthead .active { - color: #fff; - border-bottom-color: #fff; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cover/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cover/index.astro deleted file mode 100644 index 3af73150..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/cover/index.astro +++ /dev/null @@ -1,31 +0,0 @@ ---- -export const title = 'Cover Template' -export const extra_css = ['cover.css'] -export const html_class = 'h-100' -export const body_class = 'd-flex h-100 text-center text-bg-dark' ---- - -
    -
    -
    -

    Cover

    - -
    -
    - -
    -

    Cover your page.

    -

    Cover is a one-page template for building simple and beautiful home pages. Download, edit the text, and add your own fullscreen background photo to make it your own.

    -

    - Learn more -

    -
    - - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard-rtl/dashboard.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard-rtl/dashboard.js deleted file mode 100644 index bdb3029d..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard-rtl/dashboard.js +++ /dev/null @@ -1,49 +0,0 @@ -/* globals Chart:false */ - -(() => { - 'use strict' - - // Graphs - const ctx = document.getElementById('myChart') - // eslint-disable-next-line no-unused-vars - const myChart = new Chart(ctx, { - type: 'line', - data: { - labels: [ - 'الأحد', - 'الإثنين', - 'الثلاثاء', - 'الأربعاء', - 'الخميس', - 'الجمعة', - 'السبت' - ], - datasets: [{ - data: [ - 15339, - 21345, - 18483, - 24003, - 23489, - 24092, - 12034 - ], - lineTension: 0, - backgroundColor: 'transparent', - borderColor: '#007bff', - borderWidth: 4, - pointBackgroundColor: '#007bff' - }] - }, - options: { - plugins: { - legend: { - display: false - }, - tooltip: { - boxPadding: 3 - } - } - } - }) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard-rtl/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard-rtl/index.astro deleted file mode 100644 index c5758e95..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard-rtl/index.astro +++ /dev/null @@ -1,330 +0,0 @@ ---- -export const title = 'قالب لوحة القيادة' -export const direction = 'rtl' -export const extra_css = ['../dashboard/dashboard.rtl.css'] -export const extra_js = [ - { src: 'https://cdn.jsdelivr.net/npm/chart.js@4.3.2/dist/chart.umd.js', integrity: 'sha384-eI7PSr3L1XLISH8JdDII5YN/njoSsxfbrkCTnJrzXt+ENP5MOVBxD+l6sEG4zoLp'}, - { src: 'dashboard.js'} -] ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - -
    -
    -

    لوحة القيادة

    -
    -
    - - -
    - -
    -
    - - - -

    عنوان القسم

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #عنوانعنوانعنوانعنوان
    1,001بياناتعشوائيةتثريالجدول
    1,002تثريمبهةتصميمتنسيق
    1,003عشوائيةغنيةقيمةمفيدة
    1,003معلوماتتثريتوضيحيةعشوائية
    1,004الجدولبياناتتنسيققيمة
    1,005قيمةمبهةالجدولتثري
    1,006قيمةتوضيحيةغنيةعشوائية
    1,007تثريمفيدةمعلوماتمبهة
    1,008بياناتعشوائيةتثريالجدول
    1,009تثريمبهةتصميمتنسيق
    1,010عشوائيةغنيةقيمةمفيدة
    1,011معلوماتتثريتوضيحيةعشوائية
    1,012الجدولتثريتنسيققيمة
    1,013قيمةمبهةالجدولتصميم
    1,014قيمةتوضيحيةغنيةعشوائية
    1,015بياناتمفيدةمعلوماتالجدول
    -
    -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.css deleted file mode 100644 index 154940c9..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.css +++ /dev/null @@ -1,48 +0,0 @@ -.bi { - display: inline-block; - width: 1rem; - height: 1rem; -} - -/* - * Sidebar - */ - -@media (min-width: 768px) { - .sidebar .offcanvas-lg { - position: -webkit-sticky; - position: sticky; - top: 48px; - } - .navbar-search { - display: block; - } -} - -.sidebar .nav-link { - font-size: .875rem; - font-weight: 500; -} - -.sidebar .nav-link.active { - color: #2470dc; -} - -.sidebar-heading { - font-size: .75rem; -} - -/* - * Navbar - */ - -.navbar-brand { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(0, 0, 0, .25); - box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25); -} - -.navbar .form-control { - padding: .75rem 1rem; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.js deleted file mode 100644 index a60b3935..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.js +++ /dev/null @@ -1,49 +0,0 @@ -/* globals Chart:false */ - -(() => { - 'use strict' - - // Graphs - const ctx = document.getElementById('myChart') - // eslint-disable-next-line no-unused-vars - const myChart = new Chart(ctx, { - type: 'line', - data: { - labels: [ - 'Sunday', - 'Monday', - 'Tuesday', - 'Wednesday', - 'Thursday', - 'Friday', - 'Saturday' - ], - datasets: [{ - data: [ - 15339, - 21345, - 18483, - 24003, - 23489, - 24092, - 12034 - ], - lineTension: 0, - backgroundColor: 'transparent', - borderColor: '#007bff', - borderWidth: 4, - pointBackgroundColor: '#007bff' - }] - }, - options: { - plugins: { - legend: { - display: false - }, - tooltip: { - boxPadding: 3 - } - } - } - }) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.rtl.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.rtl.css deleted file mode 100644 index 5c8a7e25..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/dashboard.rtl.css +++ /dev/null @@ -1,48 +0,0 @@ -.bi { - display: inline-block; - width: 1rem; - height: 1rem; -} - -/* - * Sidebar - */ - -@media (min-width: 768px) { - .sidebar .offcanvas-lg { - position: -webkit-sticky; - position: sticky; - top: 48px; - } - .navbar-search { - display: block; - } -} - -.sidebar .nav-link { - font-size: .875rem; - font-weight: 500; -} - -.sidebar .nav-link.active { - color: #2470dc; -} - -.sidebar-heading { - font-size: .75rem; -} - -/* - * Navbar - */ - -.navbar-brand { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(0, 0, 0, .25); - box-shadow: inset 1px 0 0 rgba(0, 0, 0, .25); -} - -.navbar .form-control { - padding: .75rem 1rem; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/index.astro deleted file mode 100644 index 4d33c7fb..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dashboard/index.astro +++ /dev/null @@ -1,329 +0,0 @@ ---- -export const title = 'Dashboard Template' -export const extra_css = ['dashboard.css'] -export const extra_js = [ - { src: 'https://cdn.jsdelivr.net/npm/chart.js@4.3.2/dist/chart.umd.js', integrity: 'sha384-eI7PSr3L1XLISH8JdDII5YN/njoSsxfbrkCTnJrzXt+ENP5MOVBxD+l6sEG4zoLp'}, - { src: 'dashboard.js'} -] ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - -
    -
    -

    Dashboard

    -
    -
    - - -
    - -
    -
    - - - -

    Section title

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    #HeaderHeaderHeaderHeader
    1,001randomdataplaceholdertext
    1,002placeholderirrelevantvisuallayout
    1,003datarichdashboardtabular
    1,003informationplaceholderillustrativedata
    1,004textrandomlayoutdashboard
    1,005dashboardirrelevanttextplaceholder
    1,006dashboardillustrativerichdata
    1,007placeholdertabularinformationirrelevant
    1,008randomdataplaceholdertext
    1,009placeholderirrelevantvisuallayout
    1,010datarichdashboardtabular
    1,011informationplaceholderillustrativedata
    1,012textplaceholderlayoutdashboard
    1,013dashboardirrelevanttextvisual
    1,014dashboardillustrativerichdata
    1,015randomtabularinformationtext
    -
    -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dropdowns/dropdowns.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dropdowns/dropdowns.css deleted file mode 100644 index f633e2cd..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dropdowns/dropdowns.css +++ /dev/null @@ -1,71 +0,0 @@ -.dropdown-item-danger { - color: var(--bs-red); -} -.dropdown-item-danger:hover, -.dropdown-item-danger:focus { - color: #fff; - background-color: var(--bs-red); -} -.dropdown-item-danger.active { - background-color: var(--bs-red); -} - -.btn-hover-light { - color: var(--bs-body-color); - background-color: var(--bs-body-bg); -} -.btn-hover-light:hover, -.btn-hover-light:focus { - color: var(--bs-link-hover-color); - background-color: var(--bs-tertiary-bg); -} - -.cal-month, -.cal-days, -.cal-weekdays { - display: grid; - grid-template-columns: repeat(7, 1fr); - align-items: center; -} -.cal-month-name { - grid-column-start: 2; - grid-column-end: 7; - text-align: center; -} -.cal-weekday, -.cal-btn { - display: flex; - flex-shrink: 0; - align-items: center; - justify-content: center; - height: 3rem; - padding: 0; -} -.cal-btn:not([disabled]) { - font-weight: 500; - color: var(--bs-emphasis-color); -} -.cal-btn:hover, -.cal-btn:focus { - background-color: var(--bs-secondary-bg); -} -.cal-btn[disabled] { - border: 0; - opacity: .5; -} - -.w-220px { - width: 220px; -} - -.w-280px { - width: 280px; -} - -.w-340px { - width: 340px; -} - -.opacity-10 { - opacity: .1; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dropdowns/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dropdowns/index.astro deleted file mode 100644 index 812109e4..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/dropdowns/index.astro +++ /dev/null @@ -1,459 +0,0 @@ ---- -export const title = 'Dropdowns' -export const extra_css = ['dropdowns.css'] ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - -
    - - - -
    - -
    - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/features.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/features.css deleted file mode 100644 index debc2636..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/features.css +++ /dev/null @@ -1,26 +0,0 @@ -.feature-icon { - width: 4rem; - height: 4rem; - border-radius: .75rem; -} - -.icon-square { - width: 3rem; - height: 3rem; - border-radius: .75rem; -} - -.text-shadow-1 { text-shadow: 0 .125rem .25rem rgba(0, 0, 0, .25); } -.text-shadow-2 { text-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); } -.text-shadow-3 { text-shadow: 0 .5rem 1.5rem rgba(0, 0, 0, .25); } - -.card-cover { - background-repeat: no-repeat; - background-position: center center; - background-size: cover; -} - -.feature-icon-small { - width: 3rem; - height: 3rem; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/index.astro deleted file mode 100644 index 7a3a7640..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/index.astro +++ /dev/null @@ -1,337 +0,0 @@ ---- -export const title = 'Features' -export const extra_css = ['features.css'] ---- - - - - Bootstrap - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    Features examples

    - - - -
    - -
    -

    Hanging icons

    -
    -
    -
    - -
    -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    - - Primary button - -
    -
    -
    -
    - -
    -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    - - Primary button - -
    -
    -
    -
    - -
    -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    - - Primary button - -
    -
    -
    -
    - -
    - -
    -

    Custom cards

    - -
    -
    -
    -
    -

    Short title, long jacket

    -
      -
    • - Bootstrap -
    • -
    • - - Earth -
    • -
    • - - 3d -
    • -
    -
    -
    -
    - -
    -
    -
    -

    Much longer title that wraps to multiple lines

    -
      -
    • - Bootstrap -
    • -
    • - - Pakistan -
    • -
    • - - 4d -
    • -
    -
    -
    -
    - -
    -
    -
    -

    Another longer title belongs here

    -
      -
    • - Bootstrap -
    • -
    • - - California -
    • -
    • - - 5d -
    • -
    -
    -
    -
    -
    -
    - -
    - -
    -

    Icon grid

    - -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    -
    - -
    - -
    -

    Features with title

    - -
    -
    -

    Left-aligned title explaining these awesome features

    -

    Paragraph of text beneath the heading to explain the heading. We'll add onto it with another sentence and probably just keep going until we run out of words.

    - Primary button -
    - -
    -
    -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    - -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    - -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    - -
    -
    - -
    -

    Featured title

    -

    Paragraph of text beneath the heading to explain the heading.

    -
    -
    -
    -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-1.jpg b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-1.jpg deleted file mode 100644 index 283acd0b..00000000 Binary files a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-1.jpg and /dev/null differ diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-2.jpg b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-2.jpg deleted file mode 100644 index 81eae64d..00000000 Binary files a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-2.jpg and /dev/null differ diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-3.jpg b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-3.jpg deleted file mode 100644 index 0f401d1e..00000000 Binary files a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/features/unsplash-photo-3.jpg and /dev/null differ diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/footers/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/footers/index.astro deleted file mode 100644 index 9aaaa9f6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/footers/index.astro +++ /dev/null @@ -1,179 +0,0 @@ ---- -export const title = 'Footers' ---- - - - - Bootstrap - - - - - - - - - - -
    - -
    - -
    - -
    -
    -
    - - - - © {new Date().getFullYear()} Company, Inc -
    - - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - - -
    - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/grid/grid.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/grid/grid.css deleted file mode 100644 index cbc7c311..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/grid/grid.css +++ /dev/null @@ -1,13 +0,0 @@ -.themed-grid-col { - padding-top: .75rem; - padding-bottom: .75rem; - background-color: rgba(112.520718, 44.062154, 249.437846, .15); - border: 1px solid rgba(112.520718, 44.062154, 249.437846, .3); -} - -.themed-container { - padding: .75rem; - margin-bottom: 1.5rem; - background-color: rgba(112.520718, 44.062154, 249.437846, .15); - border: 1px solid rgba(112.520718, 44.062154, 249.437846, .3); -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/grid/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/grid/index.astro deleted file mode 100644 index 2c01d8de..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/grid/index.astro +++ /dev/null @@ -1,185 +0,0 @@ ---- -export const title = 'Grid Template' -export const extra_css = ['grid.css'] -export const body_class = 'py-4' ---- - -
    -
    - -

    Bootstrap grid examples

    -

    Basic grid layouts to get you familiar with building within the Bootstrap grid system.

    -

    In these examples the .themed-grid-col class is added to the columns to add some theming. This is not a class that is available in Bootstrap by default.

    - -

    Five grid tiers

    -

    There are five tiers to the Bootstrap grid system, one for each range of devices we support. Each tier starts at a minimum viewport size and automatically applies to the larger devices unless overridden.

    - -
    -
    .col-4
    -
    .col-4
    -
    .col-4
    -
    - -
    -
    .col-sm-4
    -
    .col-sm-4
    -
    .col-sm-4
    -
    - -
    -
    .col-md-4
    -
    .col-md-4
    -
    .col-md-4
    -
    - -
    -
    .col-lg-4
    -
    .col-lg-4
    -
    .col-lg-4
    -
    - -
    -
    .col-xl-4
    -
    .col-xl-4
    -
    .col-xl-4
    -
    - -
    -
    .col-xxl-4
    -
    .col-xxl-4
    -
    .col-xxl-4
    -
    - -

    Three equal columns

    -

    Get three equal-width columns starting at desktops and scaling to large desktops. On mobile devices, tablets and below, the columns will automatically stack.

    -
    -
    .col-md-4
    -
    .col-md-4
    -
    .col-md-4
    -
    - -

    Three equal columns alternative

    -

    By using the .row-cols-* classes, you can easily create a grid with equal columns.

    -
    -
    .col child of .row-cols-md-3
    -
    .col child of .row-cols-md-3
    -
    .col child of .row-cols-md-3
    -
    - -

    Three unequal columns

    -

    Get three columns starting at desktops and scaling to large desktops of various widths. Remember, grid columns should add up to twelve for a single horizontal block. More than that, and columns start stacking no matter the viewport.

    -
    -
    .col-md-3
    -
    .col-md-6
    -
    .col-md-3
    -
    - -

    Two columns

    -

    Get two columns starting at desktops and scaling to large desktops.

    -
    -
    .col-md-8
    -
    .col-md-4
    -
    - -

    Full width, single column

    -

    - No grid classes are necessary for full-width elements. -

    - -
    - -

    Two columns with two nested columns

    -

    Per the documentation, nesting is easy—just put a row of columns within an existing column. This gives you two columns starting at desktops and scaling to large desktops, with another two (equal widths) within the larger column.

    -

    At mobile device sizes, tablets and down, these columns and their nested columns will stack.

    -
    -
    -
    - .col-md-8 -
    -
    -
    .col-md-6
    -
    .col-md-6
    -
    -
    -
    .col-md-4
    -
    - -
    - -

    Mixed: mobile and desktop

    -

    The Bootstrap v5 grid system has six tiers of classes: xs (extra small, this class infix is not used), sm (small), md (medium), lg (large), xl (x-large), and xxl (xx-large). You can use nearly any combination of these classes to create more dynamic and flexible layouts.

    -

    Each tier of classes scales up, meaning if you plan on setting the same widths for md, lg, xl and xxl, you only need to specify md.

    -
    -
    .col-md-8
    -
    .col-6 .col-md-4
    -
    -
    -
    .col-6 .col-md-4
    -
    .col-6 .col-md-4
    -
    .col-6 .col-md-4
    -
    -
    -
    .col-6
    -
    .col-6
    -
    - -
    - -

    Mixed: mobile, tablet, and desktop

    -
    -
    .col-sm-6 .col-lg-8
    -
    .col-6 .col-lg-4
    -
    -
    -
    .col-6 .col-sm-4
    -
    .col-6 .col-sm-4
    -
    .col-6 .col-sm-4
    -
    - -
    - -

    Gutters

    -

    With .gx-* classes, the horizontal gutters can be adjusted.

    -
    -
    .col with .gx-4 gutters
    -
    .col with .gx-4 gutters
    -
    .col with .gx-4 gutters
    -
    .col with .gx-4 gutters
    -
    .col with .gx-4 gutters
    -
    .col with .gx-4 gutters
    -
    -

    Use the .gy-* classes to control the vertical gutters.

    -
    -
    .col with .gy-4 gutters
    -
    .col with .gy-4 gutters
    -
    .col with .gy-4 gutters
    -
    .col with .gy-4 gutters
    -
    .col with .gy-4 gutters
    -
    .col with .gy-4 gutters
    -
    -

    With .g-* classes, the gutters in both directions can be adjusted.

    -
    -
    .col with .g-3 gutters
    -
    .col with .g-3 gutters
    -
    .col with .g-3 gutters
    -
    .col with .g-3 gutters
    -
    .col with .g-3 gutters
    -
    .col with .g-3 gutters
    -
    -
    - -
    -
    - -

    Containers

    -

    Additional classes added in Bootstrap v4.4 allow containers that are 100% wide until a particular breakpoint. v5 adds a new xxl breakpoint.

    -
    - -
    .container
    -
    .container-sm
    -
    .container-md
    -
    .container-lg
    -
    .container-xl
    -
    .container-xxl
    -
    .container-fluid
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/headers/headers.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/headers/headers.css deleted file mode 100644 index f887573f..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/headers/headers.css +++ /dev/null @@ -1,15 +0,0 @@ -.form-control-dark { - border-color: var(--bs-gray); -} -.form-control-dark:focus { - border-color: #fff; - box-shadow: 0 0 0 .25rem rgba(255, 255, 255, .25); -} - -.text-small { - font-size: 85%; -} - -.dropdown-toggle:not(:focus) { - outline: 0; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/headers/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/headers/index.astro deleted file mode 100644 index a233ae90..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/headers/index.astro +++ /dev/null @@ -1,294 +0,0 @@ ---- -export const title = 'Headers' -export const extra_css = ['headers.css'] ---- - - - - Bootstrap - - - - - - - - - - - - - - - - - - - - - -
    -

    Headers examples

    - - - -
    - -
    -
    - -
    -
    - -
    - -
    -
    -
    - - - -
    - - - -
    - - -
    -
    -
    - -
    - -
    -
    -
    - - - - - - - - -
    - - -
    -
    -
    -
    - -
    - -
    -
    -
    - - - - - - - - - -
    -
    -
    - -
    - -
    -
    - - -
    - - - -
    -
    -
    - -
    -
    -
    -









    -
    -
    -









    -
    -
    -
    - -
    - - -
    - -
    - -
    - -
    - -
    -
    - - -
    - - -
    -
    -
    -
    - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/bootstrap-docs.png b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/bootstrap-docs.png deleted file mode 100644 index a4e9b986..00000000 Binary files a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/bootstrap-docs.png and /dev/null differ diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/bootstrap-themes.png b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/bootstrap-themes.png deleted file mode 100644 index 13c32337..00000000 Binary files a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/bootstrap-themes.png and /dev/null differ diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/heroes.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/heroes.css deleted file mode 100644 index e9deaf74..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/heroes.css +++ /dev/null @@ -1,3 +0,0 @@ -@media (min-width: 992px) { - .rounded-lg-3 { border-radius: .3rem; } -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/index.astro deleted file mode 100644 index 853776e7..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/heroes/index.astro +++ /dev/null @@ -1,124 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Heroes' -export const extra_css = ['heroes.css'] ---- - -
    -

    Heroes examples

    - -
    - -

    Centered hero

    -
    -

    Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

    -
    - - -
    -
    -
    - -
    - -
    -

    Centered screenshot

    -
    -

    Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

    -
    - - -
    -
    -
    -
    - Example image -
    -
    -
    - -
    - -
    -
    -
    - Bootstrap Themes -
    -
    -

    Responsive left-aligned hero with image

    -

    Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

    -
    - - -
    -
    -
    -
    - -
    - -
    -
    -
    -

    Vertically centered hero sign-up form

    -

    Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

    -
    -
    -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    - By clicking Sign up, you agree to the terms of use. -
    -
    -
    -
    - -
    - -
    -
    -
    -

    Border hero with cropped image and shadows

    -

    Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

    -
    - - -
    -
    -
    - -
    -
    -
    - -
    - -
    -
    -

    Dark color hero

    -
    -

    Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

    -
    - - -
    -
    -
    -
    - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotron/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotron/index.astro deleted file mode 100644 index 6874af1c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotron/index.astro +++ /dev/null @@ -1,43 +0,0 @@ ---- -export const title = 'Jumbotron example' ---- - -
    -
    -
    - - Bootstrap - Jumbotron example - -
    - -
    -
    -

    Custom jumbotron

    -

    Using a series of utilities, you can create this jumbotron, just like the one in previous versions of Bootstrap. Check out the examples below for how you can remix and restyle it to your liking.

    - -
    -
    - -
    -
    -
    -

    Change the background

    -

    Swap the background-color utility and add a `.text-*` color utility to mix up the jumbotron look. Then, mix and match with additional component themes and more.

    - -
    -
    -
    -
    -

    Add borders

    -

    Or, keep it light and add a border for some added definition to the boundaries of your content. Be sure to look under the hood at the source HTML here as we've adjusted the alignment and sizing of both column's content for equal-height.

    - -
    -
    -
    - -
    - © {new Date().getFullYear()} -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotrons/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotrons/index.astro deleted file mode 100644 index 587e7930..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotrons/index.astro +++ /dev/null @@ -1,79 +0,0 @@ ---- -export const title = 'Jumbotrons' -export const extra_css = ['jumbotrons.css'] ---- - - - - Bootstrap - - - - - - - - - - - -
    -
    - -

    Jumbotron with icon

    -

    - This is a custom jumbotron featuring an SVG image at the top, some longer text that wraps early thanks to a responsive .col-* class, and a customized call to action. -

    -
    - - -
    -
    -
    - -
    - -
    -
    - - -

    Placeholder jumbotron

    -

    - This faded back jumbotron is useful for placeholder content. It's also a great way to add a bit of context to a page or section when no content is available and to encourage visitors to take a specific action. -

    - -
    -
    - -
    - -
    -
    -
    -

    Full-width jumbotron

    -

    - This takes the basic jumbotron above and makes its background edge-to-edge with a .container inside to align content. Similar to above, it's been recreated with built-in grid and utility classes. -

    -
    -
    -
    - -
    - -
    -
    -

    Basic jumbotron

    -

    - This is a simple Bootstrap jumbotron that sits within a .container, recreated with built-in utility classes. -

    -
    -
    - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotrons/jumbotrons.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotrons/jumbotrons.css deleted file mode 100644 index d7d065ed..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/jumbotrons/jumbotrons.css +++ /dev/null @@ -1 +0,0 @@ -.border-dashed { --bs-border-style: dashed; } diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/list-groups/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/list-groups/index.astro deleted file mode 100644 index 220678f0..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/list-groups/index.astro +++ /dev/null @@ -1,222 +0,0 @@ ---- -export const title = 'List groups' -export const extra_css = ['list-groups.css'] ---- - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - -
    - -
    - - - -
    -
    - -
    - -
    -
    - - - - -
    -
    - -
    - -
    -
    - - - - - - - - - - - -
    -
    - -
    - -
    -
    -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/list-groups/list-groups.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/list-groups/list-groups.css deleted file mode 100644 index b90cfa06..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/list-groups/list-groups.css +++ /dev/null @@ -1,63 +0,0 @@ -.list-group { - width: 100%; - max-width: 460px; - margin-inline: 1.5rem; -} - -.form-check-input:checked + .form-checked-content { - opacity: .5; -} - -.form-check-input-placeholder { - border-style: dashed; -} -[contenteditable]:focus { - outline: 0; -} - -.list-group-checkable .list-group-item { - cursor: pointer; -} -.list-group-item-check { - position: absolute; - clip: rect(0, 0, 0, 0); -} -.list-group-item-check:hover + .list-group-item { - background-color: var(--bs-secondary-bg); -} -.list-group-item-check:checked + .list-group-item { - color: #fff; - background-color: var(--bs-primary); - border-color: var(--bs-primary); -} -.list-group-item-check[disabled] + .list-group-item, -.list-group-item-check:disabled + .list-group-item { - pointer-events: none; - filter: none; - opacity: .5; -} - -.list-group-radio .list-group-item { - cursor: pointer; - border-radius: .5rem; -} -.list-group-radio .form-check-input { - z-index: 2; - margin-top: -.5em; -} -.list-group-radio .list-group-item:hover, -.list-group-radio .list-group-item:focus { - background-color: var(--bs-secondary-bg); -} - -.list-group-radio .form-check-input:checked + .list-group-item { - background-color: var(--bs-body); - border-color: var(--bs-primary); - box-shadow: 0 0 0 2px var(--bs-primary); -} -.list-group-radio .form-check-input[disabled] + .list-group-item, -.list-group-radio .form-check-input:disabled + .list-group-item { - pointer-events: none; - filter: none; - opacity: .5; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/masonry/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/masonry/index.astro deleted file mode 100644 index 58aea3f1..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/masonry/index.astro +++ /dev/null @@ -1,106 +0,0 @@ ---- -export const title = 'Masonry example' -export const extra_js = [{ - src: 'https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js', - integrity: 'sha384-GNFwBvfVxBkLMJpYMOABq3c+d3KnQxudP/mGPkzpZSTYykLBNsZEnG2D9G/X/+7D', - async: true -}] -import Placeholder from "@shortcodes/Placeholder.astro" ---- - -
    -

    Bootstrap and Masonry

    -

    Integrate Masonry with the Bootstrap grid system and cards component.

    - -

    Masonry is not included in Bootstrap. Add it by including the JavaScript plugin manually, or using a CDN like so:

    - -
    
    -<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js" integrity="sha384-GNFwBvfVxBkLMJpYMOABq3c+d3KnQxudP/mGPkzpZSTYykLBNsZEnG2D9G/X/+7D" crossorigin="anonymous" async></script>
    -  
    - -

    By adding data-masonry='}"percentPosition": true }' to the .row wrapper, we can combine the powers of Bootstrap's responsive grid and Masonry's positioning.

    - -
    - -
    -
    -
    - -
    -
    Card title that wraps to a new line
    -

    This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    -
    -
    -
    -
    -
    -
    -
    -

    A well-known quote, contained in a blockquote element.

    -
    - -
    -
    -
    -
    -
    - -
    -
    Card title
    -

    This card has supporting text below as a natural lead-in to additional content.

    -

    Last updated 3 mins ago

    -
    -
    -
    -
    -
    -
    -
    -

    A well-known quote, contained in a blockquote element.

    -
    - -
    -
    -
    -
    -
    -
    -
    Card title
    -

    This card has a regular title and short paragraph of text below it.

    -

    Last updated 3 mins ago

    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -

    A well-known quote, contained in a blockquote element.

    -
    - -
    -
    -
    -
    -
    -
    -
    Card title
    -

    This is another card with title and supporting text below. This card has some additional content to make it slightly taller overall.

    -

    Last updated 3 mins ago

    -
    -
    -
    -
    - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/modals/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/modals/index.astro deleted file mode 100644 index 9514f6f1..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/modals/index.astro +++ /dev/null @@ -1,147 +0,0 @@ ---- -export const title = 'Modals' -export const extra_css = ['modals.css'] ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/modals/modals.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/modals/modals.css deleted file mode 100644 index 194e16ac..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/modals/modals.css +++ /dev/null @@ -1,7 +0,0 @@ -.modal-sheet .modal-dialog { - width: 380px; - transition: bottom .75s ease-in-out; -} -.modal-sheet .modal-footer { - padding-bottom: 2rem; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-bottom/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-bottom/index.astro deleted file mode 100644 index 35aa348c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-bottom/index.astro +++ /dev/null @@ -1,42 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Bottom navbar example' ---- - -
    -
    -

    Bottom Navbar example

    -

    This example is a quick exercise to illustrate how the bottom navbar works.

    - View navbar docs » -
    -
    - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-fixed/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-fixed/index.astro deleted file mode 100644 index 3524255c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-fixed/index.astro +++ /dev/null @@ -1,40 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Fixed top navbar example' -export const extra_css = ['navbar-fixed.css'] ---- - - - -
    -
    -

    Navbar example

    -

    This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser’s viewport.

    - View navbar docs » -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-fixed/navbar-fixed.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-fixed/navbar-fixed.css deleted file mode 100644 index c77c0c14..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-fixed/navbar-fixed.css +++ /dev/null @@ -1,5 +0,0 @@ -/* Show it is fixed to the top */ -body { - min-height: 75rem; - padding-top: 4.5rem; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-static/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-static/index.astro deleted file mode 100644 index 600b313e..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-static/index.astro +++ /dev/null @@ -1,40 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Top navbar example' -export const extra_css = ['navbar-static.css'] ---- - - - -
    -
    -

    Navbar example

    -

    This example is a quick exercise to illustrate how the top-aligned navbar works. As you scroll, this navbar remains in its original position and moves with the rest of the page.

    - View navbar docs » -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-static/navbar-static.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-static/navbar-static.css deleted file mode 100644 index 25bbdde0..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbar-static/navbar-static.css +++ /dev/null @@ -1,4 +0,0 @@ -/* Show it's not fixed to the top */ -body { - min-height: 75rem; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars-offcanvas/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars-offcanvas/index.astro deleted file mode 100644 index ec6b03f7..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars-offcanvas/index.astro +++ /dev/null @@ -1,147 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Navbar Template' -export const extra_css = ['navbars-offcanvas.css'] ---- - -
    - - - - - - -
    -
    -
    -

    Navbar with offcanvas examples

    -

    This example shows how responsive offcanvas menus work within the navbar. For positioning of navbars, checkout the top and fixed top examples.

    -

    From the top down, you'll see a dark navbar, light navbar and a responsive navbar—each with offcanvases built in. Resize your browser window to the large breakpoint to see the toggle for the offcanvas.

    -

    - Learn more about offcanvas navbars » -

    -
    -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars-offcanvas/navbars-offcanvas.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars-offcanvas/navbars-offcanvas.css deleted file mode 100644 index 70d20940..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars-offcanvas/navbars-offcanvas.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - padding-bottom: 20px; -} - -.navbar { - margin-bottom: 20px; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars/index.astro deleted file mode 100644 index c48993f8..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars/index.astro +++ /dev/null @@ -1,450 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Navbar Template' -export const extra_css = ['navbars.css'] ---- - -
    - - - - - - - - - - - - - - - - - - -
    -

    Matching .container-xl...

    -
    - - - -
    - - - - - - -
    -
    -
    -

    Navbar examples

    -

    This example is a quick exercise to illustrate how the navbar and its contents work. Some navbars extend the width of the viewport, others are confined within a .container. For positioning of navbars, checkout the top and fixed top examples.

    -

    At the smallest breakpoint, the collapse plugin is used to hide the links and show a menu button to toggle the collapsed content.

    -

    - View navbar docs » -

    -
    -
    -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars/navbars.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars/navbars.css deleted file mode 100644 index 70d20940..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/navbars/navbars.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - padding-bottom: 20px; -} - -.navbar { - margin-bottom: 20px; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/index.astro deleted file mode 100644 index ac94ca88..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/index.astro +++ /dev/null @@ -1,140 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Offcanvas navbar template' -export const extra_css = ['offcanvas-navbar.css'] -export const extra_js = [{ src: 'offcanvas-navbar.js' }] -export const body_class = 'bg-body-tertiary' -export const aliases = '/docs/[[config:docs_version]]/examples/offcanvas/' -import Placeholder from "@shortcodes/Placeholder.astro" ---- - - - - - -
    -
    - -
    -

    Bootstrap

    - Since 2011 -
    -
    - -
    -
    Recent updates
    -
    - -

    - @username - Some representative placeholder content, with some information about this user. Imagine this being some sort of status update, perhaps? -

    -
    -
    - -

    - @username - Some more representative placeholder content, related to this other user. Another status update, perhaps. -

    -
    -
    - -

    - @username - This user also gets some representative placeholder content. Maybe they did something interesting, and you really want to highlight this in the recent updates. -

    -
    - - All updates - -
    - -
    -
    Suggestions
    -
    - -
    -
    - Full Name - Follow -
    - @username -
    -
    -
    - -
    -
    - Full Name - Follow -
    - @username -
    -
    -
    - -
    -
    - Full Name - Follow -
    - @username -
    -
    - - All suggestions - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/offcanvas-navbar.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/offcanvas-navbar.css deleted file mode 100644 index f855b96a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/offcanvas-navbar.css +++ /dev/null @@ -1,52 +0,0 @@ -html, -body { - overflow-x: hidden; /* Prevent scroll on narrow devices */ -} - -body { - padding-top: 56px; -} - -@media (max-width: 991.98px) { - .offcanvas-collapse { - position: fixed; - top: 56px; /* Height of navbar */ - bottom: 0; - left: 100%; - width: 100%; - padding-right: 1rem; - padding-left: 1rem; - overflow-y: auto; - visibility: hidden; - background-color: #343a40; - transition: transform .3s ease-in-out, visibility .3s ease-in-out; - } - .offcanvas-collapse.open { - visibility: visible; - transform: translateX(-100%); - } -} - -.nav-scroller .nav { - color: rgba(255, 255, 255, .75); -} - -.nav-scroller .nav-link { - padding-top: .75rem; - padding-bottom: .75rem; - font-size: .875rem; - color: #6c757d; -} - -.nav-scroller .nav-link:hover { - color: #007bff; -} - -.nav-scroller .active { - font-weight: 500; - color: #343a40; -} - -.bg-purple { - background-color: #6f42c1; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/offcanvas-navbar.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/offcanvas-navbar.js deleted file mode 100644 index b97a1716..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/offcanvas-navbar/offcanvas-navbar.js +++ /dev/null @@ -1,7 +0,0 @@ -(() => { - 'use strict' - - document.querySelector('#navbarSideCollapse').addEventListener('click', () => { - document.querySelector('.offcanvas-collapse').classList.toggle('open') - }) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/pricing/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/pricing/index.astro deleted file mode 100644 index e51668fc..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/pricing/index.astro +++ /dev/null @@ -1,186 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Pricing example' -export const extra_css = ['pricing.css'] ---- - - - - Check - - - - -
    -
    - - -
    -

    Pricing

    -

    Quickly build an effective pricing table for your potential customers with this Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.

    -
    -
    - -
    -
    -
    -
    -
    -

    Free

    -
    -
    -

    $0/mo

    -
      -
    • 10 users included
    • -
    • 2 GB of storage
    • -
    • Email support
    • -
    • Help center access
    • -
    - -
    -
    -
    -
    -
    -
    -

    Pro

    -
    -
    -

    $15/mo

    -
      -
    • 20 users included
    • -
    • 10 GB of storage
    • -
    • Priority email support
    • -
    • Help center access
    • -
    - -
    -
    -
    -
    -
    -
    -

    Enterprise

    -
    -
    -

    $29/mo

    -
      -
    • 30 users included
    • -
    • 15 GB of storage
    • -
    • Phone and email support
    • -
    • Help center access
    • -
    - -
    -
    -
    -
    - -

    Compare plans

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FreeProEnterprise
    Public
    Private
    Permissions
    Sharing
    Unlimited members
    Extra security
    -
    -
    - - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/pricing/pricing.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/pricing/pricing.css deleted file mode 100644 index c65d0208..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/pricing/pricing.css +++ /dev/null @@ -1,11 +0,0 @@ -body { - background-image: linear-gradient(180deg, var(--bs-secondary-bg), var(--bs-body-bg) 100px, var(--bs-body-bg)); -} - -.container { - max-width: 960px; -} - -.pricing-header { - max-width: 700px; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/product/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/product/index.astro deleted file mode 100644 index 7c98d11a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/product/index.astro +++ /dev/null @@ -1,187 +0,0 @@ ---- -export const title = 'Product example' -export const extra_css = ['product.css'] ---- - - - - - - - - - - - - - - - - -
    -
    -
    -

    Designed for engineers

    -

    Build anything you want with Aperture

    - -
    -
    -
    -
    - -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    - -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    - -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    - -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    -
    -

    Another headline

    -

    And an even wittier subheading.

    -
    -
    -
    -
    -
    - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/product/product.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/product/product.css deleted file mode 100644 index 6c90ae51..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/product/product.css +++ /dev/null @@ -1,74 +0,0 @@ -.container { - max-width: 960px; -} - -.icon-link > .bi { - width: .75em; - height: .75em; -} - -/* - * Custom translucent site header - */ - -.site-header { - background-color: rgba(0, 0, 0, .85); - -webkit-backdrop-filter: saturate(180%) blur(20px); - backdrop-filter: saturate(180%) blur(20px); -} -.site-header a { - color: #8e8e8e; - transition: color .15s ease-in-out; -} -.site-header a:hover { - color: #fff; - text-decoration: none; -} - -/* - * Dummy devices (replace them with your own or something else entirely!) - */ - -.product-device { - position: absolute; - right: 10%; - bottom: -30%; - width: 300px; - height: 540px; - background-color: #333; - border-radius: 21px; - transform: rotate(30deg); -} - -.product-device::before { - position: absolute; - top: 10%; - right: 10px; - bottom: 10%; - left: 10px; - content: ""; - background-color: rgba(255, 255, 255, .1); - border-radius: 5px; -} - -.product-device-2 { - top: -25%; - right: auto; - bottom: 0; - left: 5%; - background-color: #e5e5e5; -} - - -/* - * Extra utilities - */ - -.flex-equal > * { - flex: 1; -} -@media (min-width: 768px) { - .flex-md-equal > * { - flex: 1; - } -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/index.astro deleted file mode 100644 index de67a80b..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/index.astro +++ /dev/null @@ -1,352 +0,0 @@ ---- -export const title = 'Sidebars' -export const extra_css = ['sidebars.css'] -export const extra_js = [{src: 'sidebars.js'}] ---- - - - - Bootstrap - - - - - - - - - - - - - - - - - - - - - -
    -

    Sidebars examples

    - - - -
    - - - -
    - -
    - - - Icon-only - - - -
    - -
    - -
    - - - Collapsible - - -
    - -
    - - - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/sidebars.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/sidebars.css deleted file mode 100644 index f6a8f1c5..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/sidebars.css +++ /dev/null @@ -1,63 +0,0 @@ -body { - min-height: 100vh; - min-height: -webkit-fill-available; -} - -html { - height: -webkit-fill-available; -} - -main { - height: 100vh; - height: -webkit-fill-available; - max-height: 100vh; - overflow-x: auto; - overflow-y: hidden; -} - -.dropdown-toggle { outline: 0; } - -.btn-toggle { - padding: .25rem .5rem; - font-weight: 600; - color: var(--bs-emphasis-color); - background-color: transparent; -} -.btn-toggle:hover, -.btn-toggle:focus { - color: rgba(var(--bs-emphasis-color-rgb), .85); - background-color: var(--bs-tertiary-bg); -} - -.btn-toggle::before { - width: 1.25em; - line-height: 0; - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); - transition: transform .35s ease; - transform-origin: .5em 50%; -} - -[data-bs-theme="dark"] .btn-toggle::before { - content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); -} - -.btn-toggle[aria-expanded="true"] { - color: rgba(var(--bs-emphasis-color-rgb), .85); -} -.btn-toggle[aria-expanded="true"]::before { - transform: rotate(90deg); -} - -.btn-toggle-nav a { - padding: .1875rem .5rem; - margin-top: .125rem; - margin-left: 1.25rem; -} -.btn-toggle-nav a:hover, -.btn-toggle-nav a:focus { - background-color: var(--bs-tertiary-bg); -} - -.scrollarea { - overflow-y: auto; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/sidebars.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/sidebars.js deleted file mode 100644 index 4075f1f1..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sidebars/sidebars.js +++ /dev/null @@ -1,8 +0,0 @@ -/* global bootstrap: false */ -(() => { - 'use strict' - const tooltipTriggerList = Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')) - tooltipTriggerList.forEach(tooltipTriggerEl => { - new bootstrap.Tooltip(tooltipTriggerEl) - }) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sign-in/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sign-in/index.astro deleted file mode 100644 index ffbd75b9..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sign-in/index.astro +++ /dev/null @@ -1,32 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Signin Template' -export const extra_css = ['sign-in.css'] -export const body_class = 'd-flex align-items-center py-4 bg-body-tertiary' ---- - -
    -
    - -

    Please sign in

    - -
    - - -
    -
    - - -
    - -
    - - -
    - -

    © 2017–{new Date().getFullYear()}

    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sign-in/sign-in.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sign-in/sign-in.css deleted file mode 100644 index 641f6d90..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sign-in/sign-in.css +++ /dev/null @@ -1,25 +0,0 @@ -html, -body { - height: 100%; -} - -.form-signin { - max-width: 330px; - padding: 1rem; -} - -.form-signin .form-floating:focus-within { - z-index: 2; -} - -.form-signin input[type="email"] { - margin-bottom: -1px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.form-signin input[type="password"] { - margin-bottom: 10px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/starter-template/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/starter-template/index.astro deleted file mode 100644 index 0af31653..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/starter-template/index.astro +++ /dev/null @@ -1,108 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Starter Template' ---- - - - - - - - Bootstrap - - - - -
    -
    - - - Starter template - -
    - -
    -

    Get started with Bootstrap

    -

    Quickly and easily get started with Bootstrap's compiled, production-ready files with this barebones example featuring some basic HTML and helpful links. Download all our examples to get started.

    - - - -
    - -
    -
    -

    Starter projects

    -

    Ready to go beyond the starter template? Check out these open source projects that you can quickly duplicate to a new GitHub repository.

    - -
    - -
    -

    Guides

    -

    Read more detailed instructions and documentation on using or contributing to Bootstrap.

    - -
    -
    -
    -
    - Created by the Bootstrap team · © {new Date().getFullYear()} -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer-navbar/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer-navbar/index.astro deleted file mode 100644 index 9b9b5ebb..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer-navbar/index.astro +++ /dev/null @@ -1,52 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Sticky Footer Navbar Template' -export const extra_css = ['sticky-footer-navbar.css'] -export const html_class = 'h-100' -export const body_class = 'd-flex flex-column h-100' ---- - -
    - - -
    - - -
    -
    -

    Sticky footer with fixed navbar

    -

    Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS. A fixed navbar has been added with padding-top: 60px; on the main > .container.

    -

    Back to the default sticky footer minus the navbar.

    -
    -
    - -
    -
    - Place sticky footer content here. -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer-navbar/sticky-footer-navbar.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer-navbar/sticky-footer-navbar.css deleted file mode 100644 index 3087ead7..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer-navbar/sticky-footer-navbar.css +++ /dev/null @@ -1,7 +0,0 @@ -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -main > .container { - padding: 60px 15px 0; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer/index.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer/index.astro deleted file mode 100644 index b436ad0c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer/index.astro +++ /dev/null @@ -1,23 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' - -export const title = 'Sticky Footer Template' -export const extra_css = ['sticky-footer.css'] -export const html_class = 'h-100' -export const body_class = 'd-flex flex-column h-100' ---- - - -
    -
    -

    Sticky footer

    -

    Pin a footer to the bottom of the viewport in desktop browsers with this custom HTML and CSS.

    -

    Use the sticky footer with a fixed navbar if need be, too.

    -
    -
    - -
    -
    - Place sticky footer content here. -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer/sticky-footer.css b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer/sticky-footer.css deleted file mode 100644 index f8be4372..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/examples/sticky-footer/sticky-footer.css +++ /dev/null @@ -1,9 +0,0 @@ -/* Custom page CSS --------------------------------------------------- */ -/* Not required for template or sticky footer method. */ - -.container { - width: auto; - max-width: 680px; - padding: 0 15px; -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/partials/sidebar.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/partials/sidebar.js deleted file mode 100644 index bf42e7b5..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/partials/sidebar.js +++ /dev/null @@ -1,30 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S ALL JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ - -/* - * JavaScript for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - * For details, see https://creativecommons.org/licenses/by/3.0/. - */ - -export default () => { - // Scroll the active sidebar link into view - const sidenav = document.querySelector('.bd-sidebar') - const sidenavActiveLink = document.querySelector('.bd-links-nav .active') - - if (!sidenav || !sidenavActiveLink) { - return - } - - const sidenavHeight = sidenav.clientHeight - const sidenavActiveLinkTop = sidenavActiveLink.offsetTop - const sidenavActiveLinkHeight = sidenavActiveLink.clientHeight - const viewportTop = sidenavActiveLinkTop - const viewportBottom = viewportTop - sidenavHeight + sidenavActiveLinkHeight - - if (sidenav.scrollTop > viewportTop || sidenav.scrollTop < viewportBottom) { - sidenav.scrollTop = viewportTop - (sidenavHeight / 2) + (sidenavActiveLinkHeight / 2) - } -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/partials/snippets.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/partials/snippets.js deleted file mode 100644 index 498071b4..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/partials/snippets.js +++ /dev/null @@ -1,168 +0,0 @@ -// NOTICE!!! Initially embedded in our docs this JavaScript -// file contains elements that can help you create reproducible -// use cases in StackBlitz for instance. -// In a real project please adapt this content to your needs. -// ++++++++++++++++++++++++++++++++++++++++++ - -/* - * JavaScript for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - * For details, see https://creativecommons.org/licenses/by/3.0/. - */ - -/* global bootstrap: false */ - -export default () => { - // -------- - // Tooltips - // -------- - // Instantiate all tooltips in a docs or StackBlitz - document.querySelectorAll('[data-bs-toggle="tooltip"]') - .forEach(tooltip => { - new bootstrap.Tooltip(tooltip) - }) - - // -------- - // Popovers - // -------- - // Instantiate all popovers in docs or StackBlitz - document.querySelectorAll('[data-bs-toggle="popover"]') - .forEach(popover => { - new bootstrap.Popover(popover) - }) - - // ------------------------------- - // Toasts - // ------------------------------- - // Used by 'Placement' example in docs or StackBlitz - const toastPlacement = document.getElementById('toastPlacement') - if (toastPlacement) { - document.getElementById('selectToastPlacement').addEventListener('change', function () { - if (!toastPlacement.dataset.originalClass) { - toastPlacement.dataset.originalClass = toastPlacement.className - } - - toastPlacement.className = `${toastPlacement.dataset.originalClass} ${this.value}` - }) - } - - // Instantiate all toasts in docs pages only - document.querySelectorAll('.bd-example .toast') - .forEach(toastNode => { - const toast = new bootstrap.Toast(toastNode, { - autohide: false - }) - - toast.show() - }) - - // Instantiate all toasts in docs pages only - // js-docs-start live-toast - const toastTrigger = document.getElementById('liveToastBtn') - const toastLiveExample = document.getElementById('liveToast') - - if (toastTrigger) { - const toastBootstrap = bootstrap.Toast.getOrCreateInstance(toastLiveExample) - toastTrigger.addEventListener('click', () => { - toastBootstrap.show() - }) - } - // js-docs-end live-toast - - // ------------------------------- - // Alerts - // ------------------------------- - // Used in 'Show live alert' example in docs or StackBlitz - - // js-docs-start live-alert - const alertPlaceholder = document.getElementById('liveAlertPlaceholder') - const appendAlert = (message, type) => { - const wrapper = document.createElement('div') - wrapper.innerHTML = [ - `' - ].join('') - - alertPlaceholder.append(wrapper) - } - - const alertTrigger = document.getElementById('liveAlertBtn') - if (alertTrigger) { - alertTrigger.addEventListener('click', () => { - appendAlert('Nice, you triggered this alert message!', 'success') - }) - } - // js-docs-end live-alert - - // -------- - // Carousels - // -------- - // Instantiate all non-autoplaying carousels in docs or StackBlitz - document.querySelectorAll('.carousel:not([data-bs-ride="carousel"])') - .forEach(carousel => { - bootstrap.Carousel.getOrCreateInstance(carousel) - }) - - // ------------------------------- - // Checks & Radios - // ------------------------------- - // Indeterminate checkbox example in docs and StackBlitz - document.querySelectorAll('.bd-example-indeterminate [type="checkbox"]') - .forEach(checkbox => { - if (checkbox.id.includes('Indeterminate')) { - checkbox.indeterminate = true - } - }) - - // ------------------------------- - // Links - // ------------------------------- - // Disable empty links in docs examples only - document.querySelectorAll('.bd-content [href="#"]') - .forEach(link => { - link.addEventListener('click', event => { - event.preventDefault() - }) - }) - - // ------------------------------- - // Modal - // ------------------------------- - // Modal 'Varying modal content' example in docs and StackBlitz - // js-docs-start varying-modal-content - const exampleModal = document.getElementById('exampleModal') - if (exampleModal) { - exampleModal.addEventListener('show.bs.modal', event => { - // Button that triggered the modal - const button = event.relatedTarget - // Extract info from data-bs-* attributes - const recipient = button.getAttribute('data-bs-whatever') - // If necessary, you could initiate an Ajax request here - // and then do the updating in a callback. - - // Update the modal's content. - const modalTitle = exampleModal.querySelector('.modal-title') - const modalBodyInput = exampleModal.querySelector('.modal-body input') - - modalTitle.textContent = `New message to ${recipient}` - modalBodyInput.value = recipient - }) - } - // js-docs-end varying-modal-content - - // ------------------------------- - // Offcanvas - // ------------------------------- - // 'Offcanvas components' example in docs only - const myOffcanvas = document.querySelectorAll('.bd-example-offcanvas .offcanvas') - if (myOffcanvas) { - myOffcanvas.forEach(offcanvas => { - offcanvas.addEventListener('show.bs.offcanvas', event => { - event.preventDefault() - }, false) - }) - } -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/search.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/search.js deleted file mode 100644 index 1077babd..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/search.js +++ /dev/null @@ -1,59 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S ALL JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ - -/*! - * JavaScript for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2024-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - * For details, see https://creativecommons.org/licenses/by/3.0/. - */ - -import docsearch from '@docsearch/js' - -(() => { - // These values will be replaced by Astro's Vite plugin - const CONFIG = { - apiKey: '__API_KEY__', - indexName: '__INDEX_NAME__', - appId: '__APP_ID__' - } - - const searchElement = document.getElementById('docsearch') - - if (!searchElement) { - return - } - - const siteDocsVersion = searchElement.getAttribute('data-bd-docs-version') - - docsearch({ - apiKey: CONFIG.apiKey, - indexName: CONFIG.indexName, - appId: CONFIG.appId, - container: searchElement, - searchParameters: { - facetFilters: [`version:${siteDocsVersion}`] - }, - transformItems(items) { - return items.map(item => { - const liveUrl = 'https://getbootstrap.com/' - - item.url = window.location.origin.startsWith(liveUrl) ? - // On production, return the result as is - item.url : - // On development or Netlify, replace `item.url` with a trailing slash, - // so that the result link is relative to the server root - item.url.replace(liveUrl, '/') - - // Prevent jumping to first header - if (item.anchor === 'content') { - item.url = item.url.replace(/#content$/, '') - item.anchor = null - } - - return item - }) - } - }) -})() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/snippets.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/snippets.js deleted file mode 100644 index d18ab41c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/snippets.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * JavaScript for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2011-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - * For details, see https://creativecommons.org/licenses/by/3.0/. - */ - -// Note that this file is not published; we only include it in scripts.html -// for StackBlitz to work - -/* eslint-disable import/no-unresolved */ -import snippets from 'js/partials/snippets.js' -/* eslint-enable import/no-unresolved */ - -snippets() diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/stackblitz.js b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/stackblitz.js deleted file mode 100644 index 0b450a7d..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/assets/stackblitz.js +++ /dev/null @@ -1,89 +0,0 @@ -// NOTICE!!! Initially embedded in our docs this JavaScript -// file contains elements that can help you create reproducible -// use cases in StackBlitz for instance. -// In a real project please adapt this content to your needs. -// ++++++++++++++++++++++++++++++++++++++++++ - -/*! - * JavaScript for Bootstrap's docs (https://getbootstrap.com/) - * Copyright 2024-2025 The Bootstrap Authors - * Licensed under the Creative Commons Attribution 3.0 Unported License. - * For details, see https://creativecommons.org/licenses/by/3.0/. - */ - -import sdk from '@stackblitz/sdk' -// eslint-disable-next-line import/no-unresolved -import snippetsContent from './partials/snippets.js?raw' - -// These values will be replaced by Astro's Vite plugin -const CONFIG = { - cssCdn: '__CSS_CDN__', - jsBundleCdn: '__JS_BUNDLE_CDN__', - docsVersion: '__DOCS_VERSION__' -} - -// Open in StackBlitz logic -document.querySelectorAll('.btn-edit').forEach(btn => { - btn.addEventListener('click', event => { - const codeSnippet = event.target.closest('.bd-code-snippet') - const exampleEl = codeSnippet.querySelector('.bd-example') - - const htmlSnippet = exampleEl.innerHTML - const jsSnippet = codeSnippet.querySelector('.btn-edit').getAttribute('data-sb-js-snippet') - // Get extra classes for this example - const classes = Array.from(exampleEl.classList).join(' ') - - openBootstrapSnippet(htmlSnippet, jsSnippet, classes) - }) -}) - -const openBootstrapSnippet = (htmlSnippet, jsSnippet, classes) => { - const indexHtml = ` - - - - - - - Bootstrap Example - - - - -${htmlSnippet.trimStart().replace(/^/gm, ' ').replace(/^ {4}$/gm, '').trimEnd()} - - -` - - // Modify the snippets content to convert export default to a variable and invoke it - let modifiedSnippetsContent = '' - - if (jsSnippet) { - // Replace export default with a variable assignment - modifiedSnippetsContent = snippetsContent.replace( - 'export default () => {', - 'const snippets_default = () => {' - ) - - // Add IIFE wrapper and execution - modifiedSnippetsContent = `(() => { - ${modifiedSnippetsContent} - - // - snippets_default(); -})();` - } - - const project = { - files: { - 'index.html': indexHtml, - ...(jsSnippet && { 'index.js': modifiedSnippetsContent }) - }, - title: 'Bootstrap Example', - description: `Official example from ${window.location.href}`, - template: jsSnippet ? 'javascript' : 'html', - tags: ['bootstrap'] - } - - sdk.openProject(project, { openFile: 'index.html' }) -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/Ads.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/Ads.astro deleted file mode 100644 index 2a53c0a6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/Ads.astro +++ /dev/null @@ -1,9 +0,0 @@ ---- ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/DocsSidebar.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/DocsSidebar.astro deleted file mode 100644 index 1282ed70..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/DocsSidebar.astro +++ /dev/null @@ -1,84 +0,0 @@ ---- -import { getData } from '@libs/data' -import { getConfig } from '@libs/config' -import { docsPages } from '@libs/content' -import { getSlug } from '@libs/utils' - -const sidebar = getData('sidebar') ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/Scripts.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/Scripts.astro deleted file mode 100644 index b17057d2..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/Scripts.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import { getVersionedBsJsProps } from '@libs/bootstrap' -import type { Layout } from '@libs/layout' - -interface Props { - layout: Layout -} - -const { layout } = Astro.props ---- - - - - - - -{layout === 'docs' && diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Favicons.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Favicons.astro deleted file mode 100644 index 9c462c90..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Favicons.astro +++ /dev/null @@ -1,11 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' ---- - - - - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Head.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Head.astro deleted file mode 100644 index 434ba835..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Head.astro +++ /dev/null @@ -1,54 +0,0 @@ ---- -import { getConfig } from '@libs/config' -import { getVersionedDocsPath } from '@libs/path' -import type { Layout } from '@libs/layout' -import Stylesheet from '@components/head/Stylesheet.astro' -import Favicons from '@components/head/Favicons.astro' -import Social from '@components/head/Social.astro' -import Analytics from '@components/head/Analytics.astro' -import Scss from '@components/head/Scss.astro' - -interface Props { - description: string - direction?: 'rtl' - layout: Layout - robots: string | undefined - thumbnail: string - title: string -} - -const { description, direction, layout, robots, thumbnail, title } = Astro.props - -const canonicalUrl = new URL(Astro.url.pathname, Astro.site) - -const isHome = Astro.url.pathname === '/' -const pageTitle = isHome - ? `${getConfig().title} · ${getConfig().subtitle}` - : `${title} · ${getConfig().title} v${getConfig().docs_version}` ---- - - - - - - - - - - - - - - - -{pageTitle} - -{robots && } - - - - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Scss.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Scss.astro deleted file mode 100644 index fc10fe75..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Scss.astro +++ /dev/null @@ -1,7 +0,0 @@ ---- ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Social.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Social.astro deleted file mode 100644 index bf97d1e8..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Social.astro +++ /dev/null @@ -1,31 +0,0 @@ ---- -import { getConfig } from '@libs/config' -import { getVersionedDocsPath } from '@libs/path' -import { getStaticImageSize } from '@libs/image' -import type { Layout } from '@libs/layout' - -interface Props { - description: string - layout: Layout - thumbnail: string - title: string -} - -const { description, layout, thumbnail, title } = Astro.props - -const socialImageUrl = new URL(getVersionedDocsPath(`assets/${thumbnail}`), Astro.site) -const socialImageSize = await getStaticImageSize(`/docs/[version]/assets/${thumbnail}`) ---- - - - - - - - - - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Stylesheet.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Stylesheet.astro deleted file mode 100644 index d0203893..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/head/Stylesheet.astro +++ /dev/null @@ -1,13 +0,0 @@ ---- -import { getVersionedBsCssProps } from '@libs/bootstrap' -import type { Layout } from '@libs/layout' - -interface Props { - direction?: 'rtl' - layout: Layout -} - -const { direction } = Astro.props ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Header.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Header.astro deleted file mode 100644 index e68b160a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Header.astro +++ /dev/null @@ -1,20 +0,0 @@ ---- -import type { CollectionEntry } from 'astro:content' -import type { Layout } from '@libs/layout' -import Skippy from '@components/header/Skippy.astro' -import Symbols from '@components/icons/Symbols.astro' -import Navigation from '@components/header/Navigation.astro' - -interface Props { - addedIn?: CollectionEntry<'docs'>['data']['added'] - layout: Layout - title: string -} - -const { addedIn, layout, title } = Astro.props ---- - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/LinkItem.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/LinkItem.astro deleted file mode 100644 index 0b3f42f5..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/LinkItem.astro +++ /dev/null @@ -1,24 +0,0 @@ ---- -interface Props { - active?: boolean - class?: string - href: string - rel?: HTMLAnchorElement['rel'] - target?: HTMLAnchorElement['target'] - track?: boolean -} - -const { active, class: className, track, ...props } = Astro.props - -const content = await Astro.slots.render('default') ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Navigation.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Navigation.astro deleted file mode 100644 index 4e55d54f..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Navigation.astro +++ /dev/null @@ -1,131 +0,0 @@ ---- -import type { CollectionEntry } from 'astro:content' -import { getConfig } from '@libs/config' -import { getVersionedDocsPath } from '@libs/path' -import type { Layout } from '@libs/layout' -import BootstrapWhiteFillIcon from '@components/icons/BootstrapWhiteFillIcon.astro' -import GitHubIcon from '@components/icons/GitHubIcon.astro' -import HamburgerIcon from '@components/icons/HamburgerIcon.astro' -import LinkItem from '@components/header/LinkItem.astro' -import OpenCollectiveIcon from '@components/icons/OpenCollectiveIcon.astro' -import XIcon from '@components/icons/XIcon.astro' -import Versions from '@components/header/Versions.astro' -import ThemeToggler from '@layouts/partials/ThemeToggler.astro' - -interface Props { - addedIn?: CollectionEntry<'docs'>['data']['added'] - layout: Layout - title: string -} - -const { addedIn, layout, title } = Astro.props ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Skippy.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Skippy.astro deleted file mode 100644 index aa5ba1db..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Skippy.astro +++ /dev/null @@ -1,22 +0,0 @@ ---- -import type { Layout } from '@libs/layout' - -interface Props { - layout: Layout -} - -const { layout } = Astro.props ---- - -
    -
    - Skip to main content - { - layout === 'docs' && ( - - Skip to docs navigation - - ) - } -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Versions.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Versions.astro deleted file mode 100644 index a1119e0a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/header/Versions.astro +++ /dev/null @@ -1,96 +0,0 @@ ---- -import type { CollectionEntry } from 'astro:content' -import { getConfig } from '@libs/config' -import type { Layout } from '@libs/layout' -import { getVersionedDocsPath } from '@libs/path' - -interface Props { - addedIn?: CollectionEntry<'docs'>['data']['added'] - layout: Layout -} - -const { addedIn, layout } = Astro.props -const { slug, version } = Astro.params - -const isHome = Astro.url.pathname === '/' - -let versionsLink = '' - -if (layout === 'docs' && version === getConfig().docs_version) { - versionsLink = `${slug}/` -} else if (layout === 'single' && Astro.url.pathname.startsWith(getVersionedDocsPath(''))) { - versionsLink = Astro.url.pathname.replace(getVersionedDocsPath(''), '') -} - -const addedIn51 = addedIn?.version === '5.1' -const addedIn52 = addedIn?.version === '5.2' -const addedIn53 = addedIn?.version === '5.3' ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/CSSVariables.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/CSSVariables.astro deleted file mode 100644 index 92dad9dd..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/CSSVariables.astro +++ /dev/null @@ -1,71 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' -import Code from '@shortcodes/Code.astro' ---- - -
    -
    -
    - -
    -

    Build and extend in real-time with CSS variables

    -

    - Bootstrap 5 is evolving with each release to better utilize CSS variables for global theme styles, individual - components, and even utilities. We provide dozens of variables for colors, font styles, and more at a :root level for use anywhere. On components and utilities, CSS variables are scoped to the relevant class and can easily - be modified. -

    -

    - - Learn more about CSS variables - - -

    -
    -
    -
    -

    Using CSS variables

    -

    - Use any of our global :root variables to write new styles. CSS variables use the var(--bs-variableName) syntax and can be inherited by children - elements. -

    - -
    -
    -

    Customizing via CSS variables

    -

    - Override global, component, or utility class variables to customize Bootstrap just how you like. No need to - redeclare each rule, just a new variable value. -

    - -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/ComponentUtilities.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/ComponentUtilities.astro deleted file mode 100644 index b54d4e40..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/ComponentUtilities.astro +++ /dev/null @@ -1,158 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' -import Code from '@shortcodes/Code.astro' ---- - -
    -
    -
    - -
    - -
    - -
    -

    Components, meet the Utility API

    -

    - New in Bootstrap 5, our utilities are now generated by our Utility API. We built it as a feature-packed Sass map that can be quickly and easily customized. It's never been easier to - add, remove, or modify any utility classes. Make utilities responsive, add pseudo-class variants, and give them - custom names. -

    -
    -
    -
    -

    Quickly customize components

    -

    - Apply any of our included utility classes to our components to customize their appearance, like the navigation - example below. There are hundreds of classes available—from positioning and sizing to colors and effects. Mix them with CSS variable overrides for - even more control. -

    -
    - - -
    - - - - -`} - lang="html" - /> -

    - - Explore customized components - - -

    -
    -
    -

    Create and extend utilities

    -

    - Use Bootstrap's utility API to modify any of our included utilities or create your own custom utilities for any - project. Import Bootstrap first, then use Sass map functions to modify, add, or remove utilities. -

    - -

    - - Explore the utility API - - -

    -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Customize.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Customize.astro deleted file mode 100644 index 7422c517..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Customize.astro +++ /dev/null @@ -1,69 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' -import Code from '@shortcodes/Code.astro' ---- - -
    -
    - -
    -

    Customize everything with Sass

    -

    - Bootstrap utilizes Sass for a modular and customizable architecture. Import only the components you need, enable - global options like gradients and shadows, and write your own CSS with our variables, maps, functions, and mixins. -

    -

    - - Learn more about customizing - - -

    -
    - -
    -
    -

    Include all of Bootstrap’s Sass

    -

    Import one stylesheet and you're off to the races with every feature of our CSS.

    - -

    Learn more about our global Sass options.

    -
    -
    -

    Include what you need

    -

    The easiest way to customize Bootstrap—include only the CSS you need.

    - -

    Learn more about using Bootstrap with Sass.

    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/GetStarted.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/GetStarted.astro deleted file mode 100644 index 4ad6807c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/GetStarted.astro +++ /dev/null @@ -1,115 +0,0 @@ ---- -import { getConfig } from '@libs/config' -import { getVersionedDocsPath } from '@libs/path' -import Code from '@shortcodes/Code.astro' ---- - -
    -
    - -
    -

    Get started any way you want

    -

    - Jump right into building with Bootstrap—use the CDN, install it via package manager, or download the source code. -

    -

    - - Read installation docs - - -

    -
    - -
    -
    - -

    Install via package manager

    -

    - Install Bootstrap’s source Sass and JavaScript files via npm, RubyGems, Composer, or Meteor. Package-managed - installs don’t include documentation or our full build scripts. You can also use any demo from our Examples repo to quickly jumpstart Bootstrap projects. -

    - - -

    - Read our installation docs for more info and additional - package managers. -

    -
    -
    - -

    Include via CDN

    -

    - When you only need to include Bootstrap’s compiled CSS or JS, you can use jsDelivr. See it in action with our simple quick start, or browse the examples to jumpstart your next project. You can also - choose to include Popper and our JS separately. -

    - `} - lang="html" - /> - `} - lang="html" - /> -
    - -
    -

    Read our getting started guides

    -

    Get a jump on including Bootstrap's source files in a new project with our official guides.

    - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Icons.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Icons.astro deleted file mode 100644 index 4991dab5..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Icons.astro +++ /dev/null @@ -1,28 +0,0 @@ ---- -import { getConfig } from '@libs/config' -import CircleSquareIcon from '@components/icons/CircleSquareIcon.astro' -import ResponsiveImage from '@layouts/partials/ResponsiveImage.astro' ---- - -
    -
    -
    - -
    -

    Personalize it with Bootstrap Icons

    -

    - Bootstrap Icons is an open source SVG icon library featuring over 1,800 glyphs, with - more added every release. They're designed to work in any project, whether you use Bootstrap itself or not. Use them - as SVGs or icon fonts—both options give you vector scaling and easy customization via CSS. -

    -

    - - Get Bootstrap Icons - - -

    -
    -
    - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/MastHead.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/MastHead.astro deleted file mode 100644 index f9054bac..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/MastHead.astro +++ /dev/null @@ -1,60 +0,0 @@ ---- -import { getConfig } from '@libs/config' -import { getVersionedDocsPath } from '@libs/path' -import Ads from '@components/Ads.astro' -import Code from '@components/shortcodes/Code.astro' -import ResponsiveImage from '@layouts/partials/ResponsiveImage.astro' ---- - -
    -
    -
    - - - Get Security Updates for Bootstrap 3 & 4 - - - - -

    Build fast, responsive sites with Bootstrap

    -

    - Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid - system and components, and bring projects to life with powerful JavaScript plugins. -

    - -

    - Currently v{getConfig().current_version} - · - Download - · - All releases -

    - -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Plugins.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Plugins.astro deleted file mode 100644 index 236ac5a1..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Plugins.astro +++ /dev/null @@ -1,90 +0,0 @@ ---- -import { getVersionedDocsPath } from '@libs/path' -import { getData } from '@libs/data' -import Code from '@shortcodes/Code.astro' - -const plugins = getData('plugins') ---- - -
    -
    -
    - -
    -

    Powerful JavaScript plugins without jQuery

    -

    - Add toggleable hidden elements, modals and offcanvas menus, popovers and tooltips, and so much more—all without - jQuery. Bootstrap's JavaScript is HTML-first, meaning most plugins are added with data attributes in your - HTML. Need more control? Include individual plugins programmatically. -

    -

    - - Learn more about Bootstrap JavaScript - - -

    -
    -
    -
    -

    Data attribute API

    -

    - Why write more JavaScript when you can write HTML? Nearly all of Bootstrap's JavaScript plugins feature a - first-class data API, allowing you to use JavaScript just by adding data attributes. -

    -
    - -
    - - - -
    `} - lang="html" - /> -

    - Learn more about our JavaScript as modules and using the programmatic API. -

    -
    -
    -

    Comprehensive set of plugins

    -

    - Bootstrap features a dozen plugins that you can drop into any project. Drop them in all at once, or choose just - the ones you need. -

    -
    -
    - { - plugins.map((plugin) => { - return ( - - ) - }) - } -
    -
    - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Themes.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Themes.astro deleted file mode 100644 index 68dd5e12..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/home/Themes.astro +++ /dev/null @@ -1,35 +0,0 @@ ---- -import { getConfig } from '@libs/config' -import DropletFillIcon from '@components/icons/DropletFillIcon.astro' -import ResponsiveImage from '@layouts/partials/ResponsiveImage.astro' ---- - -
    -
    -
    - -
    -

    Make it yours with official Bootstrap Themes

    -

    - Take Bootstrap to the next level with premium themes from the official Bootstrap Themes marketplace. Themes are built on Bootstrap as their own extended frameworks, rich with new components and plugins, - documentation, and powerful build tools. -

    -

    - - Browse Bootstrap Themes - - -

    -
    -
    - -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/BootstrapWhiteFillIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/BootstrapWhiteFillIcon.astro deleted file mode 100644 index ef40e6a4..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/BootstrapWhiteFillIcon.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - - Bootstrap - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/CircleSquareIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/CircleSquareIcon.astro deleted file mode 100644 index d7189506..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/CircleSquareIcon.astro +++ /dev/null @@ -1,23 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/DropletFillIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/DropletFillIcon.astro deleted file mode 100644 index d1fe5b51..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/DropletFillIcon.astro +++ /dev/null @@ -1,24 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/GitHubIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/GitHubIcon.astro deleted file mode 100644 index faa01434..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/GitHubIcon.astro +++ /dev/null @@ -1,24 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - - GitHub - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/HamburgerIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/HamburgerIcon.astro deleted file mode 100644 index 8ff4730a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/HamburgerIcon.astro +++ /dev/null @@ -1,23 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/OpenCollectiveIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/OpenCollectiveIcon.astro deleted file mode 100644 index fc501641..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/OpenCollectiveIcon.astro +++ /dev/null @@ -1,26 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - - Open Collective - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/Symbols.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/Symbols.astro deleted file mode 100644 index 44d3e731..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/Symbols.astro +++ /dev/null @@ -1,148 +0,0 @@ ---- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/XIcon.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/XIcon.astro deleted file mode 100644 index ea0f4bd8..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/icons/XIcon.astro +++ /dev/null @@ -1,23 +0,0 @@ ---- -import type { SvgIconProps } from '@libs/icon' - -type Props = SvgIconProps - -const { class: className, height, width } = Astro.props ---- - - - X - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/AddedIn.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/AddedIn.astro deleted file mode 100644 index d9a26ce5..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/AddedIn.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -/* - * Outputs badge to identify the first version something was added - */ - -interface Props { - version: string -} - -const { version } = Astro.props ---- - -Added in v{version} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/BsTable.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/BsTable.astro deleted file mode 100644 index df80455f..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/BsTable.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -interface Props { - /** - * The CSS class to apply to the table. - * Note that the prop is not used in this component, but in a rehype plugin applying the classes to the table element - * directly on the HTML AST (HAST) generated by Astro. - * @default "table" - * @see src/libs/rehype.ts - */ - class?: string -} ---- - -
    - -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Callout.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Callout.astro deleted file mode 100644 index 11243c84..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Callout.astro +++ /dev/null @@ -1,44 +0,0 @@ ---- -import { getCalloutByName } from '@libs/content' -import type { MarkdownInstance } from 'astro' - -interface Props { - /** - * The name of an existing callout to display located in `src/content/callouts`. - * This will override any content passed in via the default slot. - */ - name?: - | 'danger-async-methods' - | 'info-mediaqueries-breakpoints' - | 'info-npm-starter' - | 'info-prefersreducedmotion' - | 'info-sanitizer' - | 'warning-color-assistive-technologies' - | 'warning-data-bs-title-vs-title' - | 'warning-input-support' - /** - * The type of callout to display. One of `info`, `danger`, or `warning`. - * @default 'info' - */ - type?: 'danger' | 'info' | 'warning' -} - -const { name, type = 'info' } = Astro.props - -let Content: MarkdownInstance<{}>['Content'] | undefined - -if (name) { - const callout = await getCalloutByName(name) - - if (!callout) { - throw new Error(`Could not find callout with name '${name}'.`) - } - - const namedCallout = await callout.render() - Content = namedCallout.Content -} ---- - -
    - {Content ? : } -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/CalloutDeprecatedDarkVariants.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/CalloutDeprecatedDarkVariants.astro deleted file mode 100644 index 4033900d..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/CalloutDeprecatedDarkVariants.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -/* - * Outputs message about dark mode component variants being deprecated in v5.3. - */ - -interface Props { - component: string -} - -const { component } = Astro.props ---- - -
    -

    - Heads up! Dark variants for components were deprecated in v5.3.0 with the introduction of color modes. - Instead of adding .{component}-dark, set data-bs-theme="dark" on the root element, a parent - wrapper, or the component itself. -

    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Code.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Code.astro deleted file mode 100644 index 231002a5..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Code.astro +++ /dev/null @@ -1,156 +0,0 @@ ---- -import fs from 'node:fs' -import path from 'node:path' -import { Prism } from '@astrojs/prism' - -interface Props { - /** - * The CSS class(es) to be added to the `pre` HTML element when rendering code blocks in Markdown. - * Note that this prop is not used when the component is invoked directly. - */ - class?: string - /** - * The code to highlight. - * If an array is passed, elements will be joined with a new line. - */ - code?: string | string[] - /** - * The CSS class(es) to be added to the `div` wrapper HTML element. - */ - containerClass?: string - /** - * The language to use for highlighting. - * @see https://prismjs.com/#supported-languages - */ - lang?: string - /** - * If the `filePath` prop is defined, this prop can be used to specify a regex containing a match group to extract - * only a part of the file. - */ - fileMatch?: string - /** - * A path to the file containing the code to highlight relative to the root of the repository. - * This takes precedence over the `code` prop. - */ - filePath?: string -} - -const { class: className, code, containerClass, fileMatch, filePath, lang } = Astro.props - -let codeToDisplay = filePath - ? fs.readFileSync(path.join(process.cwd(), filePath), 'utf8') - : Array.isArray(code) - ? code.join('\n') - : code - -if (filePath && fileMatch && codeToDisplay) { - const match = codeToDisplay.match(new RegExp(fileMatch)) - - if (!match || !match[0]) { - throw new Error(`The file at ${filePath} does not contains a match for the regex '${fileMatch}'.`) - } - - codeToDisplay = match[0] -} ---- - - - -
    - { - Astro.slots.has('pre') ? ( - - ) : ( -
    - -
    - ) - } -
    - { - codeToDisplay && lang ? ( - - ) : ( - /* prettier-ignore */
    - ) - } -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/DeprecatedIn.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/DeprecatedIn.astro deleted file mode 100644 index 50ba42b9..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/DeprecatedIn.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -/* - * Outputs badge to identify the version something was deprecated - */ - -interface Props { - version: string -} - -const { version } = Astro.props ---- - - - Deprecated in v{version} - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Example.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Example.astro deleted file mode 100644 index a09fffeb..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Example.astro +++ /dev/null @@ -1,105 +0,0 @@ ---- -import { replacePlaceholdersInHtml } from '@libs/placeholder' -import { Prism } from '@astrojs/prism' - -interface Props { - /** - * Defines if extra JS snippet should be added to StackBlitz or not. - * @default false - */ - addStackblitzJs?: boolean - /** - * The example code. - * If an array is passed, elements will be joined with a new line. - */ - code: string | string[] - /** - * The CSS class(es) to be added to the preview wrapping `div` element. - */ - class?: string - /** - * The preview wrapping `div` element ID. - */ - id?: string - /** - * Language used to display the code. - * @default 'html' - */ - lang?: string - /** - * Defines if the markup should be visible or not. - * @default true - */ - showMarkup?: boolean - /** - * Defines if the preview should be visible or not. - * @default true - */ - showPreview?: boolean -} - -const { - addStackblitzJs = false, - code, - class: className, - id, - lang = 'html', - showMarkup = true, - showPreview = true -} = Astro.props - -let markup = Array.isArray(code) ? code.join('\n') : code -markup = replacePlaceholdersInHtml(markup) - -const simplifiedMarkup = markup - .replace( - //g, - (match, classes) => `...` - ) - .replace( - //g, - (match, classes) => `...` - ) ---- - -
    - { - showPreview && ( -
    - -
    - ) - } - - { - showMarkup && ( - <> - {showPreview && ( -
    - {lang} -
    - - -
    -
    - )} -
    - -
    - - ) - } -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/GuideFooter.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/GuideFooter.mdx deleted file mode 100644 index 426a71f2..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/GuideFooter.mdx +++ /dev/null @@ -1,3 +0,0 @@ -
    - -_See something wrong or out of date here? Please [open an issue on GitHub]([[config:repo]]/issues/new/choose). Need help troubleshooting? [Search or start a discussion]([[config:repo]]/discussions) on GitHub._ diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDataAttributes.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDataAttributes.mdx deleted file mode 100644 index b7c6c0a7..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDataAttributes.mdx +++ /dev/null @@ -1,5 +0,0 @@ -As options can be passed via data attributes or JavaScript, you can append an option name to `data-bs-`, as in `data-bs-animation="{value}"`. Make sure to change the case type of the option name from “_camelCase_” to “_kebab-case_” when passing the options via data attributes. For example, use `data-bs-custom-class="beautifier"` instead of `data-bs-customClass="beautifier"`. - -As of Bootstrap 5.2.0, all components support an **experimental** reserved data attribute `data-bs-config` that can house simple component configuration as a JSON string. When an element has `data-bs-config='{"delay":0, "title":123}'` and `data-bs-title="456"` attributes, the final `title` value will be `456` and the separate data attributes will override values given on `data-bs-config`. In addition, existing data attributes are able to house JSON values like `data-bs-delay='{"show":0,"hide":150}'`. - -The final configuration object is the merged result of `data-bs-config`, `data-bs-`, and `js object` where the latest given key-value overrides the others. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDismiss.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDismiss.astro deleted file mode 100644 index d1da8fc4..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDismiss.astro +++ /dev/null @@ -1,29 +0,0 @@ ---- -import Code from '@shortcodes/Code.astro' - -interface Props { - name: string -} - -const { name } = Astro.props ---- - -

    - Dismissal can be achieved with the data-bs-dismiss attribute on a button within the {name} as demonstrated below: -

    - -`} - lang="html" -/> - -

    - or on a button outside the {name} using the additional data-bs-target as demonstrated below: -

    - -`} - lang="html" -/> diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDocs.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDocs.astro deleted file mode 100644 index cf756af8..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/JsDocs.astro +++ /dev/null @@ -1,69 +0,0 @@ ---- -import fs from 'node:fs' -import { getConfig } from '@libs/config' -import Code from '@shortcodes/Code.astro' - -// Prints everything between `// js-docs-start "name"` and `// js-docs-end "name"` -// comments in the docs. - -interface Props { - /** - * Reference name used to find the content to display within the content of the `file` prop. - */ - name: string - /** - * File path that contains the content to display relative to the root of the repository. - */ - file: string -} - -const { name, file } = Astro.props - -if (!name || !file) { - throw new Error( - `Missing required parameter(s) for the '' component, expected both 'name' and 'file' but got 'name: ${name}' and 'file: ${file}'.` - ) -} - -let content: string - -try { - const fileContent = fs.readFileSync(file, 'utf8') - - const matches = fileContent.match(new RegExp(`\/\/ js-docs-start ${name}\n((?:.|\n)*)\/\/ js-docs-end ${name}`, 'm')) - - if (!matches || !matches[1]) { - throw new Error( - `Failed to find the content named '${name}', make sure that '// js-docs-start ${name}' and '// js-docs-end ${name}' are defined.` - ) - } - - content = matches[1] - - // Fix the identation by removing extra spaces at the beginning of each line - const lines = content.split('\n') - const spaceCounts = lines.filter((line) => line.trim().length > 0).map((line) => line.match(/^ */)[0].length) - const minSpaces = spaceCounts.length ? Math.min(...spaceCounts) : 0 - content = lines.map((line) => line.slice(minSpaces)).join('\n') -} catch (error) { - throw new Error(`Failed to find the content to render in the '' component at '${file}'.`, { - cause: error - }) -} ---- - - -
    - - {file} - -
    - -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Placeholder.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Placeholder.astro deleted file mode 100644 index 3ebde32b..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Placeholder.astro +++ /dev/null @@ -1,27 +0,0 @@ ---- -import { getPlaceholder, type PlaceholderOptions } from '@libs/placeholder' - -type Props = Partial - -const { - options: { background, color, showText, showTitle, text, title }, - props, - type -} = getPlaceholder(Astro.props) ---- - -{ - type === 'img' ? ( - - ) : ( - - {showTitle && {title}} - - {showText && ( - - {text} - - )} - - ) -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/ScssDocs.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/ScssDocs.astro deleted file mode 100644 index 6c267570..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/ScssDocs.astro +++ /dev/null @@ -1,71 +0,0 @@ ---- -import fs from 'node:fs' -import { getConfig } from '@libs/config' -import Code from '@shortcodes/Code.astro' - -// Prints everything between `// scss-docs-start "name"` and `// scss-docs-end "name"` -// comments in the docs. - -interface Props { - /** - * Reference name used to find the content to display within the content of the `file` prop. - */ - name: string - /** - * File path that contains the content to display relative to the root of the repository. - */ - file: string -} - -const { name, file } = Astro.props - -if (!name || !file) { - throw new Error( - `Missing required parameter(s) for the '' component, expected both 'name' and 'file' but got 'name: ${name}' and 'file: ${file}'.` - ) -} - -let content: string - -try { - const fileContent = fs.readFileSync(file, 'utf8') - - const matches = fileContent.match( - new RegExp(`\/\/ scss-docs-start ${name}\n((?:.|\n)*)\/\/ scss-docs-end ${name}`, 'm') - ) - - if (!matches || !matches[1]) { - throw new Error( - `Failed to find the content named '${name}', make sure that '// scss-docs-start ${name}' and '// scss-docs-end ${name}' are defined.` - ) - } - - content = matches[1].replaceAll(' !default', '') - - // Fix the identation by removing extra spaces at the beginning of each line - const lines = content.split('\n') - const spaceCounts = lines.filter((line) => line.trim().length > 0).map((line) => line.match(/^ */)[0].length) - const minSpaces = spaceCounts.length ? Math.min(...spaceCounts) : 0 - content = lines.map((line) => line.slice(minSpaces)).join('\n') -} catch (error) { - throw new Error(`Failed to find the content to render in the '' component at '${file}'.`, { - cause: error - }) -} ---- - - -
    - - {file} - -
    - -
    -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Table.astro b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Table.astro deleted file mode 100644 index 853b1970..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/Table.astro +++ /dev/null @@ -1,31 +0,0 @@ ---- -import Code from '@shortcodes/Code.astro' -import * as tableContent from '@shortcodes/TableContent.md' - -interface Props { - /** - * Any class(es) to be added to the `` element (both in the example and code snippet). - */ - class?: string - /** - * Show a simplified version in the example code snippet by replacing the table content inside `
    ` & `
    ` - * with `...`. - * @default true - */ - simplified?: boolean -} - -const { class: className, simplified = true } = Astro.props - -const tableCode = ` -${simplified ? ' ...' : await tableContent.compiledContent()} -` ---- - -
    - - -
    -
    - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/TableContent.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/TableContent.md deleted file mode 100644 index cee54c6d..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/components/shortcodes/TableContent.md +++ /dev/null @@ -1,28 +0,0 @@ - - - # - First - Last - Handle - - - - - 1 - Mark - Otto - @mdo - - - 2 - Jacob - Thornton - @fat - - - 3 - John - Doe - @social - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/danger-async-methods.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/danger-async-methods.md deleted file mode 100644 index 7b7a654b..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/danger-async-methods.md +++ /dev/null @@ -1 +0,0 @@ -**All API methods are asynchronous and start a transition.** They return to the caller as soon as the transition is started, but before it ends. In addition, a method call on a transitioning component will be ignored. [Learn more in our JavaScript docs.](/docs/[[config:docs_version]]/getting-started/javascript/#asynchronous-functions-and-transitions) diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-mediaqueries-breakpoints.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-mediaqueries-breakpoints.md deleted file mode 100644 index 52be6738..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-mediaqueries-breakpoints.md +++ /dev/null @@ -1 +0,0 @@ -**Why subtract .02px?** Browsers don’t currently support [range context queries](https://www.w3.org/TR/mediaqueries-4/#range-context), so we work around the limitations of [`min-` and `max-` prefixes](https://www.w3.org/TR/mediaqueries-4/#mq-min-max) and viewports with fractional widths (which can occur under certain conditions on high-dpi devices, for instance) by using values with higher precision. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-npm-starter.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-npm-starter.md deleted file mode 100644 index cc4a50e6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-npm-starter.md +++ /dev/null @@ -1 +0,0 @@ -**Get started with Bootstrap via npm with our starter project!** Head to the [Sass & JS example](https://github.com/twbs/examples/tree/main/sass-js) template repository to see how to build and customize Bootstrap in your own npm project. Includes Sass compiler, Autoprefixer, Stylelint, PurgeCSS, and Bootstrap Icons. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-prefersreducedmotion.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-prefersreducedmotion.md deleted file mode 100644 index 49d81ef8..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-prefersreducedmotion.md +++ /dev/null @@ -1 +0,0 @@ -The animation effect of this component is dependent on the `prefers-reduced-motion` media query. See the [reduced motion section of our accessibility documentation](/docs/[[config:docs_version]]/getting-started/accessibility/#reduced-motion). diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-sanitizer.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-sanitizer.md deleted file mode 100644 index 516975b3..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/info-sanitizer.md +++ /dev/null @@ -1 +0,0 @@ -By default, this component uses the built-in content sanitizer, which strips out any HTML elements that are not explicitly allowed. See the [sanitizer section in our JavaScript documentation](/docs/[[config:docs_version]]/getting-started/javascript/#sanitizer) for more details. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-color-assistive-technologies.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-color-assistive-technologies.md deleted file mode 100644 index 8afa62ee..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-color-assistive-technologies.md +++ /dev/null @@ -1 +0,0 @@ -**Accessibility tip:** Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies like screen readers. Please ensure the meaning is obvious from the content itself (e.g., the visible text with a [_sufficient_ color contrast](/docs/[[config:docs_version]]/getting-started/accessibility/#color-contrast)) or is included through alternative means, such as additional text hidden with the `.visually-hidden` class. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-data-bs-title-vs-title.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-data-bs-title-vs-title.md deleted file mode 100644 index e932f22a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-data-bs-title-vs-title.md +++ /dev/null @@ -1 +0,0 @@ -Feel free to use either `title` or `data-bs-title` in your HTML. When `title` is used, Popper will replace it automatically with `data-bs-title` when the element is rendered. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-input-support.md b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-input-support.md deleted file mode 100644 index f9d9c0ab..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/callouts/warning-input-support.md +++ /dev/null @@ -1 +0,0 @@ -Some date inputs types are [not fully supported](https://caniuse.com/input-datetime) by the latest versions of Safari and Firefox. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/config.ts b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/config.ts deleted file mode 100644 index 387a0052..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/config.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { z, defineCollection } from 'astro:content' - -const docsSchema = z.object({ - added: z - .object({ - show_badge: z.boolean().optional(), - version: z.string() - }) - .optional(), - aliases: z.string().or(z.string().array()).optional(), - description: z.string(), - direction: z.literal('rtl').optional(), - extra_js: z - .object({ - async: z.boolean().optional(), - src: z.string() - }) - .array() - .optional(), - sections: z - .object({ - description: z.string(), - title: z.string() - }) - .array() - .optional(), - thumbnail: z.string().optional(), - title: z.string(), - toc: z.boolean().optional() -}) - -const docsCollection = defineCollection({ - schema: docsSchema -}) - -const calloutsSchema = z.object({}) - -const calloutsCollection = defineCollection({ - schema: calloutsSchema -}) - -export const collections = { - docs: docsCollection, - callouts: calloutsCollection -} diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/brand.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/brand.mdx deleted file mode 100644 index 0b171622..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/brand.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Brand guidelines -description: Documentation and examples for Bootstrap’s logo and brand usage guidelines. -toc: true ---- - -Have a need for Bootstrap’s brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. - -## Logo - -When referencing Bootstrap, use our logo mark. Do not modify our logos in any way. Do not use Bootstrap’s branding for your own open or closed source projects. - -
    - Bootstrap -
    - -Our logo mark is also available in black and white. All rules for our primary logo apply to these as well. - -
    -
    - Bootstrap -
    -
    - Bootstrap -
    -
    - -## Name - -Bootstrap should always be referred to as just **Bootstrap**. No capital _s_. - -
    -
    -
    Bootstrap
    - Correct -
    -
    -
    BootStrap
    - Incorrect -
    -
    diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/license.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/license.mdx deleted file mode 100644 index 6479df67..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/license.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: License FAQs -description: Commonly asked questions about Bootstrap’s open source license. ---- - -Bootstrap is released under the MIT license and is copyright {new Date().getFullYear()}. Boiled down to smaller chunks, it can be described with the following conditions. - -## It requires you to: - -- Keep the license and copyright notice included in Bootstrap’s CSS and JavaScript files when you use them in your works - -## It permits you to: - -- Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes -- Use Bootstrap in packages or distributions that you create -- Modify the source code -- Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license - -## It forbids you to: - -- Hold the authors and license owners liable for damages as Bootstrap is provided without warranty -- Hold the creators or copyright holders of Bootstrap liable -- Redistribute any piece of Bootstrap without proper attribution -- Use any marks owned by Bootstrap in any way that might state or imply that Bootstrap endorses your distribution -- Use any marks owned by Bootstrap in any way that might state or imply that you created the Bootstrap software in question - -## It does not require you to: - -- Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it -- Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged) - -The full Bootstrap license is located [in the project repository]([[config:repo]]/blob/v[[config:current_version]]/LICENSE) for more information. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/overview.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/overview.mdx deleted file mode 100644 index efd16c54..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/overview.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: About Bootstrap -description: Learn more about the team maintaining Bootstrap, how and why the project started, and how to get involved. -aliases: - - "/about/" - - "/docs/[[config:docs_version]]/about/" ---- - -## Team - -Bootstrap is maintained by a [small team of developers](https://github.com/orgs/twbs/people) on GitHub. We’re actively looking to grow this team and would love to hear from you if you’re excited about CSS at scale, writing and maintaining vanilla JavaScript plugins, and improving build tooling processes for frontend code. - -## History - -Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world. - -Bootstrap was created at Twitter in mid-2010 by [@mdo](https://x.com/mdo) and [@fat](https://x.com/fat). Prior to being an open-sourced framework, Bootstrap was known as _Twitter Blueprint_. A few months into development, Twitter held its [first Hack Week](https://blog.x.com/engineering/en_us/a/2010/hack-week) and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today. - -Originally [released](https://blog.x.com/developer/en_us/a/2011/bootstrap-twitter) on , we’ve since had over [twenty releases]([[config:repo]]/releases), including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach. - -With Bootstrap 4, we once again rewrote the project to account for two key architectural changes: a migration to Sass and the move to CSS’s flexbox. Our intention is to help in a small way to move the web development community forward by pushing for newer CSS properties, fewer dependencies, and new technologies across more modern browsers. - -Our latest release, Bootstrap 5, focuses on improving v4’s codebase with as few major breaking changes as possible. We improved existing features and components, removed support for older browsers, dropped jQuery for regular JavaScript, and embraced more future-friendly technologies like CSS custom properties as part of our tooling. - -## Get involved - -Get involved with Bootstrap development by [opening an issue]([[config:repo]]/issues/new/choose) or submitting a pull request. Read our [contributing guidelines]([[config:repo]]/blob/v[[config:current_version]]/.github/CONTRIBUTING.md) for information on how we develop. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/team.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/team.mdx deleted file mode 100644 index 46b03d87..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/team.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Team -description: An overview of the founding team and core contributors to Bootstrap. ---- - -import { getData } from '@libs/data' - -Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community. - -
    - {getData('core-team').map((member) => { - return ( - - {`@${member.user}`} - - {member.name} @{member.user} - - - ) - })} -
    - -Get involved with Bootstrap development by [opening an issue]([[config:repo]]/issues/new/choose) or submitting a pull request. Read our [contributing guidelines]([[config:repo]]/blob/v[[config:current_version]]/.github/CONTRIBUTING.md) for information on how we develop. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/translations.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/translations.mdx deleted file mode 100644 index 7db4ab84..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/about/translations.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Translations -description: Links to community-translated Bootstrap documentation sites. ---- - -import { getData } from '@libs/data' - -Community members have translated Bootstrap’s documentation into various languages. None are officially supported and they may not always be up-to-date. - - - -**We don’t help organize or host translations, we just link to them.** - -Finished a new or better translation? Open a pull request to add it to our list. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/accordion.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/accordion.mdx deleted file mode 100644 index 06c95d4a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/accordion.mdx +++ /dev/null @@ -1,240 +0,0 @@ ---- -title: Accordion -description: Build vertically collapsing accordions in combination with our Collapse JavaScript plugin. -aliases: - - "/components/" - - "/docs/[[config:docs_version]]/components/" -toc: true ---- - -## How it works - -The accordion uses [collapse]([[docsref:/components/collapse]]) internally to make it collapsible. - - - -## Example - -Click the accordions below to expand/collapse the accordion content. - -To render an accordion that’s expanded by default: -- add the `.show` class on the `.accordion-collapse` element. -- drop the `.collapsed` class from the `.accordion-button` element and set its `aria-expanded` attribute to `true`. - - -
    -

    - -

    -
    -
    - This is the first item’s accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It’s also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    -

    - -

    -
    -
    - This is the second item’s accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It’s also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    -

    - -

    -
    -
    - This is the third item’s accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It’s also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    - `} /> - -### Flush - -Add `.accordion-flush` to remove some borders and rounded corners to render accordions edge-to-edge with their parent container. - - -
    -

    - -

    -
    -
    Placeholder content for this accordion, which is intended to demonstrate the .accordion-flush class. This is the first item’s accordion body.
    -
    -
    -
    -

    - -

    -
    -
    Placeholder content for this accordion, which is intended to demonstrate the .accordion-flush class. This is the second item’s accordion body. Let’s imagine this being filled with some actual content.
    -
    -
    -
    -

    - -

    -
    -
    Placeholder content for this accordion, which is intended to demonstrate the .accordion-flush class. This is the third item’s accordion body. Nothing more exciting happening here in terms of content, but just filling up the space to make it look, at least at first glance, a bit more representative of how this would look in a real-world application.
    -
    -
    - `} /> - -### Always open - -Omit the `data-bs-parent` attribute on each `.accordion-collapse` to make accordion items stay open when another item is opened. - - -
    -

    - -

    -
    -
    - This is the first item’s accordion body. It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It’s also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    -

    - -

    -
    -
    - This is the second item’s accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It’s also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    -
    -

    - -

    -
    -
    - This is the third item’s accordion body. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It’s also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
    -
    -
    - `} /> - -## Accessibility - -Please read the [collapse accessibility section]([[docsref:/components/collapse#accessibility]]) for more information. - -## CSS - -### Variables - - - -As part of Bootstrap’s evolving CSS variables approach, accordions now use local CSS variables on `.accordion` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -### Sass variables - - - -## Usage - -The collapse plugin utilizes a few classes to handle the heavy lifting: - -- `.collapse` hides the content -- `.collapse.show` shows the content -- `.collapsing` is added when the transition starts, and removed when it finishes - -These classes can be found in `_transitions.scss`. - -### Via data attributes - -Just add `data-bs-toggle="collapse"` and a `data-bs-target` to the element to automatically assign control of one or more collapsible elements. The `data-bs-target` attribute accepts a CSS selector to apply the collapse to. Be sure to add the class `collapse` to the collapsible element. If you’d like it to default open, add the additional class `show`. - -To add accordion group management to a collapsible area, add the data attribute `data-bs-parent="#selector"`. - -### Via JavaScript - -Enable manually with: - -```js -const accordionCollapseElementList = document.querySelectorAll('#myAccordion.collapse') -const accordionCollapseList = [...accordionCollapseElementList].map(accordionCollapseEl => new bootstrap.Collapse(accordionCollapseEl)) -``` - -### Options - - - - -| Name | Type | Default | Description | -| --- | --- | --- | --- | -`parent` | selector, DOM element | `null` | If parent is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the `card` class). The attribute has to be set on the target collapsible area. | -`toggle` | boolean | `true` | Toggles the collapsible element on invocation. | - - -### Methods - - - -Activates your content as a collapsible element. Accepts an optional options `object`. - -You can create a collapse instance with the constructor, for example: - -```js -const bsCollapse = new bootstrap.Collapse('#myCollapse', { - toggle: false -}) -``` - - -| Method | Description | -| --- | --- | -| `dispose` | Destroys an element’s collapse. (Removes stored data on the DOM element) | -| `getInstance` | Static method which allows you to get the collapse instance associated to a DOM element, you can use it like this: `bootstrap.Collapse.getInstance(element)`. | -| `getOrCreateInstance` | Static method which returns a collapse instance associated to a DOM element or create a new one in case it wasn’t initialized. You can use it like this: `bootstrap.Collapse.getOrCreateInstance(element)`. | -| `hide` | Hides a collapsible element. **Returns to the caller before the collapsible element has actually been hidden** (e.g., before the `hidden.bs.collapse` event occurs). | -| `show` | Shows a collapsible element. **Returns to the caller before the collapsible element has actually been shown** (e.g., before the `shown.bs.collapse` event occurs). | -| `toggle` | Toggles a collapsible element to shown or hidden. **Returns to the caller before the collapsible element has actually been shown or hidden** (i.e. before the `shown.bs.collapse` or `hidden.bs.collapse` event occurs). | - - -### Events - -Bootstrap’s collapse class exposes a few events for hooking into collapse functionality. - - -| Event type | Description | -| --- | --- | -| `hide.bs.collapse` | This event is fired immediately when the `hide` method has been called. | -| `hidden.bs.collapse` | This event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete). | -| `show.bs.collapse` | This event fires immediately when the `show` instance method is called. | -| `shown.bs.collapse` | This event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete). | - - -```js -const myCollapsible = document.getElementById('myCollapsible') -myCollapsible.addEventListener('hidden.bs.collapse', event => { - // do something... -}) -``` diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/alerts.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/alerts.mdx deleted file mode 100644 index e2560446..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/alerts.mdx +++ /dev/null @@ -1,218 +0,0 @@ ---- -title: Alerts -description: Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. -toc: true ---- - -import { getData } from '@libs/data' - -## Examples - -Alerts are available for any length of text, as well as an optional close button. For proper styling, use one of the eight **required** contextual classes (e.g., `.alert-success`). For inline dismissal, use the [alerts JavaScript plugin](#dismissing). - - -**Heads up!** As of v5.3.0, the `alert-variant()` Sass mixin is deprecated. Alert variants now have their CSS variables overridden in [a Sass loop](#sass-loops). - - - ``)} /> - - - -### Live example - -Click the button below to show an alert (hidden with inline styles to start), then dismiss (and destroy) it with the built-in close button. - - -`} /> - -We use the following JavaScript to trigger our live alert demo: - - - -### Link color - -Use the `.alert-link` utility class to quickly provide matching colored links within any alert. - - ``)} /> - -### Additional content - -Alerts can also contain additional HTML elements like headings, paragraphs and dividers. - - -

    Well done!

    -

    Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

    -
    -

    Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

    - `} /> - -### Icons - -Similarly, you can use [flexbox utilities]([[docsref:/utilities/flex]]) and [Bootstrap Icons]([[config:icons]]) to create alerts with icons. Depending on your icons and content, you may want to add more utilities or custom styles. - - - - - -
    - An example alert with an icon -
    - `} /> - -Need more than one icon for your alerts? Consider using more Bootstrap Icons and making a local SVG sprite like so to easily reference the same icons repeatedly. - - - - - - - - - - - - - - - - - `} /> - -### Dismissing - -Using the alert JavaScript plugin, it’s possible to dismiss any alert inline. Here’s how: - -- Be sure you’ve loaded the alert plugin, or the compiled Bootstrap JavaScript. -- Add a [close button]([[docsref:/components/close-button]]) and the `.alert-dismissible` class, which adds extra padding to the right of the alert and positions the close button. -- On the close button, add the `data-bs-dismiss="alert"` attribute, which triggers the JavaScript functionality. Be sure to use the ` - `} /> - - -When an alert is dismissed, the element is completely removed from the page structure. If a keyboard user dismisses the alert using the close button, their focus will suddenly be lost and, depending on the browser, reset to the start of the page/document. For this reason, we recommend including additional JavaScript that listens for the `closed.bs.alert` event and programmatically sets `focus()` to the most appropriate location in the page. If you’re planning to move focus to a non-interactive element that normally does not receive focus, make sure to add `tabindex="-1"` to the element. - - -## CSS - -### Variables - - - -As part of Bootstrap’s evolving CSS variables approach, alerts now use local CSS variables on `.alert` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -### Sass variables - - - -### Sass mixins - - - - - -### Sass loops - -Loop that generates the modifier classes with an overriding of CSS variables. - - - -## JavaScript behavior - -### Initialize - -Initialize elements as alerts - -```js -const alertList = document.querySelectorAll('.alert') -const alerts = [...alertList].map(element => new bootstrap.Alert(element)) -``` - - -For the sole purpose of dismissing an alert, it isn’t necessary to initialize the component manually via the JS API. By making use of `data-bs-dismiss="alert"`, the component will be initialized automatically and properly dismissed. - -See the [triggers](#triggers) section for more details. - - -### Triggers - - - -**Note that closing an alert will remove it from the DOM.** - -### Methods - -You can create an alert instance with the alert constructor, for example: - -```js -const bsAlert = new bootstrap.Alert('#myAlert') -``` - -This makes an alert listen for click events on descendant elements which have the `data-bs-dismiss="alert"` attribute. (Not necessary when using the data-api’s auto-initialization.) - - -| Method | Description | -| --- | --- | -| `close` | Closes an alert by removing it from the DOM. If the `.fade` and `.show` classes are present on the element, the alert will fade out before it is removed. | -| `dispose` | Destroys an element’s alert. (Removes stored data on the DOM element) | -| `getInstance` | Static method which allows you to get the alert instance associated to a DOM element. For example: `bootstrap.Alert.getInstance(alert)`. | -| `getOrCreateInstance` | Static method which returns an alert instance associated to a DOM element or create a new one in case it wasn’t initialized. You can use it like this: `bootstrap.Alert.getOrCreateInstance(element)`. | - - -Basic usage: - -```js -const alert = bootstrap.Alert.getOrCreateInstance('#myAlert') -alert.close() -``` - -### Events - -Bootstrap’s alert plugin exposes a few events for hooking into alert functionality. - - -| Event | Description | -| --- | --- | -| `close.bs.alert` | Fires immediately when the `close` instance method is called. | -| `closed.bs.alert` | Fired when the alert has been closed and CSS transitions have completed. | - - -```js -const myAlert = document.getElementById('myAlert') -myAlert.addEventListener('closed.bs.alert', event => { - // do something, for instance, explicitly move focus to the most appropriate element, - // so it doesn’t get lost/reset to the start of the page - // document.getElementById('...').focus() -}) -``` diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/badge.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/badge.mdx deleted file mode 100644 index b3e574b6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/badge.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Badges -description: Documentation and examples for badges, our small count and labeling component. -toc: true ---- - -import { getData } from '@libs/data' - -## Examples - -Badges scale to match the size of the immediate parent element by using relative font sizing and `em` units. As of v5, badges no longer have focus or hover styles for links. - -### Headings - -Example heading New
    -

    Example heading New

    -

    Example heading New

    -

    Example heading New

    -
    Example heading New
    -
    Example heading New
    `} /> - -### Buttons - -Badges can be used as part of links or buttons to provide a counter. - - - Notifications 4 - `} /> - -Note that depending on how they are used, badges may be confusing for users of screen readers and similar assistive technologies. While the styling of badges provides a visual cue as to their purpose, these users will simply be presented with the content of the badge. Depending on the specific situation, these badges may seem like random additional words or numbers at the end of a sentence, link, or button. - -Unless the context is clear (as with the “Notifications” example, where it is understood that the “4” is the number of notifications), consider including additional context with a visually hidden piece of additional text. - -### Positioned - -Use utilities to modify a `.badge` and position it in the corner of a link or button. - - - Inbox - - 99+ - unread messages - - `} /> - -You can also replace the `.badge` class with a few more utilities without a count for a more generic indicator. - - - Profile - - New alerts - - `} /> - -## Background colors - - - -Set a `background-color` with contrasting foreground `color` with [our `.text-bg-{color}` helpers]([[docsref:helpers/color-background]]). Previously it was required to manually pair your choice of [`.text-{color}`]([[docsref:/utilities/colors]]) and [`.bg-{color}`]([[docsref:/utilities/background]]) utilities for styling, which you still may use if you prefer. - - `${themeColor.title}`)} /> - - - -## Pill badges - -Use the `.rounded-pill` utility class to make badges more rounded with a larger `border-radius`. - - `${themeColor.title}`)} /> - -## CSS - -### Variables - - - -As part of Bootstrap’s evolving CSS variables approach, badges now use local CSS variables on `.badge` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - -### Sass variables - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/breadcrumb.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/breadcrumb.mdx deleted file mode 100644 index 50cceb1c..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/breadcrumb.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: Breadcrumb -description: Indicate the current page’s location within a navigational hierarchy that automatically adds separators via CSS. -toc: true ---- - -## Example - -Use an ordered or unordered list with linked list items to create a minimally styled breadcrumb. Use our utilities to add additional styles as desired. - - - - - - - - `} /> - -## Dividers - -Dividers are automatically added in CSS through [`::before`](https://developer.mozilla.org/en-US/docs/Web/CSS/::before) and [`content`](https://developer.mozilla.org/en-US/docs/Web/CSS/content). They can be changed by modifying a local CSS custom property `--bs-breadcrumb-divider`, or through the `$breadcrumb-divider` Sass variable — and `$breadcrumb-divider-flipped` for its RTL counterpart, if needed. We default to our Sass variable, which is set as a fallback to the custom property. This way, you get a global divider that you can override without recompiling CSS at any time. - - - - `} /> - -When modifying via Sass, the [quote](https://sass-lang.com/documentation/modules/string/#quote) function is required to generate the quotes around a string. For example, using `>` as the divider, you can use this: - -```scss -$breadcrumb-divider: quote(">"); -``` - -It’s also possible to use an **embedded SVG icon**. Apply it via our CSS custom property, or use the Sass variable. - - -**Inlined SVG requires properly escaped characters.** Some reserved characters, such as `<`, `>` and `#`, must be URL-encoded or escaped. We do this with the `$breadcrumb-divider` variable using our [`escape-svg()` Sass function]([[docsref:/customize/sass#escape-svg]]). When customizing the CSS variable, you must handle this yourself. Read [Kevin Weber’s explanations on CodePen](https://codepen.io/kevinweber/pen/dXWoRw ) for more info. - - - - - `} /> - -```scss -$breadcrumb-divider: url("data:image/svg+xml,"); -``` - -You can also remove the divider setting `--bs-breadcrumb-divider: '';` (empty strings in CSS custom properties counts as a value), or setting the Sass variable to `$breadcrumb-divider: none;`. - - - - `} /> - - -```scss -$breadcrumb-divider: none; -``` - -## Accessibility - -Since breadcrumbs provide a navigation, it’s a good idea to add a meaningful label such as `aria-label="breadcrumb"` to describe the type of navigation provided in the ``} /> - -## Directions - - -**Directions are flipped in RTL mode.** As such, `.dropstart` will appear on the right side. - - -### Centered - -Make the dropdown menu centered below the toggle with `.dropdown-center` on the parent element. - - - - - `} /> - -### Dropup - -Trigger dropdown menus above elements by adding `.dropup` to the parent element. - - - - - -
    - - - -
    `} /> - -```html - -
    - - -
    - - -
    - - - -
    -``` - -### Dropup centered - -Make the dropup menu centered above the toggle with `.dropup-center` on the parent element. - - - - - `} /> - -### Dropend - -Trigger dropdown menus at the right of the elements by adding `.dropend` to the parent element. - - - - - -
    - - - -
    `} /> - -```html - -
    - - -
    - - -
    - - - -
    -``` - -### Dropstart - -Trigger dropdown menus at the left of the elements by adding `.dropstart` to the parent element. - - - - - -
    - - - -
    `} /> - -```html - -
    - - -
    - - -
    - - - -
    -``` - -## Menu items - -You can use `` or ` - - `} /> - -You can also create non-interactive dropdown items with `.dropdown-item-text`. Feel free to style further with custom CSS or text utilities. - - -
  • Dropdown item text
  • -
  • Action
  • -
  • Another action
  • -
  • Something else here
  • - `} /> - -### Active - -Add `.active` to items in the dropdown to **style them as active**. To convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for the current page, or `true` for the current item in a set. - - -
  • Regular link
  • -
  • Active link
  • -
  • Another link
  • - `} /> - -### Disabled - -Add `.disabled` to items in the dropdown to **style them as disabled**. - - -
  • Regular link
  • -
  • Disabled link
  • -
  • Another link
  • - `} /> - -## Menu alignment - -By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. You can change this with the directional `.drop*` classes, but you can also control them with additional modifier classes. - -Add `.dropdown-menu-end` to a `.dropdown-menu` to right align the dropdown menu. Directions are mirrored when using Bootstrap in RTL, meaning `.dropdown-menu-end` will appear on the left side. - - -**Heads up!** Dropdowns are positioned thanks to Popper except when they are contained in a navbar. - - - - - - `} /> - -### Responsive alignment - -If you want to use responsive alignment, disable dynamic positioning by adding the `data-bs-display="static"` attribute and use the responsive variation classes. - -To align **right** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end`. - - - - - `} /> - -To align **left** the dropdown menu with the given breakpoint or larger, add `.dropdown-menu-end` and `.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start`. - - - - - `} /> - -Note that you don’t need to add a `data-bs-display="static"` attribute to dropdown buttons in navbars, since Popper isn’t used in navbars. - -### Alignment options - -Taking most of the options shown above, here’s a small kitchen sink demo of various dropdown alignment options in one place. - - - - - - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    `} /> - -## Menu content - -### Headers - -Add a header to label sections of actions in any dropdown menu. - - -
  • -
  • Action
  • -
  • Another action
  • - `} /> - -### Dividers - -Separate groups of related menu items with a divider. - - -
  • Action
  • -
  • Another action
  • -
  • Something else here
  • -
  • -
  • Separated link
  • - `} /> - -### Text - -Place any freeform text within a dropdown menu with text and use [spacing utilities]([[docsref:/utilities/spacing]]). Note that you’ll likely need additional sizing styles to constrain the menu width. - - -

    - Some example text that’s free-flowing within the dropdown menu. -

    -

    - And this is more example text. -

    - `} /> - -### Forms - -Put a form within a dropdown menu, or make it into a dropdown menu, and use [margin or padding utilities]([[docsref:/utilities/spacing]]) to give it the negative space you require. - - -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    - -
    - - New around here? Sign up - Forgot password? - `} /> - - - - - `} /> - -## Dropdown options - -Use `data-bs-offset` or `data-bs-reference` to change the location of the dropdown. - - - -
    - - - -
    - `} /> - -### Auto close behavior - -By default, the dropdown menu is closed when clicking inside or outside the dropdown menu. You can use the `autoClose` option to change this behavior of the dropdown. - - - - - - -
    - - -
    - -
    - - -
    - -
    - - -
    `} /> - -## CSS - -### Variables - - - -As part of Bootstrap’s evolving CSS variables approach, dropdowns now use local CSS variables on `.dropdown-menu` for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too. - - - - -Dropdown items include at least one variable that is not set on `.dropdown`. This allows you to provide a new value while Bootstrap defaults to a fallback value. - -- `--bs-dropdown-item-border-radius` - - -Customization through CSS variables can be seen on the `.dropdown-menu-dark` class where we override specific values without adding duplicate CSS selectors. - - - -### Sass variables - -Variables for all dropdowns: - - - -Variables for the [dark dropdown](#dark-dropdowns): - - - -Variables for the CSS-based carets that indicate a dropdown’s interactivity: - - - -### Sass mixins - -Mixins are used to generate the CSS-based carets and can be found in `scss/mixins/_caret.scss`. - - - -## Usage - -Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent `.dropdown-menu`. The `data-bs-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it’s a good idea to always use it. - - -On touch-enabled devices, opening a dropdown adds empty `mouseover` handlers to the immediate children of the `` element. This admittedly ugly hack is necessary to work around a [quirk in iOs’ event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty `mouseover` handlers are removed. - - -### Via data attributes - -Add `data-bs-toggle="dropdown"` to a link or button to toggle a dropdown. - -```html - -``` - -### Via JavaScript - - -Dropdowns must have `data-bs-toggle="dropdown"` on their trigger element, regardless of whether you call your dropdown via JavaScript or use the data-api. - - -Call the dropdowns via JavaScript: - -```js -const dropdownElementList = document.querySelectorAll('.dropdown-toggle') -const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl)) -``` - -### Options - - - - -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| `autoClose` | boolean, string | `true` | Configure the auto close behavior of the dropdown:
    • `true` - the dropdown will be closed by clicking outside or inside the dropdown menu.
    • `false` - the dropdown will be closed by clicking the toggle button and manually calling `hide` or `toggle` method. (Also will not be closed by pressing Esc key)
    • `'inside'` - the dropdown will be closed (only) by clicking inside the dropdown menu.
    • `'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.
    Note: the dropdown can always be closed with the Esc key. | -| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the dropdown menu (applies only to Popper’s preventOverflow modifier). By default it’s `clippingParents` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Popper’s [detectOverflow docs](https://popper.js.org/docs/v2/utils/detect-overflow/#boundary). | -| `display` | string | `'dynamic'` | By default, we use Popper for dynamic positioning. Disable this with `static`. | -| `offset` | array, string, function | `[0, 2]` | Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset="10,20"`. When a function is used to determine the offset, it is called with an object containing the popper placement, the reference, and popper rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding](https://popper.js.org/docs/v2/modifiers/offset/#skidding-1), [distance](https://popper.js.org/docs/v2/modifiers/offset/#distance-1). For more information refer to Popper’s [offset docs](https://popper.js.org/docs/v2/modifiers/offset/#options). | -| `popperConfig` | null, object, function | `null` | To change Bootstrap’s default Popper config, see [Popper’s configuration](https://popper.js.org/docs/v2/constructors/#options). When a function is used to create the Popper configuration, it’s called with an object that contains the Bootstrap’s default Popper configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Popper. | -| `reference` | string, element, object | `'toggle'` | Reference element of the dropdown menu. Accepts the values of `'toggle'`, `'parent'`, an HTMLElement reference or an object providing `getBoundingClientRect`. For more information refer to Popper’s [constructor docs](https://popper.js.org/docs/v2/constructors/#createpopper) and [virtual element docs](https://popper.js.org/docs/v2/virtual-elements/). | -
    - -#### Using function with `popperConfig` - -```js -const dropdown = new bootstrap.Dropdown(element, { - popperConfig(defaultBsPopperConfig) { - // const newPopperConfig = {...} - // use defaultBsPopperConfig if needed... - // return newPopperConfig - } -}) -``` - -### Methods - - -| Method | Description | -| --- | --- | -| `dispose` | Destroys an element’s dropdown. (Removes stored data on the DOM element) | -| `getInstance` | Static method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: `bootstrap.Dropdown.getInstance(element)`. | -| `getOrCreateInstance` | Static method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn’t initialized. You can use it like this: `bootstrap.Dropdown.getOrCreateInstance(element)`. | -| `hide` | Hides the dropdown menu of a given navbar or tabbed navigation. | -| `show` | Shows the dropdown menu of a given navbar or tabbed navigation. | -| `toggle` | Toggles the dropdown menu of a given navbar or tabbed navigation. | -| `update` | Updates the position of an element’s dropdown. | - - -### Events - -All dropdown events are fired at the toggling element and then bubbled up. So you can also add event listeners on the `.dropdown-menu`’s parent element. `hide.bs.dropdown` and `hidden.bs.dropdown` events have a `clickEvent` property (only when the original Event type is `click`) that contains an Event Object for the click event. - - -| Event type | Description | -| --- | --- | -| `hide.bs.dropdown` | Fires immediately when the `hide` instance method has been called. | -| `hidden.bs.dropdown` | Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. | -| `show.bs.dropdown` | Fires immediately when the `show` instance method is called. | -| `shown.bs.dropdown` | Fired when the dropdown has been made visible to the user and CSS transitions have completed. | - - -```js -const myDropdown = document.getElementById('myDropdown') -myDropdown.addEventListener('show.bs.dropdown', event => { - // do something... -}) -``` diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/list-group.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/list-group.mdx deleted file mode 100644 index 59827ddd..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/components/list-group.mdx +++ /dev/null @@ -1,448 +0,0 @@ ---- -title: List group -description: List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within. -toc: true ---- - -import { getData } from '@libs/data' - -## Basic example - -The most basic list group is an unordered list with list items and the proper classes. Build upon it with the options that follow, or with your own CSS as needed. - - -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • - `} /> - -## Active items - -Add `.active` to a `.list-group-item` to indicate the current active selection. - - -
  • An active item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • - `} /> - -## Links and buttons - -Use ``s or ` - - - - - `} /> - -## Flush - -Add `.list-group-flush` to remove some borders and rounded corners to render list group items edge-to-edge in a parent container (e.g., cards). - - -
  • An item
  • -
  • A second item
  • -
  • A third item
  • -
  • A fourth item
  • -
  • And a fifth one
  • - `} /> - -## Numbered - -Add the `.list-group-numbered` modifier class (and optionally use an `
      ` element) to opt into numbered list group items. Numbers are generated via CSS (as opposed to a `
        `s default browser styling) for better placement inside list group items and to allow for better customization. - -Numbers are generated by `counter-reset` on the `
          `, and then styled and placed with a `::before` pseudo-element on the `
        1. ` with `counter-increment` and `content`. - - -
        2. A list item
        3. -
        4. A list item
        5. -
        6. A list item
        7. -
        `} /> - -These work great with custom content as well. - - -
      1. -
        -
        Subheading
        - Content for list item -
        - 14 -
      2. -
      3. -
        -
        Subheading
        - Content for list item -
        - 14 -
      4. -
      5. -
        -
        Subheading
        - Content for list item -
        - 14 -
      6. -
      `} /> - -## Horizontal - -Add `.list-group-horizontal` to change the layout of list group items from vertical to horizontal across all breakpoints. Alternatively, choose a responsive variant `.list-group-horizontal-{sm|md|lg|xl|xxl}` to make a list group horizontal starting at that breakpoint’s `min-width`. Currently **horizontal list groups cannot be combined with flush list groups.** - -**ProTip:** Want equal-width list group items when horizontal? Add `.flex-fill` to each list group item. - - `
        -
      • An item
      • -
      • A second item
      • -
      • A third item
      • -
      `)} /> - -## Variants - - -**Heads up!** As of v5.3.0, the `list-group-item-variant()` Sass mixin is deprecated. List group item variants now have their CSS variables overridden in [a Sass loop](#sass-loops). - - -Use contextual classes to style list items with a stateful background and color. - - -
    1. A simple default list group item
    2. - `, - ...getData('theme-colors').map((themeColor) => `
    3. A simple ${themeColor.name} list group item
    4. `), - `` - ]} /> - -### For links and buttons - -Contextual classes also work with `.list-group-item-action` for `
      ` and ` - - - - - - - - -```html - -``` - - -In the above static example, we use `
      `, to avoid issues with the heading hierarchy in the documentation page. Structurally, however, a modal dialog represents its own separate document/context, so the `.modal-title` should ideally be an `

      `. If necessary, you can use the [font size utilities]([[docsref:/utilities/text#font-size]]) to control the heading’s appearance. All the following live examples use this approach. - - -### Live demo - -Toggle a working modal demo by clicking the button below. It will slide down and fade in from the top of the page. - - - -
      - -
      - -```html - - - - - -``` - -### Static backdrop - -When backdrop is set to static, the modal will not close when clicking outside of it. Click the button below to try it. - - - -
      - -
      - -```html - - - - - -``` - -### Scrolling long content - -When modals become too long for the user’s viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean. - - - -
      - -
      - -You can also create a scrollable modal that allows scrolling the modal body by adding `.modal-dialog-scrollable` to `.modal-dialog`. - - - -
      - -
      - -```html - - -``` - -### Vertically centered - -Add `.modal-dialog-centered` to `.modal-dialog` to vertically center the modal. - -

      `} /> - -## Display headings - -Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style. - -
      -
      Display 1
      -
      Display 2
      -
      Display 3
      -
      Display 4
      -
      Display 5
      -
      Display 6
      -
      - -```html -

      Display 1

      -

      Display 2

      -

      Display 3

      -

      Display 4

      -

      Display 5

      -

      Display 6

      -``` - -Display headings are configured via the `$display-font-sizes` Sass map and two variables, `$display-font-weight` and `$display-line-height`. - -Display headings are customizable via two variables, `$display-font-family` and `$display-font-style`. - - - -## Lead - -Make a paragraph stand out by adding `.lead`. - - - This is a lead paragraph. It stands out from regular paragraphs. -

      `} /> - -## Inline text elements - -Styling for common inline HTML5 elements. - -You can use the mark tag to highlight text.

      -

      This line of text is meant to be treated as deleted text.

      -

      This line of text is meant to be treated as no longer accurate.

      -

      This line of text is meant to be treated as an addition to the document.

      -

      This line of text will render as underlined.

      -

      This line of text is meant to be treated as fine print.

      -

      This line rendered as bold text.

      -

      This line rendered as italicized text.

      `} /> - -Beware that those tags should be used for semantic purpose: - -- `` represents text which is marked or highlighted for reference or notation purposes. -- `` represents side-comments and small print, like copyright and legal text. -- `` represents element that are no longer relevant or no longer accurate. -- `` represents a span of inline text which should be rendered in a way that indicates that it has a non-textual annotation. - -If you want to style your text, you should use the following classes instead: - -- `.mark` will apply the same styles as ``. -- `.small` will apply the same styles as ``. -- `.text-decoration-underline` will apply the same styles as ``. -- `.text-decoration-line-through` will apply the same styles as ``. - -While not shown above, feel free to use `` and `` in HTML5. `` is meant to highlight words or phrases without conveying additional importance, while `` is mostly for voice, technical terms, etc. - -## Text utilities - -Change text alignment, transform, style, weight, line-height, decoration and color with our [text utilities]([[docsref:/utilities/text]]) and [color utilities]([[docsref:/utilities/colors]]). - -## Abbreviations - -Stylized implementation of HTML’s `` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies. - -Add `.initialism` to an abbreviation for a slightly smaller font-size. - -attr

      -

      HTML

      `} /> - -## Blockquotes - -For quoting blocks of content from another source within your document. Wrap `
      ` around any HTML as the quote. - - -

      A well-known quote, contained in a blockquote element.

      -
      `} /> - -### Naming a source - -The HTML spec requires that blockquote attribution be placed outside the `
      `. When providing attribution, wrap your `
      ` in a `
      ` and use a `
      ` or a block level element (e.g., `

      `) with the `.blockquote-footer` class. Be sure to wrap the name of the source work in `` as well. - - -

      -

      A well-known quote, contained in a blockquote element.

      -
      - -
      `} /> - -### Alignment - -Use text utilities as needed to change the alignment of your blockquote. - - -
      -

      A well-known quote, contained in a blockquote element.

      -
      - - `} /> - - -
      -

      A well-known quote, contained in a blockquote element.

      -
      - - `} /> - -## Lists - -### Unstyled - -Remove the default `list-style` and left margin on list items (immediate children only). **This only applies to immediate children list items**, meaning you will need to add the class for any nested lists as well. - - -
    5. This is a list.
    6. -
    7. It appears completely unstyled.
    8. -
    9. Structurally, it’s still a list.
    10. -
    11. However, this style only applies to immediate child elements.
    12. -
    13. Nested lists: -
        -
      • are unaffected by this style
      • -
      • will still show a bullet
      • -
      • and have appropriate left margin
      • -
      -
    14. -
    15. This may still come in handy in some situations.
    16. - `} /> - -### Inline - -Remove a list’s bullets and apply some light `margin` with a combination of two classes, `.list-inline` and `.list-inline-item`. - - -
    17. This is a list item.
    18. -
    19. And another one.
    20. -
    21. But they’re displayed inline.
    22. - `} /> - -### Description list alignment - -Align terms and descriptions horizontally by using our grid system’s predefined classes (or semantic mixins). For longer terms, you can optionally add a `.text-truncate` class to truncate the text with an ellipsis. - - -
      Description lists
      -
      A description list is perfect for defining terms.
      - -
      Term
      -
      -

      Definition for the term.

      -

      And some more placeholder definition text.

      -
      - -
      Another term
      -
      This definition is short, so no extra paragraphs or anything.
      - -
      Truncated term is truncated
      -
      This can be useful when space is tight. Adds an ellipsis at the end.
      - -
      Nesting
      -
      -
      -
      Nested definition list
      -
      I heard you like definition lists. Let me put a definition list inside your definition list.
      -
      -
      - `} /> - -## Responsive font sizes - -In Bootstrap 5, we’ve enabled responsive font sizes by default, allowing text to scale more naturally across device and viewport sizes. Have a look at the [RFS page]([[docsref:/getting-started/rfs]]) to find out how this works. - -## CSS - -### Sass variables - -Headings have some dedicated variables for sizing and spacing. - - - -Miscellaneous typography elements covered here and in [Reboot]([[docsref:/content/reboot]]) also have dedicated variables. - - - -### Sass mixins - -There are no dedicated mixins for typography, but Bootstrap does use [Responsive Font Sizing (RFS)]([[docsref:/getting-started/rfs]]). diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/color-modes.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/color-modes.mdx deleted file mode 100644 index 79dd7f6a..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/color-modes.mdx +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Color modes -description: Bootstrap now supports color modes, or themes, as of v5.3.0. Explore our default light color mode and the new dark mode, or create your own using our styles as your template. -toc: true -added: - version: "5.3" ---- - -import { getDocsRelativePath } from '@libs/path' - - -**Try it yourself!** Download the source code and working demo for using Bootstrap with Stylelint, and the color modes from the [twbs/examples repository](https://github.com/twbs/examples/tree/main/color-modes). You can also [open the example in StackBlitz](https://stackblitz.com/github/twbs/examples/tree/main/color-modes?file=index.html). - - -## Dark mode - -**Bootstrap now supports color modes, starting with dark mode!** With v5.3.0 you can implement your own color mode toggler (see below for an example from Bootstrap’s docs) and apply the different color modes as you see fit. We support a light mode (default) and now dark mode. Color modes can be toggled globally on the `` element, or on specific components and elements, thanks to the `data-bs-theme` attribute. - -Alternatively, you can also switch to a media query implementation thanks to our color mode mixin—see [the usage section for details](#building-with-sass). Heads up though—this eliminates your ability to change themes on a per-component basis as shown below. - -## Example - -For example, to change the color mode of a dropdown menu, add `data-bs-theme="light"` or `data-bs-theme="dark"` to the parent `.dropdown`. Now, no matter the global color mode, these dropdowns will display with the specified theme value. - - - - - - - `} /> - -## How it works - -- As shown above, color mode styles are controlled by the `data-bs-theme` attribute. This attribute can be applied to the `` element, or to any other element or Bootstrap component. If applied to the `` element, it will apply to everything. If applied to a component or element, it will be scoped to that specific component or element. - -- For each color mode you wish to support, you’ll need to add new overrides for the shared global CSS variables. We do this already in our `_root.scss` stylesheet for dark mode, with light mode being the default values. In writing color mode specific styles, use the mixin: - - ```scss - // Color mode variables in _root.scss - @include color-mode(dark) { - // CSS variable overrides here... - } - ``` - -- We use a custom `_variables-dark.scss` to power those shared global CSS variable overrides for dark mode. This file isn’t required for your own custom color modes, but it’s required for our dark mode for two reasons. First, it’s better to have a single place to reset global colors. Second, some Sass variables had to be overridden for background images embedded in our CSS for accordions, form components, and more. - -## Usage - -### Enable dark mode - -Enable the built in dark color mode across your entire project by adding the `data-bs-theme="dark"` attribute to the `` element. This will apply the dark color mode to all components and elements, other than those with a specific `data-bs-theme` attribute applied. Building on the [quick start template]([[docsref:/getting-started/introduction#quick-start]]): - -```html - - - - - - Bootstrap demo - - - -

      Hello, world!

      - - - -``` - -Bootstrap does not yet ship with a built-in color mode picker, but you can use the one from our own documentation if you like. [Learn more in the JavaScript section.](#javascript) - -### Building with Sass - -Our new dark mode option is available to use for all users of Bootstrap, but it’s controlled via data attributes instead of media queries and does not automatically toggle your project’s color mode. You can disable our dark mode entirely via Sass by changing `$enable-dark-mode` to `false`. - -We use a custom Sass mixin, `color-mode()`, to help you control _how_ color modes are applied. By default, we use a `data` attribute approach, allowing you to create more user-friendly experiences where your visitors can choose to have an automatic dark mode or control their preference (like in our own docs here). This is also an easy and scalable way to add different themes and more custom color modes beyond light and dark. - -In case you want to use media queries and only make color modes automatic, you can change the mixin’s default type via Sass variable. Consider the following snippet and its compiled CSS output. - -```scss -$color-mode-type: data; - -@include color-mode(dark) { - .element { - color: var(--bs-primary-text-emphasis); - background-color: var(--bs-primary-bg-subtle); - } -} -``` - -Outputs to: - -```css -[data-bs-theme=dark] .element { - color: var(--bs-primary-text-emphasis); - background-color: var(--bs-primary-bg-subtle); -} -``` - -And when setting to `media-query`: - -```scss -$color-mode-type: media-query; - -@include color-mode(dark) { - .element { - color: var(--bs-primary-text-emphasis); - background-color: var(--bs-primary-bg-subtle); - } -} -``` - -Outputs to: - -```css -@media (prefers-color-scheme: dark) { - .element { - color: var(--bs-primary-text-emphasis); - background-color: var(--bs-primary-bg-subtle); - } -} -``` - -## Custom color modes - -While the primary use case for color modes is light and dark mode, custom color modes are also possible. Create your own `data-bs-theme` selector with a custom value as the name of your color mode, then modify our Sass and CSS variables as needed. We opted to create a separate `_variables-dark.scss` stylesheet to house Bootstrap’s dark mode specific Sass variables, but that’s not required for you. - -For example, you can create a “blue theme” with the selector `data-bs-theme="blue"`. In your custom Sass or CSS file, add the new selector and override any global or component CSS variables as needed. If you’re using Sass, you can also use Sass’s functions within your CSS variable overrides. - - - - -
      Example blue theme
      -

      Some paragraph text to show how the blue theme might look with written copy.

      - -
      - - -`} /> - -```html -
      - ... -
      -``` - -## JavaScript - -To allow visitors or users to toggle color modes, you’ll need to create a toggle element to control the `data-bs-theme` attribute on the root element, ``. We’ve built a toggler in our documentation that initially defers to a user’s current system color mode, but provides an option to override that and pick a specific color mode. - -Here’s a look at the JavaScript that powers it. Feel free to inspect our own documentation navbar to see how it’s implemented using HTML and CSS from our own components. It is suggested to include the JavaScript at the top of your page to reduce potential screen flickering during reloading of your site. Note that if you decide to use media queries for your color modes, your JavaScript may need to be modified or removed if you prefer an implicit control. - - - -## Adding theme colors - -Adding a new color in `$theme-colors` is not enough for some of our components like [alerts]([[docsref:/components/alerts]]) and [list groups]([[docsref:/components/list-group]]). New colors must also be defined in `$theme-colors-text`, `$theme-colors-bg-subtle`, and `$theme-colors-border-subtle` for light theme; but also in `$theme-colors-text-dark`, `$theme-colors-bg-subtle-dark`, and `$theme-colors-border-subtle-dark` for dark theme. - -This is a manual process because Sass cannot generate its own Sass variables from an existing variable or map. In future versions of Bootstrap, we'll revisit this setup to reduce the duplication. - -```scss -// Required -@import "functions"; -@import "variables"; -@import "variables-dark"; - -// Add a custom color to $theme-colors -$custom-colors: ( - "custom-color": #712cf9 -); -$theme-colors: map-merge($theme-colors, $custom-colors); - -@import "maps"; -@import "mixins"; -@import "utilities"; - -// Add a custom color to new theme maps - -// Light mode -$custom-colors-text: ("custom-color": #712cf9); -$custom-colors-bg-subtle: ("custom-color": #e1d2fe); -$custom-colors-border-subtle: ("custom-color": #bfa1fc); - -$theme-colors-text: map-merge($theme-colors-text, $custom-colors-text); -$theme-colors-bg-subtle: map-merge($theme-colors-bg-subtle, $custom-colors-bg-subtle); -$theme-colors-border-subtle: map-merge($theme-colors-border-subtle, $custom-colors-border-subtle); - -// Dark mode -$custom-colors-text-dark: ("custom-color": #e1d2f2); -$custom-colors-bg-subtle-dark: ("custom-color": #8951fa); -$custom-colors-border-subtle-dark: ("custom-color": #e1d2f2); - -$theme-colors-text-dark: map-merge($theme-colors-text-dark, $custom-colors-text-dark); -$theme-colors-bg-subtle-dark: map-merge($theme-colors-bg-subtle-dark, $custom-colors-bg-subtle-dark); -$theme-colors-border-subtle-dark: map-merge($theme-colors-border-subtle-dark, $custom-colors-border-subtle-dark); - -// Remainder of Bootstrap imports -@import "root"; -@import "reboot"; -// etc -``` - -## CSS - -### Variables - -Dozens of root level CSS variables are repeated as overrides for dark mode. These are scoped to the color mode selector, which defaults to `data-bs-theme` but [can be configured](#building-with-sass) to use a `prefers-color-scheme` media query. Use these variables as a guideline for generating your own new color modes. - - - -### Sass variables - -CSS variables for our dark color mode are partially generated from dark mode specific Sass variables in `_variables-dark.scss`. This also includes some custom overrides for changing the colors of embedded SVGs used throughout our components. - - - -### Sass mixins - -Styles for dark mode, and any custom color modes you create, can be scoped appropriately to the `data-bs-theme` attribute selector or media query with the customizable `color-mode()` mixin. See the [Sass usage section](#building-with-sass) for more details. - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/color.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/color.mdx deleted file mode 100644 index b24f14d6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/color.mdx +++ /dev/null @@ -1,513 +0,0 @@ ---- -title: Color -description: Bootstrap is supported by an extensive color system that themes our styles and components. This enables more comprehensive customization and extension for any project. -toc: true ---- - -import { getData } from '@libs/data' -import { getSequence } from '@libs/utils' - -## Colors - - - -Bootstrap’s color palette has continued to expand and become more nuanced in v5.3.0. We’ve added new variables for `secondary` and `tertiary` text and background colors, plus `{color}-bg-subtle`, `{color}-border-subtle`, and `{color}-text-emphasis` for our theme colors. These new colors are available through Sass and CSS variables (but not our color maps or utility classes) with the express goal of making it easier to customize across multiple colors modes like light and dark. These new variables are globally set on `:root` and are adapted for our new dark color mode while our original theme colors remain unchanged. - -Colors ending in `-rgb` provide the `red, green, blue` values for use in `rgb()` and `rgba()` color modes. For example, `rgba(var(--bs-secondary-bg-rgb), .5)`. - - -**Heads up!** There’s some potential confusion with our new secondary and tertiary colors, and our existing secondary theme color, as well as our light and dark theme colors. Expect this to be ironed out in v6. - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      DescriptionSwatchVariables
      - **Body —** Default foreground (color) and background, including components. - -
       
      -
      - `--bs-body-color`
      `--bs-body-color-rgb` -
      -
       
      -
      - `--bs-body-bg`
      `--bs-body-bg-rgb` -
      - **Secondary —** Use the `color` option for lighter text. Use the `bg` option for dividers and to indicate disabled component states. - -
       
      -
      - `--bs-secondary-color`
      `--bs-secondary-color-rgb` -
      -
       
      -
      - `--bs-secondary-bg`
      `--bs-secondary-bg-rgb` -
      - **Tertiary —** Use the `color` option for even lighter text. Use the `bg` option to style backgrounds for hover states, accents, and wells. - -
       
      -
      - `--bs-tertiary-color`
      `--bs-tertiary-color-rgb` -
      -
       
      -
      - `--bs-tertiary-bg`
      `--bs-tertiary-bg-rgb` -
      - **Emphasis —** For higher contrast text. Not applicable for backgrounds. - -
       
      -
      - `--bs-emphasis-color`
      `--bs-emphasis-color-rgb` -
      - **Border —** For component borders, dividers, and rules. Use `--bs-border-color-translucent` to blend with backgrounds with an `rgba()` value. - -
       
      -
      - `--bs-border-color`
      `--bs-border-color-rgb` -
      - **Primary —** Main theme color, used for hyperlinks, focus styles, and component and form active states. - -
       
      -
      - `--bs-primary`
      `--bs-primary-rgb` -
      -
       
      -
      - `--bs-primary-bg-subtle` -
      -
       
      -
      - `--bs-primary-border-subtle` -
      -
      Text
      -
      - `--bs-primary-text-emphasis` -
      - **Success —** Theme color used for positive or successful actions and information. - -
       
      -
      - `--bs-success`
      `--bs-success-rgb` -
      -
       
      -
      - `--bs-success-bg-subtle` -
      -
       
      -
      - `--bs-success-border-subtle` -
      -
      Text
      -
      - `--bs-success-text-emphasis` -
      - **Danger —** Theme color used for errors and dangerous actions. - -
       
      -
      - `--bs-danger`
      `--bs-danger-rgb` -
      -
       
      -
      - `--bs-danger-bg-subtle` -
      -
       
      -
      - `--bs-danger-border-subtle` -
      -
      Text
      -
      - `--bs-danger-text-emphasis` -
      - **Warning —** Theme color used for non-destructive warning messages. - -
       
      -
      - `--bs-warning`
      `--bs-warning-rgb` -
      -
       
      -
      - `--bs-warning-bg-subtle` -
      -
       
      -
      - `--bs-warning-border-subtle` -
      -
      Text
      -
      - `--bs-warning-text-emphasis` -
      - **Info —** Theme color used for neutral and informative content. - -
       
      -
      - `--bs-info`
      `--bs-info-rgb` -
      -
       
      -
      - `--bs-info-bg-subtle` -
      -
       
      -
      - `--bs-info-border-subtle` -
      -
      Text
      -
      - `--bs-info-text-emphasis` -
      - **Light —** Additional theme option for less contrasting colors. - -
       
      -
      - `--bs-light`
      `--bs-light-rgb` -
      -
       
      -
      - `--bs-light-bg-subtle` -
      -
       
      -
      - `--bs-light-border-subtle` -
      -
      Text
      -
      - `--bs-light-text-emphasis` -
      - **Dark —** Additional theme option for higher contrasting colors. - -
       
      -
      - `--bs-dark`
      `--bs-dark-rgb` -
      -
       
      -
      - `--bs-dark-bg-subtle` -
      -
       
      -
      - `--bs-dark-border-subtle` -
      -
      Text
      -
      - `--bs-dark-text-emphasis` -
      -
      - -### Using the new colors - -These new colors are accessible via CSS variables and utility classes—like `--bs-primary-bg-subtle` and `.bg-primary-subtle`—allowing you to compose your own CSS rules with the variables, or to quickly apply styles via classes. The utilities are built with the color’s associated CSS variables, and since we customize those CSS variables for dark mode, they are also adaptive to color mode by default. - - - Example element with utilities - `} /> - -### Theme colors - -We use a subset of all colors to create a smaller color palette for generating color schemes, also available as Sass variables and a Sass map in Bootstrap’s `scss/_variables.scss` file. - -
      - {getData('theme-colors').map((themeColor) => { - return ( -
      -
      {themeColor.title}
      -
      - ) - })} -
      - -All these colors are available as a Sass map, `$theme-colors`. - - - -Check out [our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) for how to modify these colors. - -### All colors - -All Bootstrap colors are available as Sass variables and a Sass map in `scss/_variables.scss` file. To avoid increased file sizes, we don’t create text or background color classes for each of these variables. Instead, we choose a subset of these colors for a [theme palette](#theme-colors). - -Be sure to monitor contrast ratios as you customize colors. As shown below, we’ve added three contrast ratios to each of the main colors—one for the swatch’s current colors, one for against white, and one for against black. - -
      - {getData('colors').map((color) => { - if ((color.name !== "white") && (color.name !== "gray") && (color.name !== "gray-dark")) { - return ( -
      -
      - ${color.name} - {color.hex} -
      - - {getSequence(100, 900, 100).map((value) => { - return ( -
      ${color.name}-{value}
      - ) - })} -
      - ) - } - })} - -
      -
      $gray-500#adb5bd
      - {getData('grays').map((gray) => { - return ( -
      $gray-{gray.name}
      - ) - })} -
      - -
      -
      - $black - #000 -
      -
      - $white - #fff -
      -
      -
      - -### Notes on Sass - -Sass cannot programmatically generate variables, so we manually created variables for every tint and shade ourselves. We specify the midpoint value (e.g., `$blue-500`) and use custom color functions to tint (lighten) or shade (darken) our colors via Sass’s `mix()` color function. - -Using `mix()` is not the same as `lighten()` and `darken()`—the former blends the specified color with white or black, while the latter only adjusts the lightness value of each color. The result is a much more complete suite of colors, as [shown in this CodePen demo](https://codepen.io/emdeoh/pen/zYOQOPB). - -Our `tint-color()` and `shade-color()` functions use `mix()` alongside our `$theme-color-interval` variable, which specifies a stepped percentage value for each mixed color we produce. See the `scss/_functions.scss` and `scss/_variables.scss` files for the full source code. - -## Color Sass maps - -Bootstrap’s source Sass files include three maps to help you quickly and easily loop over a list of colors and their hex values. - -- `$colors` lists all our available base (`500`) colors -- `$theme-colors` lists all semantically named theme colors (shown below) -- `$grays` lists all tints and shades of gray - -Within `scss/_variables.scss`, you’ll find Bootstrap’s color variables and Sass map. Here’s an example of the `$colors` Sass map: - - - -Add, remove, or modify values within the map to update how they’re used in many other components. Unfortunately at this time, not _every_ component utilizes this Sass map. Future updates will strive to improve upon this. Until then, plan on making use of the `${color}` variables and this Sass map. - -### Example - -Here’s how you can use these in your Sass: - -```scss -.alpha { color: $purple; } -.beta { - color: $yellow-300; - background-color: $indigo-900; -} -``` - -[Color]([[docsref:/utilities/colors]]) and [background]([[docsref:/utilities/background]]) utility classes are also available for setting `color` and `background-color` using the `500` color values. - -## Generating utilities - - - -Bootstrap doesn’t include `color` and `background-color` utilities for every color variable, but you can generate these yourself with our [utility API]([[docsref:/utilities/api]]) and our extended Sass maps added in v5.1.0. - -1. To start, make sure you’ve imported our functions, variables, mixins, and utilities. -2. Use our `map-merge-multiple()` function to quickly merge multiple Sass maps together in a new map. -3. Merge this new combined map to extend any utility with a `{color}-{level}` class name. - -Here’s an example that generates text color utilities (e.g., `.text-purple-500`) using the above steps. - -```scss -@import "bootstrap/scss/functions"; -@import "bootstrap/scss/variables"; -@import "bootstrap/scss/variables-dark"; -@import "bootstrap/scss/maps"; -@import "bootstrap/scss/mixins"; -@import "bootstrap/scss/utilities"; - -$all-colors: map-merge-multiple($blues, $indigos, $purples, $pinks, $reds, $oranges, $yellows, $greens, $teals, $cyans); - -$utilities: map-merge( - $utilities, - ( - "color": map-merge( - map-get($utilities, "color"), - ( - values: map-merge( - map-get(map-get($utilities, "color"), "values"), - ( - $all-colors - ), - ), - ), - ), - ) -); - -@import "bootstrap/scss/utilities/api"; -``` - -This will generate new `.text-{color}-{level}` utilities for every color and level. You can do the same for any other utility and property as well. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/components.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/components.mdx deleted file mode 100644 index 2aa7e855..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/components.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Components -description: Learn how and why we build nearly all our components responsively and with base and modifier classes. -toc: true ---- - -## Base classes - -Bootstrap’s components are largely built with a base-modifier nomenclature. We group as many shared properties as possible into a base class, like `.btn`, and then group individual styles for each variant into modifier classes, like `.btn-primary` or `.btn-success`. - -To build our modifier classes, we use Sass’s `@each` loops to iterate over a Sass map. This is especially helpful for generating variants of a component by our `$theme-colors` and creating responsive variants for each breakpoint. As you customize these Sass maps and recompile, you’ll automatically see your changes reflected in these loops. - -Check out [our Sass maps and loops docs]([[docsref:/customize/sass#maps-and-loops]]) for how to customize these loops and extend Bootstrap’s base-modifier approach to your own code. - -## Modifiers - -Many of Bootstrap’s components are built with a base-modifier class approach. This means the bulk of the styling is contained to a base class (e.g., `.btn`) while style variations are confined to modifier classes (e.g., `.btn-danger`). These modifier classes are built from the `$theme-colors` map to make customizing the number and name of our modifier classes. - -Here are two examples of how we loop over the `$theme-colors` map to generate modifiers to the `.alert` and `.list-group` components. - - - - - -## Responsive - -These Sass loops aren’t limited to color maps, either. You can also generate responsive variations of your components. Take for example our responsive alignment of the dropdowns where we mix an `@each` loop for the `$grid-breakpoints` Sass map with a media query include. - - - -Should you modify your `$grid-breakpoints`, your changes will apply to all the loops iterating over that map. - - - -For more information and examples on how to modify our Sass maps and variables, please refer to [the CSS section of the Grid documentation]([[docsref:/layout/grid#css]]). - -## Creating your own - -We encourage you to adopt these guidelines when building with Bootstrap to create your own components. We’ve extended this approach ourselves to the custom components in our documentation and examples. Components like our callouts are built just like our provided components with base and modifier classes. - -
      -
      - This is a callout. We built it custom for our docs so our messages to you stand out. It has three variants via modifier classes. -
      -
      - -```html -
      ...
      -``` - -In your CSS, you’d have something like the following where the bulk of the styling is done via `.callout`. Then, the unique styles between each variant is controlled via modifier class. - -```scss -// Base class -.callout {} - -// Modifier classes -.callout-info {} -.callout-warning {} -.callout-danger {} -``` - -For the callouts, that unique styling is just a `border-left-color`. When you combine that base class with one of those modifier classes, you get your complete component family: - - -**This is an info callout.** Example text to show it in action. - - - -**This is a warning callout.** Example text to show it in action. - - - -**This is a danger callout.** Example text to show it in action. - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/css-variables.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/css-variables.mdx deleted file mode 100644 index 20a0b9d4..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/css-variables.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: CSS variables -description: Use Bootstrap’s CSS custom properties for fast and forward-looking design and development. -toc: true ---- - -Bootstrap includes many [CSS custom properties (variables)](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties) in its compiled CSS for real-time customization without the need to recompile Sass. These provide easy access to commonly used values like our theme colors, breakpoints, and primary font stacks when working in your browser’s inspector, a code sandbox, or general prototyping. - -**All our custom properties are prefixed with `bs-`** to avoid conflicts with third party CSS. - -## Root variables - -Here are the variables we include (note that the `:root` is required) that can be accessed anywhere Bootstrap’s CSS is loaded. They’re located in our `_root.scss` file and included in our compiled dist files. - -### Default - -These CSS variables are available everywhere, regardless of color mode. - - - -### Dark mode - -These variables are scoped to our built-in dark mode. - - - -## Component variables - -Bootstrap 5 is increasingly making use of custom properties as local variables for various components. This way we reduce our compiled CSS, ensure styles aren’t inherited in places like nested tables, and allow some basic restyling and extending of Bootstrap components after Sass compilation. - -Have a look at our table documentation for some [insight into how we’re using CSS variables]([[docsref:/content/tables#how-do-the-variants-and-accented-tables-work]]). Our [navbars also use CSS variables]([[docsref:/components/navbar#css]]) as of v5.2.0. We’re also using CSS variables across our grids—primarily for gutters the [new opt-in CSS grid]([[docsref:/layout/css-grid]])—with more component usage coming in the future. - -Whenever possible, we'll assign CSS variables at the base component level (e.g., `.navbar` for navbar and its sub-components). This reduces guessing on where and how to customize, and allows for easy modifications by our team in future updates. - -## Prefix - -Most CSS variables use a prefix to avoid collisions with your own codebase. This prefix is in addition to the `--` that’s required on every CSS variable. - -Customize the prefix via the `$prefix` Sass variable. By default, it’s set to `bs-` (note the trailing dash). - -## Examples - -CSS variables offer similar flexibility to Sass’s variables, but without the need for compilation before being served to the browser. For example, here we’re resetting our page’s font and link styles with CSS variables. - -```css -body { - font: 1rem/1.5 var(--bs-font-sans-serif); -} -a { - color: var(--bs-blue); -} -``` - -## Focus variables - - - -Bootstrap provides custom `:focus` styles using a combination of Sass and CSS variables that can be optionally added to specific components and elements. We do not yet globally override all `:focus` styles. - -In our Sass, we set default values that can be customized before compiling. - - - -Those variables are then reassigned to `:root` level CSS variables that can be customized in real-time, including with options for `x` and `y` offsets (which default to their fallback value of `0`). - - - -## Grid breakpoints - -While we include our grid breakpoints as CSS variables (except for `xs`), be aware that **CSS variables do not work in media queries**. This is by design in the CSS spec for variables, but may change in coming years with support for `env()` variables. Check out [this Stack Overflow answer](https://stackoverflow.com/a/47212942) for some helpful links. In the meantime, you can use these variables in other CSS situations, as well as in your JavaScript. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/optimize.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/optimize.mdx deleted file mode 100644 index 0384ca05..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/optimize.mdx +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Optimize -description: Keep your projects lean, responsive, and maintainable so you can deliver the best experience and focus on more important jobs. -toc: true ---- - -## Lean Sass imports - -When using Sass in your asset pipeline, make sure you optimize Bootstrap by only `@import`ing the components you need. Your largest optimizations will likely come from the `Layout & Components` section of our `bootstrap.scss`. - - - - -If you’re not using a component, comment it out or delete it entirely. For example, if you’re not using the carousel, remove that import to save some file size in your compiled CSS. Keep in mind there are some dependencies across Sass imports that may make it more difficult to omit a file. - -## Lean JavaScript - -Bootstrap’s JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependency (Popper) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you’re customizing via Sass, be sure to remove related JavaScript. - -For instance, assuming you’re using your own JavaScript bundler like Webpack, Parcel, or Vite, you’d only import the JavaScript you plan on using. In the example below, we show how to just include our modal JavaScript: - -```js -// Import just what we need - -// import 'bootstrap/js/dist/alert'; -// import 'bootstrap/js/dist/button'; -// import 'bootstrap/js/dist/carousel'; -// import 'bootstrap/js/dist/collapse'; -// import 'bootstrap/js/dist/dropdown'; -import 'bootstrap/js/dist/modal'; -// import 'bootstrap/js/dist/offcanvas'; -// import 'bootstrap/js/dist/popover'; -// import 'bootstrap/js/dist/scrollspy'; -// import 'bootstrap/js/dist/tab'; -// import 'bootstrap/js/dist/toast'; -// import 'bootstrap/js/dist/tooltip'; -``` - -This way, you’re not including any JavaScript you don’t intend to use for components like buttons, carousels, and tooltips. If you’re importing dropdowns, tooltips or popovers, be sure to list the Popper dependency in your `package.json` file. - - -**Heads up!** Files in `bootstrap/js/dist` use the **default export**. To use them, do the following: - -```js -import Modal from 'bootstrap/js/dist/modal' -const modal = new Modal(document.getElementById('myModal')) -``` - - -## Autoprefixer .browserslistrc - -Bootstrap depends on Autoprefixer to automatically add browser prefixes to certain CSS properties. Prefixes are dictated by our `.browserslistrc` file, found in the root of the Bootstrap repo. Customizing this list of browsers and recompiling the Sass will automatically remove some CSS from your compiled CSS, if there are vendor prefixes unique to that browser or version. - -## Unused CSS - -_Help wanted with this section, please consider opening a PR. Thanks!_ - -While we don’t have a prebuilt example for using [PurgeCSS](https://github.com/FullHuman/purgecss) with Bootstrap, there are some helpful articles and walkthroughs that the community has written. Here are some options: - -- https://medium.com/dwarves-foundation/remove-unused-css-styles-from-bootstrap-using-purgecss-88395a2c5772 -- https://lukelowrey.com/automatically-removeunused-css-from-bootstrap-or-other-frameworks/ - -Lastly, this [CSS Tricks article on unused CSS](https://css-tricks.com/how-do-you-remove-unused-css-from-a-site/) shows how to use PurgeCSS and other similar tools. - -## Minify and gzip - -Whenever possible, be sure to compress all the code you serve to your visitors. If you’re using Bootstrap dist files, try to stick to the minified versions (indicated by the `.min.css` and `.min.js` extensions). If you’re building Bootstrap from the source with your own build system, be sure to implement your own minifiers for HTML, CSS, and JS. - -## Non-blocking files - -While minifying and using compression might seem like enough, making your files non-blocking ones is also a big step in making your site well-optimized and fast enough. - -If you are using a [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/) plugin in Google Chrome, you may have stumbled over FCP. [The First Contentful Paint](https://web.dev/articles/fcp) metric measures the time from when the page starts loading to when any part of the page’s content is rendered on the screen. - -You can improve FCP by deferring non-critical JavaScript or CSS. What does that mean? Simply, JavaScript or stylesheets that don’t need to be present on the first paint of your page should be marked with `async` or `defer` attributes. - -This ensures that the less important resources are loaded later and not blocking the first paint. On the other hand, critical resources can be included as inline scripts or styles. - -If you want to learn more about this, there are already a lot of great articles about it: - -- https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/ -- https://web.dev/articles/defer-non-critical-css - -## Always use HTTPS - -Your website should only be available over HTTPS connections in production. HTTPS improves the security, privacy, and availability of all sites, and [there is no such thing as non-sensitive web traffic](https://https.cio.gov/everything/). The steps to configure your website to be served exclusively over HTTPS vary widely depending on your architecture and web hosting provider, and thus are beyond the scope of these docs. - -Sites served over HTTPS should also access all stylesheets, scripts, and other assets over HTTPS connections. Otherwise, you’ll be sending users [mixed active content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content), leading to potential vulnerabilities where a site can be compromised by altering a dependency. This can lead to security issues and in-browser warnings displayed to users. Whether you’re getting Bootstrap from a CDN or serving it yourself, ensure that you only access it over HTTPS connections. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/options.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/options.mdx deleted file mode 100644 index 926ae031..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/options.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Options -description: Quickly customize Bootstrap with built-in variables to easily toggle global CSS preferences for controlling style and behavior. ---- - -Customize Bootstrap with our built-in custom variables file and easily toggle global CSS preferences with new `$enable-*` Sass variables. Override a variable’s value and recompile with `npm run test` as needed. - -You can find and customize these variables for key global options in Bootstrap’s `scss/_variables.scss` file. - - -| Variable | Values | Description | -| ------------------------------ | ---------------------------------- | -------------------------------------------------------------------------------------- | -| `$spacer` | `1rem` (default), or any value > 0 | Specifies the default spacer value to programmatically generate our [spacer utilities]([[docsref:/utilities/spacing]]). | -| `$enable-dark-mode` | `true` (default) or `false` | Enables built-in [dark mode support]([[docsref:/customize/color-modes#dark-mode]]) across the project and its components. | -| `$enable-rounded` | `true` (default) or `false` | Enables predefined `border-radius` styles on various components. | -| `$enable-shadows` | `true` or `false` (default) | Enables predefined decorative `box-shadow` styles on various components. Does not affect `box-shadow`s used for focus states. | -| `$enable-gradients` | `true` or `false` (default) | Enables predefined gradients via `background-image` styles on various components. | -| `$enable-transitions` | `true` (default) or `false` | Enables predefined `transition`s on various components. | -| `$enable-reduced-motion` | `true` (default) or `false` | Enables the [`prefers-reduced-motion` media query]([[docsref:/getting-started/accessibility#reduced-motion]]), which suppresses certain animations/transitions based on the users’ browser/operating system preferences. | -| `$enable-grid-classes` | `true` (default) or `false` | Enables the generation of CSS classes for the grid system (e.g. `.row`, `.col-md-1`, etc.). | -| `$enable-cssgrid` | `true` or `false` (default) | Enables the experimental CSS Grid system (e.g. `.grid`, `.g-col-md-1`, etc.). | -| `$enable-container-classes` | `true` (default) or `false` | Enables the generation of CSS classes for layout containers. (New in v5.2.0) | -| `$enable-caret` | `true` (default) or `false` | Enables pseudo element caret on `.dropdown-toggle`. | -| `$enable-button-pointers` | `true` (default) or `false` | Add “hand” cursor to non-disabled button elements. | -| `$enable-rfs` | `true` (default) or `false` | Globally enables [RFS]([[docsref:/getting-started/rfs]]). | -| `$enable-validation-icons` | `true` (default) or `false` | Enables `background-image` icons within textual inputs and some custom forms for validation states. | -| `$enable-negative-margins` | `true` or `false` (default) | Enables the generation of [negative margin utilities]([[docsref:/utilities/spacing#negative-margin]]). | -| `$enable-deprecation-messages` | `true` (default) or `false` | Set to `false` to hide warnings when using any of the deprecated mixins and functions that are planned to be removed in `v6`. | -| `$enable-important-utilities` | `true` (default) or `false` | Enables the `!important` suffix in utility classes. | -| `$enable-smooth-scroll` | `true` (default) or `false` | Applies `scroll-behavior: smooth` globally, except for users asking for reduced motion through [`prefers-reduced-motion` media query]([[docsref:/getting-started/accessibility#reduced-motion]]) | - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/overview.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/overview.mdx deleted file mode 100644 index 7acb624e..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/overview.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Customize -description: Learn how to theme, customize, and extend Bootstrap with Sass, a boatload of global options, an expansive color system, and more. -toc: false -aliases: "/docs/[[config:docs_version]]/customize/" -sections: - - title: Sass - description: Utilize our source Sass files to take advantage of variables, maps, mixins, and functions. - - title: Options - description: Customize Bootstrap with built-in variables to easily toggle global CSS preferences. - - title: Color - description: Learn about and customize the color systems that support the entire toolkit. - - title: Color modes - description: Explore our default light mode and the new dark mode, or create custom color modes yourself. - - title: Components - description: Learn how we build nearly all our components responsively and with base and modifier classes. - - title: CSS variables - description: Use Bootstrap’s CSS custom properties for fast and forward-looking design and development. - - title: Optimize - description: Keep your projects lean, responsive, and maintainable so you can deliver the best experience. ---- - -## Overview - -There are multiple ways to customize Bootstrap. Your best path can depend on your project, the complexity of your build tools, the version of Bootstrap you’re using, browser support, and more. - -Our two preferred methods are: - -1. Using Bootstrap [via package manager]([[docsref:/getting-started/download#package-managers]]) so you can use and extend our source files. -2. Using Bootstrap’s compiled distribution files or [jsDelivr]([[docsref:/getting-started/download#cdn-via-jsdelivr]]) so you can add onto or override Bootstrap’s styles. - -While we cannot go into details here on how to use every package manager, we can give some guidance on [using Bootstrap with your own Sass compiler]([[docsref:/customize/sass]]). - -For those who want to use the distribution files, review the [getting started page]([[docsref:/getting-started/introduction]]) for how to include those files and an example HTML page. From there, consult the docs for the layout, components, and behaviors you’d like to use. - -As you familiarize yourself with Bootstrap, continue exploring this section for more details on how to utilize our global options, making use of and changing our color system, how we build our components, how to use our growing list of CSS custom properties, and how to optimize your code when building with Bootstrap. - -## CSPs and embedded SVGs - -Several Bootstrap components include embedded SVGs in our CSS to style components consistently and easily across browsers and devices. **For organizations with more strict CSP configurations**, we’ve documented all instances of our embedded SVGs (all of which are applied via `background-image`) so you can more thoroughly review your options. - -- [Accordion]([[docsref:/components/accordion]]) -- [Carousel controls]([[docsref:/components/carousel#with-controls]]) -- [Close button]([[docsref:/components/close-button]]) (used in alerts and modals) -- [Form checkboxes and radio buttons]([[docsref:/forms/checks-radios]]) -- [Form switches]([[docsref:/forms/checks-radios#switches]]) -- [Form validation icons]([[docsref:/forms/validation#server-side]]) -- [Navbar toggle buttons]([[docsref:/components/navbar#responsive-behaviors]]) -- [Select menus]([[docsref:/forms/select]]) - -Based on [community conversation](https://github.com/twbs/bootstrap/issues/25394), some options for addressing this in your own codebase include [replacing the URLs with locally hosted assets]([[docsref:/getting-started/webpack#extracting-svg-files]]), removing the images and using inline images (not possible in all components), and modifying your CSP. Our recommendation is to carefully review your own security policies and decide on the best path forward, if necessary. diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/sass.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/sass.mdx deleted file mode 100644 index 6352de40..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/customize/sass.mdx +++ /dev/null @@ -1,363 +0,0 @@ ---- -title: Sass -description: Utilize our source Sass files to take advantage of variables, maps, mixins, and functions to help you build faster and customize your project. -toc: true ---- - -Utilize our source Sass files to take advantage of variables, maps, mixins, and more. - - -Sass deprecation warnings are shown when compiling source Sass files with the latest versions of Dart Sass. This does not prevent compilation or usage of Bootstrap. We’re [working on a long-term fix]([[config:repo]]/issues/40962), but in the meantime these deprecation notices can be ignored. - - -## File structure - -Whenever possible, avoid modifying Bootstrap’s core files. For Sass, that means creating your own stylesheet that imports Bootstrap so you can modify and extend it. Assuming you’re using a package manager like npm, you’ll have a file structure that looks like this: - -```text -your-project/ -├── scss/ -│ └── custom.scss -└── node_modules/ -│ └── bootstrap/ -│ ├── js/ -│ └── scss/ -└── index.html -``` - -If you’ve downloaded our source files and aren’t using a package manager, you’ll want to manually create something similar to that structure, keeping Bootstrap’s source files separate from your own. - -```text -your-project/ -├── scss/ -│ └── custom.scss -├── bootstrap/ -│ ├── js/ -│ └── scss/ -└── index.html -``` - -## Importing - -In your `custom.scss`, you’ll import Bootstrap’s source Sass files. You have two options: include all of Bootstrap, or pick the parts you need. We encourage the latter, though be aware there are some requirements and dependencies across our components. You also will need to include some JavaScript for our plugins. - -```scss -// Custom.scss -// Option A: Include all of Bootstrap - -// Include any default variable overrides here (though functions won’t be available) - -@import "../node_modules/bootstrap/scss/bootstrap"; - -// Then add additional custom code here -``` - -```scss -// Custom.scss -// Option B: Include parts of Bootstrap - -// 1. Include functions first (so you can manipulate colors, SVGs, calc, etc) -@import "../node_modules/bootstrap/scss/functions"; - -// 2. Include any default variable overrides here - -// 3. Include remainder of required Bootstrap stylesheets (including any separate color mode stylesheets) -@import "../node_modules/bootstrap/scss/variables"; -@import "../node_modules/bootstrap/scss/variables-dark"; - -// 4. Include any default map overrides here - -// 5. Include remainder of required parts -@import "../node_modules/bootstrap/scss/maps"; -@import "../node_modules/bootstrap/scss/mixins"; -@import "../node_modules/bootstrap/scss/root"; - -// 6. Include any other optional stylesheet partials as desired; list below is not inclusive of all available stylesheets -@import "../node_modules/bootstrap/scss/utilities"; -@import "../node_modules/bootstrap/scss/reboot"; -@import "../node_modules/bootstrap/scss/type"; -@import "../node_modules/bootstrap/scss/images"; -@import "../node_modules/bootstrap/scss/containers"; -@import "../node_modules/bootstrap/scss/grid"; -@import "../node_modules/bootstrap/scss/helpers"; -// ... - -// 7. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` -@import "../node_modules/bootstrap/scss/utilities/api"; - -// 8. Add additional custom code here -``` - -With that setup in place, you can begin to modify any of the Sass variables and maps in your `custom.scss`. You can also start to add parts of Bootstrap under the `// Optional` section as needed. We suggest using the full import stack from our `bootstrap.scss` file as your starting point. - -## Compiling - -In order to use your custom Sass code as CSS in the browser, you need a Sass compiler. Sass ships as a CLI package, but you can also compile it with other build tools like [Gulp](https://gulpjs.com/) or [Webpack](https://webpack.js.org/), or with GUI applications. Some IDEs also have Sass compilers built in or as downloadable extensions. - -We like to use the CLI to compile our Sass, but you can use whichever method you prefer. From the command line, run the following: - -```sh -# Install Sass globally -npm install -g sass - -# Watch your custom Sass for changes and compile it to CSS -sass --watch ./scss/custom.scss ./css/custom.css -``` - -Learn more about your options at [sass-lang.com/install](https://sass-lang.com/install/) and [compiling with VS Code](https://code.visualstudio.com/docs/languages/css#_transpiling-sass-and-less-into-css). - - -**Using Bootstrap with another build tool?** Consider reading our guides for compiling with [Webpack]([[docsref:/getting-started/webpack]]), [Parcel]([[docsref:/getting-started/parcel]]), or [Vite]([[docsref:/getting-started/vite]]). We also have production-ready demos in [our examples repository on GitHub](https://github.com/twbs/examples). - - -## Including - -Once your CSS is compiled, you can include it in your HTML files. Inside your `index.html` you’ll want to include your compiled CSS file. Be sure to update the path to your compiled CSS file if you’ve changed it. - -```html - - - - - - Custom Bootstrap - - - -

      Hello, world!

      - - -``` - -## Variable defaults - -Every Sass variable in Bootstrap includes the `!default` flag allowing you to override the variable’s default value in your own Sass without modifying Bootstrap’s source code. Copy and paste variables as needed, modify their values, and remove the `!default` flag. If a variable has already been assigned, then it won’t be re-assigned by the default values in Bootstrap. - -You will find the complete list of Bootstrap’s variables in `scss/_variables.scss`. Some variables are set to `null`, these variables don’t output the property unless they are overridden in your configuration. - -Variable overrides must come after our functions are imported, but before the rest of the imports. - -Here’s an example that changes the `background-color` and `color` for the `` when importing and compiling Bootstrap via npm: - -```scss -// Required -@import "../node_modules/bootstrap/scss/functions"; - -// Default variable overrides -$body-bg: #000; -$body-color: #111; - -// Required -@import "../node_modules/bootstrap/scss/variables"; -@import "../node_modules/bootstrap/scss/variables-dark"; -@import "../node_modules/bootstrap/scss/maps"; -@import "../node_modules/bootstrap/scss/mixins"; -@import "../node_modules/bootstrap/scss/root"; - -// Optional Bootstrap components here -@import "../node_modules/bootstrap/scss/reboot"; -@import "../node_modules/bootstrap/scss/type"; -// etc -``` - -Repeat as necessary for any variable in Bootstrap, including the global options below. - - - -## Maps and loops - -Bootstrap includes a handful of Sass maps, key value pairs that make it easier to generate families of related CSS. We use Sass maps for our colors, grid breakpoints, and more. Just like Sass variables, all Sass maps include the `!default` flag and can be overridden and extended. - -Some of our Sass maps are merged into empty ones by default. This is done to allow easy expansion of a given Sass map, but comes at the cost of making _removing_ items from a map slightly more difficult. - -### Modify map - -All variables in the `$theme-colors` map are defined as standalone variables. To modify an existing color in our `$theme-colors` map, add the following to your custom Sass file: - -```scss -$primary: #0074d9; -$danger: #ff4136; -``` - -Later on, these variables are set in Bootstrap’s `$theme-colors` map: - -```scss -$theme-colors: ( - "primary": $primary, - "danger": $danger -); -``` - -### Add to map - -Add new colors to `$theme-colors`, or any other map, by creating a new Sass map with your custom values and merging it with the original map. In this case, we'll create a new `$custom-colors` map and merge it with `$theme-colors`. - -```scss -// Create your own map -$custom-colors: ( - "custom-color": #900 -); - -// Merge the maps -$theme-colors: map-merge($theme-colors, $custom-colors); -``` - -### Remove from map - -To remove colors from `$theme-colors`, or any other map, use `map-remove`. Be aware you must insert `$theme-colors` between our requirements just after its definition in `variables` and before its usage in `maps`: - -```scss -// Required -@import "../node_modules/bootstrap/scss/functions"; -@import "../node_modules/bootstrap/scss/variables"; -@import "../node_modules/bootstrap/scss/variables-dark"; - -$theme-colors: map-remove($theme-colors, "info", "light", "dark"); - -@import "../node_modules/bootstrap/scss/maps"; -@import "../node_modules/bootstrap/scss/mixins"; -@import "../node_modules/bootstrap/scss/root"; - -// Optional -@import "../node_modules/bootstrap/scss/reboot"; -@import "../node_modules/bootstrap/scss/type"; -// etc -``` - -## Required keys - -Bootstrap assumes the presence of some specific keys within Sass maps as we used and extend these ourselves. As you customize the included maps, you may encounter errors where a specific Sass map’s key is being used. - -For example, we use the `primary`, `success`, and `danger` keys from `$theme-colors` for links, buttons, and form states. Replacing the values of these keys should present no issues, but removing them may cause Sass compilation issues. In these instances, you’ll need to modify the Sass code that makes use of those values. - -## Functions - -### Colors - -Next to the [Sass maps]([[docsref:/customize/color#color-sass-maps]]) we have, theme colors can also be used as standalone variables, like `$primary`. - -```scss -.custom-element { - color: $gray-100; - background-color: $dark; -} -``` - -You can lighten or darken colors with Bootstrap’s `tint-color()` and `shade-color()` functions. These functions will mix colors with black or white, unlike Sass’ native `lighten()` and `darken()` functions which will change the lightness by a fixed amount, which often doesn’t lead to the desired effect. - -`shift-color()` combines these two functions by shading the color if the weight is positive and tinting the color if the weight is negative. - - - -In practice, you’d call the function and pass in the color and weight parameters. - -```scss -.custom-element { - color: tint-color($primary, 10%); -} - -.custom-element-2 { - color: shade-color($danger, 30%); -} - -.custom-element-3 { - color: shift-color($success, 40%); - background-color: shift-color($success, -60%); -} -``` - -### Color contrast - -In order to meet the [Web Content Accessibility Guidelines (WCAG)](https://www.w3.org/TR/WCAG/) contrast requirements, authors **must** provide a minimum [text color contrast of 4.5:1](https://www.w3.org/TR/WCAG/#contrast-minimum) and a minimum [non-text color contrast of 3:1](https://www.w3.org/TR/WCAG/#non-text-contrast), with very few exceptions. - -To help with this, we included the `color-contrast` function in Bootstrap. It uses the [WCAG contrast ratio algorithm](https://www.w3.org/TR/WCAG/#dfn-contrast-ratio) for calculating contrast thresholds based on [relative luminance](https://www.w3.org/TR/WCAG/#dfn-relative-luminance) in an `sRGB` color space to automatically return a light (`#fff`), dark (`#212529`) or black (`#000`) contrast color based on the specified base color. This function is especially useful for mixins or loops where you’re generating multiple classes. - -For example, to generate color swatches from our `$theme-colors` map: - -```scss -@each $color, $value in $theme-colors { - .swatch-#{$color} { - color: color-contrast($value); - } -} -``` - -It can also be used for one-off contrast needs: - -```scss -.custom-element { - color: color-contrast(#000); // returns `color: #fff` -} -``` - -You can also specify a base color with our color map functions: - -```scss -.custom-element { - color: color-contrast($dark); // returns `color: #fff` -} -``` - -### Escape SVG - -We use the `escape-svg` function to escape the `<`, `>` and `#` characters for SVG background images. When using the `escape-svg` function, data URIs must be quoted. - -### Add and Subtract functions - -We use the `add` and `subtract` functions to wrap the CSS `calc` function. The primary purpose of these functions is to avoid errors when a “unitless” `0` value is passed into a `calc` expression. Expressions like `calc(10px - 0)` will return an error in all browsers, despite being mathematically correct. - -Example where the calc is valid: - -```scss -$border-radius: .25rem; -$border-width: 1px; - -.element { - // Output calc(.25rem - 1px) is valid - border-radius: calc($border-radius - $border-width); -} - -.element { - // Output the same calc(.25rem - 1px) as above - border-radius: subtract($border-radius, $border-width); -} -``` - -Example where the calc is invalid: - -```scss -$border-radius: .25rem; -$border-width: 0; - -.element { - // Output calc(.25rem - 0) is invalid - border-radius: calc($border-radius - $border-width); -} - -.element { - // Output .25rem - border-radius: subtract($border-radius, $border-width); -} -``` - -## Mixins - -Our `scss/mixins/` directory has a ton of mixins that power parts of Bootstrap and can also be used across your own project. - -### Color schemes - -A shorthand mixin for the `prefers-color-scheme` media query is available with support for `light` and `dark` color schemes. See [the color modes documentation]([[docsref:/customize/color-modes]]) for information on our color mode mixin. - - - -```scss -.custom-element { - @include color-scheme(light) { - // Insert light mode styles here - } - - @include color-scheme(dark) { - // Insert dark mode styles here - } -} -``` diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/docsref.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/docsref.mdx deleted file mode 100644 index f6b303e8..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/docsref.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Docs reference -description: Examples of Bootstrap’s documentation-specific components and styles. -aliases: "/docsref/" -toc: true -robots: noindex,follow ---- - -## Buttons - - - - - -## Callouts - - - Default callout - - - - Warning callout - - - - Danger callout - - -## Code example - -```scss -.test { - --color: blue; -} -``` - -
      - The HTML abbreviation element. -
      - -This is a test.`} /> - - - - diff --git a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/extend/approach.mdx b/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/extend/approach.mdx deleted file mode 100644 index 1be156e6..00000000 --- a/src/Yavsc.Web/wwwroot/lib/bootstrap/site/src/content/docs/extend/approach.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Approach -description: Learn about the guiding principles, strategies, and techniques used to build and maintain Bootstrap so you can more easily customize and extend it yourself. -aliases: - - "/docs/[[config:docs_version]]/extend/" ---- - -While the getting started pages provide an introductory tour of the project and what it offers, this document focuses on _why_ we do the things we do in Bootstrap. It explains our philosophy to building on the web so that others can learn from us, contribute with us, and help us improve. - -See something that doesn’t sound right, or perhaps could be done better? [Open an issue]([[config:repo]]/issues/new/choose)—we’d love to discuss it with you. - -## Summary - -We'll dive into each of these more throughout, but at a high level, here’s what guides our approach. - -- Components should be responsive and mobile-first -- Components should be built with a base class and extended via modifier classes -- Component states should obey a common z-index scale -- Whenever possible, prefer an HTML and CSS implementation over JavaScript -- Whenever possible, use utilities over custom styles -- Whenever possible, avoid enforcing strict HTML requirements (children selectors) - -## Responsive - -Bootstrap’s responsive styles are built to be responsive, an approach that’s often referred to as _mobile-first_. We use this term in our docs and largely agree with it, but at times it can be too broad. While not every component _must_ be entirely responsive in Bootstrap, this responsive approach is about reducing CSS overrides by pushing you to add styles as the viewport becomes larger. - -Across Bootstrap, you’ll see this most clearly in our media queries. In most cases, we use `min-width` queries that begin to apply at a specific breakpoint and carry up through the higher breakpoints. For example, a `.d-none` applies from `min-width: 0` to infinity. On the other hand, a `.d-md-none` applies from the medium breakpoint and up. - -At times we'll use `max-width` when a component’s inherent complexity requires it. At times, these overrides are functionally and mentally clearer to implement and support than rewriting core functionality from our components. We strive to limit this approach, but will use it from time to time. - -## Classes - -Aside from our Reboot, a cross-browser normalization stylesheet, all our styles aim to use classes as selectors. This means steering clear of type selectors (e.g., `input[type="text"]`) and extraneous parent classes (e.g., `.parent .child`) that make styles too specific to easily override. - -As such, components should be built with a base class that houses common, not-to-be overridden property-value pairs. For example, `.btn` and `.btn-primary`. We use `.btn` for all the common styles like `display`, `padding`, and `border-width`. We then use modifiers like `.btn-primary` to add the color, background-color, border-color, etc. - -Modifier classes should only be used when there are multiple properties or values to be changed across multiple variants. Modifiers are not always necessary, so be sure you’re actually saving lines of code and preventing unnecessary overrides when creating them. Good examples of modifiers are our theme color classes and size variants. - -## z-index scales - -There are two `z-index` scales in Bootstrap—elements within a component and overlay components. - -### Component elements - -- Some components in Bootstrap are built with overlapping elements to prevent double borders without modifying the `border` property. For example, button groups, input groups, and pagination. -- These components share a standard `z-index` scale of `0` through `3`. -- `0` is default (initial), `1` is `:hover`, `2` is `:active`/`.active`, and `3` is `:focus`. -- This approach matches our expectations of highest user priority. If an element is focused, it’s in view and at the user’s attention. Active elements are second highest because they indicate state. Hover is third highest because it indicates user intent, but nearly _anything_ can be hovered. - -### Overlay components - -Bootstrap includes several components that function as an overlay of some kind. This includes, in order of highest `z-index`, dropdowns, fixed and sticky navbars, modals, tooltips, and popovers. These components have their own `z-index` scale that begins at `1000`. This starting number was chosen arbitrarily and serves as a small buffer between our styles and your project’s custom styles. - -Each overlay component increases its `z-index` value slightly in such a way that common UI principles allow user focused or hovered elements to remain in view at all times. For example, a modal is document blocking (e.g., you cannot take any other action save for the modal’s action), so we put that above our navbars. - -Learn more about this in our [`z-index` layout page]([[docsref:/layout/z-index]]). - -## HTML and CSS over JS - -Whenever possible, we prefer to write HTML and CSS over JavaScript. In general, HTML and CSS are more prolific and accessible to more people of all different experience levels. HTML and CSS are also faster in your browser than JavaScript, and your browser generally provides a great deal of functionality for you. - -This principle is our first-class JavaScript API using `data` attributes. You don’t need to write nearly any JavaScript to use our JavaScript plugins; instead, write HTML. Read more about this in [our JavaScript overview page]([[docsref:/getting-started/javascript#data-attributes]]). - -Lastly, our styles build on the fundamental behaviors of common web elements. Whenever possible, we prefer to use what the browser provides. For example, you can put a `.btn` class on nearly any element, but most elements don’t provide any semantic value or browser functionality. So instead, we use ` - - `} /> - -## File input - - - - - -
      - - -
      -
      - - -
      -
      - - -
      -
      - - -
      `} /> - -## Color - -Set the `type="color"` and add `.form-control-color` to the ``. We use the modifier class to set fixed `height`s and override some inconsistencies between browsers. - -Color picker -`} /> - -## Datalists - -Datalists allow you to create a group of `