1
0
mirror of https://github.com/tabler/tabler.git synced 2025-12-21 17:34:25 +04:00

Compare commits

...

83 Commits

Author SHA1 Message Date
codecalm
620e3f6dc7 Update depencencies 2025-07-23 20:00:08 +02:00
Paweł Kuna
8947d7c7b7 Update activity messages in JSON data (#2452) 2025-07-23 19:16:47 +02:00
Paweł Kuna
399a5c59f9 Update icons to v3.34.1 (75 new icons) (#2451) 2025-07-23 19:16:36 +02:00
Valentine Frolov
ad22d046c3 Add a color palette in the signing component #2373 (#2448)
Co-authored-by: Valentine <valentine@pop-os.Dlink>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-07-23 19:15:14 +02:00
Paweł Kuna
b8b63d7e94 Fix mixed declarations in SCSS (#2450) 2025-07-23 19:13:46 +02:00
Koray Tuncer
ab8009b771 fix : Docs search not adjusted to dark mode (#2381) (#2443)
Co-authored-by: codecalm <codecalm@gmail.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-07-23 19:13:04 +02:00
Koray Tuncer
bd35fd39cf fix: Some forms on the new 'Form Elements' page don't lay out neatly … (#2444)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-07-23 19:12:47 +02:00
codecalm
4b65380293 fix: update environment condition from preview to production in default.html 2025-07-16 22:27:51 +02:00
github-actions[bot]
2c73788cd1 chore: update versions (#2411)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-13 11:07:29 +02:00
codecalm
a967970419 Update version from patch to minor for core dependencies and clean up changelogs 2025-07-12 13:11:34 +02:00
Kevin Papst
64baa141e7 add more lock file names to prevent unwanted changes (#2416) 2025-07-12 11:47:06 +02:00
Paweł Kuna
49ab9ea931 Add new Tabler Illustrations (#2441) 2025-07-12 11:46:48 +02:00
Paweł Kuna
a8c41914c4 Add Tabler project rules and documentation standards (#2446) 2025-07-12 11:44:14 +02:00
Paweł Kuna
9951fe9b1d Enhance button and hover animations (#2401) 2025-07-07 22:56:08 +02:00
Abdelrhman Said
cfd4cb6624 Only apply pagination-link hover styles to non-active items (#2433)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-07-07 22:01:34 +02:00
Aidi Tan
6fec73a3c4 fix: use relative line heights to make calculations work (#2258) (#2426)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-07-07 21:43:16 +02:00
ethancrawford
29cc0cd378 Rename several Theme builder labels (#2430) 2025-07-07 21:36:20 +02:00
BG-Software
6c47b5f868 Change package.json to core/libs.json as a source of libraries (#2423) 2025-07-07 18:52:08 +02:00
Paweł Kuna
6c38a48af1 Update dependencies (#2432) 2025-07-07 18:50:43 +02:00
Paweł Kuna
6c4dd3670d Update class names from left, right to start, end (#2402) 2025-07-07 18:00:21 +02:00
Paweł Kuna
2a12f72b28 fix: update CSS calculations to use calc() (#2412) 2025-07-07 17:59:45 +02:00
codecalm
f91b0f7cfa Merge branch 'main' of https://github.com/tabler/tabler into dev 2025-07-07 17:58:01 +02:00
codecalm
af816227bc fix: update banner script data-tblr-ref for production environment 2025-07-07 17:45:48 +02:00
codecalm
59b6f73a06 Merge branch 'main' of https://github.com/tabler/tabler into dev 2025-06-12 12:06:22 +02:00
codecalm
266d5ad773 fix: update banner script data-tblr-ref for preview and production environments 2025-06-03 22:49:55 +02:00
carlosmintfan
db6200a998 wysiwyg.html: Remove license_key option from HugeRTE init object (#2413)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-05-29 21:56:13 +02:00
BG-Software
70a41e4fc2 Replace a package list in download.md with a link to the 3rd-party libraries page (#2415) 2025-05-29 17:42:25 +02:00
Paweł Kuna
e96f055238 Add different favicon to development environment (#2395) 2025-05-28 00:00:50 +02:00
Paweł Kuna
a200d30f04 Improve breadcrumb styles (#2403) 2025-05-27 23:56:04 +02:00
Daniel Vítek
666a296a62 List group item hoverable only with .list-group-hoverable class (#2397)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-05-27 23:54:01 +02:00
codecalm
545defc852 fix: restore shx dependency in package.json and pnpm-lock.yaml 2025-05-26 20:46:34 +02:00
codecalm
1b0f8206ee fix: update banner script loading condition to production environment 2025-05-26 20:45:14 +02:00
codecalm
c2cb3d3255 fix: remove shx dependency from importers in pnpm-lock.yaml 2025-05-26 20:41:48 +02:00
codecalm
a0377f9752 fix: remove shx dependency from core, docs, and preview packages 2025-05-26 20:40:05 +02:00
codecalm
c914ecfb05 feat: add shx dependency to core, docs, and preview packages 2025-05-26 20:36:01 +02:00
codecalm
57afd0bb11 feat: add data attribute to banner script for preview environment 2025-05-26 20:31:17 +02:00
codecalm
8db1c08744 feat: add banner script loading for preview environment 2025-05-26 20:22:22 +02:00
codecalm
08e4919ae1 Add conditional loading of banner script in development environment 2025-05-26 20:21:57 +02:00
codecalm
ef9d75f32f fix: update footer condition to include preview environment for changelog link 2025-05-19 23:39:35 +02:00
github-actions[bot]
3e35545edc chore: update versions (#2393)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-19 23:35:47 +02:00
Paweł Kuna
446c34eceb Add initial README.md with project overview and installation instructions to core package (#2392) 2025-05-19 23:24:53 +02:00
github-actions[bot]
90285704e4 chore: update versions (#2390)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-19 22:39:00 +02:00
Paweł Kuna
a7f73d7f7e Fix README file in core package (#2389) 2025-05-19 21:09:21 +02:00
github-actions[bot]
d66c6a70eb chore: update versions (#2266)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-19 20:43:25 +02:00
Paweł Kuna
ad54f61429 Move additional libraries to Tabler core (#2385) 2025-05-19 20:35:01 +02:00
Paweł Kuna
9007e73cb6 Fix FAQ accordion structure (#2388) 2025-05-18 21:16:23 +02:00
codecalm
0d106a89b7 Add role to sample people json 2025-05-18 18:59:01 +02:00
codecalm
0d59e2f13a fix: Correct typos and improve clarity in pagination documentation 2025-05-17 21:28:46 +02:00
Paweł Kuna
8850f6128f Enhance pagination component with new styles and documentation (#2384) 2025-05-17 17:04:59 +02:00
codecalm
a1af8014e8 feat: Add FullCalendar integration 2025-05-17 16:53:01 +02:00
codecalm
c8fee60023 feat: Refactor pagination and table of contents into separate includes for better maintainability 2025-05-17 16:50:59 +02:00
codecalm
d8c70a8b94 fix: Adjust layout spacing and improve footer structure in documentation 2025-05-17 16:40:30 +02:00
codecalm
b70cb48e0b feat: Add Open Collective link to documentation layout 2025-05-17 15:24:19 +02:00
codecalm
5b8746c702 Merge branch 'dev' of https://github.com/tabler/tabler into dev-docs-footer 2025-05-17 15:20:19 +02:00
codecalm
f2c0c65f98 feat: Add package managers data and update tabs documentation 2025-05-17 15:20:08 +02:00
codecalm
06021fad99 Refactor SCSS variables for code styling 2025-05-17 14:36:22 +02:00
codecalm
bd67b3f82e feat: Add social media links and GitHub edit link in documentation layout 2025-05-17 14:16:02 +02:00
codecalm
8e2acc82e0 Merge branch 'dev' of https://github.com/tabler/tabler into dev 2025-05-17 13:58:46 +02:00
codecalm
85f212293d chore: Update package dependencies and improve welcome link 2025-05-17 13:57:52 +02:00
Paweł Kuna
72a1d67709 Refactor breadcrumb and vector map components, add clipboard functionality (#2378)
Co-authored-by: ethancrawford <ethan_jc@hotmail.com>
2025-05-17 00:46:31 +02:00
Paweł Kuna
638f36c0c5 Refactor SCSS variable names for shadows (#2377) 2025-05-16 22:37:38 +02:00
Paweł Kuna
f769abd70b Add FullCalendar integration with sample events and styling (#2363) 2025-05-16 22:27:48 +02:00
ethancrawford
3a02ef9c55 Prevent some marketing site rows overflowing on mobile (#2375)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-05-16 22:27:18 +02:00
BG-Software
38ea9aa4e7 Use primary color for ::selection inside <code> in docs (#2382) 2025-05-16 22:26:25 +02:00
codecalm
acbe4ff35f Merge branch 'dev' of https://github.com/tabler/tabler into dev 2025-05-15 23:52:04 +02:00
Paweł Kuna
b5e2f54bf8 Enhance dropdown components for better accessibility (#2370) 2025-05-15 23:49:10 +02:00
codecalm
e2411b3518 fix: Refactor SCSS variable names for shadows 2025-05-15 23:44:22 +02:00
codecalm
44a1979b78 Update version type for "@tabler/core" to minor in changeset 2025-05-12 23:28:44 +02:00
codecalm
bccdeee779 Replace "@tabler/preview" with "@tabler/core" in changeset files 2025-05-12 23:26:42 +02:00
codecalm
5cb041275d Improve documentation clarity by refining section descriptions and adjusting table of contents behavior 2025-05-12 23:24:19 +02:00
codecalm
27c866b3c3 Update linked packages in changeset configuration 2025-05-12 23:23:19 +02:00
Mikołaj Sojka
c127d65605 Fix colour picker preview page not displaying correctly (#2321)
Co-authored-by: codecalm <codecalm@gmail.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-05-12 22:56:32 +02:00
codecalm
f15d2b97f8 Update dependencies 2025-05-12 22:20:10 +02:00
dependabot[bot]
1f4906cc40 chore(deps): bump @babel/runtime-corejs3 from 7.26.7 to 7.27.1 (#2335)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-12 22:14:56 +02:00
Paweł Kuna
f8075f69c0 Add documentation for 3rd-party libraries and resources (#2356)
Co-authored-by: Kevin Papst <kevinpapst@users.noreply.github.com>
Co-authored-by: Bartłomiej Gawęda <bagaweda@gmail.com>
2025-05-12 22:14:42 +02:00
Mikołaj Sojka
fd0fd47bb2 Improve card footer layout and enhance entry display format in invoices (#2345)
Co-authored-by: codecalm <codecalm@gmail.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-05-12 22:14:27 +02:00
Paweł Kuna
a41c9565f1 Remove unnecessary !important from body padding (#2357) 2025-05-12 22:13:51 +02:00
BG-Software
7fc1d5c11c Fix: Exclude headings in the carousel and modal examples from ToC (#2362) 2025-05-12 22:13:38 +02:00
BG-Software
222ddd4b2f Change WYSIWYG title to uppercase (#2368) 2025-05-12 20:55:32 +02:00
Paweł Kuna
ddd3753cde Fix WYSIWYG documentation (#2359) 2025-05-12 20:30:33 +02:00
Paweł Kuna
b9d434dcd4 feat: Add new charts to dashboard pages (#2366)
Co-authored-by: Bartłomiej Gawęda <bagaweda@gmail.com>
2025-05-12 20:28:35 +02:00
ethancrawford
6a3513f8e9 Add a few small documentation fixes and updates (#2360)
Co-authored-by: BG-Software <73077398+BG-Software-BG@users.noreply.github.com>
2025-05-12 18:48:48 +02:00
codecalm
21bf92608d Enhance color variables and update color display in documentation 2025-05-11 19:44:21 +02:00
211 changed files with 7796 additions and 4934 deletions

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Update illustrations to v1.7

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Add SRI hashes to scripts and styles

View File

@@ -0,0 +1,5 @@
---
"@tabler/preview": minor
---
Add a color palette in the signing component

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
fix: improve Introduction, Base, Layout and Plugins sections in documentation

View File

@@ -3,8 +3,18 @@
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"linked": [
[
"@tabler/core",
"@tabler/preview",
"@tabler/docs"
]
],
"access": "public",
"baseBranch": "dev",
"ignore": []
"ignore": [],
"privatePackages": {
"version": true,
"tag": false
}
}

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Update icons to v3.31.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Fix broken links to other docs section and tabler.io website; improve some labels.

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Add "text features" menu item

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Correct `aria-label` of app menu link

View File

@@ -0,0 +1,5 @@
---
"@tabler/core": patch
---
Fix mixed declarations in SCSS

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Fix switch icon examples with filled icons in documentation

View File

@@ -1,5 +0,0 @@
---
---
Add missing metadata for Tabler Documentation

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Fix color badge in navbar menu

View File

@@ -0,0 +1,5 @@
---
"@tabler/preview": patch
---
Update icons to v3.34.1 (75 new icons)

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Fix documentation: remove duplicated code examples; increase height of dropdown examples; fix some links

View File

@@ -2,4 +2,4 @@
"@tabler/preview": patch
---
Add new form layout page
Update activity messages

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Fix ribbon component in the documentation

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": "patch"
---
Fix colour swatches on small screens

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Add missing `tw` entry in `flags.json`

View File

@@ -1,5 +0,0 @@
---
"@tabler/preview": patch
---
Delete missing demo RTL style

View File

@@ -1,5 +0,0 @@
---
---
Fix broken RTL preview

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Fix incorrect label text on form elements docs page

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Use tabs-package include to show webfont install steps

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Demonstrate sticky header table more clearly in docs

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Replace non-existent Vimeo file and enhance the inline player documentation

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Exclude headings inside `.example` from the Table of Contents

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix missing border-radius to `.card-header-tabs`

View File

@@ -2,4 +2,4 @@
"@tabler/docs": patch
---
Fix input mask example in docs
Fix Docs search in dark mode

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Add missing `.steps-vertical` classes in docs

View File

@@ -0,0 +1,5 @@
---
"@tabler/preview": patch
---
Fix responsive layputs in 'Form Elements' page

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Use color-input examples in documentation

View File

@@ -1,5 +0,0 @@
---
---
Add URL for local dev version of docs app to README

View File

@@ -1,5 +0,0 @@
---
"@tabler/docs": patch
---
Fix `src` links to images in README and getting-started docs page

56
.cursor/rules/main.mdc Normal file
View File

@@ -0,0 +1,56 @@
---
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

View File

@@ -13,10 +13,9 @@ jobs:
steps:
- name: Clone Tabler
uses: actions/checkout@v4
- name: Prevent lock file change
uses: xalvarez/prevent-file-change-action@v2
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
pattern: Gemfile.lock|pnpm-lock.json
trustedAuthors: codecalm, dependabot
pattern: Gemfile.lock|pnpm-lock.json|pnpm-lock.yaml
trustedAuthors: codecalm, BG-Software-BG, dependabot

View File

@@ -23,24 +23,8 @@ A premium and open source dashboard template with a responsive and high-quality
</a>
</p>
<p align="center">
<a href="https://github.com/sponsors/codecalm" target="_blank">
<img src="https://raw.githubusercontent.com/tabler/tabler/dev/shared/static/sponsor-banner-homepage.svg" alt="Sponsor Banner">
</a>
</p>
## 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">

33
core/.build/copy-libs.mjs Normal file
View File

@@ -0,0 +1,33 @@
#!/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}`)
}
}

View File

@@ -1,5 +1,66 @@
# @tabler/core
## 1.4.0
### Minor Changes
- 9951fe9: Enhance button and hover animations
- a200d30: Improve breadcrumb styles
- 49ab9ea: Add new Tabler Illustrations
### Patch Changes
- 6c4dd36: Update class names from `*-left`, `*-right` to `*-start`, `*-end`
- 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
### Patch Changes
- 446c34e: Fix README file in core package
## 1.3.1
### Patch Changes
- a7f73d7: Fix README file in core package
## 1.3.0
### Minor Changes
- a1af801: Add FullCalendar integration
- 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

42
core/README.md Normal file
View File

@@ -0,0 +1,42 @@
# 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 Normal file
View File

@@ -0,0 +1,164 @@
{
"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
}
}

View File

@@ -1,14 +1,14 @@
{
"name": "@tabler/core",
"version": "1.2.0",
"version": "1.4.0",
"description": "Premium and Open Source dashboard template with responsive and high quality UI.",
"homepage": "https://tabler.io",
"scripts": {
"dev": "pnpm run watch",
"dev": "pnpm run clean && pnpm run copy && pnpm run watch",
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
"clean": "shx rm -rf dist demo",
"css": "pnpm run css-compile && pnpm run css-prefix && pnpm run css-rtl && pnpm run css-minify && pnpm run css-banner",
"css-compile": "sass scss/:dist/css/ --no-source-map --load-path=node_modules",
"css-compile": "sass --no-source-map --load-path=node_modules --style expanded scss/:dist/css/",
"css-banner": "node .build/add-banner.mjs",
"css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
"css-rtl": "cross-env NODE_ENV=RTL postcss --config .build/postcss.config.mjs --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
@@ -26,8 +26,9 @@
"js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler.esm.js.map,includeSources,url=tabler.esm.min.js.map\" --output dist/js/tabler.esm.min.js dist/js/tabler.esm.js",
"js-minify-theme": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.js.map,includeSources,url=tabler-theme.min.js.map\" --output dist/js/tabler-theme.min.js dist/js/tabler-theme.js",
"js-minify-theme-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.esm.js.map,includeSources,url=tabler-theme.esm.min.js.map\" --output dist/js/tabler-theme.esm.min.js dist/js/tabler-theme.esm.js",
"copy": "pnpm run copy-img",
"copy": "pnpm run copy-img && pnpm run copy-libs",
"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-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\"",
@@ -66,7 +67,8 @@
"dist/**/*",
"js/**/*.{js,map}",
"img/**/*.{svg}",
"scss/**/*.scss"
"scss/**/*.scss",
"libs.json"
],
"style": "dist/css/tabler.css",
"sass": "scss/tabler.scss",
@@ -144,7 +146,31 @@
},
"dependencies": {
"@popperjs/core": "^2.11.8",
"bootstrap": "5.3.5"
"bootstrap": "5.3.7"
},
"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.2",
"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": {
"doc": "docs"

View File

@@ -14,7 +14,6 @@
@import "bootstrap/scss/nav";
@import "bootstrap/scss/navbar";
@import "bootstrap/scss/card";
@import "bootstrap/scss/breadcrumb";
@import "bootstrap/scss/pagination";
@import "bootstrap/scss/progress";
@import "bootstrap/scss/list-group";

View File

@@ -76,6 +76,7 @@
@import "utils/opacity";
@import "utils/shadow";
@import "utils/text";
@import "utils/hover";
@import "debug";

View File

@@ -42,9 +42,9 @@
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
}
/** Social colors */
@each $name, $color in $social-colors {
--#{$prefix}#{$name}: #{$color};
/** Gray colors */
@each $name, $color in $gray-colors {
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color, white) > $min-contrast-ratio, var(--#{$prefix}white), var(--#{$prefix}body-color))};
}
/** Spacers */

View File

@@ -26,7 +26,7 @@ $font-icons: () !default;
$font-family-sans-serif: unquote("#{if($font-local, "#{$font-local}, ", ' ')}#{if($font-google, "#{$font-google}, ", ' ')}") 'Inter Var', Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif !default;
$font-family-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-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
$icon-stroke-width: 1.5 !default;
@@ -52,9 +52,9 @@ $line-height-700: 3rem !default;
$font-size-base: 0.875rem !default;
$spacing-wide: .04em !default;
$spacing-wide: 0.04em !default;
$spacing-normal: 0 !default;
$spacing-tight: -.04em !default;
$spacing-tight: -0.04em !default;
$body-letter-spacing: 0 !default;
@@ -68,12 +68,12 @@ $headings-font-weight: var(--#{$prefix}font-weight-bold) !default;
$headings-margin-bottom: var(--#{$prefix}spacer) !default;
$font-weights: (
'light': $font-weight-light,
'normal': $font-weight-normal,
'medium': $font-weight-medium,
'bold': $font-weight-bold,
'black': $font-weight-black,
'headings': $headings-font-weight,
"light": $font-weight-light,
"normal": $font-weight-normal,
"medium": $font-weight-medium,
"bold": $font-weight-bold,
"black": $font-weight-black,
"headings": $headings-font-weight,
) !default;
$line-height-base: divide(1.25rem, $font-size-base) !default;
@@ -99,8 +99,8 @@ $h5-line-height: 1rem !default;
$h6-font-size: 0.625rem !default;
$h6-line-height: 1rem !default;
$font-size-reative-xs: .71428571em !default;
$font-size-reative-sm: .85714285em !default;
$font-size-reative-xs: 0.71428571em !default;
$font-size-reative-sm: 0.85714285em !default;
$font-size-reative-md: 1em !default;
$font-sizes: (
@@ -146,7 +146,7 @@ $border-light-opacity: 0.08 !default;
$border-dark-opacity: 0.24 !default;
$border-active-opacity: 0.58 !default;
$gray-50: #f9fafb !default;
$gray-50: #f9fafb !default;
$gray-100: #f3f4f6 !default;
$gray-200: #e5e7eb !default;
$gray-300: #d1d5db !default;
@@ -210,7 +210,7 @@ $active-border-color: var(--#{$prefix}primary) !default;
$hover-bg: rgba(var(--#{$prefix}secondary-rgb), 0.08) !default;
$disabled-bg: var(--#{$prefix}bg-surface-secondary) !default;
$disabled-color: color-transparent(var(--#{$prefix}body-color), .4) !default;
$disabled-color: color-transparent(var(--#{$prefix}body-color), 0.4) !default;
$primary: $blue !default;
$secondary: $text-secondary !default;
@@ -279,6 +279,7 @@ $gray-colors: (
gray-700: $gray-700,
gray-800: $gray-800,
gray-900: $gray-900,
gray-950: $gray-950,
) !default;
$theme-colors: map-merge($theme-colors, map-merge($extra-colors, ()));
@@ -320,10 +321,10 @@ $border-values: (
$icon-color: var(--#{$prefix}gray-400) !default;
// Code
$code-color: var(--#{$prefix}primary) !default;
$code-color: light-dark(var(--#{$prefix}gray-600), var(--#{$prefix}gray-400)) !default;
$code-bg: light-dark(var(--#{$prefix}gray-100), var(--#{$prefix}gray-900)) !default;
$code-font-size: $font-size-reative-sm !default;
$code-line-height: 1.25rem !default;
$code-bg: var(--#{$prefix}primary-lt) !default;
$pre-padding: 1rem !default;
$pre-bg: var(--#{$prefix}bg-surface-dark) !default;
@@ -340,7 +341,7 @@ $kbd-border-radius: var(--#{$prefix}border-radius) !default;
// Avatars
$avatar-size: 2.5rem !default;
$avatar-status-size: .75rem !default;
$avatar-status-size: 0.75rem !default;
$avatar-font-size: 1rem !default;
$avatar-icon-size: 1.5rem !default;
$avatar-brand-size: 1.25rem !default;
@@ -348,52 +349,52 @@ $avatar-bg: var(--#{$prefix}bg-surface-secondary) !default;
$avatar-sizes: (
"xxs": (
size: 1rem,
font-size: .5rem,
icon-size: .5rem,
status-size: .25rem,
brand-size: .5rem
font-size: 0.5rem,
icon-size: 0.5rem,
status-size: 0.25rem,
brand-size: 0.5rem,
),
"xs": (
size: 1.25rem,
font-size: $h6-font-size,
icon-size: .75rem,
status-size: .375rem,
brand-size: .75rem
icon-size: 0.75rem,
status-size: 0.375rem,
brand-size: 0.75rem,
),
"sm": (
size: 2rem,
font-size: $h5-font-size,
icon-size: 1.5rem,
status-size: .5rem,
brand-size: 1rem
status-size: 0.5rem,
brand-size: 1rem,
),
"md": (
size: 2.5rem,
font-size: $h4-font-size,
icon-size: 1.5rem,
status-size: .75rem,
brand-size: 1.25rem
status-size: 0.75rem,
brand-size: 1.25rem,
),
"lg": (
size: 3rem,
font-size: $h2-font-size,
icon-size: 2rem,
status-size: .75rem,
brand-size: 1.25rem
status-size: 0.75rem,
brand-size: 1.25rem,
),
"xl": (
size: 5rem,
font-size: 2rem,
icon-size: 3rem,
status-size: 1rem,
brand-size: 1.25rem
brand-size: 1.25rem,
),
"2xl": (
size: 7rem,
font-size: 3rem,
icon-size: 5rem,
status-size: 1rem,
brand-size: 2rem
brand-size: 2rem,
),
) !default;
$avatar-border-radius: var(--#{$prefix}border-radius) !default;
@@ -585,41 +586,71 @@ $badge-color: var(--#{$prefix}secondary) !default;
$badge-bg-color: var(--#{$prefix}bg-surface-secondary) !default;
// Buttons
$input-btn-line-height: $line-height-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-border-width: var(--#{$prefix}border-width) !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-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-line-height-sm: divide(1rem, $input-btn-font-size-sm) !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-y-lg: 0.75rem - 0.0625rem !default;
$input-btn-line-height-lg: 2rem !default;
$input-btn-icon-size-lg: 2rem !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-icon-size: $icon-size !default;
$input-btn-padding-y-lg: 0.6875rem !default;
$input-btn-padding-x-lg: 1.5rem !default;
$input-btn-line-height-lg: 1.5rem !default;
$input-btn-font-size-lg: $h3-font-size !default;
$input-btn-icon-size-lg: 1.5rem !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
$input-height: null !default;
$input-height-sm: null !default;
$input-height-lg: null !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-focus-color: var(--#{$prefix}body-color) !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
$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
$btn-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;
$btn-disabled-opacity: .4 !default;
$btn-padding-x: 1rem !default;
$btn-disabled-opacity: 0.4 !default;
$btn-font-weight: var(--#{$prefix}font-weight-medium) !default;
$btn-border-color: var(--#{$prefix}border-color) !default;
$btn-border-radius: var(--#{$prefix}border-radius) !default;
@@ -627,8 +658,8 @@ $btn-box-shadow: var(--#{$prefix}shadow-input) !default;
// Cards
$card-title-spacer-y: 1.25rem !default;
$card-box-shadow: var(--#{$prefix}box-shadow-card) !default;
$card-hover-box-shadow: var(--#{$prefix}box-shadow-card-hover) !default;
$card-box-shadow: var(--#{$prefix}shadow-card) !default;
$card-hover-box-shadow: var(--#{$prefix}shadow-card-hover) !default;
$card-bg: var(--#{$prefix}bg-surface) !default;
$card-bg-hover: $white !default;
@@ -810,7 +841,7 @@ $navbar-toggler-focus-width: 0 !default;
$navbar-overlap-height: 9rem !default;
$navbar-nav-link-padding-x: $nav-link-padding-x !default;
$navbar-nav-link-hover-bg: rgba(0, 0, 0, .04) !default;
$navbar-nav-link-hover-bg: rgba(0, 0, 0, 0.04) !default;
$navbar-active-border-color: var(--#{$prefix}primary) !default;
@@ -827,9 +858,9 @@ $popover-bg: var(--#{$prefix}bg-surface) !default;
$popover-header-bg: transparent !default;
$popover-border-color: var(--#{$prefix}border-color) !default;
$popover-body-color: inherit !default;
$popover-body-padding-x: .5rem !default;
$popover-body-padding-y: .5rem !default;
$popover-box-shadow: var(--#{$prefix}box-shadow-lg) !default;
$popover-body-padding-x: 0.5rem !default;
$popover-body-padding-y: 0.5rem !default;
$popover-box-shadow: var(--#{$prefix}shadow-lg) !default;
// Footer
$footer-padding-y: 2rem !default;
@@ -838,13 +869,17 @@ $footer-border-color: var(--#{$prefix}border-color) !default;
$footer-color: var(--#{$prefix}gray-500) !default;
// Pagination
$pagination-border-width: 0 !default;
$pagination-padding-y: 0.25rem !default;
$pagination-border-width: 1px !default;
$pagination-border-color: transparent !default;
$pagination-padding-y: calc(0.25rem + 1px) !default;
$pagination-padding-x: 0.25rem !default;
$pagination-color: var(--#{$prefix}gray-500) !default;
$pagination-color: var(--#{$prefix}body-color) !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-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-border-color: var(--#{$prefix}primary) !default;
@@ -891,7 +926,7 @@ $table-sort-desc-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org
// Toasts
$toast-border-color: var(--#{$prefix}border-color) !default;
$toast-header-color: var(--#{$prefix}gray-500) !default;
$toast-background-color: var(--#{$prefix}bg-surface) !default;
$toast-background-color: var(--#{$prefix}bg-surface) !default;
// Tracking
$tracking-height: 1.5rem !default;

View File

@@ -1,39 +1,50 @@
@keyframes pulse {
from {
opacity: 1;
transform: scale3d(.8, .8, .8)
0% {
transform: scale(1);
}
50% {
transform: scale3d(1, 1, 1);
opacity: 1
14% {
transform: scale(1.25);
}
to {
opacity: 1;
transform: scale3d(.8, .8, .8)
28% {
transform: scale(1);
}
42% {
transform: scale(1.25);
}
70% {
transform: scale(1);
}
}
@keyframes tada {
0% {
transform: scale3d(1, 1, 1)
transform: scale3d(1, 1, 1);
}
10%, 5% {
transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -5deg)
10%,
5% {
transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -5deg);
}
15%, 25%, 35%, 45% {
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg)
15%,
25%,
35%,
45% {
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg);
}
20%, 30%, 40% {
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg)
20%,
30%,
40% {
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg);
}
50% {
transform: scale3d(1, 1, 1)
transform: scale3d(1, 1, 1);
}
}
@@ -61,3 +72,27 @@
}
}
@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);
}
}

View File

@@ -7,7 +7,7 @@ body {
position: relative;
min-height: 100%;
height: 100%;
padding: 0 !important;
padding: 0;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;

View File

@@ -61,9 +61,6 @@
--#{$prefix}btn-color: #{$darken-dark};
--#{$prefix}code-color: var(--#{$prefix}body-color);
--#{$prefix}code-bg: #{$border-dark-color-dark};
.navbar-brand-autodark {
.navbar-brand-image {
@include autodark-image;

View File

@@ -160,7 +160,8 @@ Navbar
&.navbar-vertical {
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);
}
}
@@ -172,7 +173,8 @@ Navbar
}
}
&.navbar-vertical.navbar-right {
&.navbar-vertical.navbar-right,
&.navbar-vertical.navbar-end {
~ .navbar,
~ .page-wrapper {
margin-left: 0;
@@ -219,14 +221,14 @@ Navbar toggler
width: 1.25em;
background: currentColor;
border-radius: 10px;
position: relative;
@include transition(
top $navbar-toggler-animation-time $navbar-toggler-animation-time,
bottom $navbar-toggler-animation-time $navbar-toggler-animation-time,
transform $navbar-toggler-animation-time,
opacity 0s $navbar-toggler-animation-time
);
position: relative;
&:before,
&:after {
content: "";
@@ -318,11 +320,12 @@ Navbar vertical
bottom: 0;
z-index: $zindex-fixed;
align-items: flex-start;
@include transition(transform $transition-time);
overflow-y: scroll;
padding: 0;
@include transition(transform $transition-time);
&.navbar-right {
&.navbar-right,
&.navbar-end {
left: auto;
right: 0;
}
@@ -364,7 +367,8 @@ Navbar vertical
}
}
&.navbar-right ~ .page {
&.navbar-right ~ .page,
&.navbar-end ~ .page {
padding-left: 0;
padding-right: $sidebar-width;
}

View File

@@ -13,4 +13,4 @@
@import "vendor/coloris";
@import "vendor/typed";
@import "vendor/turbo";
@import "vendor/fullcalendar";

View File

@@ -1,7 +1,23 @@
.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-disabled-color: #{$breadcrumb-disabled-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;
margin: 0;
background: transparent;
@@ -21,6 +37,7 @@
.breadcrumb-item {
&.active {
color: var(--#{$prefix}breadcrumb-item-active-color);
font-weight: var(--#{$prefix}breadcrumb-item-active-font-weight);
a {
@@ -41,6 +58,20 @@
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 {

View File

@@ -5,12 +5,12 @@
//
.btn {
--#{$prefix}btn-icon-size: #{$input-btn-icon-size};
--#{$prefix}btn-icon-color: inherit;
--#{$prefix}btn-bg: var(--#{$prefix}bg-surface);
--#{$prefix}btn-color: var(--#{$prefix}body-color);
--#{$prefix}btn-border-color: #{$btn-border-color};
--#{$prefix}btn-hover-bg: var(--#{$prefix}btn-bg);
--#{$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-bg: #{$active-bg};
--#{$prefix}btn-active-border-color: #{$active-border-color};
@@ -21,6 +21,9 @@
white-space: nowrap;
box-shadow: var(--#{$prefix}btn-box-shadow);
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 {
width: var(--#{$prefix}btn-icon-size);
@@ -29,7 +32,7 @@
font-size: var(--#{$prefix}btn-icon-size);
margin: 0 calc(var(--#{$prefix}btn-padding-x) / 2) 0 calc(var(--#{$prefix}btn-padding-x) / -4);
vertical-align: bottom;
color: inherit;
color: var(--#{$prefix}btn-icon-color);
}
.avatar {
@@ -38,7 +41,8 @@
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);
}
@@ -74,7 +78,7 @@
//
@each $color, $value in map-merge($theme-colors, $social-colors) {
.btn-#{$color} {
@if $color == 'dark' {
@if $color == "dark" {
--#{$prefix}btn-border-color: var(--#{$prefix}dark-mode-border-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);
@@ -95,7 +99,8 @@
--#{$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-bg: transparent;
--#{$prefix}btn-border-color: var(--#{$prefix}#{$color});
@@ -104,11 +109,13 @@
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color});
--#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
--#{$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-border-color: var(--#{$prefix}#{$color});
}
.btn-ghost-#{$color} {
.btn-ghost-#{$color},
.btn-ghost.btn-#{$color} {
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
--#{$prefix}btn-bg: transparent;
--#{$prefix}btn-border-color: transparent;
@@ -130,16 +137,27 @@
//
// Button sizes
//
.btn-sm, .btn-group-sm > .btn {
.btn-sm,
.btn-group-sm > .btn {
--#{$prefix}btn-line-height: #{$input-btn-line-height-sm};
--#{$prefix}btn-icon-size: #{$input-btn-icon-size-sm};
}
.btn-lg, .btn-group-lg > .btn {
.btn-lg,
.btn-group-lg > .btn {
--#{$prefix}btn-line-height: #{$input-btn-line-height-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
//
@@ -160,9 +178,8 @@
//
// Icon button
//
.btn-icon {
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));
.btn-icon,
.btn-action {
padding-left: 0;
padding-right: 0;
@@ -215,7 +232,7 @@
height: var(--#{$prefix}btn-icon-size);
left: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
top: calc(50% - var(--#{$prefix}btn-icon-size) / 2);
animation: spinner-border .75s linear infinite;
animation: spinner-border 0.75s linear infinite;
}
}
@@ -224,14 +241,7 @@
//
.btn-action {
--#{$prefix}border-color: transparent;
padding: 0;
border: 0;
color: var(--#{$prefix}secondary);
display: inline-flex;
width: 2rem;
height: 2rem;
align-items: center;
justify-content: center;
border-radius: var(--#{$prefix}border-radius);
background: transparent;
box-shadow: none;
@@ -249,6 +259,7 @@
&.show {
color: var(--#{$prefix}body-color);
background: var(--#{$prefix}active-bg);
border-color: transparent;
}
&.show {
@@ -258,4 +269,65 @@
.btn-actions {
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;
}
}
}
}

View File

@@ -111,11 +111,11 @@
justify-content: center;
padding: $card-spacer-y $card-spacer-x;
text-align: center;
@include transition(background $transition-time);
border-top: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
flex: 1;
color: inherit;
font-weight: var(--#{$prefix}font-weight-medium);
@include transition(background $transition-time);
&:hover {
text-decoration: none;
@@ -215,11 +215,13 @@ Stacked card
}
// Card rotate
.card-rotate-left {
.card-rotate-left,
.card-rotate-start {
transform: rotate(-1.5deg);
}
.card-rotate-right {
.card-rotate-right,
.card-rotate-end {
transform: rotate(1.5deg);
}

View File

@@ -96,7 +96,7 @@
.dropend {
> .dropdown-menu {
margin-top: subtract(-$dropdown-padding-y, 1px);
margin-top: subtract(calc(-1 * $dropdown-padding-y), 1px);
margin-left: -.25rem;
}

View File

@@ -17,8 +17,8 @@
@each $name, $value in (0: 0, sm: .375rem, md: 1.5rem, lg: 3rem) {
.row-#{$name} {
margin-right: (-$value);
margin-left: -($value);
margin-right: calc(-1 * $value);
margin-left: calc(-1 * $value);
> .col,
> [class*="col-"] {

View File

@@ -30,14 +30,6 @@
border-left-width: $border-width-wide;
}
.list-group-item {
&:active,
&:focus,
&:hover {
background-color: $dropdown-link-hover-bg;
}
}
.list-group-item {
&.disabled,
&:disabled {
@@ -58,6 +50,14 @@
}
.list-group-hoverable {
.list-group-item {
&:active,
&:focus,
&:hover {
background-color: $dropdown-link-hover-bg;
}
}
.list-group-item-actions {
opacity: 0;
@include transition(opacity $transition-time);

View File

@@ -2,7 +2,6 @@
Markdown
*/
.markdown {
font-size: $font-size-200;
line-height: $line-height-xl;
> :first-child {
@@ -48,7 +47,7 @@ Markdown
border: 1px solid var(--#{$prefix}border-color);
}
> pre {
pre {
max-height: 20rem;
}
}

View File

@@ -22,7 +22,7 @@
}
&.nav-pills {
margin: 0 (-$nav-link-padding-x);
margin: 0 calc(-1 * $nav-link-padding-x);
}
}
@@ -44,6 +44,10 @@
margin: 0 0 calc(-1 * #{$nav-bordered-border-width});
border: 0;
border-bottom: $nav-bordered-link-active-border-width var(--#{$prefix}border-style) transparent;
&:hover {
background-color: transparent;
}
}
.nav-link.active,
@@ -61,8 +65,8 @@
.nav-link {
display: flex;
@include transition(color $transition-time, background-color $transition-time);
align-items: center;
@include transition(color $transition-time, background-color $transition-time);
&:hover,
&:focus {

View File

@@ -1,25 +1,28 @@
.pagination {
margin: 0;
--#{$prefix}pagination-gap: .25rem;
user-select: none;
gap: var(--#{$prefix}pagination-gap);
line-height: var(--#{$prefix}body-line-height);
}
.page-link {
min-width: 1.75rem;
border-radius: var(--#{$prefix}border-radius);
min-width: 2rem;
border-radius: var(--#{$prefix}pagination-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 {
text-align: center;
&:not(.active) {
.page-link {
&:hover {
background: transparent;
}
}
}
&.page-prev,
&.page-next {
flex: 0 0 50%;
@@ -56,3 +59,13 @@
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);
}

View File

@@ -7,7 +7,3 @@
margin-left: .25rem;
}
}
.star {
}

View File

@@ -122,7 +122,9 @@
// Slide variant
.switch-icon-slide-up,
.switch-icon-slide-left,
.switch-icon-slide-start,
.switch-icon-slide-right,
.switch-icon-slide-end,
.switch-icon-slide-down {
overflow: hidden;
@@ -150,7 +152,8 @@
}
}
.switch-icon-slide-left {
.switch-icon-slide-left,
.switch-icon-slide-start {
.switch-icon-a {
transform: translateX(0);
}
@@ -170,7 +173,8 @@
}
}
.switch-icon-slide-right {
.switch-icon-slide-right,
.switch-icon-slide-end {
.switch-icon-a {
transform: translateX(0);
}

View File

@@ -112,10 +112,9 @@ Table sort
display: block;
width: 100%;
text-align: inherit;
@include transition(color $transition-time);
margin: (-$table-th-padding-y) (-$table-th-padding-x);
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);
&:hover,
&.asc,

View File

@@ -216,7 +216,7 @@ Mentions
*/
.mention {
display: inline-block;
box-shadow: var(--#{$prefix}box-shadow-border);
box-shadow: var(--#{$prefix}shadow-border);
border-radius: var(--#{$prefix}border-radius-pill);
line-height: calc(16em / 12);
font-size: calc(12em / 14);
@@ -245,7 +245,7 @@ Mentions
margin: calc(-2em / 12) calc(4em / 12) 0 calc(-4em / 12);
display: inline-flex;
background: no-repeat center center/cover;
box-shadow: var(--#{$prefix}box-shadow-border);
box-shadow: var(--#{$prefix}shadow-border);
vertical-align: middle;
text-align: center;
}

View File

@@ -64,7 +64,7 @@
}
.text-#{"" + $color}-fg {
color: $value !important;
color: var(--#{$prefix}#{$color}-fg) !important;
}
}
@@ -75,7 +75,7 @@
}
.text-#{"" + $color}-fg {
color: $value !important;
color: var(--#{$prefix}#{$color}-fg) !important;
}
}

View File

@@ -0,0 +1,47 @@
%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);
}
}

View File

@@ -45,4 +45,8 @@
.apexcharts-svg,
.apexcharts-canvas {
border-radius: inherit;
}
.apexcharts-pie-area {
stroke: var(--#{$prefix}bg-surface) !important;
}

55
core/scss/vendor/_fullcalendar.scss vendored Normal file
View File

@@ -0,0 +1,55 @@
: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;
}

View File

@@ -33,8 +33,8 @@
.noUi-horizontal & {
width: $form-range-thumb-width;
height: $form-range-thumb-height;
top: (-$form-range-thumb-height * .5);
right: (-$form-range-thumb-height * .5);
top: calc($form-range-thumb-height * -.5);
right: calc($form-range-thumb-height * -.5);
margin: 1px 1px 0 0;
}

View File

@@ -1,34 +0,0 @@
.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;
}

View File

@@ -21,7 +21,19 @@
}
.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 {

View File

@@ -1,34 +1,46 @@
# @tabler/docs
# Tabler Documentation Changelog
## 1.0.1
## 1.4.0
### Patch Changes
- Updated dependencies [c59bc9d]
- Updated dependencies [f9e4da2]
- Updated dependencies [aea3b0a]
- Updated dependencies [92a3afe]
- Updated dependencies [3fc7b84]
- Updated dependencies [199f39a]
- Updated dependencies [2f8a372]
- Updated dependencies [9fceadd]
- Updated dependencies [44250db]
- Updated dependencies [be1f3d1]
- Updated dependencies [c20d076]
- Updated dependencies [042e50f]
- Updated dependencies [473fa38]
- Updated dependencies [8646192]
- Updated dependencies [922bb03]
- Updated dependencies [44250db]
- Updated dependencies [9bbcb99]
- Updated dependencies [b17b488]
- Updated dependencies [ddcd3a7]
- Updated dependencies [e3d68d6]
- Updated dependencies [215eaa4]
- Updated dependencies [4846828]
- Updated dependencies [6b6617a]
- Updated dependencies [94bea00]
- Updated dependencies [e14e492]
- Updated dependencies [6d6d1bd]
- Updated dependencies [6c566cf]
- @tabler/core@1.2.0
- 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

View File

@@ -44,8 +44,8 @@ The **Tabler Emails** package is organized into a clear and efficient folder str
### 1. Email Templates: `emails/`
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](/img/emails/compiled-html) section.
* Source HTML files for light and dark themes. Find more information in the [Source HTML](/img/emails/source-html) section.
* Compiled HTML files for light and dark themes. Read more about their usage in the [Compiled HTML](/emails/introduction/compiled-html) section.
* Source HTML files for light and dark themes. Find more information in the [Source HTML](/emails/introduction/source-html) section.
* Screenshot images for desktop and mobile views.
* Assets folder with images used in the email template and the CSS file with styles.

View File

@@ -10,50 +10,56 @@ bootstrapLink: components/badge/
The default badges are square and come in the basic set of colors.
{% capture html -%}
<span class="badge bg-blue-lt">Blue</span>
<span class="badge bg-azure-lt">Azure</span>
<span class="badge bg-indigo-lt">Indigo</span>
<span class="badge bg-purple-lt">Purple</span>
<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>
<div class="badges-list">
{% for color in site.colors -%}
{% include "ui/badge.html" color=color[0] text=color[1].title %}
{%- endfor -%}
</div>
{%- endcapture %}
{% include "docs/example.html" html=html centered %}
## 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 -%}
<h1>Example heading <span class="badge">New</span></h1>
<h2>Example heading <span class="badge">New</span></h2>
<h3>Example heading <span class="badge">New</span></h3>
<h4>Example heading <span class="badge">New</span></h4>
<h5>Example heading <span class="badge">New</span></h5>
<h6>Example heading <span class="badge">New</span></h6>
<h1>
Example heading
{% include "ui/badge.html" text="New" -%}
</h1>
<h2>
Example heading
{% 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 %}
{% include "docs/example.html" html=html %}
## Outline badges
## Light versions of 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 -%}
<span class="badge badge-outline text-blue">blue</span>
<span class="badge badge-outline text-azure">azure</span>
<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>
{%- for color in site.colors -%}
{% include "ui/badge.html" color=color[0] text=color[1].title light %}
{%- endfor -%}
{%- endcapture %}
{% include "docs/example.html" html=html centered %}
@@ -62,18 +68,44 @@ The default badges are square and come in the basic set of colors.
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 -%}
<span class="badge badge-pill bg-blue-lt">1</span>
<span class="badge badge-pill bg-azure-lt">2</span>
<span class="badge badge-pill bg-indigo-lt">3</span>
<span class="badge badge-pill bg-purple-lt">4</span>
<span class="badge badge-pill bg-pink-lt">5</span>
<span class="badge badge-pill bg-red-lt">6</span>
<span class="badge badge-pill bg-orange-lt">7</span>
<span class="badge badge-pill bg-yellow-lt">8</span>
<span class="badge badge-pill bg-lime-lt">9</span>
<span class="badge badge-pill bg-green-lt">10</span>
<span class="badge badge-pill bg-teal-lt">11</span>
<span class="badge badge-pill bg-cyan-lt">12</span>
{%- for color in site.colors -%}
{% include "ui/badge.html" color=color[0] text=color[1].title class="badge-pill" %}
{%- endfor -%}
{%- endcapture %}
{% include "docs/example.html" html=html centered %}
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.
{% capture html -%}
{%- for color in site.colors -%}
{% include "ui/badge.html" color=color[0] text=forloop.index class="badge-pill" %}
{%- endfor -%}
{%- 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 %}
{% include "docs/example.html" html=html centered %}
@@ -99,14 +131,55 @@ Place the badge within an `<a>` element if you want it to perform the function o
## Button with badge
Badges can be used as part of links or buttons to provide, for example, a counter.
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.
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 -%}
<button type="button" class="btn">
Notifications <span class="badge bg-red-lt ms-2">4</span>
Notifications {% include "ui/badge.html" text="2" color="red" class="ms-2" -%}
</button>
<button type="button" class="btn">
Notifications <span class="badge bg-green-lt ms-2">4</span>
Inbox {% include "ui/badge.html" text="4" color="red" class="badge-notification" -%}
</button>
<button type="button" class="btn">
Profile {% include "ui/badge.html" text="" color="red" class="badge-notification" -%}
</button>
{%- endcapture %}
{% 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.

View File

@@ -12,19 +12,9 @@ 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.
{% capture html -%}
<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>
{% include "ui/breadcrumb.html" pages="Home,Library,Data" %}
{%- endcapture %}
{% include "docs/example.html" html=html vertical separated %}
{% include "docs/example.html" html=html centered %}
## Different separators
@@ -33,60 +23,18 @@ You can use different breadcrumb styles to match your website or app design. Cho
This example shows how to use different breadcrumb styles.
{% capture html -%}
<ol class="breadcrumb breadcrumb-dots">
<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-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>
{% include "ui/breadcrumb.html" pages="Home,Library,Data" separator="dots" %}
{% include "ui/breadcrumb.html" pages="Home,Library,Data" separator="arrows" %}
{% include "ui/breadcrumb.html" pages="Home,Library,Data" separator="bullets" %}
{%- endcapture %}
{% include "docs/example.html" html=html vertical separated %}
{% include "docs/example.html" html=html vertical separated centered %}
## With icon
You can use icons in breadcrumbs to make them more visually appealing. The example below demonstrates how to use icons in breadcrumbs.
{% capture html -%}
<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>
{% include "ui/breadcrumb.html" pages="Home,Library,Data" home-icon %}
{%- endcapture %}
{% include "docs/example.html" html=html vertical separated %}
@@ -95,19 +43,7 @@ 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.
{% capture html -%}
<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>
{% include "ui/breadcrumb.html" pages="Home,Library,Data" class="breadcrumb-muted" %}
{%- endcapture %}
{% include "docs/example.html" html=html %}
@@ -119,24 +55,9 @@ You can use breadcrumbs in headers to show the current page location and provide
<div class="page-header">
<div class="row align-items-center mw-100">
<div class="col">
<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>
{% include "ui/breadcrumb.html" pages="Home,Library,Articles" -%}
<h2 class="page-title">
<span class="text-truncate"
>Knights of Ni, we are but simple travelers who seek the enchanter who lives beyond these
woods.</span
>
<span class="text-truncate">How to Build a Modern Dashboard with Tabler</span>
</h2>
</div>
<div class="col-auto">
@@ -151,5 +72,5 @@ You can use breadcrumbs in headers to show the current page location and provide
</div>
</div>
{%- endcapture %}
{% include "docs/example.html" html=html %}
{% include "docs/example.html" html=html centered vertical %}

View File

@@ -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="reset" class="btn" value="Reset" />
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## Default button
@@ -25,7 +25,7 @@ The standard button creates a white background and subtle hover animation. It's
{% capture html -%}
<a href="#" class="btn" role="button">Link</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## 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-light">Light</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated centered -%}
{%- include "docs/example.html" html=html separated centered %}
## 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-light disabled">Light</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated centered -%}
{%- include "docs/example.html" html=html separated centered %}
## 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-cyan">Cyan</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated centered -%}
{%- include "docs/example.html" html=html separated centered %}
## 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>
</div>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated vertical -%}
{%- include "docs/example.html" html=html separated vertical %}
## Square buttons
@@ -104,7 +104,7 @@ Use the `.btn-square` class to remove the border radius, if you want the corners
{% capture html -%}
<a href="#" class="btn btn-square">Square button</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## 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 -%}
<a href="#" class="btn btn-pill">Pill button</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## 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-light">Light</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## 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-lg">Large button</button>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
{% capture html -%}
<button type="button" class="btn btn-primary btn-sm">Small button</button>
<button type="button" class="btn btn-sm">Small button</button>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## Buttons with icons
@@ -179,7 +179,7 @@ See all icons at [tabler.io/icons]({{ site.icons.link }}).
Comment
</button>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
## Social buttons
@@ -243,7 +243,7 @@ You can use the icons of popular social networking sites, which users are famili
Tabler
</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated centered hide-code -%}
{%- include "docs/example.html" html=html separated centered hide-code %}
```html
<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" -%}
</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated vertical hide-code -%}
{%- include "docs/example.html" html=html separated vertical hide-code %}
```html
<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" -%}
</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html separated centered hide-code -%}
{%- include "docs/example.html" html=html separated centered hide-code %}
```html
<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>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered hide-code height="260px" -%}
{%- include "docs/example.html" html=html centered hide-code height="260px" %}
```html
<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
</a>
{%- endcapture -%}
{%- include "docs/example.html" html=html centered -%}
{%- include "docs/example.html" html=html centered %}
{% capture html -%}
<a href="#" class="btn btn-primary">
@@ -407,7 +407,17 @@ Add the `.btn-loading` class to show a button's loading state, which can be usef
Button
</a>
{%- 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
@@ -420,7 +430,7 @@ Create a list of buttons using the `.btn-list` container to display different ac
<a href="#" class="btn btn-danger">Cancel</a>
</div>
{%- 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.
@@ -447,7 +457,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>
</div>
{%- 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.
@@ -457,7 +467,7 @@ Use the `.text-center` or the `.text-end` modifiers to change the buttons' align
<a href="#" class="btn btn-primary">Save changes</a>
</div>
{%- endcapture -%}
{%- include "docs/example.html" html=html -%}
{%- include "docs/example.html" html=html %}
{% capture html -%}
<div class="btn-list justify-content-end">
@@ -465,7 +475,7 @@ Use the `.text-center` or the `.text-end` modifiers to change the buttons' align
<a href="#" class="btn btn-primary">Save changes</a>
</div>
{%- endcapture -%}
{%- include "docs/example.html" html=html -%}
{%- include "docs/example.html" html=html %}
{% capture html -%}
<div class="btn-list">
@@ -474,7 +484,27 @@ Use the `.text-center` or the `.text-end` modifiers to change the buttons' align
<a href="#" class="btn btn-primary">Save changes</a>
</div>
{%- 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
@@ -507,4 +537,143 @@ Use buttons with avatars to simplify the process of interaction and make your de
Avatar
</a>
{%- 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 %}

View File

@@ -2,6 +2,7 @@
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.
description: Drag-and-drop file upload tool.
docs-libs: dropzone
---
## Basic usage

View File

@@ -5,7 +5,7 @@ banner: 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. You can find the Tabler Icons library [here](https://tabler-icons.io/).
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.
## Base icon

View File

@@ -0,0 +1,59 @@
---
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 %}

View File

@@ -175,7 +175,7 @@ You can also add a fancy animation to add variety to your button. See demo below
</svg>
</span>
</button>
<button class="switch-icon switch-icon-slide-right" data-bs-toggle="switch-icon">
<button class="switch-icon switch-icon-slide-end" data-bs-toggle="switch-icon">
<span class="switch-icon-a text-secondary">
<svg
xmlns="http://www.w3.org/2000/svg"

View File

@@ -1,47 +0,0 @@
---
title: TinyMCE
docs-libs: tinymce
summary: The WYSIWYG editor that is flexible, customizable, and designed with the user in mind. TinyMCE can handle any challenge, from the most simple implementation through to the most complex use case.
description: Flexible WYSIWYG editor for content.
---
[TinyMCE](https://www.tiny.cloud/docs/) documentation.
## Default text editor
Initialize TinyMCE 6 on any element (or elements) on the web page by passing an object containing a selector value to `tinymce.init()`. The selector value can be any valid CSS selector.
{% capture html -%}
<form method="post">
<textarea id="tinymce-default">Hello, <b>Tabler</b>!</textarea>
</form>
<script src="{{ cdnUrl }}/dist/libs/tinymce/tinymce.min.js" defer></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
let options = {
selector: "#tinymce-default",
height: 300,
menubar: false,
statusbar: false,
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table paste code help wordcount",
],
toolbar:
"undo redo | formatselect | " +
"bold italic backcolor | alignleft aligncenter " +
"alignright alignjustify | bullist numlist outdent indent | " +
"removeformat",
content_style:
"body { font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; font-size: 14px; -webkit-font-smoothing: antialiased; }",
};
if (localStorage.getItem("tablerTheme") === "dark") {
options.skin = "oxide-dark";
options.content_css = "dark";
}
tinyMCE.init(options);
});
</script>
{%- endcapture %}
{% include "docs/example.html" html=html %}

View File

@@ -1,6 +1,6 @@
---
title: Vector Maps
docs-libs: [jsvectormap, jsvectormap-world, jsvectormap-world-merc]
docs-libs: [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.
---
@@ -14,55 +14,22 @@ 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>
```
## Sample demo
## Default map
Integrating the vector map into your website is straightforward. Below is a sample implementation for a world map:
```html
<div id="map-world" class="w-100 h-100"></div>
<script>
document.addEventListener("DOMContentLoaded", function () {
const map = new jsVectorMap({
selector: "#map-world",
map: "world",
});
});
</script>
{% include "ui/map-vector.html" map-id="empty" %}
{{ script }}
```
## Sample demo
Look at the example below to see how the vector map works with a world map.
{% capture html -%}
<div class="card">
<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>
{% include "ui/map-vector.html" map-id="world" %}
{{ script }}
{%- endcapture %}
{% include "docs/example.html" html=html %}
@@ -71,99 +38,17 @@ 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:
{% capture html -%}
<div class="card">
<div class="card-body">
<div class="ratio ratio-16x9">
<div>
<div id="map-world-markers" class="w-100 h-100"></div>
</div>
</div>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
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>
{% include "ui/map-vector.html" map-id="world-markers" %}
{{ script }}
{%- endcapture %}
{% include "docs/example.html" html=html %}
## Lines
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:
{% capture html -%}
{% include "ui/map-vector.html" map-id="world-lines" %}
{{ script }}
{%- endcapture %}
{% include "docs/example.html" html=html %}

View File

@@ -0,0 +1,18 @@
---
title: WYSIWYG editor
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.
description: Flexible WYSIWYG editor for content.
---
[HugeRTE](https://hugerte.org/) documentation.
## Default text editor
Initialize HugeRTE on any element (or elements) on the web page by passing an object containing a selector value to `hugerte.init()`. The selector value can be any valid CSS selector.
{% capture html -%}
{% include "ui/wysiwyg.html" %}
{{ script }}
{%- endcapture %}
{% include "docs/example.html" html=html %}

View File

@@ -418,8 +418,6 @@ Add a range slider to make it possible for users to set a value or range, such a
<div class="mb-3">
<label class="form-label">Range input</label>
<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>
<script>

View File

@@ -28,17 +28,9 @@ Install Tabler in your Node.js powered apps with the npm package:
{% 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
dependency trees and need to be installed by using npm install. We support the following packages as of writing.
- [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)
dependency trees and need to be installed by using `npm install`. The full list of recommended libraries is available on the
[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.

View File

@@ -39,16 +39,16 @@ To set up Tabler for development, follow these steps:
<div class="steps steps-vertical">
### Ensure Node.js and npm are installed
### Ensure Node.js and pnpm are installed
Youll need Node.js (v20 or higher) and pnpm to compile Tablers files. If you dont have them installed, download and install them from the official websites:
- [Node.js](https://nodejs.org/)
- [pnpm](https://pnpm.io/)
- [pnpm](https://pnpm.io/) (we use pnpm over other package managers for faster installation).
### Install dependencies
Run the following command to install all required npm packages. We recommend using pnpm for faster installation:
Run the following command to install all required npm packages:
```bash
pnpm install
@@ -56,7 +56,7 @@ pnpm install
### Start developer mode
Use the following command to enable autocompilation with live reload. This will start a local server at `http://localhost:3000/`:
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/`:
```bash
pnpm run dev
@@ -64,7 +64,7 @@ pnpm run dev
### Make changes
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.
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.
</div>
## Compiling for Production

View File

@@ -0,0 +1,7 @@
---
title: 3rd-party Libraries & Resources
---
Tabler uses the following open source resources:
{% include "docs/open-source-resources.html" %}

View File

@@ -1,5 +1,5 @@
import { appFilters } from "../shared/e11ty/filters.mjs"
import { appData, getCopyList } from "../shared/e11ty/data.mjs";
import { appData } from "../shared/e11ty/data.mjs";
import { readFileSync, existsSync } from 'node:fs';
import { fileURLToPath } from 'node:url'
import { join, dirname } from 'node:path';
@@ -17,7 +17,7 @@ export default function (eleventyConfig) {
appData(eleventyConfig);
eleventyConfig.addPassthroughCopy({
...getCopyList(),
"node_modules/@tabler/core/dist": "dist",
"public": "/",
"static": "static",
});
@@ -163,7 +163,17 @@ export default function (eleventyConfig) {
children: []
}
}).sort((a, b) => {
return (a.data.order || 999) - (b.data.order || 999);
const orderA = a.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);
@@ -226,7 +236,7 @@ export default function (eleventyConfig) {
eleventyConfig.addFilter("toc", function (name) {
const toc = [];
const contentWithoutExamples = name.replace(/<div[^>]*\bclass=["'][^"']*\bexample\b[^"']*".*?>.*?<\/div>/gs, '');
const contentWithoutExamples = name.replace(/<!--EXAMPLE-->[\s\S]*?<!--\/EXAMPLE-->/g, '');
const headings = contentWithoutExamples.match(/<h([23])>([^<]+)<\/h\1>/g);
if (headings) {

View File

@@ -5,4 +5,4 @@ docsearch({
appId: "NE1EGTYLS9",
indexName: "tabler",
apiKey: "016353235ef1dd32a6c392be0e939058",
});
});

View File

@@ -1,6 +1,6 @@
{
"name": "@tabler/docs",
"version": "1.2.0",
"version": "1.4.0",
"description": "",
"private": true,
"scripts": {
@@ -24,36 +24,14 @@
"keywords": [],
"author": "",
"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": {
"@11ty/eleventy": "^3.0.0",
"@11ty/eleventy-navigation": "^1.0.4",
"@11ty/eleventy": "^3.1.2",
"@docsearch/css": "^3.9.0",
"@docsearch/js": "^3.9.0",
"flat-cache": "^6.1.8",
"shiki": "^3.2.2"
"flat-cache": "^6.1.12",
"shiki": "^3.8.1"
},
"dependencies": {
"@tabler/core": "workspace:*"
}
}

BIN
docs/public/favicon-dev.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -3,6 +3,7 @@
:root {
--docsearch-primary-color: var(--tblr-primary);
--docsearch-searchbox-background: var(--tblr-bg-surface);
--docsearch-searchbox-focus-background: var(--tblr-bg-surface);
--docsearch-text-color: var(--tblr-body-text);
--docsearch-key-shadow: 0 0 0 1px var(--tblr-border-color);
--docsearch-key-gradient: var(--tblr-bg-surface-secondary);
@@ -25,6 +26,80 @@
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 {
top: 0;
}
@@ -53,3 +128,9 @@
background: var(--tblr-gray-900) !important;
color: var(--tblr-gray-300) !important;
}
code {
::selection {
background: var(--tblr-primary);
}
}

View File

@@ -14,36 +14,39 @@
"zip-package": "node .build/zip-package.mjs",
"start": "pnpm dev"
},
"packageManager": "pnpm@10.8.1",
"packageManager": "pnpm@10.13.1",
"dependencies": {
"shx": "^0.4.0"
},
"devDependencies": {
"@argos-ci/playwright": "^4.1.0",
"@argos-ci/playwright": "^5.0.8",
"@changesets/changelog-github": "^0.5.1",
"@changesets/cli": "^2.29.2",
"@playwright/test": "^1.52.0",
"@changesets/cli": "^2.29.5",
"@playwright/test": "^1.54.1",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^28.0.3",
"@rollup/plugin-commonjs": "^28.0.6",
"@rollup/plugin-node-resolve": "^16.0.1",
"@rollup/plugin-replace": "^6.0.2",
"adm-zip": "^0.5.16",
"autoprefixer": "^10.4.21",
"bundlewatch": "^0.4.1",
"clean-css-cli": "^5.6.3",
"concurrently": "^9.1.2",
"concurrently": "^9.2.0",
"cross-env": "^7.0.3",
"glob": "^11.0.1",
"fs-extra": "^11.3.0",
"glob": "^11.0.3",
"js-beautify": "^1.15.4",
"nodemon": "^3.1.9",
"pnpm": "10.6.5",
"postcss": "^8.5.3",
"nodemon": "^3.1.10",
"pnpm": "^10.6.5",
"postcss": "^8.5.6",
"postcss-cli": "^11.0.1",
"prettier": "^3.5.3",
"rollup": "4.40.0",
"prettier": "^3.6.2",
"rollup": "4.45.1",
"rollup-plugin-dotenv": "^0.5.1",
"rtlcss": "^4.3.0",
"sass": "1.71.0",
"shelljs": "^0.9.2",
"shx": "^0.4.0",
"terser": "^5.39.0",
"turbo": "^2.5.0"
"sass": "1.89.2",
"shelljs": "^0.10.0",
"terser": "^5.43.1",
"turbo": "^2.5.5"
}
}
}

7414
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

39
preview/CHANGELOG.md Normal file
View File

@@ -0,0 +1,39 @@
# @tabler/preview
## 1.4.0
### Patch Changes
- 6c38a48: Update Bootstrap to v5.3.7
- 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.2
### Patch Changes
- Updated dependencies [446c34e]
- @tabler/core@1.3.2
## 1.3.1
### Patch Changes
- Updated dependencies [a7f73d7]
- @tabler/core@1.3.1
## 1.3.0
### Patch Changes
- 8850f61: Enhance pagination component with new styles

View File

@@ -3,7 +3,7 @@ import { EleventyRenderPlugin } from "@11ty/eleventy";
import { join } from 'node:path';
import { sync } from 'glob';
import { appFilters } from "../shared/e11ty/filters.mjs";
import { appData, getCopyList } from "../shared/e11ty/data.mjs"
import { appData } from "../shared/e11ty/data.mjs"
/** @type {import('@11ty/eleventy').LocalConfig} */
export default function (eleventyConfig) {
@@ -20,8 +20,9 @@ export default function (eleventyConfig) {
eleventyConfig.setDataDirectory("../../shared/data");
eleventyConfig.addPassthroughCopy({
...getCopyList(),
"node_modules/@tabler/core/dist": "dist",
"pages/favicon.ico": "favicon.ico",
"pages/favicon-dev.ico": "favicon-dev.ico",
"static": "static",
});
@@ -33,11 +34,8 @@ export default function (eleventyConfig) {
* Data
*/
eleventyConfig.addGlobalData("environment", environment);
eleventyConfig.addGlobalData("package", JSON.parse(readFileSync(join("..", "core", "package.json"), "utf-8")));
eleventyConfig.addGlobalData("readme", readFileSync(join("..", "README.md"), "utf-8"));
eleventyConfig.addGlobalData("license", readFileSync(join("..", "LICENSE"), "utf-8"));
eleventyConfig.addGlobalData("changelog", readFileSync(join("..", "core", "CHANGELOG.md"), "utf-8"));
eleventyConfig.addGlobalData("pages", () => {
return sync('pages/**/*.html').filter((file) => {

View File

@@ -1,6 +1,6 @@
{
"name": "@tabler/preview",
"version": "1.2.0",
"version": "1.4.0",
"private": true,
"scripts": {
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run html",
@@ -20,7 +20,7 @@
"clean": "shx rm -rf dist demo",
"html": "pnpm run html-build && pnpm run html-prettify",
"html-build": "eleventy",
"html-prettify": "prettier --write \"dist/**/*.html\"",
"html-prettify": "prettier --write \"dist/**/*.html\" \"!dist/dist/**\"",
"svg-optimize": "svgo -f svg/brand --pretty",
"unused-files": "node .build/unused-files.mjs",
"download-images": "node .build/download-images.mjs",
@@ -30,35 +30,15 @@
"import-icons": "git checkout dev && BRANCH_NAME=\"dev-tabler-icons-`pnpm info @tabler/icons version`\" && git branch $BRANCH_NAME && git checkout $BRANCH_NAME && ncu -u @tabler/icons && pnpm install && pnpm run svg-icons && git add . && git commit -am \"update icons to v`pnpm info @tabler/icons version`\" && git push origin $BRANCH_NAME && git checkout dev",
"zip": "mkdir -p packages-zip && zip -r packages-zip/tabler-$(node -p \"require('./package.json').version\").zip demo/*"
},
"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": {
"@11ty/eleventy": "^3.0.0",
"@11ty/eleventy": "^3.1.2",
"imageoptim-cli": "^3.1.9",
"request": "^2.88.2"
},
"dependencies": {
"@tabler/core": "workspace:*",
"@tabler/icons": "^3.34.1"
},
"prettier": {
"tabWidth": 2,
"useTabs": false,

View File

@@ -6,12 +6,12 @@ layout: default
permalink: activity.html
---
<div class="row justify-content-center">
<div class="row">
<div class="col-8">
<div class="card">
<div class="card-body">
{% include "parts/activity.html" %}
</div>
</div>
</div>
</div>
</div>

View File

@@ -7,91 +7,177 @@ permalink: buttons.html
---
<div class="row row-cards">
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Standard Buttons</h3>
</div>
<div class="card-body">
{% include "parts/buttons-table.html" show-link=true show-states=true %}
<div class="btn-list">
{% for color in site.themeColors %}
<a class="btn btn-{{ color[0] }}">{% include "ui/icon.html" icon=color[1].icon %} {{ color[1].title }}</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Outline Buttons</h3>
</div>
<div class="card-body">
<p>Use <code>.btn-outline-*</code> class for outline buttons.
</p>
{% include "parts/buttons-table.html" prefix="btn-outline-" show-states=true %}
<div class="btn-list">
{% for color in site.themeColors %}
<a class="btn btn-outline btn-{{ color[0] }}">{% include "ui/icon.html"
icon=color[1].icon %} {{ color[1].title }}</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Ghost Buttons</h3>
</div>
<div class="card-body">
<p>Use <code>.btn-ghost-*</code> class for ghost buttons.
</p>
{% include "parts/buttons-table.html" prefix="btn-ghost-" show-states=true %}
<div class="btn-list">
{% for color in site.themeColors %}
<a class="btn btn-ghost btn-{{ color[0] }}">{% include "ui/icon.html"
icon=color[1].icon %} {{ color[1].title }}</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Square Buttons</h3>
</div>
<div class="card-body">
<p>Use <code>.btn-square</code> class for square buttons.
</p>
{% include "parts/buttons-table.html" class="btn-square" show-states=true %}
<div class="btn-list">
{% for color in site.themeColors %}
<a class="btn btn-square btn-{{ color[0] }}">
{% include "ui/icon.html" icon=color[1].icon %} {{ color[1].title }}
</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Pill Buttons</h3>
</div>
<div class="card-body">
<p>Use <code>.btn-pill</code> class for pill buttons.
</p>
{% include "parts/buttons-table.html" class="btn-pill" show-states=true %}
<div class="btn-list">
{% for color in site.themeColors %}
<a class="btn btn-pill btn-{{ color[0] }}">
{% include "ui/icon.html" icon=color[1].icon %} {{ color[1].title }}
</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Extra colors</h3>
</div>
<div class="card-body">
{% include "parts/buttons-table.html" variants=site.colors hide-labels=true icon="star" auto-columns=true %}
<div class="btn-list">
{% for color in site.colors %}
<a class="btn btn-{{ color[0] }}">{% include "ui/icon.html"
icon=color[1].icon %} {{ color[1].title }}</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Icon buttons</h3>
</div>
<div class="card-body">
{% include "parts/buttons-table.html" variants=site.socials hide-labels=true icon-only=true auto-columns=true %}
<div class="btn-list">
{% for app in site.socialColors %}
<a class="btn btn-icon btn-{{ app[0] }}">{% include "ui/icon.html" icon=app[1].icon %}</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Social colors</h3>
</div>
<div class="card-body">
{% include "parts/buttons-table.html" variants=site.socials hide-labels=true icon=true auto-columns=true %}
<div class="btn-list">
{% for app in site.socialColors %}
<a class="btn btn-{{ app[0] }}">{% include "ui/icon.html" icon=app[1].icon %} {{ app[1].title }}</a>
{% endfor %}
</div>
</div>
</div>
</div>
{% assign actions = 'edit,copy,settings,clipboard,x' | split: ',' %}
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Action buttons</h3>
</div>
<div class="card-body">
<div class="btn-actions">
{% for action in actions %}
<a class="btn btn-action">{% include "ui/icon.html" icon=action %}</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Buttons with icon</h3>
</div>
<div class="card-body">
<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>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h3 class="card-title">Buttons size</h3>
</div>
<div class="card-body">
<div class="space-y">
{% assign sizes = 'sm,md,lg,xl' | split: ',' %}
{% for size in sizes %}
<div class="btn-list">
{% include "ui/button.html" size=size text="Button" %}
{% include "ui/button.html" size=size icon="star" icon-only %}
{% include "ui/button.html" size=size icon="star" text="Button" %}
{% include "ui/button.html" size=size icon-end="star" text="Button" %}
</div>
{% endfor %}
</div>
</div>
</div>
</div>

View File

@@ -62,13 +62,13 @@ permalink: cards.html
</div>
<div class="col-md-6 col-lg-3">
<div class="card card-rotate-right">
<div class="card-body">Card rotate right</div>
<div class="card card-rotate-end">
<div class="card-body">Card rotate end</div>
</div>
</div>
<div class="col-md-6 col-lg-3">
<div class="card card-rotate-left">
<div class="card-body">Card rotate left</div>
<div class="card card-rotate-start">
<div class="card-body">Card rotate start</div>
</div>
</div>
<div class="col-md-6 col-lg-3">
@@ -127,7 +127,7 @@ permalink: cards.html
{% include "cards/card.html" status-bottom="success" title="Card with bottom status" %}
</div>
<div class="col-md-6 col-lg-3">
{% include "cards/card.html" status-left="primary" title="Card with side status" %}
{% include "cards/card.html" status-start="primary" title="Card with side status" %}
</div>
<div class="col-md-6 col-lg-3">

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