1
0
mirror of https://github.com/tabler/tabler.git synced 2025-12-22 01:44:25 +04:00

Compare commits

..

1 Commits

Author SHA1 Message Date
codecalm
4842316907 feat: Enhance layout options in settings and update SCSS imports 2025-12-01 12:06:52 +01:00
26 changed files with 200 additions and 692 deletions

View File

@@ -1,7 +0,0 @@
---
"@tabler/core": patch
"@tabler/preview": patch
---
Added Driver.js library integration and Tour demo page for interactive product tours and onboarding guides.

View File

@@ -1,7 +0,0 @@
---
"@tabler/core": minor
"@tabler/preview": minor
---
Upgraded `apexcharts` from `3.54.1` to `5.3.6` and added CSS variables (`--chart-{id}-color-{index}`) for dynamic chart colors to fix compatibility with the new version.

View File

@@ -26,7 +26,7 @@ jobs:
if: false
steps:
- name: Clone repository
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Cache turbo build setup
uses: actions/cache@v4

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Cache turbo build setup
uses: actions/cache@v4

View File

@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v6
uses: actions/checkout@v5
with:
persist-credentials: false

View File

@@ -12,7 +12,7 @@ jobs:
name: Verify lock file integrity
steps:
- name: Clone Tabler
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Prevent lock file change
uses: xalvarez/prevent-file-change-action@v3
with:

View File

@@ -21,7 +21,7 @@ jobs:
pull-requests: write # to create pull request
steps:
- name: Checkout Repo
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Install PNPM
uses: pnpm/action-setup@v4

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v6
uses: actions/checkout@v5
- name: Cache turbo build setup
uses: actions/cache@v4

View File

@@ -166,14 +166,5 @@
"dist/turbo.es2017-umd.js"
],
"head": true
},
"driver.js": {
"npm": "driver.js",
"js": [
"dist/driver.js.iife.js"
],
"css": [
"dist/driver.css"
]
}
}

View File

