mirror of
https://github.com/tabler/tabler.git
synced 2025-12-22 01:44:25 +04:00
Compare commits
2 Commits
dev-scss-i
...
dev-doc-ch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd8ef47ef1 | ||
|
|
0e935316f5 |
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
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": minor
|
|
||||||
---
|
|
||||||
|
|
||||||
Add a color palette in the signing component
|
|
||||||
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
|
||||||
@@ -3,18 +3,8 @@
|
|||||||
"changelog": "@changesets/cli/changelog",
|
"changelog": "@changesets/cli/changelog",
|
||||||
"commit": false,
|
"commit": false,
|
||||||
"fixed": [],
|
"fixed": [],
|
||||||
"linked": [
|
"linked": [],
|
||||||
[
|
|
||||||
"@tabler/core",
|
|
||||||
"@tabler/preview",
|
|
||||||
"@tabler/docs"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"access": "public",
|
"access": "public",
|
||||||
"baseBranch": "dev",
|
"baseBranch": "dev",
|
||||||
"ignore": [],
|
"ignore": []
|
||||||
"privatePackages": {
|
|
||||||
"version": true,
|
|
||||||
"tag": false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/docs": patch
|
"@tabler/docs": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Fix Docs search in dark mode
|
Fix input mask example in docs
|
||||||
@@ -2,4 +2,4 @@
|
|||||||
"@tabler/preview": patch
|
"@tabler/preview": patch
|
||||||
---
|
---
|
||||||
|
|
||||||
Update activity messages
|
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.
|
||||||
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
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/core": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix mixed declarations in SCSS
|
|
||||||
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
|
||||||
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,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Update icons to v3.34.1 (75 new icons)
|
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
"@tabler/preview": patch
|
|
||||||
---
|
|
||||||
|
|
||||||
Fix responsive layputs in 'Form Elements' page
|
|
||||||
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
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
---
|
|
||||||
description: Tabler Project Rules
|
|
||||||
globs:
|
|
||||||
alwaysApply: true
|
|
||||||
---
|
|
||||||
|
|
||||||
## Documentation Standards
|
|
||||||
|
|
||||||
- Always write documentation in English (not Polish) for technical content
|
|
||||||
- Use clear, descriptive headings with proper hierarchy (##, ###)
|
|
||||||
- Include practical examples with code snippets
|
|
||||||
- Add explanations for each component's purpose and usage
|
|
||||||
- Use consistent formatting for code blocks and examples
|
|
||||||
|
|
||||||
## CSS/SCSS Guidelines
|
|
||||||
|
|
||||||
- Follow Tabler's CSS custom properties pattern: `--#{$prefix}component-property`
|
|
||||||
- Use semantic class names that describe purpose, not appearance
|
|
||||||
- Maintain consistent spacing and indentation in SCSS files
|
|
||||||
- Group related styles together with clear comments
|
|
||||||
- Use Bootstrap-compatible class naming conventions
|
|
||||||
|
|
||||||
## Component Documentation Structure
|
|
||||||
|
|
||||||
- Start with a brief description of the component's purpose
|
|
||||||
- Show basic usage examples first
|
|
||||||
- Include variations and modifiers
|
|
||||||
- Add accessibility considerations where relevant
|
|
||||||
- Provide code examples that are copy-paste ready
|
|
||||||
|
|
||||||
## File Organization
|
|
||||||
|
|
||||||
- Keep documentation files in `docs/content/ui/components/`
|
|
||||||
- Use consistent naming: lowercase with hyphens
|
|
||||||
- Include frontmatter with title, summary, and description
|
|
||||||
- Link to Bootstrap documentation when relevant
|
|
||||||
|
|
||||||
## Code Examples
|
|
||||||
|
|
||||||
- Use Liquid templating syntax for dynamic examples
|
|
||||||
- Include both HTML and rendered output
|
|
||||||
- Show responsive behavior where applicable
|
|
||||||
- Demonstrate proper accessibility attributes
|
|
||||||
|
|
||||||
## Git Commit Messages
|
|
||||||
|
|
||||||
- Use English for commit messages
|
|
||||||
- Follow conventional commit format when possible
|
|
||||||
- Be descriptive about what was changed and why
|
|
||||||
|
|
||||||
## Project-Specific Conventions
|
|
||||||
|
|
||||||
- Tabler uses Bootstrap 5 as a foundation
|
|
||||||
- Custom components extend Bootstrap functionality
|
|
||||||
- Documentation should be comprehensive but concise
|
|
||||||
- Examples should be practical and immediately usable
|
|
||||||
5
.github/workflows/lockfiles.yaml
vendored
5
.github/workflows/lockfiles.yaml
vendored
@@ -13,9 +13,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Clone Tabler
|
- name: Clone Tabler
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Prevent lock file change
|
- name: Prevent lock file change
|
||||||
uses: xalvarez/prevent-file-change-action@v2
|
uses: xalvarez/prevent-file-change-action@v2
|
||||||
with:
|
with:
|
||||||
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
||||||
pattern: Gemfile.lock|pnpm-lock.json|pnpm-lock.yaml
|
pattern: Gemfile.lock|pnpm-lock.json
|
||||||
trustedAuthors: codecalm, BG-Software-BG, dependabot
|
trustedAuthors: codecalm, dependabot
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -23,8 +23,24 @@ A premium and open source dashboard template with a responsive and high-quality
|
|||||||
</a>
|
</a>
|
||||||
</p>
|
</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>
|
||||||
|
|
||||||
## 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">
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
'use strict'
|
|
||||||
|
|
||||||
import { existsSync, mkdirSync, lstatSync } from 'fs'
|
|
||||||
import { emptyDirSync, copySync } from 'fs-extra/esm'
|
|
||||||
import libs from '../libs.json' with { type: 'json' }
|
|
||||||
import { fileURLToPath } from 'url'
|
|
||||||
import { join, dirname } from 'node:path';
|
|
||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
||||||
|
|
||||||
emptyDirSync(join(__dirname, '..', 'dist/libs'))
|
|
||||||
|
|
||||||
for(const name in libs) {
|
|
||||||
const { npm } = libs[name]
|
|
||||||
|
|
||||||
if (npm) {
|
|
||||||
const from = join(__dirname, '..', `node_modules/${npm}`)
|
|
||||||
const to = join(__dirname, '..', `dist/libs/${npm}`)
|
|
||||||
|
|
||||||
// create dir in dist/libs
|
|
||||||
if (!existsSync(to)) {
|
|
||||||
mkdirSync(to, { recursive: true })
|
|
||||||
}
|
|
||||||
|
|
||||||
copySync(from, to, {
|
|
||||||
dereference: true,
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log(`Successfully copied ${npm}`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,10 +9,7 @@ export default context => {
|
|||||||
autoprefixer: {
|
autoprefixer: {
|
||||||
cascade: false
|
cascade: false
|
||||||
},
|
},
|
||||||
rtlcss: context.env === 'RTL',
|
rtlcss: context.env === 'RTL'
|
||||||
'postcss-discard-comments': {
|
|
||||||
removeAll: true
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,260 +1,182 @@
|
|||||||
# @tabler/core
|
# Changelog
|
||||||
|
|
||||||
## 1.4.0
|
## `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
|
||||||
|
|
||||||
- 9951fe9: Enhance button and hover animations
|
## `1.1.1` - 2025-03-01
|
||||||
- a200d30: Improve breadcrumb styles
|
|
||||||
- 49ab9ea: Add new Tabler Illustrations
|
|
||||||
|
|
||||||
### Patch Changes
|
- Fix Documentation structure
|
||||||
|
|
||||||
- 6c4dd36: Update class names from `*-left`, `*-right` to `*-start`, `*-end`
|
## `1.1.0` - 2025-03-01
|
||||||
- 6fec73a: Fix relative line heights in buttons
|
|
||||||
- db6200a: Remove `license_key` option from HugeRTE init object
|
|
||||||
- e96f055: Add different favicon to development environment
|
|
||||||
- 6c38a48: Update Bootstrap to v5.3.7
|
|
||||||
- 2a12f72: Update CSS calculations to use `calc()`
|
|
||||||
- 666a296: Fix list group item hoverable only with `.list-group-hoverable` class
|
|
||||||
- cfd4cb6: Fix `.pagination-link` hover styles to non-active items
|
|
||||||
|
|
||||||
## 1.3.2
|
- Add Playwright configuration and visual regression tests
|
||||||
|
- Enable `scrollSpy` in `countup` module
|
||||||
|
- Refactor SCSS files to replace divide function with calc
|
||||||
|
- Add Segmented Control component
|
||||||
|
- Add new text features page with mentions: user, color and app.
|
||||||
|
- Add Scroll Spy page
|
||||||
|
- Update border radius variables for consistency across components
|
||||||
|
- Add Signature Pad feature and signatures page
|
||||||
|
- Update color utility classes and replace background colors in pricing table
|
||||||
|
- Refactored the project into a monorepo, removed Gulp, and introduced a new, more efficient build process.
|
||||||
|
- Add documentation for segmented control component
|
||||||
|
- Add new payment provider (Troy)
|
||||||
|
- Add selectable table functionality with active background color
|
||||||
|
- Refactor badge styles, remove Bootstrap styles
|
||||||
|
- Refactor alert component styles and markup, remove Bootstrap styles
|
||||||
|
- Refactor accordion component styles and markup, remove Bootstrap styles
|
||||||
|
- Fix overflow of `label` in a `floating-input`
|
||||||
|
- Fix size of `apexcharts` tooltip marker
|
||||||
|
- Fix apexcharts heatmap example in docs
|
||||||
|
- Fix negative margins in `.navbar-bordered` variant
|
||||||
|
- Use the full license agreement for illustrations in docs
|
||||||
|
- Fix vertical alignment in single page and error layouts
|
||||||
|
- Fix `.avatar-upload` double borders
|
||||||
|
- Fixes navbar styles with new hover effects and color variables
|
||||||
|
|
||||||
### Patch Changes
|
## `1.0.0` - 2025-01-28
|
||||||
|
|
||||||
- 446c34e: Fix README file in core package
|
- Add new `Tag` component
|
||||||
|
- Add customizable Star Ratings component using `star-rating.js` library
|
||||||
## 1.3.1
|
- Add `flags.html` page with list of all flags
|
||||||
|
- Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
|
||||||
### Patch Changes
|
- Adding `alerts.html` page with example of alerts.
|
||||||
|
- Change primary color value to new Tabler branding
|
||||||
- a7f73d7: Fix README file in core package
|
- Unify dark mode with latest Bootstrap API and improve dark mode elements
|
||||||
|
- New Chat component
|
||||||
## 1.3.0
|
- Adjusting form element sizes for enhanced mobile devices compatibility
|
||||||
|
- Add new color picker component using `coloris.js` library
|
||||||
### Minor Changes
|
- Update Tabler Icons to version 2.23 with 18 new icons added
|
||||||
|
- New page with payment providers: `payment-providers.html`
|
||||||
- a1af801: Add FullCalendar integration
|
- 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,
|
||||||
- b9d434d: Add new charts to dashboard pages
|
|
||||||
- 79bd867: Add new form layout page
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- cac5d92: Update illustrations to v1.7
|
|
||||||
- f94b153: Add SRI hashes to scripts and styles
|
|
||||||
- c127d65: Fix colour picker preview page not displaying correctly
|
|
||||||
- b6e9b18: Update icons to v3.31.0
|
|
||||||
- 8850f61: Enhance pagination component with new styles
|
|
||||||
- 9910dd0: Add "text features" menu item
|
|
||||||
- 638f36c: Refactor SCSS variable names for shadows
|
|
||||||
- 0d501e9: Correct `aria-label` of app menu link
|
|
||||||
- 3a02ef9: Fix some marketing site rows overflowing on mobile
|
|
||||||
- fd0fd47: Improve card footer layout and enhance entry display format in invoices
|
|
||||||
- 74e5d26: Fix color badge in navbar menu
|
|
||||||
- 72a1d67: Add clipboard functionality to Tabler documentation
|
|
||||||
- bb617b8: Fix colour swatches on small screens
|
|
||||||
- d73d78e: Add missing `tw` entry in `flags.json`
|
|
||||||
- 19a3d20: Delete missing demo RTL style
|
|
||||||
- b5e2f54: Enhance dropdown components for better accessibility
|
|
||||||
- a41c956: Remove unnecessary `!important` from body padding
|
|
||||||
- e675389: Fix missing border-radius to `.card-header-tabs`
|
|
||||||
- 9007e73: Fix FAQ accordion structure
|
|
||||||
|
|
||||||
## 1.2.0
|
|
||||||
|
|
||||||
### Minor Changes
|
|
||||||
|
|
||||||
- c59bc9d: Add gradient background utilities
|
|
||||||
- f9e4da2: Add new apps card with brand icons in navbar
|
|
||||||
- 92a3afe: Replaced TinyMCE with HugeRTE to address license violation
|
|
||||||
- 199f39a: Update Bootstrap to version 5.3.5
|
|
||||||
- 9bbcb99: Add theme settings wizard
|
|
||||||
- b17b488: Add steps light colors
|
|
||||||
- 215eaa4: Add Turbo library integration
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- aea3b0a: Rollback accordion component structure
|
|
||||||
- 3fc7b84: Add space between page numbers in pagination
|
|
||||||
- 2f8a372: Add Bootstrap components to Tabler JS
|
|
||||||
- 9fceadd: Fix tooltip colors in vector maps
|
|
||||||
- 44250db: Update avatar size variable to support list size configuration
|
|
||||||
- be1f3d1: Fix broken shape in South Korea flag
|
|
||||||
- c20d076: Refactor `border-radius` in components to use CSS variables
|
|
||||||
- 042e50f: Update disabled color variables in navbars
|
|
||||||
- 473fa38: Apply border radius to `tom-select` on focus
|
|
||||||
- 8646192: Add avatars page with various demos of avatars
|
|
||||||
- 922bb03: Minor spelling and grammar improvements to emails docs
|
|
||||||
- 44250db: Update avatar size variable to support list size configuration
|
|
||||||
- ddcd3a7: Refactor SCSS for alerts and close button styles
|
|
||||||
- e3d68d6: Fix `autosize` and `input mask` plugins to use window scope
|
|
||||||
- 4846828: Fix scrollbar color mixin to use body color variable
|
|
||||||
- 6b6617a: Improve README
|
|
||||||
- 94bea00: Make scrollbar track transparent
|
|
||||||
- e14e492: Fix scrollbar jumps when content is higher than screen
|
|
||||||
- 6d6d1bd: Add responsive font size for form controls on mobile devices
|
|
||||||
- 6c566cf: Add new advanced table example
|
|
||||||
|
|
||||||
## 1.1.1
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- f29c911: Fix Documentation structure
|
|
||||||
|
|
||||||
## 1.1.0
|
|
||||||
|
|
||||||
### Minor Changes
|
|
||||||
|
|
||||||
- a2640e2: Add Playwright configuration and visual regression tests
|
|
||||||
- d3ae77c: Enable `scrollSpy` in `countup` module
|
|
||||||
- bd3d959: Refactor SCSS files to replace divide function with calc
|
|
||||||
- cb278c7: Add Segmented Control component
|
|
||||||
- b47725d: Add new text features page with mentions: user, color and app.
|
|
||||||
- b4b4d1a: Add Scroll Spy page
|
|
||||||
- 9cd5327: Update border radius variables for consistency across components
|
|
||||||
- 4376968: Add Signature Pad feature and signatures page
|
|
||||||
- f95f250: Update color utility classes and replace background colors in pricing table
|
|
||||||
- eaa7f81: Refactored the project into a monorepo, removed Gulp, and introduced a new, more efficient build process.
|
|
||||||
- ea14462: Add documentation for segmented control component
|
|
||||||
- 1edaff4: Add new payment provider (Troy)
|
|
||||||
- edbaa1e: Add selectable table functionality with active background color
|
|
||||||
- 378fba8: Refactor badge styles, remove Bootstrap styles
|
|
||||||
- f3c409f: Refactor alert component styles and markup, remove Bootstrap styles
|
|
||||||
- c240b5a: Refactor accordion component styles and markup, remove Bootstrap styles
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- 687267d: Fix overflow of `label` in a `floating-input`
|
|
||||||
- 06b1dec: Fix size of `apexcharts` tooltip marker
|
|
||||||
- afd0700: Fix apexcharts heatmap example in docs
|
|
||||||
- 78383ef: Fix negative margins in `.navbar-bordered` variant
|
|
||||||
- 11f4487: Use the full license agreement for illustrations in docs
|
|
||||||
- b28ce9f: Fix vertical alignment in single page and error layouts
|
|
||||||
- 24b944c: Fix `.avatar-upload` double borders
|
|
||||||
- ca4ba14: Fixes navbar styles with new hover effects and color variables
|
|
||||||
|
|
||||||
## 1.0.0 - 2025-01-28
|
|
||||||
|
|
||||||
### Minor Changes
|
|
||||||
|
|
||||||
- c276a8b: Add new `Tag` component
|
|
||||||
- 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
|
Revolut Pay, Samsung Pay, Shop Pay, Solana, Spingo, Stax, Tether, True USD, Venmo, WeChat Pay, Wise, Zelle
|
||||||
|
- Change Twitter to X brand
|
||||||
### Patch Changes
|
- Updated link to icons documentation
|
||||||
|
- Dependencies update
|
||||||
- 293d0a4: Change Twitter to X brand
|
- Order menu items alphabetically
|
||||||
- fd0935a: Updated link to icons documentation
|
- Automatically retrieve and display the changelog from the CHANGELOG.md file.
|
||||||
- 1cf27dc: Dependencies update
|
- Initialize Visual Studio Code config
|
||||||
- 041f4e4: Order menu items alphabetically
|
- Make horizontal rule direction aware
|
||||||
- 20cad01: Automatically retrieve and display the changelog from the CHANGELOG.md file.
|
- Update Tabler Illustrations to v1.5
|
||||||
- 34f3efc: Initialize Visual Studio Code config
|
- Update Tabler Icons to v3.29.0
|
||||||
- 7ba7717: Make horizontal rule direction aware
|
- Remove unused dependencies from `package.json`
|
||||||
- 063ef58: Update Tabler Illustrations to v1.5
|
- Replace Jekyll with Eleventy
|
||||||
- 5e2c975: Update Tabler Icons to v3.29.0
|
- Dependencies update
|
||||||
- 9d5f7ca: Remove unused dependencies from `package.json`
|
- Update TinyMCE to v7.0
|
||||||
- be69fd6: Replace Jekyll with Eleventy
|
- Fix text color in dark version of navbar
|
||||||
- 2f5fad6: Dependencies update
|
- Remove invalid `z-index` setting for dropdowns
|
||||||
- dfd7c88: Update TinyMCE to v7.0
|
- Update Tabler Icons to version 2.21 with 18 new icons added
|
||||||
- 056df18: Fix text color in dark version of navbar
|
- Update Tabler Emails to v2.0
|
||||||
- 17327dc: Remove invalid `z-index` setting for dropdowns
|
- Init changelog script
|
||||||
- 4ff077a: Update Tabler Icons to version 2.21 with 18 new icons added
|
- Adding Two-Step Verification Pages
|
||||||
- 867c8dd: Update Tabler Emails to v2.0
|
- Replace `.page-center` with `.my-auto` in single page layouts
|
||||||
- d8605f2: Init changelog script
|
- Add border-opacity variable for improved color utility
|
||||||
- 89c6234: Adding Two-Step Verification Pages
|
- Fix icon display issues in the Star Ratings component
|
||||||
- f6e885b: Replace `.page-center` with `.my-auto` in single page layouts
|
- Fix `color` of disabled `dropdown-item` in Navbar component
|
||||||
- 7aa216f: Add border-opacity variable for improved color utility
|
- Bump pnpm/action-setup from 2 to 3
|
||||||
- 88eb413: Fix icon display issues in the Star Ratings component
|
- Add social icons plugin
|
||||||
- 78392b6: Fix `color` of disabled `dropdown-item` in Navbar component
|
- `Dockerfile` fix
|
||||||
- 4deb8f4: Bump pnpm/action-setup from 2 to 3
|
- Update Jekyll to version 4.3.4
|
||||||
- 9015472: Add social icons plugin
|
- Update Tabler Icons to version 2.20 with 37 new icons added
|
||||||
- 7fe30a1: `Dockerfile` fix
|
- Add Tabler Illustrations
|
||||||
- e53942f: Update Jekyll to version 4.3.4
|
- Update illustrations and enhance SVG handling in HTML
|
||||||
- 72f868b: Update Tabler Icons to version 2.20 with 37 new icons added
|
- Fix ids of custom size star ratings
|
||||||
- e0443c0: Add Tabler Illustrations
|
- Unify size of avatar, flag and payment components
|
||||||
- 5cca710: Update illustrations and enhance SVG handling in HTML
|
- Update icons to v2.42.0
|
||||||
- 3a4f10f: Fix ids of custom size star ratings
|
- Update Bootstrap to v5.3.0
|
||||||
- 7896562: Unify size of avatar, flag and payment components
|
- Set `font-size` of an `i` element with `icon` class in a `button` element
|
||||||
- 1587905: Update icons to v2.42.0
|
- Dependencies update
|
||||||
- d9e00b2: Update Bootstrap to v5.3.0
|
- Fix icons in `form-elements.html`
|
||||||
- bc1d1a3: Set `font-size` of an `i` element with `icon` class in a `button` element
|
- Update Tabler Icons to v3.28.1
|
||||||
- 0195f9b: Dependencies update
|
- Fix `rgba` color values in `_variables.scss`
|
||||||
- a5bf5d3: Fix icons in `form-elements.html`
|
- Fix description of alerts with a description
|
||||||
- 736410c: Update Tabler Icons to v3.28.1
|
- Fix colors of disabled `.ts-control`
|
||||||
- 3f516ea: Fix `rgba` color values in `_variables.scss`
|
- Center content on error and single page layouts
|
||||||
- e91884e: Fix description of alerts with a description
|
- Resolve map page issues
|
||||||
- 90cc744: Fix colors of disabled `.ts-control`
|
- Improve base font family loading
|
||||||
- 1801e41: Center content on error and single page layouts
|
- Introduce Docker Compose Config to build and run Ttabler locally
|
||||||
- 45c83ac: Resolve map page issues
|
- Fix `@charset` CSS declaration in bundle.
|
||||||
- faee63c: Improve base font family loading
|
- Update `_navbar.scss` with disabled dropdown menu items color
|
||||||
- 5e7e0dd: Introduce Docker Compose Config to build and run Ttabler locally
|
- Update Tabler Icons to v3.17.0
|
||||||
- c293a66: Fix `@charset` CSS declaration in bundle.
|
- Update `@tabler/icons` to v3.0
|
||||||
- cb4a681: Update `_navbar.scss` with disabled dropdown menu items color
|
- Refactor data structure by converting YAML files to JSON
|
||||||
- af41fb3: Update Tabler Icons to v3.17.0
|
- Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons
|
||||||
- 6cbe888: Update `@tabler/icons` to v3.0
|
- Adding punctuation to `SECURITY.md`
|
||||||
- 0e4bf5f: Refactor data structure by converting YAML files to JSON
|
- Fix form controls bugs in dark mode
|
||||||
- 82cf257: Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons
|
- Fix padding in code blocks
|
||||||
- 4b4b4f6: Adding punctuation to `SECURITY.md`
|
- Unified Box Shadows with Bootstrap Compatibility
|
||||||
- a0a2d52: Fix form controls bugs in dark mode
|
- Remove duplicated setting of color in `th` element
|
||||||
- f45b697: Fix padding in code blocks
|
- Fix layout of search results for small and medium screens
|
||||||
- 4de166d: Unified Box Shadows with Bootstrap Compatibility
|
- Remove `text-decoration` on hovering `a` element with class having `icon` class
|
||||||
- 87bf2f5: Remove duplicated setting of color in `th` element
|
- Fix small typo in tables docs
|
||||||
- 5dc45aa: Fix layout of search results for small and medium screens
|
- Improve documentation for alerts
|
||||||
- 4ae0358: Remove `text-decoration` on hovering `a` element with class having `icon` class
|
- Bump `pnpm/action-setup` from 3 to 4
|
||||||
- e798eb6: Fix small typo in tables docs
|
- Update dependencies
|
||||||
- 1c1d0c9: Improve documentation for alerts
|
- Update Tabler Icons to version 2.22 with 18 new icons added
|
||||||
- 371ef84: Bump `pnpm/action-setup` from 3 to 4
|
- Update devDependencies
|
||||||
- 8421fc2: Update dependencies
|
- Add All Contributions package to project for easy contribution tracking
|
||||||
- 0625f5f: Update Tabler Icons to version 2.22 with 18 new icons added
|
- Set value of `$font-family-monospace` as default
|
||||||
- ba65fc3: Update devDependencies
|
- Refactor Dockerfile and package.json
|
||||||
- a43ded4: Add All Contributions package to project for easy contribution tracking
|
- Resolved light dropdown issue on dark theme
|
||||||
- 2f622c9: Set value of `$font-family-monospace` as default
|
- Enhance documentation
|
||||||
- 2c7c448: Refactor Dockerfile and package.json
|
- Update Tabler Icons to version 2.19 with 18 new icons added
|
||||||
- 5ec7f05: Resolved light dropdown issue on dark theme
|
- Fix cells with inline icons
|
||||||
- b0b07b9: Enhance documentation
|
- Fix `color` of disabled `nav-link` in `nav-bordered`
|
||||||
- 0f129b1: Update Tabler Icons to version 2.19 with 18 new icons added
|
- Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
|
||||||
- 507df7b: Fix cells with inline icons
|
- Switch from `npm` to `pnpm` for faster package installation
|
||||||
- 0e5b44a: Fix `color` of disabled `nav-link` in `nav-bordered`
|
- Increase contrast of active `dropdown-item` in vertical layout
|
||||||
- 65c1300: Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
|
- Update documentation for Tabler components
|
||||||
- 8552a46: Switch from `npm` to `pnpm` for faster package installation
|
- Add variable to configure `avatar-list` spacing
|
||||||
- 4a9e40d: Increase contrast of active `dropdown-item` in vertical layout
|
- Do not display empty `fieldset` element
|
||||||
- 17ebdf4: Update documentation for Tabler components
|
- Refactor SCSS variables to use `color.adjust` for improved color manipulation
|
||||||
- 4c88481: Add variable to configure `avatar-list` spacing
|
- Add Tabler Illustrations
|
||||||
- df46ee7: Do not display empty `fieldset` element
|
- Update required Node.js version to 18 and add `.nvmrc` file
|
||||||
- 875cafa: Refactor SCSS variables to use `color.adjust` for improved color manipulation
|
- Fix table default background color
|
||||||
- eb28546: Add Tabler Illustrations
|
- Avoid SCSS color dependency on `:focus`
|
||||||
- 650d84c: Update required Node.js version to 18 and add `.nvmrc` file
|
- Update changelog configuration and release scripts
|
||||||
- fb659d4: Fix table default background color
|
- Update Tabler Icons to v3.26.0
|
||||||
- f77c712: Avoid SCSS color dependency on `:focus`
|
- Updated Tabler Icons to v3.24.0
|
||||||
- 71c68ce: Update changelog configuration and release scripts
|
- Update Tabler Icons to version 2.18 with 18 new icons added
|
||||||
- 34d124d: Update Tabler Icons to v3.26.0
|
- Update Node.js engine requirement to allow versions >=20
|
||||||
- 4cd9215: Updated Tabler Icons to v3.24.0
|
- Update Tabler Icons to v3.14.0
|
||||||
- 7bb947b: Update Tabler Icons to version 2.18 with 18 new icons added
|
- Add Prettier to project for consistent code formatting
|
||||||
- c75cf55: Update Node.js engine requirement to allow versions >=20
|
- Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.
|
||||||
- 1c34e8e: Update Tabler Icons to v3.14.0
|
- Update Tabler Icons to version 2.25 with 48 new icons added
|
||||||
- 289dd3b: Add Prettier to project for consistent code formatting
|
- Fix responsiveness issue in Settings menu
|
||||||
- f83e36c: Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.
|
- Added 3 new payments from Nepal: Esewa, FonePay, Khalti and Imepay
|
||||||
- b885852: Update Tabler Icons to version 2.25 with 48 new icons added
|
- Add new Filled section to Icons page
|
||||||
- 53a5117: Fix responsiveness issue in Settings menu
|
- Update `bootstrap` to v5.3.1
|
||||||
- 38504e5: Added 3 new payments from Nepal: Esewa, FonePay, Khalti and Imepay
|
- Update package dependencies to latest versions
|
||||||
- 35ee14d: Add new Filled section to Icons page
|
- Fix link to webfont version of Tabler Icons
|
||||||
- d32f242: Update `bootstrap` to v5.3.1
|
- Add support for changeset tool for more efficient and organized code changes
|
||||||
- d82f94e: Update package dependencies to latest versions
|
- Fix colors in date range datepicker
|
||||||
- 54c5ad0: Fix link to webfont version of Tabler Icons
|
|
||||||
- 94b83d4: Add support for changeset tool for more efficient and organized code changes
|
|
||||||
- c51ff28: Fix colors in date range datepicker
|
|
||||||
|
|
||||||
## `1.0.0-beta24` - 2025-01-11
|
## `1.0.0-beta24` - 2025-01-11
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
# Tabler Core
|
|
||||||
|
|
||||||
Tabler Core is a set of components and utilities for building web applications. It provides a collection of pre-designed components, such as buttons, forms, modals, and more, that can be easily customized and integrated into your projects.
|
|
||||||
|
|
||||||
## 🔎 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!
|
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
To install Tabler Core, you can use npm or yarn. Run one of the following commands in your terminal:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install @tabler/core
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pnpm add @tabler/core
|
|
||||||
```
|
|
||||||
|
|
||||||
## Sponsors
|
|
||||||
|
|
||||||
**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">
|
|
||||||
<a href="https://github.com/sponsors/codecalm">
|
|
||||||
<img src="https://cdn.jsdelivr.net/gh/tabler/sponsors@latest/sponsors.svg" alt="Tabler sponsors">
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.
|
|
||||||
164
core/libs.json
164
core/libs.json
@@ -1,164 +0,0 @@
|
|||||||
{
|
|
||||||
"imask": {
|
|
||||||
"npm": "imask",
|
|
||||||
"js": [
|
|
||||||
"dist/imask.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"autosize": {
|
|
||||||
"npm": "autosize",
|
|
||||||
"js": [
|
|
||||||
"dist/autosize.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"apexcharts": {
|
|
||||||
"npm": "apexcharts",
|
|
||||||
"js": [
|
|
||||||
"dist/apexcharts.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"nouislider": {
|
|
||||||
"npm": "nouislider",
|
|
||||||
"js": [
|
|
||||||
"dist/nouislider.min.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/nouislider.min.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"countup": {
|
|
||||||
"npm": "countup.js",
|
|
||||||
"js": [
|
|
||||||
"dist/countUp.umd.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"lists": {
|
|
||||||
"npm": "list.js",
|
|
||||||
"js": [
|
|
||||||
"dist/list.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"masonry": {
|
|
||||||
"js": [
|
|
||||||
"https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"mapbox": {
|
|
||||||
"js": [
|
|
||||||
"https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"https://api.mapbox.com/mapbox-gl-js/v1.8.0/mapbox-gl.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"google-maps": {
|
|
||||||
"js": [
|
|
||||||
"https://maps.googleapis.com/maps/api/js?key=GOOGLE_MAPS_KEY"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"litepicker": {
|
|
||||||
"npm": "litepicker",
|
|
||||||
"js": [
|
|
||||||
"dist/litepicker.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"tom-select": {
|
|
||||||
"npm": "tom-select",
|
|
||||||
"js": [
|
|
||||||
"dist/js/tom-select.base.min.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/css/tom-select.bootstrap5.min.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"jsvectormap": {
|
|
||||||
"npm": "jsvectormap",
|
|
||||||
"js": [
|
|
||||||
"dist/jsvectormap.min.js",
|
|
||||||
"dist/maps/world.js",
|
|
||||||
"dist/maps/world-merc.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/jsvectormap.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fslightbox": {
|
|
||||||
"npm": "fslightbox",
|
|
||||||
"js": [
|
|
||||||
"index.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"hugerte": {
|
|
||||||
"npm": "hugerte",
|
|
||||||
"js": [
|
|
||||||
"hugerte.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"plyr": {
|
|
||||||
"npm": "plyr",
|
|
||||||
"js": [
|
|
||||||
"dist/plyr.min.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/plyr.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dropzone": {
|
|
||||||
"npm": "dropzone",
|
|
||||||
"js": [
|
|
||||||
"dist/dropzone-min.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/dropzone.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"star-rating.js": {
|
|
||||||
"npm": "star-rating.js",
|
|
||||||
"js": [
|
|
||||||
"dist/star-rating.min.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/star-rating.min.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"coloris.js": {
|
|
||||||
"npm": "@melloware/coloris",
|
|
||||||
"js": [
|
|
||||||
"dist/umd/coloris.min.js"
|
|
||||||
],
|
|
||||||
"css": [
|
|
||||||
"dist/coloris.min.css"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"typed.js": {
|
|
||||||
"npm": "typed.js",
|
|
||||||
"js": [
|
|
||||||
"dist/typed.umd.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"signature_pad": {
|
|
||||||
"npm": "signature_pad",
|
|
||||||
"js": [
|
|
||||||
"dist/signature_pad.umd.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"clipboard": {
|
|
||||||
"npm": "clipboard",
|
|
||||||
"js": [
|
|
||||||
"dist/clipboard.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fullcalendar": {
|
|
||||||
"npm": "fullcalendar",
|
|
||||||
"js": [
|
|
||||||
"index.global.min.js"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"turbo": {
|
|
||||||
"npm": "@hotwired/turbo",
|
|
||||||
"js": [
|
|
||||||
"dist/turbo.es2017-umd.js"
|
|
||||||
],
|
|
||||||
"head": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"name": "@tabler/core",
|
"name": "@tabler/core",
|
||||||
"version": "1.4.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 clean && pnpm run copy && pnpm run watch",
|
"dev": "pnpm run watch",
|
||||||
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
|
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
|
||||||
"clean": "shx rm -rf 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 --no-source-map --load-path=node_modules --style expanded scss/:dist/css/",
|
"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\"",
|
||||||
@@ -26,9 +26,8 @@
|
|||||||
"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-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": "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",
|
"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 && pnpm run copy-libs",
|
"copy": "pnpm run copy-img",
|
||||||
"copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
|
"copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
|
||||||
"copy-libs": "node .build/copy-libs.mjs",
|
|
||||||
"watch": "concurrently \"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\"",
|
||||||
@@ -67,8 +66,7 @@
|
|||||||
"dist/**/*",
|
"dist/**/*",
|
||||||
"js/**/*.{js,map}",
|
"js/**/*.{js,map}",
|
||||||
"img/**/*.{svg}",
|
"img/**/*.{svg}",
|
||||||
"scss/**/*.scss",
|
"scss/**/*.scss"
|
||||||
"libs.json"
|
|
||||||
],
|
],
|
||||||
"style": "dist/css/tabler.css",
|
"style": "dist/css/tabler.css",
|
||||||
"sass": "scss/tabler.scss",
|
"sass": "scss/tabler.scss",
|
||||||
@@ -146,32 +144,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@popperjs/core": "^2.11.8",
|
"@popperjs/core": "^2.11.8",
|
||||||
"bootstrap": "5.3.7",
|
"bootstrap": "5.3.5"
|
||||||
"postcss-discard-comments": "^7.0.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@hotwired/turbo": "^8.0.13",
|
|
||||||
"@melloware/coloris": "^0.25.0",
|
|
||||||
"apexcharts": "3.54.1",
|
|
||||||
"autosize": "^6.0.1",
|
|
||||||
"choices.js": "^11.1.0",
|
|
||||||
"clipboard": "^2.0.11",
|
|
||||||
"countup.js": "^2.9.0",
|
|
||||||
"dropzone": "^6.0.0-beta.2",
|
|
||||||
"flatpickr": "^4.6.13",
|
|
||||||
"fslightbox": "^3.6.1",
|
|
||||||
"fullcalendar": "^6.1.18",
|
|
||||||
"hugerte": "^1.0.9",
|
|
||||||
"imask": "^7.6.1",
|
|
||||||
"jsvectormap": "^1.7.0",
|
|
||||||
"list.js": "^2.3.1",
|
|
||||||
"litepicker": "^2.0.12",
|
|
||||||
"nouislider": "^15.8.1",
|
|
||||||
"plyr": "^3.7.8",
|
|
||||||
"signature_pad": "^5.0.10",
|
|
||||||
"star-rating.js": "^4.3.1",
|
|
||||||
"tom-select": "^2.4.3",
|
|
||||||
"typed.js": "^2.1.0"
|
|
||||||
},
|
},
|
||||||
"directories": {
|
"directories": {
|
||||||
"doc": "docs"
|
"doc": "docs"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
@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/breadcrumb";
|
||||||
@import "bootstrap/scss/pagination";
|
@import "bootstrap/scss/pagination";
|
||||||
@import "bootstrap/scss/progress";
|
@import "bootstrap/scss/progress";
|
||||||
@import "bootstrap/scss/list-group";
|
@import "bootstrap/scss/list-group";
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
// Config
|
// Config
|
||||||
@import "bootstrap/scss/functions";
|
@import "bootstrap/scss/functions";
|
||||||
@import "bootstrap-functions";
|
|
||||||
|
|
||||||
@import "bootstrap/scss/variables";
|
@import "bootstrap/scss/variables";
|
||||||
@import "bootstrap/scss/variables-dark";
|
@import "bootstrap/scss/variables-dark";
|
||||||
@import "bootstrap/scss/maps";
|
@import "bootstrap/scss/maps";
|
||||||
|
|||||||
@@ -1,258 +0,0 @@
|
|||||||
@use "sass:color";
|
|
||||||
@use "sass:map";
|
|
||||||
@use "sass:math";
|
|
||||||
@use "sass:meta";
|
|
||||||
@use "sass:string";
|
|
||||||
@use "sass:list";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts a color value to RGB format
|
|
||||||
*
|
|
||||||
* @param {Color} $value - The color value to convert
|
|
||||||
* @return {List} - RGB values as a list (red, green, blue)
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* to-rgb(#ff0000) // Returns: (255, 0, 0)
|
|
||||||
*/
|
|
||||||
@function to-rgb($value) {
|
|
||||||
@return color.channel($value, "red", $space: rgb), color.channel($value, "green", $space: rgb), color.channel($value, "blue", $space: rgb);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an opaque color by mixing a foreground color with a background color
|
|
||||||
*
|
|
||||||
* @param {Color} $background - The background color
|
|
||||||
* @param {Color} $foreground - The foreground color to make opaque
|
|
||||||
* @return {Color} - The resulting opaque color
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* opaque(#ffffff, rgba(255, 0, 0, 0.5)) // Returns solid red color
|
|
||||||
*/
|
|
||||||
@function opaque($background, $foreground) {
|
|
||||||
@return color.mix(rgba($foreground, 1), $background, opacity($foreground) * 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adjusts a color channel value for luminance calculation
|
|
||||||
*
|
|
||||||
* @param {Number} $channel - The color channel value (0-1)
|
|
||||||
* @return {Number} - The adjusted channel value
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* adjust(0.5) // Returns adjusted value for luminance calculation
|
|
||||||
*/
|
|
||||||
@function adjust($channel) {
|
|
||||||
@return if($channel < 0.03928, math.div($channel, 12.92), pow(($channel + 0.055) / 1.055, 2.4));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculates the relative luminance of a color using WCAG formula
|
|
||||||
*
|
|
||||||
* @param {Color} $color - The color to calculate luminance for
|
|
||||||
* @return {Number} - The luminance value (0-1)
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* luminance(#ffffff) // Returns: 1
|
|
||||||
* luminance(#000000) // Returns: 0
|
|
||||||
*/
|
|
||||||
@function luminance($color) {
|
|
||||||
$r: math.div(color.channel($color, "red", $space: rgb), 255);
|
|
||||||
$g: math.div(color.channel($color, "green", $space: rgb), 255);
|
|
||||||
$b: math.div(color.channel($color, "blue", $space: rgb), 255);
|
|
||||||
|
|
||||||
$r: adjust($r);
|
|
||||||
$g: adjust($g);
|
|
||||||
$b: adjust($b);
|
|
||||||
|
|
||||||
@return 0.2126 * $r + 0.7152 * $g + 0.0722 * $b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines the best contrasting color for a given background
|
|
||||||
*
|
|
||||||
* @param {Color} $background - The background color
|
|
||||||
* @param {Color} $light - The light color option (default: #ffffff)
|
|
||||||
* @param {Color} $dark - The dark color option (default: #000000)
|
|
||||||
* @return {Color} - The contrasting color (light or dark)
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* color-contrast(#000000) // Returns: #ffffff
|
|
||||||
* color-contrast(#ffffff) // Returns: #000000
|
|
||||||
*/
|
|
||||||
@function color-contrast($background, $light: #ffffff, $dark: #000000) {
|
|
||||||
// Get relative luminance using WCAG formula
|
|
||||||
|
|
||||||
$bg-luminance: luminance($background);
|
|
||||||
|
|
||||||
// If background is dark, return light color, otherwise dark
|
|
||||||
@return if($bg-luminance > 0.179, $dark, $light);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds two values together, handling different data types
|
|
||||||
*
|
|
||||||
* @param {*} $value1 - First value to add
|
|
||||||
* @param {*} $value2 - Second value to add
|
|
||||||
* @param {Boolean} $return-calc - Whether to return calc() function (default: true)
|
|
||||||
* @return {*} - The result of addition or calc() expression
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* add(10px, 5px) // Returns: 15px
|
|
||||||
* add(10px, 5px, false) // Returns: 10px + 5px
|
|
||||||
*/
|
|
||||||
@function add($value1, $value2, $return-calc: true) {
|
|
||||||
@if $value1 == null {
|
|
||||||
@return $value2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $value2 == null {
|
|
||||||
@return $value1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@if meta.type-of($value1) == number and meta.type-of($value2) == number and math.compatible($value1, $value2) {
|
|
||||||
@return $value1 + $value2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + string.unquote(" + ") + $value2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Subtracts the second value from the first value
|
|
||||||
*
|
|
||||||
* @param {*} $value1 - The value to subtract from
|
|
||||||
* @param {*} $value2 - The value to subtract
|
|
||||||
* @param {Boolean} $return-calc - Whether to return calc() function (default: true)
|
|
||||||
* @return {*} - The result of subtraction or calc() expression
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* subtract(10px, 5px) // Returns: 5px
|
|
||||||
* subtract(10px, 5px, false) // Returns: 10px - 5px
|
|
||||||
*/
|
|
||||||
@function subtract($value1, $value2, $return-calc: true) {
|
|
||||||
@if $value1 == null and $value2 == null {
|
|
||||||
@return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $value1 == null {
|
|
||||||
@return -$value2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@if $value2 == null {
|
|
||||||
@return $value1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@if meta.type-of($value1) == number and meta.type-of($value2) == number and math.compatible($value1, $value2) {
|
|
||||||
@return $value1 - $value2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@if meta.type-of($value2) != number {
|
|
||||||
$value2: string.unquote("(") + $value2 + string.unquote(")");
|
|
||||||
}
|
|
||||||
|
|
||||||
@return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Divides the dividend by the divisor with specified precision
|
|
||||||
*
|
|
||||||
* @param {Number} $dividend - The number to be divided
|
|
||||||
* @param {Number} $divisor - The number to divide by
|
|
||||||
* @param {Number} $precision - The number of decimal places (default: 10)
|
|
||||||
* @return {Number} - The result of division
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* divide(10, 2) // Returns: 5
|
|
||||||
* divide(10px, 2) // Returns: 5px
|
|
||||||
* divide(10, 3) // Returns: 3.3333333333
|
|
||||||
*/
|
|
||||||
@function divide($dividend, $divisor, $precision: 10) {
|
|
||||||
$sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
|
|
||||||
$dividend: abs($dividend);
|
|
||||||
$divisor: abs($divisor);
|
|
||||||
@if $dividend == 0 {
|
|
||||||
@return 0;
|
|
||||||
}
|
|
||||||
@if $divisor == 0 {
|
|
||||||
@error "Cannot divide by 0";
|
|
||||||
}
|
|
||||||
$remainder: $dividend;
|
|
||||||
$result: 0;
|
|
||||||
$factor: 10;
|
|
||||||
@while ($remainder > 0 and $precision >= 0) {
|
|
||||||
$quotient: 0;
|
|
||||||
@while ($remainder >= $divisor) {
|
|
||||||
$remainder: $remainder - $divisor;
|
|
||||||
$quotient: $quotient + 1;
|
|
||||||
}
|
|
||||||
$result: $result * 10 + $quotient;
|
|
||||||
$factor: $factor * 0.1;
|
|
||||||
$remainder: $remainder * 10;
|
|
||||||
$precision: $precision - 1;
|
|
||||||
@if ($precision < 0 and $remainder >= $divisor * 5) {
|
|
||||||
$result: $result + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$result: $result * $factor * $sign;
|
|
||||||
$dividend-unit: math.unit($dividend);
|
|
||||||
$divisor-unit: math.unit($divisor);
|
|
||||||
$unit-map: (
|
|
||||||
"px": 1px,
|
|
||||||
"rem": 1rem,
|
|
||||||
"em": 1em,
|
|
||||||
"%": 1%,
|
|
||||||
);
|
|
||||||
@if ($dividend-unit != $divisor-unit and map.has-key($unit-map, $dividend-unit)) {
|
|
||||||
$result: $result * map.get($unit-map, $dividend-unit);
|
|
||||||
}
|
|
||||||
@return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replaces all occurrences of a search string with a replace string
|
|
||||||
*
|
|
||||||
* @param {String} $string - The string to search in
|
|
||||||
* @param {String} $search - The string to search for
|
|
||||||
* @param {String} $replace - The string to replace with (default: "")
|
|
||||||
* @return {String} - The string with replacements made
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* str-replace("hello world", "world", "universe") // Returns: "hello universe"
|
|
||||||
* str-replace("hello world", "o") // Returns: "hell wrld"
|
|
||||||
*/
|
|
||||||
@function str-replace($string, $search, $replace: "") {
|
|
||||||
$index: string.index($string, $search);
|
|
||||||
|
|
||||||
@if $index {
|
|
||||||
@return string.slice($string, 1, $index - 1) + $replace + str-replace(string.slice($string, $index + string.length($search)), $search, $replace);
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Applies a function to each key-value pair in a map
|
|
||||||
*
|
|
||||||
* @param {Map} $map - The map to iterate over
|
|
||||||
* @param {String} $func - The name of the function to apply
|
|
||||||
* @param {*} $args... - Additional arguments to pass to the function
|
|
||||||
* @return {Map} - A new map with the function applied to each value
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* $colors: (primary: #007bff, secondary: #6c757d);
|
|
||||||
* map-loop($colors, darken, 10%) // Returns map with darkened colors
|
|
||||||
*/
|
|
||||||
@function map-loop($map, $func, $args...) {
|
|
||||||
$_map: ();
|
|
||||||
|
|
||||||
@each $key, $value in $map {
|
|
||||||
// allow to pass the $key and $value of the map as an function argument
|
|
||||||
$_args: ();
|
|
||||||
@each $arg in $args {
|
|
||||||
$_args: list.append($_args, if($arg == "$key", $key, if($arg == "$value", $value, $arg)));
|
|
||||||
}
|
|
||||||
|
|
||||||
$_map: map.merge($_map, ($key: meta.call(meta.get-function($func), $_args...)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@return $_map;
|
|
||||||
}
|
|
||||||
@@ -70,4 +70,9 @@
|
|||||||
// Override bootstrap core
|
// Override bootstrap core
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// TODO: remove when https://github.com/twbs/bootstrap/pull/37425/ will be released
|
||||||
|
//
|
||||||
|
@function opaque($background, $foreground) {
|
||||||
|
@return mix(rgba($foreground, 1), $background, opacity($foreground) * 100%);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
@import "bootstrap/scss/functions";
|
@import "bootstrap/scss/functions";
|
||||||
@import "bootstrap-functions";
|
|
||||||
|
|
||||||
@import "mixins";
|
@import "mixins";
|
||||||
@import "variables";
|
@import "variables";
|
||||||
|
|||||||
@@ -76,7 +76,6 @@
|
|||||||
@import "utils/opacity";
|
@import "utils/opacity";
|
||||||
@import "utils/shadow";
|
@import "utils/shadow";
|
||||||
@import "utils/text";
|
@import "utils/text";
|
||||||
@import "utils/hover";
|
|
||||||
|
|
||||||
@import "debug";
|
@import "debug";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
@use "sass:map";
|
|
||||||
@import "config";
|
@import "config";
|
||||||
|
|
||||||
:root,
|
:root,
|
||||||
@@ -31,7 +30,7 @@
|
|||||||
--#{$prefix}brand: #{$primary};
|
--#{$prefix}brand: #{$primary};
|
||||||
|
|
||||||
/** Theme colors */
|
/** Theme colors */
|
||||||
@each $name, $color in map.merge($theme-colors, $social-colors) {
|
@each $name, $color in map-merge($theme-colors, $social-colors) {
|
||||||
--#{$prefix}#{$name}: #{$color};
|
--#{$prefix}#{$name}: #{$color};
|
||||||
--#{$prefix}#{$name}-rgb: #{to-rgb($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}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};
|
||||||
@@ -43,9 +42,9 @@
|
|||||||
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
|
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Gray colors */
|
/** Social colors */
|
||||||
@each $name, $color in $gray-colors {
|
@each $name, $color in $social-colors {
|
||||||
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color, white) > $min-contrast-ratio, var(--#{$prefix}white), var(--#{$prefix}body-color))};
|
--#{$prefix}#{$name}: #{$color};
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Spacers */
|
/** Spacers */
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
@use "sass:map";
|
|
||||||
|
|
||||||
$negative-spacers-extra: if(
|
$negative-spacers-extra: if(
|
||||||
$enable-negative-margins,
|
$enable-negative-margins,
|
||||||
negativify-map(map.merge($spacers, $spacers-extra)),
|
negativify-map(map-merge($spacers, $spacers-extra)),
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
@use "sass:string";
|
|
||||||
@use "sass:color";
|
|
||||||
@use "sass:map";
|
|
||||||
@use "sass:math";
|
|
||||||
|
|
||||||
$prefix: "tblr-" !default;
|
$prefix: "tblr-" !default;
|
||||||
|
|
||||||
// BASE CONFIG
|
// BASE CONFIG
|
||||||
@@ -28,10 +23,10 @@ $font-google-monospaced: null !default;
|
|||||||
$font-local: null !default;
|
$font-local: null !default;
|
||||||
$font-icons: () !default;
|
$font-icons: () !default;
|
||||||
|
|
||||||
$font-family-sans-serif: string.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: string.unquote("#{if($font-google-monospaced, "#{$font-google-monospaced}, ", '')}") 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;
|
$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;
|
||||||
@@ -57,9 +52,9 @@ $line-height-700: 3rem !default;
|
|||||||
|
|
||||||
$font-size-base: 0.875rem !default;
|
$font-size-base: 0.875rem !default;
|
||||||
|
|
||||||
$spacing-wide: 0.04em !default;
|
$spacing-wide: .04em !default;
|
||||||
$spacing-normal: 0 !default;
|
$spacing-normal: 0 !default;
|
||||||
$spacing-tight: -0.04em !default;
|
$spacing-tight: -.04em !default;
|
||||||
|
|
||||||
$body-letter-spacing: 0 !default;
|
$body-letter-spacing: 0 !default;
|
||||||
|
|
||||||
@@ -73,12 +68,12 @@ $headings-font-weight: var(--#{$prefix}font-weight-bold) !default;
|
|||||||
$headings-margin-bottom: var(--#{$prefix}spacer) !default;
|
$headings-margin-bottom: var(--#{$prefix}spacer) !default;
|
||||||
|
|
||||||
$font-weights: (
|
$font-weights: (
|
||||||
"light": $font-weight-light,
|
'light': $font-weight-light,
|
||||||
"normal": $font-weight-normal,
|
'normal': $font-weight-normal,
|
||||||
"medium": $font-weight-medium,
|
'medium': $font-weight-medium,
|
||||||
"bold": $font-weight-bold,
|
'bold': $font-weight-bold,
|
||||||
"black": $font-weight-black,
|
'black': $font-weight-black,
|
||||||
"headings": $headings-font-weight,
|
'headings': $headings-font-weight,
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
$line-height-base: divide(1.25rem, $font-size-base) !default;
|
$line-height-base: divide(1.25rem, $font-size-base) !default;
|
||||||
@@ -104,8 +99,8 @@ $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;
|
||||||
|
|
||||||
$font-size-reative-xs: 0.71428571em !default;
|
$font-size-reative-xs: .71428571em !default;
|
||||||
$font-size-reative-sm: 0.85714285em !default;
|
$font-size-reative-sm: .85714285em !default;
|
||||||
$font-size-reative-md: 1em !default;
|
$font-size-reative-md: 1em !default;
|
||||||
|
|
||||||
$font-sizes: (
|
$font-sizes: (
|
||||||
@@ -151,7 +146,7 @@ $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: #f9fafb !default;
|
$gray-50: #f9fafb !default;
|
||||||
$gray-100: #f3f4f6 !default;
|
$gray-100: #f3f4f6 !default;
|
||||||
$gray-200: #e5e7eb !default;
|
$gray-200: #e5e7eb !default;
|
||||||
$gray-300: #d1d5db !default;
|
$gray-300: #d1d5db !default;
|
||||||
@@ -205,7 +200,7 @@ $border-color-translucent: rgba(4, 32, 69, 0.1);
|
|||||||
$border-dark-color: $gray-400 !default;
|
$border-dark-color: $gray-400 !default;
|
||||||
$border-dark-color-translucent: rgba(4, 32, 69, 0.27);
|
$border-dark-color-translucent: rgba(4, 32, 69, 0.27);
|
||||||
|
|
||||||
$border-active-color: color.mix($text-secondary, #ffffff, math.percentage($border-active-opacity)) !default;
|
$border-active-color: mix($text-secondary, #ffffff, percentage($border-active-opacity)) !default;
|
||||||
$border-active-color-translucent: rgba($text-secondary, $border-active-opacity) !default;
|
$border-active-color-translucent: rgba($text-secondary, $border-active-opacity) !default;
|
||||||
|
|
||||||
$active-bg: rgba(var(--#{$prefix}primary-rgb), 0.04) !default;
|
$active-bg: rgba(var(--#{$prefix}primary-rgb), 0.04) !default;
|
||||||
@@ -215,7 +210,7 @@ $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: color-transparent(var(--#{$prefix}body-color), 0.4) !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;
|
||||||
@@ -284,10 +279,9 @@ $gray-colors: (
|
|||||||
gray-700: $gray-700,
|
gray-700: $gray-700,
|
||||||
gray-800: $gray-800,
|
gray-800: $gray-800,
|
||||||
gray-900: $gray-900,
|
gray-900: $gray-900,
|
||||||
gray-950: $gray-950,
|
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
$theme-colors: map.merge($theme-colors, map.merge($extra-colors, ()));
|
$theme-colors: map-merge($theme-colors, map-merge($extra-colors, ()));
|
||||||
|
|
||||||
// BACKDROPS
|
// BACKDROPS
|
||||||
$backdrop-opacity: 24% !default;
|
$backdrop-opacity: 24% !default;
|
||||||
@@ -326,10 +320,10 @@ $border-values: (
|
|||||||
$icon-color: var(--#{$prefix}gray-400) !default;
|
$icon-color: var(--#{$prefix}gray-400) !default;
|
||||||
|
|
||||||
// Code
|
// Code
|
||||||
$code-color: light-dark(var(--#{$prefix}gray-600), var(--#{$prefix}gray-400)) !default;
|
$code-color: var(--#{$prefix}primary) !default;
|
||||||
$code-bg: light-dark(var(--#{$prefix}gray-100), var(--#{$prefix}gray-900)) !default;
|
|
||||||
$code-font-size: $font-size-reative-sm !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}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;
|
||||||
@@ -346,7 +340,7 @@ $kbd-border-radius: var(--#{$prefix}border-radius) !default;
|
|||||||
|
|
||||||
// Avatars
|
// Avatars
|
||||||
$avatar-size: 2.5rem !default;
|
$avatar-size: 2.5rem !default;
|
||||||
$avatar-status-size: 0.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-brand-size: 1.25rem !default;
|
||||||
@@ -354,52 +348,52 @@ $avatar-bg: var(--#{$prefix}bg-surface-secondary) !default;
|
|||||||
$avatar-sizes: (
|
$avatar-sizes: (
|
||||||
"xxs": (
|
"xxs": (
|
||||||
size: 1rem,
|
size: 1rem,
|
||||||
font-size: 0.5rem,
|
font-size: .5rem,
|
||||||
icon-size: 0.5rem,
|
icon-size: .5rem,
|
||||||
status-size: 0.25rem,
|
status-size: .25rem,
|
||||||
brand-size: 0.5rem,
|
brand-size: .5rem
|
||||||
),
|
),
|
||||||
"xs": (
|
"xs": (
|
||||||
size: 1.25rem,
|
size: 1.25rem,
|
||||||
font-size: $h6-font-size,
|
font-size: $h6-font-size,
|
||||||
icon-size: 0.75rem,
|
icon-size: .75rem,
|
||||||
status-size: 0.375rem,
|
status-size: .375rem,
|
||||||
brand-size: 0.75rem,
|
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: 0.5rem,
|
status-size: .5rem,
|
||||||
brand-size: 1rem,
|
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: 0.75rem,
|
status-size: .75rem,
|
||||||
brand-size: 1.25rem,
|
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: 0.75rem,
|
status-size: .75rem,
|
||||||
brand-size: 1.25rem,
|
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,
|
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,
|
brand-size: 2rem
|
||||||
),
|
),
|
||||||
) !default;
|
) !default;
|
||||||
$avatar-border-radius: var(--#{$prefix}border-radius) !default;
|
$avatar-border-radius: var(--#{$prefix}border-radius) !default;
|
||||||
@@ -482,7 +476,7 @@ $size-spacers: (
|
|||||||
full: 100%,
|
full: 100%,
|
||||||
) !default;
|
) !default;
|
||||||
|
|
||||||
$size-values: map.merge(
|
$size-values: map-merge(
|
||||||
$spacers,
|
$spacers,
|
||||||
(
|
(
|
||||||
25: 25%,
|
25: 25%,
|
||||||
@@ -591,71 +585,41 @@ $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-border-width: var(--#{$prefix}border-width) !default;
|
$input-btn-line-height: $line-height-base !default;
|
||||||
$input-btn-font-family: var(--#{$prefix}body-font-family) !default;
|
|
||||||
$input-btn-focus-width: 0.25rem !default;
|
|
||||||
|
|
||||||
$input-btn-padding-y-sm: 0.3125rem !default;
|
|
||||||
$input-btn-padding-x-sm: 0.5rem !default;
|
|
||||||
$input-btn-font-size-sm: $h5-font-size !default;
|
|
||||||
$input-btn-line-height-sm: divide(1rem, $input-btn-font-size-sm) !default;
|
|
||||||
$input-btn-icon-size-sm: 1rem !default;
|
|
||||||
|
|
||||||
$input-btn-padding-y: 0.5625rem !default;
|
|
||||||
$input-btn-padding-x: 1rem !default;
|
|
||||||
$input-btn-line-height: 1.25rem !default;
|
|
||||||
$input-btn-font-size: $font-size-base !default;
|
$input-btn-font-size: $font-size-base !default;
|
||||||
|
$input-btn-font-family: var(--#{$prefix}body-font-face) !default;
|
||||||
|
$input-btn-padding-y: 0.5rem - 0.0625rem !default;
|
||||||
$input-btn-icon-size: $icon-size !default;
|
$input-btn-icon-size: $icon-size !default;
|
||||||
|
|
||||||
$input-btn-padding-y-lg: 0.6875rem !default;
|
$input-btn-font-size-sm: $h5-font-size !default;
|
||||||
|
$input-btn-padding-x-sm: 0.25rem !default;
|
||||||
|
$input-btn-padding-y-sm: 0.125rem - 0.0625rem !default;
|
||||||
|
$input-btn-line-height-sm: 1rem !default;
|
||||||
|
$input-btn-icon-size-sm: 1rem !default;
|
||||||
|
|
||||||
|
$input-btn-font-size-lg: $h2-font-size !default;
|
||||||
$input-btn-padding-x-lg: 1.5rem !default;
|
$input-btn-padding-x-lg: 1.5rem !default;
|
||||||
$input-btn-line-height-lg: 1.5rem !default;
|
$input-btn-padding-y-lg: 0.75rem - 0.0625rem !default;
|
||||||
$input-btn-font-size-lg: $h3-font-size !default;
|
$input-btn-line-height-lg: 2rem !default;
|
||||||
$input-btn-icon-size-lg: 1.5rem !default;
|
$input-btn-icon-size-lg: 2rem !default;
|
||||||
|
|
||||||
$input-btn-padding-y-xl: 0.6875rem !default;
|
|
||||||
$input-btn-padding-x-xl: 2rem !default;
|
|
||||||
$input-btn-font-size-xl: $h1-font-size !default;
|
|
||||||
$input-btn-line-height-xl: divide(2rem, $input-btn-font-size-lg) !default;
|
|
||||||
$input-btn-icon-size-xl: 2rem !default;
|
|
||||||
|
|
||||||
|
$input-btn-focus-width: 0.25rem !default;
|
||||||
|
|
||||||
// Inputs
|
// Inputs
|
||||||
$input-height: null !default;
|
$input-height: null !default;
|
||||||
$input-height-sm: null !default;
|
$input-height-sm: null !default;
|
||||||
$input-height-lg: null !default;
|
$input-height-lg: null !default;
|
||||||
$input-border-radius: var(--#{$prefix}border-radius) !default;
|
$input-border-radius: var(--#{$prefix}border-radius) !default;
|
||||||
$input-padding-y: $input-btn-padding-y !default;
|
|
||||||
$input-padding-x: $input-btn-padding-x !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}shadow-input) !default;
|
$input-box-shadow: var(--#{$prefix}shadow-input) !default;
|
||||||
|
|
||||||
$input-border-width: $input-btn-border-width !default;
|
|
||||||
$input-line-height: $input-btn-line-height !default;
|
|
||||||
$input-height-border: calc(#{$input-border-width} * 2) !default;
|
|
||||||
|
|
||||||
$input-padding-y-sm: $input-btn-padding-y-sm !default;
|
|
||||||
$input-padding-x-sm: $input-btn-padding-x-sm !default;
|
|
||||||
$input-font-size-sm: $input-btn-font-size-sm !default;
|
|
||||||
|
|
||||||
$input-padding-y-lg: $input-btn-padding-y-lg !default;
|
|
||||||
$input-padding-x-lg: $input-btn-padding-x-lg !default;
|
|
||||||
$input-font-size-lg: $input-btn-font-size-lg !default;
|
|
||||||
|
|
||||||
$input-height-inner: add($input-line-height, calc($input-padding-y * 2)) !default;
|
|
||||||
$input-height-inner-half: add($input-line-height, $input-padding-y) !default;
|
|
||||||
$input-height-inner-quarter: add($input-line-height, calc($input-padding-y * 0.5)) !default;
|
|
||||||
|
|
||||||
$input-height: add($input-line-height, add(calc($input-padding-y * 2), $input-height-border, false)) !default;
|
|
||||||
$input-height-sm: add($input-line-height, add(calc($input-padding-y-sm * 2), $input-height-border, false)) !default;
|
|
||||||
$input-height-lg: add($input-line-height, add(calc($input-padding-y-lg * 2), $input-height-border, false)) !default;
|
|
||||||
|
|
||||||
// Buttons
|
// Buttons
|
||||||
$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
|
$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
|
||||||
$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;
|
$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;
|
||||||
|
|
||||||
$btn-disabled-opacity: 0.4 !default;
|
$btn-disabled-opacity: .4 !default;
|
||||||
|
$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;
|
||||||
@@ -663,8 +627,8 @@ $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;
|
||||||
@@ -846,7 +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, 0.04) !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;
|
||||||
|
|
||||||
@@ -863,9 +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: 0.5rem !default;
|
$popover-body-padding-x: .5rem !default;
|
||||||
$popover-body-padding-y: 0.5rem !default;
|
$popover-body-padding-y: .5rem !default;
|
||||||
$popover-box-shadow: var(--#{$prefix}shadow-lg) !default;
|
$popover-box-shadow: var(--#{$prefix}box-shadow-lg) !default;
|
||||||
|
|
||||||
// Footer
|
// Footer
|
||||||
$footer-padding-y: 2rem !default;
|
$footer-padding-y: 2rem !default;
|
||||||
@@ -874,17 +838,13 @@ $footer-border-color: var(--#{$prefix}border-color) !default;
|
|||||||
$footer-color: var(--#{$prefix}gray-500) !default;
|
$footer-color: var(--#{$prefix}gray-500) !default;
|
||||||
|
|
||||||
// Pagination
|
// Pagination
|
||||||
$pagination-border-width: 1px !default;
|
$pagination-border-width: 0 !default;
|
||||||
$pagination-border-color: transparent !default;
|
$pagination-padding-y: 0.25rem !default;
|
||||||
$pagination-padding-y: calc(0.25rem + 1px) !default;
|
|
||||||
$pagination-padding-x: 0.25rem !default;
|
$pagination-padding-x: 0.25rem !default;
|
||||||
$pagination-color: var(--#{$prefix}body-color) !default;
|
$pagination-color: var(--#{$prefix}gray-500) !default;
|
||||||
$pagination-bg: transparent !default;
|
$pagination-bg: transparent !default;
|
||||||
$pagination-hover-bg: var(--#{$prefix}active-bg) !default;
|
|
||||||
$pagination-hover-border-color: var(--#{$prefix}pagination-border-color) !default;
|
|
||||||
$pagination-disabled-bg: transparent !default;
|
$pagination-disabled-bg: transparent !default;
|
||||||
$pagination-disabled-color: var(--#{$prefix}disabled-color) !default;
|
$pagination-disabled-color: var(--#{$prefix}disabled-color) !default;
|
||||||
$pagination-disabled-border-color: var(--#{$prefix}pagination-border-color) !default;
|
|
||||||
|
|
||||||
$pagination-active-bg: var(--#{$prefix}primary) !default;
|
$pagination-active-bg: var(--#{$prefix}primary) !default;
|
||||||
$pagination-active-border-color: var(--#{$prefix}primary) !default;
|
$pagination-active-border-color: var(--#{$prefix}primary) !default;
|
||||||
|
|||||||
@@ -1,50 +1,39 @@
|
|||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
0% {
|
from {
|
||||||
transform: scale(1);
|
opacity: 1;
|
||||||
|
transform: scale3d(.8, .8, .8)
|
||||||
}
|
}
|
||||||
|
|
||||||
14% {
|
50% {
|
||||||
transform: scale(1.25);
|
transform: scale3d(1, 1, 1);
|
||||||
|
opacity: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
28% {
|
to {
|
||||||
transform: scale(1);
|
opacity: 1;
|
||||||
}
|
transform: scale3d(.8, .8, .8)
|
||||||
|
|
||||||
42% {
|
|
||||||
transform: scale(1.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
70% {
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes tada {
|
@keyframes tada {
|
||||||
0% {
|
0% {
|
||||||
transform: scale3d(1, 1, 1);
|
transform: scale3d(1, 1, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
10%,
|
10%, 5% {
|
||||||
5% {
|
transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -5deg)
|
||||||
transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -5deg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
15%,
|
15%, 25%, 35%, 45% {
|
||||||
25%,
|
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg)
|
||||||
35%,
|
|
||||||
45% {
|
|
||||||
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
20%,
|
20%, 30%, 40% {
|
||||||
30%,
|
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg)
|
||||||
40% {
|
|
||||||
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
50% {
|
50% {
|
||||||
transform: scale3d(1, 1, 1);
|
transform: scale3d(1, 1, 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,27 +61,3 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes shake {
|
|
||||||
0% {
|
|
||||||
transform: scaleX(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
20% {
|
|
||||||
transform: scale3d(0.9, 0.9, 0.9) rotate(-5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
50%,
|
|
||||||
70%,
|
|
||||||
90% {
|
|
||||||
transform: scale3d(1.25, 1.25, 1.25) rotate(5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
60%,
|
|
||||||
80% {
|
|
||||||
transform: scale3d(1.25, 1.25, 1.25) rotate(-5deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
transform: scaleX(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ body {
|
|||||||
position: relative;
|
position: relative;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0;
|
padding: 0 !important;
|
||||||
|
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
|||||||
@@ -61,6 +61,9 @@
|
|||||||
|
|
||||||
--#{$prefix}btn-color: #{$darken-dark};
|
--#{$prefix}btn-color: #{$darken-dark};
|
||||||
|
|
||||||
|
--#{$prefix}code-color: var(--#{$prefix}body-color);
|
||||||
|
--#{$prefix}code-bg: #{$border-dark-color-dark};
|
||||||
|
|
||||||
.navbar-brand-autodark {
|
.navbar-brand-autodark {
|
||||||
.navbar-brand-image {
|
.navbar-brand-image {
|
||||||
@include autodark-image;
|
@include autodark-image;
|
||||||
|
|||||||
@@ -160,8 +160,7 @@ Navbar
|
|||||||
&.navbar-vertical {
|
&.navbar-vertical {
|
||||||
box-shadow: inset calc(-1 * var(--#{$prefix}navbar-border-width)) 0 0 0 var(--#{$prefix}navbar-border-color);
|
box-shadow: inset calc(-1 * var(--#{$prefix}navbar-border-width)) 0 0 0 var(--#{$prefix}navbar-border-color);
|
||||||
|
|
||||||
&.navbar-right,
|
&.navbar-right {
|
||||||
&.navbar-end {
|
|
||||||
box-shadow: inset calc(1 * var(--#{$prefix}navbar-border-width)) 0 0 0 var(--#{$prefix}navbar-border-color);
|
box-shadow: inset calc(1 * var(--#{$prefix}navbar-border-width)) 0 0 0 var(--#{$prefix}navbar-border-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,8 +172,7 @@ Navbar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.navbar-vertical.navbar-right,
|
&.navbar-vertical.navbar-right {
|
||||||
&.navbar-vertical.navbar-end {
|
|
||||||
~ .navbar,
|
~ .navbar,
|
||||||
~ .page-wrapper {
|
~ .page-wrapper {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
@@ -221,13 +219,13 @@ Navbar toggler
|
|||||||
width: 1.25em;
|
width: 1.25em;
|
||||||
background: currentColor;
|
background: currentColor;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
position: relative;
|
|
||||||
@include transition(
|
@include transition(
|
||||||
top $navbar-toggler-animation-time $navbar-toggler-animation-time,
|
top $navbar-toggler-animation-time $navbar-toggler-animation-time,
|
||||||
bottom $navbar-toggler-animation-time $navbar-toggler-animation-time,
|
bottom $navbar-toggler-animation-time $navbar-toggler-animation-time,
|
||||||
transform $navbar-toggler-animation-time,
|
transform $navbar-toggler-animation-time,
|
||||||
opacity 0s $navbar-toggler-animation-time
|
opacity 0s $navbar-toggler-animation-time
|
||||||
);
|
);
|
||||||
|
position: relative;
|
||||||
|
|
||||||
&:before,
|
&:before,
|
||||||
&:after {
|
&:after {
|
||||||
@@ -320,12 +318,11 @@ Navbar vertical
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
z-index: $zindex-fixed;
|
z-index: $zindex-fixed;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
@include transition(transform $transition-time);
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@include transition(transform $transition-time);
|
|
||||||
|
|
||||||
&.navbar-right,
|
&.navbar-right {
|
||||||
&.navbar-end {
|
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
@@ -367,8 +364,7 @@ Navbar vertical
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.navbar-right ~ .page,
|
&.navbar-right ~ .page {
|
||||||
&.navbar-end ~ .page {
|
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
padding-right: $sidebar-width;
|
padding-right: $sidebar-width;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,46 +1,24 @@
|
|||||||
@use "sass:math";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a lighter version of a theme color by mixing it with a background color
|
|
||||||
*
|
|
||||||
* @param {Color} $color - The base color to lighten
|
|
||||||
* @param {Color} $background - The background color to mix with (default: #fff)
|
|
||||||
* @return {Color} - The lighter version of the color (10% mix)
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* theme-color-lighter(#007bff) // Returns lighter blue
|
|
||||||
* theme-color-lighter(#dc3545, #f8f9fa) // Returns lighter red mixed with light gray
|
|
||||||
*/
|
|
||||||
@function theme-color-lighter($color, $background: #fff) {
|
@function theme-color-lighter($color, $background: #fff) {
|
||||||
@return mix($color, $background, 10%);
|
@return mix($color, $background, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a darker version of a theme color by shading it
|
|
||||||
*
|
|
||||||
* @param {Color} $color - The base color to darken
|
|
||||||
* @return {Color} - The darker version of the color (10% shade)
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* theme-color-darker(#007bff) // Returns darker blue
|
|
||||||
* theme-color-darker(#28a745) // Returns darker green
|
|
||||||
*/
|
|
||||||
@function theme-color-darker($color) {
|
@function theme-color-darker($color) {
|
||||||
@return shade-color($color, 10%);
|
@return shade-color($color, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
//
|
||||||
* Media query mixin for breakpoints smaller than the specified breakpoint
|
// Replace all occurrences of a substring within a string.
|
||||||
*
|
//
|
||||||
* @param {String} $name - The breakpoint name to target
|
@function str-replace($string, $search, $replace: "") {
|
||||||
* @param {Map} $breakpoints - The breakpoints map (default: $grid-breakpoints)
|
$index: str-index($string, $search);
|
||||||
* @content - The CSS content to apply within the media query
|
|
||||||
*
|
@if $index {
|
||||||
* @example
|
@return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
|
||||||
* @include media-breakpoint-down-than(lg) {
|
}
|
||||||
* .container { max-width: 100%; }
|
|
||||||
* }
|
@return $string;
|
||||||
*/
|
}
|
||||||
|
|
||||||
@mixin media-breakpoint-down-than($name, $breakpoints: $grid-breakpoints) {
|
@mixin media-breakpoint-down-than($name, $breakpoints: $grid-breakpoints) {
|
||||||
$prev: breakpoint-prev($name);
|
$prev: breakpoint-prev($name);
|
||||||
|
|
||||||
@@ -59,19 +37,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the previous breakpoint name in the breakpoints map
|
|
||||||
*
|
|
||||||
* @param {String} $name - The current breakpoint name
|
|
||||||
* @param {Map} $breakpoints - The breakpoints map (default: $grid-breakpoints)
|
|
||||||
* @param {List} $breakpoint-names - List of breakpoint names (default: map-keys($breakpoints))
|
|
||||||
* @return {String|null} - The previous breakpoint name or null if none exists
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* breakpoint-prev(lg) // Returns: md
|
|
||||||
* breakpoint-prev(sm) // Returns: xs
|
|
||||||
* breakpoint-prev(xs) // Returns: null
|
|
||||||
*/
|
|
||||||
@function breakpoint-prev($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
|
@function breakpoint-prev($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
|
||||||
$n: index($breakpoint-names, $name);
|
$n: index($breakpoint-names, $name);
|
||||||
@if not $n {
|
@if not $n {
|
||||||
@@ -80,15 +45,9 @@
|
|||||||
@return if($n > 1, nth($breakpoint-names, $n - 1), null);
|
@return if($n > 1, nth($breakpoint-names, $n - 1), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
//
|
||||||
* Escapes special characters in SVG strings for use in CSS
|
// Escape SVG strings.
|
||||||
*
|
//
|
||||||
* @param {String} $string - The SVG string to escape
|
|
||||||
* @return {String} - The escaped SVG string
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* escape-svg("data:image/svg+xml,<svg>...</svg>") // Returns escaped SVG
|
|
||||||
*/
|
|
||||||
@function escape-svg($string) {
|
@function escape-svg($string) {
|
||||||
@if str-index($string, "data:image/svg+xml") {
|
@if str-index($string, "data:image/svg+xml") {
|
||||||
@each $char, $encoded in $escaped-characters {
|
@each $char, $encoded in $escaped-characters {
|
||||||
@@ -109,13 +68,9 @@
|
|||||||
*
|
*
|
||||||
* @param {Number} $value - The value to be converted to a percentage.
|
* @param {Number} $value - The value to be converted to a percentage.
|
||||||
* @return {String} - The percentage representation of the value.
|
* @return {String} - The percentage representation of the value.
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* to-percentage(0.5) // Returns: 50%
|
|
||||||
* to-percentage(0.25) // Returns: 25%
|
|
||||||
*/
|
*/
|
||||||
@function to-percentage($value) {
|
@function to-percentage($value) {
|
||||||
@return if(math.is-unitless($value), math.percentage($value), $value);
|
@return if(unitless($value), percentage($value), $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,12 +78,7 @@
|
|||||||
*
|
*
|
||||||
* @param {Color} $color - The base color to be made transparent.
|
* @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.
|
* @param {Number} $alpha - The level of transparency, ranging from 0 (fully transparent) to 1 (fully opaque). Default is 1.
|
||||||
* @param {Color} $background - The background color to mix with (default: transparent)
|
|
||||||
* @return {Color} - The resulting color with the specified transparency.
|
* @return {Color} - The resulting color with the specified transparency.
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* color-transparent(#007bff, 0.5) // Returns semi-transparent blue
|
|
||||||
* color-transparent(#dc3545, 0.8) // Returns mostly opaque red
|
|
||||||
*/
|
*/
|
||||||
@function color-transparent($color, $alpha: 1, $background: transparent) {
|
@function color-transparent($color, $alpha: 1, $background: transparent) {
|
||||||
@if $alpha == 1 {
|
@if $alpha == 1 {
|
||||||
@@ -138,15 +88,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts an SVG string to a data URL format for use in CSS
|
|
||||||
*
|
|
||||||
* @param {String} $svg - The SVG markup to convert
|
|
||||||
* @return {String} - The data URL formatted SVG
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* url-svg('<svg>...</svg>') // Returns: url('data:image/svg+xml;charset=UTF-8,...')
|
|
||||||
*/
|
|
||||||
@function url-svg($svg) {
|
@function url-svg($svg) {
|
||||||
$svg: str-replace($svg, '#', '%23');
|
$svg: str-replace($svg, '#', '%23');
|
||||||
$svg: str-replace($svg, '<svg', '<svg xmlns="http://www.w3.org/2000/svg"');
|
$svg: str-replace($svg, '<svg', '<svg xmlns="http://www.w3.org/2000/svg"');
|
||||||
|
|||||||
@@ -13,4 +13,4 @@
|
|||||||
@import "vendor/coloris";
|
@import "vendor/coloris";
|
||||||
@import "vendor/typed";
|
@import "vendor/typed";
|
||||||
@import "vendor/turbo";
|
@import "vendor/turbo";
|
||||||
@import "vendor/fullcalendar";
|
|
||||||
|
|||||||
@@ -1,23 +1,7 @@
|
|||||||
.breadcrumb {
|
.breadcrumb {
|
||||||
--#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
|
|
||||||
--#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
|
|
||||||
--#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
|
|
||||||
--#{$prefix}breadcrumb-font-size: #{$breadcrumb-font-size};
|
|
||||||
--#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
|
|
||||||
--#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
|
|
||||||
--#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
|
|
||||||
--#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
|
|
||||||
--#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
|
|
||||||
--#{$prefix}breadcrumb-item-active-font-weight: #{$breadcrumb-active-font-weight};
|
--#{$prefix}breadcrumb-item-active-font-weight: #{$breadcrumb-active-font-weight};
|
||||||
--#{$prefix}breadcrumb-item-disabled-color: #{$breadcrumb-disabled-color};
|
--#{$prefix}breadcrumb-item-disabled-color: #{$breadcrumb-disabled-color};
|
||||||
--#{$prefix}breadcrumb-link-color: #{$breadcrumb-link-color};
|
--#{$prefix}breadcrumb-link-color: #{$breadcrumb-link-color};
|
||||||
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
@include font-size(var(--#{$prefix}breadcrumb-font-size));
|
|
||||||
list-style: none;
|
|
||||||
background-color: var(--#{$prefix}breadcrumb-bg);
|
|
||||||
@include border-radius(var(--#{$prefix}breadcrumb-border-radius));
|
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
@@ -37,7 +21,6 @@
|
|||||||
|
|
||||||
.breadcrumb-item {
|
.breadcrumb-item {
|
||||||
&.active {
|
&.active {
|
||||||
color: var(--#{$prefix}breadcrumb-item-active-color);
|
|
||||||
font-weight: var(--#{$prefix}breadcrumb-item-active-font-weight);
|
font-weight: var(--#{$prefix}breadcrumb-item-active-font-weight);
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@@ -58,20 +41,6 @@
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
& + & {
|
|
||||||
padding-left: var(--#{$prefix}breadcrumb-item-padding-x);
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
float: left;
|
|
||||||
padding-right: var(--#{$prefix}breadcrumb-item-padding-x);
|
|
||||||
color: var(--#{$prefix}breadcrumb-divider-color);
|
|
||||||
content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider));
|
|
||||||
/*rtl:raw:
|
|
||||||
transform: scaleX(-1);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@each $name, $symbol in $breadcrumb-variants {
|
@each $name, $symbol in $breadcrumb-variants {
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
@use "sass:color";
|
@use "sass:color";
|
||||||
@use "sass:map";
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Button
|
// Button
|
||||||
//
|
//
|
||||||
.btn {
|
.btn {
|
||||||
--#{$prefix}btn-icon-size: #{$input-btn-icon-size};
|
--#{$prefix}btn-icon-size: #{$input-btn-icon-size};
|
||||||
--#{$prefix}btn-icon-color: inherit;
|
|
||||||
--#{$prefix}btn-bg: var(--#{$prefix}bg-surface);
|
--#{$prefix}btn-bg: var(--#{$prefix}bg-surface);
|
||||||
--#{$prefix}btn-color: var(--#{$prefix}body-color);
|
--#{$prefix}btn-color: var(--#{$prefix}body-color);
|
||||||
--#{$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}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};
|
||||||
@@ -22,9 +21,6 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
box-shadow: var(--#{$prefix}btn-box-shadow);
|
box-shadow: var(--#{$prefix}btn-box-shadow);
|
||||||
position: relative;
|
position: relative;
|
||||||
min-width: calc((var(--#{$prefix}btn-line-height) * 1) + (var(--#{$prefix}btn-padding-y) * 2) + (var(--#{$prefix}btn-border-width) * 2));
|
|
||||||
min-height: calc((var(--#{$prefix}btn-line-height) * 1) + (var(--#{$prefix}btn-padding-y) * 2) + (var(--#{$prefix}btn-border-width) * 2));
|
|
||||||
|
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
width: var(--#{$prefix}btn-icon-size);
|
width: var(--#{$prefix}btn-icon-size);
|
||||||
@@ -33,7 +29,7 @@
|
|||||||
font-size: var(--#{$prefix}btn-icon-size);
|
font-size: var(--#{$prefix}btn-icon-size);
|
||||||
margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
|
margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
color: var(--#{$prefix}btn-icon-color);
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
@@ -42,8 +38,7 @@
|
|||||||
margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
|
margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon-right,
|
.icon-right {
|
||||||
.icon-end {
|
|
||||||
margin: 0 calc(var(--#{$prefix}btn-padding-x) / -4) 0 calc(var(--#{$prefix}btn-padding-x) / 2);
|
margin: 0 calc(var(--#{$prefix}btn-padding-x) / -4) 0 calc(var(--#{$prefix}btn-padding-x) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,9 +72,9 @@
|
|||||||
//
|
//
|
||||||
// Button color variations
|
// Button color variations
|
||||||
//
|
//
|
||||||
@each $color, $value in map.merge($theme-colors, $social-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);
|
||||||
--#{$prefix}btn-hover-border-color: var(--#{$prefix}dark-mode-border-active-color);
|
--#{$prefix}btn-hover-border-color: var(--#{$prefix}dark-mode-border-active-color);
|
||||||
--#{$prefix}btn-active-border-color: var(--#{$prefix}dark-mode-border-active-color);
|
--#{$prefix}btn-active-border-color: var(--#{$prefix}dark-mode-border-active-color);
|
||||||
@@ -100,8 +95,7 @@
|
|||||||
--#{$prefix}btn-box-shadow: var(--#{$prefix}shadow-input);
|
--#{$prefix}btn-box-shadow: var(--#{$prefix}shadow-input);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-outline-#{$color},
|
.btn-outline-#{$color} {
|
||||||
.btn-outline.btn-#{$color} {
|
|
||||||
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-bg: transparent;
|
--#{$prefix}btn-bg: transparent;
|
||||||
--#{$prefix}btn-border-color: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-border-color: var(--#{$prefix}#{$color});
|
||||||
@@ -110,13 +104,11 @@
|
|||||||
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
|
--#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
|
||||||
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-active-border-color: var(--#{$prefix}#{$color});
|
|
||||||
--#{$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});
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-ghost-#{$color},
|
.btn-ghost-#{$color} {
|
||||||
.btn-ghost.btn-#{$color} {
|
|
||||||
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
|
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
|
||||||
--#{$prefix}btn-bg: transparent;
|
--#{$prefix}btn-bg: transparent;
|
||||||
--#{$prefix}btn-border-color: transparent;
|
--#{$prefix}btn-border-color: transparent;
|
||||||
@@ -138,27 +130,16 @@
|
|||||||
//
|
//
|
||||||
// Button sizes
|
// Button sizes
|
||||||
//
|
//
|
||||||
.btn-sm,
|
.btn-sm, .btn-group-sm > .btn {
|
||||||
.btn-group-sm > .btn {
|
|
||||||
--#{$prefix}btn-line-height: #{$input-btn-line-height-sm};
|
--#{$prefix}btn-line-height: #{$input-btn-line-height-sm};
|
||||||
--#{$prefix}btn-icon-size: #{$input-btn-icon-size-sm};
|
--#{$prefix}btn-icon-size: #{$input-btn-icon-size-sm};
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-lg,
|
.btn-lg, .btn-group-lg > .btn {
|
||||||
.btn-group-lg > .btn {
|
|
||||||
--#{$prefix}btn-line-height: #{$input-btn-line-height-lg};
|
--#{$prefix}btn-line-height: #{$input-btn-line-height-lg};
|
||||||
--#{$prefix}btn-icon-size: #{$input-btn-icon-size-lg};
|
--#{$prefix}btn-icon-size: #{$input-btn-icon-size-lg};
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-xl,
|
|
||||||
.btn-group-xl > .btn {
|
|
||||||
--#{$prefix}btn-line-height: #{$input-btn-line-height-xl};
|
|
||||||
--#{$prefix}btn-icon-size: #{$input-btn-icon-size-xl};
|
|
||||||
--#{$prefix}btn-padding-y: #{$input-btn-padding-y-xl};
|
|
||||||
--#{$prefix}btn-padding-x: #{$input-btn-padding-x-xl};
|
|
||||||
--#{$prefix}btn-font-size: #{$input-btn-font-size-xl};
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Button shapes
|
// Button shapes
|
||||||
//
|
//
|
||||||
@@ -179,8 +160,9 @@
|
|||||||
//
|
//
|
||||||
// Icon button
|
// Icon button
|
||||||
//
|
//
|
||||||
.btn-icon,
|
.btn-icon {
|
||||||
.btn-action {
|
min-width: calc((var(--#{$prefix}btn-line-height) * var(--#{$prefix}btn-font-size)) + (var(--#{$prefix}btn-padding-y) * 2) + (var(--#{$prefix}btn-border-width) * 2));
|
||||||
|
min-height: calc((var(--#{$prefix}btn-line-height) * var(--#{$prefix}btn-font-size)) + (var(--#{$prefix}btn-padding-y) * 2) + (var(--#{$prefix}btn-border-width) * 2));
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
|
|
||||||
@@ -233,7 +215,7 @@
|
|||||||
height: var(--#{$prefix}btn-icon-size);
|
height: var(--#{$prefix}btn-icon-size);
|
||||||
left: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
|
left: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
|
||||||
top: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
|
top: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
|
||||||
animation: spinner-border 0.75s linear infinite;
|
animation: spinner-border .75s linear infinite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,7 +224,14 @@
|
|||||||
//
|
//
|
||||||
.btn-action {
|
.btn-action {
|
||||||
--#{$prefix}border-color: transparent;
|
--#{$prefix}border-color: transparent;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
color: var(--#{$prefix}secondary);
|
color: var(--#{$prefix}secondary);
|
||||||
|
display: inline-flex;
|
||||||
|
width: 2rem;
|
||||||
|
height: 2rem;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
border-radius: var(--#{$prefix}border-radius);
|
border-radius: var(--#{$prefix}border-radius);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
@@ -260,7 +249,6 @@
|
|||||||
&.show {
|
&.show {
|
||||||
color: var(--#{$prefix}body-color);
|
color: var(--#{$prefix}body-color);
|
||||||
background: var(--#{$prefix}active-bg);
|
background: var(--#{$prefix}active-bg);
|
||||||
border-color: transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.show {
|
&.show {
|
||||||
@@ -271,64 +259,3 @@
|
|||||||
.btn-actions {
|
.btn-actions {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-animate-icon {
|
|
||||||
.icon {
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus-visible {
|
|
||||||
.icon {
|
|
||||||
transform: translateX(4px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.btn-animate-icon-rotate {
|
|
||||||
&:hover,
|
|
||||||
&:focus-visible {
|
|
||||||
.icon {
|
|
||||||
transform: rotate(90deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.btn-animate-icon-move-start {
|
|
||||||
&:hover,
|
|
||||||
&:focus-visible {
|
|
||||||
.icon {
|
|
||||||
transform: translateX(-4px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.btn-animate-icon-pulse {
|
|
||||||
&:hover,
|
|
||||||
&:focus-visible {
|
|
||||||
.icon {
|
|
||||||
transform: none;
|
|
||||||
animation: pulse 0.9s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.btn-animate-icon-shake {
|
|
||||||
&:hover,
|
|
||||||
&:focus-visible {
|
|
||||||
.icon {
|
|
||||||
transform: none;
|
|
||||||
animation: shake 0.9s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.btn-animate-icon-tada {
|
|
||||||
&:hover,
|
|
||||||
&:focus-visible {
|
|
||||||
.icon {
|
|
||||||
transform: none;
|
|
||||||
animation: tada 0.9s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -111,11 +111,11 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: $card-spacer-y $card-spacer-x;
|
padding: $card-spacer-y $card-spacer-x;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@include transition(background $transition-time);
|
||||||
border-top: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
|
border-top: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
|
||||||
flex: 1;
|
flex: 1;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
font-weight: var(--#{$prefix}font-weight-medium);
|
font-weight: var(--#{$prefix}font-weight-medium);
|
||||||
@include transition(background $transition-time);
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -215,13 +215,11 @@ Stacked card
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Card rotate
|
// Card rotate
|
||||||
.card-rotate-left,
|
.card-rotate-left {
|
||||||
.card-rotate-start {
|
|
||||||
transform: rotate(-1.5deg);
|
transform: rotate(-1.5deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-rotate-right,
|
.card-rotate-right {
|
||||||
.card-rotate-end {
|
|
||||||
transform: rotate(1.5deg);
|
transform: rotate(1.5deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,7 @@
|
|||||||
|
|
||||||
.dropend {
|
.dropend {
|
||||||
> .dropdown-menu {
|
> .dropdown-menu {
|
||||||
margin-top: subtract(calc(-1 * $dropdown-padding-y), 1px);
|
margin-top: subtract(-$dropdown-padding-y, 1px);
|
||||||
margin-left: -.25rem;
|
margin-left: -.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
@use "sass:map";
|
|
||||||
|
|
||||||
.row > * {
|
.row > * {
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
@@ -19,8 +17,8 @@
|
|||||||
|
|
||||||
@each $name, $value in (0: 0, sm: .375rem, md: 1.5rem, lg: 3rem) {
|
@each $name, $value in (0: 0, sm: .375rem, md: 1.5rem, lg: 3rem) {
|
||||||
.row-#{$name} {
|
.row-#{$name} {
|
||||||
margin-right: calc(-1 * $value);
|
margin-right: (-$value);
|
||||||
margin-left: calc(-1 * $value);
|
margin-left: -($value);
|
||||||
|
|
||||||
> .col,
|
> .col,
|
||||||
> [class*="col-"] {
|
> [class*="col-"] {
|
||||||
@@ -56,7 +54,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@each $name, $size in map.merge((null: $spacer), $spacers) {
|
@each $name, $size in map-merge((null: $spacer), $spacers) {
|
||||||
$name-prefixed: if($name == null, null, '-#{$name}');
|
$name-prefixed: if($name == null, null, '-#{$name}');
|
||||||
|
|
||||||
.space-y#{$name-prefixed} {
|
.space-y#{$name-prefixed} {
|
||||||
@@ -71,7 +69,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@each $name, $size in map.merge((null: $spacer), $spacers) {
|
@each $name, $size in map-merge((null: $spacer), $spacers) {
|
||||||
$name-prefixed: if($name == null, null, '-#{$name}');
|
$name-prefixed: if($name == null, null, '-#{$name}');
|
||||||
|
|
||||||
.divide-y#{$name-prefixed} {
|
.divide-y#{$name-prefixed} {
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
@use "sass:math";
|
|
||||||
|
|
||||||
.img-responsive {
|
.img-responsive {
|
||||||
--#{$prefix}img-responsive-ratio: #{math.percentage(.75)};
|
--#{$prefix}img-responsive-ratio: #{percentage(.75)};
|
||||||
background: no-repeat center/cover;
|
background: no-repeat center/cover;
|
||||||
padding-top: var(--#{$prefix}img-responsive-ratio);
|
padding-top: var(--#{$prefix}img-responsive-ratio);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,14 @@
|
|||||||
border-left-width: $border-width-wide;
|
border-left-width: $border-width-wide;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.list-group-item {
|
||||||
|
&:active,
|
||||||
|
&:focus,
|
||||||
|
&:hover {
|
||||||
|
background-color: $dropdown-link-hover-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.list-group-item {
|
.list-group-item {
|
||||||
&.disabled,
|
&.disabled,
|
||||||
&:disabled {
|
&:disabled {
|
||||||
@@ -50,14 +58,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.list-group-hoverable {
|
.list-group-hoverable {
|
||||||
.list-group-item {
|
|
||||||
&:active,
|
|
||||||
&:focus,
|
|
||||||
&:hover {
|
|
||||||
background-color: $dropdown-link-hover-bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.list-group-item-actions {
|
.list-group-item-actions {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
@include transition(opacity $transition-time);
|
@include transition(opacity $transition-time);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Markdown
|
|||||||
border: 1px solid var(--#{$prefix}border-color);
|
border: 1px solid var(--#{$prefix}border-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
> pre {
|
||||||
max-height: 20rem;
|
max-height: 20rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.nav-pills {
|
&.nav-pills {
|
||||||
margin: 0 calc(-1 * $nav-link-padding-x);
|
margin: 0 (-$nav-link-padding-x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,10 +44,6 @@
|
|||||||
margin: 0 0 calc(-1 * #{$nav-bordered-border-width});
|
margin: 0 0 calc(-1 * #{$nav-bordered-border-width});
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: $nav-bordered-link-active-border-width var(--#{$prefix}border-style) transparent;
|
border-bottom: $nav-bordered-link-active-border-width var(--#{$prefix}border-style) transparent;
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link.active,
|
.nav-link.active,
|
||||||
@@ -65,8 +61,8 @@
|
|||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
@include transition(color $transition-time, background-color $transition-time);
|
@include transition(color $transition-time, background-color $transition-time);
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus {
|
&:focus {
|
||||||
|
|||||||
@@ -1,28 +1,25 @@
|
|||||||
.pagination {
|
.pagination {
|
||||||
margin: 0;
|
|
||||||
--#{$prefix}pagination-gap: .25rem;
|
--#{$prefix}pagination-gap: .25rem;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
gap: var(--#{$prefix}pagination-gap);
|
gap: var(--#{$prefix}pagination-gap);
|
||||||
line-height: var(--#{$prefix}body-line-height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-link {
|
.page-link {
|
||||||
min-width: 2rem;
|
min-width: 1.75rem;
|
||||||
border-radius: var(--#{$prefix}pagination-border-radius);
|
border-radius: var(--#{$prefix}border-radius);
|
||||||
}
|
|
||||||
|
|
||||||
.page-item:not(.active) .page-link:hover {
|
|
||||||
background: var(--#{$prefix}pagination-hover-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-text {
|
|
||||||
padding-left: .5rem;
|
|
||||||
padding-right: .5rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-item {
|
.page-item {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
|
&:not(.active) {
|
||||||
|
.page-link {
|
||||||
|
&:hover {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&.page-prev,
|
&.page-prev,
|
||||||
&.page-next {
|
&.page-next {
|
||||||
flex: 0 0 50%;
|
flex: 0 0 50%;
|
||||||
@@ -59,13 +56,3 @@
|
|||||||
color: $pagination-disabled-color;
|
color: $pagination-disabled-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination-outline {
|
|
||||||
--#{$prefix}pagination-border-color: var(--#{$prefix}border-color);
|
|
||||||
--#{$prefix}pagination-disabled-border-color: var(--#{$prefix}border-color);
|
|
||||||
--#{$prefix}pagination-border-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination-circle {
|
|
||||||
--#{$prefix}pagination-border-radius: var(--tblr-border-radius-pill);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,3 +7,7 @@
|
|||||||
margin-left: .25rem;
|
margin-left: .25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.star {
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -122,9 +122,7 @@
|
|||||||
// Slide variant
|
// Slide variant
|
||||||
.switch-icon-slide-up,
|
.switch-icon-slide-up,
|
||||||
.switch-icon-slide-left,
|
.switch-icon-slide-left,
|
||||||
.switch-icon-slide-start,
|
|
||||||
.switch-icon-slide-right,
|
.switch-icon-slide-right,
|
||||||
.switch-icon-slide-end,
|
|
||||||
.switch-icon-slide-down {
|
.switch-icon-slide-down {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
@@ -152,8 +150,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.switch-icon-slide-left,
|
.switch-icon-slide-left {
|
||||||
.switch-icon-slide-start {
|
|
||||||
.switch-icon-a {
|
.switch-icon-a {
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
@@ -173,8 +170,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.switch-icon-slide-right,
|
.switch-icon-slide-right {
|
||||||
.switch-icon-slide-end {
|
|
||||||
.switch-icon-a {
|
.switch-icon-a {
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,10 +112,11 @@ Table sort
|
|||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
text-align: inherit;
|
text-align: inherit;
|
||||||
margin: calc(-1 * $table-th-padding-y) calc(-1 * $table-th-padding-x);
|
|
||||||
padding: $table-th-padding-y $table-th-padding-x;
|
|
||||||
@include transition(color $transition-time);
|
@include transition(color $transition-time);
|
||||||
|
|
||||||
|
margin: (-$table-th-padding-y) (-$table-th-padding-x);
|
||||||
|
padding: $table-th-padding-y $table-th-padding-x;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&.asc,
|
&.asc,
|
||||||
&.desc {
|
&.desc {
|
||||||
|
|||||||
@@ -216,7 +216,7 @@ Mentions
|
|||||||
*/
|
*/
|
||||||
.mention {
|
.mention {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
box-shadow: var(--#{$prefix}shadow-border);
|
box-shadow: var(--#{$prefix}box-shadow-border);
|
||||||
border-radius: var(--#{$prefix}border-radius-pill);
|
border-radius: var(--#{$prefix}border-radius-pill);
|
||||||
line-height: calc(16em / 12);
|
line-height: calc(16em / 12);
|
||||||
font-size: calc(12em / 14);
|
font-size: calc(12em / 14);
|
||||||
@@ -245,7 +245,7 @@ Mentions
|
|||||||
margin: calc(-2em / 12) calc(4em / 12) 0 calc(-4em / 12);
|
margin: calc(-2em / 12) calc(4em / 12) 0 calc(-4em / 12);
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
background: no-repeat center center/cover;
|
background: no-repeat center center/cover;
|
||||||
box-shadow: var(--#{$prefix}shadow-border);
|
box-shadow: var(--#{$prefix}box-shadow-border);
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
@use "sass:map";
|
|
||||||
|
|
||||||
// All colors
|
// All colors
|
||||||
@each $color, $value in map.merge($theme-colors, ( white: $white)) {
|
@each $color, $value in map-merge($theme-colors, ( white: $white)) {
|
||||||
.bg-#{"" + $color} {
|
.bg-#{"" + $color} {
|
||||||
background-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}bg-opacity, 1) * 100%), transparent) !important;
|
background-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}bg-opacity, 1) * 100%), transparent) !important;
|
||||||
}
|
}
|
||||||
@@ -66,7 +64,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.text-#{"" + $color}-fg {
|
.text-#{"" + $color}-fg {
|
||||||
color: var(--#{$prefix}#{$color}-fg) !important;
|
color: $value !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +75,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.text-#{"" + $color}-fg {
|
.text-#{"" + $color}-fg {
|
||||||
color: var(--#{$prefix}#{$color}-fg) !important;
|
color: $value !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
%hover-animation {
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
will-change: transform;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-elevate-up {
|
|
||||||
@extend %hover-animation;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
transform: translateY(-4px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-elevate-down {
|
|
||||||
@extend %hover-animation;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
transform: translateY(4px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-scale {
|
|
||||||
@extend %hover-animation;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
transform: scale(1.1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-rotate-end {
|
|
||||||
@extend %hover-animation;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
transform: rotate(4deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-rotate-start {
|
|
||||||
@extend %hover-animation;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
transform: rotate(-4deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
4
core/scss/vendor/_apexcharts.scss
vendored
4
core/scss/vendor/_apexcharts.scss
vendored
@@ -46,7 +46,3 @@
|
|||||||
.apexcharts-canvas {
|
.apexcharts-canvas {
|
||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.apexcharts-pie-area {
|
|
||||||
stroke: var(--#{$prefix}bg-surface) !important;
|
|
||||||
}
|
|
||||||
55
core/scss/vendor/_fullcalendar.scss
vendored
55
core/scss/vendor/_fullcalendar.scss
vendored
@@ -1,55 +0,0 @@
|
|||||||
:root {
|
|
||||||
--fc-border-color: var(--#{$prefix}border-color);
|
|
||||||
--fc-daygrid-event-dot-width: 5px;
|
|
||||||
|
|
||||||
--fc-event-bg-color: var(--#{$prefix}primary-lt);
|
|
||||||
--fc-event-border-color: var(--#{$prefix}primary-200);
|
|
||||||
--fc-event-text-color: var(--#{$prefix}body-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-toolbar-title {
|
|
||||||
font-size: var(--#{$prefix}font-size-h3) !important;
|
|
||||||
font-weight: var(--#{$prefix}font-weight-medium);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-daygrid-dot-event {
|
|
||||||
background-color: var(--fc-event-bg-color);
|
|
||||||
border: 1px solid var(--fc-event-border-color);
|
|
||||||
color: var(--fc-event-text-color);
|
|
||||||
padding-top: 1px;
|
|
||||||
padding-bottom: 1px;
|
|
||||||
|
|
||||||
.fc-event-title {
|
|
||||||
font-weight: inherit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-col-header-cell {
|
|
||||||
background-color: var(--#{$prefix}bg-surface-secondary);
|
|
||||||
color: var(--#{$prefix}secondary);
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-weight: var(--#{$prefix}font-weight-medium);
|
|
||||||
font-size: var(--#{$prefix}font-size-h5);
|
|
||||||
padding-top: .5rem !important;
|
|
||||||
padding-bottom: .5rem !important;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-time {
|
|
||||||
font-weight: var(--#{$prefix}font-weight-bold) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-col-header-cell-cushion {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-daygrid-day-number {
|
|
||||||
color: var(--#{$prefix}secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-button {
|
|
||||||
color: var(--#{$prefix}body-color) !important;
|
|
||||||
background-color: transparent !important;
|
|
||||||
border-color: var(--#{$prefix}border-color) !important;
|
|
||||||
font-weight: var(--#{$prefix}font-weight-medium) !important;
|
|
||||||
}
|
|
||||||
4
core/scss/vendor/_nouislider.scss
vendored
4
core/scss/vendor/_nouislider.scss
vendored
@@ -33,8 +33,8 @@
|
|||||||
.noUi-horizontal & {
|
.noUi-horizontal & {
|
||||||
width: $form-range-thumb-width;
|
width: $form-range-thumb-width;
|
||||||
height: $form-range-thumb-height;
|
height: $form-range-thumb-height;
|
||||||
top: calc($form-range-thumb-height * -.5);
|
top: (-$form-range-thumb-height * .5);
|
||||||
right: calc($form-range-thumb-height * -.5);
|
right: (-$form-range-thumb-height * .5);
|
||||||
margin: 1px 1px 0 0;
|
margin: 1px 1px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
34
core/scss/vendor/_tinymce.scss
vendored
Normal file
34
core/scss/vendor/_tinymce.scss
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
.tox-hugerte {
|
||||||
|
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color) !important;
|
||||||
|
border-radius: $border-radius !important;
|
||||||
|
font-family: var(--#{$prefix}font-sans-serif) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tox-toolbar__group {
|
||||||
|
padding: 0 .5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tox .tox-toolbar__primary {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tox:not(.tox-hugerte-inline) {
|
||||||
|
.tox-editor-header {
|
||||||
|
border-bottom: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color) !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tox-tbtn {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tox-statusbar {
|
||||||
|
border-top: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tox .tox-toolbar-overlord,
|
||||||
|
.tox:not(.tox-hugerte-inline) .tox-editor-header {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
12
core/scss/vendor/_wysiwyg.scss
vendored
12
core/scss/vendor/_wysiwyg.scss
vendored
@@ -22,18 +22,6 @@
|
|||||||
|
|
||||||
.tox-tbtn {
|
.tox-tbtn {
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
background: var(--#{$prefix}bg-surface) !important;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&.tox-tbtn--enabled {
|
|
||||||
background: var(--#{$prefix}bg-surface-secondary) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tox-edit-area {
|
|
||||||
&::before {
|
|
||||||
border: none !important
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tox-statusbar {
|
.tox-statusbar {
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
# Tabler Documentation Changelog
|
|
||||||
|
|
||||||
## 1.4.0
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- 6c38a48: Update Bootstrap to v5.3.7
|
|
||||||
- 6c47b5f: Change `package.json` to `core/libs.json` as a source of libraries
|
|
||||||
- 70a41e4: Replace a package list in `download.md` with a link to the 3rd-party libraries page
|
|
||||||
- Updated dependencies [6c4dd36]
|
|
||||||
- Updated dependencies [6fec73a]
|
|
||||||
- Updated dependencies [9951fe9]
|
|
||||||
- Updated dependencies [db6200a]
|
|
||||||
- Updated dependencies [e96f055]
|
|
||||||
- Updated dependencies [a200d30]
|
|
||||||
- Updated dependencies [6c38a48]
|
|
||||||
- Updated dependencies [2a12f72]
|
|
||||||
- Updated dependencies [49ab9ea]
|
|
||||||
- Updated dependencies [666a296]
|
|
||||||
- Updated dependencies [cfd4cb6]
|
|
||||||
- @tabler/core@1.4.0
|
|
||||||
|
|
||||||
## 1.3.0
|
|
||||||
|
|
||||||
### Patch Changes
|
|
||||||
|
|
||||||
- 8f70185: Improve Introduction, Base, Layout and Plugins sections in documentation
|
|
||||||
- e546706: Fix input mask example in docs
|
|
||||||
- 8850f61: Enhance pagination component with new styles
|
|
||||||
- 8470c9b: Fix broken links to other docs section and tabler.io website; improve some labels.
|
|
||||||
- 6a3513f: Fix links in Tabler Emails introduction, improve "How to contribute" and other small fixes
|
|
||||||
- 278967b: Fix switch icon examples with filled icons in documentation
|
|
||||||
- 38ea9aa: Use primary color for `::selection` inside `<code>` in docs
|
|
||||||
- 5b3e201: Fix documentation: remove duplicated code examples; increase height of dropdown examples; fix some links
|
|
||||||
- 7b72653: Fix ribbon component in the documentation
|
|
||||||
- c42b104: Fix incorrect label text on form elements docs page
|
|
||||||
- 895f943: Use tabs-package include to show webfont install steps
|
|
||||||
- 665472c: Demonstrate sticky header table more clearly in docs
|
|
||||||
- 7917f86: Replace non-existent Vimeo file and enhance the inline player documentation
|
|
||||||
- 7fc1d5c: Exclude headings in the carousel and modal examples from ToC
|
|
||||||
- 7773ff2: Exclude headings inside `.example` from the Table of Contents
|
|
||||||
- 222ddd4: Change WYSIWYG title to uppercase
|
|
||||||
- 9b15b94: Add missing `.steps-vertical` classes in docs
|
|
||||||
- 5fa662b: Use color-input examples in documentation
|
|
||||||
- 5619b2d: Fix `src` links to images in README and getting-started docs page
|
|
||||||
- f8075f6: Add documentation for 3rd-party libraries and resources
|
|
||||||
@@ -44,8 +44,8 @@ The **Tabler Emails** package is organized into a clear and efficient folder str
|
|||||||
|
|
||||||
### 1. Email Templates: `emails/`
|
### 1. Email Templates: `emails/`
|
||||||
This folder contains {{ emailsCount }} email subfolders, each with a specific template. Each email folder contains the following files:
|
This folder contains {{ emailsCount }} email subfolders, each with a specific template. Each email folder contains the following files:
|
||||||
* Compiled HTML files for light and dark themes. Read more about their usage in the [Compiled HTML](/emails/introduction/compiled-html) section.
|
* Compiled HTML files for light and dark themes. Read more about their usage in the [Compiled HTML](/img/emails/compiled-html) section.
|
||||||
* Source HTML files for light and dark themes. Find more information in the [Source HTML](/emails/introduction/source-html) section.
|
* Source HTML files for light and dark themes. Find more information in the [Source HTML](/img/emails/source-html) section.
|
||||||
* Screenshot images for desktop and mobile views.
|
* Screenshot images for desktop and mobile views.
|
||||||
* Assets folder with images used in the email template and the CSS file with styles.
|
* Assets folder with images used in the email template and the CSS file with styles.
|
||||||
|
|
||||||
|
|||||||
@@ -10,56 +10,50 @@ bootstrapLink: components/badge/
|
|||||||
The default badges are square and come in the basic set of colors.
|
The default badges are square and come in the basic set of colors.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<div class="badges-list">
|
<span class="badge bg-blue-lt">Blue</span>
|
||||||
{% for color in site.colors -%}
|
<span class="badge bg-azure-lt">Azure</span>
|
||||||
{% include "ui/badge.html" color=color[0] text=color[1].title %}
|
<span class="badge bg-indigo-lt">Indigo</span>
|
||||||
{%- endfor -%}
|
<span class="badge bg-purple-lt">Purple</span>
|
||||||
</div>
|
<span class="badge bg-pink-lt">Pink</span>
|
||||||
|
<span class="badge bg-red-lt">Red</span>
|
||||||
|
<span class="badge bg-orange-lt">Orange</span>
|
||||||
|
<span class="badge bg-yellow-lt">Yellow</span>
|
||||||
|
<span class="badge bg-lime-lt">Lime</span>
|
||||||
|
<span class="badge bg-green-lt">Green</span>
|
||||||
|
<span class="badge bg-teal-lt">Teal</span>
|
||||||
|
<span class="badge bg-cyan-lt">Cyan</span>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html centered %}
|
{% include "docs/example.html" html=html centered %}
|
||||||
|
|
||||||
## Headings
|
## Headings
|
||||||
|
|
||||||
Badges can be used in headings to draw attention to new or important information. You can use them in any heading level, from `<h1>` to `<h6>`. The example below shows how to use badges in headings.
|
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<h1>
|
<h1>Example heading <span class="badge">New</span></h1>
|
||||||
Example heading
|
<h2>Example heading <span class="badge">New</span></h2>
|
||||||
{% include "ui/badge.html" text="New" -%}
|
<h3>Example heading <span class="badge">New</span></h3>
|
||||||
</h1>
|
<h4>Example heading <span class="badge">New</span></h4>
|
||||||
<h2>
|
<h5>Example heading <span class="badge">New</span></h5>
|
||||||
Example heading
|
<h6>Example heading <span class="badge">New</span></h6>
|
||||||
{% include "ui/badge.html" text="New" -%}
|
|
||||||
</h2>
|
|
||||||
<h3>
|
|
||||||
Example heading
|
|
||||||
{% include "ui/badge.html" text="New" -%}
|
|
||||||
</h3>
|
|
||||||
<h4>
|
|
||||||
Example heading
|
|
||||||
{% include "ui/badge.html" text="New" -%}
|
|
||||||
</h4>
|
|
||||||
<h5>
|
|
||||||
Example heading
|
|
||||||
{% include "ui/badge.html" text="New" -%}
|
|
||||||
</h5>
|
|
||||||
<h6>
|
|
||||||
Example heading
|
|
||||||
{% include "ui/badge.html" text="New" -%}
|
|
||||||
</h6>
|
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html %}
|
{% include "docs/example.html" html=html %}
|
||||||
|
|
||||||
## Light versions of badges
|
## Outline badges
|
||||||
|
|
||||||
You can use the `-lt` classes to create a light version of the badge. This is useful for creating a more subtle look.
|
|
||||||
|
|
||||||
For example you can use the `bg-blue-lt` class to create a light blue badge. If you add the `text-blue-lt-fg` class, the text will be blue as well.
|
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{%- for color in site.colors -%}
|
<span class="badge badge-outline text-blue">blue</span>
|
||||||
{% include "ui/badge.html" color=color[0] text=color[1].title light %}
|
<span class="badge badge-outline text-azure">azure</span>
|
||||||
{%- endfor -%}
|
<span class="badge badge-outline text-indigo">indigo</span>
|
||||||
|
<span class="badge badge-outline text-purple">purple</span>
|
||||||
|
<span class="badge badge-outline text-pink">pink</span>
|
||||||
|
<span class="badge badge-outline text-red">red</span>
|
||||||
|
<span class="badge badge-outline text-orange">orange</span>
|
||||||
|
<span class="badge badge-outline text-yellow">yellow</span>
|
||||||
|
<span class="badge badge-outline text-lime">lime</span>
|
||||||
|
<span class="badge badge-outline text-green">green</span>
|
||||||
|
<span class="badge badge-outline text-teal">teal</span>
|
||||||
|
<span class="badge badge-outline text-cyan">cyan</span>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html centered %}
|
{% include "docs/example.html" html=html centered %}
|
||||||
|
|
||||||
@@ -68,44 +62,18 @@ For example you can use the `bg-blue-lt` class to create a light blue badge. If
|
|||||||
Use the `.badge-pill` class if you want to create a badge with rounded corners. Its width will adjust to the label text.
|
Use the `.badge-pill` class if you want to create a badge with rounded corners. Its width will adjust to the label text.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{%- for color in site.colors -%}
|
<span class="badge badge-pill bg-blue-lt">1</span>
|
||||||
{% include "ui/badge.html" color=color[0] text=color[1].title class="badge-pill" %}
|
<span class="badge badge-pill bg-azure-lt">2</span>
|
||||||
{%- endfor -%}
|
<span class="badge badge-pill bg-indigo-lt">3</span>
|
||||||
{%- endcapture %}
|
<span class="badge badge-pill bg-purple-lt">4</span>
|
||||||
{% include "docs/example.html" html=html centered %}
|
<span class="badge badge-pill bg-pink-lt">5</span>
|
||||||
|
<span class="badge badge-pill bg-red-lt">6</span>
|
||||||
You can use it to create a pill with numbers, for example, to show the number of unread messages. The badge will adjust its width to the number of digits.
|
<span class="badge badge-pill bg-orange-lt">7</span>
|
||||||
|
<span class="badge badge-pill bg-yellow-lt">8</span>
|
||||||
{% capture html -%}
|
<span class="badge badge-pill bg-lime-lt">9</span>
|
||||||
{%- for color in site.colors -%}
|
<span class="badge badge-pill bg-green-lt">10</span>
|
||||||
{% include "ui/badge.html" color=color[0] text=forloop.index class="badge-pill" %}
|
<span class="badge badge-pill bg-teal-lt">11</span>
|
||||||
{%- endfor -%}
|
<span class="badge badge-pill bg-cyan-lt">12</span>
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
## Badges with icons
|
|
||||||
|
|
||||||
You can use icons in badges to make them more visually appealing. The example below demonstrates how to use icons in badges.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/badge.html" text="Star" icon="star" -%}
|
|
||||||
{% include "ui/badge.html" text="Heart" icon="heart" -%}
|
|
||||||
{% include "ui/badge.html" text="Check" icon="check" -%}
|
|
||||||
{% include "ui/badge.html" text="X" icon="x" -%}
|
|
||||||
{% include "ui/badge.html" text="Plus" icon="plus" -%}
|
|
||||||
{% include "ui/badge.html" text="Minus" icon="minus" -%}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
You can also use an icon on the right side of the badge. The example below demonstrates how to use icons on the right side of badges.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/badge.html" text="Star" icon-end="arrow-right" -%}
|
|
||||||
{% include "ui/badge.html" text="Heart" icon-end="arrow-right" -%}
|
|
||||||
{% include "ui/badge.html" text="Check" icon-end="arrow-right" -%}
|
|
||||||
{% include "ui/badge.html" text="X" icon-end="arrow-right" -%}
|
|
||||||
{% include "ui/badge.html" text="Plus" icon-end="arrow-right" -%}
|
|
||||||
{% include "ui/badge.html" text="Minus" icon-end="arrow-right" -%}
|
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html centered %}
|
{% include "docs/example.html" html=html centered %}
|
||||||
|
|
||||||
@@ -131,55 +99,14 @@ Place the badge within an `<a>` element if you want it to perform the function o
|
|||||||
|
|
||||||
## Button with badge
|
## Button with badge
|
||||||
|
|
||||||
Badges can be used as parts of links or buttons to provide, for example, a counter. Use the `.badge-notification` class to create a notification badge. This class will position the badge in the top right corner of the button.
|
Badges can be used as part of links or buttons to provide, for example, a counter.
|
||||||
|
|
||||||
If you don't provide text for the badge, you end up with a small dot. This is useful for creating a simple notification button.
|
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<button type="button" class="btn">
|
<button type="button" class="btn">
|
||||||
Notifications {% include "ui/badge.html" text="2" color="red" class="ms-2" -%}
|
Notifications <span class="badge bg-red-lt ms-2">4</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn">
|
<button type="button" class="btn">
|
||||||
Inbox {% include "ui/badge.html" text="4" color="red" class="badge-notification" -%}
|
Notifications <span class="badge bg-green-lt ms-2">4</span>
|
||||||
</button>
|
|
||||||
<button type="button" class="btn">
|
|
||||||
Profile {% include "ui/badge.html" text="" color="red" class="badge-notification" -%}
|
|
||||||
</button>
|
</button>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html centered %}
|
{% include "docs/example.html" html=html centered %}
|
||||||
|
|
||||||
## Animated badges
|
|
||||||
|
|
||||||
You can use the `.badge-blink` class to create a blinking effect. This class will add a CSS animation to the badge, so it will blink to draw attention.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<button type="button" class="btn">
|
|
||||||
Profile {% include "ui/badge.html" text="" color="red" class="badge-notification badge-blink" -%}
|
|
||||||
</button>
|
|
||||||
{% endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
## Size Options
|
|
||||||
|
|
||||||
Use `.badge-sm` or `.badge-lg` to change badge size according to your needs. The default size is `.badge` and it is used in the examples above.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div>
|
|
||||||
{% include "ui/badge.html" color="primary" scale="sm" text="New" class="badge-sm" -%}
|
|
||||||
{% include "ui/badge.html" color="primary" scale="sm" text="1" class="badge-pill" -%}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{% include "ui/badge.html" color="primary" text="New" class="badge-sm" -%}
|
|
||||||
{% include "ui/badge.html" color="primary" text="1" class="badge-pill" -%}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{% include "ui/badge.html" color="primary" scale="lg" text="New" class="badge-sm" -%}
|
|
||||||
{% include "ui/badge.html" color="primary" scale="lg" text="1" class="badge-pill" -%}
|
|
||||||
</div>
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
|
||||||
|
|
||||||
|
|
||||||
## More examples
|
|
||||||
|
|
||||||
If you want to see more examples of badges, you can check out the [Bootstrap documentation](https://getbootstrap.com/docs/5.3/components/badge/) for badges. You can also find more examples in the Tabler [Badges](https://preview.tabler.io/badges.html) preview.
|
|
||||||
@@ -12,9 +12,19 @@ Use the `breadcrumb` class to add a breadcrumb to your interface design for bett
|
|||||||
Look at the example below to see how breadcrumbs work in practice.
|
Look at the example below to see how breadcrumbs work in practice.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Data" %}
|
<ol class="breadcrumb">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Data</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html centered %}
|
{% include "docs/example.html" html=html vertical separated %}
|
||||||
|
|
||||||
## Different separators
|
## Different separators
|
||||||
|
|
||||||
@@ -23,18 +33,60 @@ You can use different breadcrumb styles to match your website or app design. Cho
|
|||||||
This example shows how to use different breadcrumb styles.
|
This example shows how to use different breadcrumb styles.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Data" separator="dots" %}
|
<ol class="breadcrumb breadcrumb-dots">
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Data" separator="arrows" %}
|
<li class="breadcrumb-item">
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Data" separator="bullets" %}
|
<a href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Data</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<ol class="breadcrumb breadcrumb-arrows">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Data</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<ol class="breadcrumb breadcrumb-bullets">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Data</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html vertical separated centered %}
|
{% include "docs/example.html" html=html vertical separated %}
|
||||||
|
|
||||||
## With icon
|
## With icon
|
||||||
|
|
||||||
You can use icons in breadcrumbs to make them more visually appealing. The example below demonstrates how to use icons in breadcrumbs.
|
You can use icons in breadcrumbs to make them more visually appealing. The example below demonstrates how to use icons in breadcrumbs.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Data" home-icon %}
|
<ol class="breadcrumb">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">
|
||||||
|
{% include "ui/icon.html" icon="home" %}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Data</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html vertical separated %}
|
{% include "docs/example.html" html=html vertical separated %}
|
||||||
|
|
||||||
@@ -43,7 +95,19 @@ You can use icons in breadcrumbs to make them more visually appealing. The examp
|
|||||||
You can use the `breadcrumb-muted` class to create a muted breadcrumb style. This style is perfect for breadcrumbs that are not the main focus of your website or app.
|
You can use the `breadcrumb-muted` class to create a muted breadcrumb style. This style is perfect for breadcrumbs that are not the main focus of your website or app.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Data" class="breadcrumb-muted" %}
|
<nav aria-label="breadcrumb">
|
||||||
|
<ol class="breadcrumb breadcrumb-muted">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Data</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</nav>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html %}
|
{% include "docs/example.html" html=html %}
|
||||||
|
|
||||||
@@ -55,9 +119,24 @@ You can use breadcrumbs in headers to show the current page location and provide
|
|||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<div class="row align-items-center mw-100">
|
<div class="row align-items-center mw-100">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
{% include "ui/breadcrumb.html" pages="Home,Library,Articles" -%}
|
<div class="mb-1">
|
||||||
|
<ol class="breadcrumb">
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item">
|
||||||
|
<a href="#">Library</a>
|
||||||
|
</li>
|
||||||
|
<li class="breadcrumb-item active">
|
||||||
|
<a href="#">Articles</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
<h2 class="page-title">
|
<h2 class="page-title">
|
||||||
<span class="text-truncate">How to Build a Modern Dashboard with Tabler</span>
|
<span class="text-truncate"
|
||||||
|
>Knights of Ni, we are but simple travelers who seek the enchanter who lives beyond these
|
||||||
|
woods.</span
|
||||||
|
>
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
@@ -72,5 +151,5 @@ You can use breadcrumbs in headers to show the current page location and provide
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
{% include "docs/example.html" html=html %}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ As one of the most common elements of UI design, buttons have a very important f
|
|||||||
<input type="submit" class="btn" value="Submit" />
|
<input type="submit" class="btn" value="Submit" />
|
||||||
<input type="reset" class="btn" value="Reset" />
|
<input type="reset" class="btn" value="Reset" />
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Default button
|
## Default button
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ The standard button creates a white background and subtle hover animation. It's
|
|||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<a href="#" class="btn" role="button">Link</a>
|
<a href="#" class="btn" role="button">Link</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Button variations
|
## Button variations
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ Use the button classes that correspond to the function of your button. The big r
|
|||||||
<a href="#" class="btn btn-dark">Dark</a>
|
<a href="#" class="btn btn-dark">Dark</a>
|
||||||
<a href="#" class="btn btn-light">Light</a>
|
<a href="#" class="btn btn-light">Light</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated centered %}
|
{%- include "docs/example.html" html=html separated centered -%}
|
||||||
|
|
||||||
## Disabled buttons
|
## Disabled buttons
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ Make buttons look inactive to show that an action is possible once the user meet
|
|||||||
<a href="#" class="btn btn-dark disabled">Dark</a>
|
<a href="#" class="btn btn-dark disabled">Dark</a>
|
||||||
<a href="#" class="btn btn-light disabled">Light</a>
|
<a href="#" class="btn btn-light disabled">Light</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated centered %}
|
{%- include "docs/example.html" html=html separated centered -%}
|
||||||
|
|
||||||
## Color variations
|
## Color variations
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ Choose the right color for your button to make it go well with your design and d
|
|||||||
<a href="#" class="btn btn-teal">Teal</a>
|
<a href="#" class="btn btn-teal">Teal</a>
|
||||||
<a href="#" class="btn btn-cyan">Cyan</a>
|
<a href="#" class="btn btn-cyan">Cyan</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated centered %}
|
{%- include "docs/example.html" html=html separated centered -%}
|
||||||
|
|
||||||
## Ghost buttons
|
## Ghost buttons
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ Use the `.btn-ghost-*` class to make your button look simple yet aesthetically a
|
|||||||
<a href="#" class="btn btn-ghost-light">Light</a>
|
<a href="#" class="btn btn-ghost-light">Light</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated vertical %}
|
{%- include "docs/example.html" html=html separated vertical -%}
|
||||||
|
|
||||||
## Square buttons
|
## Square buttons
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ Use the `.btn-square` class to remove the border radius, if you want the corners
|
|||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<a href="#" class="btn btn-square">Square button</a>
|
<a href="#" class="btn btn-square">Square button</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Pill buttons
|
## Pill buttons
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ Add the `.btn-pill` class to your button to make it rounded and give it a modern
|
|||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<a href="#" class="btn btn-pill">Pill button</a>
|
<a href="#" class="btn btn-pill">Pill button</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Outline buttons
|
## Outline buttons
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ Replace the default modifier class with the `.btn-outline-*` class, if you want
|
|||||||
<a href="#" class="btn btn-outline-dark">Dark</a>
|
<a href="#" class="btn btn-outline-dark">Dark</a>
|
||||||
<a href="#" class="btn btn-outline-light">Light</a>
|
<a href="#" class="btn btn-outline-light">Light</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Button size
|
## Button size
|
||||||
|
|
||||||
@@ -139,13 +139,13 @@ Add `.btn-lg` or `.btn-sm` to change the size of your button and differentiate t
|
|||||||
<button type="button" class="btn btn-primary btn-lg">Large button</button>
|
<button type="button" class="btn btn-primary btn-lg">Large button</button>
|
||||||
<button type="button" class="btn btn-lg">Large button</button>
|
<button type="button" class="btn btn-lg">Large button</button>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<button type="button" class="btn btn-primary btn-sm">Small button</button>
|
<button type="button" class="btn btn-primary btn-sm">Small button</button>
|
||||||
<button type="button" class="btn btn-sm">Small button</button>
|
<button type="button" class="btn btn-sm">Small button</button>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Buttons with icons
|
## Buttons with icons
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ See all icons at [tabler.io/icons]({{ site.icons.link }}).
|
|||||||
Comment
|
Comment
|
||||||
</button>
|
</button>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Social buttons
|
## Social buttons
|
||||||
|
|
||||||
@@ -243,7 +243,7 @@ You can use the icons of popular social networking sites, which users are famili
|
|||||||
Tabler
|
Tabler
|
||||||
</a>
|
</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated centered hide-code %}
|
{%- include "docs/example.html" html=html separated centered hide-code -%}
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<a href="#" class="btn btn-facebook">
|
<a href="#" class="btn btn-facebook">
|
||||||
@@ -298,7 +298,7 @@ You can also add an icon without the name of a social networking site, if you wa
|
|||||||
{%- include "ui/icon.html" icon="brand-tabler" -%}
|
{%- include "ui/icon.html" icon="brand-tabler" -%}
|
||||||
</a>
|
</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated vertical hide-code %}
|
{%- include "docs/example.html" html=html separated vertical hide-code -%}
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<a href="#" class="btn btn-facebook btn-icon" aria-label="Button">
|
<a href="#" class="btn btn-facebook btn-icon" aria-label="Button">
|
||||||
@@ -333,7 +333,7 @@ Add the `.btn-icon` class to remove unnecessary padding from your button and use
|
|||||||
{%- include "ui/icon.html" icon="git-merge" -%}
|
{%- include "ui/icon.html" icon="git-merge" -%}
|
||||||
</a>
|
</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html separated centered hide-code %}
|
{%- include "docs/example.html" html=html separated centered hide-code -%}
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<a href="#" class="btn btn-primary btn-icon" aria-label="Button">
|
<a href="#" class="btn btn-primary btn-icon" aria-label="Button">
|
||||||
@@ -373,7 +373,7 @@ Create a dropdown button that will encourage users to click for more options. Yo
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered hide-code height="260px" %}
|
{%- include "docs/example.html" html=html centered hide-code height="260px" -%}
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
@@ -399,7 +399,7 @@ Add the `.btn-loading` class to show a button's loading state, which can be usef
|
|||||||
Loading button with loooong content
|
Loading button with loooong content
|
||||||
</a>
|
</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<a href="#" class="btn btn-primary">
|
<a href="#" class="btn btn-primary">
|
||||||
@@ -407,17 +407,7 @@ Add the `.btn-loading` class to show a button's loading state, which can be usef
|
|||||||
Button
|
Button
|
||||||
</a>
|
</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Full width buttons
|
|
||||||
|
|
||||||
Add the `.w-100` class to make buttons span the full width of their container. This is useful for mobile-first designs or when you want buttons to take up the entire available space.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<a href="#" class="btn btn-primary w-100">Full width button</a>
|
|
||||||
<a href="#" class="btn btn-outline-secondary w-100">Full width outline button</a>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html separated %}
|
|
||||||
|
|
||||||
## List of buttons
|
## List of buttons
|
||||||
|
|
||||||
@@ -430,7 +420,7 @@ Create a list of buttons using the `.btn-list` container to display different ac
|
|||||||
<a href="#" class="btn btn-danger">Cancel</a>
|
<a href="#" class="btn btn-danger">Cancel</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
If the list is long, it will be wrapped and some buttons will be moved to the next line, keeping them all evenly spaced.
|
If the list is long, it will be wrapped and some buttons will be moved to the next line, keeping them all evenly spaced.
|
||||||
|
|
||||||
@@ -457,7 +447,7 @@ If the list is long, it will be wrapped and some buttons will be moved to the ne
|
|||||||
<a href="#" class="btn">Nineteen</a>
|
<a href="#" class="btn">Nineteen</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
Use the `.text-center` or the `.text-end` modifiers to change the buttons' alignment and place them where they suit best.
|
Use the `.text-center` or the `.text-end` modifiers to change the buttons' alignment and place them where they suit best.
|
||||||
|
|
||||||
@@ -467,7 +457,7 @@ Use the `.text-center` or the `.text-end` modifiers to change the buttons' align
|
|||||||
<a href="#" class="btn btn-primary">Save changes</a>
|
<a href="#" class="btn btn-primary">Save changes</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html %}
|
{%- include "docs/example.html" html=html -%}
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<div class="btn-list justify-content-end">
|
<div class="btn-list justify-content-end">
|
||||||
@@ -475,7 +465,7 @@ Use the `.text-center` or the `.text-end` modifiers to change the buttons' align
|
|||||||
<a href="#" class="btn btn-primary">Save changes</a>
|
<a href="#" class="btn btn-primary">Save changes</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html %}
|
{%- include "docs/example.html" html=html -%}
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
<div class="btn-list">
|
<div class="btn-list">
|
||||||
@@ -484,27 +474,7 @@ Use the `.text-center` or the `.text-end` modifiers to change the buttons' align
|
|||||||
<a href="#" class="btn btn-primary">Save changes</a>
|
<a href="#" class="btn btn-primary">Save changes</a>
|
||||||
</div>
|
</div>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html %}
|
{%- include "docs/example.html" html=html -%}
|
||||||
|
|
||||||
## Buttons with badges
|
|
||||||
|
|
||||||
Add badges to buttons to display additional information like counts, notifications, or status indicators. Badges automatically position themselves within the button layout.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<a href="#" class="btn">
|
|
||||||
Notifications
|
|
||||||
<span class="badge ms-2">14</span>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn">
|
|
||||||
Messages
|
|
||||||
<span class="badge ms-2">3</span>
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn">
|
|
||||||
Alerts
|
|
||||||
<span class="badge ms-2">7</span>
|
|
||||||
</a>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
## Buttons with avatars
|
## Buttons with avatars
|
||||||
|
|
||||||
@@ -537,143 +507,4 @@ Use buttons with avatars to simplify the process of interaction and make your de
|
|||||||
Avatar
|
Avatar
|
||||||
</a>
|
</a>
|
||||||
{%- endcapture -%}
|
{%- endcapture -%}
|
||||||
{%- include "docs/example.html" html=html centered %}
|
{%- include "docs/example.html" html=html centered -%}
|
||||||
|
|
||||||
## Buttons with animations on hover
|
|
||||||
|
|
||||||
Add a subtle animation effect to your buttons when users hover over them. This can enhance the interactivity and provide visual feedback to improve the user experience.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div class="btn-list">
|
|
||||||
<a class="btn btn-animate-icon">
|
|
||||||
Save {% include "ui/icon.html" icon="arrow-right" class="icon-end" %}
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-rotate">
|
|
||||||
{% include "ui/icon.html" icon="plus" %} Add
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-shake">
|
|
||||||
{% include "ui/icon.html" icon="bell" %} Notifications
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-rotate">
|
|
||||||
{% include "ui/icon.html" icon="settings" %} Settings
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-pulse">
|
|
||||||
{% include "ui/icon.html" icon="heart" %} Love
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-rotate">
|
|
||||||
{% include "ui/icon.html" icon="x" %} Close
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-tada">
|
|
||||||
{% include "ui/icon.html" icon="check" %} Confirm
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon">
|
|
||||||
Next {% include "ui/icon.html" icon="chevron-right" class="icon-end" %}
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-animate-icon btn-animate-icon-move-start">
|
|
||||||
{% include "ui/icon.html" icon="chevron-left" %} Previous
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html %}
|
|
||||||
|
|
||||||
## Button sizes
|
|
||||||
|
|
||||||
Use size modifiers to change the size of your buttons. Available sizes: `.btn-xs`, `.btn-sm`, default, `.btn-lg`, `.btn-xl`.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<button type="button" class="btn btn-sm">Small button</button>
|
|
||||||
<button type="button" class="btn">Default button</button>
|
|
||||||
<button type="button" class="btn btn-lg">Large button</button>
|
|
||||||
<button type="button" class="btn btn-xl">Extra large button</button>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html separated centered vertical %}
|
|
||||||
|
|
||||||
## Link buttons
|
|
||||||
|
|
||||||
Use the `.btn-link` class to create buttons that look like links but maintain button functionality. These are useful for secondary actions that shouldn't compete with primary buttons for attention.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<a href="#" class="btn btn-link">Link button</a>
|
|
||||||
<button type="button" class="btn btn-link">Link button</button>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
## Action buttons
|
|
||||||
|
|
||||||
Use the `.btn-action` class to create subtle action buttons that are perfect for card headers, toolbars, or other interface elements where you want minimal visual impact.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div class="btn-actions">
|
|
||||||
<a href="#" class="btn btn-action" aria-label="Edit">
|
|
||||||
{%- include "ui/icon.html" icon="edit" -%}
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn btn-action" aria-label="Copy">
|
|
||||||
{%- include "ui/icon.html" icon="copy" -%}
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn btn-action" aria-label="Settings">
|
|
||||||
{%- include "ui/icon.html" icon="settings" -%}
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn btn-action" aria-label="Delete">
|
|
||||||
{%- include "ui/icon.html" icon="trash" -%}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
## Action button groups
|
|
||||||
|
|
||||||
Use the `.btn-actions` container to group multiple action buttons together. This creates a cohesive set of related actions that work well in card headers, toolbars, or other interface elements.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div class="btn-actions">
|
|
||||||
<a href="#" class="btn btn-action">
|
|
||||||
{%- include "ui/icon.html" icon="refresh" -%}
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn btn-action">
|
|
||||||
{%- include "ui/icon.html" icon="chevron-up" -%}
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn btn-action">
|
|
||||||
{%- include "ui/icon.html" icon="dots-vertical" -%}
|
|
||||||
</a>
|
|
||||||
<a href="#" class="btn btn-action">
|
|
||||||
{%- include "ui/icon.html" icon="x" -%}
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
## Button groups
|
|
||||||
|
|
||||||
Use button groups to combine related buttons together. Button groups are perfect for creating toolbars, segmented controls, or any interface where multiple related actions should be visually grouped.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<button type="button" class="btn">Left</button>
|
|
||||||
<button type="button" class="btn">Middle</button>
|
|
||||||
<button type="button" class="btn">Right</button>
|
|
||||||
</div>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div class="btn-group" role="group">
|
|
||||||
<input type="radio" class="btn-check" name="btn-radio" id="btn-radio-1" autocomplete="off" checked>
|
|
||||||
<label class="btn" for="btn-radio-1">Radio 1</label>
|
|
||||||
|
|
||||||
<input type="radio" class="btn-check" name="btn-radio" id="btn-radio-2" autocomplete="off">
|
|
||||||
<label class="btn" for="btn-radio-2">Radio 2</label>
|
|
||||||
|
|
||||||
<input type="radio" class="btn-check" name="btn-radio" id="btn-radio-3" autocomplete="off">
|
|
||||||
<label class="btn" for="btn-radio-3">Radio 3</label>
|
|
||||||
</div>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
<div class="btn-group-vertical" role="group">
|
|
||||||
<button type="button" class="btn">Top</button>
|
|
||||||
<button type="button" class="btn">Middle</button>
|
|
||||||
<button type="button" class="btn">Bottom</button>
|
|
||||||
</div>
|
|
||||||
{%- endcapture -%}
|
|
||||||
{%- include "docs/example.html" html=html centered %}
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
title: Dropzone
|
title: Dropzone
|
||||||
summary: Dropzone is a simple JavaScript library that helps you add file drag and drop functionality to your web forms. It is one of the most popular drag and drop libraries on the web and is used by millions of people.
|
summary: Dropzone is a simple JavaScript library that helps you add file drag and drop functionality to your web forms. It is one of the most popular drag and drop libraries on the web and is used by millions of people.
|
||||||
description: Drag-and-drop file upload tool.
|
description: Drag-and-drop file upload tool.
|
||||||
docs-libs: dropzone
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Basic usage
|
## Basic usage
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ banner: icons
|
|||||||
description: Enhance dashboards with custom icons.
|
description: Enhance dashboards with custom icons.
|
||||||
---
|
---
|
||||||
|
|
||||||
If you need to add icons to your website, you can use the [Tabler Icons library]({{ site.icons.link }}). It contains over 5000 icons that you can use in your projects. All icons are under the MIT license, so you can use them without any problem both in private and commercial projects.
|
If you need to add icons to your website, you can use the [Tabler Icons library]({{ site.icons.link }}). It contains over 5000 icons that you can use in your projects. All icons are under the MIT license, so you can use them without any problem both in private and commercial projects. You can find the Tabler Icons library [here](https://tabler-icons.io/).
|
||||||
|
|
||||||
## Base icon
|
## Base icon
|
||||||
|
|
||||||
|
|||||||
@@ -1,59 +0,0 @@
|
|||||||
---
|
|
||||||
title: Pagination
|
|
||||||
summary: Pagination is a user interface element that allows users to navigate through a set of data or content that is divided into multiple pages. It is commonly used in web applications, blogs, and e-commerce sites to display large amounts of information in a manageable way.
|
|
||||||
---
|
|
||||||
|
|
||||||
## Basic Example
|
|
||||||
|
|
||||||
Use slightly customized pagination with previous and next icon links:
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/pagination.html" %}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
|
||||||
|
|
||||||
## With First and Last links
|
|
||||||
|
|
||||||
When you have a lot of pages, you can use first and last links to quickly navigate to the beginning or end of the pagination.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/pagination.html" first-last %}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
|
||||||
|
|
||||||
## Offset
|
|
||||||
|
|
||||||
If the count of pages is too large, you can use offset to show only a few pages at a time.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/pagination.html" offset=3 count=20 %}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
|
||||||
|
|
||||||
## Button With Text
|
|
||||||
|
|
||||||
When you want to use pagination with text, you can use text buttons. This will give you a more traditional look and feel, which is great for applications where you want to keep the focus on the content rather than the navigation.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/pagination.html" text %}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
|
||||||
|
|
||||||
## Outline version
|
|
||||||
|
|
||||||
If you want to use an outline version of the pagination, you can use the `.pagination-outline` class. This will give you a more subtle look and feel, which is great for applications where you want to keep the focus on the content rather than the navigation.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/pagination.html" class="pagination-outline" %}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical %}
|
|
||||||
|
|
||||||
## Circle version
|
|
||||||
|
|
||||||
If you want to use a circle version of the pagination, you can use the `.pagination-circle` class. This will give you a more subtle look and feel, which is great for applications where you want to keep the focus on the content rather than the navigation. This can also be combined with the `.pagination-outline` class for a more prominent look.
|
|
||||||
|
|
||||||
{% capture html -%}
|
|
||||||
{% include "ui/pagination.html" class="pagination-circle" %}
|
|
||||||
{% include "ui/pagination.html" class="pagination-circle pagination-outline" -%}
|
|
||||||
{%- endcapture %}
|
|
||||||
{% include "docs/example.html" html=html centered vertical separated %}
|
|
||||||
@@ -175,7 +175,7 @@ You can also add a fancy animation to add variety to your button. See demo below
|
|||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="switch-icon switch-icon-slide-end" data-bs-toggle="switch-icon">
|
<button class="switch-icon switch-icon-slide-right" data-bs-toggle="switch-icon">
|
||||||
<span class="switch-icon-a text-secondary">
|
<span class="switch-icon-a text-secondary">
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Vector Maps
|
title: Vector Maps
|
||||||
docs-libs: [jsvectormap]
|
docs-libs: [jsvectormap, jsvectormap-world, jsvectormap-world-merc]
|
||||||
description: Interactive guide to creating vector maps with jsVectorMap.
|
description: Interactive guide to creating vector maps with jsVectorMap.
|
||||||
summary: Vector maps are a great way to display geographical data in an interactive and visually appealing way. Learn how to create vector maps with jsVectorMap.
|
summary: Vector maps are a great way to display geographical data in an interactive and visually appealing way. Learn how to create vector maps with jsVectorMap.
|
||||||
---
|
---
|
||||||
@@ -14,22 +14,55 @@ To use vector maps in your project, you need to include the jsVectorMap library
|
|||||||
<script src="{{ cdnUrl }}/dist/libs/jsvectormap/dist/maps/js/jsvectormap-world.js"></script>
|
<script src="{{ cdnUrl }}/dist/libs/jsvectormap/dist/maps/js/jsvectormap-world.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Default map
|
## Sample demo
|
||||||
|
|
||||||
Integrating the vector map into your website is straightforward. Below is a sample implementation for a world map:
|
Integrating the vector map into your website is straightforward. Below is a sample implementation for a world map:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
{% include "ui/map-vector.html" map-id="empty" %}
|
<div id="map-world" class="w-100 h-100"></div>
|
||||||
{{ script }}
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
const map = new jsVectorMap({
|
||||||
|
selector: "#map-world",
|
||||||
|
map: "world",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Sample demo
|
|
||||||
|
|
||||||
Look at the example below to see how the vector map works with a world map.
|
Look at the example below to see how the vector map works with a world map.
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{% include "ui/map-vector.html" map-id="world" %}
|
<div class="card">
|
||||||
{{ script }}
|
<div class="card-body">
|
||||||
|
<div class="ratio ratio-16x9">
|
||||||
|
<div>
|
||||||
|
<div id="map-world" class="w-100 h-100"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
const map = new jsVectorMap({
|
||||||
|
selector: "#map-world",
|
||||||
|
map: "world",
|
||||||
|
backgroundColor: "transparent",
|
||||||
|
regionStyle: {
|
||||||
|
initial: {
|
||||||
|
fill: "var(--tblr-body-bg)",
|
||||||
|
stroke: "var(--tblr-border-color)",
|
||||||
|
strokeWidth: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
zoomOnScroll: false,
|
||||||
|
zoomButtons: false,
|
||||||
|
});
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
map.updateSize();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html %}
|
{% include "docs/example.html" html=html %}
|
||||||
|
|
||||||
@@ -38,17 +71,99 @@ Look at the example below to see how the vector map works with a world map.
|
|||||||
You can add markers to the map to highlight specific locations. Below is a sample implementation for a world map with markers:
|
You can add markers to the map to highlight specific locations. Below is a sample implementation for a world map with markers:
|
||||||
|
|
||||||
{% capture html -%}
|
{% capture html -%}
|
||||||
{% include "ui/map-vector.html" map-id="world-markers" %}
|
<div class="card">
|
||||||
{{ script }}
|
<div class="card-body">
|
||||||
{%- endcapture %}
|
<div class="ratio ratio-16x9">
|
||||||
{% include "docs/example.html" html=html %}
|
<div>
|
||||||
|
<div id="map-world-markers" class="w-100 h-100"></div>
|
||||||
## Lines
|
</div>
|
||||||
|
</div>
|
||||||
You can also draw lines on the map to represent routes or connections between different locations. Below is a sample implementation for a world map with lines:
|
</div>
|
||||||
|
</div>
|
||||||
{% capture html -%}
|
<script>
|
||||||
{% include "ui/map-vector.html" map-id="world-lines" %}
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
{{ script }}
|
const map = new jsVectorMap({
|
||||||
|
selector: "#map-world-markers",
|
||||||
|
map: "world_merc",
|
||||||
|
backgroundColor: "transparent",
|
||||||
|
regionStyle: {
|
||||||
|
initial: {
|
||||||
|
fill: "var(--tblr-body-bg)",
|
||||||
|
stroke: "var(--tblr-border-color)",
|
||||||
|
strokeWidth: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
zoomOnScroll: false,
|
||||||
|
zoomButtons: false,
|
||||||
|
markers: [
|
||||||
|
{
|
||||||
|
coords: [61.524, 105.3188],
|
||||||
|
name: "Russia",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [56.1304, -106.3468],
|
||||||
|
name: "Canada",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [71.7069, -42.6043],
|
||||||
|
name: "Greenland",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [26.8206, 30.8025],
|
||||||
|
name: "Egypt",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [-14.235, -51.9253],
|
||||||
|
name: "Brazil",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [35.8617, 104.1954],
|
||||||
|
name: "China",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [37.0902, -95.7129],
|
||||||
|
name: "United States",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [60.472024, 8.468946],
|
||||||
|
name: "Norway",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
coords: [48.379433, 31.16558],
|
||||||
|
name: "Ukraine",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
markerStyle: {
|
||||||
|
initial: {
|
||||||
|
r: 4,
|
||||||
|
stroke: "#fff",
|
||||||
|
opacity: 1,
|
||||||
|
strokeWidth: 3,
|
||||||
|
stokeOpacity: 0.5,
|
||||||
|
fill: "var(--tblr-primary)",
|
||||||
|
},
|
||||||
|
hover: {
|
||||||
|
fill: "var(--tblr-primary)",
|
||||||
|
stroke: "var(--tblr-primary)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
markerLabelStyle: {
|
||||||
|
initial: {
|
||||||
|
fontSize: 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
labels: {
|
||||||
|
markers: {
|
||||||
|
render: function (marker) {
|
||||||
|
return marker.name;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
map.updateSize();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
{%- endcapture %}
|
{%- endcapture %}
|
||||||
{% include "docs/example.html" html=html %}
|
{% include "docs/example.html" html=html %}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: WYSIWYG editor
|
title: Wysiwyg editor
|
||||||
docs-libs: [hugerte]
|
docs-libs: [hugerte]
|
||||||
summary: The WYSIWYG editor that is flexible, customizable, and designed with the user in mind. HugeRTE can handle any challenge, from the most simple implementation through to the most complex use case.
|
summary: The WYSIWYG editor that is flexible, customizable, and designed with the user in mind. HugeRTE can handle any challenge, from the most simple implementation through to the most complex use case.
|
||||||
description: Flexible WYSIWYG editor for content.
|
description: Flexible WYSIWYG editor for content.
|
||||||
|
|||||||
@@ -418,6 +418,8 @@ Add a range slider to make it possible for users to set a value or range, such a
|
|||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">Range input</label>
|
<label class="form-label">Range input</label>
|
||||||
<input type="range" class="form-range mb-2" value="40" min="0" max="100" step="10" />
|
<input type="range" class="form-range mb-2" value="40" min="0" max="100" step="10" />
|
||||||
|
<div class="form-range mb-2" id="range-simple"></div>
|
||||||
|
<div class="form-range mb-2" id="range-connect"></div>
|
||||||
<div class="form-range mb-2 text-green" id="range-color"></div>
|
<div class="form-range mb-2 text-green" id="range-color"></div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
6
docs/content/ui/getting-started/changelog.md
Normal file
6
docs/content/ui/getting-started/changelog.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Changelog
|
||||||
|
summary: Look at the latest changes and updates in Tabler.
|
||||||
|
---
|
||||||
|
|
||||||
|
{{ changelog | replace: '# Changelog', '' }}
|
||||||
@@ -28,9 +28,17 @@ Install Tabler in your Node.js powered apps with the npm package:
|
|||||||
|
|
||||||
{% include "docs/tabs-package.html" name="@tabler/core" %}
|
{% include "docs/tabs-package.html" name="@tabler/core" %}
|
||||||
|
|
||||||
## 3rd-party Libraries
|
|
||||||
|
|
||||||
Tabler uses other packages to enhance its functionality - for example, charts and input masks. These are not automatically installed to avoid huge
|
Tabler uses other packages to enhance its functionality - for example, charts and input masks. These are not automatically installed to avoid huge
|
||||||
dependency trees and need to be installed by using `npm install`. The full list of recommended libraries is available on the
|
dependency trees and need to be installed by using npm install. We support the following packages as of writing.
|
||||||
[3rd-party Libraries & Resources](/ui/getting-started/references) page.
|
|
||||||
For the most recent list of supported packages, you can also check the [libs.json](https://github.com/tabler/tabler/blob/dev/core/libs.json) file.
|
- [apexcharts](https://apexcharts.com/)
|
||||||
|
- [autosize](http://www.jacklmoore.com/autosize/)
|
||||||
|
- [choices.js](https://github.com/Choices-js/Choices)
|
||||||
|
- [countup.js](https://inorganik.github.io/countUp.js/)
|
||||||
|
- [flatpickr](https://flatpickr.js.org/)
|
||||||
|
- [imask](https://imask.js.org/)
|
||||||
|
- [litepicker](https://litepicker.com/)
|
||||||
|
- [nouislider](https://refreshless.com/nouislider/)
|
||||||
|
- [tom-select](https://tom-select.js.org/)
|
||||||
|
|
||||||
|
For the complete list of supported packages you can check the peerDependencies section in our [package.json](https://github.com/tabler/tabler/blob/dev/package.json)
|
||||||
@@ -39,16 +39,16 @@ To set up Tabler for development, follow these steps:
|
|||||||
|
|
||||||
<div class="steps steps-vertical">
|
<div class="steps steps-vertical">
|
||||||
|
|
||||||
### Ensure Node.js and pnpm are installed
|
### Ensure Node.js and npm are installed
|
||||||
|
|
||||||
You’ll need Node.js (v20 or higher) and pnpm to compile Tabler’s files. If you don’t have them installed, download and install them from the official websites:
|
You’ll need Node.js (v20 or higher) and pnpm to compile Tabler’s files. If you don’t have them installed, download and install them from the official websites:
|
||||||
|
|
||||||
- [Node.js](https://nodejs.org/)
|
- [Node.js](https://nodejs.org/)
|
||||||
- [pnpm](https://pnpm.io/) (we use pnpm over other package managers for faster installation).
|
- [pnpm](https://pnpm.io/)
|
||||||
|
|
||||||
### Install dependencies
|
### Install dependencies
|
||||||
|
|
||||||
Run the following command to install all required npm packages:
|
Run the following command to install all required npm packages. We recommend using pnpm for faster installation:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pnpm install
|
pnpm install
|
||||||
@@ -56,7 +56,7 @@ pnpm install
|
|||||||
|
|
||||||
### Start developer mode
|
### Start developer mode
|
||||||
|
|
||||||
Use the following command to enable autocompilation with live reload. This will start up the preview website at `http://localhost:3000/`, and the documentation website at `http://localhost:3010/`:
|
Use the following command to enable autocompilation with live reload. This will start a local server at `http://localhost:3000/`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pnpm run dev
|
pnpm run dev
|
||||||
@@ -64,7 +64,7 @@ pnpm run dev
|
|||||||
|
|
||||||
### Make changes
|
### Make changes
|
||||||
|
|
||||||
Make your changes in the appropriate folders, such as `./core/`, `./preview/` or `./docs/`. Avoid modifying files in any `dist` folders, as they are auto-generated during the build process and will be overwritten.
|
Make your changes in the appropriate folders, such as `./src/` or `./docs/`. Avoid modifying files in `./dist/`, as they are auto-generated during the build process and will be overwritten.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## Compiling for Production
|
## Compiling for Production
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
title: 3rd-party Libraries & Resources
|
|
||||||
---
|
|
||||||
|
|
||||||
Tabler uses the following open source resources:
|
|
||||||
|
|
||||||
{% include "docs/open-source-resources.html" %}
|
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
import { appFilters } from "../shared/e11ty/filters.mjs"
|
import { appFilters } from "../shared/e11ty/filters.mjs"
|
||||||
import { appData } from "../shared/e11ty/data.mjs";
|
import { appData, getCopyList } from "../shared/e11ty/data.mjs";
|
||||||
import { readFileSync, existsSync } from 'node:fs';
|
import { readFileSync, existsSync } from 'node:fs';
|
||||||
import { fileURLToPath } from 'node:url'
|
import { fileURLToPath } from 'node:url'
|
||||||
import { join, dirname } from 'node:path';
|
import { join, dirname } from 'node:path';
|
||||||
import beautify from 'js-beautify';
|
import beautify from 'js-beautify';
|
||||||
|
import { EleventyRenderPlugin } from "@11ty/eleventy";
|
||||||
|
|
||||||
const shiki = await import('shiki');
|
const shiki = await import('shiki');
|
||||||
import { createCssVariablesTheme } from 'shiki/core'
|
import { createCssVariablesTheme } from 'shiki/core'
|
||||||
@@ -16,8 +17,12 @@ export default function (eleventyConfig) {
|
|||||||
appFilters(eleventyConfig);
|
appFilters(eleventyConfig);
|
||||||
appData(eleventyConfig);
|
appData(eleventyConfig);
|
||||||
|
|
||||||
|
eleventyConfig.addPlugin(EleventyRenderPlugin, {
|
||||||
|
accessGlobalData: true,
|
||||||
|
});
|
||||||
|
|
||||||
eleventyConfig.addPassthroughCopy({
|
eleventyConfig.addPassthroughCopy({
|
||||||
"node_modules/@tabler/core/dist": "dist",
|
...getCopyList(),
|
||||||
"public": "/",
|
"public": "/",
|
||||||
"static": "static",
|
"static": "static",
|
||||||
});
|
});
|
||||||
@@ -163,17 +168,7 @@ export default function (eleventyConfig) {
|
|||||||
children: []
|
children: []
|
||||||
}
|
}
|
||||||
}).sort((a, b) => {
|
}).sort((a, b) => {
|
||||||
const orderA = a.data.order ?? 999;
|
return (a.data.order || 999) - (b.data.order || 999);
|
||||||
const orderB = b.data.order ?? 999;
|
|
||||||
|
|
||||||
if (orderA !== orderB) {
|
|
||||||
return orderA - orderB;
|
|
||||||
}
|
|
||||||
|
|
||||||
const titleA = a.data.title ?? '';
|
|
||||||
const titleB = b.data.title ?? '';
|
|
||||||
|
|
||||||
return titleA.localeCompare(titleB);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return buildCollectionTree(a);
|
return buildCollectionTree(a);
|
||||||
@@ -236,8 +231,8 @@ export default function (eleventyConfig) {
|
|||||||
eleventyConfig.addFilter("toc", function (name) {
|
eleventyConfig.addFilter("toc", function (name) {
|
||||||
const toc = [];
|
const toc = [];
|
||||||
|
|
||||||
const contentWithoutExamples = name.replace(/<!--EXAMPLE-->[\s\S]*?<!--\/EXAMPLE-->/g, '');
|
const contentWithoutExamples = name.replace(/<div[^>]*\bclass=["'][^"']*\bexample\b[^"']*".*?>.*?<\/div>/gs, '');
|
||||||
const headings = contentWithoutExamples.match(/<h([23])>([^<]+)<\/h\1>/g);
|
const headings = contentWithoutExamples.match(/<h([23])>(.*?)<\/h\1>/g);
|
||||||
|
|
||||||
if (headings) {
|
if (headings) {
|
||||||
headings.forEach(heading => {
|
headings.forEach(heading => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@tabler/docs",
|
"name": "@tabler/docs",
|
||||||
"version": "1.4.0",
|
"version": "1.2.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -24,14 +24,36 @@
|
|||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@hotwired/turbo": "^8.0.13",
|
||||||
|
"@melloware/coloris": "^0.24.0",
|
||||||
|
"@tabler/core": "workspace:*",
|
||||||
|
"@tabler/icons": "^3.31.0",
|
||||||
|
"apexcharts": "3.54.1",
|
||||||
|
"autosize": "^6.0.1",
|
||||||
|
"choices.js": "^11.1.0",
|
||||||
|
"countup.js": "^2.8.0",
|
||||||
|
"dropzone": "^6.0.0-beta.2",
|
||||||
|
"flatpickr": "^4.6.13",
|
||||||
|
"fslightbox": "^3.5.1",
|
||||||
|
"hugerte": "^1.0.9",
|
||||||
|
"imask": "^7.6.1",
|
||||||
|
"jsvectormap": "^1.6.0",
|
||||||
|
"list.js": "^2.3.1",
|
||||||
|
"litepicker": "^2.0.12",
|
||||||
|
"nouislider": "^15.8.1",
|
||||||
|
"plyr": "^3.7.8",
|
||||||
|
"signature_pad": "^5.0.7",
|
||||||
|
"star-rating.js": "^4.3.1",
|
||||||
|
"tom-select": "^2.4.3",
|
||||||
|
"typed.js": "^2.1.0"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@11ty/eleventy": "^3.1.2",
|
"@11ty/eleventy": "^3.0.0",
|
||||||
|
"@11ty/eleventy-navigation": "^1.0.4",
|
||||||
"@docsearch/css": "^3.9.0",
|
"@docsearch/css": "^3.9.0",
|
||||||
"@docsearch/js": "^3.9.0",
|
"@docsearch/js": "^3.9.0",
|
||||||
"flat-cache": "^6.1.11",
|
"flat-cache": "^6.1.8",
|
||||||
"shiki": "^3.7.0"
|
"shiki": "^3.2.2"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@tabler/core": "workspace:*"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.3 KiB |
@@ -3,7 +3,6 @@
|
|||||||
:root {
|
:root {
|
||||||
--docsearch-primary-color: var(--tblr-primary);
|
--docsearch-primary-color: var(--tblr-primary);
|
||||||
--docsearch-searchbox-background: var(--tblr-bg-surface);
|
--docsearch-searchbox-background: var(--tblr-bg-surface);
|
||||||
--docsearch-searchbox-focus-background: var(--tblr-bg-surface);
|
|
||||||
--docsearch-text-color: var(--tblr-body-text);
|
--docsearch-text-color: var(--tblr-body-text);
|
||||||
--docsearch-key-shadow: 0 0 0 1px var(--tblr-border-color);
|
--docsearch-key-shadow: 0 0 0 1px var(--tblr-border-color);
|
||||||
--docsearch-key-gradient: var(--tblr-bg-surface-secondary);
|
--docsearch-key-gradient: var(--tblr-bg-surface-secondary);
|
||||||
@@ -26,80 +25,6 @@
|
|||||||
transition: all 0.2s ease-in-out;
|
transition: all 0.2s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
.DocSearch-SearchBar {
|
|
||||||
display: flex;
|
|
||||||
padding: var(--docsearch-spacing) var(--docsearch-spacing) 0;
|
|
||||||
background-color: var(--tblr-bg-surface) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit-source {
|
|
||||||
background: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Dropdown {
|
|
||||||
background-color: var(--tblr-bg-surface) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit a {
|
|
||||||
background-color: var(--tblr-bg-surface-secondary) !important;
|
|
||||||
border: 1px solid var(--tblr-border-color) !important;
|
|
||||||
color: var(--tblr-body-color) !important;
|
|
||||||
box-shadow: none !important;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: var(--tblr-bg-surface-tertiary) !important;
|
|
||||||
border-color: var(--tblr-border-color-active) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit-Container {
|
|
||||||
color: var(--tblr-body-color) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit-title {
|
|
||||||
color: var(--tblr-body-color) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit-path {
|
|
||||||
color: var(--tblr-muted) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit[aria-selected="true"] a {
|
|
||||||
background-color: var(--tblr-primary) !important;
|
|
||||||
border-color: var(--tblr-primary) !important;
|
|
||||||
color: var(--tblr-primary-fg) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Hit[aria-selected="true"] .DocSearch-Hit-Container,
|
|
||||||
.DocSearch-Hit[aria-selected="true"] .DocSearch-Hit-title,
|
|
||||||
.DocSearch-Hit[aria-selected="true"] .DocSearch-Hit-path {
|
|
||||||
color: var(--tblr-primary-fg) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Modal {
|
|
||||||
background-color: var(--tblr-bg-surface) !important;
|
|
||||||
box-shadow: var(--tblr-shadow-dropdown) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Form {
|
|
||||||
background-color: var(--tblr-bg-surface-secondary) !important;
|
|
||||||
border: 1px solid var(--tblr-border-color) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Input {
|
|
||||||
color: var(--tblr-body-color) !important;
|
|
||||||
|
|
||||||
&::placeholder {
|
|
||||||
color: var(--tblr-muted) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Footer {
|
|
||||||
background-color: var(--tblr-bg-surface) !important;
|
|
||||||
border-top: 1px solid var(--tblr-border-color) !important;
|
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DocSearch-Button-Key {
|
.DocSearch-Button-Key {
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
@@ -128,9 +53,3 @@
|
|||||||
background: var(--tblr-gray-900) !important;
|
background: var(--tblr-gray-900) !important;
|
||||||
color: var(--tblr-gray-300) !important;
|
color: var(--tblr-gray-300) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
|
||||||
::selection {
|
|
||||||
background: var(--tblr-primary);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
37
package.json
37
package.json
@@ -14,39 +14,36 @@
|
|||||||
"zip-package": "node .build/zip-package.mjs",
|
"zip-package": "node .build/zip-package.mjs",
|
||||||
"start": "pnpm dev"
|
"start": "pnpm dev"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@10.12.4",
|
"packageManager": "pnpm@10.8.1",
|
||||||
"dependencies": {
|
|
||||||
"shx": "^0.4.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@argos-ci/playwright": "^5.0.5",
|
"@argos-ci/playwright": "^4.1.0",
|
||||||
"@changesets/changelog-github": "^0.5.1",
|
"@changesets/changelog-github": "^0.5.1",
|
||||||
"@changesets/cli": "^2.29.5",
|
"@changesets/cli": "^2.29.2",
|
||||||
"@playwright/test": "^1.53.2",
|
"@playwright/test": "^1.52.0",
|
||||||
"@rollup/plugin-babel": "^6.0.4",
|
"@rollup/plugin-babel": "^6.0.4",
|
||||||
"@rollup/plugin-commonjs": "^28.0.6",
|
"@rollup/plugin-commonjs": "^28.0.3",
|
||||||
"@rollup/plugin-node-resolve": "^16.0.1",
|
"@rollup/plugin-node-resolve": "^16.0.1",
|
||||||
"@rollup/plugin-replace": "^6.0.2",
|
"@rollup/plugin-replace": "^6.0.2",
|
||||||
"adm-zip": "^0.5.16",
|
"adm-zip": "^0.5.16",
|
||||||
"autoprefixer": "^10.4.21",
|
"autoprefixer": "^10.4.21",
|
||||||
"bundlewatch": "^0.4.1",
|
"bundlewatch": "^0.4.1",
|
||||||
"clean-css-cli": "^5.6.3",
|
"clean-css-cli": "^5.6.3",
|
||||||
"concurrently": "^9.2.0",
|
"concurrently": "^9.1.2",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"fs-extra": "^11.3.0",
|
"glob": "^11.0.1",
|
||||||
"glob": "^11.0.3",
|
|
||||||
"js-beautify": "^1.15.4",
|
"js-beautify": "^1.15.4",
|
||||||
"nodemon": "^3.1.10",
|
"nodemon": "^3.1.9",
|
||||||
"pnpm": "^10.6.5",
|
"pnpm": "10.6.5",
|
||||||
"postcss": "^8.5.6",
|
"postcss": "^8.5.3",
|
||||||
"postcss-cli": "^11.0.1",
|
"postcss-cli": "^11.0.1",
|
||||||
"prettier": "^3.6.2",
|
"prettier": "^3.5.3",
|
||||||
"rollup": "4.44.2",
|
"rollup": "4.40.0",
|
||||||
"rollup-plugin-dotenv": "^0.5.1",
|
"rollup-plugin-dotenv": "^0.5.1",
|
||||||
"rtlcss": "^4.3.0",
|
"rtlcss": "^4.3.0",
|
||||||
"sass": "1.89.2",
|
"sass": "1.71.0",
|
||||||
"shelljs": "^0.10.0",
|
"shelljs": "^0.9.2",
|
||||||
"terser": "^5.43.1",
|
"shx": "^0.4.0",
|
||||||
"turbo": "^2.5.4"
|
"terser": "^5.39.0",
|
||||||
|
"turbo": "^2.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user