new screens added for Plan, Db connections, and code refactor

This commit is contained in:
Gagan7900
2026-08-03 22:08:55 +05:30
parent 430389c611
commit c7c361cc0b
12937 changed files with 6501 additions and 158003 deletions
-3
View File
@@ -47,9 +47,6 @@ __screenshots__/
Thumbs.db Thumbs.db
# Ignore local ESLint config
eslint.config.js
# Ignore preview folder # Ignore preview folder
preview/ preview/
/.vs /.vs
+15 -29
View File
@@ -1,58 +1,44 @@
# YnexTailwind # Syscom Master Admin UI
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.0.5. Angular admin console for managing platform users, organizations, tenants, and global master data (countries, states, cities, currencies, languages, timezones) across the Syscom platform.
## Development server ## Development server
To start a local development server, run: To start a local development server, run:
```bash ```bash
ng serve npm start
``` ```
Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files.
## Code scaffolding
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
```bash
ng generate component component-name
```
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
```bash
ng generate --help
```
## Building ## Building
To build the project run: To build the project for production, run:
```bash ```bash
ng build npm run build
``` ```
This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed. Build artifacts are written to the `preview/` directory (see `angular.json`).
## Linting
```bash
npm run lint
```
## Running unit tests ## Running unit tests
To execute unit tests with the [Vitest](https://vitest.dev/) test runner, use the following command: To execute unit tests with the [Vitest](https://vitest.dev/) test runner, use the following command:
```bash ```bash
ng test npm test
``` ```
## Running end-to-end tests ## CI/CD
For end-to-end (e2e) testing, run: Docker builds and publishing are automated via `.gitea/workflows/docker-publish.yaml`.
```bash
ng e2e
```
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
## Additional Resources ## Additional Resources
+7 -19
View File
@@ -28,18 +28,7 @@
"options": { "options": {
"allowedCommonJsDependencies": [ "allowedCommonJsDependencies": [
"sweetalert2", "sweetalert2",
"inputmask", "apexcharts"
"filepond",
"moment",
"leaflet",
"apexcharts",
"glightbox",
"intl-tel-input",
"filepond-plugin-image-preview",
"dropzone",
"quill-delta",
"sweetalert",
"dayjs"
], ],
"browser": "src/main.ts", "browser": "src/main.ts",
"tsConfig": "tsconfig.app.json", "tsConfig": "tsconfig.app.json",
@@ -52,8 +41,7 @@
{ {
"glob": "**/*", "glob": "**/*",
"input": "public" "input": "public"
}, }
"src/.htaccess"
], ],
"styles": [ "styles": [
"node_modules/flatpickr/dist/flatpickr.css", "node_modules/flatpickr/dist/flatpickr.css",
@@ -76,13 +64,13 @@
"budgets": [ "budgets": [
{ {
"type": "initial", "type": "initial",
"maximumWarning": "5MB", "maximumWarning": "2mb",
"maximumError": "5MB" "maximumError": "4mb"
}, },
{ {
"type": "anyComponentStyle", "type": "anyComponentStyle",
"maximumWarning": "4kB", "maximumWarning": "8kb",
"maximumError": "8kB" "maximumError": "12kb"
} }
], ],
"outputHashing": "all" "outputHashing": "all"
@@ -122,4 +110,4 @@
} }
} }
} }
} }
+26
View File
@@ -0,0 +1,26 @@
// @ts-check
const eslint = require('@eslint/js');
const tseslint = require('typescript-eslint');
const angular = require('angular-eslint');
module.exports = tseslint.config(
{
files: ['**/*.ts'],
extends: [
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.stylistic,
...angular.configs.tsRecommended,
],
processor: angular.processInlineTemplates,
rules: {},
},
{
files: ['**/*.html'],
extends: [
...angular.configs.templateRecommended,
...angular.configs.templateAccessibility,
],
rules: {},
}
);
+42 -1807
View File
File diff suppressed because it is too large Load Diff
+1 -5
View File
@@ -1,5 +1,5 @@
{ {
"name": "ynex-tailwind", "name": "syscom-master-admin-ui",
"version": "1.0.0", "version": "1.0.0",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
@@ -32,9 +32,7 @@
"@angular/common": "^21.2.10", "@angular/common": "^21.2.10",
"@angular/compiler": "^21.2.10", "@angular/compiler": "^21.2.10",
"@angular/core": "^21.2.10", "@angular/core": "^21.2.10",
"@angular/fire": "^21.0.0-rc.0",
"@angular/forms": "^21.2.10", "@angular/forms": "^21.2.10",
"@angular/google-maps": "^21.2.8",
"@angular/material": "^21.2.14", "@angular/material": "^21.2.14",
"@angular/platform-browser": "^21.2.10", "@angular/platform-browser": "^21.2.10",
"@angular/platform-browser-dynamic": "^21.2.10", "@angular/platform-browser-dynamic": "^21.2.10",
@@ -46,11 +44,9 @@
"apexcharts": "^5.10.5", "apexcharts": "^5.10.5",
"chart.js": "^4.5.1", "chart.js": "^4.5.1",
"flatpickr": "^4.6.13", "flatpickr": "^4.6.13",
"gridjs": "^6.2.0",
"ng-apexcharts": "^2.3.0", "ng-apexcharts": "^2.3.0",
"ng2-charts": "^10.0.0", "ng2-charts": "^10.0.0",
"ngx-color-picker": "^20.1.1", "ngx-color-picker": "^20.1.1",
"ngx-echarts": "^21.0.0",
"ngx-toastr": "^20.0.5", "ngx-toastr": "^20.0.5",
"preline": "^4.1.2", "preline": "^4.1.2",
"rxjs": "~7.8.0", "rxjs": "~7.8.0",
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019-2021 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@@ -1,97 +0,0 @@
<p align="center">
<a href="https://v5.getbootstrap.com/">
<img src="https://v5.getbootstrap.com/docs/5.0/assets/brand/bootstrap-logo-shadow.png" alt="Bootstrap logo" width="200" height="165">
</a>
</p>
<h3 align="center">Bootstrap Icons</h3>
<p align="center">
Official open source SVG icon library for Bootstrap with over 1,600 icons.
<br>
<a href="https://icons.getbootstrap.com/"><strong>Explore Bootstrap Icons »</strong></a>
<br>
<br>
<a href="https://getbootstrap.com/">Bootstrap</a>
·
<a href="https://themes.getbootstrap.com/">Themes</a>
·
<a href="https://blog.getbootstrap.com/">Blog</a>
<br>
</p>
[![Bootstrap Icons preview](https://github.com/twbs/icons/blob/main/.github/preview.png)](https://icons.getbootstrap.com)
## Install
Bootstrap Icons are packaged up and published to npm. We only include the processed SVGs in this package—it's up to you and your team to implement. [Read our docs](https://icons.getbootstrap.com/) for usage instructions.
```shell
npm i bootstrap-icons
```
For those [using Packagist](https://packagist.org/packages/twbs/bootstrap-icons), you can also install Bootstrap Icons via Composer:
```shell
composer require twbs/bootstrap-icons
```
[Also available in Figma.](https://www.figma.com/community/file/1042482994486402696/Bootstrap-Icons)
## Usage
Depending on your setup, you can include Bootstrap Icons in a handful of ways.
- Copy-paste SVGs as embedded HTML
- Reference via `<img>` element
- Use the SVG sprite
- Include via CSS
[See the docs for more information.](https://icons.getbootstrap.com/#usage)
## Development
[![Build Status](https://github.com/twbs/icons/workflows/Tests/badge.svg)](https://github.com/twbs/icons/actions?workflow=Tests)
Clone the repo, install dependencies, and start the Hugo server locally.
```shell
git clone https://github.com/twbs/icons/
cd icons
npm i
npm start
```
Then open `http://localhost:4000` in your browser.
### npm scripts
Here are some key scripts you'll use during development. Be sure to look to our `package.json` for a complete list of scripts.
| Script | Description |
| --- | --- |
| `start` | Alias for running `docs-serve` |
| `docs-serve` | Starts a local Hugo server |
| `pages` | Generates permalink pages for each icon with template Markdown |
| `icons` | Processes and optimizes SVGs in `icons` directory |
## Adding SVGs
Icons are typically only added by @mdo, but exceptions can be made. New glyphs are designed in Figma first on a 16x16px grid, then exported as flattened SVGs with `fill` (no stroke). Once a new SVG icon has been added to the `icons` directory, we use an npm script to:
1. Optimize our SVGs with SVGO.
2. Modify the SVGs source HTML, removing all attributes before setting new attributes and values in our preferred order.
Use `npm run icons` to run the script, run `npm run pages` to build permalink pages, complete those pages, and, finally, commit the results in a new branch for updating.
## Publishing
Documentation is published automatically when a new Git tag is published. See our [GitHub Actions](https://github.com/twbs/icons/tree/main/.github/workflows) and [`package.json`](https://github.com/twbs/icons/blob/main/package.json) for more information.
## License
MIT
## Author
[@mdo](https://github.com/mdo)
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 861 KiB

@@ -1,62 +0,0 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs').promises
const path = require('path')
const picocolors = require('picocolors')
const iconsDir = path.join(__dirname, '../icons/')
const pagesDir = path.join(__dirname, '../docs/content/icons/')
const VERBOSE = process.argv.includes('--verbose')
function capitalizeFirstLetter(string) {
return (string.charAt(0).toUpperCase() + string.slice(1)).split('-').join(' ')
}
async function main(file) {
const iconBasename = path.basename(file, path.extname(file))
const iconTitle = capitalizeFirstLetter(iconBasename)
const pageName = path.join(pagesDir, `${iconBasename}.md`)
const pageTemplate = `---
title: ${iconTitle}
categories:
tags:
---
`
try {
await fs.access(pageName, fs.F_OK)
if (VERBOSE) {
console.log(`${picocolors.cyan(iconBasename)}: Page already exists; skipping`)
}
} catch {
await fs.writeFile(pageName, pageTemplate)
console.log(picocolors.green(`${iconBasename}: Page created`))
}
}
(async () => {
try {
const basename = path.basename(__filename)
const timeLabel = picocolors.cyan(`[${basename}] finished`)
console.log(picocolors.cyan(`[${basename}] started`))
console.time(timeLabel)
const files = await fs.readdir(iconsDir)
await Promise.all(files.map(file => main(file)))
const filesLength = files.length
console.log(picocolors.green('\nSuccess, %s page%s prepared!'), filesLength, filesLength !== 1 ? 's' : '')
console.timeEnd(timeLabel)
} catch (error) {
console.error(error)
process.exit(1)
}
})()
@@ -1,55 +0,0 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs').promises
const path = require('path')
const process = require('process')
const picocolors = require('picocolors')
const { loadConfig, optimize } = require('svgo')
const iconsDir = path.join(__dirname, '../icons/')
const VERBOSE = process.argv.includes('--verbose')
async function processFile(file, config) {
const filepath = path.join(iconsDir, file)
const basename = path.basename(file, '.svg')
const originalSvg = await fs.readFile(filepath, 'utf8')
const { data: optimizedSvg } = await optimize(originalSvg, { path: filepath, ...config })
// svgo will always add a final newline when in pretty mode
const resultSvg = optimizedSvg.trim()
if (resultSvg !== originalSvg) {
await fs.writeFile(filepath, resultSvg, 'utf8')
}
if (VERBOSE) {
console.log(`- ${basename}`)
}
}
(async () => {
try {
const basename = path.basename(__filename)
const timeLabel = picocolors.cyan(`[${basename}] finished`)
console.log(picocolors.cyan(`[${basename}] started`))
console.time(timeLabel)
const files = await fs.readdir(iconsDir)
const config = await loadConfig(path.join(__dirname, '../svgo.config.js'))
await Promise.all(files.map(file => processFile(file, config)))
const filesLength = files.length
console.log(picocolors.green('\nSuccess, prepared %s icon%s!'), filesLength, filesLength !== 1 ? 's' : '')
console.timeEnd(timeLabel)
} catch (error) {
console.error(error)
process.exit(1)
}
})()
@@ -1,24 +0,0 @@
@font-face {
font-family: "{{ name }}";
src: {{{ fontSrc }}};
}
.{{prefix}}::before,
[class^="{{prefix}}-"]::before,
[class*=" {{prefix}}-"]::before {
display: inline-block;
font-display: block;
font-family: {{ name }} !important;
font-style: normal;
font-weight: normal !important;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: -.125em;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
{{# each codepoints }}
.{{ ../prefix }}-{{ @key }}::before { content: "\\{{ codepoint this }}"; }
{{/ each }}
@@ -1,53 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ name }}</title>
<style>
.icons {
display: grid;
max-width: 100%;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr) );
gap: 1.25rem;
}
.icon {
background-color: var(--bs-light);
border-radius: .25rem;
}
.bi {
margin: .25rem;
font-size: 2.5rem;
}
.label {
font-family: var(--bs-font-monospace);
}
.label {
display: inline-block;
width: 100%;
overflow: hidden;
padding: .25rem;
font-size: .625rem;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>
<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
<link rel="stylesheet" href="{{ name }}.css">
</head>
<body class="text-center">
<h1>{{ name }}</h1>
<div class="icons">
{{# each assets }}
<div class="icon">
<{{ ../tag }} class="{{ ../prefix }} {{ ../prefix }}-{{ @key }}"></{{ ../tag }}>
<div class="label">{{ @key }}</div>
</div>
{{/ each }}
</div>
</body>
</html>
@@ -1,32 +0,0 @@
${{ name }}-font: "{{ name }}" !default;
${{ name }}-font-src: {{{ fontSrc }}} !default;
@font-face {
font-family: ${{ name }}-font;
src: ${{ name }}-font-src;
}
.{{prefix}}::before,
[class^="{{prefix}}-"]::before,
[class*=" {{prefix}}-"]::before {
display: inline-block;
font-family: ${{ name }}-font !important;
font-style: normal;
font-weight: normal !important;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: -.125em;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
${{ name }}-map: (
{{# each codepoints }}
"{{ @key }}": "\\{{ codepoint this }}",
{{/ each }}
);
{{# each codepoints }}
.{{ ../prefix }}-{{ @key }}::before { content: map-get(${{ ../name }}-map, "{{ @key }}"); }
{{/ each }}
@@ -1,48 +0,0 @@
#!/usr/bin/env node
/*!
* Script to run vnu-jar if Java is available.
* Copyright 2017-2022 The Bootstrap Authors
* Copyright 2017-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
'use strict'
const { execFile, spawn } = require('child_process')
const vnu = require('vnu-jar')
execFile('java', ['-version'], (error, stdout, stderr) => {
if (error) {
console.error('Skipping vnu-jar test; Java is missing.')
return
}
const is32bitJava = !/64-Bit/.test(stderr)
// vnu-jar accepts multiple ignores joined with a `|`.
// Also note that the ignores are string regular expressions.
const ignores = [
].join('|')
const args = [
'-jar',
`"${vnu}"`,
'--asciiquotes',
'--skip-non-html',
'--Werror',
`--filterpattern "${ignores}"`,
'_site/'
]
// For the 32-bit Java we need to pass `-Xss512k`
if (is32bitJava) {
args.splice(0, 0, '-Xss512k')
}
return spawn('java', args, {
shell: true,
stdio: 'inherit'
})
.on('exit', process.exit)
})
@@ -1,21 +0,0 @@
{
"name": "twbs/bootstrap-icons",
"description": "Official open source SVG icon library for Bootstrap",
"keywords": [
"bootstrap",
"icons",
"svg",
"icon font"
],
"homepage": "https://icons.getbootstrap.com/",
"authors": [
{
"name": "Mark Otto",
"email": "markdotto@gmail.com"
}
],
"support": {
"issues": "https://github.com/twbs/icons/issues"
},
"license": "MIT"
}
@@ -1,68 +0,0 @@
languageCode: "en"
title: "Bootstrap Icons"
baseURL: "https://icons.getbootstrap.com"
enableInlineShortcodes: true
enableRobotsTXT: true
metaDataFormat: "yaml"
disableKinds: ["404", "taxonomy", "term", "RSS"]
publishDir: "_site"
security:
enableInlineShortcodes: true
funcs:
getenv:
- ^HUGO_
- NETLIFY
markup:
goldmark:
renderer:
unsafe: true
highlight:
noClasses: false
module:
mounts:
- source: docs/assets
target: assets
- source: docs/content
target: content
- source: docs/data
target: data
- source: docs/layouts
target: layouts
- source: docs/static
target: static
- source: docs/static/assets/img/favicons/apple-touch-icon.png
target: static/apple-touch-icon.png
- source: docs/static/assets/img/favicons/favicon.ico
target: static/favicon.ico
- source: bootstrap-icons.svg
target: static/bootstrap-icons.svg
- source: icons
target: static/assets/icons
- source: font
target: static/assets/font
- source: node_modules/bootstrap/scss
target: assets/scss/bootstrap
- source: node_modules/bootstrap/dist/js/bootstrap.min.js
target: assets/js/bootstrap.min.js
params:
description: "Official open source SVG icon library for Bootstrap"
social_image_path: /assets/img/bootstrap-icons-social.png
version: "1.8.2"
docs_version: "5.2"
main: "https://getbootstrap.com"
github_org: "https://github.com/twbs"
repo: "https://github.com/twbs/icons"
twitter: "getbootstrap"
slack: "https://bootstrap-slack.herokuapp.com"
blog: "https://blog.getbootstrap.com"
expo: "https://expo.getbootstrap.com"
themes: "https://themes.getbootstrap.com"
opencollective: "https://opencollective.com/bootstrap"
icons_figma: "https://www.figma.com/community/file/1042482994486402696/Bootstrap-Icons"
@@ -1,66 +0,0 @@
/* eslint-env browser */
/* global ClipboardJS: false */
(function () {
'use strict'
var btnHtml = '<div class="bd-clipboard"><button type="button" class="btn-clipboard" title="Copy to clipboard"><svg class="bi" width="1em" height="1em" fill="currentColor"><use xlink:href="/bootstrap-icons.svg#clipboard"/></svg></button></div>';
[].slice.call(document.querySelectorAll('div.highlight'))
.forEach(function (element) {
element.insertAdjacentHTML('beforebegin', btnHtml)
})
var clipboard = new ClipboardJS('.btn-clipboard', {
target: function (trigger) {
return trigger.parentNode.nextElementSibling
}
})
clipboard.on('success', function (event) {
var iconFirstChild = event.trigger.querySelector('.bi').firstChild
var namespace = 'http://www.w3.org/1999/xlink'
var originalXhref = iconFirstChild.getAttributeNS(namespace, 'href')
var originalTitle = event.trigger.title
event.clearSelection()
iconFirstChild.setAttributeNS(namespace, 'href', originalXhref.replace('clipboard', 'check2'))
event.trigger.title = "Copied!"
setTimeout(function () {
iconFirstChild.setAttributeNS(namespace, 'href', originalXhref)
event.trigger.title = originalTitle
}, 2000)
})
clipboard.on('error', function () {
var modifierKey = /mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-'
var fallbackMsg = 'Press ' + modifierKey + 'C to copy'
var errorElement = document.getElementById('copy-error-callout')
if (!errorElement) {
return
}
errorElement.classList.remove('d-none')
errorElement.insertAdjacentHTML('afterbegin', fallbackMsg)
})
var searchInput = document.getElementById('search')
if (searchInput) {
searchInput.addEventListener('keydown', function (event) {
if (event.key === 'Enter') {
event.preventDefault()
}
})
}
// Disable empty links in docs
[].slice.call(document.querySelectorAll('[href="javascript:void(0);"]'))
.forEach(function (link) {
link.addEventListener('click', function (event) {
event.preventDefault()
})
})
})()
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,54 +0,0 @@
// stylelint-disable-next-line selector-max-id
#carbonads {
max-width: 28rem;
padding: .75rem;
margin-right: auto;
margin-left: auto;
overflow: auto;
background-color: var(--bs-gray-100);
border-radius: .25rem;
@media (min-width: 992px) {
margin-right: 0;
margin-left: 0;
}
}
.carbon-img {
float: left;
margin-right: .75rem;
@media (min-width: 768px) {
margin-bottom: .5rem;
}
@media (min-width: 992px) {
margin-bottom: 0;
}
}
.carbon-text,
.carbon-poweredby {
display: block;
color: #6c757d;
&:hover,
&:focus {
color: #343a40;
text-decoration: none;
}
}
.carbon-text {
margin-bottom: .5rem;
text-decoration: none;
@media (min-width: 768px) {
font-size: .875rem;
}
}
.carbon-poweredby {
margin-top: .75rem;
font-size: .875rem;
}
@@ -1,45 +0,0 @@
// Buttons
//
// Custom buttons for the docs.
// scss-docs-start btn-css-vars-example
.btn-bd-primary {
--bs-btn-font-weight: 600;
--bs-btn-color: var(--bs-white);
--bs-btn-bg: var(--bd-violet);
--bs-btn-border-color: var(--bd-violet);
--bs-btn-border-radius: .5rem;
--bs-btn-hover-color: var(--bs-white);
--bs-btn-hover-bg: #{shade-color($bd-violet, 10%)};
--bs-btn-hover-border-color: #{shade-color($bd-violet, 10%)};
--bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
--bs-btn-active-color: var(--bs-btn-hover-color);
--bs-btn-active-bg: #{shade-color($bd-violet, 20%)};
--bs-btn-active-border-color: #{shade-color($bd-violet, 20%)};
}
// scss-docs-end btn-css-vars-example
.btn-bd-accent {
--bs-btn-font-weight: 600;
--bs-btn-color: var(--bd-accent);
--bs-btn-border-color: var(--bd-accent);
--bs-btn-hover-color: var(--bd-dark);
--bs-btn-hover-bg: var(--bd-accent);
--bs-btn-hover-border-color: var(--bd-accent);
--bs-btn-focus-shadow-rgb: var(--bd-accent-rgb);
--bs-btn-active-color: var(--bs-btn-hover-color);
--bs-btn-active-bg: var(--bs-btn-hover-bg);
--bs-btn-active-border-color: var(--bs-btn-hover-border-color);
}
.btn-bd-light {
--bs-btn-color: var(--bs-gray-600);
--bs-btn-border-color: var(--bs-gray-400);
--bs-btn-hover-color: var(--bd-violet);
--bs-btn-hover-border-color: var(--bd-violet);
--bs-btn-active-color: var(--bd-violet);
--bs-btn-active-bg: var(--bs-white);
--bs-btn-active-border-color: var(--bd-violet);
--bs-btn-focus-border-color: var(--bd-violet);
--bs-btn-focus-shadow-rgb: var(--bd-violet-rgb);
}
@@ -1,35 +0,0 @@
// clipboard.js
//
// JS-based `Copy` buttons for code snippets.
.bd-clipboard {
position: relative;
display: none;
float: right;
+ .highlight {
margin-top: 0;
}
@media (min-width: 768px) {
display: block;
}
}
.btn-clipboard {
position: absolute;
top: .75em;
right: .5em;
z-index: 10;
display: block;
padding: .5em .75em .625em;
line-height: 1;
color: var(--bs-gray-900);
background-color: var(--bs-gray-100);
border: 0;
border-radius: .25rem;
&:hover {
color: var(--bs-primary);
}
}
@@ -1,35 +0,0 @@
//
// Footer
//
.bd-footer {
font-size: .875rem;
color: var(--bs-gray-600);
a {
font-weight: 600;
color: var(--bs-gray-700);
&:hover,
&:focus {
color: var(--bs-primary);
}
}
p {
margin-bottom: 0;
}
}
.bd-footer-links {
padding-left: 0;
margin-bottom: 1rem;
li {
display: inline-block;
+ li {
margin-left: 1rem;
}
}
}
@@ -1,10 +0,0 @@
// See https://codepen.io/kevinweber/pen/dXWoRw
@function escape-svg($string) {
@if str-index($string, "data:image/svg+xml") {
@each $char, $encoded in $escaped-characters {
$string: str-replace($string, $char, $encoded);
}
}
@return $string;
}
@@ -1,64 +0,0 @@
.bd-navbar {
padding: .75rem 0;
background-color: transparent;
background-image: linear-gradient(to bottom, rgba(var(--bd-violet-rgb), 1), rgba(var(--bd-violet-rgb), .95));
box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15), inset 0 -1px 0 rgba(0, 0, 0, .15);
.navbar-toggler {
padding: 0;
margin-right: -.5rem;
border: 0;
&:first-child {
margin-left: -.5rem;
}
.bi {
width: 1.5rem;
height: 1.5rem;
}
&:focus {
box-shadow: none;
}
}
.navbar-brand {
transition: .2s ease-in-out transform;
&:hover {
transform: rotate(-5deg) scale(1.1);
}
}
.navbar-toggler,
.nav-link {
padding-right: $spacer * .25;
padding-left: $spacer * .25;
color: rgba($white, .85);
&:hover,
&:focus {
color: $white;
}
&.active {
font-weight: 600;
color: $white;
}
}
.navbar-nav-svg {
display: inline-block;
vertical-align: -.125rem;
}
.offcanvas-lg {
background-color: var(--bd-violet);
border-left: 0;
@media (max-width: 992px) {
box-shadow: $box-shadow-lg;
}
}
}
@@ -1,17 +0,0 @@
.skippy {
display: block;
padding: 1em;
color: #fff;
text-align: center;
background-color: $bd-purple;
outline: 0;
&:hover {
color: #fff;
}
}
.skippy-text {
padding: .5em;
outline: 1px dotted;
}
@@ -1,102 +0,0 @@
// stylelint-disable comment-empty-line-before, declaration-block-single-line-max-declarations
/* Background .chroma { background-color: #f0f0f0; } */
/* Other .chroma .x { } */
/* Error .chroma .err { } */
/* LineTableTD .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } */
/* LineTable .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } */
/* LineHighlight .chroma .hl { display: block; width: 100%; background-color: #ffffcc; } */
/* LineNumbersTable .chroma .lnt { margin-right: .4em; padding: 0 .4em; } */
/* LineNumbers .chroma .ln { margin-right: .4em; padding: 0 .4em; } */
/* Comment */ .chroma .c { color: #727272; }
/* CommentHashbang */ .chroma .ch { font-style: italic; color: #60a0b0; }
/* CommentMultiline */ .chroma .cm { color: #727272; }
/* CommentPreproc */ .chroma .cp { color: #008085; }
/* CommentPreprocFile */ .chroma .cpf { color: #007020; }
/* CommentSingle */ .chroma .c1 { color: #727272; }
/* CommentSpecial */ .chroma .cs { color: #727272; }
/* Generic .chroma .g { } */
/* GenericDeleted */ .chroma .gd { background-color: #fcc; border: 1px solid #c00; }
/* GenericEmph */ .chroma .ge { font-style: italic; }
/* GenericError */ .chroma .gr { color: #f00; }
/* GenericHeading */ .chroma .gh { color: #030; }
/* GenericInserted */ .chroma .gi { background-color: #cfc; border: 1px solid #0c0; }
/* GenericOutput */ .chroma .go { color: #aaa; }
/* GenericPrompt */ .chroma .gp { color: #009; }
/* GenericStrong */ .chroma .gs { font-weight: 700; }
/* GenericSubheading */ .chroma .gu { color: #030; }
/* GenericTraceback */ .chroma .gt { color: #9c6; }
/* GenericUnderline */ .chroma .gl { text-decoration: underline; }
/* Keyword */ .chroma .k { color: #069; }
/* KeywordConstant */ .chroma .kc { color: #069; }
/* KeywordDeclaration */ .chroma .kd { color: #069; }
/* KeywordNamespace */ .chroma .kn { color: #069; }
/* KeywordPseudo */ .chroma .kp { color: #069; }
/* KeywordReserved */ .chroma .kr { color: #069; }
/* KeywordType */ .chroma .kt { color: #078; }
/* Literal .chroma .l { } */
/* LiteralDate .chroma .ld { color: #c24f19 } */
/* LiteralNumber */ .chroma .m { color: #c24f19; }
/* LiteralNumberBin */ .chroma .mb { color: #40a070; }
/* LiteralNumberFloat */ .chroma .mf { color: #c24f19; }
/* LiteralNumberHex */ .chroma .mh { color: #c24f19; }
/* LiteralNumberInteger */ .chroma .mi { color: #c24f19; }
/* LiteralNumberIntegerLong */ .chroma .il { color: #c24f19; }
/* LiteralNumberOct */ .chroma .mo { color: #c24f19; }
/* LiteralString */ .chroma .s { color: #d73038; }
/* LiteralStringAffix */ .chroma .sa { color: #4070a0; }
/* LiteralStringBacktick */ .chroma .sb { color: #c30; }
/* LiteralStringChar */ .chroma .sc { color: #c30; }
/* LiteralStringDelimiter */ .chroma .dl { color: #4070a0; }
/* LiteralStringDoc */ .chroma .sd { font-style: italic; color: #c30; }
/* LiteralStringDouble */ .chroma .s2 { color: #c30; }
/* LiteralStringEscape */ .chroma .se { color: #c30; }
/* LiteralStringHeredoc */ .chroma .sh { color: #c30; }
/* LiteralStringInterpol */ .chroma .si { color: #a00; }
/* LiteralStringOther */ .chroma .sx { color: #c30; }
/* LiteralStringRegex */ .chroma .sr { color: #337e7e; }
/* LiteralStringSingle */ .chroma .s1 { color: #c30; }
/* LiteralStringSymbol */ .chroma .ss { color: #fc3; }
/* Name .chroma .n { } */
/* NameAttribute */ .chroma .na { color: #006ee0; }
/* NameBuiltin */ .chroma .nb { color: #366; }
/* NameBuiltinPseudo .chroma .bp { } */
/* NameClass */ .chroma .nc { color: #168174; }
/* NameConstant */ .chroma .no { color: #360; }
/* NameDecorator */ .chroma .nd { color: #6b62de; }
/* NameEntity */ .chroma .ni { color: #727272; }
/* NameException */ .chroma .ne { color: #c00; }
/* NameFunction */ .chroma .nf { color: #b715f4; }
/* NameFunctionMagic .chroma .fm { } */
/* NameLabel */ .chroma .nl { color: #6b62de; }
/* NameNamespace */ .chroma .nn { color: #007ca5; }
/* NameOther .chroma .nx { } */
/* NameProperty .chroma .py { } */
/* NameTag */ .chroma .nt { color: #2f6f9f; }
/* NameVariable */ .chroma .nv { color: #033; }
/* NameVariableClass .chroma .vc { } */
/* NameVariableGlobal .chroma .vg { } */
/* NameVariableInstance .chroma .vi { } */
/* NameVariableMagic .chroma .vm { } */
/* Operator */ .chroma .o { color: #555; }
/* OperatorWord */ .chroma .ow { color: #000; }
/* Punctuation .chroma .p { } */
/* TextWhitespace */ .chroma .w { color: #bbb; }
.chroma {
.language-bash,
.language-sh {
&::before {
color: var(--bs-gray-600);
content: "$ ";
user-select: none;
}
}
.language-powershell::before {
color: #009;
content: "PM> ";
user-select: none;
}
}
@@ -1,15 +0,0 @@
// Local docs variables
$bd-purple: #4c0bce;
$bd-violet: lighten(saturate($bd-purple, 5%), 15%);
$bd-accent: #ffe484;
$bd-gutter-x: 3rem;
:root {
--bd-purple: #{$bd-purple};
--bd-violet: #{$bd-violet};
--bd-accent: #{$bd-accent};
--bd-violet-rgb: #{to-rgb($bd-violet)};
--bd-accent-rgb: #{to-rgb($bd-accent)};
--bd-pink-rgb: #{to-rgb($pink-500)};
--bd-teal-rgb: #{to-rgb($teal-500)};
}
@@ -1,745 +0,0 @@
.btn-bd-primary {
font-weight: 600;
color: #7952b3;
border-color: #7952b3;
}
.btn-bd-primary:hover, .btn-bd-primary:active {
color: #fff;
background-color: #7952b3;
border-color: #7952b3;
}
.btn-bd-primary:focus {
-webkit-box-shadow: 0 0 0 3px rgba(121, 82, 179, 0.25);
box-shadow: 0 0 0 3px rgba(121, 82, 179, 0.25);
}
.btn-bd-download {
font-weight: 600;
color: #ffe484;
border-color: #ffe484;
}
.btn-bd-download:hover, .btn-bd-download:active {
color: #2a2730;
background-color: #ffe484;
border-color: #ffe484;
}
.btn-bd-download:focus {
-webkit-box-shadow: 0 0 0 3px rgba(255, 228, 132, 0.25);
box-shadow: 0 0 0 3px rgba(255, 228, 132, 0.25);
}
.bd-clipboard {
position: relative;
display: none;
float: right;
}
.bd-clipboard + .highlight {
margin-top: 0;
}
@media (min-width: 768px) {
.bd-clipboard {
display: block;
}
}
.btn-clipboard {
position: absolute;
top: .75em;
right: .5em;
z-index: 10;
display: block;
padding: .5em .75em .625em;
line-height: 1;
color: #212529;
background-color: #f8f9fa;
border: 0;
border-radius: .25rem;
}
.btn-clipboard:hover {
color: #0d6efd;
}
.bd-navbar {
padding: .75rem 0;
background-color: #7952b3;
}
.bd-navbar .navbar-toggler {
padding: 0;
border: 0;
}
.bd-navbar .navbar-toggler .bi {
width: 2rem;
fill: currentColor;
}
.bd-navbar .navbar-nav .nav-link {
padding-right: 0.25rem;
padding-left: 0.25rem;
color: rgba(255, 255, 255, 0.85);
}
.bd-navbar .navbar-nav .nav-link:hover, .bd-navbar .navbar-nav .nav-link:focus {
color: #fff;
}
.bd-navbar .navbar-nav .nav-link.active {
font-weight: 600;
color: #fff;
}
.bd-navbar .navbar-nav-svg {
width: 1rem;
height: 1rem;
}
.skippy {
display: block;
padding: 1em;
color: #fff;
text-align: center;
background-color: #563d7c;
outline: 0;
}
.skippy:hover {
color: #fff;
}
.skippy-text {
padding: .5em;
outline: 1px dotted;
}
.bd-footer {
font-size: .875rem;
color: #63707c;
}
.bd-footer a {
font-weight: 600;
color: #495057;
}
.bd-footer a:hover, .bd-footer a:focus {
color: #007bff;
}
.bd-footer p {
margin-bottom: 0;
}
.bd-footer-links {
padding-left: 0;
margin-bottom: 1rem;
}
.bd-footer-links li {
display: inline-block;
}
.bd-footer-links li + li {
margin-left: 1rem;
}
/* Background .chroma { background-color: #f0f0f0; } */
/* Other .chroma .x { } */
/* Error .chroma .err { } */
/* LineTableTD .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } */
/* LineTable .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } */
/* LineHighlight .chroma .hl { display: block; width: 100%; background-color: #ffffcc; } */
/* LineNumbersTable .chroma .lnt { margin-right: .4em; padding: 0 .4em; } */
/* LineNumbers .chroma .ln { margin-right: .4em; padding: 0 .4em; } */
/* Comment */
.chroma .c {
color: #727272;
}
/* CommentHashbang */
.chroma .ch {
font-style: italic;
color: #60a0b0;
}
/* CommentMultiline */
.chroma .cm {
color: #727272;
}
/* CommentPreproc */
.chroma .cp {
color: #008085;
}
/* CommentPreprocFile */
.chroma .cpf {
color: #007020;
}
/* CommentSingle */
.chroma .c1 {
color: #727272;
}
/* CommentSpecial */
.chroma .cs {
color: #727272;
}
/* Generic .chroma .g { } */
/* GenericDeleted */
.chroma .gd {
background-color: #fcc;
border: 1px solid #c00;
}
/* GenericEmph */
.chroma .ge {
font-style: italic;
}
/* GenericError */
.chroma .gr {
color: #f00;
}
/* GenericHeading */
.chroma .gh {
color: #030;
}
/* GenericInserted */
.chroma .gi {
background-color: #cfc;
border: 1px solid #0c0;
}
/* GenericOutput */
.chroma .go {
color: #aaa;
}
/* GenericPrompt */
.chroma .gp {
color: #009;
}
/* GenericStrong */
.chroma .gs {
font-weight: 700;
}
/* GenericSubheading */
.chroma .gu {
color: #030;
}
/* GenericTraceback */
.chroma .gt {
color: #9c6;
}
/* GenericUnderline */
.chroma .gl {
text-decoration: underline;
}
/* Keyword */
.chroma .k {
color: #069;
}
/* KeywordConstant */
.chroma .kc {
color: #069;
}
/* KeywordDeclaration */
.chroma .kd {
color: #069;
}
/* KeywordNamespace */
.chroma .kn {
color: #069;
}
/* KeywordPseudo */
.chroma .kp {
color: #069;
}
/* KeywordReserved */
.chroma .kr {
color: #069;
}
/* KeywordType */
.chroma .kt {
color: #078;
}
/* Literal .chroma .l { } */
/* LiteralDate .chroma .ld { color: #c24f19 } */
/* LiteralNumber */
.chroma .m {
color: #c24f19;
}
/* LiteralNumberBin */
.chroma .mb {
color: #40a070;
}
/* LiteralNumberFloat */
.chroma .mf {
color: #c24f19;
}
/* LiteralNumberHex */
.chroma .mh {
color: #c24f19;
}
/* LiteralNumberInteger */
.chroma .mi {
color: #c24f19;
}
/* LiteralNumberIntegerLong */
.chroma .il {
color: #c24f19;
}
/* LiteralNumberOct */
.chroma .mo {
color: #c24f19;
}
/* LiteralString */
.chroma .s {
color: #d73038;
}
/* LiteralStringAffix */
.chroma .sa {
color: #4070a0;
}
/* LiteralStringBacktick */
.chroma .sb {
color: #c30;
}
/* LiteralStringChar */
.chroma .sc {
color: #c30;
}
/* LiteralStringDelimiter */
.chroma .dl {
color: #4070a0;
}
/* LiteralStringDoc */
.chroma .sd {
font-style: italic;
color: #c30;
}
/* LiteralStringDouble */
.chroma .s2 {
color: #c30;
}
/* LiteralStringEscape */
.chroma .se {
color: #c30;
}
/* LiteralStringHeredoc */
.chroma .sh {
color: #c30;
}
/* LiteralStringInterpol */
.chroma .si {
color: #a00;
}
/* LiteralStringOther */
.chroma .sx {
color: #c30;
}
/* LiteralStringRegex */
.chroma .sr {
color: #337e7e;
}
/* LiteralStringSingle */
.chroma .s1 {
color: #c30;
}
/* LiteralStringSymbol */
.chroma .ss {
color: #fc3;
}
/* Name .chroma .n { } */
/* NameAttribute */
.chroma .na {
color: #006ee0;
}
/* NameBuiltin */
.chroma .nb {
color: #366;
}
/* NameBuiltinPseudo .chroma .bp { } */
/* NameClass */
.chroma .nc {
color: #168174;
}
/* NameConstant */
.chroma .no {
color: #360;
}
/* NameDecorator */
.chroma .nd {
color: #6b62de;
}
/* NameEntity */
.chroma .ni {
color: #727272;
}
/* NameException */
.chroma .ne {
color: #c00;
}
/* NameFunction */
.chroma .nf {
color: #b715f4;
}
/* NameFunctionMagic .chroma .fm { } */
/* NameLabel */
.chroma .nl {
color: #6b62de;
}
/* NameNamespace */
.chroma .nn {
color: #007ca5;
}
/* NameOther .chroma .nx { } */
/* NameProperty .chroma .py { } */
/* NameTag */
.chroma .nt {
color: #2f6f9f;
}
/* NameVariable */
.chroma .nv {
color: #033;
}
/* NameVariableClass .chroma .vc { } */
/* NameVariableGlobal .chroma .vg { } */
/* NameVariableInstance .chroma .vi { } */
/* NameVariableMagic .chroma .vm { } */
/* Operator */
.chroma .o {
color: #555;
}
/* OperatorWord */
.chroma .ow {
color: #000;
}
/* Punctuation .chroma .p { } */
/* TextWhitespace */
.chroma .w {
color: #bbb;
}
.chroma .language-bash::before,
.chroma .language-sh::before {
color: #adb5bd;
content: "$ ";
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.chroma .language-powershell::before {
color: #009;
content: "PM> ";
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#carbonads {
max-width: 28rem;
padding: .75rem;
margin-right: auto;
margin-left: auto;
overflow: auto;
background-color: #f8f9fa;
border-radius: .25rem;
}
@media (min-width: 992px) {
#carbonads {
margin-right: 0;
margin-left: 0;
}
}
.carbon-img {
float: left;
margin-right: .75rem;
}
@media (min-width: 768px) {
.carbon-img {
margin-bottom: .5rem;
}
}
@media (min-width: 992px) {
.carbon-img {
margin-bottom: 0;
}
}
.carbon-text,
.carbon-poweredby {
display: block;
color: #6c757d;
}
.carbon-text:hover, .carbon-text:focus,
.carbon-poweredby:hover,
.carbon-poweredby:focus {
color: #343a40;
text-decoration: none;
}
.carbon-text {
margin-bottom: .5rem;
text-decoration: none;
}
@media (min-width: 768px) {
.carbon-text {
font-size: .875rem;
}
}
.carbon-poweredby {
margin-top: .75rem;
font-size: .875rem;
}
.bi {
display: inline-block;
vertical-align: -.125em;
}
.hero-notice {
background-color: #d2f4ea;
}
@media (min-width: 540px) {
.hero-notice {
border-radius: 5em !important;
}
}
.highlight {
padding: 1.25rem;
margin-bottom: 1.5rem;
background-color: #f8f9fa;
border-radius: .25rem;
}
.highlight pre {
margin-bottom: 0;
scrollbar-width: none;
}
.highlight pre::-webkit-scrollbar {
display: none;
}
.highlight pre code {
word-wrap: normal;
}
.bd-example {
padding: 1.25rem;
border: 1px solid rgba(0, 0, 0, 0.1);
border-top-left-radius: .25rem;
border-top-right-radius: .25rem;
}
.bd-example + .bd-clipboard + .highlight pre {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.f0 {
font-size: 2rem;
}
@media (min-width: 520px) {
.f0 {
font-size: 3rem;
}
}
.f3 {
font-size: 1.25rem;
}
@media (min-width: 520px) {
.f3 {
font-size: 1.5rem;
}
}
.f5 {
font-size: 1rem;
}
.hero {
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
.hero .highlight pre {
padding-right: 4em;
margin-bottom: 0;
border-radius: .5rem;
}
.hero .btn-clipboard {
top: .625em;
}
.hero hr {
max-width: 100px;
}
@media (min-width: 768px) {
.icon-search {
width: 35%;
}
}
.list {
font-size: 2rem;
}
.list a:hover,
.list a:hover .name,
.list a:focus,
.list a:focus .name {
color: var(--bs-blue) !important;
}
.list:empty::before {
display: block;
width: 100%;
padding: 100px 2rem;
margin-right: 15px;
margin-left: 15px;
color: #adb5bd;
text-align: center;
content: "Nothing found, try searching again.";
background-color: #f8f9fa;
border-radius: .5rem;
}
.btn-group > .btn {
-ms-flex-negative: 0;
flex-shrink: 0;
}
.name {
font-size: .8125rem;
}
@media (min-width: 1200px) {
.row-cols-xl-8 > * {
-webkit-box-flex: 0;
-ms-flex: 0 0 12.5%;
flex: 0 0 12.5%;
max-width: 12.5%;
}
}
.icon-demo {
background-color: #fdfdfd;
background-image: radial-gradient(circle, #ddd 1px, rgba(0, 0, 0, 0) 1px);
background-size: 1rem 1rem;
}
.icon-demo .bi,
.icon-demo-examples .bi {
width: 1em;
height: 1em;
}
.py-6 {
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
}
@font-face {
font-family: bootstrap-icons;
src: url("../../font/fonts/bootstrap-icons.woff2?231ce25e89ab5804f9a6c427b8d325c9") format("woff2"), url("../../font/fonts/bootstrap-icons.woff?231ce25e89ab5804f9a6c427b8d325c9") format("woff");
}
[class^="bi-"]::before,
[class*=" bi-"]::before {
display: inline-block;
font-family: bootstrap-icons !important;
font-style: normal;
font-weight: 400 !important;
font-variant: normal;
line-height: 1;
text-transform: none;
vertical-align: -.125em;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.bi-alarm::before {
content: "\f102";
}
.bi-github::before {
content: "\f3ed";
}
/*# sourceMappingURL=docs.css.map */
File diff suppressed because one or more lines are too long
@@ -1,221 +0,0 @@
@import "bootstrap/functions";
@import "bootstrap/variables";
@import "bootstrap/maps";
@import "bootstrap/mixins";
@import "bootstrap/utilities";
@import "bootstrap/root";
@import "bootstrap/reboot";
@import "bootstrap/type";
@import "bootstrap/images";
@import "bootstrap/containers";
@import "bootstrap/grid";
@import "bootstrap/tables";
@import "bootstrap/forms";
@import "bootstrap/buttons";
@import "bootstrap/transitions";
@import "bootstrap/dropdown";
@import "bootstrap/button-group";
@import "bootstrap/nav";
@import "bootstrap/navbar";
// @import "bootstrap/card";
// @import "bootstrap/accordion";
@import "bootstrap/breadcrumb";
// @import "bootstrap/pagination";
// @import "bootstrap/badge";
// @import "bootstrap/alert";
// @import "bootstrap/progress";
// @import "bootstrap/list-group";
@import "bootstrap/close";
// @import "bootstrap/toasts";
// @import "bootstrap/modal";
// @import "bootstrap/tooltip";
// @import "bootstrap/popover";
// @import "bootstrap/carousel";
// @import "bootstrap/spinners";
@import "bootstrap/offcanvas";
// @import "bootstrap/placeholders";
@import "bootstrap/helpers";
@import "bootstrap/utilities/api";
@import "variables";
@import "buttons";
@import "clipboard-js";
@import "navbar";
@import "skippy";
@import "footer";
@import "syntax";
@import "ads";
.bd-gutter {
--bs-gutter-x: #{$bd-gutter-x};
}
.bi {
display: inline-block;
vertical-align: -.125em;
fill: currentcolor;
}
.hero-notice {
background-color: $teal-100;
@media (min-width: 540px) {
border-radius: 5em !important; // stylelint-disable-line declaration-no-important
}
}
.highlight {
padding: 1.25rem;
margin-bottom: 1.5rem;
background-color: var(--bs-gray-100);
border-radius: .5rem;
pre {
margin-bottom: 0;
scrollbar-width: none;
&:focus { outline: 0; }
&::-webkit-scrollbar {
display: none;
}
code {
word-wrap: normal;
}
}
}
.bd-example {
padding: 1.25rem;
border: 1px solid rgba(0, 0, 0, .1);
border-top-left-radius: .25rem;
border-top-right-radius: .25rem;
+ .bd-clipboard + .highlight pre {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
.f0 {
font-size: 2rem;
@media (min-width: 520px) {
font-size: 3rem;
}
}
.f3 {
font-size: 1.25rem;
@media (min-width: 520px) {
font-size: 1.5rem;
}
}
.f5 {
font-size: 1rem;
}
.hero {
border-bottom: 1px solid rgba(0, 0, 0, .075);
.highlight {
margin-bottom: 0;
color: var(--bs-gray-200);
background-color: var(--bs-gray-800);
pre {
margin-bottom: 0;
@media (min-width: 768px) {
padding-right: 4em;
}
}
}
.btn-clipboard {
top: .625em;
color: var(--bs-gray-200);
background-color: var(--bs-gray-800);
}
.btn {
padding: 1rem 1.25rem;
border-radius: .5rem;
}
hr {
max-width: 100px;
}
}
.icon-search {
@media (min-width: 768px) {
width: 35%;
}
}
.list {
font-size: 2rem;
// stylelint-disable declaration-no-important
a:hover,
a:focus {
&,
.name {
color: var(--bs-blue) !important;
}
}
// stylelint-enable declaration-no-important
&:empty::before {
display: block;
width: 100%;
padding: 100px 2rem;
margin-right: 15px;
margin-left: 15px;
color: var(--bs-gray-500);
text-align: center;
content: "Nothing found, try searching again.";
background-color: var(--bs-gray-100);
border-radius: .5rem;
}
}
.btn-group > .btn {
flex-shrink: 0;
}
.name {
font-size: .8125rem;
}
@media (min-width: 1200px) {
.row-cols-xl-8 {
> * {
flex: 0 0 12.5%;
max-width: 12.5%;
}
}
}
.icon-demo {
background-color: #fdfdfd;
background-image: radial-gradient(circle, #ddd 1px, rgba(0, 0, 0, 0) 1px);
background-size: 1rem 1rem;
}
.icon-demo,
.icon-demo-examples {
.bi {
width: 1em;
height: 1em;
}
}
// stylelint-disable declaration-no-important
.py-6 {
padding-top: 4.5rem !important;
padding-bottom: 4.5rem !important;
}
// stylelint-enable declaration-no-important
@@ -1,13 +0,0 @@
---
title: "404 - File not found"
description: ""
layout: 404
url: /404.html
robots: noindex,follow
sitemap_exclude: true
---
<div class="text-center py-5">
<h1 class="display-1">404</h1>
<h2>File not found</h2>
</div>
@@ -1,223 +0,0 @@
---
---
## Install
Bootstrap Icons are published to npm, but they can also be manually downloaded if needed.
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
### npm
Install [Bootstrap Icons](https://www.npmjs.com/package/bootstrap-icons)—including SVGs, icon sprite, and icon fonts—with npm. Then, choose how you'd like to include the icons with the [usage instructions](#usage).
{{< highlight sh >}}
npm i bootstrap-icons
{{< /highlight >}}
{{< /md >}}
</div>
<div class="col-md-4">
{{< md >}}
### Download
[Releases are published on GitHub](https://github.com/twbs/icons/releases/) and include icon SVGs, fonts, license, and readme. Our `package.json` is also included, though our npm scripts are primarily available for our development workflows.
<a class="btn btn-outline-primary" href="https://github.com/twbs/icons/releases/latest/">Download latest ZIP</a>
{{< /md >}}
</div>
<div class="col-md-4">
{{< md >}}
### CDN
Include the icon fonts stylesheet—in your website `<head>` or via `@import` in CSS—from our CDN and get started in seconds. [See icon font docs](#icon-font) for examples.
{{< highlight html >}}
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@{{< param version >}}/font/bootstrap-icons.css">
{{< /highlight >}}
{{< highlight css >}}
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@{{< param version >}}/font/bootstrap-icons.css");
{{< /highlight >}}
{{< /md >}}
</div>
</div>
## Usage
Bootstrap Icons are SVGs, so you can include them into your HTML in a few ways depending on how your project is setup. We recommend using a `width: 1em` (and optionally `height: 1em`) for easy resizing via `font-size`.
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
### Embedded
Embed your icons within the HTML of your page (as opposed to an external image file). Here we've used a custom `width` and `height`.
{{< /md >}}
</div>
<div class="col-md-8">
{{< example >}}<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" class="bi bi-chevron-right" viewBox="0 0 16 16"><path fill-rule="evenodd" 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"/></svg>{{< /example >}}
</div>
</div>
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
### Sprite
Use the SVG sprite to insert any icon through the `<use>` element. Use the icon's filename as the fragment identifier (e.g., `toggles` is `#toggles`). SVG sprites allow you to reference an external file similar to an `<img>` element, but with the power of `currentColor` for easy theming.
**Heads up!** There's an issue with Chrome where [`<use>` doesn't work across domains](https://bugs.chromium.org/p/chromium/issues/detail?id=470601).
{{< /md >}}
</div>
<div class="col-md-8">
{{< example >}}
<svg class="bi" width="32" height="32" fill="currentColor">
<use xlink:href="bootstrap-icons.svg#heart-fill"/>
</svg>
<svg class="bi" width="32" height="32" fill="currentColor">
<use xlink:href="bootstrap-icons.svg#toggles"/>
</svg>
<svg class="bi" width="32" height="32" fill="currentColor">
<use xlink:href="bootstrap-icons.svg#shop"/>
</svg>
{{< /example >}}
</div>
</div>
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
### External image
Copy the Bootstrap Icons SVGs to your directory of choice and reference them like normal images with the `<img>` element.
{{< /md >}}
</div>
<div class="col-md-8">
{{< example >}}<img src="/assets/img/bootstrap.svg" alt="Bootstrap" width="32" height="32">{{< /example >}}
</div>
</div>
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
### Icon font
Icon fonts with classes for every icon are also included for Bootstrap Icons. Include the icon web fonts in your page via CSS, then reference the class names as needed in your HTML (e.g., `<i class="bi-alarm-clock"></i>`).
Use `font-size` and `color` to change the icon appearance.
{{< /md >}}
</div>
<div class="col-md-8">
{{< example >}}<i class="bi-alarm"></i>{{< /example >}}
{{< example >}}<i class="bi-alarm" style="font-size: 2rem; color: cornflowerblue;"></i>{{< /example >}}
</div>
</div>
<div class="row">
<div class="col-md-4">
{{< md >}}
### CSS
You can also use the SVG within your CSS (**be sure to escape any characters**, such as `#` to `%23` when specifying hex color values). When no dimensions are specified via `width` and `height` on the `<svg>`, the icon will fill the available space.
The `viewBox` attribute is required if you wish to resize icons with `background-size`. Note that the `xmlns` attribute is required.
{{< /md >}}
</div>
<div class="col-md-8">
{{< highlight css >}}
.bi::before {
display: inline-block;
content: "";
vertical-align: -.125em;
background-image: url("data:image/svg+xml,<svg viewBox='0 0 16 16' fill='%23333' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' d='M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z' clip-rule='evenodd'/></svg>");
background-repeat: no-repeat;
background-size: 1rem 1rem;
}
{{< /highlight >}}
</div>
</div>
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
## Styling
Color can be changed by setting a `.text-*` class or custom CSS:
{{< /md >}}
</div>
<div class="col-md-8">
<div class="bd-example">
<svg class="bi bi-exclamation-triangle text-success" width="32" height="32" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z"/>
<path d="M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995z"/>
</svg>
</div>
{{< highlight html >}}
<svg class="bi bi-exclamation-triangle text-success" width="32" height="32" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
...
</svg>
{{< /highlight >}}
</div>
</div>
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
## Accessibility
For purely decorative icons, add `aria-hidden="true"`. Otherwise, provide an appropriate text alternative. Depending on which method you're using to add the icons, and where you're using them (e.g. as standalone images, or as the only content of a button or similar control), there are various possible approaches. Here are a few examples:
{{< /md >}}
</div>
<div class="col-md-8">
<div class="bd-example">
<img src="/assets/img/bootstrap.svg" alt="Bootstrap" width="32" height="32">
</div>
{{< highlight html >}}
<!-- alt="..." on <img> element -->
<img src="/assets/img/bootstrap.svg" alt="Bootstrap" ...>
{{< /highlight >}}
<div class="bd-example">
<i class="bi-github" role="img" style="font-size: 2em" aria-label="GitHub"></i>
</div>
{{< highlight html >}}
<i class="bi-github" role="img" aria-label="GitHub"></i>
{{< /highlight >}}
<div class="bd-example">
<svg class="bi" width="32" height="32" fill="currentColor" role="img" aria-label="Tools">
<use xlink:href="bootstrap-icons.svg#tools"/>
</svg>
</div>
{{< highlight html >}}
<svg class="bi" ... role="img" aria-label="Tools">
<use xlink:href="bootstrap-icons.svg#tools"/>
</svg>
{{< /highlight >}}
<div class="bd-example">
<button type="button" class="btn btn-primary" aria-label="Mute">
<svg class="bi bi-volume-mute-fill" width="32" height="32" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M6.717 3.55A.5.5 0 017 4v8a.5.5 0 01-.812.39L3.825 10.5H1.5A.5.5 0 011 10V6a.5.5 0 01.5-.5h2.325l2.363-1.89a.5.5 0 01.529-.06zm7.137 2.096a.5.5 0 010 .708L12.207 8l1.647 1.646a.5.5 0 01-.708.708L11.5 8.707l-1.646 1.647a.5.5 0 01-.708-.708L10.793 8 9.146 6.354a.5.5 0 11.708-.708L11.5 7.293l1.646-1.647a.5.5 0 01.708 0z"></path></svg>
</button>
</div>
{{< highlight html >}}
<!-- aria-label="..." on the control -->
<button ... aria-label="Mute">
<svg class="bi bi-volume-mute-fill" aria-hidden="true" ...>
...
</svg>
</button>
{{< /highlight >}}
</div>
</div>
<div class="row my-4">
<div class="col-md-4">
{{< md >}}
## Working with SVGs
SVGs are awesome to work with, but they do have some known quirks to work around. Given the numerous ways in which SVGs can be used, we haven't included these attributes and workarounds in our code.
{{< /md >}}
</div>
<div class="col-md-8">
{{< md >}}
Known issues include:
- **SVGs receive focus by default in Internet Explorer and Edge Legacy.** When embedding your SVGs, add `focusable="false"` to the `<svg>` element. [Learn more on Stack Overflow.](https://stackoverflow.com/questions/18646111/disable-onfocus-event-for-svg-element)
- **When using SVGs with `<img>` elements, screen readers may not announce them as images, or skip the image completely.** Include an additional `role="img"` on the `<img>` element to avoid any issues. [See this article for details.](https://simplyaccessible.com/article/7-solutions-svgs/#acc-heading-2)
- **External SVG sprites may not function correctly in Internet Explorer.** Use the [svg4everybody](https://github.com/jonathantneal/svg4everybody) polyfill as needed.
Found another issue with SVGs we should note? Please open [an issue]({{< param repo >}}/issues) to share details.
{{< /md >}}
</div>
</div>
@@ -1,7 +0,0 @@
---
title: 123
categories:
- Typography
tags:
- numbers
---
@@ -1,9 +0,0 @@
---
title: Activity
categories:
- Data
tags:
- pulse
- heartbeat
- rhythm
---
@@ -1,9 +0,0 @@
---
title: Alarm Fill
categories:
- Devices
tags:
- alarm
- clock
- time
---
@@ -1,9 +0,0 @@
---
title: Alarm
categories:
- Devices
tags:
- alarm
- clock
- time
---
@@ -1,9 +0,0 @@
---
title: Align bottom
categories:
- Graphics
tags:
- space
- align
- distribute
---
@@ -1,9 +0,0 @@
---
title: Align center
categories:
- Graphics
tags:
- space
- align
- distribute
---
@@ -1,9 +0,0 @@
---
title: Align end
categories:
- Graphics
tags:
- space
- align
- distribute
---
@@ -1,9 +0,0 @@
---
title: Align middle
categories:
- Graphics
tags:
- space
- align
- distribute
---
@@ -1,9 +0,0 @@
---
title: Align start
categories:
- Graphics
tags:
- space
- align
- distribute
---
@@ -1,9 +0,0 @@
---
title: Align top
categories:
- Graphics
tags:
- space
- align
- distribute
---
@@ -1,9 +0,0 @@
---
title: Alt
categories:
- UI and keyboard
tags:
- key
- alt
- option
---
@@ -1,12 +0,0 @@
---
title: App indicator
categories:
- Apps
tags:
- app
- application
- ios
- android
- notification
- square
---
@@ -1,11 +0,0 @@
---
title: App
categories:
- Apps
tags:
- app
- application
- ios
- android
- square
---
@@ -1,9 +0,0 @@
---
title: Apple
categories:
- Brand
tags:
- aapl
- mac
- macintosh
---
@@ -1,8 +0,0 @@
---
title: Archive fill
categories:
- Files and folders
tags:
- box
- delete
---
@@ -1,8 +0,0 @@
---
title: Archive
categories:
- Files and folders
tags:
- box
- delete
---
@@ -1,8 +0,0 @@
---
title: Arrow 90deg down
categories:
- Arrows
tags:
- arrow
- right-angle
---
@@ -1,8 +0,0 @@
---
title: Arrow 90deg left
categories:
- Arrows
tags:
- arrow
- right-angle
---
@@ -1,8 +0,0 @@
---
title: Arrow 90deg right
categories:
- Arrows
tags:
- arrow
- right-angle
---
@@ -1,8 +0,0 @@
---
title: Arrow 90deg up
categories:
- Arrows
tags:
- arrow
- right-angle
---
@@ -1,7 +0,0 @@
---
title: Arrow bar bottom
categories:
- Arrows
tags:
- arrow
---
@@ -1,7 +0,0 @@
---
title: Arrow bar left
categories:
- Arrows
tags:
- arrow
---
@@ -1,7 +0,0 @@
---
title: Arrow bar right
categories:
- Arrows
tags:
- arrow
---
@@ -1,7 +0,0 @@
---
title: Arrow bar up
categories:
- Arrows
tags:
- arrow
---
@@ -1,16 +0,0 @@
---
title: Arrow clockwise
categories:
- Arrows
tags:
- arrow
- right
- spin
- turn
- around
- round
- rotate
- refresh
- reload
- redo
---
@@ -1,14 +0,0 @@
---
title: Arrow counterclockwise
categories:
- Arrows
tags:
- arrow
- left
- spin
- turn
- around
- round
- rotate
- undo
---
@@ -1,8 +0,0 @@
---
title: Arrow down circle fill
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow down circle
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow down left circle fill
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow down left circle
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow down left square fill
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,8 +0,0 @@
---
title: Arrow down left square
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,7 +0,0 @@
---
title: Arrow down-left
categories:
- Arrows
tags:
- arrow
---
@@ -1,8 +0,0 @@
---
title: Arrow down right circle fill
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow down right circle
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow down right square fill
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,8 +0,0 @@
---
title: Arrow down right square
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,7 +0,0 @@
---
title: Arrow down-right
categories:
- Arrows
tags:
- arrow
---
@@ -1,7 +0,0 @@
---
title: Arrow down-short
categories:
- Arrows
tags:
- arrow
---
@@ -1,8 +0,0 @@
---
title: Arrow down square fill
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,8 +0,0 @@
---
title: Arrow down square
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,7 +0,0 @@
---
title: Arrow down-up
categories:
- Arrows
tags:
- arrow
---
@@ -1,7 +0,0 @@
---
title: Arrow down
categories:
- Arrows
tags:
- arrow
---
@@ -1,8 +0,0 @@
---
title: Arrow left circle fill
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow left circle
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,7 +0,0 @@
---
title: Arrow left-right
categories:
- Arrows
tags:
- arrow
---
@@ -1,7 +0,0 @@
---
title: Arrow left-short
categories:
- Arrows
tags:
- arrow
---
@@ -1,8 +0,0 @@
---
title: Arrow left square fill
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,8 +0,0 @@
---
title: Arrow left square
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,7 +0,0 @@
---
title: Arrow left
categories:
- Arrows
tags:
- arrow
---
@@ -1,13 +0,0 @@
---
title: Arrow repeat
categories:
- Arrows
tags:
- arrow
- spin
- turn
- around
- round
- rotate
- sync
---
@@ -1,8 +0,0 @@
---
title: Arrow return left
categories:
- Arrows
tags:
- arrow
- return
---
@@ -1,8 +0,0 @@
---
title: Arrow return right
categories:
- Arrows
tags:
- arrow
- return
---
@@ -1,8 +0,0 @@
---
title: Arrow right circle fill
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,8 +0,0 @@
---
title: Arrow right circle
categories:
- Shape Arrows
tags:
- arrow
- circle
---
@@ -1,7 +0,0 @@
---
title: Arrow right-short
categories:
- Arrows
tags:
- arrow
---
@@ -1,8 +0,0 @@
---
title: Arrow right square fill
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,8 +0,0 @@
---
title: Arrow right square
categories:
- Shape Arrows
tags:
- arrow
- square
---
@@ -1,7 +0,0 @@
---
title: Arrow right
categories:
- Arrows
tags:
- arrow
---
@@ -1,10 +0,0 @@
---
title: Arrow through heart fill
categories:
- Arrows
- Love
tags:
- cupid
- love
- valentine
---
@@ -1,10 +0,0 @@
---
title: Arrow through heart
categories:
- Arrows
- Love
tags:
- cupid
- love
- valentine
---
@@ -1,8 +0,0 @@
---
title: Arrow up circle fill
categories:
- Shape Arrows
tags:
- arrow
- circle
---

Some files were not shown because too many files have changed in this diff Show More