@@ -5,31 +5,30 @@
"homepage": "https://tabler.io",
"scripts": {
"dev": "pnpm run clean && pnpm run copy && pnpm run watch",
"build": "pnpm run clean && pnpm run build-assets && pnpm run copy && pnpm run generate-sri",
"build-assets": "concurrently \"pnpm run css\" \"pnpm run js\"",
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
"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-compile": "sass --no-source-map --load-path=node_modules --style expanded scss/:dist/css/",
"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-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": "concurrently \"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-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-lint": "pnpm run css-lint-variables",
"css-lint-variables": "find-unused-sass-variables scss/ node_modules/bootstrap/scss/",
"js": "pnpm run js-compile && pnpm run js-minify",
"js-compile": "concurrently \"pnpm run js-compile-standalone\" \"pnpm run js-compile-standalone-esm\" \"pnpm run js-compile-theme\" \"pnpm run js-compile-theme-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-theme-esm": "rollup --environment THEME:true --environment ESM:true --config .build/rollup.config.mjs --sourcemap",
"js-compile-theme": "rollup --environment THEME:true --config .build/rollup.config.mjs --sourcemap",
"js-compile-standalone": "rollup --config .build/rollup.config.mjs --sourcemap",
"js-compile-standalone-esm": "rollup --environment ESM:true --config .build/rollup.config.mjs --sourcemap",
"js-minify": "concurrently \"pnpm run js-minify-standalone\" \"pnpm run js-minify-standalone-esm\" \"pnpm run js-minify-theme\" \"pnpm run js-minify-theme-esm\"",
"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": "concurrently \"pnpm run copy-img\" \"pnpm run copy-libs\" \"pnpm run copy-fonts\"",
"copy": "pnpm run copy-img && pnpm run copy-libs && pnpm run copy-fonts",
"copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
"copy-libs": "node .build/copy-libs.mjs",
"copy-fonts": "shx mkdir -p dist/fonts && shx cp -rf fonts/* dist/fonts",
@@ -156,7 +155,7 @@
"devDependencies": {
"@hotwired/turbo": "^8.0.18",
"@melloware/coloris": "^0.25.0",
"apexcharts": "^5.3.6",
"apexcharts": "3.54.1",
"autosize": "^6.0.1",
"choices.js": "^11.1.0",
"clipboard": "^2.0.11",
@@ -178,8 +177,7 @@
"sortablejs": "^1.15.6",
"star-rating.js": "^4.3.1",
"tom-select": "^2.4.3",
"typed.js": "^2.1.0",
"driver.js": "^1.0.0"
"typed.js": "^2.1.0"
},
"directories": {
"doc": "docs"

View File

@@ -13,6 +13,7 @@
@import 'layout/page';
@import 'layout/footer';
@import 'layout/dark';
@import 'layout/layout';
@import 'ui/accordion';
@import 'ui/alerts';

View File

@@ -1,5 +1,3 @@
@use 'sass:map';
html {
scrollbar-gutter: stable;
@@ -32,45 +30,3 @@ body {
}
@include scrollbar;
//
// Fluid container
//
.layout-fluid {
.container,
[class^='container-'],
[class*=' container-'] {
max-width: 100%;
}
}
//
// Boxed container
//
.layout-boxed {
--#{$prefix}theme-boxed-border-radius: 0;
--#{$prefix}theme-boxed-width: #{map.get($container-max-widths, xxl)};
@include media-breakpoint-up(md) {
background: $dark linear-gradient(to right, rgba(#fff, 0.1), transparent) fixed;
padding: 1rem;
--#{$prefix}theme-boxed-border-radius: #{$border-radius};
}
.page {
margin: 0 auto;
max-width: var(--#{$prefix}theme-boxed-width);
border-radius: var(--#{$prefix}theme-boxed-border-radius);
color: var(--#{$prefix}body-color);
@include media-breakpoint-up(md) {
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
background: var(--#{$prefix}body-bg);
}
> .navbar:first-child {
border-start-start-radius: var(--#{$prefix}theme-boxed-border-radius);
border-start-end-radius: var(--#{$prefix}theme-boxed-border-radius);
}
}
}

View File

@@ -0,0 +1,47 @@
@use 'sass:map';
//
// Fluid container
//
.layout-fluid,
[data-bs-theme-layout="fluid"],
[data-layout="fluid"] {
.container,
[class^='container-'],
[class*=' container-'] {
max-width: 100%;
}
}
//
// Boxed container
//
.layout-boxed,
[data-bs-theme-layout="boxed"],
[data-layout="boxed"] {
--#{$prefix}theme-boxed-border-radius: 0;
--#{$prefix}theme-boxed-width: #{map.get($container-max-widths, xxl)};
@include media-breakpoint-up(md) {
background: $dark linear-gradient(to right, rgba(#fff, 0.1), transparent) fixed;
padding: 1rem;
--#{$prefix}theme-boxed-border-radius: #{$border-radius};
}
.page {
margin: 0 auto;
max-width: var(--#{$prefix}theme-boxed-width);
border-radius: var(--#{$prefix}theme-boxed-border-radius);
color: var(--#{$prefix}body-color);
@include media-breakpoint-up(md) {
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
background: var(--#{$prefix}body-bg);
}
>.navbar:first-child {
border-start-start-radius: var(--#{$prefix}theme-boxed-border-radius);
border-start-end-radius: var(--#{$prefix}theme-boxed-border-radius);
}
}
}

View File

@@ -10,11 +10,10 @@ To create an offcanvas, add the `.offcanvas` class to a container element. You c
{% capture html -%}
<div
class="offcanvas offcanvas-start"
class="offcanvas offcanvas-start show"
tabindex="-1"
id="offcanvas"
aria-labelledby="offcanvasLabel"
data-bs-scroll="true"
>
<div class="offcanvas-body">
Content for the offcanvas goes here. You can place just about any Tabler component or custom
@@ -30,12 +29,11 @@ The offcanvas component is used to display a cookies banner. It is a great way t
{% capture html -%}
<div
class="offcanvas offcanvas-bottom h-auto"
class="offcanvas offcanvas-bottom h-auto show"
tabindex="-1"
id="offcanvasBottom"
aria-modal="true"
role="dialog"
data-bs-scroll="true"
>
<div class="offcanvas-body">
<div class="container">
@@ -60,12 +58,4 @@ The offcanvas component is used to display a cookies banner. It is a great way t
</div>
</div>
{%- endcapture %}
{% include "docs/example.html" html=html raw %}
<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('[data-bs-scroll="true"]').forEach(el => {
new bootstrap.Offcanvas(el, { scroll: true }).show();
});
});
</script>
{% include "docs/example.html" html=html raw %}

View File

@@ -4,8 +4,7 @@
"description": "",
"private": true,
"scripts": {
"build": "pnpm run clean && pnpm run build-assets && pnpm run html",
"build-assets": "concurrently \"pnpm run js\" \"pnpm run css\"",
"build": "pnpm run clean && pnpm run js && pnpm run css && pnpm run html ",
"html": "eleventy",
"js": "pnpm run js-compile && pnpm run js-minify",
"js-compile": "rollup --config .build/rollup.config.mjs --sourcemap",

341
pnpm-lock.yaml generated
View File

@@ -116,8 +116,8 @@ importers:
specifier: ^0.25.0
version: 0.25.0
apexcharts:
specifier: ^5.3.6
version: 5.3.6
specifier: 3.54.1
version: 3.54.1
autosize:
specifier: ^6.0.1
version: 6.0.1
@@ -130,9 +130,6 @@ importers:
countup.js:
specifier: ^2.9.0
version: 2.9.0
driver.js:
specifier: ^1.0.0
version: 1.4.0
dropzone:
specifier: ^6.0.0-beta.2
version: 6.0.0-beta.2
@@ -367,8 +364,8 @@ packages:
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
'@babel/compat-data@7.28.5':
resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
'@babel/compat-data@7.27.1':
resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==}
engines: {node: '>=6.9.0'}
'@babel/core@7.27.1':
@@ -379,24 +376,16 @@ packages:
resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.28.5':
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.27.2':
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-globals@7.28.0':
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
'@babel/helper-compilation-targets@7.27.1':
resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.27.1':
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-transforms@7.28.3':
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
'@babel/helper-module-transforms@7.27.1':
resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
@@ -409,16 +398,12 @@ packages:
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.28.5':
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.27.1':
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
'@babel/helpers@7.28.4':
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
'@babel/helpers@7.27.1':
resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.27.1':
@@ -426,11 +411,6 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/parser@7.28.5':
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/runtime-corejs3@7.27.1':
resolution: {integrity: sha512-909rVuj3phpjW6y0MCXAZ5iNeORePa6ldJvp2baWGcTjwqbBDDz6xoS5JHJ7lS88NlwLYj07ImL/8IUMtDZzTA==}
engines: {node: '>=6.9.0'}
@@ -443,26 +423,14 @@ packages:
resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==}
engines: {node: '>=6.9.0'}
'@babel/template@7.27.2':
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.27.1':
resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.28.5':
resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
engines: {node: '>=6.9.0'}
'@babel/types@7.27.1':
resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
engines: {node: '>=6.9.0'}
'@babel/types@7.28.5':
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
'@cacheable/memoize@2.0.3':
resolution: {integrity: sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==}
@@ -857,9 +825,6 @@ packages:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/gen-mapping@0.3.8':
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
engines: {node: '>=6.0.0'}
@@ -878,15 +843,9 @@ packages:
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@keyv/bigmap@1.1.0':
resolution: {integrity: sha512-MX7XIUNwVRK+hjZcAbNJ0Z8DREo+Weu9vinBOjGU1thEi9F6vPhICzBbk4CCf3eEefKRz7n6TfZXwUFZTSgj8Q==}
engines: {node: '>= 18'}
@@ -1268,31 +1227,6 @@ packages:
resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==}
engines: {node: '>=12'}
'@svgdotjs/svg.draggable.js@3.0.6':
resolution: {integrity: sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==}
peerDependencies:
'@svgdotjs/svg.js': ^3.2.4
'@svgdotjs/svg.filter.js@3.0.9':
resolution: {integrity: sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==}
engines: {node: '>= 0.8.0'}
'@svgdotjs/svg.js@3.2.5':
resolution: {integrity: sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==}
'@svgdotjs/svg.resize.js@2.0.5':
resolution: {integrity: sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==}
engines: {node: '>= 14.18'}
peerDependencies:
'@svgdotjs/svg.js': ^3.2.4
'@svgdotjs/svg.select.js': ^4.0.1
'@svgdotjs/svg.select.js@4.0.3':
resolution: {integrity: sha512-qkMgso1sd2hXKd1FZ1weO7ANq12sNmQJeGDjs46QwDVsxSRcHmvWKL2NDF7Yimpwf3sl5esOLkPqtV2bQ3v/Jg==}
engines: {node: '>= 14.18'}
peerDependencies:
'@svgdotjs/svg.js': ^3.2.4
'@swc/helpers@0.2.14':
resolution: {integrity: sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==}
@@ -1388,8 +1322,8 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
apexcharts@5.3.6:
resolution: {integrity: sha512-sVEPw+J0Gp0IHQabKu8cfdsxlfME0e36Wid7RIaPclGM2OUt+O7O4+6mfAmTUYhy5bDk8cNHzEhPfVtLCIXEJA==}
apexcharts@3.54.1:
resolution: {integrity: sha512-E4et0h/J1U3r3EwS/WlqJCQIbepKbp6wGUmaAwJOMjHUP4Ci0gxanLa7FR3okx6p9coi4st6J853/Cb1NP0vpA==}
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
@@ -1455,10 +1389,6 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
baseline-browser-mapping@2.8.31:
resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==}
hasBin: true
bcp-47-match@2.0.3:
resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==}
@@ -1499,11 +1429,6 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
browserslist@4.28.0:
resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -1526,9 +1451,6 @@ packages:
caniuse-lite@1.0.30001717:
resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==}
caniuse-lite@1.0.30001757:
resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==}
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -1715,15 +1637,6 @@ packages:
supports-color:
optional: true
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -1795,9 +1708,6 @@ packages:
resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
engines: {node: '>=10'}
driver.js@1.4.0:
resolution: {integrity: sha512-Gm64jm6PmcU+si21sQhBrTAM1JvUrR0QhNmjkprNLxohOBzul9+pNHXgQaT9lW84gwg9GMLB3NZGuGolsz5uew==}
dropzone@6.0.0-beta.2:
resolution: {integrity: sha512-k44yLuFFhRk53M8zP71FaaNzJYIzr99SKmpbO/oZKNslDjNXQsBTdfLs+iONd0U0L94zzlFzRnFdqbLcs7h9fQ==}
@@ -1825,9 +1735,6 @@ packages:
electron-to-chromium@1.5.149:
resolution: {integrity: sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==}
electron-to-chromium@1.5.262:
resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -2619,9 +2526,6 @@ packages:
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
node-releases@2.0.27:
resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
node-retrieve-globals@6.0.1:
resolution: {integrity: sha512-j0DeFuZ/Wg3VlklfbxUgZF/mdHMTEiEipBb3q0SpMMbHaV3AVfoUQF8UGxh1s/yjqO0TgRZd4Pi/x2yRqoQ4Eg==}
@@ -3294,6 +3198,37 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
svg.draggable.js@2.2.2:
resolution: {integrity: sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==}
engines: {node: '>= 0.8.0'}
svg.easing.js@2.0.0:
resolution: {integrity: sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==}
engines: {node: '>= 0.8.0'}
svg.filter.js@2.0.2:
resolution: {integrity: sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==}
engines: {node: '>= 0.8.0'}
svg.js@2.7.1:
resolution: {integrity: sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==}
svg.pathmorphing.js@0.1.3:
resolution: {integrity: sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==}
engines: {node: '>= 0.8.0'}
svg.resize.js@1.4.3:
resolution: {integrity: sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==}
engines: {node: '>= 0.8.0'}
svg.select.js@2.1.2:
resolution: {integrity: sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==}
engines: {node: '>= 0.8.0'}
svg.select.js@3.0.1:
resolution: {integrity: sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==}
engines: {node: '>= 0.8.0'}
term-size@2.2.1:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
@@ -3443,12 +3378,6 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
update-browserslist-db@1.1.4:
resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -3747,8 +3676,8 @@ snapshots:
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
'@argos-ci/api-client@0.8.1':
dependencies:
@@ -3790,22 +3719,22 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
'@babel/compat-data@7.28.5': {}
'@babel/compat-data@7.27.1': {}
'@babel/core@7.27.1':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/code-frame': 7.27.1
'@babel/generator': 7.28.5
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.27.1)
'@babel/helpers': 7.28.4
'@babel/parser': 7.28.5
'@babel/template': 7.27.2
'@babel/traverse': 7.28.5
'@babel/types': 7.28.5
'@babel/generator': 7.27.1
'@babel/helper-compilation-targets': 7.27.1
'@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1)
'@babel/helpers': 7.27.1
'@babel/parser': 7.27.1
'@babel/template': 7.27.1
'@babel/traverse': 7.27.1
'@babel/types': 7.27.1
convert-source-map: 2.0.0
debug: 4.4.3
debug: 4.4.1
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -3820,24 +3749,14 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.25
jsesc: 3.1.0
'@babel/generator@7.28.5':
'@babel/helper-compilation-targets@7.27.1':
dependencies:
'@babel/parser': 7.28.5
'@babel/types': 7.28.5
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-compilation-targets@7.27.2':
dependencies:
'@babel/compat-data': 7.28.5
'@babel/compat-data': 7.27.1
'@babel/helper-validator-option': 7.27.1
browserslist: 4.28.0
browserslist: 4.24.5
lru-cache: 5.1.1
semver: 6.3.1
'@babel/helper-globals@7.28.0': {}
'@babel/helper-module-imports@7.27.1':
dependencies:
'@babel/traverse': 7.27.1
@@ -3845,12 +3764,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/helper-module-transforms@7.28.3(@babel/core@7.27.1)':
'@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)':
dependencies:
'@babel/core': 7.27.1
'@babel/helper-module-imports': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
'@babel/traverse': 7.28.5
'@babel/helper-validator-identifier': 7.27.1
'@babel/traverse': 7.27.1
transitivePeerDependencies:
- supports-color
@@ -3858,23 +3777,17 @@ snapshots:
'@babel/helper-validator-identifier@7.27.1': {}
'@babel/helper-validator-identifier@7.28.5': {}
'@babel/helper-validator-option@7.27.1': {}
'@babel/helpers@7.28.4':
'@babel/helpers@7.27.1':
dependencies:
'@babel/template': 7.27.2
'@babel/types': 7.28.5
'@babel/template': 7.27.1
'@babel/types': 7.27.1
'@babel/parser@7.27.1':
dependencies:
'@babel/types': 7.27.1
'@babel/parser@7.28.5':
dependencies:
'@babel/types': 7.28.5
'@babel/runtime-corejs3@7.27.1':
dependencies:
core-js-pure: 3.42.0
@@ -3887,12 +3800,6 @@ snapshots:
'@babel/parser': 7.27.1
'@babel/types': 7.27.1
'@babel/template@7.27.2':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/parser': 7.28.5
'@babel/types': 7.28.5
'@babel/traverse@7.27.1':
dependencies:
'@babel/code-frame': 7.27.1
@@ -3905,28 +3812,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/traverse@7.28.5':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/generator': 7.28.5
'@babel/helper-globals': 7.28.0
'@babel/parser': 7.28.5
'@babel/template': 7.27.2
'@babel/types': 7.28.5
debug: 4.4.3
transitivePeerDependencies:
- supports-color
'@babel/types@7.27.1':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
'@babel/types@7.28.5':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
'@cacheable/memoize@2.0.3':
dependencies:
'@cacheable/utils': 2.1.0
@@ -4358,11 +4248,6 @@ snapshots:
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/gen-mapping@0.3.8':
dependencies:
'@jridgewell/set-array': 1.2.1
@@ -4380,18 +4265,11 @@ snapshots:
'@jridgewell/sourcemap-codec@1.5.0': {}
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@keyv/bigmap@1.1.0(keyv@5.5.3)':
dependencies:
hookified: 1.12.2
@@ -4695,25 +4573,6 @@ snapshots:
dependencies:
escape-string-regexp: 5.0.0
'@svgdotjs/svg.draggable.js@3.0.6(@svgdotjs/svg.js@3.2.5)':
dependencies:
'@svgdotjs/svg.js': 3.2.5
'@svgdotjs/svg.filter.js@3.0.9':
dependencies:
'@svgdotjs/svg.js': 3.2.5
'@svgdotjs/svg.js@3.2.5': {}
'@svgdotjs/svg.resize.js@2.0.5(@svgdotjs/svg.js@3.2.5)(@svgdotjs/svg.select.js@4.0.3(@svgdotjs/svg.js@3.2.5))':
dependencies:
'@svgdotjs/svg.js': 3.2.5
'@svgdotjs/svg.select.js': 4.0.3(@svgdotjs/svg.js@3.2.5)
'@svgdotjs/svg.select.js@4.0.3(@svgdotjs/svg.js@3.2.5)':
dependencies:
'@svgdotjs/svg.js': 3.2.5
'@swc/helpers@0.2.14': {}
'@swc/helpers@0.5.15':
@@ -4800,14 +4659,15 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
apexcharts@5.3.6:
apexcharts@3.54.1:
dependencies:
'@svgdotjs/svg.draggable.js': 3.0.6(@svgdotjs/svg.js@3.2.5)
'@svgdotjs/svg.filter.js': 3.0.9
'@svgdotjs/svg.js': 3.2.5
'@svgdotjs/svg.resize.js': 2.0.5(@svgdotjs/svg.js@3.2.5)(@svgdotjs/svg.select.js@4.0.3(@svgdotjs/svg.js@3.2.5))
'@svgdotjs/svg.select.js': 4.0.3(@svgdotjs/svg.js@3.2.5)
'@yr/monotone-cubic-spline': 1.0.3
svg.draggable.js: 2.2.2
svg.easing.js: 2.0.0
svg.filter.js: 2.0.2
svg.pathmorphing.js: 0.1.3
svg.resize.js: 1.4.3
svg.select.js: 3.0.1
argparse@1.0.10:
dependencies:
@@ -4871,8 +4731,6 @@ snapshots:
balanced-match@1.0.2: {}
baseline-browser-mapping@2.8.31: {}
bcp-47-match@2.0.3: {}
bcp-47-normalize@2.3.0:
@@ -4920,14 +4778,6 @@ snapshots:
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.24.5)
browserslist@4.28.0:
dependencies:
baseline-browser-mapping: 2.8.31
caniuse-lite: 1.0.30001757
electron-to-chromium: 1.5.262
node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.28.0)
buffer-from@1.1.2: {}
bundlewatch@0.4.1:
@@ -4963,8 +4813,6 @@ snapshots:
caniuse-lite@1.0.30001717: {}
caniuse-lite@1.0.30001757: {}
caseless@0.12.0: {}
ccount@2.0.1: {}
@@ -5139,10 +4987,6 @@ snapshots:
dependencies:
ms: 2.1.3
debug@4.4.3:
dependencies:
ms: 2.1.3
deepmerge@4.3.1: {}
delayed-stream@1.0.0: {}
@@ -5197,8 +5041,6 @@ snapshots:
dotenv@8.6.0: {}
driver.js@1.4.0: {}
dropzone@6.0.0-beta.2:
dependencies:
'@swc/helpers': 0.2.14
@@ -5230,8 +5072,6 @@ snapshots:
electron-to-chromium@1.5.149: {}
electron-to-chromium@1.5.262: {}
emoji-regex@8.0.0: {}
emoji-regex@9.2.2: {}
@@ -5994,8 +5834,6 @@ snapshots:
node-releases@2.0.19: {}
node-releases@2.0.27: {}
node-retrieve-globals@6.0.1:
dependencies:
acorn: 8.14.1
@@ -6709,6 +6547,37 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
svg.draggable.js@2.2.2:
dependencies:
svg.js: 2.7.1
svg.easing.js@2.0.0:
dependencies:
svg.js: 2.7.1
svg.filter.js@2.0.2:
dependencies:
svg.js: 2.7.1
svg.js@2.7.1: {}
svg.pathmorphing.js@0.1.3:
dependencies:
svg.js: 2.7.1
svg.resize.js@1.4.3:
dependencies:
svg.js: 2.7.1
svg.select.js: 2.1.2
svg.select.js@2.1.2:
dependencies:
svg.js: 2.7.1
svg.select.js@3.0.1:
dependencies:
svg.js: 2.7.1
term-size@2.2.1: {}
terser@5.44.0:
@@ -6838,12 +6707,6 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
update-browserslist-db@1.1.4(browserslist@4.28.0):
dependencies:
browserslist: 4.28.0
escalade: 3.2.0
picocolors: 1.1.1
uri-js@4.4.1:
dependencies:
punycode: 2.3.1

View File

@@ -3,8 +3,7 @@
"version": "1.4.0",
"private": true,
"scripts": {
"build": "pnpm run clean && pnpm run build-assets && pnpm run html",
"build-assets": "concurrently \"pnpm run css\" \"pnpm run js\"",
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run html",
"dev": "pnpm run clean && pnpm run watch",
"watch": "concurrently \"pnpm run watch-html\" \"pnpm run watch-css\" \"pnpm run watch-js\"",
"watch-html": "cross-env NODE_ENV=development eleventy --serve --port=3000 --watch --incremental",

View File

@@ -59,7 +59,6 @@ permalink: cards.html
</a>
</div>
<div class="col-md-6 col-lg-3">
{% include "cards/anomaly-alert.html" %}
</div>
<div class="col-md-6 col-lg-3">
@@ -198,7 +197,6 @@ permalink: cards.html
<div class="col-md-6 col-lg-3">{% include "cards/card.html" footer-elements="more,>switch" %}</div>
<div class="col-md-6 col-lg-3">{% include "cards/card.html" footer-elements=">avatars" %}</div>
<div class="col-md-6 col-lg-4">{% include "cards/billing-usage.html" %}</div>
<div class="col-md-6 col-lg-4">{% include "cards/card.html" header-tabs=true %}</div>
<div class="col-md-6 col-lg-4">{% include "cards/card.html" header-pills=true %}</div>
<div class="col-md-6 col-lg-4">{% include "cards/card-tabs.html" count=4 %}</div>

View File

@@ -1,223 +0,0 @@
---
title: Driver Tour
page-header: Driver Tour
page-libs: [driver.js]
page-menu: plugins.tour
layout: default
permalink: tour.html
---
<div class="row row-cards">
<div class="col-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Product Tour Example</h3>
<div class="card-actions">
{% include "ui/button.html" id="start-tour" text="Start Tour" icon="play" color="primary" element="button" %}
</div>
</div>
<div class="card-body">
<p>
Click the "Start Tour" button to begin an interactive tour of this page.
The tour will guide you through different elements and features.
</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card" id="tour-card-1">
<div class="card-header">
<h3 class="card-title">Welcome Section</h3>
</div>
<div class="card-body">
<p>This is the first card in our tour. It demonstrates how Driver.js highlights elements on the page.</p>
<div class="btn-list">
{% include "ui/button.html" text="Action Button" color="primary" element="button" %}
{% include "ui/button.html" text="Secondary" element="button" %}
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card" id="tour-card-2">
<div class="card-header">
<h3 class="card-title">Features Section</h3>
</div>
<div class="card-body">
<p>This card shows additional features and demonstrates the tour's ability to navigate between different
elements.</p>
<div class="form-selectgroup">
<label class="form-selectgroup-item">
<input type="radio" name="options" value="1" class="form-selectgroup-input" checked>
<span class="form-selectgroup-label">Option 1</span>
</label>
<label class="form-selectgroup-item">
<input type="radio" name="options" value="2" class="form-selectgroup-input">
<span class="form-selectgroup-label">Option 2</span>
</label>
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="card" id="tour-card-3">
<div class="card-header">
<h3 class="card-title">Navigation Example</h3>
</div>
<div class="card-body">
<p>This is a full-width card that demonstrates how the tour works with larger elements.</p>
<div class="table-responsive">
<table class="table table-vcenter">
<thead>
<tr>
<th>Name</th>
<th>Status</th>
<th>Role</th>
<th class="w-1"></th>
</tr>
</thead>
<tbody>
<tr>
<td>John Doe</td>
<td>{% include "ui/badge.html" text="Active" color="success" %}</td>
<td>Developer</td>
<td>
{% include "ui/button.html" text="Edit" size="sm" href="#" %}
</td>
</tr>
<tr>
<td>Jane Smith</td>
<td>{% include "ui/badge.html" text="Pending" color="warning" %}</td>
<td>Designer</td>
<td>
{% include "ui/button.html" text="Edit" size="sm" href="#" %}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" id="tour-card-4">
<div class="card-body text-center">
<div class="mb-3">
{% include "ui/icon.html" icon="settings" size="48" %}
</div>
<h3 class="card-title">Settings</h3>
<p class="text-secondary">Configure your application settings here.</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" id="tour-card-5">
<div class="card-body text-center">
<div class="mb-3">
{% include "ui/icon.html" icon="users" size="48" %}
</div>
<h3 class="card-title">Users</h3>
<p class="text-secondary">Manage your team members and permissions.</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" id="tour-card-6">
<div class="card-body text-center">
<div class="mb-3">
{% include "ui/icon.html" icon="chart-bar" size="48" %}
</div>
<h3 class="card-title">Analytics</h3>
<p class="text-secondary">View your application statistics and reports.</p>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
const driverObj = driver.js.driver({
allowClose: true,
overlayClickNext: true,
showButtons: ['next', 'previous', 'close'],
showProgress: true,
steps: [
{
element: '#start-tour',
popover: {
title: 'Welcome to the Tour!',
description: 'This button starts the interactive tour. Click it to begin exploring the page.',
side: 'bottom',
align: 'start'
}
},
{
element: '#tour-card-1',
popover: {
title: 'Welcome Section',
description: 'This is the first card in our tour. It demonstrates how Driver.js highlights elements on the page.',
side: 'right',
align: 'start'
}
},
{
element: '#tour-card-2',
popover: {
title: 'Features Section',
description: 'This card shows additional features and demonstrates the tour\'s ability to navigate between different elements.',
side: 'left',
align: 'start'
}
},
{
element: '#tour-card-3',
popover: {
title: 'Data Table',
description: 'This table shows how Driver.js works with larger elements. You can highlight entire sections of your page.',
side: 'top',
align: 'center'
}
},
{
element: '#tour-card-4',
popover: {
title: 'Settings Card',
description: 'This card demonstrates how the tour works with smaller, centered elements.',
side: 'top',
align: 'center'
}
},
{
element: '#tour-card-5',
popover: {
title: 'Users Card',
description: 'Another example card showing user management features.',
side: 'top',
align: 'center'
}
},
{
element: '#tour-card-6',
popover: {
title: 'Analytics Card',
description: 'The final step of the tour. This card shows analytics features.',
side: 'top',
align: 'center'
}
}
]
});
const startButton = document.getElementById('start-tour');
if (startButton) {
startButton.addEventListener('click', function () {
driverObj.drive();
});
}
});
</script>

View File

@@ -479,10 +479,6 @@
"url": "maps-vector.html",
"title": "Map vector"
},
"tour": {
"url": "tour.html",
"title": "Tour"
},
"turbo": {
"url": "turbo-loader.html",
"title": "Turbo loader"

View File

@@ -1,7 +0,0 @@
<div class="card">
<div class="card-body text-center">
<h3 class="card-title">Get alerted for anomalies</h3>
<p class="text-secondary">Automatically monitor your projects for anomalies and get notified.</p>
{% include "ui/button.html" text="Get 30 days for free" color="dark" %}
</div>
</div>

View File

@@ -1,69 +0,0 @@
<div class="card">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center mb-4">
<div>30 days remaining in cycle</div>
{% include "ui/button.html" text="Billing" %}
</div>
<div class="row mb-4">
<div class="col">
<div class="text-secondary small mb-1">Included Credit</div>
<div class="mb-2">$4.22 / $20</div>
{% include "ui/progress.html" value="21.1" size="sm" color="primary" %}
</div>
<div class="col-auto text-end">
<div class="text-secondary small mb-1">On-Demand Charges</div>
<div>$0</div>
</div>
</div>
<div class="space-y space-y-2">
<div class="d-flex justify-content-between">
<div>Edge Function Execution Units</div>
<div>$2.00</div>
</div>
<div class="d-flex justify-content-between">
<div>Edge Middleware Invocations</div>
<div>$0.65</div>
</div>
<div class="d-flex justify-content-between">
<div>Function Invocations</div>
<div>$0.60</div>
</div>
<div class="d-flex justify-content-between">
<div>On-Demand Concurrent Build Minutes</div>
<div>$0.32</div>
</div>
<div class="d-flex justify-content-between">
<div>Fluid Active CPU</div>
<div>$0.19</div>
</div>
<div class="d-flex justify-content-between">
<div>Function Duration</div>
<div>$0.18</div>
</div>
<div class="d-flex justify-content-between">
<div>Image Optimization Transformation</div>
<div>$0.10</div>
</div>
<div class="d-flex justify-content-between">
<div>Fast Origin Transfer</div>
<div>$0.08</div>
</div>
<div class="d-flex justify-content-between">
<div>Fluid Provisioned Memory</div>
<div>$0.04</div>
</div>
<div class="d-flex justify-content-between">
<div>Image Optimization Cache Writes</div>
<div>$0.02</div>
</div>
</div>
<div class="text-center mt-4">
<button class="btn btn-icon" aria-label="Expand">
{% include "ui/icon.html" icon="arrow-up" %}
</button>
</div>
</div>
</div>

View File

@@ -43,13 +43,14 @@
<label class="form-label">Font family</label>
<p class="form-hint">Choose the font family that fits your app.</p>
<div>
<div class="form-selectgroup">
{% assign fonts = 'sans-serif,serif,monospace,comic' | split: ',' %} {% for font in fonts %}
<label class="form-check">
<div class="form-selectgroup-item">
<input type="radio" name="theme-font" value="{{ font }}" class="form-check-input"{% if font == 'sans-serif' %} checked{% endif %} />
<div class="form-check-label">{{ font | capitalize }}</div>
</div>
<label class="form-selectgroup-item">
<input type="radio" name="theme-font" value="{{ font }}" class="form-selectgroup-input"{% if font == 'sans-serif' %} checked{% endif %} />
<span class="form-selectgroup-label">
<span class="form-selectgroup-check"></span>
<span class="display-6" style="font-family: var(--tblr-font-{{ font }})">Aa</span>
</span>
</label>
{% endfor %}
</div>
@@ -88,6 +89,19 @@
{% endfor %}
</div>
</div>
<div class="mb-4">
<label class="form-label">Layout</label>
<p class="form-hint">Choose the layout style for your app.</p>
{% assign layouts = 'fluid,boxed' | split: ',' %} {% for layout in layouts %}
<label class="form-check">
<div class="form-selectgroup-item">
<input type="radio" name="theme-layout" value="{{ layout }}" class="form-check-input"{% if layout == 'fluid' %} checked{% endif %} />
<div class="form-check-label">{{ layout | capitalize }}</div>
</div>
</label>
{% endfor %}
</div>
</div>
<div class="mt-auto space-y">
@@ -121,6 +135,7 @@
"theme-font": "sans-serif",
"theme-primary": "blue",
"theme-radius": "1",
"theme-layout": "fluid",
}
var url = new URL(window.location)

View File

@@ -18,7 +18,7 @@
{% endif %}
{% assign e = include.element | default: 'a' %}
<{{ e }}{% if e == 'a' %} href="{{ href }}"{% endif %}{% if include.type %} type="{{ include.type }}"{% endif %}{% if include.id %} id="{{ include.id }}"{% endif %} class="btn{% if include.height %} btn-{{ include.height }}{% endif %}{% if color %} btn-{% if include.outline %}outline-{% elsif include.ghost %}ghost-{% endif %}{{ color }}{% endif %}{% if include.disabled %} disabled{% endif %}{% if include.square %} btn-square{% endif %}{% if include.loading %} btn-loading{% endif %}{% if include.pill %} btn-pill{% endif %}{% if include['size'] %} btn-{{ include['size'] }}{% endif %}{% if include.class %} {{ include.class }}{% endif %}{% if include.block %} w-100{% endif %}{% if include.link %} btn-link{% endif %}{% if include.icon-only %} btn-icon{% endif %}"{% if include.external %} target="_blank" rel="noreferrer"{% endif %}{% if include.modal-id %} data-bs-toggle="modal" data-bs-target="#modal-{{ include.modal-id }}"{% endif %}{% if include.toast-id %} data-bs-toggle="toast" data-bs-target="#toast-{{ include.toast-id }}"{% endif %}{% if include.icon-only %} aria-label="{{ include.text | default: "Button" }}"{% endif %}{% if include.dismiss %} data-bs-dismiss="modal"{% endif %}>
<{{ e }}{% if e == 'a' %} href="{{ href }}"{% endif %}{% if include.type %} type="{{ include.type }}"{% endif %} class="btn{% if include.height %} btn-{{ include.height }}{% endif %}{% if color %} btn-{% if include.outline %}outline-{% elsif include.ghost %}ghost-{% endif %}{{ color }}{% endif %}{% if include.disabled %} disabled{% endif %}{% if include.square %} btn-square{% endif %}{% if include.loading %} btn-loading{% endif %}{% if include.pill %} btn-pill{% endif %}{% if include['size'] %} btn-{{ include['size'] }}{% endif %}{% if include.class %} {{ include.class }}{% endif %}{% if include.block %} w-100{% endif %}{% if include.link %} btn-link{% endif %}{% if include.icon-only %} btn-icon{% endif %}"{% if include.external %} target="_blank" rel="noreferrer"{% endif %}{% if include.modal-id %} data-bs-toggle="modal" data-bs-target="#modal-{{ include.modal-id }}"{% endif %}{% if include.toast-id %} data-bs-toggle="toast" data-bs-target="#toast-{{ include.toast-id }}"{% endif %}{% if include.icon-only %} aria-label="{{ include.text | default: "Button" }}"{% endif %}{% if include.dismiss %} data-bs-dismiss="modal"{% endif %}>
{% if include.spinner %}
{% include "ui/spinner.html" color=false size="sm" class=spinner-class element="span" %}{% endif %}
{% if include.icon %}{% include "ui/icon.html" icon=include.icon color=include.icon-color %}{% endif %}

View File

@@ -21,24 +21,6 @@
{% capture script %}
{% assign chart-type = data.type | default: 'bar' -%}
{% removeemptylines %}
<style>
:root {
{% if data.series %}
{% for serie in data.series %}
{% assign color = serie.color | default: data.color | default: 'primary' %}
{% assign opacity = serie.color-opacity | default: '100%' %}
--chart-{{ id }}-color-{{ forloop.index0 }}: color-mix(in srgb, transparent, var(--tblr-{{ color }}) {{ opacity }});
{% endfor %}
{% endif %}
{% if chart-type == 'area' %}
--chart-{{ id }}-fill-0: color-mix(in srgb, transparent, var(--tblr-primary) 16%);
--chart-{{ id }}-fill-1: color-mix(in srgb, transparent, var(--tblr-primary) 16%);
{% endif %}
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function () {
{% if environment == 'development' %}
@@ -115,8 +97,8 @@
{% if chart-type == 'area' %}
fill: {
colors: [
'var(--chart-{{ id }}-fill-0)',
'var(--chart-{{ id }}-fill-1)',
'color-mix(in srgb, transparent, var(--tblr-primary) {% if chart-type == 'area' %}16%{% else %}100%{% endif %})',
'color-mix(in srgb, transparent, var(--tblr-primary) {% if chart-type == 'area' %}16%{% else %}80%{% endif %})',
],
type: 'solid'
},
@@ -252,7 +234,9 @@
{% endif %}
{% if data.series %}
colors: [{% for serie in data.series %}'var(--chart-{{ id }}-color-{{ forloop.index0 }})'{% unless forloop.last %}, {% endunless %}{% endfor %}],
colors: [{% for serie in data.series %}{% assign color = serie.color | default: data.color | default: 'primary' %}
'color-mix(in srgb, transparent, var(--tblr-{{ color }}) {% if serie.color-opacity %}{{ serie.color-opacity }}{% else %}100%{% endif %})'{% unless forloop.last %}, {% endunless %}{% endfor %}
],
{% endif %}
legend: {

View File

@@ -11,32 +11,17 @@
"^build"
],
"inputs": [
"core/scss/**",
"core/js/**",
"core/img/**",
"core/fonts/**",
"core/.build/**",
"preview/pages/**",
"preview/scss/**",
"preview/js/**",
"preview/.build/**",
"docs/content/**",
"docs/scss/**",
"docs/js/**",
"docs/.build/**",
"shared/**",
"package.json",
"pnpm-lock.yaml"
"preview/**"
],
"outputs": [
"dist/**",
"demo/**"
"dist/**"
],
"cache": true
"cache": false
},
"dev": {
"cache": false,
"persistent": true
"persistent": false
},
"clean": {
"dependsOn": [
@@ -47,8 +32,7 @@
"bundlewatch": {
"dependsOn": [
"build"
],
"cache": true
]
}
}
}