101 Commits

Author SHA1 Message Date
Gagan7900 adadfc20db changes related to session expire warning, session time out issue, exchange rate search label and modal resize-able 2026-08-17 14:06:54 +07:00
Gagan7900 17c6292521 warning message changes 2026-08-17 10:13:07 +07:00
Gagan7900 6c22f57273 commit after merge 2026-08-14 22:40:20 +05:30
Gagandeep ced528d6d5 Merge pull request 'minor changes' (#20) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#20
2026-08-14 08:29:04 +00:00
Gagan7900 0624289d8d minor changes 2026-08-14 13:58:17 +05:30
Gagandeep fbc417dc62 Merge pull request 'multi-selection filter enable in all screen, icon added in sidebr sub-menus, remove un-used components, add border on left of row on hover, on click same open menu page reload' (#19) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#19
2026-08-14 08:19:00 +00:00
Gagan7900 db49e7cb91 multi-selection filter enable in all screen, icon added in sidebr sub-menus, remove un-used components, add border on left of row on hover, on click same open menu page reload 2026-08-14 13:48:05 +05:30
Gagandeep 13ee862705 Merge pull request 'remove delete provission from country list' (#18) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#18
2026-08-12 05:35:14 +00:00
Gagan7900 758ceedce6 remove delete provission from country list 2026-08-12 11:03:03 +05:30
gitadmin 6c3cbbe0a4 Update .gitea/workflows/docker-publish.yaml 2026-08-12 04:48:07 +00:00
Gagandeep c7d1f05195 Merge pull request 'minor ui changes' (#17) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#17
2026-08-11 14:15:02 +00:00
Gagan7900 08b2993cb0 minor ui changes 2026-08-11 19:44:15 +05:30
Anas Qureshi 1512d3c98b convert all tables into p-table 2026-08-11 19:28:10 +05:30
Anas Qureshi fd28920554 Merge branch 'dev' into Anas 2026-08-11 18:05:16 +05:30
Anas Qureshi 6aa59413d4 conflict solve accept incoming change 2026-08-11 17:47:42 +05:30
Anas Qureshi 80b46e9b33 Merge branch 'dev' of https://gitea.biz360.me/sc/syscom-master-admin-ui into dev 2026-08-11 17:41:07 +05:30
Anas Qureshi c97dfa4ee3 Merge branch 'dev' of https://gitea.biz360.me/sc/syscom-master-admin-ui into dev 2026-08-11 17:40:58 +05:30
Gagandeep c91620c4e0 Merge pull request 'UI login page, and custom-table changes' (#16) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#16
2026-08-11 12:09:28 +00:00
Gagan7900 6702b6e038 UI login page, and custom-table changes 2026-08-11 17:38:53 +05:30
gitadmin 57a78d474e Update Dockerfile 2026-08-10 12:37:49 +00:00
gitadmin 65de667a47 Update Dockerfile 2026-08-10 12:34:53 +00:00
gitadmin e4564dbcb3 Add nginx.conf 2026-08-10 12:34:22 +00:00
Gagandeep 56f91194bd Merge pull request 'login invalid login message show in single line' (#15) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#15
2026-08-08 12:20:23 +00:00
Gagan7900 4ac755d579 login invalid login message show in single line 2026-08-08 17:49:37 +05:30
Gagandeep d8d9e304c9 Merge pull request 'region crud added' (#14) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#14
2026-08-08 10:30:00 +00:00
Gagan7900 9d14c3ead2 region crud added 2026-08-08 15:58:59 +05:30
Gagandeep 94739f6300 Merge pull request 'localization, assign data-base, tenant domain, plan and subscription and data-base connection screen added' (#13) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#13
2026-08-07 08:32:16 +00:00
Gagan7900 c29d9450ec localization, assign data-base, tenant domain, plan and subscription and data-base connection screen added 2026-08-07 14:01:25 +05:30
Gagandeep 12d7f0c0a9 Merge pull request 'minor changes' (#12) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#12
2026-08-04 11:27:01 +00:00
Gagan7900 0ed581abc9 minor changes 2026-08-04 16:56:28 +05:30
Gagandeep 84baca3fbb Merge pull request 'buttons labels and fix grid of translation manager, import and export functionality in data-table' (#11) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#11
2026-08-04 11:17:53 +00:00
Gagan7900 c683f6fea9 buttons labels and fix grid of translation manager, import and export functionality in data-table 2026-08-04 16:47:01 +05:30
Gagandeep 11b58c550b Merge pull request 'new screens added for Plan, Db connections, and code refactor' (#10) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#10
2026-08-03 16:40:15 +00:00
Gagan7900 c7c361cc0b new screens added for Plan, Db connections, and code refactor 2026-08-03 22:08:55 +05:30
Gagandeep 89dfbcf24e Merge pull request 'Feature/onboarding workflow sc' (#9) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#9
2026-07-30 14:59:10 +00:00
Gagan7900 430389c611 organization dashboard changes 2026-07-30 20:27:50 +05:30
Gagan7900 2a6f85890f code refactoring, remove duplicate gaurds and other files 2026-07-30 17:07:12 +05:30
Gagan7900 368d6bd540 organization onboarding list, edit case changes 2026-07-30 14:30:51 +05:30
Gagandeep 26f889149f Merge pull request 'new design implement for login screen, organization onboarding form changes, new filter implement in all screens, remove icons from validation,' (#8) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#8
2026-07-29 13:50:19 +00:00
Gagan7900 4838e16dc8 new design implement for login screen, organization onboarding form changes, new filter implement in all screens, remove icons from validation, 2026-07-29 19:12:51 +05:30
Anas Qureshi 074d075034 new change fix filter change 2026-07-28 16:11:19 +05:30
Anas Qureshi f66951b983 Merge branch 'feature/onboarding-workflow-sc' into Anas 2026-07-28 16:10:36 +05:30
Gagandeep 28c4ae67ce Merge pull request 'Feature/onboarding workflow sc' (#7) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#7
2026-07-28 06:55:02 +00:00
Gagan7900 0907e0f5dc commit after mergee 2026-07-28 12:22:32 +05:30
Gagan7900 1cdb0fdc1c commit after merge 2026-07-28 12:19:19 +05:30
Gagan7900 9757dbaf46 commit merge 2026-07-28 12:18:32 +05:30
Gagan7900 ec83ef2902 Merge remote-tracking branch 'company/dev' into feature/onboarding-workflow-sc 2026-07-28 12:14:12 +05:30
Gagan7900 9ce058895c orgnanization onboarding stepper form changes, code refactor for custom data-table grid 2026-07-28 12:07:28 +05:30
Anas Qureshi 8a597c182f fix in btn n drop down 2026-07-27 19:20:25 +05:30
gitadmin 1d10fcc8c6 Update .gitea/workflows/docker-publish.yaml 2026-07-27 07:56:06 +00:00
Anas Qureshi c69456c2d3 new changes filter section add new ui 2026-07-27 12:46:03 +05:30
NUMAN 46edcffed4 Merge branch 'dev' of https://gitea.biz360.me/sc/syscom-master-admin-ui into dev 2026-07-27 11:26:28 +05:30
NUMAN a96a875bbc Merge branch 'dev' of https://gitea.biz360.me/sc/syscom-master-admin-ui into dev 2026-07-27 11:26:04 +05:30
gitadmin cfb02bee11 Delete docker/Dockerfile 2026-07-27 05:54:28 +00:00
Anas Qureshi a39e57fcfd new changes in dark mode 2026-07-27 10:57:52 +05:30
Gagan7900 95fc5bf17f Organization Onboarding Workflow 2026-07-26 14:11:19 +05:30
gitadmin b3da7f8e1c Update Dockerfile 2026-07-24 14:00:29 +00:00
gitadmin 2d068bda03 Update Dockerfile 2026-07-24 12:57:29 +00:00
gitadmin 043e577692 Update .gitea/workflows/docker-publish.yaml 2026-07-24 12:52:46 +00:00
gitadmin 62aaddeae0 Add Dockerfile 2026-07-24 12:52:30 +00:00
gitadmin 970fe414e0 Update docker/Dockerfile 2026-07-24 12:48:11 +00:00
gitadmin 0683856d2b Update docker/Dockerfile 2026-07-24 12:45:01 +00:00
gitadmin 1184c0c7a2 Update docker/Dockerfile 2026-07-24 12:22:44 +00:00
Anas Qureshi b3f8ee4356 Merge branch 'master' into Anas 2026-07-24 17:38:02 +05:30
gitadmin 624b741b9a Update src/app/app.config.ts 2026-07-24 11:56:50 +00:00
gitadmin 044c98b8c0 Update src/app/core/services/common/firebase.service.ts 2026-07-24 11:56:14 +00:00
gitadmin f3be09ad25 Update src/app/shared/services/firebase.service.ts 2026-07-24 11:55:42 +00:00
gitadmin 375978eeb7 Add .gitea/workflows/docker-publish.yaml 2026-07-24 11:51:25 +00:00
gitadmin ebff992816 Add docker/Dockerfile 2026-07-24 11:50:37 +00:00
gitadmin d8d45197bd Update docker/Dockerfile 2026-07-24 11:44:49 +00:00
Anas Qureshi 51eaaf50ef new stepper changes 2026-07-24 17:14:32 +05:30
gitadmin 99dc49fcab Update src/app/app.config.ts 2026-07-24 11:39:12 +00:00
gitadmin 024f6d7fd3 Update .gitea/workflows/docker-publish.yaml 2026-07-24 11:36:35 +00:00
Kunal c1e22cc586 Merge pull request 'Feature/onboarding workflow sc' (#6) from feature/onboarding-workflow-sc into dev
Reviewed-on: sc/syscom-master-admin-ui#6
Reviewed-by: Kunal <kp.workspace17@gmail.com>
2026-07-24 11:31:04 +00:00
gitadmin a9ef870437 Update .gitea/workflows/docker-publish.yaml 2026-07-24 11:27:49 +00:00
gitadmin 23a9607df3 Update .gitea/workflows/docker-publish.yaml 2026-07-24 11:25:38 +00:00
Gagan7900 f88f8739b8 minor firebase file build issue fixed 2026-07-24 16:45:28 +05:30
gitadmin 270e99eb86 Update docker/Dockerfile 2026-07-24 10:56:02 +00:00
Gagan7900 4e94c8606b Merge remote-tracking branch 'company/main' 2026-07-24 13:23:13 +05:30
Kunal 0fe2413505 Merge pull request 'Feature/onboarding workflow sc' (#5) from feature/onboarding-workflow-sc into main
Reviewed-on: sc/syscom-master-admin-ui#5
Reviewed-by: Kunal <kp.workspace17@gmail.com>
2026-07-24 07:37:12 +00:00
Gagan7900 bb21fcf87e refactor: freeze error build lines for build 2026-07-24 13:05:16 +05:30
Kunal c5f1c351c8 Merge pull request 'refactor: remove obsolete endpoint and service files' (#4) from feature/onboarding-workflow-sc into master
Reviewed-on: sc/syscom-master-admin-ui#4
Reviewed-by: Kunal <kp.workspace17@gmail.com>
2026-07-24 06:53:36 +00:00
Gagan7900 461ef97322 refactor: remove obsolete endpoint and service files 2026-07-24 12:20:36 +05:30
Kunal 2871ab8442 Merge pull request 'feat: add Master Admin application functionality' (#3) from feature/onboarding-workflow-sc into main
Reviewed-on: sc/syscom-master-admin-ui#3
Reviewed-by: Kunal <kp.workspace17@gmail.com>
2026-07-24 06:37:33 +00:00
Gagan7900 f02ce2b841 merge: retain latest local code while syncing company main 2026-07-24 12:05:12 +05:30
Kunal d43398411d Merge pull request 'add endpoint configuration for city, currency, language, and timezone' (#2) from global-master into main
Reviewed-on: sc/syscom-master-admin-ui#2
2026-07-24 06:27:12 +00:00
Gagan7900 d514d09879 feat: add Master Admin application functionality 2026-07-24 11:55:27 +05:30
Anas Qureshi 0f939a4ad2 css fix of btn 2026-07-24 10:52:49 +05:30
Anas Qureshi 5d9f2db518 new change table entries 2026-07-22 17:53:11 +05:30
Anas Qureshi 7f8ac71558 new changes implemented ui 2026-07-22 17:06:24 +05:30
gitadmin 792dd1eb76 Update docker/Dockerfile 2026-07-22 06:18:26 +00:00
gitadmin 6220134f17 Update docker/Dockerfile 2026-07-22 06:13:25 +00:00
gitadmin 208ea30e57 Add docker/Dockerfile 2026-07-22 05:52:03 +00:00
gitadmin 75d76dbc2b Delete Dockerfile 2026-07-22 05:51:45 +00:00
gitadmin 7dfb81d2de Add .gitea/workflows/docker-publish.yaml 2026-07-22 05:49:14 +00:00
gitadmin e6d6673d84 Add Dockerfile 2026-07-22 05:47:02 +00:00
Gagan7900 7c4e34e478 add tenant and user endpoints, services, models and guards 2026-07-18 16:38:41 +05:30
Gagan7900 be86ab3564 add endpoint configuration for city, currency, language, and timezone 2026-07-15 20:19:46 +05:30
Kunal 10038a52cf Merge pull request 'Remove generated preview build files' (#1) from global-master into main
Reviewed-on: sc/syscom-master-admin-ui#1
2026-07-13 13:28:32 +00:00
Gagan7900 095aed204c Remove generated preview build files 2026-07-13 12:11:32 +05:30
Gagan7900 ac629ef540 Initial commit 2026-07-13 11:57:09 +05:30
26442 changed files with 50219 additions and 570227 deletions
+93
View File
@@ -0,0 +1,93 @@
name: Docker Build & Publish UI
on:
push:
branches: [ prod, dev ]
env:
REGISTRY: gitea.biz360.me
IMAGE_NAME: ${{ github.repository }}
PROJECT_SECRET_KEY: "MASTERADMINUI"
# Target the base environment file directly
ENV_FILE_PATH: "src/environments/environment.ts"
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Determine Environment
id: env_config
run: |
if [[ "${GITHUB_REF##*/}" == "dev" ]]; then
echo "INFISICAL_ENV=dev" >> $GITHUB_OUTPUT
elif [[ "${GITHUB_REF##*/}" == "prod" ]]; then
echo "INFISICAL_ENV=prod" >> $GITHUB_OUTPUT
fi
- name: Fetch secrets from Infisical
uses: Infisical/secrets-action@v1.0.9
with:
client-id: ${{ secrets.INFISICAL_CLIENT_ID }}
client-secret: ${{ secrets.INFISICAL_CLIENT_SECRET }}
env-slug: ${{ steps.env_config.outputs.INFISICAL_ENV }}
project-slug: "syscom-xpq-0"
domain: "http://infisical-infisical-standalone-infisical.external-secrets.svc.cluster.local:8080"
# export-type: "file"
# file-output-path: "/infisical.env"
# - name: Brute-force overwrite environment.ts
# run: |
# source infisical.env
# # Forcefully overwrite the file the developers are importing
# echo "${!PROJECT_SECRET_KEY}" > "$ENV_FILE_PATH"
# # Clean up
# rm -f infisical.env
- name: Brute-force overwrite environment.ts
run: |
# Because the secret is now a native environment variable, we can write it directly.
# The double quotes around the indirect expansion preserve all newlines and internal single quotes!
echo "${!PROJECT_SECRET_KEY}" > "$ENV_FILE_PATH"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=dev-{{date 'YYYYMMDDTHHmm'}},enable=${{ github.ref == 'refs/heads/dev' }}
type=raw,value=prod-{{date 'YYYYMMDDTHHmm'}},enable=${{ github.ref == 'refs/heads/prod' }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
file: Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
# Optional: Revert the file so the runner stays completely clean
- name: Clean up modified workspace
if: always()
run: git checkout -- "$ENV_FILE_PATH"
+5
View File
@@ -45,3 +45,8 @@ __screenshots__/
# System files
.DS_Store
Thumbs.db
# Ignore preview folder
preview/
/.vs
+29
View File
@@ -0,0 +1,29 @@
## ----- Stage 1: Build Angular App -----
FROM node:22-alpine AS build
WORKDIR /app
# Copy package files
COPY package.json package-lock.json ./
# Install dependencies
RUN npm ci
# Copy the rest of the code
COPY . .
# Build the Angular app for production
RUN npm run build
# ----- Stage 2: Serve Angular App with Nginx -----
FROM nginx:alpine
# Copy the built assets from the build stage into Nginx's default HTML folder
COPY --from=build /app/preview /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Expose standard HTTP port 80
EXPOSE 80
# Start Nginx in the foreground
CMD ["nginx", "-g", "daemon off;"]
+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
To start a local development server, run:
```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.
## 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
To build the project run:
To build the project for production, run:
```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
To execute unit tests with the [Vitest](https://vitest.dev/) test runner, use the following command:
```bash
ng test
npm test
```
## Running end-to-end tests
## CI/CD
For end-to-end (e2e) testing, run:
```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.
Docker builds and publishing are automated via `.gitea/workflows/docker-publish.yaml`.
## Additional Resources
+34 -24
View File
@@ -3,7 +3,10 @@
"version": 1,
"cli": {
"packageManager": "npm",
"analytics": "0b3da18f-5d81-4a09-9b2f-b0ce36040773"
"analytics": "0b3da18f-5d81-4a09-9b2f-b0ce36040773",
"schematicCollections": [
"angular-eslint"
]
},
"newProjectRoot": "projects",
"projects": {
@@ -23,20 +26,9 @@
"build": {
"builder": "@angular/build:application",
"options": {
"allowedCommonJsDependencies": [
"allowedCommonJsDependencies": [
"sweetalert2",
"inputmask",
"filepond",
"moment",
"leaflet",
"apexcharts",
"glightbox",
"intl-tel-input",
"filepond-plugin-image-preview",
"dropzone",
"quill-delta",
"sweetalert",
"dayjs"
"apexcharts"
],
"browser": "src/main.ts",
"tsConfig": "tsconfig.app.json",
@@ -49,27 +41,36 @@
{
"glob": "**/*",
"input": "public"
},
"src/.htaccess"
}
],
"styles": [
"node_modules/flatpickr/dist/flatpickr.css",
"node_modules/@ng-select/ng-select/themes/default.theme.css",
"src/styles.scss"
],
"scripts": ["node_modules/preline/dist/preline.js"]
"scripts": [
"node_modules/preline/dist/preline.js"
]
},
"configurations": {
"production": {
"baseHref": "/angular/ynex-tailwind/preview/",
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"baseHref": "/",
"budgets": [
{
"type": "initial",
"maximumWarning": "5MB",
"maximumError": "5MB"
"maximumWarning": "2mb",
"maximumError": "4mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "4kB",
"maximumError": "8kB"
"maximumWarning": "8kb",
"maximumError": "12kb"
}
],
"outputHashing": "all"
@@ -80,7 +81,7 @@
"sourceMap": true
}
},
"defaultConfiguration": "production"
"defaultConfiguration": "development"
},
"serve": {
"builder": "@angular/build:dev-server",
@@ -96,8 +97,17 @@
},
"test": {
"builder": "@angular/build:unit-test"
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"src/**/*.ts",
"src/**/*.html"
]
}
}
}
}
}
}
}
+29
View File
@@ -0,0 +1,29 @@
## ----- Stage 1: Build Angular SSR App -----
FROM node:22-alpine AS build
WORKDIR /app
# Copy package files
COPY package.json package-lock.json ./
# Install dependencies
RUN npm ci
# Copy the rest of the code
COPY . .
# Build the Angular app for production
RUN npm run build
# ----- Stage 2: Serve SSR App -----
FROM node:22-alpine AS final
WORKDIR /app
# Copy the built assets from the build stage.
COPY --from=build /app/preview ./preview
# Expose the standard Angular SSR port
EXPOSE 4000
# Start the Node.js SSR server
CMD ["node", "preview/server/server.mjs"]
+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: {},
}
);
+10
View File
@@ -0,0 +1,10 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
+1936 -1762
View File
File diff suppressed because it is too large Load Diff
+14 -5
View File
@@ -1,5 +1,5 @@
{
"name": "ynex-tailwind",
"name": "syscom-master-admin-ui",
"version": "1.0.0",
"scripts": {
"ng": "ng",
@@ -9,7 +9,8 @@
"test": "ng test",
"sass": "sass ./public/assets/scss:./public/assets/css/",
"sass-min": "sass ./public/assets/scss:./public/assets/css/ --style compressed",
"postcss": "sass ./public/assets/scss:./public/assets/css && postcss ./public/assets/css/*.css --dir ./public/assets/css"
"postcss": "sass ./public/assets/scss:./public/assets/css && postcss ./public/assets/css/*.css --dir ./public/assets/css",
"lint": "ng lint"
},
"prettier": {
"printWidth": 100,
@@ -31,24 +32,28 @@
"@angular/common": "^21.2.10",
"@angular/compiler": "^21.2.10",
"@angular/core": "^21.2.10",
"@angular/fire": "^21.0.0-rc.0",
"@angular/forms": "^21.2.10",
"@angular/google-maps": "^21.2.8",
"@angular/material": "^21.2.14",
"@angular/platform-browser": "^21.2.10",
"@angular/platform-browser-dynamic": "^21.2.10",
"@angular/router": "^21.2.10",
"@ng-select/ng-select": "^21.8.2",
"@tailwindcss/forms": "^0.5.11",
"@tsparticles/angular": "^3.0.0",
"angularx-flatpickr": "^8.1.0",
"apexcharts": "^5.10.5",
"chart.js": "^4.5.1",
"flatpickr": "^4.6.13",
"ng-apexcharts": "^2.3.0",
"ng2-charts": "^10.0.0",
"ngx-color-picker": "^20.1.1",
"ngx-echarts": "^21.0.0",
"ngx-toastr": "^20.0.5",
"preline": "^4.1.2",
"primeicons": "^8.0.0",
"primeng": "^21.1.9",
"rxjs": "~7.8.0",
"simplebar-angular": "^3.3.2",
"sweetalert2": "^11.26.25",
"tslib": "^2.3.0",
"tsparticles": "^3.9.1"
},
@@ -56,13 +61,17 @@
"@angular/build": "^21.0.5",
"@angular/cli": "^21.0.5",
"@angular/compiler-cli": "^21.2.10",
"@eslint/js": "^10.0.1",
"@tailwindcss/postcss": "^4.2.2",
"angular-eslint": "21.4.0",
"autoprefixer": "^10.4.27",
"eslint": "^10.3.0",
"jsdom": "^27.1.0",
"postcss": "^8.5.8",
"postcss-cli": "^11.0.1",
"tailwindcss": "^4.2.2",
"typescript": "~5.9.2",
"typescript-eslint": "8.59.2",
"vitest": "^4.0.8"
}
}
-18
View File
@@ -1,18 +0,0 @@
# Generated with ngx-htaccess-generator v1.2.4
# Check for updates: https://julianpoemp.github.io/ngx-htaccess-generator/
<IfModule mod_headers.c>
# Set allow Access-Control-Allow-Origin header
Header set Access-Control-Allow-Origin "*"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirection of requests to index.html
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^.*$ - [NC,L]
# Redirect all non-file routes to index.html
RewriteRule ^(?!.*\.).*$ index.html [NC,L]
</IfModule>
File diff suppressed because it is too large Load Diff
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 it is too large Load Diff
File diff suppressed because one or more lines are too long
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 it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.3 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.4 MiB

File diff suppressed because it is too large Load Diff
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
---

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