mirror of
https://github.com/tabler/tabler.git
synced 2025-12-22 09:54:24 +04:00
Compare commits
199 Commits
dev-docs-a
...
dev-doc-ch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd8ef47ef1 | ||
|
|
0e935316f5 | ||
|
|
bb617b8dd2 | ||
|
|
5fa662bfae | ||
|
|
467c529fdc | ||
|
|
7773ff22b9 | ||
|
|
1867e0e482 | ||
|
|
67c9400918 | ||
|
|
7917f868e9 | ||
|
|
5619b2d8be | ||
|
|
9b15b942cb | ||
|
|
5b3e201d06 | ||
|
|
8470c9b315 | ||
|
|
dce63db1e6 | ||
|
|
278967b028 | ||
|
|
7082ea1c56 | ||
|
|
c42b104fe5 | ||
|
|
e546706f4c | ||
|
|
6d5e950235 | ||
|
|
665472cf69 | ||
|
|
468b055005 | ||
|
|
895f943270 | ||
|
|
3eaa90203b | ||
|
|
79bd867db5 | ||
|
|
e265681a48 | ||
|
|
cac5d92c7d | ||
|
|
b6e9b18ce9 | ||
|
|
849e286df0 | ||
|
|
b6ce7b8feb | ||
|
|
7b7265347c | ||
|
|
e675389871 | ||
|
|
b548430688 | ||
|
|
b45d85089e | ||
|
|
8f701859ad | ||
|
|
78c9c71365 | ||
|
|
5d8752eea0 | ||
|
|
6452669803 | ||
|
|
bf750451f1 | ||
|
|
83b11a8b35 | ||
|
|
42da37e737 | ||
|
|
0f335cda27 | ||
|
|
a6c24bb44f | ||
|
|
e975ea7e74 | ||
|
|
92ec44cf4a | ||
|
|
8da9fa869f | ||
|
|
67f3571a4f | ||
|
|
8710940952 | ||
|
|
7295678c34 | ||
|
|
a037e8e429 | ||
|
|
3da4395d10 | ||
|
|
f9f9663b2a | ||
|
|
a922c1f226 | ||
|
|
9069dcba54 | ||
|
|
7fbe4b5bc9 | ||
|
|
9ebd9f1d24 | ||
|
|
88b9e87c6e | ||
|
|
d4886607f0 | ||
|
|
1546e9ccc4 | ||
|
|
f25da87043 | ||
|
|
2ac915cd93 | ||
|
|
fa89c6fa73 | ||
|
|
c4d21a4666 | ||
|
|
baa6056c4c | ||
|
|
dc24132a7d | ||
|
|
8abd2a8d20 | ||
|
|
226f9bd202 | ||
|
|
255bea88b1 | ||
|
|
8525276984 | ||
|
|
f3182c6538 | ||
|
|
6d6d1bde4c | ||
|
|
2b6d6b184b | ||
|
|
5b2ee97aa7 | ||
|
|
681f7a5fed | ||
|
|
9910dd0dde | ||
|
|
8d4f8d07c3 | ||
|
|
199f39a52e | ||
|
|
94bea005a4 | ||
|
|
0d501e9017 | ||
|
|
00e9c06f11 | ||
|
|
52710a339a | ||
|
|
6c566cf7b1 | ||
|
|
523f288c8f | ||
|
|
864619201e | ||
|
|
f9e4da2fb0 | ||
|
|
c70806a9db | ||
|
|
44250db908 | ||
|
|
137e5be8f2 | ||
|
|
ffdf712f8a | ||
|
|
4846828f39 | ||
|
|
e8e3857b00 | ||
|
|
91b026507b | ||
|
|
f9013873b9 | ||
|
|
ddcd3a79e1 | ||
|
|
c20d076b74 | ||
|
|
042e50f979 | ||
|
|
e14e4921b5 | ||
|
|
d61cddb3d6 | ||
|
|
0accf60a63 | ||
|
|
d3daf7a5db | ||
|
|
8ac0742cc7 | ||
|
|
f94b153f7f | ||
|
|
74e5d26c20 | ||
|
|
9a9dedf1b4 | ||
|
|
e704a5a946 | ||
|
|
dd26b62607 | ||
|
|
9fceadd422 | ||
|
|
9c368702b4 | ||
|
|
3fc7b84fc4 | ||
|
|
b17b488c96 | ||
|
|
9bbcb99b90 | ||
|
|
215eaa4acb | ||
|
|
92a3afe492 | ||
|
|
19a3d20fad | ||
|
|
8cd7b186b7 | ||
|
|
be1f3d1c1f | ||
|
|
2f8a37252d | ||
|
|
d73d78e76f | ||
|
|
f84e88116c | ||
|
|
473fa3850b | ||
|
|
f336275476 | ||
|
|
982bc5a09b | ||
|
|
5fe99e0510 | ||
|
|
1527157bfe | ||
|
|
922bb0346a | ||
|
|
e3d68d6aab | ||
|
|
aea3b0a614 | ||
|
|
cd592b4743 | ||
|
|
c59bc9d977 | ||
|
|
bc443ff4aa | ||
|
|
afd024f0b1 | ||
|
|
d29b6f5675 | ||
|
|
6b6617aae6 | ||
|
|
636fed5fe9 | ||
|
|
d7f4f50986 | ||
|
|
6d0271ad57 | ||
|
|
f29c911032 | ||
|
|
01ee740535 | ||
|
|
7d5d9bc847 | ||
|
|
776a85cf1a | ||
|
|
ac10f55405 | ||
|
|
d0f45a41f8 | ||
|
|
16a42ba330 | ||
|
|
f7d5b6a05e | ||
|
|
4376968bca | ||
|
|
dee2b8ad64 | ||
|
|
2c9a4dfb37 | ||
|
|
e46fec5050 | ||
|
|
f3c409ffc2 | ||
|
|
309ff40a48 | ||
|
|
eea2d38f39 | ||
|
|
876bec9db3 | ||
|
|
f06cce0300 | ||
|
|
e1931f8c37 | ||
|
|
c240b5ad21 | ||
|
|
baafe08d6e | ||
|
|
cba487f5b7 | ||
|
|
edbaa1eddd | ||
|
|
378fba89f5 | ||
|
|
b0a62b7cf5 | ||
|
|
1415820cb1 | ||
|
|
81a8738823 | ||
|
|
417d0bc444 | ||
|
|
22e10d4dba | ||
|
|
57f6219f7c | ||
|
|
fbe3680142 | ||
|
|
c2b446c209 | ||
|
|
09844ab64b | ||
|
|
cea1c87c21 | ||
|
|
a2640e2147 | ||
|
|
9cd532745a | ||
|
|
063bdc28ab | ||
|
|
5d8392366c | ||
|
|
2d05b5d5d3 | ||
|
|
ca4ba14718 | ||
|
|
9755e1e9e9 | ||
|
|
954e42f9c0 | ||
|
|
b47815d530 | ||
|
|
1edaff454b | ||
|
|
b47725dcc2 | ||
|
|
b85ef1a95e | ||
|
|
eff95dc033 | ||
|
|
846c48d140 | ||
|
|
ee3862fcf4 | ||
|
|
2fe9e70b54 | ||
|
|
002528fadd | ||
|
|
ee5e25a52b | ||
|
|
bd3d959cea | ||
|
|
afd070012d | ||
|
|
d6a10938e3 | ||
|
|
f95f2509c7 | ||
|
|
3dea9de29c | ||
|
|
3b0623fc42 | ||
|
|
f38fac3508 | ||
|
|
b4b4d1a816 | ||
|
|
821a1c5405 | ||
|
|
1b0266e612 | ||
|
|
3320246d0f | ||
|
|
55f467c945 | ||
|
|
958ad128ad |
63
.build/reformat-mdx.mjs
Normal file
63
.build/reformat-mdx.mjs
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
import { readFileSync, writeFileSync } from 'node:fs';
|
||||||
|
import { join, dirname } from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url'
|
||||||
|
import { sync } from 'glob';
|
||||||
|
import * as prettier from "prettier";
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const docs = sync(join(__dirname, '..', 'docs', '**', '*.md'))
|
||||||
|
|
||||||
|
async function formatHTML(htmlString) {
|
||||||
|
try {
|
||||||
|
const formattedHtml = await prettier.format(htmlString, {
|
||||||
|
parser: "html",
|
||||||
|
printWidth: 100,
|
||||||
|
});
|
||||||
|
return formattedHtml;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error formatting HTML:", error);
|
||||||
|
return htmlString; // Return original in case of an error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function replaceAsync(str, regex, asyncFn) {
|
||||||
|
const matches = [...str.matchAll(regex)];
|
||||||
|
|
||||||
|
const replacements = await Promise.all(
|
||||||
|
matches.map(async (match) => asyncFn(...match))
|
||||||
|
);
|
||||||
|
|
||||||
|
let result = str;
|
||||||
|
matches.forEach((match, i) => {
|
||||||
|
result = result.replace(match[0], replacements[i]);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const file of docs) {
|
||||||
|
const oldContent = readFileSync(file, 'utf8')
|
||||||
|
|
||||||
|
// get codeblocks from markdown
|
||||||
|
const content = await replaceAsync(oldContent, /(```([a-z0-9]+).*?\n)(.*?)(```)/gs, async (m, m1, m2, m3, m4) => {
|
||||||
|
if (m2 === 'html') {
|
||||||
|
m3 = await formatHTML(m3);
|
||||||
|
|
||||||
|
// remove empty lines
|
||||||
|
m3 = m3.replace(/^\s*[\r\n]/gm, '');
|
||||||
|
|
||||||
|
return m1 + m3.trim() + "\n" + m4;
|
||||||
|
}
|
||||||
|
return m.trim();
|
||||||
|
})
|
||||||
|
|
||||||
|
if (content !== oldContent) {
|
||||||
|
writeFileSync(file, content, 'utf8')
|
||||||
|
console.log(`Reformatted ${file}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
30
.build/zip-package.mjs
Normal file
30
.build/zip-package.mjs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import AdmZip from 'adm-zip';
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import { readFileSync } from 'fs';
|
||||||
|
|
||||||
|
// Get __dirname in ESM
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const pkg = JSON.parse(
|
||||||
|
readFileSync(path.join(__dirname, '../core', 'package.json'), 'utf8')
|
||||||
|
)
|
||||||
|
|
||||||
|
// Create zip instance and add folder
|
||||||
|
const zip = new AdmZip();
|
||||||
|
zip.addLocalFolder(path.join(__dirname, '../preview/dist'), 'dashboard');
|
||||||
|
|
||||||
|
zip.addLocalFile(path.join(__dirname, '../preview/static', 'og.png'), '.', 'preview.png');
|
||||||
|
|
||||||
|
zip.addFile("documentation.url", Buffer.from("[InternetShortcut]\nURL = https://tabler.io/docs"));
|
||||||
|
|
||||||
|
|
||||||
|
// Folder to zip and output path
|
||||||
|
const outputZipPath = path.join(__dirname, '../packages-zip', `tabler-${pkg.version}.zip`);
|
||||||
|
|
||||||
|
// Write the zip file
|
||||||
|
zip.writeZip(outputZipPath);
|
||||||
|
|
||||||
|
console.log(`Zipped folder to ${outputZipPath}`);
|
||||||
5
.changeset/afraid-bobcats-greet.md
Normal file
5
.changeset/afraid-bobcats-greet.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Update illustrations to v1.7
|
||||||
5
.changeset/beige-apricots-pretend.md
Normal file
5
.changeset/beige-apricots-pretend.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add SRI hashes to scripts and styles
|
||||||
5
.changeset/cold-jokes-allow.md
Normal file
5
.changeset/cold-jokes-allow.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix: improve Introduction, Base, Layout and Plugins sections in documentation
|
||||||
@@ -5,6 +5,6 @@
|
|||||||
"fixed": [],
|
"fixed": [],
|
||||||
"linked": [],
|
"linked": [],
|
||||||
"access": "public",
|
"access": "public",
|
||||||
"baseBranch": "main",
|
"baseBranch": "dev",
|
||||||
"ignore": []
|
"ignore": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix overflow of `label` in a `floating-input`
|
|
||||||
5
.changeset/dry-spiders-double.md
Normal file
5
.changeset/dry-spiders-double.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix input mask example in docs
|
||||||
5
.changeset/dull-monkeys-swim.md
Normal file
5
.changeset/dull-monkeys-swim.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Update icons to v3.31.0
|
||||||
5
.changeset/eleven-seals-unite.md
Normal file
5
.changeset/eleven-seals-unite.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix broken links to other docs section and tabler.io website; improve some labels.
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Enable `scrollSpy` in `countup` module
|
|
||||||
5
.changeset/few-donuts-repeat.md
Normal file
5
.changeset/few-donuts-repeat.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add "text features" menu item
|
||||||
5
.changeset/forty-ties-fail.md
Normal file
5
.changeset/forty-ties-fail.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Correct `aria-label` of app menu link
|
||||||
5
.changeset/gentle-students-visit.md
Normal file
5
.changeset/gentle-students-visit.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix switch icon examples with filled icons in documentation
|
||||||
5
.changeset/good-experts-lick.md
Normal file
5
.changeset/good-experts-lick.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Add missing metadata for Tabler Documentation
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Add segmented control component
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"preview": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix timeline card layout and profile header styles
|
|
||||||
5
.changeset/lemon-penguins-sin.md
Normal file
5
.changeset/lemon-penguins-sin.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix color badge in navbar menu
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
---
|
|
||||||
|
|
||||||
Refactor bundlewatch workflow to use Turbo
|
|
||||||
5
.changeset/mighty-fans-sell.md
Normal file
5
.changeset/mighty-fans-sell.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix documentation: remove duplicated code examples; increase height of dropdown examples; fix some links
|
||||||
5
.changeset/new-rats-argue.md
Normal file
5
.changeset/new-rats-argue.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix ribbon component in the documentation
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix size of `apexcharts` tooltip marker
|
|
||||||
5
.changeset/poor-spoons-deny.md
Normal file
5
.changeset/poor-spoons-deny.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/core": "patch"
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix colour swatches on small screens
|
||||||
5
.changeset/popular-geckos-flow.md
Normal file
5
.changeset/popular-geckos-flow.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add missing `tw` entry in `flags.json`
|
||||||
5
.changeset/popular-hairs-unite.md
Normal file
5
.changeset/popular-hairs-unite.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Delete missing demo RTL style
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix negative margins in `.navbar-bordered` variant
|
|
||||||
5
.changeset/rude-jobs-rush.md
Normal file
5
.changeset/rude-jobs-rush.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix broken RTL preview
|
||||||
5
.changeset/short-balloons-smile.md
Normal file
5
.changeset/short-balloons-smile.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix incorrect label text on form elements docs page
|
||||||
5
.changeset/short-hounds-promise.md
Normal file
5
.changeset/short-hounds-promise.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Use tabs-package include to show webfont install steps
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Refactored the project into a monorepo, removed Gulp, and introduced a new, more efficient build process.
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Use the full license agreement for illustrations in docs
|
|
||||||
5
.changeset/silent-hornets-appear.md
Normal file
5
.changeset/silent-hornets-appear.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Demonstrate sticky header table more clearly in docs
|
||||||
5
.changeset/silent-planes-hide.md
Normal file
5
.changeset/silent-planes-hide.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/preview": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add new form layout page
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Improve documentation for buttons
|
|
||||||
5
.changeset/silly-pears-mix.md
Normal file
5
.changeset/silly-pears-mix.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Replace non-existent Vimeo file and enhance the inline player documentation
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix vertical alignment in single page and error layouts
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": "minor"
|
|
||||||
---
|
|
||||||
|
|
||||||
Add documentation for segmented control component
|
|
||||||
5
.changeset/strong-frogs-brush.md
Normal file
5
.changeset/strong-frogs-brush.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Exclude headings inside `.example` from the Table of Contents
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix `.avatar-upload` double borders
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
---
|
|
||||||
|
|
||||||
Update `robots.txt` handling and improve sitemap URL generation
|
|
||||||
5
.changeset/tidy-hairs-wonder.md
Normal file
5
.changeset/tidy-hairs-wonder.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/core": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix missing border-radius to `.card-header-tabs`
|
||||||
5
.changeset/twelve-rings-sleep.md
Normal file
5
.changeset/twelve-rings-sleep.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Add missing `.steps-vertical` classes in docs
|
||||||
5
.changeset/twenty-meals-hug.md
Normal file
5
.changeset/twenty-meals-hug.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Use color-input examples in documentation
|
||||||
5
.changeset/violet-pots-love.md
Normal file
5
.changeset/violet-pots-love.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Add URL for local dev version of docs app to README
|
||||||
5
.changeset/wet-pans-attend.md
Normal file
5
.changeset/wet-pans-attend.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tabler/docs": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix `src` links to images in README and getting-started docs page
|
||||||
67
.github/workflows/argos.yml
vendored
Normal file
67
.github/workflows/argos.yml
vendored
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
name: Argos Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'preview/**/*.js'
|
||||||
|
- 'preview/**/*.html'
|
||||||
|
- 'preview/**/*.scss'
|
||||||
|
- 'core/**/*.js'
|
||||||
|
- 'core/**/*.scss'
|
||||||
|
|
||||||
|
env:
|
||||||
|
NODE: 20
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# if: github.event.pull_request.draft == false
|
||||||
|
if: false
|
||||||
|
steps:
|
||||||
|
- name: Clone repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache turbo build setup
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "${{ env.NODE }}"
|
||||||
|
|
||||||
|
- name: Install PNPM
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
|
- name: Get installed Playwright version
|
||||||
|
id: playwright-version
|
||||||
|
run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@playwright/test'])")" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Cache playwright binaries
|
||||||
|
uses: actions/cache@v4
|
||||||
|
id: playwright-cache
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.cache/ms-playwright
|
||||||
|
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}
|
||||||
|
|
||||||
|
- name: Install pnpm dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: pnpm exec playwright install --with-deps
|
||||||
|
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: pnpm run playwright
|
||||||
3
.github/workflows/bundlewatch.yml
vendored
3
.github/workflows/bundlewatch.yml
vendored
@@ -44,9 +44,6 @@ jobs:
|
|||||||
- name: Install pnpm dependencies
|
- name: Install pnpm dependencies
|
||||||
run: pnpm install --no-frozen-lockfile
|
run: pnpm install --no-frozen-lockfile
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: pnpm run build
|
|
||||||
|
|
||||||
- name: Run bundlewatch
|
- name: Run bundlewatch
|
||||||
run: pnpm run bundlewatch
|
run: pnpm run bundlewatch
|
||||||
env:
|
env:
|
||||||
|
|||||||
5
.github/workflows/lockfiles.yaml
vendored
5
.github/workflows/lockfiles.yaml
vendored
@@ -1,6 +1,7 @@
|
|||||||
name: Changed lock files
|
name: Changed lock files
|
||||||
on:
|
on:
|
||||||
pull_request: null
|
pull_request_target:
|
||||||
|
types: [opened, reopened]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: read
|
pull-requests: read
|
||||||
@@ -14,7 +15,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Prevent lock file change
|
- name: Prevent lock file change
|
||||||
uses: xalvarez/prevent-file-change-action@v1
|
uses: xalvarez/prevent-file-change-action@v2
|
||||||
with:
|
with:
|
||||||
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
||||||
pattern: Gemfile.lock|pnpm-lock.json
|
pattern: Gemfile.lock|pnpm-lock.json
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -35,4 +35,5 @@ package-lock.json
|
|||||||
|
|
||||||
demo/
|
demo/
|
||||||
dist/
|
dist/
|
||||||
packages-zip/
|
packages-zip/
|
||||||
|
.env
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"bracketSpacing": true,
|
"bracketSpacing": true,
|
||||||
"jsxSingleQuote": false,
|
"jsxSingleQuote": false,
|
||||||
"printWidth": 240,
|
"printWidth": 320,
|
||||||
"proseWrap": "always",
|
"proseWrap": "always",
|
||||||
"semi": false,
|
"semi": false,
|
||||||
"singleQuote": false,
|
"singleQuote": false,
|
||||||
|
|||||||
229
README.md
229
README.md
@@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/tabler/tabler"><img src="https://raw.githubusercontent.com/tabler/tabler/dev/src/static/logo.svg" alt="A premium and open source dashboard template with a responsive and high-quality UI." width="300"></a><br><br>
|
<a href="https://github.com/tabler/tabler"><img src="https://raw.githubusercontent.com/tabler/tabler/refs/heads/dev/shared/static/logo.svg" alt="A premium and open source dashboard template with a responsive and high-quality UI." width="300"></a><br><br>
|
||||||
A premium and open source dashboard template with a responsive and high-quality UI.
|
A premium and open source dashboard template with a responsive and high-quality UI.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -15,34 +15,53 @@ A premium and open source dashboard template with a responsive and high-quality
|
|||||||
|
|
||||||
## Sponsors
|
## Sponsors
|
||||||
|
|
||||||
**If you want to support our project and help me grow it, you can [become a sponsor on GitHub](https://github.com/sponsors/codecalm) or just [donate on PayPal](https://paypal.me/codecalm) :)**
|
**If you want to support our project and help us grow it, you can [become a sponsor on GitHub](https://github.com/sponsors/codecalm) or just [donate on PayPal](https://paypal.me/codecalm) :)**
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/sponsors/codecalm">
|
<a href="https://github.com/sponsors/codecalm">
|
||||||
<img src="https://cdn.jsdelivr.net/gh/tabler/sponsors@latest/sponsors.svg" alt="Tabler sponsors">
|
<img src="https://cdn.jsdelivr.net/gh/tabler/sponsors@latest/sponsors.svg" alt="Tabler sponsors">
|
||||||
</a>
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/sponsors/codecalm" target="_blank">
|
||||||
|
<img src="https://raw.githubusercontent.com/tabler/tabler/dev/shared/static/sponsor-banner-homepage.svg" alt="Sponsor Banner">
|
||||||
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
|
<p align="center">Visual testing with:</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://argos-ci.com/" target="_blank">
|
||||||
|
<picture>
|
||||||
|
<img src="https://github.com/user-attachments/assets/7d231a26-eff5-4fc5-8392-b2a679a7c572" alt="Argos-CI" height="164" />
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p align="center">Browser testing via:</p>
|
<p align="center">Browser testing via:</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://www.lambdatest.com/" target="_blank">
|
<a href="https://www.lambdatest.com/" target="_blank">
|
||||||
<picture>
|
<picture>
|
||||||
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/14dd2a0a-bafe-436e-a6cb-29636278c781">
|
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/14dd2a0a-bafe-436e-a6cb-29636278c781">
|
||||||
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83">
|
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83">
|
||||||
<img src="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83" alt="Tabler Icons preview" width="296">
|
<img src="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83" alt="labmdatest" width="296">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## 🔎 Preview
|
## 🔎 Preview
|
||||||
|
|
||||||
Tabler is fully responsive and compatible with all modern browsers. Thanks to its modern and user-friendly design you can create a fully functional interface that users will love! Choose the layouts and components you need and customize them to make your design consistent and eye-catching. Every component has been created with attention to detail to make your interface beautiful! <a href="https://preview.tabler.io">Show me a demo</a>
|
Tabler is fully responsive and compatible with all modern browsers. Thanks to its modern and user-friendly design you can create a fully functional interface that users will love! Choose the layouts and components you need and customize them to make your design consistent and eye-catching. Every component has been created with attention to detail to make your interface beautiful! <a href="https://preview.tabler.io">Show me a demo</a>
|
||||||
|
|
||||||
<a href="https://preview.tabler.io" target="_blank"><img src="https://raw.githubusercontent.com/tabler/tabler/dev/src/static/tabler-preview.png" alt="Tabler preview"></a>
|
<p align="center">
|
||||||
|
<a href="https://preview.tabler.io" target="_blank">
|
||||||
|
<img src="https://raw.githubusercontent.com/tabler/tabler/dev/shared/static/tabler-preview.png" alt="Tabler Preview">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
## 🚀 Features
|
## 🚀 Features
|
||||||
|
|
||||||
@@ -53,110 +72,30 @@ We've created this admin panel for everyone who wants to create templates based
|
|||||||
* **HTML5 & CSS3:** We use only modern web technologies, such as HTML5 and CSS3. Our theme includes some subtle CSS3 animations, which will help you attract attention.
|
* **HTML5 & CSS3:** We use only modern web technologies, such as HTML5 and CSS3. Our theme includes some subtle CSS3 animations, which will help you attract attention.
|
||||||
* **Clean Code:** We followed Bootstrap’s guidelines carefully to make your integration as easy as possible. All code is handwritten and W3C valid.
|
* **Clean Code:** We followed Bootstrap’s guidelines carefully to make your integration as easy as possible. All code is handwritten and W3C valid.
|
||||||
* **Demo pages**: Tabler features over 20 individual pages using various components, which gives you the freedom to choose and combine. All components can vary in color and styling that you can easily modify using Sass. Sky is the limit!
|
* **Demo pages**: Tabler features over 20 individual pages using various components, which gives you the freedom to choose and combine. All components can vary in color and styling that you can easily modify using Sass. Sky is the limit!
|
||||||
* **Single Page Application versions:** [Tabler React](https://github.com/tabler/tabler-react) has React components for Tabler.
|
|
||||||
|
|
||||||
## 📖 Documentation
|
## 📖 Documentation
|
||||||
|
|
||||||
Documentation is available as a part of Tabler preview: https://tabler.io/docs/
|
The documentation is available at https://docs.tabler.io/
|
||||||
|
|
||||||
To run the documentation site locally, follow instructions in the [Documentation README](https://github.com/tabler/tabler/blob/dev/site/README.md).
|
|
||||||
|
|
||||||
## 🪴 Project Activity
|
## 🪴 Project Activity
|
||||||
|
|
||||||

|
<p align="center">
|
||||||
|
<img src="https://repobeats.axiom.co/api/embed/61d1db34446967b0848af68198a392067e0f5870.svg" alt="Repobeats analytics image" />
|
||||||
## 💕 Sponsor Tabler
|
</p>
|
||||||
|
|
||||||
<a href="https://github.com/sponsors/codecalm" target="_blank"><img src="/src/static/sponsor-banner-readme.png?raw=true" alt="Sponsor Tabler" /></a>
|
|
||||||
|
|
||||||
|
|
||||||
### Sponsors
|
|
||||||
|
|
||||||
Support this project by becoming a sponsor. Your logo will show up in this README with a link to your website. [Become a sponsor!](https://opencollective.com/tabler#sponsor)
|
|
||||||
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/0/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/0/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/1/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/1/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/2/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/2/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/3/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/3/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/4/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/4/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/5/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/5/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/6/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/6/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/7/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/7/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/8/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/8/avatar.svg" /></a>
|
|
||||||
<a href="https://opencollective.com/tabler/tiers/sponsor/9/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/9/avatar.svg" /></a>
|
|
||||||
|
|
||||||
## 📦 Setup environment
|
|
||||||
|
|
||||||
To use our build system and run our documentation locally, you'll need a copy of Tabler's source files. Follow the steps below:
|
|
||||||
|
|
||||||
1. [Install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
|
|
||||||
2. Navigate to the root `/tabler` directory and run `pnpm install` to install our local dependencies listed in `package.json`.
|
|
||||||
|
|
||||||
**OSX users**:
|
|
||||||
|
|
||||||
```pnpm install```
|
|
||||||
|
|
||||||
and then
|
|
||||||
|
|
||||||
```npm run start```
|
|
||||||
|
|
||||||
|
|
||||||
**Windows users**:
|
|
||||||
|
|
||||||
[Install Git](https://git-scm.com/download/win) in `C:\Program Files\git\bin` directory and run `npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"` to change the default shell.
|
|
||||||
|
|
||||||
Once you complete the setup, you'll be able to run the various commands provided from the command line.
|
|
||||||
|
|
||||||
|
|
||||||
## Build locally
|
|
||||||
|
|
||||||
You need to have `pnpm` installed.
|
|
||||||
|
|
||||||
1. From the root `/tabler` directory, run installation in the command line: `pnpm install`
|
|
||||||
2. Then execute `pnpm run start` to start up the application stack.
|
|
||||||
3. Open [http://localhost:3000](http://localhost:3000) in your browser, and voilà.
|
|
||||||
4. Any change in the `/src` directory will build the application and refresh the page.
|
|
||||||
|
|
||||||
**Note**:
|
|
||||||
Run `pnpm run build` for reforms a one off build application without refresh.
|
|
||||||
Open [http://localhost:3001](http://localhost:3001) to configure the Web server.
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Tabler is distributed via npm.
|
### Package Managers
|
||||||
|
|
||||||
|
Tabler is distributed via npm. You can install it with this or your preferred JavaScript package manager:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
npm install --save @tabler/core
|
npm install --save @tabler/core
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running with Docker
|
|
||||||
|
|
||||||
**Plain Docker**
|
|
||||||
|
|
||||||
If you don't want to install node/npm and the dependencies on your local environment, you can use the provided Dockerfile to build a docker image.
|
|
||||||
This Dockerfile is provided as an example to spin-up a container running Tabler.
|
|
||||||
|
|
||||||
Example of how to use this image:
|
|
||||||
|
|
||||||
1. Build the tabler image : `docker build -t tabler .`
|
|
||||||
2. Run the tabler image while mounting the `src` directory as well as the `_config.yml` file into the container.
|
|
||||||
|
|
||||||
Don't forget to expose the port 3000 so you can browse the website locally.
|
|
||||||
You can also expose the port 3001 to have access to BrowserSync
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src -v $(pwd)/_config.yml:/app/_config.yml tabler
|
|
||||||
```
|
|
||||||
|
|
||||||
Now open your browser to [http://localhost:3000](http://localhost:3000). Edit anything in the `src/` folder and watch your browser refresh the page after it has been rebuilt.
|
|
||||||
|
|
||||||
**Docker Compose**
|
|
||||||
|
|
||||||
You can also use the docker compose config from this repo. Use `docker compose build && docker compose up` or `docker compose up --build` to build and start the container. Edit anything in the `src/` folder the same way as with plain docker and access the same URLs and ports in your browser.
|
|
||||||
|
|
||||||
### CDN support
|
### CDN support
|
||||||
|
|
||||||
All files included in `@tabler/core` npm package are available over a CDN.
|
All files included in `@tabler/core` npm package are also available over a CDN.
|
||||||
|
|
||||||
#### Javascript
|
#### Javascript
|
||||||
|
|
||||||
@@ -170,24 +109,84 @@ All files included in `@tabler/core` npm package are available over a CDN.
|
|||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css">
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css">
|
||||||
```
|
```
|
||||||
|
|
||||||
## Feature requests
|
## Building locally
|
||||||
|
|
||||||
https://tabler.canny.io/feature-requests
|
To build a copy of Tabler locally, you have two options. You can either set up your device directly with the development tools required to build Tabler, or if you would prefer not to install all the development dependencies directly onto your device, you can use a Dockerfile that Tabler provides to build a docker image. Instructions follow below.
|
||||||
|
|
||||||
|
### First steps: Downloading the Tabler source files
|
||||||
|
|
||||||
|
With either method, the first thing you'll want to do is download a copy of the Tabler source files to your device.
|
||||||
|
|
||||||
|
#### From the Tabler GitHub releases page
|
||||||
|
|
||||||
|
If you don't want to edit the source code once you've downloaded it, and aren't interested in merging future project updates into your copy, you can just download the source files straight from the [Tabler releases on GitHub](https://github.com/tabler/tabler/releases) and extract the contents to a directory called `tabler`.
|
||||||
|
|
||||||
|
#### Cloning with Git
|
||||||
|
|
||||||
|
If you **do** wish to edit the source code after downloading it, for example to contribute changes back to the Tabler project, you'll want to do this by cloning it with Git:
|
||||||
|
1. If you don't have Git installed on your device, download and install it. You can find instructions at [https://git-scm.com/downloads](https://git-scm.com/downloads).
|
||||||
|
2. (Optional) **Windows users:** you could optionally install Git in the `C:\Program Files\git\bin` directory and run `npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"` to change the default shell.
|
||||||
|
3. Clone the Tabler project into a folder on your device. Instructions can be found at [cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository).
|
||||||
|
|
||||||
|
### Installing and running development tools directly
|
||||||
|
|
||||||
|
1. [Install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
|
||||||
|
2. [Install pnpm](https://pnpm.io/installation) (We recommend either by [Using Corepack](https://pnpm.io/installation#using-corepack) or by [Using npm](https://pnpm.io/installation#using-npm))
|
||||||
|
3. From the root `/tabler` directory where you downloaded the Tabler source files, run installation on the command line:
|
||||||
|
```sh
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
4. Then execute the following to start up the application stack:
|
||||||
|
```sh
|
||||||
|
pnpm run start
|
||||||
|
```
|
||||||
|
5. Open [http://localhost:3000](http://localhost:3000) to view the preview website in your browser, or [http://localhost:3010](http://localhost:3010) to view the documentation website - and voilà.
|
||||||
|
Changes to most of the source files of Tabler core, preview and docs will rebuild the application and refresh the page.
|
||||||
|
|
||||||
|
**Note**:
|
||||||
|
If you wish to perform a one-off build without auto-refresh on any changes, you can run:
|
||||||
|
```sh
|
||||||
|
pnpm run build
|
||||||
|
```
|
||||||
|
You can open [http://localhost:3001](http://localhost:3001) to configure the Web server.
|
||||||
|
|
||||||
|
|
||||||
|
### Installing and running development tools with Docker
|
||||||
|
|
||||||
|
**Plain Docker**
|
||||||
|
|
||||||
|
Here is an example of how to use this image:
|
||||||
|
|
||||||
|
1. From the root `/tabler` directory where you downloaded the Tabler source files, build the tabler image:
|
||||||
|
```sh
|
||||||
|
docker build -t tabler .
|
||||||
|
```
|
||||||
|
2. Run the tabler image. The following command mounts the `src` directory into the container, exposes port 3000 to browse the website locally, and exposes port 3001 to automatically sync changes:
|
||||||
|
```sh
|
||||||
|
docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src tabler
|
||||||
|
```
|
||||||
|
3. Open your browser to [http://localhost:3000](http://localhost:3000). Edit anything in the `src/` folder and watch your browser refresh the page after it has been rebuilt.
|
||||||
|
|
||||||
|
**Docker Compose**
|
||||||
|
|
||||||
|
You can also use the docker compose config from this repo. From the root `/tabler` directory where you downloaded the Tabler source files, use `docker compose build && docker compose up` or `docker compose up --build` to build and start the container. Edit anything in the `src/` folder the same way as with plain docker and access the same URLs and ports in your browser.
|
||||||
|
|
||||||
## Bugs and feature requests
|
## Bugs and feature requests
|
||||||
|
|
||||||
Found a bug or have a feature request? [Please open a new issue](https://github.com/tabler/tabler/issues/new).
|
Found a bug or have a feature request? [Please open a new issue](https://github.com/tabler/tabler/issues/new).
|
||||||
|
|
||||||
|
|
||||||
## 🤓 Creators
|
## 🤓 Creators
|
||||||
|
|
||||||
**Paweł Kuna**
|
**Paweł Kuna**
|
||||||
|
|
||||||
- <https://twitter.com/codecalm>
|
- <https://x.com/codecalm>
|
||||||
- <https://github.com/codecalm>
|
- <https://github.com/codecalm>
|
||||||
- <https://codecalm.net>
|
- <https://codecalm.net>
|
||||||
|
|
||||||
|
**Bartłomiej Gawęda**
|
||||||
|
|
||||||
|
- <https://x.com/B_Gaweda>
|
||||||
|
- <https://github.com/BG-Software-BG>
|
||||||
|
|
||||||
## 👨🚀 Contributors
|
## 👨🚀 Contributors
|
||||||
|
|
||||||
@@ -195,25 +194,11 @@ This project exists thanks to all the people who contribute.
|
|||||||
|
|
||||||
<img src="https://opencollective.com/tabler/contributors.svg?width=890&button=false" />
|
<img src="https://opencollective.com/tabler/contributors.svg?width=890&button=false" />
|
||||||
|
|
||||||
## 🌸 Backers
|
## Social media
|
||||||
|
|
||||||
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/tabler#backer)
|
Stay up to date by joining our community on <a href="https://x.com/tabler_io" >X</a> and <a href="https://www.facebook.com/tabler.io">Facebook</a>
|
||||||
|
|
||||||
<a href="https://opencollective.com/tabler#backers" target="_blank"><img src="https://opencollective.com/tabler/tiers/backer.svg?width=890&button=false" /></a>
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.
|
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.
|
||||||
|
|
||||||
## Contributors ✨
|
|
||||||
|
|
||||||
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
||||||
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
||||||
<!-- prettier-ignore-start -->
|
|
||||||
<!-- markdownlint-disable -->
|
|
||||||
<!-- markdownlint-restore -->
|
|
||||||
<!-- prettier-ignore-end -->
|
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
import { readFileSync, writeFileSync } from 'node:fs';
|
|
||||||
import { join, dirname } from 'node:path';
|
|
||||||
import { fileURLToPath } from 'node:url'
|
|
||||||
import { sync } from 'glob';
|
|
||||||
import beautify from 'js-beautify';
|
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
||||||
|
|
||||||
const docs = sync(join(__dirname, '..', 'docs', '**', '*.mdx'))
|
|
||||||
|
|
||||||
docs.forEach((file, i) => {
|
|
||||||
const oldContent = readFileSync(file, 'utf8')
|
|
||||||
|
|
||||||
// get codeblocks from markdown
|
|
||||||
const content = oldContent.replace(/(```([a-z0-9]+).*?\n)(.*?)(```)/gs, (m, m1, m2, m3, m4) => {
|
|
||||||
if (m2 === 'html') {
|
|
||||||
// m3 = beautify.default.html(m3, {
|
|
||||||
// "indent_size": 2,
|
|
||||||
// "indent_char": " ",
|
|
||||||
// }).trim();
|
|
||||||
|
|
||||||
// remove empty lines
|
|
||||||
m3 = m3.replace(/^\s*[\r\n]/gm, '');
|
|
||||||
|
|
||||||
return m1 + m3 + "\n" + m4;
|
|
||||||
}
|
|
||||||
return m
|
|
||||||
})
|
|
||||||
|
|
||||||
if (content !== oldContent) {
|
|
||||||
writeFileSync(file, content, 'utf8')
|
|
||||||
console.log(`Reformatted ${file}`)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@@ -6,7 +6,7 @@ import { readFileSync, writeFileSync } from 'node:fs';
|
|||||||
import { join, dirname, basename } from 'node:path';
|
import { join, dirname, basename } from 'node:path';
|
||||||
import { fileURLToPath } from 'node:url'
|
import { fileURLToPath } from 'node:url'
|
||||||
import { sync } from 'glob';
|
import { sync } from 'glob';
|
||||||
import banner from '@repo/banner';
|
import banner from '../../shared/banner/index.mjs';
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
107
core/.build/generate-sri.js
Normal file
107
core/.build/generate-sri.js
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
const crypto = require('node:crypto');
|
||||||
|
const fs = require('node:fs');
|
||||||
|
const path = require('node:path');
|
||||||
|
const sh = require('shelljs');
|
||||||
|
|
||||||
|
sh.config.fatal = true
|
||||||
|
|
||||||
|
const configFile = path.join(__dirname, '../../shared/data/sri.json')
|
||||||
|
|
||||||
|
const files = [
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler.min.css',
|
||||||
|
configPropertyName: 'css'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler.rtl.min.css',
|
||||||
|
configPropertyName: 'css-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-flags.min.css',
|
||||||
|
configPropertyName: 'css-flags'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-flags.rtl.min.css',
|
||||||
|
configPropertyName: 'css-flags-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-marketing.min.css',
|
||||||
|
configPropertyName: 'css-marketing'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-marketing.rtl.min.css',
|
||||||
|
configPropertyName: 'css-marketing-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-payments.min.css',
|
||||||
|
configPropertyName: 'css-payments'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-payments.rtl.min.css',
|
||||||
|
configPropertyName: 'css-payments-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-props.min.css',
|
||||||
|
configPropertyName: 'css-props'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-props.rtl.min.css',
|
||||||
|
configPropertyName: 'css-props-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-themes.min.css',
|
||||||
|
configPropertyName: 'css-themes'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-themes.rtl.min.css',
|
||||||
|
configPropertyName: 'css-themes-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-socials.min.css',
|
||||||
|
configPropertyName: 'css-socials'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-socials.rtl.min.css',
|
||||||
|
configPropertyName: 'css-socials-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-vendors.min.css',
|
||||||
|
configPropertyName: 'css-vendors'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/css/tabler-vendors.rtl.min.css',
|
||||||
|
configPropertyName: 'css-vendors-rtl'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/js/tabler.min.js',
|
||||||
|
configPropertyName: 'js'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
file: 'dist/js/tabler-theme.min.js',
|
||||||
|
configPropertyName: 'js-theme'
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// file: 'dist/preview/css/demo.min.css',
|
||||||
|
// configPropertyName: 'demo-css'
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// file: 'dist/preview/js/demo.min.js',
|
||||||
|
// configPropertyName: 'demo-js'
|
||||||
|
// },
|
||||||
|
]
|
||||||
|
|
||||||
|
for (const { file, configPropertyName } of files) {
|
||||||
|
fs.readFile(path.join(__dirname, '..', file), 'utf8', (error, data) => {
|
||||||
|
if (error) {
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
|
||||||
|
const algorithm = 'sha384'
|
||||||
|
const hash = crypto.createHash(algorithm).update(data, 'utf8').digest('base64')
|
||||||
|
const integrity = `${algorithm}-${hash}`
|
||||||
|
|
||||||
|
console.log(`${configPropertyName}: ${integrity}`)
|
||||||
|
|
||||||
|
sh.sed('-i', new RegExp(`^(\\s+"${configPropertyName}":\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile)
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -4,13 +4,13 @@ import { fileURLToPath } from 'node:url'
|
|||||||
import { babel } from '@rollup/plugin-babel'
|
import { babel } from '@rollup/plugin-babel'
|
||||||
import { nodeResolve } from '@rollup/plugin-node-resolve'
|
import { nodeResolve } from '@rollup/plugin-node-resolve'
|
||||||
import replace from '@rollup/plugin-replace'
|
import replace from '@rollup/plugin-replace'
|
||||||
import banner from '@repo/banner'
|
import banner from '../../shared/banner/index.mjs'
|
||||||
|
|
||||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
const ESM = process.env.ESM === 'true'
|
const ESM = process.env.ESM === 'true'
|
||||||
|
const THEME = process.env.THEME === 'true'
|
||||||
|
|
||||||
let destinationFile = `tabler${ESM ? '.esm' : ''}`
|
|
||||||
const external = []
|
const external = []
|
||||||
const plugins = [
|
const plugins = [
|
||||||
babel({
|
babel({
|
||||||
@@ -27,8 +27,9 @@ plugins.push(
|
|||||||
nodeResolve()
|
nodeResolve()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const destinationFile = `tabler${THEME ? '-theme' : ''}${ESM ? '.esm' : ''}`
|
||||||
const rollupConfig = {
|
const rollupConfig = {
|
||||||
input: path.resolve(__dirname, `../js/tabler.${ESM ? 'esm' : 'umd'}.js`),
|
input: path.resolve(__dirname, `../js/tabler${THEME ? '-theme' : ''}.js`),
|
||||||
output: {
|
output: {
|
||||||
banner: banner(),
|
banner: banner(),
|
||||||
file: path.resolve(__dirname, `../dist/js/${destinationFile}.js`),
|
file: path.resolve(__dirname, `../dist/js/${destinationFile}.js`),
|
||||||
@@ -40,7 +41,7 @@ const rollupConfig = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!ESM) {
|
if (!ESM) {
|
||||||
rollupConfig.output.name = 'tabler'
|
rollupConfig.output.name = `tabler${THEME ? '-theme' : ''}`
|
||||||
}
|
}
|
||||||
|
|
||||||
export default rollupConfig
|
export default rollupConfig
|
||||||
@@ -1,126 +1,182 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 1.0.0 - 2025-01-28
|
## `1.2.0` - 2025-04-16
|
||||||
|
|
||||||
### Minor Changes
|
- Add gradient background utilities
|
||||||
|
- Add new apps card with brand icons in navbar
|
||||||
|
- Replaced TinyMCE with HugeRTE to address license violation
|
||||||
|
- Update Bootstrap to version 5.3.5
|
||||||
|
- Add theme settings wizard
|
||||||
|
- Add steps light colors
|
||||||
|
- Add Turbo library integration
|
||||||
|
- Rollback accordion component structure
|
||||||
|
- Add space between page numbers in pagination
|
||||||
|
- Add Bootstrap components to Tabler JS
|
||||||
|
- Fix tooltip colors in vector maps
|
||||||
|
- Update avatar size variable to support list size configuration
|
||||||
|
- Fix broken shape in South Korea flag
|
||||||
|
- Refactor `border-radius` in components to use CSS variables
|
||||||
|
- Update disabled color variables in navbars
|
||||||
|
- Apply border radius to `tom-select` on focus
|
||||||
|
- Add avatars page with various demos of avatars
|
||||||
|
- Minor spelling and grammar improvements to emails docs
|
||||||
|
- Update avatar size variable to support list size configuration
|
||||||
|
- Refactor SCSS for alerts and close button styles
|
||||||
|
- Fix `autosize` and `input mask` plugins to use window scope
|
||||||
|
- Fix scrollbar color mixin to use body color variable
|
||||||
|
- Improve README
|
||||||
|
- Make scrollbar track transparent
|
||||||
|
- Fix scrollbar jumps when content is higher than screen
|
||||||
|
- Add responsive font size for form controls on mobile devices
|
||||||
|
- Add new advanced table example
|
||||||
|
|
||||||
- c276a8b: Add new `Tag` component
|
## `1.1.1` - 2025-03-01
|
||||||
- d380224: Add customizable Star Ratings component using `star-rating.js` library
|
|
||||||
- 47cd6c1: Add `flags.html` page with list of all flags
|
|
||||||
- be67ab6: Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
|
|
||||||
- 080c746: Adding `alerts.html` page with example of alerts.
|
|
||||||
- b381273: Change primary color value to new Tabler branding
|
|
||||||
- 75619dd: Unify dark mode with latest Bootstrap API and improve dark mode elements
|
|
||||||
- cc82dbf: New Chat component
|
|
||||||
- 5a03643: Adjusting form element sizes for enhanced mobile devices compatibility
|
|
||||||
- be14607: Add new color picker component using `coloris.js` library
|
|
||||||
- d046570: Update Tabler Icons to version 2.23 with 18 new icons added
|
|
||||||
- 5488c50: New page with payment providers: `payment-providers.html`
|
|
||||||
- 5488c50: Add support for new payment providers: 2c2p, Adyen, Affirm, Alipay Plus, Allegro Pay, Amazon Pay, Apple Pay, Autopay, Binance USD, Bkash, Cash App, Chime, EasyPaisa, Ethereum, Google Pay, HubSpot, iDeal, Litecoin, Mercado Pago,
|
|
||||||
MetaMask, MoneyGram, OpenSea, Payconiq, Payka, Payline, PayPo, Paysafe, Poli, Revolut Pay, Samsung Pay, Shop Pay, Solana, Spingo, Stax, Tether, True USD, Venmo, WeChat Pay, Wise, Zelle
|
|
||||||
|
|
||||||
### Patch Changes
|
- Fix Documentation structure
|
||||||
|
|
||||||
- 293d0a4: Change Twitter to X brand
|
## `1.1.0` - 2025-03-01
|
||||||
- fd0935a: Updated link to icons documentation
|
|
||||||
- 1cf27dc: Dependencies update
|
- Add Playwright configuration and visual regression tests
|
||||||
- 041f4e4: Order menu items alphabetically
|
- Enable `scrollSpy` in `countup` module
|
||||||
- 20cad01: Automatically retrieve and display the changelog from the CHANGELOG.md file.
|
- Refactor SCSS files to replace divide function with calc
|
||||||
- 34f3efc: Initialize Visual Studio Code config
|
- Add Segmented Control component
|
||||||
- 7ba7717: Make horizontal rule direction aware
|
- Add new text features page with mentions: user, color and app.
|
||||||
- 063ef58: Update Tabler Illustrations to v1.5
|
- Add Scroll Spy page
|
||||||
- 5e2c975: Update Tabler Icons to v3.29.0
|
- Update border radius variables for consistency across components
|
||||||
- 9d5f7ca: Remove unused dependencies from `package.json`
|
- Add Signature Pad feature and signatures page
|
||||||
- be69fd6: Replace Jekyll with Eleventy
|
- Update color utility classes and replace background colors in pricing table
|
||||||
- 2f5fad6: Dependencies update
|
- Refactored the project into a monorepo, removed Gulp, and introduced a new, more efficient build process.
|
||||||
- dfd7c88: Update TinyMCE to v7.0
|
- Add documentation for segmented control component
|
||||||
- 056df18: Fix text color in dark version of navbar
|
- Add new payment provider (Troy)
|
||||||
- 17327dc: Remove invalid `z-index` setting for dropdowns
|
- Add selectable table functionality with active background color
|
||||||
- 4ff077a: Update Tabler Icons to version 2.21 with 18 new icons added
|
- Refactor badge styles, remove Bootstrap styles
|
||||||
- 867c8dd: Update Tabler Emails to v2.0
|
- Refactor alert component styles and markup, remove Bootstrap styles
|
||||||
- d8605f2: Init changelog script
|
- Refactor accordion component styles and markup, remove Bootstrap styles
|
||||||
- 89c6234: Adding Two-Step Verification Pages
|
- Fix overflow of `label` in a `floating-input`
|
||||||
- f6e885b: Replace `.page-center` with `.my-auto` in single page layouts
|
- Fix size of `apexcharts` tooltip marker
|
||||||
- 7aa216f: Add border-opacity variable for improved color utility
|
- Fix apexcharts heatmap example in docs
|
||||||
- 88eb413: Fix icon display issues in the Star Ratings component
|
- Fix negative margins in `.navbar-bordered` variant
|
||||||
- 78392b6: Fix `color` of disabled `dropdown-item` in Navbar component
|
- Use the full license agreement for illustrations in docs
|
||||||
- 4deb8f4: Bump pnpm/action-setup from 2 to 3
|
- Fix vertical alignment in single page and error layouts
|
||||||
- 9015472: Add social icons plugin
|
- Fix `.avatar-upload` double borders
|
||||||
- 7fe30a1: `Dockerfile` fix
|
- Fixes navbar styles with new hover effects and color variables
|
||||||
- e53942f: Update Jekyll to version 4.3.4
|
|
||||||
- 72f868b: Update Tabler Icons to version 2.20 with 37 new icons added
|
## `1.0.0` - 2025-01-28
|
||||||
- e0443c0: Add Tabler Illustrations
|
|
||||||
- 5cca710: Update illustrations and enhance SVG handling in HTML
|
- Add new `Tag` component
|
||||||
- 3a4f10f: Fix ids of custom size star ratings
|
- Add customizable Star Ratings component using `star-rating.js` library
|
||||||
- 7896562: Unify size of avatar, flag and payment components
|
- Add `flags.html` page with list of all flags
|
||||||
- 1587905: Update icons to v2.42.0
|
- Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
|
||||||
- d9e00b2: Update Bootstrap to v5.3.0
|
- Adding `alerts.html` page with example of alerts.
|
||||||
- bc1d1a3: Set `font-size` of an `i` element with `icon` class in a `button` element
|
- Change primary color value to new Tabler branding
|
||||||
- 0195f9b: Dependencies update
|
- Unify dark mode with latest Bootstrap API and improve dark mode elements
|
||||||
- a5bf5d3: Fix icons in `form-elements.html`
|
- New Chat component
|
||||||
- 736410c: Update Tabler Icons to v3.28.1
|
- Adjusting form element sizes for enhanced mobile devices compatibility
|
||||||
- 3f516ea: Fix `rgba` color values in `_variables.scss`
|
- Add new color picker component using `coloris.js` library
|
||||||
- e91884e: Fix description of alerts with a description
|
- Update Tabler Icons to version 2.23 with 18 new icons added
|
||||||
- 90cc744: Fix colors of disabled `.ts-control`
|
- New page with payment providers: `payment-providers.html`
|
||||||
- 1801e41: Center content on error and single page layouts
|
- Add support for new payment providers: 2c2p, Adyen, Affirm, Alipay Plus, Allegro Pay, Amazon Pay, Apple Pay, Autopay, Binance USD, Bkash, Cash App, Chime, EasyPaisa, Ethereum, Google Pay, HubSpot, iDeal, Litecoin, Mercado Pago, MetaMask, MoneyGram, OpenSea, Payconiq, Payka, Payline, PayPo, Paysafe, Poli,
|
||||||
- 45c83ac: Resolve map page issues
|
Revolut Pay, Samsung Pay, Shop Pay, Solana, Spingo, Stax, Tether, True USD, Venmo, WeChat Pay, Wise, Zelle
|
||||||
- faee63c: Improve base font family loading
|
- Change Twitter to X brand
|
||||||
- 5e7e0dd: Introduce Docker Compose Config to build and run Ttabler locally
|
- Updated link to icons documentation
|
||||||
- c293a66: Fix `@charset` CSS declaration in bundle.
|
- Dependencies update
|
||||||
- cb4a681: Update `_navbar.scss` with disabled dropdown menu items color
|
- Order menu items alphabetically
|
||||||
- af41fb3: Update Tabler Icons to v3.17.0
|
- Automatically retrieve and display the changelog from the CHANGELOG.md file.
|
||||||
- 6cbe888: Update `@tabler/icons` to v3.0
|
- Initialize Visual Studio Code config
|
||||||
- 0e4bf5f: Refactor data structure by converting YAML files to JSON
|
- Make horizontal rule direction aware
|
||||||
- 82cf257: Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons
|
- Update Tabler Illustrations to v1.5
|
||||||
- 4b4b4f6: Adding punctuation to `SECURITY.md`
|
- Update Tabler Icons to v3.29.0
|
||||||
- a0a2d52: Fix form controls bugs in dark mode
|
- Remove unused dependencies from `package.json`
|
||||||
- f45b697: Fix padding in code blocks
|
- Replace Jekyll with Eleventy
|
||||||
- 4de166d: Unified Box Shadows with Bootstrap Compatibility
|
- Dependencies update
|
||||||
- 87bf2f5: Remove duplicated setting of color in `th` element
|
- Update TinyMCE to v7.0
|
||||||
- 5dc45aa: Fix layout of search results for small and medium screens
|
- Fix text color in dark version of navbar
|
||||||
- 4ae0358: Remove `text-decoration` on hovering `a` element with class having `icon` class
|
- Remove invalid `z-index` setting for dropdowns
|
||||||
- e798eb6: Fix small typo in tables docs
|
- Update Tabler Icons to version 2.21 with 18 new icons added
|
||||||
- 1c1d0c9: Improve documentation for alerts
|
- Update Tabler Emails to v2.0
|
||||||
- 371ef84: Bump `pnpm/action-setup` from 3 to 4
|
- Init changelog script
|
||||||
- 8421fc2: Update dependencies
|
- Adding Two-Step Verification Pages
|
||||||
- 0625f5f: Update Tabler Icons to version 2.22 with 18 new icons added
|
- Replace `.page-center` with `.my-auto` in single page layouts
|
||||||
- ba65fc3: Update devDependencies
|
- Add border-opacity variable for improved color utility
|
||||||
- a43ded4: Add All Contributions package to project for easy contribution tracking
|
- Fix icon display issues in the Star Ratings component
|
||||||
- 2f622c9: Set value of `$font-family-monospace` as default
|
- Fix `color` of disabled `dropdown-item` in Navbar component
|
||||||
- 2c7c448: Refactor Dockerfile and package.json
|
- Bump pnpm/action-setup from 2 to 3
|
||||||
- 5ec7f05: Resolved light dropdown issue on dark theme
|
- Add social icons plugin
|
||||||
- b0b07b9: Enhance documentation
|
- `Dockerfile` fix
|
||||||
- 0f129b1: Update Tabler Icons to version 2.19 with 18 new icons added
|
- Update Jekyll to version 4.3.4
|
||||||
- 507df7b: Fix cells with inline icons
|
- Update Tabler Icons to version 2.20 with 37 new icons added
|
||||||
- 0e5b44a: Fix `color` of disabled `nav-link` in `nav-bordered`
|
- Add Tabler Illustrations
|
||||||
- 65c1300: Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
|
- Update illustrations and enhance SVG handling in HTML
|
||||||
- 8552a46: Switch from `npm` to `pnpm` for faster package installation
|
- Fix ids of custom size star ratings
|
||||||
- 4a9e40d: Increase contrast of active `dropdown-item` in vertical layout
|
- Unify size of avatar, flag and payment components
|
||||||
- 17ebdf4: Update documentation for Tabler components
|
- Update icons to v2.42.0
|
||||||
- 4c88481: Add variable to configure `avatar-list` spacing
|
- Update Bootstrap to v5.3.0
|
||||||
- df46ee7: Do not display empty `fieldset` element
|
- Set `font-size` of an `i` element with `icon` class in a `button` element
|
||||||
- 875cafa: Refactor SCSS variables to use `color.adjust` for improved color manipulation
|
- Dependencies update
|
||||||
- eb28546: Add Tabler Illustrations
|
- Fix icons in `form-elements.html`
|
||||||
- 650d84c: Update required Node.js version to 18 and add `.nvmrc` file
|
- Update Tabler Icons to v3.28.1
|
||||||
- fb659d4: Fix table default background color
|
- Fix `rgba` color values in `_variables.scss`
|
||||||
- f77c712: Avoid SCSS color dependency on `:focus`
|
- Fix description of alerts with a description
|
||||||
- 71c68ce: Update changelog configuration and release scripts
|
- Fix colors of disabled `.ts-control`
|
||||||
- 34d124d: Update Tabler Icons to v3.26.0
|
- Center content on error and single page layouts
|
||||||
- 4cd9215: Updated Tabler Icons to v3.24.0
|
- Resolve map page issues
|
||||||
- 7bb947b: Update Tabler Icons to version 2.18 with 18 new icons added
|
- Improve base font family loading
|
||||||
- c75cf55: Update Node.js engine requirement to allow versions >=20
|
- Introduce Docker Compose Config to build and run Ttabler locally
|
||||||
- 1c34e8e: Update Tabler Icons to v3.14.0
|
- Fix `@charset` CSS declaration in bundle.
|
||||||
- 289dd3b: Add Prettier to project for consistent code formatting
|
- Update `_navbar.scss` with disabled dropdown menu items color
|
||||||
- f83e36c: Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.
|
- Update Tabler Icons to v3.17.0
|
||||||
- b885852: Update Tabler Icons to version 2.25 with 48 new icons added
|
- Update `@tabler/icons` to v3.0
|
||||||
- 53a5117: Fix responsiveness issue in Settings menu
|
- Refactor data structure by converting YAML files to JSON
|
||||||
- 38504e5: Added 3 new payments from Nepal: Esewa, FonePay, Khalti and Imepay
|
- Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons
|
||||||
- 35ee14d: Add new Filled section to Icons page
|
- Adding punctuation to `SECURITY.md`
|
||||||
- d32f242: Update `bootstrap` to v5.3.1
|
- Fix form controls bugs in dark mode
|
||||||
- d82f94e: Update package dependencies to latest versions
|
- Fix padding in code blocks
|
||||||
- 54c5ad0: Fix link to webfont version of Tabler Icons
|
- Unified Box Shadows with Bootstrap Compatibility
|
||||||
- 94b83d4: Add support for changeset tool for more efficient and organized code changes
|
- Remove duplicated setting of color in `th` element
|
||||||
- c51ff28: Fix colors in date range datepicker
|
- Fix layout of search results for small and medium screens
|
||||||
|
- Remove `text-decoration` on hovering `a` element with class having `icon` class
|
||||||
|
- Fix small typo in tables docs
|
||||||
|
- Improve documentation for alerts
|
||||||
|
- Bump `pnpm/action-setup` from 3 to 4
|
||||||
|
- Update dependencies
|
||||||
|
- Update Tabler Icons to version 2.22 with 18 new icons added
|
||||||
|
- Update devDependencies
|
||||||
|
- Add All Contributions package to project for easy contribution tracking
|
||||||
|
- Set value of `$font-family-monospace` as default
|
||||||
|
- Refactor Dockerfile and package.json
|
||||||
|
- Resolved light dropdown issue on dark theme
|
||||||
|
- Enhance documentation
|
||||||
|
- Update Tabler Icons to version 2.19 with 18 new icons added
|
||||||
|
- Fix cells with inline icons
|
||||||
|
- Fix `color` of disabled `nav-link` in `nav-bordered`
|
||||||
|
- Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
|
||||||
|
- Switch from `npm` to `pnpm` for faster package installation
|
||||||
|
- Increase contrast of active `dropdown-item` in vertical layout
|
||||||
|
- Update documentation for Tabler components
|
||||||
|
- Add variable to configure `avatar-list` spacing
|
||||||
|
- Do not display empty `fieldset` element
|
||||||
|
- Refactor SCSS variables to use `color.adjust` for improved color manipulation
|
||||||
|
- Add Tabler Illustrations
|
||||||
|
- Update required Node.js version to 18 and add `.nvmrc` file
|
||||||
|
- Fix table default background color
|
||||||
|
- Avoid SCSS color dependency on `:focus`
|
||||||
|
- Update changelog configuration and release scripts
|
||||||
|
- Update Tabler Icons to v3.26.0
|
||||||
|
- Updated Tabler Icons to v3.24.0
|
||||||
|
- Update Tabler Icons to version 2.18 with 18 new icons added
|
||||||
|
- Update Node.js engine requirement to allow versions >=20
|
||||||
|
- Update Tabler Icons to v3.14.0
|
||||||
|
- Add Prettier to project for consistent code formatting
|
||||||
|
- Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.
|
||||||
|
- Update Tabler Icons to version 2.25 with 48 new icons added
|
||||||
|
- Fix responsiveness issue in Settings menu
|
||||||
|
- Added 3 new payments from Nepal: Esewa, FonePay, Khalti and Imepay
|
||||||
|
- Add new Filled section to Icons page
|
||||||
|
- Update `bootstrap` to v5.3.1
|
||||||
|
- Update package dependencies to latest versions
|
||||||
|
- Fix link to webfont version of Tabler Icons
|
||||||
|
- Add support for changeset tool for more efficient and organized code changes
|
||||||
|
- Fix colors in date range datepicker
|
||||||
|
|
||||||
## `1.0.0-beta24` - 2025-01-11
|
## `1.0.0-beta24` - 2025-01-11
|
||||||
|
|
||||||
@@ -1 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="15" fill="none"><g mask="url(#KR_-_Korea_(South)__a)"><path fill="#F7FCFF" fill-rule="evenodd" d="M0 0v15h20V0H0z" clip-rule="evenodd"/><g mask="url(#KR_-_Korea_(South)__b)"><path fill="#3D58DB" fill-rule="evenodd" d="M10 11.387c2.002 0 3.624-1.723 3.624-3.849 0-2.126-1.622-3.849-3.624-3.849s-3.624 1.723-3.624 3.85c0 2.125 1.622 3.848 3.624 3.848z" clip-rule="evenodd"/><g mask="url(#KR_-_Korea_(South)__c)"><path fill="#E31D1C" fill-rule="evenodd" d="M13.751 7.833s-.203-1.815-1.71-1.914c-1.507-.098-1.913 1.331-2 1.71-.087.379-.307 1.39-1.893 1.39s-1.73-2.57-1.73-2.57V3.42h7.333v4.414z" clip-rule="evenodd"/></g><path fill="#272727" fill-rule="evenodd" d="m4.562 1.283.572.517-2.65 3.095-.572-.517 2.65-3.095zm.943.837.572.517-2.555 3.05-.572-.517 2.555-3.05zm1.51 1.364-.571-.517L3.882 6.04l.572.517 2.562-3.073zm8.837-2.418-.572.515.993 1.164.572-.515-.993-1.164zm1.764 2.141-.572.516.992 1.164.572-.515-.992-1.165zm-4.223.051.571-.515.993 1.164-.572.515-.992-1.164zm2.335 1.626-.572.516.992 1.164.572-.515-.992-1.165zm-1.356-2.49.572-.515 2.762 3.363-.572.516-2.762-3.364zm1.912 6.508-.576-.517-1.001 1.168.577.518 1-1.17zm-1.682 2.057-.577-.517-1 1.168.577.518 1-1.17zm2.927-.938.577.517-1 1.169-.578-.518 1.001-1.168zm-1.023 2.621-.577-.517-1 1.169.576.517 1.001-1.169zm-1.527-1.406.577.518-1.044 1.248-.577-.518 1.044-1.248zm2.29-1.562-.576-.517-1.045 1.248.577.517 1.044-1.248zM4.004 9.306l.572-.516 2.553 2.926-.572.515-2.553-2.925zm.596 2.559.572-.516 1.078 1.185-.572.515L4.6 11.865zm-1.907-1.433-.572.516 2.567 2.964.572-.516-2.567-2.964zm.407-.337.572-.516.935 1.096-.572.516-.935-1.096z" clip-rule="evenodd"/></g></g></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="15" fill="none"><path d="M0,0V15H20V0Z" fill="#f7fcff" fill-rule="evenodd"/><path d="M13.74,7.58a3.66,3.66,0,1,1-3.66-3.7A3.67,3.67,0,0,1,13.74,7.58Z" fill="#e31d1c" fill-rule="evenodd"/><path d="M6.47,6.93c.12.93.29,2,1.72,2.08a1.82,1.82,0,0,0,1.94-1.6,1.81,1.81,0,0,1,2.86-1,1.71,1.71,0,0,1,.74,1.35,3.64,3.64,0,0,1-1.84,3.08,3.73,3.73,0,0,1-4.16-.34A3.84,3.84,0,0,1,6.47,6.93Z" fill="#3d58db" fill-rule="evenodd"/><path d="M4.56,1.28l.57.52L2.48,4.89l-.57-.51Zm.94.84.58.52L3.52,5.69,3,5.17ZM7,3.48,6.44,3,3.88,6l.57.52L7,3.48Zm8.84-2.41-.57.51,1,1.16.57-.51Zm1.77,2.14L17,3.72l1,1.17.57-.52Zm-4.23,0L14,2.74l1,1.17-.57.51Zm2.34,1.62-.57.52,1,1.16.57-.51ZM14.37,2.39l.57-.51,2.77,3.36-.58.52ZM16.28,8.9l-.57-.52-1,1.17.57.52,1-1.17ZM14.6,11,14,10.44l-1,1.17.57.52,1-1.17ZM17.53,10l.58.52-1,1.17-.58-.52Zm-1,2.62-.58-.52-1,1.17.57.52ZM15,11.24l.58.51L14.51,13l-.58-.52Zm2.29-1.57-.58-.51-1,1.24.57.52ZM4,9.31l.58-.52,2.55,2.93-.57.51Zm.6,2.55.57-.51,1.08,1.18-.57.52ZM2.69,10.43,2.12,11l2.57,3,.57-.51Zm.41-.33.57-.52.94,1.1L4,11.19Z" fill="#272727" fill-rule="evenodd"/></svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.1 KiB |
1
core/img/payments/troy-dark.svg
Normal file
1
core/img/payments/troy-dark.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 5.4 KiB |
1
core/img/payments/troy.svg
Normal file
1
core/img/payments/troy.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 5.4 KiB |
@@ -1,10 +1,7 @@
|
|||||||
// Autosize plugin
|
// Autosize plugin
|
||||||
|
|
||||||
import autosize from 'autosize';
|
|
||||||
|
|
||||||
const elements = document.querySelectorAll('[data-bs-toggle="autosize"]');
|
const elements = document.querySelectorAll('[data-bs-toggle="autosize"]');
|
||||||
if (elements.length) {
|
if (elements.length) {
|
||||||
elements.forEach(function (element) {
|
elements.forEach(function (element) {
|
||||||
autosize && autosize(element);
|
window.autosize && window.autosize(element);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -5,15 +5,19 @@ if (elements.length) {
|
|||||||
let options = {};
|
let options = {};
|
||||||
try {
|
try {
|
||||||
const dataOptions = element.getAttribute('data-countup') ? JSON.parse(element.getAttribute('data-countup')) : {};
|
const dataOptions = element.getAttribute('data-countup') ? JSON.parse(element.getAttribute('data-countup')) : {};
|
||||||
options = Object.assign({'enableScrollSpy': true}, dataOptions);
|
options = Object.assign({
|
||||||
|
'enableScrollSpy': true
|
||||||
|
}, dataOptions);
|
||||||
|
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
|
|
||||||
const value = parseInt(element.innerHTML, 10);
|
const value = parseInt(element.innerHTML, 10);
|
||||||
|
|
||||||
const countUp = new window.countUp.CountUp(element, value, options);
|
if (window.countUp && window.countUp.CountUp) {
|
||||||
if (!countUp.error) {
|
const countUp = new window.countUp.CountUp(element, value, options);
|
||||||
countUp.start();
|
if (!countUp.error) {
|
||||||
|
countUp.start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
// Input mask plugin
|
// Input mask plugin
|
||||||
|
|
||||||
import IMask from 'imask';
|
|
||||||
|
|
||||||
var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]'));
|
var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]'));
|
||||||
maskElementList.map(function (maskEl) {
|
maskElementList.map(function (maskEl) {
|
||||||
IMask && new IMask(maskEl, {
|
window.IMask && new window.IMask(maskEl, {
|
||||||
mask: maskEl.dataset.mask,
|
mask: maskEl.dataset.mask,
|
||||||
lazy: maskEl.dataset['mask-visible'] === 'true'
|
lazy: maskEl.dataset['mask-visible'] === 'true'
|
||||||
})
|
})
|
||||||
|
|||||||
35
core/js/tabler-theme.js
Normal file
35
core/js/tabler-theme.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* demo-theme is specifically loaded right after the body and not deferred
|
||||||
|
* to ensure we switch to the chosen dark/light theme as fast as possible.
|
||||||
|
* This will prevent any flashes of the light theme (default) before switching.
|
||||||
|
*/
|
||||||
|
const themeConfig = {
|
||||||
|
"theme": "light",
|
||||||
|
"theme-base": "gray",
|
||||||
|
"theme-font": "sans-serif",
|
||||||
|
"theme-primary": "blue",
|
||||||
|
"theme-radius": "1",
|
||||||
|
}
|
||||||
|
|
||||||
|
const params = new Proxy(new URLSearchParams(window.location.search), {
|
||||||
|
get: (searchParams, prop) => searchParams.get(prop),
|
||||||
|
})
|
||||||
|
|
||||||
|
for (const key in themeConfig) {
|
||||||
|
const param = params[key]
|
||||||
|
let selectedValue
|
||||||
|
|
||||||
|
if (!!param) {
|
||||||
|
localStorage.setItem('tabler-' + key, param)
|
||||||
|
selectedValue = param
|
||||||
|
} else {
|
||||||
|
const storedTheme = localStorage.getItem('tabler-' + key)
|
||||||
|
selectedValue = storedTheme ? storedTheme : themeConfig[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedValue !== themeConfig[key]) {
|
||||||
|
document.documentElement.setAttribute('data-bs-' + key, selectedValue)
|
||||||
|
} else {
|
||||||
|
document.documentElement.removeAttribute('data-bs-' + key)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,23 @@ import "./src/dropdown"
|
|||||||
import "./src/tooltip"
|
import "./src/tooltip"
|
||||||
import "./src/popover"
|
import "./src/popover"
|
||||||
import "./src/switch-icon"
|
import "./src/switch-icon"
|
||||||
|
import "./src/tab"
|
||||||
import "./src/toast"
|
import "./src/toast"
|
||||||
|
|
||||||
export * as bootstrap from "bootstrap"
|
export * as bootstrap from "bootstrap"
|
||||||
export * as tabler from "./src/tabler"
|
export * as tabler from "./src/tabler"
|
||||||
|
|
||||||
|
export {
|
||||||
|
Alert,
|
||||||
|
Modal,
|
||||||
|
Toast,
|
||||||
|
Tooltip,
|
||||||
|
Tab,
|
||||||
|
Button,
|
||||||
|
Carousel,
|
||||||
|
Collapse,
|
||||||
|
Dropdown,
|
||||||
|
Popover,
|
||||||
|
ScrollSpy,
|
||||||
|
Offcanvas
|
||||||
|
} from 'bootstrap'
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
import "./src/autosize"
|
|
||||||
import "./src/countup"
|
|
||||||
import "./src/input-mask"
|
|
||||||
import "./src/dropdown"
|
|
||||||
import "./src/tooltip"
|
|
||||||
import "./src/popover"
|
|
||||||
import "./src/switch-icon"
|
|
||||||
import "./src/tab"
|
|
||||||
import "./src/toast"
|
|
||||||
|
|
||||||
import * as bootstrap from "bootstrap"
|
|
||||||
import * as tabler from "./src/tabler"
|
|
||||||
|
|
||||||
globalThis.bootstrap = bootstrap
|
|
||||||
globalThis.tabler = tabler
|
|
||||||
@@ -1,33 +1,38 @@
|
|||||||
{
|
{
|
||||||
"name": "@tabler/core",
|
"name": "@tabler/core",
|
||||||
"version": "1.0.0",
|
"version": "1.2.0",
|
||||||
"description": "Premium and Open Source dashboard template with responsive and high quality UI.",
|
"description": "Premium and Open Source dashboard template with responsive and high quality UI.",
|
||||||
"homepage": "https://tabler.io",
|
"homepage": "https://tabler.io",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "pnpm run watch",
|
"dev": "pnpm run watch",
|
||||||
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy",
|
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
|
||||||
"clean": "rimraf dist/* demo",
|
"clean": "shx rm -rf dist demo",
|
||||||
"css": "pnpm run css-compile && pnpm run css-prefix && pnpm run css-rtl && pnpm run css-minify && pnpm run css-banner",
|
"css": "pnpm run css-compile && pnpm run css-prefix && pnpm run css-rtl && pnpm run css-minify && pnpm run css-banner",
|
||||||
"css-compile": "sass scss/:dist/css/ --no-source-map --load-path=node_modules",
|
"css-compile": "sass scss/:dist/css/ --no-source-map --load-path=node_modules",
|
||||||
"css-banner": "node build/add-banner.mjs",
|
"css-banner": "node .build/add-banner.mjs",
|
||||||
"css-prefix": "postcss --config build/postcss.config.mjs --replace 'dist/css/*.css' '!dist/css/*.rtl*.css' '!dist/css/*.min.css'",
|
"css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
|
||||||
"css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.mjs --dir 'dist/css' --ext '.rtl.css' 'dist/css/*.css' '!dist/css/*.min.css' '!dist/css/*.rtl.css'",
|
"css-rtl": "cross-env NODE_ENV=RTL postcss --config .build/postcss.config.mjs --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
|
||||||
"css-minify": "pnpm run css-minify-main && pnpm run css-minify-rtl",
|
"css-minify": "pnpm run css-minify-main && pnpm run css-minify-rtl",
|
||||||
"css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix '.min' 'dist/css/*.css' '!dist/css/*.min.css' '!dist/css/*rtl*.css'",
|
"css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*rtl*.css\"",
|
||||||
"css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix '.min' 'dist/css/*rtl.css' '!dist/css/*.min.css'",
|
"css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*rtl.css\" \"!dist/css/*.min.css\"",
|
||||||
"js": "pnpm run js-compile && pnpm run js-minify",
|
"js": "pnpm run js-compile && pnpm run js-minify",
|
||||||
"js-compile": "pnpm run js-compile-standalone && pnpm run js-compile-standalone-esm",
|
"js-compile": "pnpm run js-compile-standalone && pnpm run js-compile-standalone-esm && pnpm run js-compile-theme && pnpm run js-compile-theme-esm",
|
||||||
"js-compile-standalone": "rollup --config build/rollup.config.mjs --sourcemap",
|
"js-compile-theme-esm": "rollup --environment THEME:true --environment ESM:true --config .build/rollup.config.mjs --sourcemap",
|
||||||
"js-compile-standalone-esm": "rollup --environment ESM:true --config build/rollup.config.mjs --sourcemap",
|
"js-compile-theme": "rollup --environment THEME:true --config .build/rollup.config.mjs --sourcemap",
|
||||||
"js-minify": "pnpm run js-minify-standalone && pnpm run js-minify-standalone-esm",
|
"js-compile-standalone": "rollup --config .build/rollup.config.mjs --sourcemap",
|
||||||
"js-minify-standalone": "terser --compress passes=2 --mangle --comments '/^!/' --source-map 'content=dist/js/tabler.js.map,includeSources,url=tabler.min.js.map' --output dist/js/tabler.min.js dist/js/tabler.js",
|
"js-compile-standalone-esm": "rollup --environment ESM:true --config .build/rollup.config.mjs --sourcemap",
|
||||||
"js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments '/^!/' --source-map 'content=dist/js/tabler.esm.js.map,includeSources,url=tabler.esm.min.js.map' --output dist/js/tabler.esm.min.js dist/js/tabler.esm.js",
|
"js-minify": "pnpm run js-minify-standalone && pnpm run js-minify-standalone-esm && pnpm run js-minify-theme && pnpm run js-minify-theme-esm",
|
||||||
|
"js-minify-standalone": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler.js.map,includeSources,url=tabler.min.js.map\" --output dist/js/tabler.min.js dist/js/tabler.js",
|
||||||
|
"js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler.esm.js.map,includeSources,url=tabler.esm.min.js.map\" --output dist/js/tabler.esm.min.js dist/js/tabler.esm.js",
|
||||||
|
"js-minify-theme": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.js.map,includeSources,url=tabler-theme.min.js.map\" --output dist/js/tabler-theme.min.js dist/js/tabler-theme.js",
|
||||||
|
"js-minify-theme-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.esm.js.map,includeSources,url=tabler-theme.esm.min.js.map\" --output dist/js/tabler-theme.esm.min.js dist/js/tabler-theme.esm.js",
|
||||||
"copy": "pnpm run copy-img",
|
"copy": "pnpm run copy-img",
|
||||||
"copy-img": "cp -r img dist/img",
|
"copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
|
||||||
"watch": "pnpm run watch-css & pnpm run watch-js",
|
"watch": "concurrently \"pnpm run watch-css\" \"pnpm run watch-js\"",
|
||||||
"watch-css": "nodemon --watch scss/ --ext scss --exec 'pnpm run css-compile && pnpm run css-prefix'",
|
"watch-css": "nodemon --watch scss/ --ext scss --exec \"pnpm run css-compile && pnpm run css-prefix\"",
|
||||||
"watch-js": "nodemon --watch js/ --ext js --exec 'pnpm run js-compile'",
|
"watch-js": "nodemon --watch js/ --ext js --exec \"pnpm run js-compile\"",
|
||||||
"bundlewatch": "bundlewatch",
|
"bundlewatch": "bundlewatch",
|
||||||
|
"generate-sri": "node .build/generate-sri.js",
|
||||||
"format:check": "prettier --check src/**/*.{js,scss} --cache",
|
"format:check": "prettier --check src/**/*.{js,scss} --cache",
|
||||||
"format:write": "prettier --write src/**/*.{js,scss} --cache"
|
"format:write": "prettier --write src/**/*.{js,scss} --cache"
|
||||||
},
|
},
|
||||||
@@ -89,7 +94,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./dist/css/tabler-flags.css",
|
"path": "./dist/css/tabler-flags.css",
|
||||||
"maxSize": "2 kB"
|
"maxSize": "2.5 kB"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./dist/css/tabler-flags.min.css",
|
"path": "./dist/css/tabler-flags.min.css",
|
||||||
@@ -97,7 +102,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./dist/css/tabler-payments.css",
|
"path": "./dist/css/tabler-payments.css",
|
||||||
"maxSize": "2 kB"
|
"maxSize": "2.2 kB"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./dist/css/tabler-payments.min.css",
|
"path": "./dist/css/tabler-payments.min.css",
|
||||||
@@ -139,10 +144,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"bootstrap": "5.3.3"
|
"bootstrap": "5.3.5"
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@repo/banner": "workspace:*"
|
|
||||||
},
|
},
|
||||||
"directories": {
|
"directories": {
|
||||||
"doc": "docs"
|
"doc": "docs"
|
||||||
|
|||||||
@@ -14,14 +14,10 @@
|
|||||||
@import "bootstrap/scss/nav";
|
@import "bootstrap/scss/nav";
|
||||||
@import "bootstrap/scss/navbar";
|
@import "bootstrap/scss/navbar";
|
||||||
@import "bootstrap/scss/card";
|
@import "bootstrap/scss/card";
|
||||||
@import "bootstrap/scss/accordion";
|
|
||||||
@import "bootstrap/scss/breadcrumb";
|
@import "bootstrap/scss/breadcrumb";
|
||||||
@import "bootstrap/scss/pagination";
|
@import "bootstrap/scss/pagination";
|
||||||
@import "bootstrap/scss/badge";
|
|
||||||
@import "bootstrap/scss/alert";
|
|
||||||
@import "bootstrap/scss/progress";
|
@import "bootstrap/scss/progress";
|
||||||
@import "bootstrap/scss/list-group";
|
@import "bootstrap/scss/list-group";
|
||||||
@import "bootstrap/scss/close";
|
|
||||||
@import "bootstrap/scss/toasts";
|
@import "bootstrap/scss/toasts";
|
||||||
@import "bootstrap/scss/modal";
|
@import "bootstrap/scss/modal";
|
||||||
@import "bootstrap/scss/tooltip";
|
@import "bootstrap/scss/tooltip";
|
||||||
@@ -31,8 +27,5 @@
|
|||||||
@import "bootstrap/scss/offcanvas";
|
@import "bootstrap/scss/offcanvas";
|
||||||
@import "bootstrap/scss/placeholders";
|
@import "bootstrap/scss/placeholders";
|
||||||
|
|
||||||
// Helpers
|
|
||||||
@import "bootstrap/scss/helpers";
|
|
||||||
|
|
||||||
// Utilities
|
// Utilities
|
||||||
@import "bootstrap/scss/utilities/api";
|
@import "bootstrap/scss/utilities/api";
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
@import "bootstrap/scss/functions";
|
@import "bootstrap/scss/functions";
|
||||||
|
|
||||||
|
@import "mixins";
|
||||||
@import "variables";
|
@import "variables";
|
||||||
@import "variables-dark";
|
@import "variables-dark";
|
||||||
@import "utilities";
|
@import "utilities";
|
||||||
@import "mixins";
|
|
||||||
|
|
||||||
@import "bootstrap-config";
|
@import "bootstrap-config";
|
||||||
@import "bootstrap-override";
|
@import "bootstrap-override";
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
@import "config";
|
@import "config";
|
||||||
@import "bootstrap-components";
|
@import "bootstrap-components";
|
||||||
|
|
||||||
|
@import "props";
|
||||||
|
|
||||||
@import "fonts/webfonts";
|
@import "fonts/webfonts";
|
||||||
|
|
||||||
@import "layout/root";
|
@import "layout/root";
|
||||||
@@ -63,6 +65,9 @@
|
|||||||
@import "ui/charts";
|
@import "ui/charts";
|
||||||
@import "ui/offcanvas";
|
@import "ui/offcanvas";
|
||||||
@import "ui/chat";
|
@import "ui/chat";
|
||||||
|
@import "ui/signature";
|
||||||
|
|
||||||
|
@import "helpers/index";
|
||||||
|
|
||||||
@import "utils/background";
|
@import "utils/background";
|
||||||
@import "utils/colors";
|
@import "utils/colors";
|
||||||
|
|||||||
91
core/scss/_props.scss
Normal file
91
core/scss/_props.scss
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
@import "config";
|
||||||
|
|
||||||
|
:root,
|
||||||
|
:host {
|
||||||
|
/** Fonts */
|
||||||
|
--#{$prefix}font-monospace: #{$font-family-monospace};
|
||||||
|
--#{$prefix}font-sans-serif: #{$font-family-sans-serif};
|
||||||
|
--#{$prefix}font-serif: #{$font-family-serif};
|
||||||
|
--#{$prefix}font-comic: #{$font-family-comic};
|
||||||
|
|
||||||
|
/** Gray colors */
|
||||||
|
--#{$prefix}gray-50: #{$gray-50};
|
||||||
|
--#{$prefix}gray-100: #{$gray-100};
|
||||||
|
--#{$prefix}gray-200: #{$gray-200};
|
||||||
|
--#{$prefix}gray-300: #{$gray-300};
|
||||||
|
--#{$prefix}gray-400: #{$gray-400};
|
||||||
|
--#{$prefix}gray-500: #{$gray-500};
|
||||||
|
--#{$prefix}gray-600: #{$gray-600};
|
||||||
|
--#{$prefix}gray-700: #{$gray-700};
|
||||||
|
--#{$prefix}gray-800: #{$gray-800};
|
||||||
|
--#{$prefix}gray-900: #{$gray-900};
|
||||||
|
--#{$prefix}gray-950: #{$gray-950};
|
||||||
|
|
||||||
|
--#{$prefix}white: #{$white};
|
||||||
|
--#{$prefix}black: #{$black};
|
||||||
|
--#{$prefix}dark: #{$dark};
|
||||||
|
--#{$prefix}light: #{$light};
|
||||||
|
|
||||||
|
/** Brand colors */
|
||||||
|
--#{$prefix}brand: #{$primary};
|
||||||
|
|
||||||
|
/** Theme colors */
|
||||||
|
@each $name, $color in map-merge($theme-colors, $social-colors) {
|
||||||
|
--#{$prefix}#{$name}: #{$color};
|
||||||
|
--#{$prefix}#{$name}-rgb: #{to-rgb($color)};
|
||||||
|
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};
|
||||||
|
--#{$prefix}#{$name}-darken: #{theme-color-darker($color)};
|
||||||
|
--#{$prefix}#{$name}-darken: color-mix(in oklab, var(--#{$prefix}#{$name}), transparent 20%);
|
||||||
|
--#{$prefix}#{$name}-lt: #{theme-color-lighter($color)};
|
||||||
|
--#{$prefix}#{$name}-lt: color-mix(in oklab, var(--#{$prefix}#{$name}) 10%, transparent);
|
||||||
|
--#{$prefix}#{$name}-200: color-mix(in oklab, var(--#{$prefix}#{$name}) 20%, transparent);
|
||||||
|
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Social colors */
|
||||||
|
@each $name, $color in $social-colors {
|
||||||
|
--#{$prefix}#{$name}: #{$color};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Spacers */
|
||||||
|
@each $name, $value in $spacers {
|
||||||
|
--#{$prefix}spacer-#{$name}: #{$value};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Font sizes */
|
||||||
|
@each $name, $value in $font-weights {
|
||||||
|
--#{$prefix}font-weight-#{$name}: #{$value};
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $name, $value in $font-sizes {
|
||||||
|
--#{$prefix}font-size-h#{$name}: #{$value};
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $name, $value in $line-heights {
|
||||||
|
--#{$prefix}line-height-#{$name}: #{$value};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Shadows */
|
||||||
|
@each $name, $value in $box-shadows {
|
||||||
|
--#{$prefix}shadow#{if($name, '-#{$name}', '')}: #{$value};
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Border radiuses */
|
||||||
|
--#{$prefix}border-radius-scale: 1;
|
||||||
|
@each $name, $value in $border-radiuses {
|
||||||
|
@if $name {
|
||||||
|
--#{$prefix}border-radius-#{$name}: calc(#{$value} * var(--#{$prefix}border-radius-scale, 1));
|
||||||
|
} @else {
|
||||||
|
--#{$prefix}border-radius: #{$value};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Backdrops */
|
||||||
|
--#{$prefix}backdrop-opacity: #{$backdrop-opacity};
|
||||||
|
--#{$prefix}backdrop-bg: var(--#{$prefix}bg-surface-dark);
|
||||||
|
@each $name, $value in $backdrops {
|
||||||
|
--#{$prefix}backdrop-bg#{if($name, '-#{$name}', '')}: #{$value};
|
||||||
|
}
|
||||||
|
--#{$prefix}backdrop-blur: #{$backdrop-blur};
|
||||||
|
--#{$prefix}backdrop-filter: blur(var(--#{$prefix}backdrop-blur));
|
||||||
|
}
|
||||||
@@ -43,8 +43,9 @@ $utilities: (
|
|||||||
v-text: vertical-text,
|
v-text: vertical-text,
|
||||||
grab: grab,
|
grab: grab,
|
||||||
grabbing: grabbing,
|
grabbing: grabbing,
|
||||||
|
crosshair: crosshair,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
"border": (
|
"border": (
|
||||||
property: border,
|
property: border,
|
||||||
values: $border-values,
|
values: $border-values,
|
||||||
@@ -93,4 +94,42 @@ $utilities: (
|
|||||||
responsive: true,
|
responsive: true,
|
||||||
values: 2 3 4,
|
values: 2 3 4,
|
||||||
),
|
),
|
||||||
|
"bg-pattern": (
|
||||||
|
property: background,
|
||||||
|
class: bg-pattern,
|
||||||
|
values: (
|
||||||
|
transparent: #{url-svg(
|
||||||
|
'<svg width="16" height="16" viewBox="0 0 16 16"><rect x="0" y="0" width="8" height="8" fill="rgba(130, 130, 130, .1)" /><rect x="8" y="8" width="8" height="8" fill="rgba(130, 130, 130, .1)" /></svg>'
|
||||||
|
)} repeat center/16px 16px,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
"bg-gradient": (
|
||||||
|
property: background,
|
||||||
|
class: bg-gradient,
|
||||||
|
values: (
|
||||||
|
null: linear-gradient(var(--#{$prefix}gradient-direction, to right), var(--#{$prefix}gradient-stops, var(--#{$prefix}gradient-from, transparent), var(--#{$prefix}gradient-to, transparent))) no-repeat,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
"bg-gradient-direction": (
|
||||||
|
property: --#{$prefix}gradient-direction,
|
||||||
|
class: bg-gradient,
|
||||||
|
values: (
|
||||||
|
to-t: to top,
|
||||||
|
to-te: to top right,
|
||||||
|
to-e: to right,
|
||||||
|
to-be: to bottom right,
|
||||||
|
to-b: to bottom,
|
||||||
|
to-bs: to bottom left,
|
||||||
|
to-s: to left,
|
||||||
|
to-ts: to top left,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
"table-layout": (
|
||||||
|
property: table-layout,
|
||||||
|
class: table,
|
||||||
|
values: (
|
||||||
|
auto: auto,
|
||||||
|
fixed: fixed,
|
||||||
|
),
|
||||||
|
),
|
||||||
) !default;
|
) !default;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ $border-dark-color-dark: color.adjust($dark, $lightness: 4%) !default;
|
|||||||
$border-active-color-dark: color.adjust($dark, $lightness: 12%) !default;
|
$border-active-color-dark: color.adjust($dark, $lightness: 12%) !default;
|
||||||
|
|
||||||
//new bootsrap variables
|
//new bootsrap variables
|
||||||
$body-color-dark: $gray-200 !default;
|
$body-color-dark: $gray-200 !default;
|
||||||
$body-emphasis-color-dark: $white !default;
|
$body-emphasis-color-dark: $white !default;
|
||||||
|
|
||||||
$code-color-dark: var(--#{$prefix}gray-300) !default;
|
$code-color-dark: var(--#{$prefix}gray-300) !default;
|
||||||
|
|||||||
@@ -24,8 +24,9 @@ $font-local: null !default;
|
|||||||
$font-icons: () !default;
|
$font-icons: () !default;
|
||||||
|
|
||||||
$font-family-sans-serif: unquote("#{if($font-local, "#{$font-local}, ", ' ')}#{if($font-google, "#{$font-google}, ", ' ')}") 'Inter Var', Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif !default;
|
$font-family-sans-serif: unquote("#{if($font-local, "#{$font-local}, ", ' ')}#{if($font-google, "#{$font-google}, ", ' ')}") 'Inter Var', Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif !default;
|
||||||
$font-family-monospace: unquote("#{if($font-google-monospaced, "#{$font-google-monospaced}, ", '')}") Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace !default;
|
$font-family-monospace: unquote("#{if($font-google-monospaced, "#{$font-google-monospaced}, ", '')}") Monaco, Consolas, Liberation Mono, Courier New, monospace !default;
|
||||||
$font-family-serif: "Georgia", "Times New Roman", times, serif !default;
|
$font-family-serif: "Georgia", "Times New Roman", times, serif !default;
|
||||||
|
$font-family-comic: "Comic Sans MS", "Comic Sans", 'Chalkboard SE', 'Comic Neue', sans-serif, cursive !default;
|
||||||
|
|
||||||
//Icons
|
//Icons
|
||||||
$icon-stroke-width: 1.5 !default;
|
$icon-stroke-width: 1.5 !default;
|
||||||
@@ -78,6 +79,7 @@ $font-weights: (
|
|||||||
$line-height-base: divide(1.25rem, $font-size-base) !default;
|
$line-height-base: divide(1.25rem, $font-size-base) !default;
|
||||||
$line-height-sm: divide(1rem, $font-size-base) !default;
|
$line-height-sm: divide(1rem, $font-size-base) !default;
|
||||||
$line-height-lg: divide(1.5rem, $font-size-base) !default;
|
$line-height-lg: divide(1.5rem, $font-size-base) !default;
|
||||||
|
$line-height-xl: divide(1.75rem, $font-size-base) !default;
|
||||||
|
|
||||||
$h1-font-size: 1.5rem !default;
|
$h1-font-size: 1.5rem !default;
|
||||||
$h1-line-height: 2rem !default;
|
$h1-line-height: 2rem !default;
|
||||||
@@ -97,7 +99,9 @@ $h5-line-height: 1rem !default;
|
|||||||
$h6-font-size: 0.625rem !default;
|
$h6-font-size: 0.625rem !default;
|
||||||
$h6-line-height: 1rem !default;
|
$h6-line-height: 1rem !default;
|
||||||
|
|
||||||
$small-font-size: 85.714285% !default;
|
$font-size-reative-xs: .71428571em !default;
|
||||||
|
$font-size-reative-sm: .85714285em !default;
|
||||||
|
$font-size-reative-md: 1em !default;
|
||||||
|
|
||||||
$font-sizes: (
|
$font-sizes: (
|
||||||
1: $h1-font-size,
|
1: $h1-font-size,
|
||||||
@@ -142,16 +146,17 @@ $border-light-opacity: 0.08 !default;
|
|||||||
$border-dark-opacity: 0.24 !default;
|
$border-dark-opacity: 0.24 !default;
|
||||||
$border-active-opacity: 0.58 !default;
|
$border-active-opacity: 0.58 !default;
|
||||||
|
|
||||||
$gray-50: #f6f8fb !default;
|
$gray-50: #f9fafb !default;
|
||||||
$gray-100: #eef3f6 !default;
|
$gray-100: #f3f4f6 !default;
|
||||||
$gray-200: #dce1e7 !default;
|
$gray-200: #e5e7eb !default;
|
||||||
$gray-300: #b8c4d4 !default;
|
$gray-300: #d1d5db !default;
|
||||||
$gray-400: #8a97ab !default;
|
$gray-400: #9ca3af !default;
|
||||||
$gray-500: #6c7a91 !default;
|
$gray-500: #6b7280 !default;
|
||||||
$gray-600: #49566c !default;
|
$gray-600: #4b5563 !default;
|
||||||
$gray-700: #3a4859 !default;
|
$gray-700: #374151 !default;
|
||||||
$gray-800: #182433 !default;
|
$gray-800: #1f2937 !default;
|
||||||
$gray-900: #040a11 !default;
|
$gray-900: #111827 !default;
|
||||||
|
$gray-950: #030712 !default;
|
||||||
|
|
||||||
$black: #000000 !default;
|
$black: #000000 !default;
|
||||||
$white: #ffffff !default;
|
$white: #ffffff !default;
|
||||||
@@ -184,19 +189,7 @@ $green: #2fb344 !default;
|
|||||||
$teal: #0ca678 !default;
|
$teal: #0ca678 !default;
|
||||||
$cyan: #17a2b8 !default;
|
$cyan: #17a2b8 !default;
|
||||||
|
|
||||||
$color-blue: #066fd1;
|
$text-muted: $gray-500 !default;
|
||||||
$color-azure: #3586c9;
|
|
||||||
$color-indigo: #4263eb;
|
|
||||||
$color-purple: #ae3ec9;
|
|
||||||
$color-pink: #d6336c;
|
|
||||||
$color-red: #e73f3f;
|
|
||||||
$color-orange: #f76707;
|
|
||||||
$color-yellow: #f59f00;
|
|
||||||
$color-lime: #74b816;
|
|
||||||
$color-green: #2fb344;
|
|
||||||
$color-teal: #0ca678;
|
|
||||||
$color-cyan: #17a2b8;
|
|
||||||
|
|
||||||
$text-secondary: $gray-500 !default;
|
$text-secondary: $gray-500 !default;
|
||||||
$text-secondary-light: $gray-400 !default;
|
$text-secondary-light: $gray-400 !default;
|
||||||
$text-secondary-dark: $gray-600 !default;
|
$text-secondary-dark: $gray-600 !default;
|
||||||
@@ -217,27 +210,28 @@ $active-border-color: var(--#{$prefix}primary) !default;
|
|||||||
$hover-bg: rgba(var(--#{$prefix}secondary-rgb), 0.08) !default;
|
$hover-bg: rgba(var(--#{$prefix}secondary-rgb), 0.08) !default;
|
||||||
|
|
||||||
$disabled-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
$disabled-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
||||||
$disabled-color: var(--#{$prefix}gray-300) !default;
|
$disabled-color: color-transparent(var(--#{$prefix}body-color), .4) !default;
|
||||||
|
|
||||||
$primary: $blue !default;
|
$primary: $blue !default;
|
||||||
$secondary: $text-secondary !default;
|
$secondary: $text-secondary !default;
|
||||||
|
$muted: $text-secondary !default;
|
||||||
$success: $green !default;
|
$success: $green !default;
|
||||||
$info: $azure !default;
|
$info: $azure !default;
|
||||||
$warning: $orange !default;
|
$warning: $yellow !default;
|
||||||
$danger: $red !default;
|
$danger: $red !default;
|
||||||
|
|
||||||
$link-color: $primary !default;
|
$link-color: $primary !default;
|
||||||
|
|
||||||
$theme-colors: (
|
$theme-colors: (
|
||||||
"primary": $primary,
|
"primary": $primary,
|
||||||
"secondary": $text-secondary,
|
"secondary": $secondary,
|
||||||
"success": $success,
|
"success": $success,
|
||||||
"info": $info,
|
"info": $info,
|
||||||
"warning": $warning,
|
"warning": $warning,
|
||||||
"danger": $danger,
|
"danger": $danger,
|
||||||
"light": $light,
|
"light": $light,
|
||||||
"dark": $dark,
|
"dark": $dark,
|
||||||
"muted": $text-secondary,
|
"muted": $muted,
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
$extra-colors: (
|
$extra-colors: (
|
||||||
@@ -287,17 +281,35 @@ $gray-colors: (
|
|||||||
gray-900: $gray-900,
|
gray-900: $gray-900,
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
$theme-colors: map-merge($theme-colors, map-merge($extra-colors, $social-colors));
|
$theme-colors: map-merge($theme-colors, map-merge($extra-colors, ()));
|
||||||
|
|
||||||
|
// BACKDROPS
|
||||||
|
$backdrop-opacity: 24% !default;
|
||||||
|
$backdrop-blur: 4px !default;
|
||||||
|
$backdrop-bg: var(--#{$prefix}gray-800) !default;
|
||||||
|
$backdrops: (
|
||||||
|
dark: color-mix(in srgb, var(--#{$prefix}color-dark), transparent var(--#{$prefix}backdrop-opacity)),
|
||||||
|
light: color-mix(in srgb, var(--#{$prefix}color-light), transparent var(--#{$prefix}backdrop-opacity)),
|
||||||
|
) !default;
|
||||||
|
|
||||||
// Borders
|
// Borders
|
||||||
$border-width: 1px !default;
|
$border-width: 1px !default;
|
||||||
$border-width-wide: 2px !default;
|
$border-width-wide: 2px !default;
|
||||||
|
|
||||||
$border-radius-sm: 2px !default;
|
$border-radius-sm: 4px !default;
|
||||||
$border-radius: 4px !default;
|
$border-radius: 6px !default;
|
||||||
$border-radius-lg: 8px !default;
|
$border-radius-lg: 8px !default;
|
||||||
$border-radius-pill: 100rem !default;
|
$border-radius-pill: 100rem !default;
|
||||||
|
|
||||||
|
$border-radiuses: (
|
||||||
|
0: 0,
|
||||||
|
sm: $border-radius-sm,
|
||||||
|
md: $border-radius,
|
||||||
|
lg: $border-radius-lg,
|
||||||
|
pill: $border-radius-pill,
|
||||||
|
null: var(--#{$prefix}border-radius-md),
|
||||||
|
) !default;
|
||||||
|
|
||||||
$border-values: (
|
$border-values: (
|
||||||
null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $border-color-translucent,
|
null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $border-color-translucent,
|
||||||
wide: $border-width-wide var(--#{$prefix}border-style) $border-color-translucent,
|
wide: $border-width-wide var(--#{$prefix}border-style) $border-color-translucent,
|
||||||
@@ -308,10 +320,10 @@ $border-values: (
|
|||||||
$icon-color: var(--#{$prefix}gray-400) !default;
|
$icon-color: var(--#{$prefix}gray-400) !default;
|
||||||
|
|
||||||
// Code
|
// Code
|
||||||
$code-color: var(--#{$prefix}gray-600) !default;
|
$code-color: var(--#{$prefix}primary) !default;
|
||||||
$code-font-size: $small-font-size !default;
|
$code-font-size: $font-size-reative-sm !default;
|
||||||
$code-line-height: 1.25rem !default;
|
$code-line-height: 1.25rem !default;
|
||||||
$code-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
$code-bg: var(--#{$prefix}primary-lt) !default;
|
||||||
|
|
||||||
$pre-padding: 1rem !default;
|
$pre-padding: 1rem !default;
|
||||||
$pre-bg: var(--#{$prefix}bg-surface-dark) !default;
|
$pre-bg: var(--#{$prefix}bg-surface-dark) !default;
|
||||||
@@ -331,54 +343,62 @@ $avatar-size: 2.5rem !default;
|
|||||||
$avatar-status-size: .75rem !default;
|
$avatar-status-size: .75rem !default;
|
||||||
$avatar-font-size: 1rem !default;
|
$avatar-font-size: 1rem !default;
|
||||||
$avatar-icon-size: 1.5rem !default;
|
$avatar-icon-size: 1.5rem !default;
|
||||||
|
$avatar-brand-size: 1.25rem !default;
|
||||||
$avatar-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
$avatar-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
||||||
$avatar-sizes: (
|
$avatar-sizes: (
|
||||||
"xxs": (
|
"xxs": (
|
||||||
size: 1rem,
|
size: 1rem,
|
||||||
font-size: .5rem,
|
font-size: .5rem,
|
||||||
icon-size: .75rem,
|
icon-size: .5rem,
|
||||||
status-size: .25rem
|
status-size: .25rem,
|
||||||
|
brand-size: .5rem
|
||||||
),
|
),
|
||||||
"xs": (
|
"xs": (
|
||||||
size: 1.25rem,
|
size: 1.25rem,
|
||||||
font-size: $h6-font-size,
|
font-size: $h6-font-size,
|
||||||
icon-size: .75rem,
|
icon-size: .75rem,
|
||||||
status-size: .375rem
|
status-size: .375rem,
|
||||||
|
brand-size: .75rem
|
||||||
),
|
),
|
||||||
"sm": (
|
"sm": (
|
||||||
size: 2rem,
|
size: 2rem,
|
||||||
font-size: $h5-font-size,
|
font-size: $h5-font-size,
|
||||||
icon-size: 1.5rem,
|
icon-size: 1.5rem,
|
||||||
status-size: .5rem
|
status-size: .5rem,
|
||||||
|
brand-size: 1rem
|
||||||
),
|
),
|
||||||
"md": (
|
"md": (
|
||||||
size: 2.5rem,
|
size: 2.5rem,
|
||||||
font-size: $h4-font-size,
|
font-size: $h4-font-size,
|
||||||
icon-size: 1.5rem,
|
icon-size: 1.5rem,
|
||||||
status-size: .75rem
|
status-size: .75rem,
|
||||||
|
brand-size: 1.25rem
|
||||||
),
|
),
|
||||||
"lg": (
|
"lg": (
|
||||||
size: 3rem,
|
size: 3rem,
|
||||||
font-size: $h2-font-size,
|
font-size: $h2-font-size,
|
||||||
icon-size: 2rem,
|
icon-size: 2rem,
|
||||||
status-size: .75rem
|
status-size: .75rem,
|
||||||
|
brand-size: 1.25rem
|
||||||
),
|
),
|
||||||
"xl": (
|
"xl": (
|
||||||
size: 5rem,
|
size: 5rem,
|
||||||
font-size: 2rem,
|
font-size: 2rem,
|
||||||
icon-size: 3rem,
|
icon-size: 3rem,
|
||||||
status-size: 1rem
|
status-size: 1rem,
|
||||||
|
brand-size: 1.25rem
|
||||||
),
|
),
|
||||||
"2xl": (
|
"2xl": (
|
||||||
size: 7rem,
|
size: 7rem,
|
||||||
font-size: 3rem,
|
font-size: 3rem,
|
||||||
icon-size: 5rem,
|
icon-size: 5rem,
|
||||||
status-size: 1rem
|
status-size: 1rem,
|
||||||
|
brand-size: 2rem
|
||||||
),
|
),
|
||||||
) !default;
|
) !default;
|
||||||
$avatar-border-radius: var(--#{$prefix}border-radius) !default;
|
$avatar-border-radius: var(--#{$prefix}border-radius) !default;
|
||||||
$avatar-font-size: $h4-font-size !default;
|
$avatar-font-size: $h4-font-size !default;
|
||||||
$avatar-box-shadow: var(--#{$prefix}box-shadow-border) !default;
|
$avatar-box-shadow: var(--#{$prefix}shadow-border) !default;
|
||||||
$avatar-list-spacing: -0.5;
|
$avatar-list-spacing: -0.5;
|
||||||
|
|
||||||
$link-decoration: none !default;
|
$link-decoration: none !default;
|
||||||
@@ -496,13 +516,13 @@ $box-shadow-card-hover: rgba(var(--#{$prefix}body-color-rgb), 0.16) 0 2px 16px 0
|
|||||||
$box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1) !default;
|
$box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1) !default;
|
||||||
|
|
||||||
$box-shadows: (
|
$box-shadows: (
|
||||||
box-shadow: $box-shadow,
|
null: $box-shadow,
|
||||||
box-shadow-border: $box-shadow-border,
|
border: $box-shadow-border,
|
||||||
box-shadow-transparent: $box-shadow-transparent,
|
transparent: $box-shadow-transparent,
|
||||||
box-shadow-input: $box-shadow-input,
|
input: $box-shadow-input,
|
||||||
box-shadow-card: $box-shadow-card,
|
card: $box-shadow-card,
|
||||||
box-shadow-card-hover: $box-shadow-card-hover,
|
card-hover: $box-shadow-card-hover,
|
||||||
box-shadow-dropdown: $box-shadow-dropdown,
|
dropdown: $box-shadow-dropdown,
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
$box-shadow-inset: 0 0 transparent !default;
|
$box-shadow-inset: 0 0 transparent !default;
|
||||||
@@ -553,19 +573,21 @@ $breadcrumb-variants: (
|
|||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
// Badges
|
// Badges
|
||||||
$badge-font-size: $code-font-size !default;
|
$badge-font-size: $font-size-reative-sm !default;
|
||||||
|
$badge-font-size-sm: $font-size-reative-xs !default;
|
||||||
|
$badge-font-size-lg: $font-size-reative-md !default;
|
||||||
$badge-line-height: $code-line-height !default;
|
$badge-line-height: $code-line-height !default;
|
||||||
$badge-font-weight: var(--#{$prefix}font-weight-medium) !default;
|
$badge-font-weight: var(--#{$prefix}font-weight-medium) !default;
|
||||||
$badge-padding-y: 0.25em !default;
|
$badge-padding-y: 0.25em !default;
|
||||||
$badge-padding-x: 0.5em !default;
|
$badge-padding-x: 0.5em !default;
|
||||||
$badge-empty-size: 0.5rem !default;
|
$badge-empty-size: 10px !default;
|
||||||
$badge-color: var(--#{$prefix}gray-500) !default;
|
$badge-color: var(--#{$prefix}secondary) !default;
|
||||||
$badge-bg-color: var(--#{$prefix}bg-surface-secondary) !default;
|
$badge-bg-color: var(--#{$prefix}bg-surface-secondary) !default;
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
$input-btn-line-height: $line-height-base !default;
|
$input-btn-line-height: $line-height-base !default;
|
||||||
$input-btn-font-size: $font-size-base !default;
|
$input-btn-font-size: $font-size-base !default;
|
||||||
$input-btn-font-family: var(--#{$prefix}font-sans-serif) !default;
|
$input-btn-font-family: var(--#{$prefix}body-font-face) !default;
|
||||||
$input-btn-padding-y: 0.5rem - 0.0625rem !default;
|
$input-btn-padding-y: 0.5rem - 0.0625rem !default;
|
||||||
$input-btn-icon-size: $icon-size !default;
|
$input-btn-icon-size: $icon-size !default;
|
||||||
|
|
||||||
@@ -590,7 +612,7 @@ $input-height-lg: null !default;
|
|||||||
$input-border-radius: var(--#{$prefix}border-radius) !default;
|
$input-border-radius: var(--#{$prefix}border-radius) !default;
|
||||||
$input-color: var(--#{$prefix}body-color) !default;
|
$input-color: var(--#{$prefix}body-color) !default;
|
||||||
$input-focus-color: var(--#{$prefix}body-color) !default;
|
$input-focus-color: var(--#{$prefix}body-color) !default;
|
||||||
$input-box-shadow: var(--#{$prefix}box-shadow-input) !default;
|
$input-box-shadow: var(--#{$prefix}shadow-input) !default;
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
|
$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
|
||||||
@@ -601,12 +623,12 @@ $btn-padding-x: 1rem !default;
|
|||||||
$btn-font-weight: var(--#{$prefix}font-weight-medium) !default;
|
$btn-font-weight: var(--#{$prefix}font-weight-medium) !default;
|
||||||
$btn-border-color: var(--#{$prefix}border-color) !default;
|
$btn-border-color: var(--#{$prefix}border-color) !default;
|
||||||
$btn-border-radius: var(--#{$prefix}border-radius) !default;
|
$btn-border-radius: var(--#{$prefix}border-radius) !default;
|
||||||
$btn-box-shadow: var(--#{$prefix}box-shadow-input) !default;
|
$btn-box-shadow: var(--#{$prefix}shadow-input) !default;
|
||||||
|
|
||||||
// Cards
|
// Cards
|
||||||
$card-title-spacer-y: 1.25rem !default;
|
$card-title-spacer-y: 1.25rem !default;
|
||||||
$card-box-shadow: var(--#{$prefix}shadow-card) !default;
|
$card-box-shadow: var(--#{$prefix}box-shadow-card) !default;
|
||||||
$card-hover-box-shadow: var(--#{$prefix}shadow-card-hover) !default;
|
$card-hover-box-shadow: var(--#{$prefix}box-shadow-card-hover) !default;
|
||||||
|
|
||||||
$card-bg: var(--#{$prefix}bg-surface) !default;
|
$card-bg: var(--#{$prefix}bg-surface) !default;
|
||||||
$card-bg-hover: $white !default;
|
$card-bg-hover: $white !default;
|
||||||
@@ -614,7 +636,7 @@ $card-color: inherit !default;
|
|||||||
|
|
||||||
$card-border-width: var(--#{$prefix}border-width) !default;
|
$card-border-width: var(--#{$prefix}border-width) !default;
|
||||||
$card-border-color: var(--#{$prefix}border-color-translucent) !default;
|
$card-border-color: var(--#{$prefix}border-color-translucent) !default;
|
||||||
$card-border-radius: var(--#{$prefix}border-radius) !default;
|
$card-border-radius: var(--#{$prefix}border-radius-lg) !default;
|
||||||
|
|
||||||
$card-spacer-x: 1.25rem !default;
|
$card-spacer-x: 1.25rem !default;
|
||||||
$card-spacer-y: 1rem !default;
|
$card-spacer-y: 1rem !default;
|
||||||
@@ -673,16 +695,16 @@ $dropdown-max-width: 25rem !default;
|
|||||||
$dropdown-scrollable-height: 13rem !default;
|
$dropdown-scrollable-height: 13rem !default;
|
||||||
$dropdown-link-active-color: var(--#{$prefix}primary) !default;
|
$dropdown-link-active-color: var(--#{$prefix}primary) !default;
|
||||||
$dropdown-link-active-bg: var(--#{$prefix}active-bg) !default;
|
$dropdown-link-active-bg: var(--#{$prefix}active-bg) !default;
|
||||||
$dropdown-box-shadow: var(--#{$prefix}box-shadow-dropdown) !default;
|
$dropdown-box-shadow: var(--#{$prefix}shadow-dropdown) !default;
|
||||||
|
|
||||||
$dropdown-divider-bg: $dropdown-border-color !default;
|
$dropdown-divider-bg: $dropdown-border-color !default;
|
||||||
$dropdown-divider-margin-y: var(--#{$prefix}spacer-2) !default;
|
$dropdown-divider-margin-y: var(--#{$prefix}spacer-2) !default;
|
||||||
|
|
||||||
// Tooltip
|
// Tooltip
|
||||||
$tooltip-bg: var(--#{$prefix}bg-surface-dark) !default;
|
$tooltip-bg: var(--#{$prefix}bg-surface-inverted) !default;
|
||||||
$tooltip-color: var(--#{$prefix}light) !default;
|
$tooltip-color: var(--#{$prefix}text-inverted) !default;
|
||||||
$tooltip-padding-y: var(--#{$prefix}spacer-2) !default;
|
$tooltip-padding-y: var(--#{$prefix}spacer-1) !default;
|
||||||
$tooltip-padding-x: var(--#{$prefix}spacer-2) !default;
|
$tooltip-padding-x: var(--#{$prefix}spacer-3) !default;
|
||||||
|
|
||||||
// Loader
|
// Loader
|
||||||
$loader-size: 2.5rem !default;
|
$loader-size: 2.5rem !default;
|
||||||
@@ -697,7 +719,7 @@ $list-group-item-padding-x: $card-cap-padding-x !default;
|
|||||||
|
|
||||||
// Modals
|
// Modals
|
||||||
$modal-backdrop-opacity: 0.24 !default;
|
$modal-backdrop-opacity: 0.24 !default;
|
||||||
$modal-backdrop-bg: $dark !default;
|
$modal-backdrop-bg: $backdrop-bg !default;
|
||||||
$modal-backdrop-blur: 4px !default;
|
$modal-backdrop-blur: 4px !default;
|
||||||
|
|
||||||
$modal-fade-transform: translate(0, -1rem) !default;
|
$modal-fade-transform: translate(0, -1rem) !default;
|
||||||
@@ -729,9 +751,10 @@ $modal-sm: 380px !default;
|
|||||||
$nav-link-padding-y: 0.5rem !default;
|
$nav-link-padding-y: 0.5rem !default;
|
||||||
$nav-link-padding-x: 0.75rem !default;
|
$nav-link-padding-x: 0.75rem !default;
|
||||||
$nav-link-color: var(--#{$prefix}gray-500) !default;
|
$nav-link-color: var(--#{$prefix}gray-500) !default;
|
||||||
|
$nav-link-active-color: var(--#{$prefix}body-color) !default;
|
||||||
$nav-link-disabled-color: var(--#{$prefix}disabled-color) !default;
|
$nav-link-disabled-color: var(--#{$prefix}disabled-color) !default;
|
||||||
$nav-link-icon-size: $icon-size !default;
|
$nav-link-icon-size: $icon-size !default;
|
||||||
$nav-link-icon-color: var(--#{$prefix}icon-color) !default;
|
$nav-link-icon-color: inherit !default;
|
||||||
|
|
||||||
$nav-pills-link-active-color: var(--#{$prefix}primary) !default;
|
$nav-pills-link-active-color: var(--#{$prefix}primary) !default;
|
||||||
$nav-pills-link-active-bg: var(--#{$prefix}active-bg) !default;
|
$nav-pills-link-active-bg: var(--#{$prefix}active-bg) !default;
|
||||||
@@ -753,17 +776,17 @@ $nav-tabs-bg: var(--#{$prefix}bg-surface-tertiary) !default;
|
|||||||
// Navbar
|
// Navbar
|
||||||
$navbar-height: 3.5rem !default;
|
$navbar-height: 3.5rem !default;
|
||||||
$navbar-padding-y: 0.25rem !default;
|
$navbar-padding-y: 0.25rem !default;
|
||||||
$navbar-light-color: var(--#{$prefix}muted) !default;
|
$navbar-light-color: var(--#{$prefix}secondary) !default;
|
||||||
|
|
||||||
$navbar-hover-color: $white !default;
|
$navbar-hover-color: var(--#{$prefix}body-color) !default;
|
||||||
|
|
||||||
$navbar-border-width: var(--#{$prefix}border-width) !default;
|
$navbar-border-width: var(--#{$prefix}border-width) !default;
|
||||||
$navbar-border-color: var(--#{$prefix}border-color) !default;
|
$navbar-border-color: var(--#{$prefix}border-color) !default;
|
||||||
|
|
||||||
$navbar-light-color: var(--#{$prefix}body-color) !default;
|
$navbar-light-color: var(--#{$prefix}body-color) !default;
|
||||||
$navbar-light-brand-color: var(--#{$prefix}body-color) !default;
|
$navbar-light-brand-color: var(--#{$prefix}body-color) !default;
|
||||||
$navbar-light-active-color: var(--#{$prefix}body-color) color !default;
|
$navbar-light-active-color: var(--#{$prefix}body-color) !default;
|
||||||
$navbar-light-hover-color: var(--#{$prefix}body-color) color !default;
|
$navbar-light-hover-color: var(--#{$prefix}body-color) !default;
|
||||||
$navbar-light-disabled-color: var(--#{$prefix}disabled-color) !default;
|
$navbar-light-disabled-color: var(--#{$prefix}disabled-color) !default;
|
||||||
$navbar-light-active-bg: rgba(0, 0, 0, 0.2) !default;
|
$navbar-light-active-bg: rgba(0, 0, 0, 0.2) !default;
|
||||||
|
|
||||||
@@ -787,6 +810,7 @@ $navbar-toggler-focus-width: 0 !default;
|
|||||||
$navbar-overlap-height: 9rem !default;
|
$navbar-overlap-height: 9rem !default;
|
||||||
|
|
||||||
$navbar-nav-link-padding-x: $nav-link-padding-x !default;
|
$navbar-nav-link-padding-x: $nav-link-padding-x !default;
|
||||||
|
$navbar-nav-link-hover-bg: rgba(0, 0, 0, .04) !default;
|
||||||
|
|
||||||
$navbar-active-border-color: var(--#{$prefix}primary) !default;
|
$navbar-active-border-color: var(--#{$prefix}primary) !default;
|
||||||
|
|
||||||
@@ -803,6 +827,9 @@ $popover-bg: var(--#{$prefix}bg-surface) !default;
|
|||||||
$popover-header-bg: transparent !default;
|
$popover-header-bg: transparent !default;
|
||||||
$popover-border-color: var(--#{$prefix}border-color) !default;
|
$popover-border-color: var(--#{$prefix}border-color) !default;
|
||||||
$popover-body-color: inherit !default;
|
$popover-body-color: inherit !default;
|
||||||
|
$popover-body-padding-x: .5rem !default;
|
||||||
|
$popover-body-padding-y: .5rem !default;
|
||||||
|
$popover-box-shadow: var(--#{$prefix}box-shadow-lg) !default;
|
||||||
|
|
||||||
// Footer
|
// Footer
|
||||||
$footer-padding-y: 2rem !default;
|
$footer-padding-y: 2rem !default;
|
||||||
@@ -855,6 +882,7 @@ $table-th-bg: var(--#{$prefix}bg-surface-tertiary) !default;
|
|||||||
$table-striped-order: even !default;
|
$table-striped-order: even !default;
|
||||||
$table-striped-bg: var(--#{$prefix}bg-surface-tertiary) !default;
|
$table-striped-bg: var(--#{$prefix}bg-surface-tertiary) !default;
|
||||||
$table-group-separator-color: var(--#{$prefix}border-color-translucent) !default;
|
$table-group-separator-color: var(--#{$prefix}border-color-translucent) !default;
|
||||||
|
$table-active-bg: var(--#{$prefix}active-bg) !default;
|
||||||
|
|
||||||
$table-sort-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'><path d='M5 7l3 -3l3 3'/><path d='M5 10l3 3l3 -3'/></svg>") !default;
|
$table-sort-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'><path d='M5 7l3 -3l3 3'/><path d='M5 10l3 3l3 -3'/></svg>") !default;
|
||||||
$table-sort-asc-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1' d='M5 7l3 3l3 -3'/></svg>") !default;
|
$table-sort-asc-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1' d='M5 7l3 3l3 -3'/></svg>") !default;
|
||||||
@@ -889,7 +917,7 @@ $input-bg: var(--#{$prefix}bg-forms) !default;
|
|||||||
$input-disabled-bg: $disabled-bg !default;
|
$input-disabled-bg: $disabled-bg !default;
|
||||||
$input-border-color: var(--#{$prefix}border-color) !default;
|
$input-border-color: var(--#{$prefix}border-color) !default;
|
||||||
$input-border-color-translucent: var(--#{$prefix}border-color-translucent) !default;
|
$input-border-color-translucent: var(--#{$prefix}border-color-translucent) !default;
|
||||||
$input-placeholder-color: $text-secondary-light !default;
|
$input-placeholder-color: var(--#{$prefix}tertiary) !default;
|
||||||
|
|
||||||
$input-group-addon-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
$input-group-addon-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
||||||
$input-group-addon-color: var(--#{$prefix}gray-500) !default;
|
$input-group-addon-color: var(--#{$prefix}gray-500) !default;
|
||||||
@@ -920,7 +948,7 @@ $form-check-radio-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://w
|
|||||||
$form-check-label-disabled-opacity: $text-secondary-opacity;
|
$form-check-label-disabled-opacity: $text-secondary-opacity;
|
||||||
|
|
||||||
$form-select-indicator-color: $text-secondary-light !default;
|
$form-select-indicator-color: $text-secondary-light !default;
|
||||||
$form-select-box-shadow: var(--#{$prefix}box-shadow-input) !default;
|
$form-select-box-shadow: var(--#{$prefix}shadow-input) !default;
|
||||||
|
|
||||||
$form-switch-width: 2rem !default;
|
$form-switch-width: 2rem !default;
|
||||||
$form-switch-height: 1.25rem !default;
|
$form-switch-height: 1.25rem !default;
|
||||||
@@ -949,7 +977,7 @@ $form-feedback-icon-invalid: str-replace(
|
|||||||
$form-label-font-size: $h4-font-size !default;
|
$form-label-font-size: $h4-font-size !default;
|
||||||
$form-label-font-weight: var(--#{$prefix}font-weight-medium) !default;
|
$form-label-font-weight: var(--#{$prefix}font-weight-medium) !default;
|
||||||
|
|
||||||
$form-secondary-color: var(--#{$prefix}gray-500) !default;
|
$form-secondary-color: var(--#{$prefix}secondary) !default;
|
||||||
|
|
||||||
// Legend
|
// Legend
|
||||||
$legend-bg: var(--#{$prefix}border-color) !default;
|
$legend-bg: var(--#{$prefix}border-color) !default;
|
||||||
@@ -957,7 +985,7 @@ $legend-size: 0.75em !default;
|
|||||||
$legend-border-radius: var(--#{$prefix}border-radius-sm) !default;
|
$legend-border-radius: var(--#{$prefix}border-radius-sm) !default;
|
||||||
|
|
||||||
// Flags
|
// Flags
|
||||||
$flag-box-shadow: var(--#{$prefix}box-shadow-border) !default;
|
$flag-box-shadow: var(--#{$prefix}shadow-border) !default;
|
||||||
$flag-border-radius: var(--#{$prefix}border-radius) !default;
|
$flag-border-radius: var(--#{$prefix}border-radius) !default;
|
||||||
$flag-sizes: $avatar-sizes !default;
|
$flag-sizes: $avatar-sizes !default;
|
||||||
|
|
||||||
@@ -967,6 +995,7 @@ $payment-sizes: $avatar-sizes !default;
|
|||||||
// Offcanvas
|
// Offcanvas
|
||||||
$offcanvas-bg-color: var(--#{$prefix}bg-surface) !default;
|
$offcanvas-bg-color: var(--#{$prefix}bg-surface) !default;
|
||||||
$offcanvas-border-color: var(--#{$prefix}border-color) !default;
|
$offcanvas-border-color: var(--#{$prefix}border-color) !default;
|
||||||
|
$offcanvas-backdrop-bg: $backdrop-bg !default;
|
||||||
|
|
||||||
// Placeholder
|
// Placeholder
|
||||||
$placeholder-opacity-min: 0.1 !default;
|
$placeholder-opacity-min: 0.1 !default;
|
||||||
|
|||||||
143
core/scss/helpers/_index.scss
Normal file
143
core/scss/helpers/_index.scss
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
//
|
||||||
|
// Clearfix
|
||||||
|
//
|
||||||
|
.clearfix {
|
||||||
|
@include clearfix();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Text truncation
|
||||||
|
//
|
||||||
|
.text-truncate {
|
||||||
|
@include text-truncate();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Vertical rule
|
||||||
|
//
|
||||||
|
.vr {
|
||||||
|
display: inline-block;
|
||||||
|
align-self: stretch;
|
||||||
|
width: $vr-border-width;
|
||||||
|
min-height: 1em;
|
||||||
|
background-color: currentcolor;
|
||||||
|
opacity: $hr-opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Stretched link
|
||||||
|
//
|
||||||
|
.stretched-link {
|
||||||
|
&::#{$stretched-link-pseudo-element} {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: $stretched-link-z-index;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Visually hidden
|
||||||
|
//
|
||||||
|
.visually-hidden,
|
||||||
|
.visually-hidden-focusable:not(:focus):not(:focus-within) {
|
||||||
|
@include visually-hidden();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Stacks
|
||||||
|
//
|
||||||
|
.hstack {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
align-self: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vstack {
|
||||||
|
display: flex;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
flex-direction: column;
|
||||||
|
align-self: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Position
|
||||||
|
//
|
||||||
|
// Shorthand
|
||||||
|
|
||||||
|
.fixed-top {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: $zindex-fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fixed-bottom {
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: $zindex-fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Responsive sticky top and bottom
|
||||||
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
|
@include media-breakpoint-up($breakpoint) {
|
||||||
|
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||||
|
|
||||||
|
.sticky#{$infix}-top {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: $zindex-sticky;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sticky#{$infix}-bottom {
|
||||||
|
position: sticky;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: $zindex-sticky;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Aspect ratio
|
||||||
|
//
|
||||||
|
.ratio {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
display: block;
|
||||||
|
padding-top: var(--#{$prefix}aspect-ratio);
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
> * {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $key, $ratio in $aspect-ratios {
|
||||||
|
.ratio-#{$key} {
|
||||||
|
--#{$prefix}aspect-ratio: #{$ratio};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Focus ring
|
||||||
|
//
|
||||||
|
.focus-ring:focus {
|
||||||
|
outline: 0;
|
||||||
|
// By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
|
||||||
|
box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@ body {
|
|||||||
position: relative;
|
position: relative;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
padding: 0 !important;
|
||||||
|
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
|||||||
@@ -2,53 +2,55 @@
|
|||||||
|
|
||||||
// stylelint-disable declaration-no-important
|
// stylelint-disable declaration-no-important
|
||||||
|
|
||||||
body {
|
|
||||||
&:not(.theme-dark):not([data-bs-theme=dark]) {
|
|
||||||
.hide-theme-light {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-dark {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.theme-dark,
|
|
||||||
&[data-bs-theme=dark] {
|
|
||||||
.hide-theme-dark {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.img-light {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $enable-dark-mode {
|
@if $enable-dark-mode {
|
||||||
@include color-mode(dark, true) {
|
:root {
|
||||||
--#{$prefix}body-color: #{$body-color-dark};
|
&:not(.theme-dark):not([data-bs-theme="dark"]) {
|
||||||
--#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
|
.hide-theme-light {
|
||||||
--#{$prefix}muted: #{$text-secondary-dark};
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
--#{$prefix}body-bg: #{$darken-dark};
|
.img-dark {
|
||||||
--#{$prefix}body-bg-rgb: #{to-rgb($darken-dark)};
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.theme-dark,
|
||||||
|
&[data-bs-theme="dark"] {
|
||||||
|
.hide-theme-dark {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-light {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@include color-mode(dark, true) {
|
||||||
|
color-scheme: dark;
|
||||||
|
--#{$prefix}body-color: var(--#{$prefix}gray-200);
|
||||||
|
--#{$prefix}secondary: var(--#{$prefix}gray-400);
|
||||||
|
|
||||||
|
--#{$prefix}body-bg: var(--#{$prefix}gray-900);
|
||||||
--#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
|
--#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
|
||||||
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
|
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
|
||||||
|
|
||||||
--#{$prefix}bg-forms: #{$darken-dark};
|
--#{$prefix}bg-forms: var(--#{$prefix}gray-900);
|
||||||
--#{$prefix}bg-surface: #{$dark};
|
--#{$prefix}bg-surface: var(--#{$prefix}gray-800);
|
||||||
--#{$prefix}bg-surface-dark: #{$darken-dark};
|
--#{$prefix}bg-surface-inverted: var(--#{$prefix}gray-100);
|
||||||
--#{$prefix}bg-surface-secondary: #{$lighten-dark};
|
--#{$prefix}bg-surface-secondary: var(--#{$prefix}gray-900);
|
||||||
--#{$prefix}bg-surface-tertiary: #{$darken-dark};
|
--#{$prefix}bg-surface-tertiary: var(--#{$prefix}gray-800);
|
||||||
|
|
||||||
--#{$prefix}link-color: #{color.adjust($primary, $lightness: 8%)};
|
--#{$prefix}text-inverted: var(--#{$prefix}gray-800);
|
||||||
--#{$prefix}link-hover-color: #{$primary};
|
|
||||||
|
--#{$prefix}link-color: var(--#{$prefix}primary);
|
||||||
|
--#{$prefix}link-hover-color: color-mix(in srgb, var(--#{$prefix}primary), black 20%);
|
||||||
|
|
||||||
--#{$prefix}active-bg: #{$lighten-dark};
|
--#{$prefix}active-bg: #{$lighten-dark};
|
||||||
--#{$prefix}disabled-color: var(--#{$prefix}gray-700);
|
--#{$prefix}disabled-color: #{color-transparent(var(--#{$prefix}body-color), .4)};
|
||||||
|
|
||||||
--#{$prefix}border-color: var(--#{$prefix}dark-mode-border-color);
|
--#{$prefix}border-color: var(--#{$prefix}gray-700);
|
||||||
--#{$prefix}border-color-translucent: var(
|
--#{$prefix}border-color-translucent: var(
|
||||||
--#{$prefix}dark-mode-border-color-translucent
|
--#{$prefix}dark-mode-border-color-translucent
|
||||||
);
|
);
|
||||||
@@ -62,13 +64,6 @@ body {
|
|||||||
--#{$prefix}code-color: var(--#{$prefix}body-color);
|
--#{$prefix}code-color: var(--#{$prefix}body-color);
|
||||||
--#{$prefix}code-bg: #{$border-dark-color-dark};
|
--#{$prefix}code-bg: #{$border-dark-color-dark};
|
||||||
|
|
||||||
@each $color, $value in $theme-colors {
|
|
||||||
--#{$prefix}#{$color}-lt: #{theme-color-lighter($value, $dark)};
|
|
||||||
--#{$prefix}#{$color}-lt-rgb: #{to-rgb(
|
|
||||||
theme-color-lighter($value, $dark)
|
|
||||||
)};
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-brand-autodark {
|
.navbar-brand-autodark {
|
||||||
.navbar-brand-image {
|
.navbar-brand-image {
|
||||||
@include autodark-image;
|
@include autodark-image;
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ Navbar
|
|||||||
--#{$prefix}navbar-active-border-color: #{$navbar-active-border-color};
|
--#{$prefix}navbar-active-border-color: #{$navbar-active-border-color};
|
||||||
--#{$prefix}navbar-active-bg: #{$navbar-light-active-bg};
|
--#{$prefix}navbar-active-bg: #{$navbar-light-active-bg};
|
||||||
--#{$prefix}navbar-border-color: #{$navbar-border-color};
|
--#{$prefix}navbar-border-color: #{$navbar-border-color};
|
||||||
|
--#{$prefix}navbar-hover-color: #{$navbar-hover-color};
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
min-height: $navbar-height;
|
min-height: $navbar-height;
|
||||||
box-shadow: inset 0 calc(-1 * var(--#{$prefix}navbar-border-width)) 0 0 var(--#{$prefix}navbar-border-color);
|
box-shadow: inset 0 calc(-1 * var(--#{$prefix}navbar-border-width)) 0 0 var(--#{$prefix}navbar-border-color);
|
||||||
@@ -107,8 +108,8 @@ Navbar
|
|||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
position: relative;
|
position: relative;
|
||||||
min-width: 2rem;
|
min-width: 2.5rem;
|
||||||
min-height: 2rem;
|
min-height: 2.5rem;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border-radius: var(--#{$prefix}border-radius);
|
border-radius: var(--#{$prefix}border-radius);
|
||||||
|
|
||||||
@@ -122,11 +123,6 @@ Navbar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-nav {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.navbar-expand {
|
.navbar-expand {
|
||||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||||
$next: breakpoint-next($breakpoint, $grid-breakpoints);
|
$next: breakpoint-next($breakpoint, $grid-breakpoints);
|
||||||
@@ -146,6 +142,10 @@ Navbar
|
|||||||
.nav-item.active {
|
.nav-item.active {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
.nav-link {
|
||||||
|
color: var(--#{$prefix}navbar-active-color);
|
||||||
|
}
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -276,6 +276,9 @@ Navbar transparent
|
|||||||
Navbar nav
|
Navbar nav
|
||||||
*/
|
*/
|
||||||
.navbar-nav {
|
.navbar-nav {
|
||||||
|
--#{$prefix}nav-link-hover-bg: #{color-transparent(var(--#{$prefix}nav-link-color), 0.04)};
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
|
|
||||||
.nav-item {
|
.nav-item {
|
||||||
|
|||||||
@@ -81,6 +81,7 @@
|
|||||||
min-height: 2.25rem;
|
min-height: 2.25rem;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
max-width: 100%;
|
||||||
|
|
||||||
.page-wrapper & {
|
.page-wrapper & {
|
||||||
margin: var(--#{$prefix}page-padding-y) 0 0;
|
margin: var(--#{$prefix}page-padding-y) 0 0;
|
||||||
|
|||||||
@@ -2,31 +2,38 @@
|
|||||||
:host {
|
:host {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
|
@include media-breakpoint-up(lg) {
|
||||||
|
margin-left: calc(100vw - 100%);
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:root,
|
:root,
|
||||||
:host,
|
:host,
|
||||||
[data-bs-theme="light"] {
|
[data-bs-theme="light"] {
|
||||||
@each $name, $color in map-merge($theme-colors, $gray-colors) {
|
color-scheme: light;
|
||||||
--#{$prefix}#{$name}: #{$color};
|
--#{$prefix}spacer: var(--#{$prefix}spacer-2);
|
||||||
--#{$prefix}#{$name}-rgb: #{to-rgb($color)};
|
|
||||||
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};
|
|
||||||
--#{$prefix}#{$name}-darken: #{theme-color-darker($color)};
|
|
||||||
--#{$prefix}#{$name}-lt: #{theme-color-lighter($color)};
|
|
||||||
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $name, $value in $spacers {
|
--#{$prefix}bg-surface: var(--#{$prefix}bg-surface-primary);
|
||||||
--#{$prefix}spacer-#{$name}: #{$value};
|
--#{$prefix}bg-surface-primary: var(--#{$prefix}white);
|
||||||
}
|
--#{$prefix}bg-surface-secondary: var(--#{$prefix}gray-50);
|
||||||
--#{$prefix}spacer: #{$spacer};
|
--#{$prefix}bg-surface-tertiary: var(--#{$prefix}gray-50);
|
||||||
|
--#{$prefix}bg-surface-dark: var(--#{$prefix}gray-900);
|
||||||
--#{$prefix}bg-surface: #{$bg-surface};
|
--#{$prefix}bg-surface-inverted: var(--#{$prefix}gray-900);
|
||||||
--#{$prefix}bg-surface-secondary: #{$bg-surface-secondary};
|
|
||||||
--#{$prefix}bg-surface-tertiary: #{$bg-surface-tertiary};
|
|
||||||
--#{$prefix}bg-surface-dark: #{$bg-surface-dark};
|
|
||||||
--#{$prefix}bg-forms: var(--#{$prefix}bg-surface);
|
--#{$prefix}bg-forms: var(--#{$prefix}bg-surface);
|
||||||
|
|
||||||
|
--#{$prefix}text-inverted: var(--#{$prefix}gray-100);
|
||||||
|
|
||||||
|
--#{$prefix}body-color: var(--#{$prefix}gray-700);
|
||||||
|
--#{$prefix}body-bg: var(--#{$prefix}bg-surface-secondary);
|
||||||
|
|
||||||
|
--#{$prefix}link-color: var(--#{$prefix}primary);
|
||||||
|
--#{$prefix}link-hover-color: color-mix(in srgb, var(--#{$prefix}primary), #000 20%);
|
||||||
|
|
||||||
|
--#{$prefix}secondary: var(--#{$prefix}gray-500);
|
||||||
|
--#{$prefix}tertiary: var(--#{$prefix}gray-400);
|
||||||
|
|
||||||
--#{$prefix}border-color: #{$border-color};
|
--#{$prefix}border-color: #{$border-color};
|
||||||
--#{$prefix}border-color-translucent: #{$border-color-translucent};
|
--#{$prefix}border-color-translucent: #{$border-color-translucent};
|
||||||
--#{$prefix}border-dark-color: #{$border-dark-color};
|
--#{$prefix}border-dark-color: #{$border-dark-color};
|
||||||
@@ -50,23 +57,8 @@
|
|||||||
|
|
||||||
--#{$prefix}page-padding: #{$page-padding};
|
--#{$prefix}page-padding: #{$page-padding};
|
||||||
--#{$prefix}page-padding-y: #{$page-padding-y};
|
--#{$prefix}page-padding-y: #{$page-padding-y};
|
||||||
|
|
||||||
@include media-breakpoint-down($cards-grid-breakpoint) {
|
@include media-breakpoint-down($cards-grid-breakpoint) {
|
||||||
--#{$prefix}page-padding: #{$page-padding-sm};
|
--#{$prefix}page-padding: #{$page-padding-sm};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@each $name, $value in $font-weights {
|
|
||||||
--#{$prefix}font-weight-#{$name}: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $name, $value in $font-sizes {
|
|
||||||
--#{$prefix}font-size-h#{$name}: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $name, $value in $line-heights {
|
|
||||||
--#{$prefix}line-height-#{$name}: #{$value};
|
|
||||||
}
|
|
||||||
|
|
||||||
@each $name, $value in $box-shadows {
|
|
||||||
--#{$prefix}#{$name}: #{$value};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
padding: .25rem;
|
padding: .25rem;
|
||||||
color: var(--#{$prefix}muted);
|
color: var(--#{$prefix}secondary);
|
||||||
font-size: var(--#{$prefix}font-size-h5);
|
font-size: var(--#{$prefix}font-size-h5);
|
||||||
border-radius: var(--#{$prefix}border-radius);
|
border-radius: var(--#{$prefix}border-radius);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|||||||
@@ -4,5 +4,5 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.body-gradient {
|
.body-gradient {
|
||||||
background: var(--tblr-bg-surface) linear-gradient(to bottom, var(--tblr-bg-surface-secondary) 12%, var(--tblr-bg-surface) 99%) repeat-x top center/100% 100vh;
|
background: var(--#{$prefix}bg-surface) linear-gradient(to bottom, var(--#{$prefix}bg-surface-secondary) 12%, var(--#{$prefix}bg-surface) 99%) repeat-x top center/100% 100vh;
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.hero-description {
|
.hero-description {
|
||||||
color: var(--#{$prefix}muted);
|
color: var(--#{$prefix}secondary);
|
||||||
font-size: var(--#{$prefix}font-size-h2);
|
font-size: var(--#{$prefix}font-size-h2);
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ $pricing-card-width: 22rem;
|
|||||||
|
|
||||||
&.featured {
|
&.featured {
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
border: 2px solid $primary;
|
border: 2px solid var(--#{$prefix}primary);
|
||||||
order: -1;
|
order: -1;
|
||||||
|
|
||||||
@include media-breakpoint-up(md) {
|
@include media-breakpoint-up(md) {
|
||||||
|
|||||||
@@ -81,7 +81,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.section-description {
|
.section-description {
|
||||||
color: var(--#{$prefix}muted);
|
color: var(--#{$prefix}secondary);
|
||||||
font-size: var(--#{$prefix}font-size-h3);
|
font-size: var(--#{$prefix}font-size-h3);
|
||||||
line-height: var(--#{$prefix}line-height-h3);
|
line-height: var(--#{$prefix}line-height-h3);
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
|
|||||||
@@ -6,6 +6,9 @@
|
|||||||
@return shade-color($color, 10%);
|
@return shade-color($color, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Replace all occurrences of a substring within a string.
|
||||||
|
//
|
||||||
@function str-replace($string, $search, $replace: "") {
|
@function str-replace($string, $search, $replace: "") {
|
||||||
$index: str-index($string, $search);
|
$index: str-index($string, $search);
|
||||||
|
|
||||||
@@ -42,3 +45,52 @@
|
|||||||
@return if($n > 1, nth($breakpoint-names, $n - 1), null);
|
@return if($n > 1, nth($breakpoint-names, $n - 1), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Escape SVG strings.
|
||||||
|
//
|
||||||
|
@function escape-svg($string) {
|
||||||
|
@if str-index($string, "data:image/svg+xml") {
|
||||||
|
@each $char, $encoded in $escaped-characters {
|
||||||
|
// Do not escape the url brackets
|
||||||
|
@if str-index($string, "url(") == 1 {
|
||||||
|
$string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
|
||||||
|
} @else {
|
||||||
|
$string: str-replace($string, $char, $encoded);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@return $string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a given value to a percentage string.
|
||||||
|
*
|
||||||
|
* @param {Number} $value - The value to be converted to a percentage.
|
||||||
|
* @return {String} - The percentage representation of the value.
|
||||||
|
*/
|
||||||
|
@function to-percentage($value) {
|
||||||
|
@return if(unitless($value), percentage($value), $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a transparent version of the given color.
|
||||||
|
*
|
||||||
|
* @param {Color} $color - The base color to be made transparent.
|
||||||
|
* @param {Number} $alpha - The level of transparency, ranging from 0 (fully transparent) to 1 (fully opaque). Default is 1.
|
||||||
|
* @return {Color} - The resulting color with the specified transparency.
|
||||||
|
*/
|
||||||
|
@function color-transparent($color, $alpha: 1, $background: transparent) {
|
||||||
|
@if $alpha == 1 {
|
||||||
|
@return $color;
|
||||||
|
} @else {
|
||||||
|
@return color-mix(in srgb, #{$color} #{to-percentage($alpha)}, $background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@function url-svg($svg) {
|
||||||
|
$svg: str-replace($svg, '#', '%23');
|
||||||
|
$svg: str-replace($svg, '<svg', '<svg xmlns="http://www.w3.org/2000/svg"');
|
||||||
|
|
||||||
|
@return url('data:image/svg+xml;charset=UTF-8,#{$svg}');
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
@mixin subheader($include-color: true, $include-line-height: true) {
|
@mixin subheader($include-color: true, $include-line-height: true) {
|
||||||
font-size: $h5-font-size;
|
font-size: $h5-font-size;
|
||||||
font-weight: var(--#{$prefix}font-weight-bold);
|
font-weight: var(--#{$prefix}font-weight-medium);
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
letter-spacing: .04em;
|
letter-spacing: .04em;
|
||||||
|
|
||||||
@if $include-line-height {
|
@if $include-line-height {
|
||||||
line-height: $h5-line-height;
|
line-height: $h5-line-height;
|
||||||
@@ -13,9 +13,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@mixin scrollbar($color: var(--#{$prefix}body-color-rgb)) {
|
@mixin scrollbar {
|
||||||
#{if(&, "&", "*")} {
|
#{if(&, "&", "*")} {
|
||||||
scrollbar-color: rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .16);
|
scrollbar-color: color-transparent(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color)), .20) transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
#{if(&, "&", "*")}::-webkit-scrollbar {
|
#{if(&, "&", "*")}::-webkit-scrollbar {
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
#{if(&, "&", "*")}::-webkit-scrollbar-thumb {
|
#{if(&, "&", "*")}::-webkit-scrollbar-thumb {
|
||||||
border-radius: 1rem;
|
border-radius: 1rem;
|
||||||
border: 5px solid transparent;
|
border: 5px solid transparent;
|
||||||
box-shadow: inset 0 0 0 1rem rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .16);
|
box-shadow: inset 0 0 0 1rem color-transparent(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color)), .20);
|
||||||
}
|
}
|
||||||
|
|
||||||
#{if(&, "&", "*")}::-webkit-scrollbar-track {
|
#{if(&, "&", "*")}::-webkit-scrollbar-track {
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#{if(&, "&", "*")}:hover::-webkit-scrollbar-thumb {
|
#{if(&, "&", "*")}:hover::-webkit-scrollbar-thumb {
|
||||||
box-shadow: inset 0 0 0 1rem rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .32);
|
box-shadow: inset 0 0 0 1rem color-transparent(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color)), .40);
|
||||||
}
|
}
|
||||||
|
|
||||||
#{if(&, "&", "*")}::-webkit-scrollbar-corner {
|
#{if(&, "&", "*")}::-webkit-scrollbar-corner {
|
||||||
|
|||||||
1
core/scss/tabler-props.scss
Normal file
1
core/scss/tabler-props.scss
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@import "props"
|
||||||
121
core/scss/tabler-themes.scss
Normal file
121
core/scss/tabler-themes.scss
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
@import "config";
|
||||||
|
|
||||||
|
[data-bs-theme-base="slate"] {
|
||||||
|
--#{$prefix}gray-50: #f8fafc;
|
||||||
|
--#{$prefix}gray-100: #f1f5f9;
|
||||||
|
--#{$prefix}gray-200: #e2e8f0;
|
||||||
|
--#{$prefix}gray-300: #cbd5e1;
|
||||||
|
--#{$prefix}gray-400: #94a3b8;
|
||||||
|
--#{$prefix}gray-500: #64748b;
|
||||||
|
--#{$prefix}gray-600: #475569;
|
||||||
|
--#{$prefix}gray-700: #334155;
|
||||||
|
--#{$prefix}gray-800: #1e293b;
|
||||||
|
--#{$prefix}gray-900: #0f172a;
|
||||||
|
--#{$prefix}gray-950: #020617;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme-base="gray"] {
|
||||||
|
--#{$prefix}gray-50: #f9fafb;
|
||||||
|
--#{$prefix}gray-100: #f3f4f6;
|
||||||
|
--#{$prefix}gray-200: #e5e7eb;
|
||||||
|
--#{$prefix}gray-300: #d1d5db;
|
||||||
|
--#{$prefix}gray-400: #9ca3af;
|
||||||
|
--#{$prefix}gray-500: #6b7280;
|
||||||
|
--#{$prefix}gray-600: #4b5563;
|
||||||
|
--#{$prefix}gray-700: #374151;
|
||||||
|
--#{$prefix}gray-800: #1f2937;
|
||||||
|
--#{$prefix}gray-900: #111827;
|
||||||
|
--#{$prefix}gray-950: #030712;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme-base="zinc"] {
|
||||||
|
--#{$prefix}gray-50: #fafafa;
|
||||||
|
--#{$prefix}gray-100: #f4f4f5;
|
||||||
|
--#{$prefix}gray-200: #e4e4e7;
|
||||||
|
--#{$prefix}gray-300: #d4d4d8;
|
||||||
|
--#{$prefix}gray-400: #a1a1aa;
|
||||||
|
--#{$prefix}gray-500: #71717a;
|
||||||
|
--#{$prefix}gray-600: #52525b;
|
||||||
|
--#{$prefix}gray-700: #3f3f46;
|
||||||
|
--#{$prefix}gray-800: #27272a;
|
||||||
|
--#{$prefix}gray-900: #18181b;
|
||||||
|
--#{$prefix}gray-950: #09090b;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme-base="neutral"] {
|
||||||
|
--#{$prefix}gray-50: #fafafa;
|
||||||
|
--#{$prefix}gray-100: #f5f5f5;
|
||||||
|
--#{$prefix}gray-200: #e5e5e5;
|
||||||
|
--#{$prefix}gray-300: #d4d4d4;
|
||||||
|
--#{$prefix}gray-400: #a3a3a3;
|
||||||
|
--#{$prefix}gray-500: #737373;
|
||||||
|
--#{$prefix}gray-600: #525252;
|
||||||
|
--#{$prefix}gray-700: #404040;
|
||||||
|
--#{$prefix}gray-800: #262626;
|
||||||
|
--#{$prefix}gray-900: #171717;
|
||||||
|
--#{$prefix}gray-950: #0a0a0a;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme-base="stone"] {
|
||||||
|
--#{$prefix}gray-50: #fafaf9;
|
||||||
|
--#{$prefix}gray-100: #f5f5f4;
|
||||||
|
--#{$prefix}gray-200: #e7e5e4;
|
||||||
|
--#{$prefix}gray-300: #d6d3d1;
|
||||||
|
--#{$prefix}gray-400: #a8a29e;
|
||||||
|
--#{$prefix}gray-500: #78716c;
|
||||||
|
--#{$prefix}gray-600: #57534e;
|
||||||
|
--#{$prefix}gray-700: #44403c;
|
||||||
|
--#{$prefix}gray-800: #292524;
|
||||||
|
--#{$prefix}gray-900: #1c1917;
|
||||||
|
--#{$prefix}gray-950: #0c0a09;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme-base="pink"] {
|
||||||
|
--#{$prefix}gray-50: #fdf2f8;
|
||||||
|
--#{$prefix}gray-100: #fce7f3;
|
||||||
|
--#{$prefix}gray-200: #fbcfe8;
|
||||||
|
--#{$prefix}gray-300: #f9a8d4;
|
||||||
|
--#{$prefix}gray-400: #f472b6;
|
||||||
|
--#{$prefix}gray-500: #ec4899;
|
||||||
|
--#{$prefix}gray-600: #db2777;
|
||||||
|
--#{$prefix}gray-700: #be185d;
|
||||||
|
--#{$prefix}gray-800: #9d174d;
|
||||||
|
--#{$prefix}gray-900: #831843;
|
||||||
|
--#{$prefix}gray-950: #500724;
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $name, $value in $extra-colors {
|
||||||
|
[data-bs-theme-primary="#{$name}"] {
|
||||||
|
--#{$prefix}primary: #{$value};
|
||||||
|
--#{$prefix}primary-rgb: #{to-rgb($value)};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $value in (0, .5, 1, 1.5, 2) {
|
||||||
|
[data-bs-theme-radius="#{$value}"] {
|
||||||
|
--#{$prefix}border-radius-scale: #{$value};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-bs-theme-primary="inverted"] {
|
||||||
|
--#{$prefix}primary: var(--#{$prefix}gray-800);
|
||||||
|
--#{$prefix}primary-fg: var(--#{$prefix}light);
|
||||||
|
--#{$prefix}primary-rgb: #{to-rgb($dark)};
|
||||||
|
|
||||||
|
&[data-bs-theme="dark"],
|
||||||
|
[data-bs-theme="dark"] {
|
||||||
|
--#{$prefix}primary: #{$light};
|
||||||
|
--#{$prefix}primary-fg: var(--#{$prefix}dark);
|
||||||
|
--#{$prefix}primary-rgb: #{to-rgb($light)};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $name, $value in (monospace: $font-family-monospace, sans-serif: $font-family-sans-serif, serif: $font-family-serif, comic: $font-family-comic) {
|
||||||
|
[data-bs-theme-font="#{$name}"] {
|
||||||
|
--#{$prefix}body-font-family: var(--#{$prefix}font-#{$name});
|
||||||
|
|
||||||
|
@if $name == "monospace" {
|
||||||
|
--#{$prefix}body-font-size: 80%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,9 @@
|
|||||||
@import "vendor/dropzone";
|
@import "vendor/dropzone";
|
||||||
@import "vendor/fslightbox";
|
@import "vendor/fslightbox";
|
||||||
@import "vendor/plyr";
|
@import "vendor/plyr";
|
||||||
@import "vendor/tinymce";
|
@import "vendor/wysiwyg";
|
||||||
@import "vendor/stars-rating";
|
@import "vendor/stars-rating";
|
||||||
@import "vendor/coloris";
|
@import "vendor/coloris";
|
||||||
@import "vendor/typed";
|
@import "vendor/typed";
|
||||||
|
@import "vendor/turbo";
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,2 @@
|
|||||||
@import "core";
|
@import "core";
|
||||||
|
|
||||||
|
|
||||||
@@ -1,24 +1,177 @@
|
|||||||
.accordion {
|
.accordion {
|
||||||
--#{$prefix}accordion-color: #{$accordion-color};
|
--#{$prefix}accordion-color: var(--#{$prefix}body-color);
|
||||||
|
--#{$prefix}accordion-border-color: var(--#{$prefix}border-color);
|
||||||
|
--#{$prefix}accordion-border-radius: #{$accordion-border-radius};
|
||||||
|
--#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
|
||||||
|
--#{$prefix}accordion-padding-x: #{$accordion-body-padding-x};
|
||||||
|
--#{$prefix}accordion-gap: 0;
|
||||||
|
--#{$prefix}accordion-active-color: #{$accordion-button-active-color};
|
||||||
|
--#{$prefix}accordion-btn-color: var(--#{$prefix}accordion-color);
|
||||||
|
--#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
|
||||||
|
--#{$prefix}accordion-btn-toggle-width: 1.25rem;
|
||||||
|
--#{$prefix}accordion-btn-padding-x: var(--#{$prefix}accordion-padding-x);
|
||||||
|
--#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
|
||||||
|
--#{$prefix}accordion-btn-font-weight: var(--#{$prefix}font-weight-medium);
|
||||||
|
--#{$prefix}accordion-body-padding-x: var(--#{$prefix}accordion-padding-x);
|
||||||
|
--#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--#{$prefix}accordion-gap);
|
||||||
}
|
}
|
||||||
|
|
||||||
.accordion-button {
|
.accordion-button {
|
||||||
&:focus:not(:focus-visible) {
|
position: relative;
|
||||||
outline: none;
|
display: flex;
|
||||||
box-shadow: none;
|
align-items: center;
|
||||||
}
|
width: 100%;
|
||||||
|
padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-padding-x);
|
||||||
&:after {
|
color: inherit;
|
||||||
opacity: $text-secondary-opacity;
|
text-align: inherit;
|
||||||
}
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
font-size: inherit;
|
||||||
|
font-weight: var(--#{$prefix}accordion-btn-font-weight);
|
||||||
|
gap: .75rem;
|
||||||
|
|
||||||
&:not(.collapsed) {
|
&:not(.collapsed) {
|
||||||
font-weight: var(--#{$prefix}font-weight-bold);
|
|
||||||
border-bottom-color: transparent;
|
border-bottom-color: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
|
color: var(--#{$prefix}accordion-active-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&:after {
|
.accordion-header {
|
||||||
opacity: 1;
|
margin: 0;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
gap: 1rem;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
color: var(--#{$prefix}accordion-btn-color);
|
||||||
|
text-align: left;
|
||||||
|
background-color: transparent;
|
||||||
|
border: 0;
|
||||||
|
overflow-anchor: none;
|
||||||
|
transition: transform $transition-time;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus {
|
||||||
|
z-index: 3;
|
||||||
|
outline: 0;
|
||||||
|
box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
|
||||||
|
|
||||||
|
&:not(:focus-visible) {
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.accordion-button-icon {
|
||||||
|
color: var(--#{$prefix}secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-button-toggle {
|
||||||
|
display: flex;
|
||||||
|
line-height: 1;
|
||||||
|
transition: $transition-time transform;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: 0;
|
||||||
|
color: var(--#{$prefix}secondary);
|
||||||
|
width: var(--#{$prefix}accordion-btn-toggle-width);
|
||||||
|
height: var(--#{$prefix}accordion-btn-toggle-width);
|
||||||
|
|
||||||
|
.accordion-button:not(.collapsed) & {
|
||||||
|
transform: rotate(-180deg);
|
||||||
|
color: var(--#{$prefix}accordion-active-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
path {
|
||||||
|
transition: $transition-time opacity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-button-toggle-plus {
|
||||||
|
.accordion-button:not(.collapsed) & {
|
||||||
|
path:first-child {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-item {
|
||||||
|
color: var(--#{$prefix}accordion-color);
|
||||||
|
border: var(--#{$prefix}border-width) solid var(--#{$prefix}accordion-border-color);
|
||||||
|
|
||||||
|
&:first-of-type {
|
||||||
|
@include border-top-radius(var(--#{$prefix}accordion-border-radius));
|
||||||
|
|
||||||
|
> .accordion-header {
|
||||||
|
@include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(:first-of-type) {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-of-type {
|
||||||
|
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
||||||
|
|
||||||
|
> .accordion-header {
|
||||||
|
&.collapsed {
|
||||||
|
@include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .accordion-collapse {
|
||||||
|
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-body {
|
||||||
|
color: var(--#{$prefix}secondary);
|
||||||
|
padding: 0 var(--#{$prefix}accordion-body-padding-x) var(--#{$prefix}accordion-body-padding-y);
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-flush {
|
||||||
|
> .accordion-item {
|
||||||
|
border-right: 0;
|
||||||
|
border-left: 0;
|
||||||
|
@include border-radius(0);
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .accordion-collapse,
|
||||||
|
> .accordion-header .accordion-button,
|
||||||
|
> .accordion-header .accordion-button.collapsed {
|
||||||
|
@include border-radius(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-tabs {
|
||||||
|
--#{$prefix}accordion-gap: 0.75rem;
|
||||||
|
|
||||||
|
> .accordion-item {
|
||||||
|
border: var(--#{$prefix}border-width) solid var(--#{$prefix}accordion-border-color);
|
||||||
|
border-radius: var(--#{$prefix}accordion-border-radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.accordion-inverted {
|
||||||
|
.accordion-button-toggle {
|
||||||
|
order: -1;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,59 +1,101 @@
|
|||||||
.alert {
|
.alert {
|
||||||
--#{$prefix}alert-color: #{var(--#{$prefix}secondary)};
|
// scss-docs-start alert-variables
|
||||||
--#{$prefix}alert-bg: #{var(--#{$prefix}bg-surface)};
|
--#{$prefix}alert-color: var(--#{$prefix}body-color);
|
||||||
border: $alert-border-width var(--#{$prefix}border-style) $alert-border-color;
|
--#{$prefix}alert-bg: #{color-transparent(var(--#{$prefix}alert-color), .1)};
|
||||||
border-left: .25rem var(--#{$prefix}border-style) var(--#{$prefix}alert-color);
|
--#{$prefix}alert-padding-x: #{$alert-padding-x};
|
||||||
box-shadow: $alert-shadow;
|
--#{$prefix}alert-padding-y: #{$alert-padding-y};
|
||||||
|
--#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
|
||||||
|
--#{$prefix}alert-border-color: #{color-transparent(var(--#{$prefix}alert-color), .2)};
|
||||||
|
--#{$prefix}alert-border: var(--#{$prefix}border-width) solid var(--#{$prefix}alert-border-color);
|
||||||
|
--#{$prefix}alert-border-radius: var(--#{$prefix}border-radius);
|
||||||
|
--#{$prefix}alert-link-color: inherit;
|
||||||
|
--#{$prefix}alert-heading-font-weight: var(--#{$prefix}font-weight-medium);
|
||||||
|
// scss-docs-end
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
|
||||||
|
margin-bottom: var(--#{$prefix}alert-margin-bottom);
|
||||||
|
background-color: color-mix(in srgb, var(--#{$prefix}alert-bg), var(--#{$prefix}bg-surface));
|
||||||
|
border-radius: var(--#{$prefix}alert-border-radius);
|
||||||
|
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}alert-border-color);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
>:last-child {
|
.alert-heading {
|
||||||
margin-bottom: 0;
|
color: inherit;
|
||||||
|
margin-bottom: .25rem; // todo: use variable
|
||||||
|
font-weight: var(--#{$prefix}alert-heading-font-weight);
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-description {
|
||||||
|
color: var(--#{$prefix}secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
color: var(--#{$prefix}alert-color);
|
||||||
|
width: 1.25rem !important; // todo: use variable
|
||||||
|
height: 1.25rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-action {
|
||||||
|
color: var(--#{$prefix}alert-color);
|
||||||
|
text-decoration: underline;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-important {
|
.alert-list {
|
||||||
border-color: transparent;
|
margin: 0;
|
||||||
background: var(--#{$prefix}alert-color);
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
.alert-icon,
|
|
||||||
.alert-link,
|
|
||||||
.alert-title {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert-link:hover {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-close {
|
|
||||||
filter: var(--#{$prefix}btn-close-white-filter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-link, {
|
.alert-link {
|
||||||
|
font-weight: $alert-link-font-weight;
|
||||||
|
color: var(--#{$prefix}alert-link-color);
|
||||||
|
|
||||||
&,
|
&,
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--#{$prefix}alert-color);
|
color: var(--#{$prefix}alert-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.alert-dismissible {
|
||||||
|
padding-right: 3rem; //todo: use variable
|
||||||
|
|
||||||
|
.btn-close {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(var(--#{$prefix}alert-padding-x) / 2 - 1px);
|
||||||
|
right: calc(var(--#{$prefix}alert-padding-y) / 2 - 1px);
|
||||||
|
z-index: 1;
|
||||||
|
padding: calc(var(--#{$prefix}alert-padding-y) * 1.25) var(--#{$prefix}alert-padding-x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-important {
|
||||||
|
border-color: var(--#{$prefix}alert-color);
|
||||||
|
background-color: var(--#{$prefix}alert-color);
|
||||||
|
color: var(--#{$prefix}white);
|
||||||
|
|
||||||
|
.alert-description {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-icon {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-minor {
|
||||||
|
background: transparent;
|
||||||
|
border-color: var(--tblr-border-color);
|
||||||
|
}
|
||||||
|
|
||||||
@each $name, $color in $theme-colors {
|
@each $name, $color in $theme-colors {
|
||||||
.alert-#{$name} {
|
.alert-#{$name} {
|
||||||
--#{$prefix}alert-color: var(--#{$prefix}#{$name});
|
--#{$prefix}alert-color: var(--#{$prefix}#{$name});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-icon {
|
|
||||||
color: var(--#{$prefix}alert-color);
|
|
||||||
width: 1.5rem !important;
|
|
||||||
height: 1.5rem !important;
|
|
||||||
margin: -.125rem $alert-padding-x -.125rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert-title {
|
|
||||||
font-size: $h4-font-size;
|
|
||||||
line-height: $h4-line-height;
|
|
||||||
font-weight: var(--#{$prefix}font-weight-bold);
|
|
||||||
margin-bottom: .25rem;
|
|
||||||
color: var(--#{$prefix}alert-color);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
.avatar {
|
.avatar {
|
||||||
--#{$prefix}avatar-size: #{$avatar-size};
|
--#{$prefix}avatar-size: var(--#{$prefix}avatar-list-size, #{$avatar-size});
|
||||||
--#{$prefix}avatar-status-size: #{$avatar-status-size};
|
--#{$prefix}avatar-status-size: #{$avatar-status-size};
|
||||||
--#{$prefix}avatar-bg: #{$avatar-bg};
|
--#{$prefix}avatar-bg: #{$avatar-bg};
|
||||||
--#{$prefix}avatar-box-shadow: #{$avatar-box-shadow};
|
--#{$prefix}avatar-box-shadow-color: var(--#{$prefix}border-color-translucent);
|
||||||
|
--#{$prefix}avatar-box-shadow: inset 0 0 0 1px var(--#{$prefix}avatar-box-shadow-color);
|
||||||
--#{$prefix}avatar-font-size: #{$avatar-font-size};
|
--#{$prefix}avatar-font-size: #{$avatar-font-size};
|
||||||
--#{$prefix}avatar-icon-size: #{$avatar-icon-size};
|
--#{$prefix}avatar-icon-size: #{$avatar-icon-size};
|
||||||
|
--#{$prefix}avatar-brand-size: #{$avatar-brand-size};
|
||||||
position: relative;
|
position: relative;
|
||||||
width: var(--#{$prefix}avatar-size);
|
width: var(--#{$prefix}avatar-size);
|
||||||
height: var(--#{$prefix}avatar-size);
|
height: var(--#{$prefix}avatar-size);
|
||||||
@@ -22,6 +24,7 @@
|
|||||||
background: var(--#{$prefix}avatar-bg) no-repeat center/cover;
|
background: var(--#{$prefix}avatar-bg) no-repeat center/cover;
|
||||||
border-radius: $avatar-border-radius;
|
border-radius: $avatar-border-radius;
|
||||||
box-shadow: var(--#{$prefix}avatar-box-shadow);
|
box-shadow: var(--#{$prefix}avatar-box-shadow);
|
||||||
|
transition: color $transition-time, background-color $transition-time, box-shadow $transition-time;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: var(--#{$prefix}avatar-icon-size);
|
width: var(--#{$prefix}avatar-icon-size);
|
||||||
@@ -38,6 +41,11 @@
|
|||||||
|
|
||||||
@at-root a#{&} {
|
@at-root a#{&} {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--#{$prefix}primary);
|
||||||
|
--#{$prefix}avatar-box-shadow-color: var(--#{$prefix}primary);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,11 +59,12 @@
|
|||||||
--#{$prefix}avatar-status-size: #{map-get($size, status-size)};
|
--#{$prefix}avatar-status-size: #{map-get($size, status-size)};
|
||||||
--#{$prefix}avatar-font-size: #{map-get($size, font-size)};
|
--#{$prefix}avatar-font-size: #{map-get($size, font-size)};
|
||||||
--#{$prefix}avatar-icon-size: #{map-get($size, icon-size)};
|
--#{$prefix}avatar-icon-size: #{map-get($size, icon-size)};
|
||||||
}
|
--#{$prefix}avatar-brand-size: #{map-get($size, brand-size)};
|
||||||
|
|
||||||
.avatar-#{$avatar-size} .badge:empty {
|
.badge:empty {
|
||||||
width: map-get($size, status-size);
|
width: map-get($size, status-size);
|
||||||
height: map-get($size, status-size);
|
height: map-get($size, status-size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +72,7 @@
|
|||||||
// Avatar list
|
// Avatar list
|
||||||
//
|
//
|
||||||
.avatar-list {
|
.avatar-list {
|
||||||
|
--#{$prefix}avatar-list-size: #{$avatar-size};
|
||||||
@include elements-list;
|
@include elements-list;
|
||||||
|
|
||||||
a.avatar {
|
a.avatar {
|
||||||
@@ -78,7 +88,13 @@
|
|||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
margin-right: calc(#{$avatar-list-spacing} * var(--#{$prefix}avatar-size)) !important;
|
margin-right: calc(#{$avatar-list-spacing} * var(--#{$prefix}avatar-size)) !important;
|
||||||
box-shadow: var(--#{$prefix}avatar-box-shadow), 0 0 0 2px var(--#{$prefix}card-cap-bg, var(--#{$prefix}card-bg, var(--#{$prefix}bg-surface)));
|
box-shadow: var(--#{$prefix}avatar-box-shadow), 0 0 0 2px var(--#{$prefix}card-bg, var(--#{$prefix}bg-surface));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@each $avatar-size, $size in $avatar-sizes {
|
||||||
|
.avatar-list-#{$avatar-size} {
|
||||||
|
--#{$prefix}avatar-list-size: #{map-get($size, size)};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,8 +102,6 @@
|
|||||||
// Avatar upload
|
// Avatar upload
|
||||||
//
|
//
|
||||||
.avatar-upload {
|
.avatar-upload {
|
||||||
width: 4rem;
|
|
||||||
height: 4rem;
|
|
||||||
border: var(--#{$prefix}border-width) dashed var(--#{$prefix}border-color);
|
border: var(--#{$prefix}border-width) dashed var(--#{$prefix}border-color);
|
||||||
background: $form-check-input-bg;
|
background: $form-check-input-bg;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
@@ -116,4 +130,16 @@
|
|||||||
.avatar-cover {
|
.avatar-cover {
|
||||||
margin-top: calc(-.5 * var(--#{$prefix}avatar-size));
|
margin-top: calc(-.5 * var(--#{$prefix}avatar-size));
|
||||||
box-shadow: 0 0 0 .25rem var(--#{$prefix}card-bg, var(--#{$prefix}body-bg));
|
box-shadow: 0 0 0 .25rem var(--#{$prefix}card-bg, var(--#{$prefix}body-bg));
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-brand {
|
||||||
|
width: var(--#{$prefix}avatar-brand-size);
|
||||||
|
height: var(--#{$prefix}avatar-brand-size);
|
||||||
|
position: absolute;
|
||||||
|
right: -2px;
|
||||||
|
bottom: -2px;
|
||||||
|
z-index: 1000;
|
||||||
|
background: var(--#{$prefix}bg-surface);
|
||||||
|
border-radius: var(--#{$prefix}border-radius);
|
||||||
|
border: 1px solid var(--#{$prefix}border-color);
|
||||||
}
|
}
|
||||||
@@ -1,36 +1,46 @@
|
|||||||
.badge {
|
.badge {
|
||||||
|
--#{$prefix}badge-padding-x: #{$badge-padding-x};
|
||||||
|
--#{$prefix}badge-padding-y: #{$badge-padding-y};
|
||||||
|
--#{$prefix}badge-font-size: #{$badge-font-size};
|
||||||
|
--#{$prefix}badge-font-weight: #{$badge-font-weight};
|
||||||
|
--#{$prefix}badge-color: #{$badge-color};
|
||||||
|
--#{$prefix}badge-border-radius: #{$badge-border-radius};
|
||||||
|
--#{$prefix}badge-icon-size: 1em;
|
||||||
|
--#{$prefix}badge-line-height: 1;
|
||||||
|
display: inline-flex;
|
||||||
|
padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
|
||||||
|
font-weight: var(--#{$prefix}badge-font-weight);
|
||||||
|
font-size: var(--#{$prefix}badge-font-size);
|
||||||
|
color: var(--#{$prefix}badge-color);
|
||||||
|
text-align: center;
|
||||||
|
white-space: nowrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
gap: .25rem;
|
||||||
background: $badge-bg-color;
|
background: $badge-bg-color;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) transparent;
|
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) transparent;
|
||||||
min-width: ($badge-padding-y * 2 ) + (divide($badge-font-size, 100%) * 1em);
|
border-radius: var(--#{$prefix}badge-border-radius);
|
||||||
font-weight: $headings-font-weight;
|
min-width: calc(1em + var(--#{$prefix}badge-padding-y) * 2 + 2px);
|
||||||
letter-spacing: .04em;
|
letter-spacing: 0.04em;
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
|
line-height: var(--#{$prefix}badge-line-height);
|
||||||
|
|
||||||
@at-root a#{&} {
|
@at-root a#{&} {
|
||||||
color: $card-bg;
|
background: var(--#{$prefix}bg-surface-secondary);
|
||||||
}
|
|
||||||
|
|
||||||
.avatar {
|
|
||||||
box-sizing: content-box;
|
|
||||||
width: 1.25rem;
|
|
||||||
height: 1.25rem;
|
|
||||||
margin: 0 .5rem 0 -.5rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: 1em;
|
width: 1em;
|
||||||
height: 1em;
|
height: 1em;
|
||||||
font-size: 1rem;
|
font-size: var(--#{$prefix}badge-icon-size);
|
||||||
stroke-width: 2;
|
stroke-width: 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge:empty,
|
.badge:empty,
|
||||||
.badge-empty {
|
.badge-dot {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: $badge-empty-size;
|
width: $badge-empty-size;
|
||||||
height: $badge-empty-size;
|
height: $badge-empty-size;
|
||||||
@@ -76,4 +86,28 @@
|
|||||||
|
|
||||||
.badge-blink {
|
.badge-blink {
|
||||||
animation: blink 2s infinite;
|
animation: blink 2s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Badge sizes
|
||||||
|
//
|
||||||
|
.badge-sm {
|
||||||
|
--#{$prefix}badge-font-size: #{$badge-font-size-sm};
|
||||||
|
--#{$prefix}badge-icon-size: 1em;
|
||||||
|
--#{$prefix}badge-padding-y: 2px;
|
||||||
|
--#{$prefix}badge-padding-x: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-lg {
|
||||||
|
--#{$prefix}badge-font-size: #{$badge-font-size-lg};
|
||||||
|
--#{$prefix}badge-icon-size: 1em;
|
||||||
|
--#{$prefix}badge-padding-y: 0.25rem;
|
||||||
|
--#{$prefix}badge-padding-x: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Badge with only icon
|
||||||
|
//
|
||||||
|
.badge-icononly {
|
||||||
|
--#{$prefix}badge-padding-x: 0;
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
--#{$prefix}btn-border-color: #{$btn-border-color};
|
--#{$prefix}btn-border-color: #{$btn-border-color};
|
||||||
--#{$prefix}btn-hover-bg: var(--#{$prefix}btn-bg);
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}btn-bg);
|
||||||
--#{$prefix}btn-hover-border-color: var(--#{$prefix}border-active-color);
|
--#{$prefix}btn-hover-border-color: var(--#{$prefix}border-active-color);
|
||||||
--#{$prefix}btn-box-shadow: var(--#{$prefix}box-shadow-input);
|
--#{$prefix}btn-box-shadow: var(--#{$prefix}shadow-input);
|
||||||
--#{$prefix}btn-active-color: #{$active-color};
|
--#{$prefix}btn-active-color: #{$active-color};
|
||||||
--#{$prefix}btn-active-bg: #{$active-bg};
|
--#{$prefix}btn-active-bg: #{$active-bg};
|
||||||
--#{$prefix}btn-active-border-color: #{$active-border-color};
|
--#{$prefix}btn-active-border-color: #{$active-border-color};
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
box-shadow: var(--#{$prefix}btn-box-shadow);
|
box-shadow: var(--#{$prefix}btn-box-shadow);
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: var(--#{$prefix}btn-icon-size);
|
width: var(--#{$prefix}btn-icon-size);
|
||||||
@@ -71,7 +72,7 @@
|
|||||||
//
|
//
|
||||||
// Button color variations
|
// Button color variations
|
||||||
//
|
//
|
||||||
@each $color, $value in $theme-colors {
|
@each $color, $value in map-merge($theme-colors, $social-colors) {
|
||||||
.btn-#{$color} {
|
.btn-#{$color} {
|
||||||
@if $color == 'dark' {
|
@if $color == 'dark' {
|
||||||
--#{$prefix}btn-border-color: var(--#{$prefix}dark-mode-border-color);
|
--#{$prefix}btn-border-color: var(--#{$prefix}dark-mode-border-color);
|
||||||
@@ -83,7 +84,7 @@
|
|||||||
--#{$prefix}btn-active-border-color: transparent;
|
--#{$prefix}btn-active-border-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
--#{$prefix}btn-color: var(--#{$prefix}#{$color}-fg);
|
--#{$prefix}btn-color: var(--#{$prefix}#{$color}-fg, #{$white});
|
||||||
--#{$prefix}btn-bg: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-bg: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
|
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
|
||||||
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color}-darken);
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color}-darken);
|
||||||
@@ -91,7 +92,7 @@
|
|||||||
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color}-darken);
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color}-darken);
|
||||||
--#{$prefix}btn-disabled-bg: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-disabled-bg: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color}-fg);
|
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color}-fg);
|
||||||
--#{$prefix}btn-box-shadow: var(--#{$prefix}box-shadow-input);
|
--#{$prefix}btn-box-shadow: var(--#{$prefix}shadow-input);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-outline-#{$color} {
|
.btn-outline-#{$color} {
|
||||||
@@ -106,21 +107,19 @@
|
|||||||
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-disabled-border-color: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-disabled-border-color: var(--#{$prefix}#{$color});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@each $name, $color in $theme-colors {
|
.btn-ghost-#{$color} {
|
||||||
.btn-ghost-#{$name} {
|
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-color: var(--#{$prefix}#{$name});
|
|
||||||
--#{$prefix}btn-bg: transparent;
|
--#{$prefix}btn-bg: transparent;
|
||||||
--#{$prefix}btn-border-color: transparent;
|
--#{$prefix}btn-border-color: transparent;
|
||||||
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$name}-fg);
|
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
|
||||||
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$name});
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$name});
|
--#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-active-color: var(--#{$prefix}#{$name}-fg);
|
--#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
|
||||||
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$name});
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-active-border-color: transparent;
|
--#{$prefix}btn-active-border-color: transparent;
|
||||||
--#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
|
--#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
|
||||||
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$name});
|
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-disabled-bg: transparent;
|
--#{$prefix}btn-disabled-bg: transparent;
|
||||||
--#{$prefix}btn-disabled-border-color: transparent;
|
--#{$prefix}btn-disabled-border-color: transparent;
|
||||||
--#{$prefix}gradient: none;
|
--#{$prefix}gradient: none;
|
||||||
@@ -185,9 +184,9 @@
|
|||||||
.btn-floating {
|
.btn-floating {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: $zindex-fixed;
|
z-index: $zindex-fixed;
|
||||||
bottom: 1.5rem;
|
bottom: 1rem;
|
||||||
right: 1.5rem;
|
left: 1rem;
|
||||||
border-radius: $border-radius-pill;
|
box-shadow: var(--#{$prefix}shadow-dropdown);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -224,6 +223,7 @@
|
|||||||
// Action button
|
// Action button
|
||||||
//
|
//
|
||||||
.btn-action {
|
.btn-action {
|
||||||
|
--#{$prefix}border-color: transparent;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: 0;
|
border: 0;
|
||||||
color: var(--#{$prefix}secondary);
|
color: var(--#{$prefix}secondary);
|
||||||
@@ -234,6 +234,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
border-radius: var(--#{$prefix}border-radius);
|
border-radius: var(--#{$prefix}border-radius);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
|
||||||
&:after {
|
&:after {
|
||||||
content: none;
|
content: none;
|
||||||
@@ -253,14 +254,6 @@
|
|||||||
&.show {
|
&.show {
|
||||||
color: var(--#{$prefix}primary);
|
color: var(--#{$prefix}primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
|
||||||
margin: 0;
|
|
||||||
width: 1.25rem;
|
|
||||||
height: 1.25rem;
|
|
||||||
font-size: 1.25rem;
|
|
||||||
stroke-width: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-actions {
|
.btn-actions {
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.calendar-date {
|
.calendar-date {
|
||||||
flex: 0 0 divide(100%, 7);
|
flex: 0 0 calc(100% / 7);
|
||||||
max-width: divide(100%, 7);
|
max-width: calc(100% / 7);
|
||||||
padding: .2rem;
|
padding: .2rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ Stacked card
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
margin: calc(var(--#{$prefix}card-cap-padding-y) * -1) calc(var(--#{$prefix}card-cap-padding-x) * -1) calc(var(--#{$prefix}card-cap-padding-y) * -1);
|
margin: calc(var(--#{$prefix}card-cap-padding-y) * -1) calc(var(--#{$prefix}card-cap-padding-x) * -1) calc(var(--#{$prefix}card-cap-padding-y) * -1);
|
||||||
padding: calc(var(--#{$prefix}card-cap-padding-y) * .5) calc(var(--#{$prefix}card-cap-padding-x) * .5) 0;
|
padding: calc(var(--#{$prefix}card-cap-padding-y) * .5) calc(var(--#{$prefix}card-cap-padding-x) * .5) 0;
|
||||||
|
border-radius: var(--#{$prefix}card-border-radius) var(--#{$prefix}card-border-radius) 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-header-pills {
|
.card-header-pills {
|
||||||
|
|||||||
@@ -1,7 +1,60 @@
|
|||||||
.btn-close {
|
.btn-close {
|
||||||
|
--#{$prefix}btn-close-color: currentColor;
|
||||||
|
--#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
|
||||||
|
--#{$prefix}btn-close-opacity: #{$btn-close-opacity};
|
||||||
|
--#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
|
||||||
|
--#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
|
||||||
|
--#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
|
||||||
|
--#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
|
||||||
|
--#{$prefix}btn-close-size: #{$btn-close-width};
|
||||||
|
|
||||||
|
width: var(--#{$prefix}btn-close-size);
|
||||||
|
height: var(--#{$prefix}btn-close-size);
|
||||||
|
padding: $btn-close-padding-y $btn-close-padding-x;
|
||||||
|
color: var(--#{$prefix}btn-close-color);
|
||||||
|
mask: var(--#{$prefix}btn-close-bg) no-repeat center/calc(var(--#{$prefix}btn-close-size) * .75);
|
||||||
|
background-color: var(--#{$prefix}btn-close-color);
|
||||||
|
border: 0;
|
||||||
|
border-radius: var(--tblr-border-radius);
|
||||||
|
opacity: var(--#{$prefix}btn-close-opacity);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--#{$prefix}btn-close-color);
|
||||||
|
text-decoration: none;
|
||||||
|
opacity: var(--#{$prefix}btn-close-hover-opacity);
|
||||||
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
outline: none;
|
outline: 0;
|
||||||
|
box-shadow: var(--#{$prefix}btn-close-focus-shadow);
|
||||||
|
opacity: var(--#{$prefix}btn-close-focus-opacity);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
&:disabled,
|
||||||
|
&.disabled {
|
||||||
|
pointer-events: none;
|
||||||
|
user-select: none;
|
||||||
|
opacity: var(--#{$prefix}btn-close-disabled-opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @mixin btn-close-white() {
|
||||||
|
// --#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .btn-close-white {
|
||||||
|
// @include btn-close-white();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// :root,
|
||||||
|
// [data-bs-theme="light"] {
|
||||||
|
// --#{$prefix}btn-close-filter: #{$btn-close-filter};
|
||||||
|
// }
|
||||||
|
|
||||||
|
// @if $enable-dark-mode {
|
||||||
|
// @include color-mode(dark, true) {
|
||||||
|
// @include btn-close-white();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
line-height: $line-height-base;
|
line-height: $line-height-base;
|
||||||
|
gap: .5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-item-icon {
|
.dropdown-item-icon {
|
||||||
@@ -108,6 +109,7 @@
|
|||||||
|
|
||||||
.dropdown-menu-card {
|
.dropdown-menu-card {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
min-width: 20rem;
|
||||||
|
|
||||||
> .card {
|
> .card {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user