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

Compare commits

...

73 Commits

Author SHA1 Message Date
codecalm
8abd2a8d20 chore: update package versions to 1.2.0 2025-04-16 14:38:26 +02:00
codecalm
226f9bd202 Update SRI integrity keys for CSS and JS assets 2025-04-16 14:34:05 +02:00
Paweł Kuna
255bea88b1 Update config.json 2025-04-16 14:25:14 +02:00
github-actions[bot]
8525276984 chore: update versions (#2195)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-16 14:19:47 +02:00
Paweł Kuna
f3182c6538 Update dull-kings-type.md 2025-04-16 14:16:14 +02:00
Paweł Kuna
6d6d1bde4c Add responsive font size for form controls on mobile devices (#2248) 2025-04-16 14:14:30 +02:00
codecalm
2b6d6b184b Add SRI integrity keys for RTL CSS plugins 2025-04-16 00:15:45 +02:00
codecalm
5b2ee97aa7 Rename tablerCssPlugins to cssPlugins for consistency 2025-04-16 00:06:27 +02:00
codecalm
681f7a5fed Add SRI hashes to scripts and styles 2025-04-16 00:02:08 +02:00
BG-Software
9910dd0dde Add text features menu item (#2256)
Co-authored-by: codecalm <codecalm@gmail.com>
2025-04-16 00:00:24 +02:00
Paweł Kuna
8d4f8d07c3 Add documentation App (#2219) 2025-04-15 23:18:49 +02:00
Paweł Kuna
199f39a52e Update bootstrap dependency to version 5.3.5 (#2263) 2025-04-15 23:12:32 +02:00
AEonAX
94bea005a4 Make scrollbar track transparent (#2260) 2025-04-15 20:00:47 +02:00
carlosmintfan
0d501e9017 Correct aria-label of app menu link (#2261)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-04-15 20:00:35 +02:00
codecalm
00e9c06f11 Merge branch 'dev' of https://github.com/tabler/tabler into dev 2025-04-15 19:55:13 +02:00
codecalm
52710a339a Add .env to .gitignore to prevent environment file from being tracked 2025-04-15 19:55:11 +02:00
Mikołaj Sojka
6c566cf7b1 Add new advanced table example (#2243)
Co-authored-by: codecalm <codecalm@gmail.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-30 21:19:55 +02:00
codecalm
523f288c8f Remove preview patch from changeset and update avatars page description 2025-03-30 21:19:19 +02:00
Paweł Kuna
864619201e Add avatars page with various demos of avatars (#2254) 2025-03-30 20:14:38 +02:00
codecalm
f9e4da2fb0 Replace Font Awesome icon with GitHub and add GitLab icon to brands 2025-03-30 20:04:25 +02:00
Paweł Kuna
c70806a9db Add dropdown enhancements and new apps card with brand icons (#2249) 2025-03-30 19:59:30 +02:00
Paweł Kuna
44250db908 Update avatar size variable to support list size configuration (#2253) 2025-03-29 21:51:43 +01:00
codecalm
137e5be8f2 Remove default padding from body for consistent layout 2025-03-26 23:27:49 +01:00
codecalm
ffdf712f8a Refactor border-radius CSS variable handling for improved clarity 2025-03-26 23:18:50 +01:00
Paweł Kuna
4846828f39 Fix scrollbar color mixin to use body color variable instead of RGB (#2246) 2025-03-26 22:35:20 +01:00
Paweł Kuna
e8e3857b00 Update pull request trigger for lockfiles workflow (#2247) 2025-03-26 22:32:08 +01:00
codecalm
91b026507b Dependencies update 2025-03-26 00:44:06 +01:00
dependabot[bot]
f9013873b9 Bump xalvarez/prevent-file-change-action from 1 to 2 (#2192)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-26 00:08:59 +01:00
Paweł Kuna
ddcd3a79e1 Refactor SCSS for alerts and close button styles (#2239) 2025-03-26 00:06:21 +01:00
Paweł Kuna
c20d076b74 Refactor border-radius in components to use CSS variables (#2240) 2025-03-26 00:06:08 +01:00
Paweł Kuna
042e50f979 Refactor disabled color variables in navbars (#2238) 2025-03-26 00:05:50 +01:00
Paweł Kuna
e14e4921b5 Fix scrollbar jumps when content is higher than screen (#2237) 2025-03-26 00:05:28 +01:00
codecalm
d61cddb3d6 Update icon for Addons section in menu.json 2025-03-24 20:06:25 +01:00
codecalm
0accf60a63 Update SRI generation script to reference tabler-theme.min.js 2025-03-24 01:42:41 +01:00
codecalm
d3daf7a5db Merge branch 'dev' of https://github.com/tabler/tabler into dev 2025-03-24 01:28:09 +01:00
codecalm
8ac0742cc7 Update @tabler/core version to minor and add steps light colors 2025-03-24 01:28:08 +01:00
Paweł Kuna
f94b153f7f Add SRI generation script (#2104) 2025-03-24 01:26:53 +01:00
Paweł Kuna
74e5d26c20 Fix color badge in navbar menu (#2236) 2025-03-24 00:29:59 +01:00
codecalm
9a9dedf1b4 Add "New" badge to settings link in navbar 2025-03-24 00:27:06 +01:00
dependabot[bot]
e704a5a946 Bump @babel/helpers from 7.26.9 to 7.26.10 (#2218)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-24 00:17:15 +01:00
Paweł Kuna
dd26b62607 Create theme support script in core (#2234) 2025-03-24 00:13:50 +01:00
Paweł Kuna
9fceadd422 Fix tooltip colors in vector maps (#2235) 2025-03-23 23:19:10 +01:00
codecalm
9c368702b4 Refactor settings layout and include JavaScript capture script 2025-03-23 22:36:26 +01:00
Mikołaj Sojka
3fc7b84fc4 add space between page numbers (#2232)
Co-authored-by: codecalm <codecalm@gmail.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-23 22:24:51 +01:00
Mikołaj Sojka
b17b488c96 Add steps light colors (#2230)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-23 21:08:05 +01:00
Paweł Kuna
9bbcb99b90 Add theme settings (#2054) 2025-03-23 20:52:06 +01:00
Paweł Kuna
215eaa4acb Add Turbo library integration and update dependencies (#2223) 2025-03-23 20:51:10 +01:00
Paweł Kuna
92a3afe492 Replaced TinyMCE with Hugerte to address license violation (#2008) 2025-03-23 20:50:54 +01:00
Mikołaj Sojka
19a3d20fad Delete missing demo RTL style (#2231)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-23 20:48:50 +01:00
Yami Odymel
8cd7b186b7 Add missing "tw" entry to flags.mdx (#2226)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-23 20:48:11 +01:00
Yami Odymel
be1f3d1c1f Fix broken shape in kr.svg (#2227)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-23 20:45:10 +01:00
Mikołaj Sojka
2f8a37252d 1865-export-bootstrap-js-components (#2214)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-17 22:44:00 +01:00
Yami Odymel
d73d78e76f Add missing "tw" entry in flags.json for tw.svg (#2217)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
Co-authored-by: codecalm <codecalm@gmail.com>
2025-03-17 22:41:49 +01:00
Paweł Kuna
f84e88116c Update package dependencies to latest versions (#2222) 2025-03-17 22:32:36 +01:00
Abdelrhman Said
473fa3850b Apply border radius to tom-select on focus (#2189)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-17 22:20:16 +01:00
Paweł Kuna
f336275476 Add initial package.json for docs with build script (#2221) 2025-03-17 22:17:01 +01:00
Paweł Kuna
982bc5a09b Refactor script and modal captures (#2220) 2025-03-16 21:39:14 +01:00
codecalm
5fe99e0510 Remove unused preview patch from changesets and rollback accordion component structure 2025-03-16 20:48:38 +01:00
codecalm
1527157bfe Disable test job for draft pull requests in Argos workflow 2025-03-16 20:45:37 +01:00
ethancrawford
922bb0346a Minor spelling and grammar improvements to emails docs (#2191)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-10 21:55:52 +01:00
Paweł Kuna
e3d68d6aab Refactor autosize and input mask plugins to use window scope (#2208) 2025-03-10 21:54:01 +01:00
Paweł Kuna
aea3b0a614 Rollback accordion component structure (#2207) 2025-03-10 21:53:44 +01:00
Robin1-23
cd592b4743 Replace HTML alt attribute to aria-title used on SVG element (#2196)
Co-authored-by: robin0556 <roobinxyz@gmail.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-06 18:07:51 +01:00
codecalm
c59bc9d977 Add gradient background utilities to core package 2025-03-06 18:07:25 +01:00
Paweł Kuna
bc443ff4aa Add gradient background utilities (#2164) 2025-03-06 18:06:02 +01:00
codecalm
afd024f0b1 Merge branch 'dev' of https://github.com/tabler/tabler into dev 2025-03-06 18:01:56 +01:00
codecalm
d29b6f5675 Add zip script to package.json build process 2025-03-06 18:01:54 +01:00
ethancrawford
6b6617aae6 Improve README.md (#2165)
Co-authored-by: BG-Software <73077398+BG-Software-BG@users.noreply.github.com>
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-04 19:16:36 +01:00
Bartłomiej Gawęda
636fed5fe9 Remove wrong image from Tabler Emails docs 2025-03-02 16:39:15 +01:00
Paweł Kuna
d7f4f50986 Refactor modal component structure and update modal examples (#2138)
Co-authored-by: Kevin Papst <kevinpapst@users.noreply.github.com>
2025-03-02 13:16:17 +01:00
github-actions[bot]
6d0271ad57 chore: update versions (#2187)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-03-01 14:53:46 +01:00
Paweł Kuna
f29c911032 Fix Documentation structure (#2186) 2025-03-01 14:50:35 +01:00
BG-Software
01ee740535 Documentation for Tabler Emails (#2163)
Co-authored-by: Paweł Kuna <1282324+codecalm@users.noreply.github.com>
2025-03-01 14:44:16 +01:00
1640 changed files with 12320 additions and 9164 deletions

View File

@@ -10,7 +10,7 @@ import * as prettier from "prettier";
const __dirname = dirname(fileURLToPath(import.meta.url))
const docs = sync(join(__dirname, '..', 'docs', '**', '*.mdx'))
const docs = sync(join(__dirname, '..', 'docs', '**', '*.md'))
async function formatHTML(htmlString) {
try {

View File

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

View File

@@ -5,6 +5,6 @@
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"baseBranch": "dev",
"ignore": []
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -22,7 +22,8 @@ jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
# if: github.event.pull_request.draft == false
if: false
steps:
- name: Clone repository
uses: actions/checkout@v4

View File

@@ -1,6 +1,7 @@
name: Changed lock files
on:
pull_request: null
pull_request_target:
types: [opened, reopened]
permissions:
pull-requests: read
@@ -14,7 +15,7 @@ jobs:
uses: actions/checkout@v4
- name: Prevent lock file change
uses: xalvarez/prevent-file-change-action@v1
uses: xalvarez/prevent-file-change-action@v2
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
pattern: Gemfile.lock|pnpm-lock.json

1
.gitignore vendored
View File

@@ -36,3 +36,4 @@ package-lock.json
demo/
dist/
packages-zip/
.env

View File

@@ -1,7 +1,7 @@
{
"bracketSpacing": true,
"jsxSingleQuote": false,
"printWidth": 240,
"printWidth": 320,
"proseWrap": "always",
"semi": false,
"singleQuote": false,

View File

@@ -1,520 +0,0 @@
# Changelog
## 1.0.0 - 2025-01-28
### Minor Changes
- c276a8b: Add new `Tag` component
- d380224: Add customizable Star Ratings component using `star-rating.js` library
- 47cd6c1: Add `flags.html` page with list of all flags
- be67ab6: Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
- 080c746: Adding `alerts.html` page with example of alerts.
- b381273: Change primary color value to new Tabler branding
- 75619dd: Unify dark mode with latest Bootstrap API and improve dark mode elements
- cc82dbf: New Chat component
- 5a03643: Adjusting form element sizes for enhanced mobile devices compatibility
- be14607: Add new color picker component using `coloris.js` library
- d046570: Update Tabler Icons to version 2.23 with 18 new icons added
- 5488c50: New page with payment providers: `payment-providers.html`
- 5488c50: Add support for new payment providers: 2c2p, Adyen, Affirm, Alipay Plus, Allegro Pay, Amazon Pay, Apple Pay, Autopay, Binance USD, Bkash, Cash App, Chime, EasyPaisa, Ethereum, Google Pay, HubSpot, iDeal, Litecoin, Mercado Pago, MetaMask, MoneyGram, OpenSea, Payconiq, Payka, Payline, PayPo, Paysafe, Poli, Revolut Pay, Samsung Pay, Shop Pay, Solana, Spingo, Stax, Tether, True USD, Venmo, WeChat Pay, Wise, Zelle
### Patch Changes
- 293d0a4: Change Twitter to X brand
- fd0935a: Updated link to icons documentation
- 1cf27dc: Dependencies update
- 041f4e4: Order menu items alphabetically
- 20cad01: Automatically retrieve and display the changelog from the CHANGELOG.md file.
- 34f3efc: Initialize Visual Studio Code config
- 7ba7717: Make horizontal rule direction aware
- 063ef58: Update Tabler Illustrations to v1.5
- 5e2c975: Update Tabler Icons to v3.29.0
- 9d5f7ca: Remove unused dependencies from `package.json`
- be69fd6: Replace Jekyll with Eleventy
- 2f5fad6: Dependencies update
- dfd7c88: Update TinyMCE to v7.0
- 056df18: Fix text color in dark version of navbar
- 17327dc: Remove invalid `z-index` setting for dropdowns
- 4ff077a: Update Tabler Icons to version 2.21 with 18 new icons added
- 867c8dd: Update Tabler Emails to v2.0
- d8605f2: Init changelog script
- 89c6234: Adding Two-Step Verification Pages
- f6e885b: Replace `.page-center` with `.my-auto` in single page layouts
- 7aa216f: Add border-opacity variable for improved color utility
- 88eb413: Fix icon display issues in the Star Ratings component
- 78392b6: Fix `color` of disabled `dropdown-item` in Navbar component
- 4deb8f4: Bump pnpm/action-setup from 2 to 3
- 9015472: Add social icons plugin
- 7fe30a1: `Dockerfile` fix
- e53942f: Update Jekyll to version 4.3.4
- 72f868b: Update Tabler Icons to version 2.20 with 37 new icons added
- e0443c0: Add Tabler Illustrations
- 5cca710: Update illustrations and enhance SVG handling in HTML
- 3a4f10f: Fix ids of custom size star ratings
- 7896562: Unify size of avatar, flag and payment components
- 1587905: Update icons to v2.42.0
- d9e00b2: Update Bootstrap to v5.3.0
- bc1d1a3: Set `font-size` of an `i` element with `icon` class in a `button` element
- 0195f9b: Dependencies update
- a5bf5d3: Fix icons in `form-elements.html`
- 736410c: Update Tabler Icons to v3.28.1
- 3f516ea: Fix `rgba` color values in `_variables.scss`
- e91884e: Fix description of alerts with a description
- 90cc744: Fix colors of disabled `.ts-control`
- 1801e41: Center content on error and single page layouts
- 45c83ac: Resolve map page issues
- faee63c: Improve base font family loading
- 5e7e0dd: Introduce Docker Compose Config to build and run Ttabler locally
- c293a66: Fix `@charset` CSS declaration in bundle.
- cb4a681: Update `_navbar.scss` with disabled dropdown menu items color
- af41fb3: Update Tabler Icons to v3.17.0
- 6cbe888: Update `@tabler/icons` to v3.0
- 0e4bf5f: Refactor data structure by converting YAML files to JSON
- 82cf257: Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons
- 4b4b4f6: Adding punctuation to `SECURITY.md`
- a0a2d52: Fix form controls bugs in dark mode
- f45b697: Fix padding in code blocks
- 4de166d: Unified Box Shadows with Bootstrap Compatibility
- 87bf2f5: Remove duplicated setting of color in `th` element
- 5dc45aa: Fix layout of search results for small and medium screens
- 4ae0358: Remove `text-decoration` on hovering `a` element with class having `icon` class
- e798eb6: Fix small typo in tables docs
- 1c1d0c9: Improve documentation for alerts
- 371ef84: Bump `pnpm/action-setup` from 3 to 4
- 8421fc2: Update dependencies
- 0625f5f: Update Tabler Icons to version 2.22 with 18 new icons added
- ba65fc3: Update devDependencies
- a43ded4: Add All Contributions package to project for easy contribution tracking
- 2f622c9: Set value of `$font-family-monospace` as default
- 2c7c448: Refactor Dockerfile and package.json
- 5ec7f05: Resolved light dropdown issue on dark theme
- b0b07b9: Enhance documentation
- 0f129b1: Update Tabler Icons to version 2.19 with 18 new icons added
- 507df7b: Fix cells with inline icons
- 0e5b44a: Fix `color` of disabled `nav-link` in `nav-bordered`
- 65c1300: Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
- 8552a46: Switch from `npm` to `pnpm` for faster package installation
- 4a9e40d: Increase contrast of active `dropdown-item` in vertical layout
- 17ebdf4: Update documentation for Tabler components
- 4c88481: Add variable to configure `avatar-list` spacing
- df46ee7: Do not display empty `fieldset` element
- 875cafa: Refactor SCSS variables to use `color.adjust` for improved color manipulation
- eb28546: Add Tabler Illustrations
- 650d84c: Update required Node.js version to 18 and add `.nvmrc` file
- fb659d4: Fix table default background color
- f77c712: Avoid SCSS color dependency on `:focus`
- 71c68ce: Update changelog configuration and release scripts
- 34d124d: Update Tabler Icons to v3.26.0
- 4cd9215: Updated Tabler Icons to v3.24.0
- 7bb947b: Update Tabler Icons to version 2.18 with 18 new icons added
- c75cf55: Update Node.js engine requirement to allow versions >=20
- 1c34e8e: Update Tabler Icons to v3.14.0
- 289dd3b: Add Prettier to project for consistent code formatting
- f83e36c: Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.
- b885852: Update Tabler Icons to version 2.25 with 48 new icons added
- 53a5117: Fix responsiveness issue in Settings menu
- 38504e5: Added 3 new payments from Nepal: Esewa, FonePay, Khalti and Imepay
- 35ee14d: Add new Filled section to Icons page
- d32f242: Update `bootstrap` to v5.3.1
- d82f94e: Update package dependencies to latest versions
- 54c5ad0: Fix link to webfont version of Tabler Icons
- 94b83d4: Add support for changeset tool for more efficient and organized code changes
- c51ff28: Fix colors in date range datepicker
## `1.0.0-beta24` - 2025-01-11
- Enhanced documentation.
- Updated illustrations and improved SVG handling in HTML.
- Updated copyright year in LICENSE file to 2025.
- Added marketing pages plugin.
## `1.0.0-beta23` - 2025-01-07
- Documentation improvements.
- Added countup functionality and updated documentation example.
- Do not display empty `<fieldset>`.
- Set font-size of webfont icon inside a button.
- Ordered menu items alphabetically.
- Marked value of `$font-family-monospace` as `!default`.
- Fixed unpkg links to static-files icons.
- Fixed description of alerts with a description.
- Fixed layout of search results for small and medium screens.
- Removed invalid z-index setting for dropdown.
- Fixed IDs of custom size star ratings.
- Removed text-decoration on hover for elements with child icons.
- Fixed link to webfont icons.
- Updated color reference links in UI component documentation.
- Fixed typo in browser support documentation summary.
- Enhanced Figma plugin documentation with detailed usage instructions.
- Added documentation for Tabler Illustrations and updated index with a link.
- Enhanced documentation for various UI and icon sections.
- Added new documentation files for icons and UI components; restructured existing files.
- Updated documentation structure and content for icons and UI components.
- Removed outdated `menu.json` and added `index.mdx` files for UI documentation structure.
- General docs update.
- Increased contrast of active dropdown-item in vertical layout.
- Removed duplicated color setting in table headers.
- Increased `z-index` of `ts-dropdown`.
- Added social icons plugin.
- Described variables for datagrid in docs.
- Fixed multiple documentation issues.
- Removed unused config from the code.
- Fixed links to Tabler Icons.
- Updated dark image.
- Updated screenshot.
- Fixed icon issues.
- Fixed URL in documentation.
## `1.0.0-beta22` - 2025-01-02
- Fixed `@charset` CSS declaration in bundle.
- Fixed cells with inline icons.
- Fixed padding in code blocks.
- Fixed colors in date range datepicker.
- Fixed icon display issues in the Star Ratings component.
- Fixed `z-index` value of the `nav-tab` inside `card-tab`.
- Fixed wrong gray colors.
- Fixed incorrect CDN URL in `webfont.mdx`.
- Ensured border color works in dark mode.
- Replaced `.page-center` with `.my-auto` in single-page layouts.
- Updated Tabler Emails to v2.0.
- Updated Tabler Icons to v3.26.0.
- Updated docs structure.
- Updated `download.mdx`.
- Updated Node.js to version 20.
- Improved base font family.
- Made horizontal rule direction-aware.
- Added new payment providers.
- Read changelog from `CHANGELOG.md` file.
- Initialized VS Code configuration.
## `1.0.0-beta21` - 2024-09-8
- Updated dependencies.
- Updated Tabler Icons to v3.14.0 and the import script.
- Fixed invisible scrollbar in dark mode when navigating the preview.
- Styled `btn-close` specifically for `.modal-header`.
- Added proper borders to the ribbon start class.
- Changed brand color.
- Included `docs` in the `npm` package.
- Added Tabler Illustrations.
- Fixed use of the secondary color in specific form elements.
- Introduced Docker Compose Config for local Tabler builds.
- Allowed usage of `tinymce` v7.x as a peer dependency.
- Updated TinyMCE to v7.0.
- Rebranded Twitter to X.
- Replaced undraw illustrations with Tabler Illustrations.
- Added punctuation to `SECURITY.md`.
- Updated `_navbar.scss` to correct disabled dropdown menu item colors.
- Removed unused packages.
- Fixed map pages.
- Resolved issues with toasts in dark mode.
- Fixed alert background prefix.
- Corrected a typo in CHANGELOG.md.
- Fixed radial chart issue.
- Added documentation on running the site locally in Site README.
- Updated colors in `colors.mdx`.
- Fixed dynamic SCSS prefix in mixins.
- Changed `<h1>` to `<div>` in `navbar-logo.html`.
- Resolved vertical centering on error pages.
- Fixed navbar menu issues.
- Added `background-clip: border-box` to `.dropdown-menu` class.
- Replaced `href="#"` with `href="javascript:void(0)"`.
- Fixed disabled CSS class for links.
- Addressed missing variables and minor color adjustments.
- Improved heights, scrolls, and layouts in Docs examples.
- Fixed flags display in preview.
## `1.0.0-beta20` - 2023-08-24
- Update `bootstrap` to v5.3.1
- Add new `Chat` component
- Add new `Tag` component
- Add customizable Star Ratings component using `star-rating.js` library
- Add new color picker component using `coloris.js` library
- Add `alerts.html` page with example of alerts.
- Add `flags.html` page with list of all flags
- Add Two-Step Verification Pages
- Add variable to configure `avatar-list` spacing
- Unify dark mode with latest Bootstrap API and improve dark mode elements
- Unify Box Shadows with Bootstrap Compatibility
- Avoid SCSS color dependency on `:focus`
- Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
- Fix text color in dark version of navbar
- Adjusting form element sizes for enhanced mobile devices compatibility
- Resolved light dropdown issue on dark theme
- Update Tabler Icons to version 2.32 with 48 new icons added
- Fix table default background color
- Fix responsiveness issue in Settings menu
- Update required Node.js version to 18 and add `.nvmrc` file
- Add support for changeset tool for more efficient and organized code changes
- `Dockerfile` fix
- Switch from `npm` to `pnpm` for faster package installation
## `1.0.0-beta19` - 2023-05-15
- Add customizable Star Ratings component using `star-rating.js` library (#1571)
- Add new "Filled" section to Icons page (#1574)
- Fix form controls bugs in dark mode (#1573)
- Fix text color in dark version of navbar (#1569)
- Changelog update
## `1.0.0-beta18` - 2023-05-14
- new page: Cookie banner
- Unify dark mode with latest Bootstrap API and improve dark mode elements (#1561)
- Update Tabler Icons to version 2.18 with 18 new icons added (#1560)
- Switch from `npm` to `pnpm` for faster package installation (#1559)
- Add Prettier to project for consistent code formatting (#1558)
- Update required Node.js version to 18 and add `.nvmrc` file (#1555)
- Add All Contributions package to project for easy contribution tracking (#1556)
- Add support for changeset tool for more efficient and organized code changes (#1553)
- Fix bug where `border-1`, `border-2`, etc don't work (#1526)
- Fix indeterminate input background color (#1536)
- Update Bootstrap to `5.3.0-alpha3` (#1543)
- `tom-select` dark mode styling fixes
- Advanced udage of `tom-select` (#1480)
- Fix Dropdown menu in rtl mode (#801)
- Fix `tom-select` dropdown will be shaded in table-responsive (#1409)
- Remove overflow scroll from body
- Fix avatars overlap transparently (#1464)
- Fix TinyMCE dropdown icon list transparent (#1426)
- Dark mode lite colors improvement
- Fix non full width selects (#1392)
## `1.0.0-beta17` - 2023-01-28
- update `bootstrap` to v5.3.0
- update icons to v2.1.2
- add 72 new brands, browsers logos update
- new `Trial ended` page
- new `Page loader` page
- new `Profile` page
- headings fix
- dropdown background color fix
- fix rgba conversion bug
- fix autofill text color, not matching in dark mode
- update license
- header html5 tags
- add input with appended `<kbd>`
- `bootstrap` import fix
- font improvements
- change `$body-color` to CSS variable
- scrollbars improvements
- move `@tabler/icons` to `dev-dependencies`
- fix #1370: avatar stacked list is not stacked anymore
## `1.0.0-beta16` - 2022-11-12
- new `Photogrid` page
- `Steps` component improvements
- fix #1348: Make job listing responsive for smaller devices
- fix #1357: buttons group not active
- fix #1352: fix deprecation warning
- fix #1180: number input with `form-control-sm` looks weird
- fix #1328: color input should show different color for inner check symbol on white ellipse
- fix #1355 - missing font sizes
- update icons to v1.111.0
- homepage navbar fix
- fix #1262 - `.bg-opacity-xx` class is not functioning properly
## `1.0.0-beta15` - 2022-11-01
- new `badges` page
- `<kbd>` styling
- update icons to v1.109.0
- `tom-select` border fix
- exclude `playgrounds` from build
- update jekyll to v4.3.1
- fix: facebook color update
- navbar aria atributes fixes
- fix #808 - `navbar-menu` and `sidebar-menu` has the same `id`
- fix #1335 - missing color variables usage in `alert` and `btn-ghost-*`
- move border style to CSS variables
- add missing forms
- `btn-actions` fixes
- replace `$text-muted` to css variable
## `1.0.0-beta14` - 2022-10-21
- fix active items in dark mode
- update Jekyll to newest version
## `1.0.0-beta13` - 2022-10-18
- update Bootstrap to 5.2.1, update dependencies
- new `tracking` component
- new radio button version of `form-imagecheck`
- update icons to v1.105.0
- dark mode improvements
- corrects the spelling of New Zealand (#1318)
- remove `$border-color-dark`
- fix #1301 - code snippets in docs look bad in dark mode
- fix #1305 - different default link color for dark mode
- fix popover background in dark mode
- fix button default border color
- fix `form-imagecheck` bg in dark mode
- navbar logo fix
- move card ribbons config to variables
- navbar border fix
- dark mode active fix
- using globalThis instead of window (#1315)
- fix #1210 - lastmod not generated for pages in `sitemap.xml`
- fix card border in dark mode
- fix #895 - background color overwrites background image
- fix #1302 - wrong card header in dark mode
- fix #1303 - wrong color when hovering over `selectgroup` in dark mode
- fix #1308 - bad coloring in table in dark mode
- fix #1273 - datepicker background color broken
- fix `$prefix` hard coded `layout/_dark.scss`
- fix #1275 - remove last border-right on progress bar
- fix #1261 - broken offcanvas bg
## `1.0.0-beta12` - 2022-09-19
- new "Job listing" page
- new "Sign in with cover" page
- new "Logs" page
- new `progressbg` component
- add a lot of CSS variables
- add Dockerfile with alpine base
- add icon pulse/tada/rotate animations
- use `:host` in selectors to support Web Components
- use dark table variant colors in dark mode (#1200)
- update Tabler Icons to v1.96
- change `space-y` component
- headings, shadows and borders unify
- toggle TinyMCE dark mode and skin based on the set Tabler theme
- fix `card-footer` background
- fix headers weight
- fix transparent hover background in pagination
- fix dark mode card text color
- fix `--#{$prefix}card-bg` is undefined
- fix global variable for `.card` and `.btn`
- fix code sample in the customize tabler docs
- fix form elements demo page radio buttons
- replace `gulp-minify` with `gulp-terser`
## `1.0.0-beta11` - 2022-07-05
- new `Dropzone` component
- new `Lightbox` component
- new `TinyMCS` component
- new `Inline Player` component
- new `Pricing table` component
- new `Datagrid` component
- new optgroup form examples
- new settings page
- update Tabler Icons to v1.78
- added popover docs page
- fix: #1125 incorrect chart display in the mobile version
- update Bootstrap to 5.2.0
## `1.0.0-beta10` - 2022-04-29
- new `datatable` component
- update Tabler Icons to v1.67
- fix: #1024 - fix Tom-select in dark mode
- new carousel indicators: dots, vertical, thumbs (#1101)
- replace !important modifier with more specific selectors (#1100)
- new `FAQ` page
## `1.0.0-beta9` - 2022-02-26
- fix: #1061 - list group item colors in light and dark modes
- new `tasks` dashboard
- fix: #1059 - upload button in form element in dark view has problem
- fix: #1052 - card background icon is practically invisible
- remove Inter font and use default font system stack
- fix: #1018 - vector map not working
- fix: #1035 - wrong background color of hovered list group items in dark mode
- dependencies update
- add `font-display: swap;` to improve font loading
- new `Boxed` layout
## `1.0.0-beta8` - 2022-02-05
- update dependencies
- new vector maps demos
- fixes update map on resize
- docs improvement
- replace `badge` with `status-dot` in `navbar-notifications.html`
- map tooltip fixes
## `1.0.0-beta7` - 2022-02-05
- fix: #1019 - project-overview.html link not working
- fix: #1010 - card with bottom tabs has incorrect border radius
- uptime monitor mobile fixes
- navbar dark button fix
- `tabler-icons` link
- autoloading webfonts
- cards fixes, new cards demos
- ruby dependencies update
- RTL stylesheet fixes
- new card action demos
## `1.0.0-beta6` - 2022-01-18
- pricing cards fix
- fix bug `fw-...`, `.fs-...` is missed (#987)
- avatar class fix
- fix bug #903 `litepicker` with date range not having correct border
- page wrapper fix
- fix #900 `is-invalid-lite` class is not working under `was-validated` form class
- update `@tabler/icons` to version 1.48
- fix #960 - Badges not honoring font sizes
- fix #959 - `node-sass` does not properly compile nested media queries
- update package dependencies to newest version
## `1.0.0-beta5` - 2021-12-07
**Tabler has finally lived to see dark mode! 🌝🌚**
- **Dark mode enabled!**
- add more cursors (#947)
- fix #892 - media queries need to be nested when negating
- update `@tabler/icons` to newest version
- move optional dependencies to peerDependencies (#924)
- move deployment to Github Actions (#934)
- table border fixes
- antialiased fix
- update `@tabler/icons` to version 1.42
- change default font to 'Inter'
- colors unify
- add `tom-select` and remove `choices.js`
## `1.0.0-beta4` - 2021-10-24
- upgrade required node.js version to 14
- upgrade Bootstrap to 5.1
- upgrade dependencies
- fix #775 - litepicker not initializing
- fix `nouislider` import in dev
## `1.0.0-beta3` - 2021-05-08
- upgrade Bootstrap to 5.0
- upgrade dependencies
- change `$border-radius-pill` variable
- badge vertical align fix
## `1.0.0-beta2` - 2021-03-29
- update dependencies
- `li` marker fix
- page wrapper, nav fixes
- scripts optimize, remove `capture_once`
- `page-body` fixes
- layout navbar fix
- typography fix
- ribbon fix
- charts label fixes
- charts docs
## `1.0.0-beta` - 2021-02-17
**Initial beta release of Tabler v1.0! Lots more coming soon though 😁**
- update Bootstrap to 5.0.0-beta2
- update other dependencies.

204
README.md
View File

@@ -15,7 +15,7 @@ A premium and open source dashboard template with a responsive and high-quality
## Sponsors
**If you want to support our project and help me grow it, you can [become a sponsor on GitHub](https://github.com/sponsors/codecalm) or just [donate on PayPal](https://paypal.me/codecalm) :)**
**If you want to support our project and help us grow it, you can [become a sponsor on GitHub](https://github.com/sponsors/codecalm) or just [donate on PayPal](https://paypal.me/codecalm) :)**
<p align="center">
<a href="https://github.com/sponsors/codecalm">
@@ -23,8 +23,24 @@ 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/preview/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">
@@ -32,7 +48,7 @@ A premium and open source dashboard template with a responsive and high-quality
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/14dd2a0a-bafe-436e-a6cb-29636278c781">
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83">
<img src="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83" alt="Tabler Icons preview" width="296">
<img src="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83" alt="labmdatest" width="296">
</picture>
</a>
</p>
@@ -56,116 +72,30 @@ We've created this admin panel for everyone who wants to create templates based
* **HTML5 & CSS3:** We use only modern web technologies, such as HTML5 and CSS3. Our theme includes some subtle CSS3 animations, which will help you attract attention.
* **Clean Code:** We followed Bootstraps guidelines carefully to make your integration as easy as possible. All code is handwritten and W3C valid.
* **Demo pages**: Tabler features over 20 individual pages using various components, which gives you the freedom to choose and combine. All components can vary in color and styling that you can easily modify using Sass. Sky is the limit!
* **Single Page Application versions:** [Tabler React](https://github.com/tabler/tabler-react) has React components for Tabler.
## 📖 Documentation
Documentation is available as a part of Tabler preview: https://tabler.io/docs/
To run the documentation site locally, follow instructions in the [Documentation README](https://github.com/tabler/tabler/blob/dev/site/README.md).
The documentation is available at https://tabler.io/docs/
## 🪴 Project Activity
![Alt](https://repobeats.axiom.co/api/embed/61d1db34446967b0848af68198a392067e0f5870.svg "Repobeats analytics image")
## 💕 Sponsor Tabler
<p align="center">
<a href="https://github.com/sponsors/codecalm" target="_blank">
<img src="https://raw.githubusercontent.com/tabler/tabler/dev/preview/static/sponsor-banner-homepage.svg" alt="Sponsor Banner">
</a>
<img src="https://repobeats.axiom.co/api/embed/61d1db34446967b0848af68198a392067e0f5870.svg" alt="Repobeats analytics image" />
</p>
### Sponsors
Support this project by becoming a sponsor. Your logo will show up in this README with a link to your website. [Become a sponsor!](https://opencollective.com/tabler#sponsor)
<a href="https://opencollective.com/tabler/tiers/sponsor/0/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/0/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/1/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/1/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/2/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/2/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/3/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/3/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/4/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/4/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/5/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/5/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/6/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/6/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/7/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/7/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/8/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/8/avatar.svg" /></a>
<a href="https://opencollective.com/tabler/tiers/sponsor/9/website" target="_blank"><img src="https://opencollective.com/tabler/tiers/sponsor/9/avatar.svg" /></a>
## 📦 Setup environment
To use our build system and run our documentation locally, you'll need a copy of Tabler's source files. Follow the steps below:
1. [Install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
2. Navigate to the root `/tabler` directory and run `pnpm install` to install our local dependencies listed in `package.json`.
**OSX users**:
```sh
pnpm install
```
and then
```sh
npm run start
```
**Windows users**:
[Install Git](https://git-scm.com/download/win) in `C:\Program Files\git\bin` directory and run `npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"` to change the default shell.
Once you complete the setup, you'll be able to run the various commands provided from the command line.
## Build locally
You need to have `pnpm` installed.
1. From the root `/tabler` directory, run installation in the command line: `pnpm install`
2. Then execute `pnpm run start` to start up the application stack.
3. Open [http://localhost:3000](http://localhost:3000) in your browser, and voilà.
4. Any change in the `/src` directory will build the application and refresh the page.
**Note**:
Run `pnpm run build` for reforms a one off build application without refresh.
Open [http://localhost:3001](http://localhost:3001) to configure the Web server.
## Installation
Tabler is distributed via npm.
### Package Managers
Tabler is distributed via npm. You can install it with this or your preferred JavaScript package manager:
```sh
npm install --save @tabler/core
```
## Running with Docker
**Plain Docker**
If you don't want to install node/npm and the dependencies on your local environment, you can use the provided Dockerfile to build a docker image.
This Dockerfile is provided as an example to spin-up a container running Tabler.
Example of how to use this image:
1. Build the tabler image : `docker build -t tabler .`
2. Run the tabler image while mounting the `src` directory as well as the `_config.yml` file into the container.
Don't forget to expose the port 3000 so you can browse the website locally.
You can also expose the port 3001 to have access to BrowserSync
```sh
docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src -v $(pwd)/_config.yml:/app/_config.yml tabler
```
Now open your browser to [http://localhost:3000](http://localhost:3000). Edit anything in the `src/` folder and watch your browser refresh the page after it has been rebuilt.
**Docker Compose**
You can also use the docker compose config from this repo. Use `docker compose build && docker compose up` or `docker compose up --build` to build and start the container. Edit anything in the `src/` folder the same way as with plain docker and access the same URLs and ports in your browser.
### CDN support
All files included in `@tabler/core` npm package are available over a CDN.
All files included in `@tabler/core` npm package are also available over a CDN.
#### Javascript
@@ -179,24 +109,84 @@ All files included in `@tabler/core` npm package are available over a CDN.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css">
```
## Feature requests
## Building locally
https://tabler.canny.io/feature-requests
To build a copy of Tabler locally, you have two options. You can either set up your device directly with the development tools required to build Tabler, or if you would prefer not to install all the development dependencies directly onto your device, you can use a Dockerfile that Tabler provides to build a docker image. Instructions follow below.
### First steps: Downloading the Tabler source files
With either method, the first thing you'll want to do is download a copy of the Tabler source files to your device.
#### From the Tabler GitHub releases page
If you don't want to edit the source code once you've downloaded it, and aren't interested in merging future project updates into your copy, you can just download the source files straight from the [Tabler releases on GitHub](https://github.com/tabler/tabler/releases) and extract the contents to a directory called `tabler`.
#### Cloning with Git
If you **do** wish to edit the source code after downloading it, for example to contribute changes back to the Tabler project, you'll want to do this by cloning it with Git:
1. If you don't have Git installed on your device, download and install it. You can find instructions at [https://git-scm.com/downloads](https://git-scm.com/downloads).
2. (Optional) **Windows users:** you could optionally install Git in the `C:\Program Files\git\bin` directory and run `npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"` to change the default shell.
3. Clone the Tabler project into a folder on your device. Instructions can be found at [cloning a repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository).
### Installing and running development tools directly
1. [Install Node.js](https://nodejs.org/download/), which we use to manage our dependencies.
2. [Install pnpm](https://pnpm.io/installation) (We recommend either by [Using Corepack](https://pnpm.io/installation#using-corepack) or by [Using npm](https://pnpm.io/installation#using-npm))
3. From the root `/tabler` directory where you downloaded the Tabler source files, run installation on the command line:
```sh
pnpm install
```
4. Then execute the following to start up the application stack:
```sh
pnpm run start
```
5. Open [http://localhost:3000](http://localhost:3000) in your browser, and voilà.
Any change in the `/src` directory will rebuild the application and refresh the page.
**Note**:
If you wish to perform a one-off build without auto-refresh on any changes, you can run:
```sh
pnpm run build
```
You can open [http://localhost:3001](http://localhost:3001) to configure the Web server.
### Installing and running development tools with Docker
**Plain Docker**
Here is an example of how to use this image:
1. From the root `/tabler` directory where you downloaded the Tabler source files, build the tabler image:
```sh
docker build -t tabler .
```
2. Run the tabler image. The following command mounts the `src` directory into the container, exposes port 3000 to browse the website locally, and exposes port 3001 to automatically sync changes:
```sh
docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src tabler
```
3. Open your browser to [http://localhost:3000](http://localhost:3000). Edit anything in the `src/` folder and watch your browser refresh the page after it has been rebuilt.
**Docker Compose**
You can also use the docker compose config from this repo. From the root `/tabler` directory where you downloaded the Tabler source files, use `docker compose build && docker compose up` or `docker compose up --build` to build and start the container. Edit anything in the `src/` folder the same way as with plain docker and access the same URLs and ports in your browser.
## Bugs and feature requests
Found a bug or have a feature request? [Please open a new issue](https://github.com/tabler/tabler/issues/new).
## 🤓 Creators
**Paweł Kuna**
- <https://twitter.com/codecalm>
- <https://x.com/codecalm>
- <https://github.com/codecalm>
- <https://codecalm.net>
**Bartłomiej Gawęda**
- <https://x.com/B_Gaweda>
- <https://github.com/BG-Software-BG>
## 👨‍🚀 Contributors
@@ -204,25 +194,11 @@ This project exists thanks to all the people who contribute.
<img src="https://opencollective.com/tabler/contributors.svg?width=890&button=false" />
## 🌸 Backers
## Social media
Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/tabler#backer)
<a href="https://opencollective.com/tabler#backers" target="_blank"><img src="https://opencollective.com/tabler/tiers/backer.svg?width=890&button=false" /></a>
Stay up to date by joining our community on <a href="https://x.com/tabler_io" >X</a> and <a href="https://www.facebook.com/tabler.io">Facebook</a>
## License
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

View File

@@ -6,7 +6,7 @@ import { readFileSync, writeFileSync } from 'node:fs';
import { join, dirname, basename } from 'node:path';
import { fileURLToPath } from 'node:url'
import { sync } from 'glob';
import banner from '@repo/banner';
import banner from '../../shared/banner/index.mjs';
const __dirname = dirname(fileURLToPath(import.meta.url))

107
core/.build/generate-sri.js Normal file
View File

@@ -0,0 +1,107 @@
const crypto = require('node:crypto');
const fs = require('node:fs');
const path = require('node:path');
const sh = require('shelljs');
sh.config.fatal = true
const configFile = path.join(__dirname, '../../shared/data/sri.json')
const files = [
{
file: 'dist/css/tabler.min.css',
configPropertyName: 'css'
},
{
file: 'dist/css/tabler.rtl.min.css',
configPropertyName: 'css-rtl'
},
{
file: 'dist/css/tabler-flags.min.css',
configPropertyName: 'css-flags'
},
{
file: 'dist/css/tabler-flags.rtl.min.css',
configPropertyName: 'css-flags-rtl'
},
{
file: 'dist/css/tabler-marketing.min.css',
configPropertyName: 'css-marketing'
},
{
file: 'dist/css/tabler-marketing.rtl.min.css',
configPropertyName: 'css-marketing-rtl'
},
{
file: 'dist/css/tabler-payments.min.css',
configPropertyName: 'css-payments'
},
{
file: 'dist/css/tabler-payments.rtl.min.css',
configPropertyName: 'css-payments-rtl'
},
{
file: 'dist/css/tabler-props.min.css',
configPropertyName: 'css-props'
},
{
file: 'dist/css/tabler-props.rtl.min.css',
configPropertyName: 'css-props-rtl'
},
{
file: 'dist/css/tabler-themes.min.css',
configPropertyName: 'css-themes'
},
{
file: 'dist/css/tabler-themes.rtl.min.css',
configPropertyName: 'css-themes-rtl'
},
{
file: 'dist/css/tabler-socials.min.css',
configPropertyName: 'css-socials'
},
{
file: 'dist/css/tabler-socials.rtl.min.css',
configPropertyName: 'css-socials-rtl'
},
{
file: 'dist/css/tabler-vendors.min.css',
configPropertyName: 'css-vendors'
},
{
file: 'dist/css/tabler-vendors.rtl.min.css',
configPropertyName: 'css-vendors-rtl'
},
{
file: 'dist/js/tabler.min.js',
configPropertyName: 'js'
},
{
file: 'dist/js/tabler-theme.min.js',
configPropertyName: 'js-theme'
},
// {
// file: 'dist/preview/css/demo.min.css',
// configPropertyName: 'demo-css'
// },
// {
// file: 'dist/preview/js/demo.min.js',
// configPropertyName: 'demo-js'
// },
]
for (const { file, configPropertyName } of files) {
fs.readFile(path.join(__dirname, '..', file), 'utf8', (error, data) => {
if (error) {
throw error
}
const algorithm = 'sha384'
const hash = crypto.createHash(algorithm).update(data, 'utf8').digest('base64')
const integrity = `${algorithm}-${hash}`
console.log(`${configPropertyName}: ${integrity}`)
sh.sed('-i', new RegExp(`^(\\s+"${configPropertyName}":\\s+["'])\\S*(["'])`), `$1${integrity}$2`, configFile)
})
}

View File

@@ -4,13 +4,13 @@ import { fileURLToPath } from 'node:url'
import { babel } from '@rollup/plugin-babel'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
import banner from '@repo/banner'
import banner from '../../shared/banner/index.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const ESM = process.env.ESM === 'true'
const THEME = process.env.THEME === 'true'
let destinationFile = `tabler${ESM ? '.esm' : ''}`
const external = []
const plugins = [
babel({
@@ -27,8 +27,9 @@ plugins.push(
nodeResolve()
)
const destinationFile = `tabler${THEME ? '-theme' : ''}${ESM ? '.esm' : ''}`
const rollupConfig = {
input: path.resolve(__dirname, `../js/tabler.${ESM ? 'esm' : 'umd'}.js`),
input: path.resolve(__dirname, `../js/tabler${THEME ? '-theme' : ''}.js`),
output: {
banner: banner(),
file: path.resolve(__dirname, `../dist/js/${destinationFile}.js`),
@@ -40,7 +41,7 @@ const rollupConfig = {
}
if (!ESM) {
rollupConfig.output.name = 'tabler'
rollupConfig.output.name = `tabler${THEME ? '-theme' : ''}`
}
export default rollupConfig

View File

@@ -1,5 +1,46 @@
# @tabler/core
## 1.2.0
### Minor Changes
- c59bc9d: Add gradient background utilities
- f9e4da2: Add new apps card with brand icons in navbar
- 92a3afe: Replaced TinyMCE with HugeRTE to address license violation
- 199f39a: Update Bootstrap to version 5.3.5
- 9bbcb99: Add theme settings wizard
- b17b488: Add steps light colors
- 215eaa4: Add Turbo library integration
### Patch Changes
- aea3b0a: Rollback accordion component structure
- 3fc7b84: Add space between page numbers in pagination
- 2f8a372: Add Bootstrap components to Tabler JS
- 9fceadd: Fix tooltip colors in vector maps
- 44250db: Update avatar size variable to support list size configuration
- be1f3d1: Fix broken shape in South Korea flag
- c20d076: Refactor `border-radius` in components to use CSS variables
- 042e50f: Update disabled color variables in navbars
- 473fa38: Apply border radius to `tom-select` on focus
- 8646192: Add avatars page with various demos of avatars
- 922bb03: Minor spelling and grammar improvements to emails docs
- 44250db: Update avatar size variable to support list size configuration
- ddcd3a7: Refactor SCSS for alerts and close button styles
- e3d68d6: Fix `autosize` and `input mask` plugins to use window scope
- 4846828: Fix scrollbar color mixin to use body color variable
- 6b6617a: Improve README
- 94bea00: Make scrollbar track transparent
- e14e492: Fix scrollbar jumps when content is higher than screen
- 6d6d1bd: Add responsive font size for form controls on mobile devices
- 6c566cf: Add new advanced table example
## 1.1.1
### Patch Changes
- f29c911: Fix Documentation structure
## 1.1.0
### Minor Changes
@@ -31,3 +72,523 @@
- b28ce9f: Fix vertical alignment in single page and error layouts
- 24b944c: Fix `.avatar-upload` double borders
- ca4ba14: Fixes navbar styles with new hover effects and color variables
## 1.0.0 - 2025-01-28
### Minor Changes
- c276a8b: Add new `Tag` component
- d380224: Add customizable Star Ratings component using `star-rating.js` library
- 47cd6c1: Add `flags.html` page with list of all flags
- be67ab6: Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
- 080c746: Adding `alerts.html` page with example of alerts.
- b381273: Change primary color value to new Tabler branding
- 75619dd: Unify dark mode with latest Bootstrap API and improve dark mode elements
- cc82dbf: New Chat component
- 5a03643: Adjusting form element sizes for enhanced mobile devices compatibility
- be14607: Add new color picker component using `coloris.js` library
- d046570: Update Tabler Icons to version 2.23 with 18 new icons added
- 5488c50: New page with payment providers: `payment-providers.html`
- 5488c50: Add support for new payment providers: 2c2p, Adyen, Affirm, Alipay Plus, Allegro Pay, Amazon Pay, Apple Pay, Autopay, Binance USD, Bkash, Cash App, Chime, EasyPaisa, Ethereum, Google Pay, HubSpot, iDeal, Litecoin, Mercado Pago, MetaMask, MoneyGram, OpenSea, Payconiq, Payka, Payline, PayPo, Paysafe, Poli,
Revolut Pay, Samsung Pay, Shop Pay, Solana, Spingo, Stax, Tether, True USD, Venmo, WeChat Pay, Wise, Zelle
### Patch Changes
- 293d0a4: Change Twitter to X brand
- fd0935a: Updated link to icons documentation
- 1cf27dc: Dependencies update
- 041f4e4: Order menu items alphabetically
- 20cad01: Automatically retrieve and display the changelog from the CHANGELOG.md file.
- 34f3efc: Initialize Visual Studio Code config
- 7ba7717: Make horizontal rule direction aware
- 063ef58: Update Tabler Illustrations to v1.5
- 5e2c975: Update Tabler Icons to v3.29.0
- 9d5f7ca: Remove unused dependencies from `package.json`
- be69fd6: Replace Jekyll with Eleventy
- 2f5fad6: Dependencies update
- dfd7c88: Update TinyMCE to v7.0
- 056df18: Fix text color in dark version of navbar
- 17327dc: Remove invalid `z-index` setting for dropdowns
- 4ff077a: Update Tabler Icons to version 2.21 with 18 new icons added
- 867c8dd: Update Tabler Emails to v2.0
- d8605f2: Init changelog script
- 89c6234: Adding Two-Step Verification Pages
- f6e885b: Replace `.page-center` with `.my-auto` in single page layouts
- 7aa216f: Add border-opacity variable for improved color utility
- 88eb413: Fix icon display issues in the Star Ratings component
- 78392b6: Fix `color` of disabled `dropdown-item` in Navbar component
- 4deb8f4: Bump pnpm/action-setup from 2 to 3
- 9015472: Add social icons plugin
- 7fe30a1: `Dockerfile` fix
- e53942f: Update Jekyll to version 4.3.4
- 72f868b: Update Tabler Icons to version 2.20 with 37 new icons added
- e0443c0: Add Tabler Illustrations
- 5cca710: Update illustrations and enhance SVG handling in HTML
- 3a4f10f: Fix ids of custom size star ratings
- 7896562: Unify size of avatar, flag and payment components
- 1587905: Update icons to v2.42.0
- d9e00b2: Update Bootstrap to v5.3.0
- bc1d1a3: Set `font-size` of an `i` element with `icon` class in a `button` element
- 0195f9b: Dependencies update
- a5bf5d3: Fix icons in `form-elements.html`
- 736410c: Update Tabler Icons to v3.28.1
- 3f516ea: Fix `rgba` color values in `_variables.scss`
- e91884e: Fix description of alerts with a description
- 90cc744: Fix colors of disabled `.ts-control`
- 1801e41: Center content on error and single page layouts
- 45c83ac: Resolve map page issues
- faee63c: Improve base font family loading
- 5e7e0dd: Introduce Docker Compose Config to build and run Ttabler locally
- c293a66: Fix `@charset` CSS declaration in bundle.
- cb4a681: Update `_navbar.scss` with disabled dropdown menu items color
- af41fb3: Update Tabler Icons to v3.17.0
- 6cbe888: Update `@tabler/icons` to v3.0
- 0e4bf5f: Refactor data structure by converting YAML files to JSON
- 82cf257: Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons
- 4b4b4f6: Adding punctuation to `SECURITY.md`
- a0a2d52: Fix form controls bugs in dark mode
- f45b697: Fix padding in code blocks
- 4de166d: Unified Box Shadows with Bootstrap Compatibility
- 87bf2f5: Remove duplicated setting of color in `th` element
- 5dc45aa: Fix layout of search results for small and medium screens
- 4ae0358: Remove `text-decoration` on hovering `a` element with class having `icon` class
- e798eb6: Fix small typo in tables docs
- 1c1d0c9: Improve documentation for alerts
- 371ef84: Bump `pnpm/action-setup` from 3 to 4
- 8421fc2: Update dependencies
- 0625f5f: Update Tabler Icons to version 2.22 with 18 new icons added
- ba65fc3: Update devDependencies
- a43ded4: Add All Contributions package to project for easy contribution tracking
- 2f622c9: Set value of `$font-family-monospace` as default
- 2c7c448: Refactor Dockerfile and package.json
- 5ec7f05: Resolved light dropdown issue on dark theme
- b0b07b9: Enhance documentation
- 0f129b1: Update Tabler Icons to version 2.19 with 18 new icons added
- 507df7b: Fix cells with inline icons
- 0e5b44a: Fix `color` of disabled `nav-link` in `nav-bordered`
- 65c1300: Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933
- 8552a46: Switch from `npm` to `pnpm` for faster package installation
- 4a9e40d: Increase contrast of active `dropdown-item` in vertical layout
- 17ebdf4: Update documentation for Tabler components
- 4c88481: Add variable to configure `avatar-list` spacing
- df46ee7: Do not display empty `fieldset` element
- 875cafa: Refactor SCSS variables to use `color.adjust` for improved color manipulation
- eb28546: Add Tabler Illustrations
- 650d84c: Update required Node.js version to 18 and add `.nvmrc` file
- fb659d4: Fix table default background color
- f77c712: Avoid SCSS color dependency on `:focus`
- 71c68ce: Update changelog configuration and release scripts
- 34d124d: Update Tabler Icons to v3.26.0
- 4cd9215: Updated Tabler Icons to v3.24.0
- 7bb947b: Update Tabler Icons to version 2.18 with 18 new icons added
- c75cf55: Update Node.js engine requirement to allow versions >=20
- 1c34e8e: Update Tabler Icons to v3.14.0
- 289dd3b: Add Prettier to project for consistent code formatting
- f83e36c: Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.
- b885852: Update Tabler Icons to version 2.25 with 48 new icons added
- 53a5117: Fix responsiveness issue in Settings menu
- 38504e5: Added 3 new payments from Nepal: Esewa, FonePay, Khalti and Imepay
- 35ee14d: Add new Filled section to Icons page
- d32f242: Update `bootstrap` to v5.3.1
- d82f94e: Update package dependencies to latest versions
- 54c5ad0: Fix link to webfont version of Tabler Icons
- 94b83d4: Add support for changeset tool for more efficient and organized code changes
- c51ff28: Fix colors in date range datepicker
## `1.0.0-beta24` - 2025-01-11
- Enhanced documentation.
- Updated illustrations and improved SVG handling in HTML.
- Updated copyright year in LICENSE file to 2025.
- Added marketing pages plugin.
## `1.0.0-beta23` - 2025-01-07
- Documentation improvements.
- Added countup functionality and updated documentation example.
- Do not display empty `<fieldset>`.
- Set font-size of webfont icon inside a button.
- Ordered menu items alphabetically.
- Marked value of `$font-family-monospace` as `!default`.
- Fixed unpkg links to static-files icons.
- Fixed description of alerts with a description.
- Fixed layout of search results for small and medium screens.
- Removed invalid z-index setting for dropdown.
- Fixed IDs of custom size star ratings.
- Removed text-decoration on hover for elements with child icons.
- Fixed link to webfont icons.
- Updated color reference links in UI component documentation.
- Fixed typo in browser support documentation summary.
- Enhanced Figma plugin documentation with detailed usage instructions.
- Added documentation for Tabler Illustrations and updated index with a link.
- Enhanced documentation for various UI and icon sections.
- Added new documentation files for icons and UI components; restructured existing files.
- Updated documentation structure and content for icons and UI components.
- Removed outdated `menu.json` and added `index.mdx` files for UI documentation structure.
- General docs update.
- Increased contrast of active dropdown-item in vertical layout.
- Removed duplicated color setting in table headers.
- Increased `z-index` of `ts-dropdown`.
- Added social icons plugin.
- Described variables for datagrid in docs.
- Fixed multiple documentation issues.
- Removed unused config from the code.
- Fixed links to Tabler Icons.
- Updated dark image.
- Updated screenshot.
- Fixed icon issues.
- Fixed URL in documentation.
## `1.0.0-beta22` - 2025-01-02
- Fixed `@charset` CSS declaration in bundle.
- Fixed cells with inline icons.
- Fixed padding in code blocks.
- Fixed colors in date range datepicker.
- Fixed icon display issues in the Star Ratings component.
- Fixed `z-index` value of the `nav-tab` inside `card-tab`.
- Fixed wrong gray colors.
- Fixed incorrect CDN URL in `webfont.mdx`.
- Ensured border color works in dark mode.
- Replaced `.page-center` with `.my-auto` in single-page layouts.
- Updated Tabler Emails to v2.0.
- Updated Tabler Icons to v3.26.0.
- Updated docs structure.
- Updated `download.mdx`.
- Updated Node.js to version 20.
- Improved base font family.
- Made horizontal rule direction-aware.
- Added new payment providers.
- Read changelog from `CHANGELOG.md` file.
- Initialized VS Code configuration.
## `1.0.0-beta21` - 2024-09-8
- Updated dependencies.
- Updated Tabler Icons to v3.14.0 and the import script.
- Fixed invisible scrollbar in dark mode when navigating the preview.
- Styled `btn-close` specifically for `.modal-header`.
- Added proper borders to the ribbon start class.
- Changed brand color.
- Included `docs` in the `npm` package.
- Added Tabler Illustrations.
- Fixed use of the secondary color in specific form elements.
- Introduced Docker Compose Config for local Tabler builds.
- Allowed usage of `tinymce` v7.x as a peer dependency.
- Updated TinyMCE to v7.0.
- Rebranded Twitter to X.
- Replaced undraw illustrations with Tabler Illustrations.
- Added punctuation to `SECURITY.md`.
- Updated `_navbar.scss` to correct disabled dropdown menu item colors.
- Removed unused packages.
- Fixed map pages.
- Resolved issues with toasts in dark mode.
- Fixed alert background prefix.
- Corrected a typo in CHANGELOG.md.
- Fixed radial chart issue.
- Added documentation on running the site locally in Site README.
- Updated colors in `colors.mdx`.
- Fixed dynamic SCSS prefix in mixins.
- Changed `<h1>` to `<div>` in `navbar-logo.html`.
- Resolved vertical centering on error pages.
- Fixed navbar menu issues.
- Added `background-clip: border-box` to `.dropdown-menu` class.
- Replaced `href="#"` with `href="javascript:void(0)"`.
- Fixed disabled CSS class for links.
- Addressed missing variables and minor color adjustments.
- Improved heights, scrolls, and layouts in Docs examples.
- Fixed flags display in preview.
## `1.0.0-beta20` - 2023-08-24
- Update `bootstrap` to v5.3.1
- Add new `Chat` component
- Add new `Tag` component
- Add customizable Star Ratings component using `star-rating.js` library
- Add new color picker component using `coloris.js` library
- Add `alerts.html` page with example of alerts.
- Add `flags.html` page with list of all flags
- Add Two-Step Verification Pages
- Add variable to configure `avatar-list` spacing
- Unify dark mode with latest Bootstrap API and improve dark mode elements
- Unify Box Shadows with Bootstrap Compatibility
- Avoid SCSS color dependency on `:focus`
- Update CSS class from `text-muted` to `text-secondary` for better Bootstrap compatibility
- Fix text color in dark version of navbar
- Adjusting form element sizes for enhanced mobile devices compatibility
- Resolved light dropdown issue on dark theme
- Update Tabler Icons to version 2.32 with 48 new icons added
- Fix table default background color
- Fix responsiveness issue in Settings menu
- Update required Node.js version to 18 and add `.nvmrc` file
- Add support for changeset tool for more efficient and organized code changes
- `Dockerfile` fix
- Switch from `npm` to `pnpm` for faster package installation
## `1.0.0-beta19` - 2023-05-15
- Add customizable Star Ratings component using `star-rating.js` library (#1571)
- Add new "Filled" section to Icons page (#1574)
- Fix form controls bugs in dark mode (#1573)
- Fix text color in dark version of navbar (#1569)
- Changelog update
## `1.0.0-beta18` - 2023-05-14
- new page: Cookie banner
- Unify dark mode with latest Bootstrap API and improve dark mode elements (#1561)
- Update Tabler Icons to version 2.18 with 18 new icons added (#1560)
- Switch from `npm` to `pnpm` for faster package installation (#1559)
- Add Prettier to project for consistent code formatting (#1558)
- Update required Node.js version to 18 and add `.nvmrc` file (#1555)
- Add All Contributions package to project for easy contribution tracking (#1556)
- Add support for changeset tool for more efficient and organized code changes (#1553)
- Fix bug where `border-1`, `border-2`, etc don't work (#1526)
- Fix indeterminate input background color (#1536)
- Update Bootstrap to `5.3.0-alpha3` (#1543)
- `tom-select` dark mode styling fixes
- Advanced udage of `tom-select` (#1480)
- Fix Dropdown menu in rtl mode (#801)
- Fix `tom-select` dropdown will be shaded in table-responsive (#1409)
- Remove overflow scroll from body
- Fix avatars overlap transparently (#1464)
- Fix TinyMCE dropdown icon list transparent (#1426)
- Dark mode lite colors improvement
- Fix non full width selects (#1392)
## `1.0.0-beta17` - 2023-01-28
- update `bootstrap` to v5.3.0
- update icons to v2.1.2
- add 72 new brands, browsers logos update
- new `Trial ended` page
- new `Page loader` page
- new `Profile` page
- headings fix
- dropdown background color fix
- fix rgba conversion bug
- fix autofill text color, not matching in dark mode
- update license
- header html5 tags
- add input with appended `<kbd>`
- `bootstrap` import fix
- font improvements
- change `$body-color` to CSS variable
- scrollbars improvements
- move `@tabler/icons` to `dev-dependencies`
- fix #1370: avatar stacked list is not stacked anymore
## `1.0.0-beta16` - 2022-11-12
- new `Photogrid` page
- `Steps` component improvements
- fix #1348: Make job listing responsive for smaller devices
- fix #1357: buttons group not active
- fix #1352: fix deprecation warning
- fix #1180: number input with `form-control-sm` looks weird
- fix #1328: color input should show different color for inner check symbol on white ellipse
- fix #1355 - missing font sizes
- update icons to v1.111.0
- homepage navbar fix
- fix #1262 - `.bg-opacity-xx` class is not functioning properly
## `1.0.0-beta15` - 2022-11-01
- new `badges` page
- `<kbd>` styling
- update icons to v1.109.0
- `tom-select` border fix
- exclude `playgrounds` from build
- update jekyll to v4.3.1
- fix: facebook color update
- navbar aria atributes fixes
- fix #808 - `navbar-menu` and `sidebar-menu` has the same `id`
- fix #1335 - missing color variables usage in `alert` and `btn-ghost-*`
- move border style to CSS variables
- add missing forms
- `btn-actions` fixes
- replace `$text-muted` to css variable
## `1.0.0-beta14` - 2022-10-21
- fix active items in dark mode
- update Jekyll to newest version
## `1.0.0-beta13` - 2022-10-18
- update Bootstrap to 5.2.1, update dependencies
- new `tracking` component
- new radio button version of `form-imagecheck`
- update icons to v1.105.0
- dark mode improvements
- corrects the spelling of New Zealand (#1318)
- remove `$border-color-dark`
- fix #1301 - code snippets in docs look bad in dark mode
- fix #1305 - different default link color for dark mode
- fix popover background in dark mode
- fix button default border color
- fix `form-imagecheck` bg in dark mode
- navbar logo fix
- move card ribbons config to variables
- navbar border fix
- dark mode active fix
- using globalThis instead of window (#1315)
- fix #1210 - lastmod not generated for pages in `sitemap.xml`
- fix card border in dark mode
- fix #895 - background color overwrites background image
- fix #1302 - wrong card header in dark mode
- fix #1303 - wrong color when hovering over `selectgroup` in dark mode
- fix #1308 - bad coloring in table in dark mode
- fix #1273 - datepicker background color broken
- fix `$prefix` hard coded `layout/_dark.scss`
- fix #1275 - remove last border-right on progress bar
- fix #1261 - broken offcanvas bg
## `1.0.0-beta12` - 2022-09-19
- new "Job listing" page
- new "Sign in with cover" page
- new "Logs" page
- new `progressbg` component
- add a lot of CSS variables
- add Dockerfile with alpine base
- add icon pulse/tada/rotate animations
- use `:host` in selectors to support Web Components
- use dark table variant colors in dark mode (#1200)
- update Tabler Icons to v1.96
- change `space-y` component
- headings, shadows and borders unify
- toggle TinyMCE dark mode and skin based on the set Tabler theme
- fix `card-footer` background
- fix headers weight
- fix transparent hover background in pagination
- fix dark mode card text color
- fix `--#{$prefix}card-bg` is undefined
- fix global variable for `.card` and `.btn`
- fix code sample in the customize tabler docs
- fix form elements demo page radio buttons
- replace `gulp-minify` with `gulp-terser`
## `1.0.0-beta11` - 2022-07-05
- new `Dropzone` component
- new `Lightbox` component
- new `TinyMCS` component
- new `Inline Player` component
- new `Pricing table` component
- new `Datagrid` component
- new optgroup form examples
- new settings page
- update Tabler Icons to v1.78
- added popover docs page
- fix: #1125 incorrect chart display in the mobile version
- update Bootstrap to 5.2.0
## `1.0.0-beta10` - 2022-04-29
- new `datatable` component
- update Tabler Icons to v1.67
- fix: #1024 - fix Tom-select in dark mode
- new carousel indicators: dots, vertical, thumbs (#1101)
- replace !important modifier with more specific selectors (#1100)
- new `FAQ` page
## `1.0.0-beta9` - 2022-02-26
- fix: #1061 - list group item colors in light and dark modes
- new `tasks` dashboard
- fix: #1059 - upload button in form element in dark view has problem
- fix: #1052 - card background icon is practically invisible
- remove Inter font and use default font system stack
- fix: #1018 - vector map not working
- fix: #1035 - wrong background color of hovered list group items in dark mode
- dependencies update
- add `font-display: swap;` to improve font loading
- new `Boxed` layout
## `1.0.0-beta8` - 2022-02-05
- update dependencies
- new vector maps demos
- fixes update map on resize
- docs improvement
- replace `badge` with `status-dot` in `navbar-notifications.html`
- map tooltip fixes
## `1.0.0-beta7` - 2022-02-05
- fix: #1019 - project-overview.html link not working
- fix: #1010 - card with bottom tabs has incorrect border radius
- uptime monitor mobile fixes
- navbar dark button fix
- `tabler-icons` link
- autoloading webfonts
- cards fixes, new cards demos
- ruby dependencies update
- RTL stylesheet fixes
- new card action demos
## `1.0.0-beta6` - 2022-01-18
- pricing cards fix
- fix bug `fw-...`, `.fs-...` is missed (#987)
- avatar class fix
- fix bug #903 `litepicker` with date range not having correct border
- page wrapper fix
- fix #900 `is-invalid-lite` class is not working under `was-validated` form class
- update `@tabler/icons` to version 1.48
- fix #960 - Badges not honoring font sizes
- fix #959 - `node-sass` does not properly compile nested media queries
- update package dependencies to newest version
## `1.0.0-beta5` - 2021-12-07
**Tabler has finally lived to see dark mode! 🌝🌚**
- **Dark mode enabled!**
- add more cursors (#947)
- fix #892 - media queries need to be nested when negating
- update `@tabler/icons` to newest version
- move optional dependencies to peerDependencies (#924)
- move deployment to Github Actions (#934)
- table border fixes
- antialiased fix
- update `@tabler/icons` to version 1.42
- change default font to 'Inter'
- colors unify
- add `tom-select` and remove `choices.js`
## `1.0.0-beta4` - 2021-10-24
- upgrade required node.js version to 14
- upgrade Bootstrap to 5.1
- upgrade dependencies
- fix #775 - litepicker not initializing
- fix `nouislider` import in dev
## `1.0.0-beta3` - 2021-05-08
- upgrade Bootstrap to 5.0
- upgrade dependencies
- change `$border-radius-pill` variable
- badge vertical align fix
## `1.0.0-beta2` - 2021-03-29
- update dependencies
- `li` marker fix
- page wrapper, nav fixes
- scripts optimize, remove `capture_once`
- `page-body` fixes
- layout navbar fix
- typography fix
- ribbon fix
- charts label fixes
- charts docs
## `1.0.0-beta` - 2021-02-17
**Initial beta release of Tabler v1.0! Lots more coming soon though 😁**
- update Bootstrap to 5.0.0-beta2
- update other dependencies.

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="15" fill="none"><g mask="url(#KR_-_Korea_(South)__a)"><path fill="#F7FCFF" fill-rule="evenodd" d="M0 0v15h20V0H0z" clip-rule="evenodd"/><g mask="url(#KR_-_Korea_(South)__b)"><path fill="#3D58DB" fill-rule="evenodd" d="M10 11.387c2.002 0 3.624-1.723 3.624-3.849 0-2.126-1.622-3.849-3.624-3.849s-3.624 1.723-3.624 3.85c0 2.125 1.622 3.848 3.624 3.848z" clip-rule="evenodd"/><g mask="url(#KR_-_Korea_(South)__c)"><path fill="#E31D1C" fill-rule="evenodd" d="M13.751 7.833s-.203-1.815-1.71-1.914c-1.507-.098-1.913 1.331-2 1.71-.087.379-.307 1.39-1.893 1.39s-1.73-2.57-1.73-2.57V3.42h7.333v4.414z" clip-rule="evenodd"/></g><path fill="#272727" fill-rule="evenodd" d="m4.562 1.283.572.517-2.65 3.095-.572-.517 2.65-3.095zm.943.837.572.517-2.555 3.05-.572-.517 2.555-3.05zm1.51 1.364-.571-.517L3.882 6.04l.572.517 2.562-3.073zm8.837-2.418-.572.515.993 1.164.572-.515-.993-1.164zm1.764 2.141-.572.516.992 1.164.572-.515-.992-1.165zm-4.223.051.571-.515.993 1.164-.572.515-.992-1.164zm2.335 1.626-.572.516.992 1.164.572-.515-.992-1.165zm-1.356-2.49.572-.515 2.762 3.363-.572.516-2.762-3.364zm1.912 6.508-.576-.517-1.001 1.168.577.518 1-1.17zm-1.682 2.057-.577-.517-1 1.168.577.518 1-1.17zm2.927-.938.577.517-1 1.169-.578-.518 1.001-1.168zm-1.023 2.621-.577-.517-1 1.169.576.517 1.001-1.169zm-1.527-1.406.577.518-1.044 1.248-.577-.518 1.044-1.248zm2.29-1.562-.576-.517-1.045 1.248.577.517 1.044-1.248zM4.004 9.306l.572-.516 2.553 2.926-.572.515-2.553-2.925zm.596 2.559.572-.516 1.078 1.185-.572.515L4.6 11.865zm-1.907-1.433-.572.516 2.567 2.964.572-.516-2.567-2.964zm.407-.337.572-.516.935 1.096-.572.516-.935-1.096z" clip-rule="evenodd"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="15" fill="none"><path d="M0,0V15H20V0Z" fill="#f7fcff" fill-rule="evenodd"/><path d="M13.74,7.58a3.66,3.66,0,1,1-3.66-3.7A3.67,3.67,0,0,1,13.74,7.58Z" fill="#e31d1c" fill-rule="evenodd"/><path d="M6.47,6.93c.12.93.29,2,1.72,2.08a1.82,1.82,0,0,0,1.94-1.6,1.81,1.81,0,0,1,2.86-1,1.71,1.71,0,0,1,.74,1.35,3.64,3.64,0,0,1-1.84,3.08,3.73,3.73,0,0,1-4.16-.34A3.84,3.84,0,0,1,6.47,6.93Z" fill="#3d58db" fill-rule="evenodd"/><path d="M4.56,1.28l.57.52L2.48,4.89l-.57-.51Zm.94.84.58.52L3.52,5.69,3,5.17ZM7,3.48,6.44,3,3.88,6l.57.52L7,3.48Zm8.84-2.41-.57.51,1,1.16.57-.51Zm1.77,2.14L17,3.72l1,1.17.57-.52Zm-4.23,0L14,2.74l1,1.17-.57.51Zm2.34,1.62-.57.52,1,1.16.57-.51ZM14.37,2.39l.57-.51,2.77,3.36-.58.52ZM16.28,8.9l-.57-.52-1,1.17.57.52,1-1.17ZM14.6,11,14,10.44l-1,1.17.57.52,1-1.17ZM17.53,10l.58.52-1,1.17-.58-.52Zm-1,2.62-.58-.52-1,1.17.57.52ZM15,11.24l.58.51L14.51,13l-.58-.52Zm2.29-1.57-.58-.51-1,1.24.57.52ZM4,9.31l.58-.52,2.55,2.93-.57.51Zm.6,2.55.57-.51,1.08,1.18-.57.52ZM2.69,10.43,2.12,11l2.57,3,.57-.51Zm.41-.33.57-.52.94,1.1L4,11.19Z" fill="#272727" fill-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,10 +1,7 @@
// Autosize plugin
import autosize from 'autosize';
const elements = document.querySelectorAll('[data-bs-toggle="autosize"]');
if (elements.length) {
elements.forEach(function (element) {
autosize && autosize(element);
window.autosize && window.autosize(element);
});
}

View File

@@ -1,10 +1,8 @@
// Input mask plugin
import IMask from 'imask';
var maskElementList = [].slice.call(document.querySelectorAll('[data-mask]'));
maskElementList.map(function (maskEl) {
IMask && new IMask(maskEl, {
window.IMask && new window.IMask(maskEl, {
mask: maskEl.dataset.mask,
lazy: maskEl.dataset['mask-visible'] === 'true'
})

35
core/js/tabler-theme.js Normal file
View File

@@ -0,0 +1,35 @@
/**
* demo-theme is specifically loaded right after the body and not deferred
* to ensure we switch to the chosen dark/light theme as fast as possible.
* This will prevent any flashes of the light theme (default) before switching.
*/
const themeConfig = {
"theme": "light",
"theme-base": "gray",
"theme-font": "sans-serif",
"theme-primary": "blue",
"theme-radius": "1",
}
const params = new Proxy(new URLSearchParams(window.location.search), {
get: (searchParams, prop) => searchParams.get(prop),
})
for (const key in themeConfig) {
const param = params[key]
let selectedValue
if (!!param) {
localStorage.setItem('tabler-' + key, param)
selectedValue = param
} else {
const storedTheme = localStorage.getItem('tabler-' + key)
selectedValue = storedTheme ? storedTheme : themeConfig[key]
}
if (selectedValue !== themeConfig[key]) {
document.documentElement.setAttribute('data-bs-' + key, selectedValue)
} else {
document.documentElement.removeAttribute('data-bs-' + key)
}
}

View File

@@ -5,7 +5,23 @@ import "./src/dropdown"
import "./src/tooltip"
import "./src/popover"
import "./src/switch-icon"
import "./src/tab"
import "./src/toast"
export * as bootstrap from "bootstrap"
export * as tabler from "./src/tabler"
export {
Alert,
Modal,
Toast,
Tooltip,
Tab,
Button,
Carousel,
Collapse,
Dropdown,
Popover,
ScrollSpy,
Offcanvas
} from 'bootstrap'

View File

@@ -1,15 +0,0 @@
import "./src/autosize"
import "./src/countup"
import "./src/input-mask"
import "./src/dropdown"
import "./src/tooltip"
import "./src/popover"
import "./src/switch-icon"
import "./src/tab"
import "./src/toast"
import * as bootstrap from "bootstrap"
import * as tabler from "./src/tabler"
globalThis.bootstrap = bootstrap
globalThis.tabler = tabler

View File

@@ -1,33 +1,38 @@
{
"name": "@tabler/core",
"version": "1.1.0",
"version": "1.2.0",
"description": "Premium and Open Source dashboard template with responsive and high quality UI.",
"homepage": "https://tabler.io",
"scripts": {
"dev": "pnpm run watch",
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy",
"build": "pnpm run clean && pnpm run css && pnpm run js && pnpm run copy && pnpm run generate-sri",
"clean": "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-banner": "node build/add-banner.mjs",
"css-prefix": "postcss --config build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
"css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.mjs --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
"css-banner": "node .build/add-banner.mjs",
"css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
"css-rtl": "cross-env NODE_ENV=RTL postcss --config .build/postcss.config.mjs --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"",
"css-minify": "pnpm run css-minify-main && pnpm run css-minify-rtl",
"css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*rtl*.css\"",
"css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*rtl.css\" \"!dist/css/*.min.css\"",
"js": "pnpm run js-compile && pnpm run js-minify",
"js-compile": "pnpm run js-compile-standalone && pnpm run js-compile-standalone-esm",
"js-compile-standalone": "rollup --config build/rollup.config.mjs --sourcemap",
"js-compile-standalone-esm": "rollup --environment ESM:true --config build/rollup.config.mjs --sourcemap",
"js-minify": "pnpm run js-minify-standalone && pnpm run js-minify-standalone-esm",
"js-compile": "pnpm run js-compile-standalone && pnpm run js-compile-standalone-esm && pnpm run js-compile-theme && pnpm run js-compile-theme-esm",
"js-compile-theme-esm": "rollup --environment THEME:true --environment ESM:true --config .build/rollup.config.mjs --sourcemap",
"js-compile-theme": "rollup --environment THEME:true --config .build/rollup.config.mjs --sourcemap",
"js-compile-standalone": "rollup --config .build/rollup.config.mjs --sourcemap",
"js-compile-standalone-esm": "rollup --environment ESM:true --config .build/rollup.config.mjs --sourcemap",
"js-minify": "pnpm run js-minify-standalone && pnpm run js-minify-standalone-esm && pnpm run js-minify-theme && pnpm run js-minify-theme-esm",
"js-minify-standalone": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler.js.map,includeSources,url=tabler.min.js.map\" --output dist/js/tabler.min.js dist/js/tabler.js",
"js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler.esm.js.map,includeSources,url=tabler.esm.min.js.map\" --output dist/js/tabler.esm.min.js dist/js/tabler.esm.js",
"js-minify-theme": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.js.map,includeSources,url=tabler-theme.min.js.map\" --output dist/js/tabler-theme.min.js dist/js/tabler-theme.js",
"js-minify-theme-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/tabler-theme.esm.js.map,includeSources,url=tabler-theme.esm.min.js.map\" --output dist/js/tabler-theme.esm.min.js dist/js/tabler-theme.esm.js",
"copy": "pnpm run copy-img",
"copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
"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\"",
"bundlewatch": "bundlewatch",
"generate-sri": "node .build/generate-sri.js",
"format:check": "prettier --check src/**/*.{js,scss} --cache",
"format:write": "prettier --write src/**/*.{js,scss} --cache"
},
@@ -139,10 +144,7 @@
},
"dependencies": {
"@popperjs/core": "^2.11.8",
"bootstrap": "5.3.3"
},
"devDependencies": {
"@repo/banner": "workspace:*"
"bootstrap": "5.3.5"
},
"directories": {
"doc": "docs"

View File

@@ -14,12 +14,10 @@
@import "bootstrap/scss/nav";
@import "bootstrap/scss/navbar";
@import "bootstrap/scss/card";
// @import "bootstrap/scss/accordion";
@import "bootstrap/scss/breadcrumb";
@import "bootstrap/scss/pagination";
@import "bootstrap/scss/progress";
@import "bootstrap/scss/list-group";
@import "bootstrap/scss/close";
@import "bootstrap/scss/toasts";
@import "bootstrap/scss/modal";
@import "bootstrap/scss/tooltip";
@@ -29,8 +27,5 @@
@import "bootstrap/scss/offcanvas";
@import "bootstrap/scss/placeholders";
// Helpers
@import "bootstrap/scss/helpers";
// Utilities
@import "bootstrap/scss/utilities/api";

View File

@@ -1,6 +1,8 @@
@import "config";
@import "bootstrap-components";
@import "props";
@import "fonts/webfonts";
@import "layout/root";
@@ -65,6 +67,8 @@
@import "ui/chat";
@import "ui/signature";
@import "helpers/index";
@import "utils/background";
@import "utils/colors";
@import "utils/scroll";

91
core/scss/_props.scss Normal file
View File

@@ -0,0 +1,91 @@
@import "config";
:root,
:host {
/** Fonts */
--#{$prefix}font-monospace: #{$font-family-monospace};
--#{$prefix}font-sans-serif: #{$font-family-sans-serif};
--#{$prefix}font-serif: #{$font-family-serif};
--#{$prefix}font-comic: #{$font-family-comic};
/** Gray colors */
--#{$prefix}gray-50: #{$gray-50};
--#{$prefix}gray-100: #{$gray-100};
--#{$prefix}gray-200: #{$gray-200};
--#{$prefix}gray-300: #{$gray-300};
--#{$prefix}gray-400: #{$gray-400};
--#{$prefix}gray-500: #{$gray-500};
--#{$prefix}gray-600: #{$gray-600};
--#{$prefix}gray-700: #{$gray-700};
--#{$prefix}gray-800: #{$gray-800};
--#{$prefix}gray-900: #{$gray-900};
--#{$prefix}gray-950: #{$gray-950};
--#{$prefix}white: #{$white};
--#{$prefix}black: #{$black};
--#{$prefix}dark: #{$dark};
--#{$prefix}light: #{$light};
/** Brand colors */
--#{$prefix}brand: #{$primary};
/** Theme colors */
@each $name, $color in map-merge($theme-colors, $social-colors) {
--#{$prefix}#{$name}: #{$color};
--#{$prefix}#{$name}-rgb: #{to-rgb($color)};
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};
--#{$prefix}#{$name}-darken: #{theme-color-darker($color)};
--#{$prefix}#{$name}-darken: color-mix(in oklab, var(--#{$prefix}#{$name}), transparent 20%);
--#{$prefix}#{$name}-lt: #{theme-color-lighter($color)};
--#{$prefix}#{$name}-lt: color-mix(in oklab, var(--#{$prefix}#{$name}) 10%, transparent);
--#{$prefix}#{$name}-200: color-mix(in oklab, var(--#{$prefix}#{$name}) 20%, transparent);
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
}
/** Social colors */
@each $name, $color in $social-colors {
--#{$prefix}#{$name}: #{$color};
}
/** Spacers */
@each $name, $value in $spacers {
--#{$prefix}spacer-#{$name}: #{$value};
}
/** Font sizes */
@each $name, $value in $font-weights {
--#{$prefix}font-weight-#{$name}: #{$value};
}
@each $name, $value in $font-sizes {
--#{$prefix}font-size-h#{$name}: #{$value};
}
@each $name, $value in $line-heights {
--#{$prefix}line-height-#{$name}: #{$value};
}
/** Shadows */
@each $name, $value in $box-shadows {
--#{$prefix}shadow#{if($name, '-#{$name}', '')}: #{$value};
}
/** Border radiuses */
--#{$prefix}border-radius-scale: 1;
@each $name, $value in $border-radiuses {
@if $name {
--#{$prefix}border-radius-#{$name}: calc(#{$value} * var(--#{$prefix}border-radius-scale, 1));
} @else {
--#{$prefix}border-radius: #{$value};
}
}
/** Backdrops */
--#{$prefix}backdrop-opacity: #{$backdrop-opacity};
--#{$prefix}backdrop-bg: var(--#{$prefix}bg-surface-dark);
@each $name, $value in $backdrops {
--#{$prefix}backdrop-bg#{if($name, '-#{$name}', '')}: #{$value};
}
--#{$prefix}backdrop-blur: #{$backdrop-blur};
--#{$prefix}backdrop-filter: blur(var(--#{$prefix}backdrop-blur));
}

View File

@@ -102,5 +102,34 @@ $utilities: (
'<svg width="16" height="16" viewBox="0 0 16 16"><rect x="0" y="0" width="8" height="8" fill="rgba(130, 130, 130, .1)" /><rect x="8" y="8" width="8" height="8" fill="rgba(130, 130, 130, .1)" /></svg>'
)} repeat center/16px 16px,
)
)
),
"bg-gradient": (
property: background,
class: bg-gradient,
values: (
null: linear-gradient(var(--#{$prefix}gradient-direction, to right), var(--#{$prefix}gradient-stops, var(--#{$prefix}gradient-from, transparent), var(--#{$prefix}gradient-to, transparent))) no-repeat,
),
),
"bg-gradient-direction": (
property: --#{$prefix}gradient-direction,
class: bg-gradient,
values: (
to-t: to top,
to-te: to top right,
to-e: to right,
to-be: to bottom right,
to-b: to bottom,
to-bs: to bottom left,
to-s: to left,
to-ts: to top left,
),
),
"table-layout": (
property: table-layout,
class: table,
values: (
auto: auto,
fixed: fixed,
),
),
) !default;

View File

@@ -24,8 +24,9 @@ $font-local: null !default;
$font-icons: () !default;
$font-family-sans-serif: unquote("#{if($font-local, "#{$font-local}, ", ' ')}#{if($font-google, "#{$font-google}, ", ' ')}") 'Inter Var', Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif !default;
$font-family-monospace: unquote("#{if($font-google-monospaced, "#{$font-google-monospaced}, ", '')}") Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace !default;
$font-family-monospace: unquote("#{if($font-google-monospaced, "#{$font-google-monospaced}, ", '')}") Monaco, Consolas, Liberation Mono, Courier New, monospace !default;
$font-family-serif: "Georgia", "Times New Roman", times, serif !default;
$font-family-comic: "Comic Sans MS", "Comic Sans", 'Chalkboard SE', 'Comic Neue', sans-serif, cursive !default;
//Icons
$icon-stroke-width: 1.5 !default;
@@ -78,6 +79,7 @@ $font-weights: (
$line-height-base: divide(1.25rem, $font-size-base) !default;
$line-height-sm: divide(1rem, $font-size-base) !default;
$line-height-lg: divide(1.5rem, $font-size-base) !default;
$line-height-xl: divide(1.75rem, $font-size-base) !default;
$h1-font-size: 1.5rem !default;
$h1-line-height: 2rem !default;
@@ -144,16 +146,17 @@ $border-light-opacity: 0.08 !default;
$border-dark-opacity: 0.24 !default;
$border-active-opacity: 0.58 !default;
$gray-50: #f6f8fb !default;
$gray-100: #eef3f6 !default;
$gray-200: #dce1e7 !default;
$gray-300: #b8c4d4 !default;
$gray-400: #8a97ab !default;
$gray-500: #6c7a91 !default;
$gray-600: #49566c !default;
$gray-700: #3a4859 !default;
$gray-800: #182433 !default;
$gray-900: #040a11 !default;
$gray-50: #f9fafb !default;
$gray-100: #f3f4f6 !default;
$gray-200: #e5e7eb !default;
$gray-300: #d1d5db !default;
$gray-400: #9ca3af !default;
$gray-500: #6b7280 !default;
$gray-600: #4b5563 !default;
$gray-700: #374151 !default;
$gray-800: #1f2937 !default;
$gray-900: #111827 !default;
$gray-950: #030712 !default;
$black: #000000 !default;
$white: #ffffff !default;
@@ -186,19 +189,7 @@ $green: #2fb344 !default;
$teal: #0ca678 !default;
$cyan: #17a2b8 !default;
$color-blue: #066fd1;
$color-azure: #3586c9;
$color-indigo: #4263eb;
$color-purple: #ae3ec9;
$color-pink: #d6336c;
$color-red: #e73f3f;
$color-orange: #f76707;
$color-yellow: #f59f00;
$color-lime: #74b816;
$color-green: #2fb344;
$color-teal: #0ca678;
$color-cyan: #17a2b8;
$text-muted: $gray-500 !default;
$text-secondary: $gray-500 !default;
$text-secondary-light: $gray-400 !default;
$text-secondary-dark: $gray-600 !default;
@@ -219,27 +210,28 @@ $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: var(--#{$prefix}gray-300) !default;
$disabled-color: color-transparent(var(--#{$prefix}body-color), .4) !default;
$primary: $blue !default;
$secondary: $text-secondary !default;
$muted: $text-secondary !default;
$success: $green !default;
$info: $azure !default;
$warning: $orange !default;
$warning: $yellow !default;
$danger: $red !default;
$link-color: $primary !default;
$theme-colors: (
"primary": $primary,
"secondary": $text-secondary,
"secondary": $secondary,
"success": $success,
"info": $info,
"warning": $warning,
"danger": $danger,
"light": $light,
"dark": $dark,
"muted": $text-secondary,
"muted": $muted,
) !default;
$extra-colors: (
@@ -289,7 +281,16 @@ $gray-colors: (
gray-900: $gray-900,
) !default;
$theme-colors: map-merge($theme-colors, map-merge($extra-colors, $social-colors));
$theme-colors: map-merge($theme-colors, map-merge($extra-colors, ()));
// BACKDROPS
$backdrop-opacity: 24% !default;
$backdrop-blur: 4px !default;
$backdrop-bg: var(--#{$prefix}gray-800) !default;
$backdrops: (
dark: color-mix(in srgb, var(--#{$prefix}color-dark), transparent var(--#{$prefix}backdrop-opacity)),
light: color-mix(in srgb, var(--#{$prefix}color-light), transparent var(--#{$prefix}backdrop-opacity)),
) !default;
// Borders
$border-width: 1px !default;
@@ -300,6 +301,15 @@ $border-radius: 6px !default;
$border-radius-lg: 8px !default;
$border-radius-pill: 100rem !default;
$border-radiuses: (
0: 0,
sm: $border-radius-sm,
md: $border-radius,
lg: $border-radius-lg,
pill: $border-radius-pill,
null: var(--#{$prefix}border-radius-md),
) !default;
$border-values: (
null: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $border-color-translucent,
wide: $border-width-wide var(--#{$prefix}border-style) $border-color-translucent,
@@ -310,10 +320,10 @@ $border-values: (
$icon-color: var(--#{$prefix}gray-400) !default;
// Code
$code-color: var(--#{$prefix}gray-600) !default;
$code-color: var(--#{$prefix}primary) !default;
$code-font-size: $font-size-reative-sm !default;
$code-line-height: 1.25rem !default;
$code-bg: var(--#{$prefix}bg-surface-secondary) !default;
$code-bg: var(--#{$prefix}primary-lt) !default;
$pre-padding: 1rem !default;
$pre-bg: var(--#{$prefix}bg-surface-dark) !default;
@@ -333,54 +343,62 @@ $avatar-size: 2.5rem !default;
$avatar-status-size: .75rem !default;
$avatar-font-size: 1rem !default;
$avatar-icon-size: 1.5rem !default;
$avatar-brand-size: 1.25rem !default;
$avatar-bg: var(--#{$prefix}bg-surface-secondary) !default;
$avatar-sizes: (
"xxs": (
size: 1rem,
font-size: .5rem,
icon-size: .75rem,
status-size: .25rem
icon-size: .5rem,
status-size: .25rem,
brand-size: .5rem
),
"xs": (
size: 1.25rem,
font-size: $h6-font-size,
icon-size: .75rem,
status-size: .375rem
status-size: .375rem,
brand-size: .75rem
),
"sm": (
size: 2rem,
font-size: $h5-font-size,
icon-size: 1.5rem,
status-size: .5rem
status-size: .5rem,
brand-size: 1rem
),
"md": (
size: 2.5rem,
font-size: $h4-font-size,
icon-size: 1.5rem,
status-size: .75rem
status-size: .75rem,
brand-size: 1.25rem
),
"lg": (
size: 3rem,
font-size: $h2-font-size,
icon-size: 2rem,
status-size: .75rem
status-size: .75rem,
brand-size: 1.25rem
),
"xl": (
size: 5rem,
font-size: 2rem,
icon-size: 3rem,
status-size: 1rem
status-size: 1rem,
brand-size: 1.25rem
),
"2xl": (
size: 7rem,
font-size: 3rem,
icon-size: 5rem,
status-size: 1rem
status-size: 1rem,
brand-size: 2rem
),
) !default;
$avatar-border-radius: var(--#{$prefix}border-radius) !default;
$avatar-font-size: $h4-font-size !default;
$avatar-box-shadow: var(--#{$prefix}box-shadow-border) !default;
$avatar-box-shadow: var(--#{$prefix}shadow-border) !default;
$avatar-list-spacing: -0.5;
$link-decoration: none !default;
@@ -498,13 +516,13 @@ $box-shadow-card-hover: rgba(var(--#{$prefix}body-color-rgb), 0.16) 0 2px 16px 0
$box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1) !default;
$box-shadows: (
box-shadow: $box-shadow,
box-shadow-border: $box-shadow-border,
box-shadow-transparent: $box-shadow-transparent,
box-shadow-input: $box-shadow-input,
box-shadow-card: $box-shadow-card,
box-shadow-card-hover: $box-shadow-card-hover,
box-shadow-dropdown: $box-shadow-dropdown,
null: $box-shadow,
border: $box-shadow-border,
transparent: $box-shadow-transparent,
input: $box-shadow-input,
card: $box-shadow-card,
card-hover: $box-shadow-card-hover,
dropdown: $box-shadow-dropdown,
) !default;
$box-shadow-inset: 0 0 transparent !default;
@@ -569,7 +587,7 @@ $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}font-sans-serif) !default;
$input-btn-font-family: var(--#{$prefix}body-font-face) !default;
$input-btn-padding-y: 0.5rem - 0.0625rem !default;
$input-btn-icon-size: $icon-size !default;
@@ -594,7 +612,7 @@ $input-height-lg: null !default;
$input-border-radius: var(--#{$prefix}border-radius) !default;
$input-color: var(--#{$prefix}body-color) !default;
$input-focus-color: var(--#{$prefix}body-color) !default;
$input-box-shadow: var(--#{$prefix}box-shadow-input) !default;
$input-box-shadow: var(--#{$prefix}shadow-input) !default;
// Buttons
$btn-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
@@ -605,7 +623,7 @@ $btn-padding-x: 1rem !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;
$btn-box-shadow: var(--#{$prefix}box-shadow-input) !default;
$btn-box-shadow: var(--#{$prefix}shadow-input) !default;
// Cards
$card-title-spacer-y: 1.25rem !default;
@@ -677,16 +695,16 @@ $dropdown-max-width: 25rem !default;
$dropdown-scrollable-height: 13rem !default;
$dropdown-link-active-color: var(--#{$prefix}primary) !default;
$dropdown-link-active-bg: var(--#{$prefix}active-bg) !default;
$dropdown-box-shadow: var(--#{$prefix}box-shadow-dropdown) !default;
$dropdown-box-shadow: var(--#{$prefix}shadow-dropdown) !default;
$dropdown-divider-bg: $dropdown-border-color !default;
$dropdown-divider-margin-y: var(--#{$prefix}spacer-2) !default;
// Tooltip
$tooltip-bg: var(--#{$prefix}bg-surface-dark) !default;
$tooltip-color: var(--#{$prefix}light) !default;
$tooltip-bg: var(--#{$prefix}bg-surface-inverted) !default;
$tooltip-color: var(--#{$prefix}text-inverted) !default;
$tooltip-padding-y: var(--#{$prefix}spacer-1) !default;
$tooltip-padding-x: var(--#{$prefix}spacer-2) !default;
$tooltip-padding-x: var(--#{$prefix}spacer-3) !default;
// Loader
$loader-size: 2.5rem !default;
@@ -701,7 +719,7 @@ $list-group-item-padding-x: $card-cap-padding-x !default;
// Modals
$modal-backdrop-opacity: 0.24 !default;
$modal-backdrop-bg: $dark !default;
$modal-backdrop-bg: $backdrop-bg !default;
$modal-backdrop-blur: 4px !default;
$modal-fade-transform: translate(0, -1rem) !default;
@@ -760,7 +778,7 @@ $navbar-height: 3.5rem !default;
$navbar-padding-y: 0.25rem !default;
$navbar-light-color: var(--#{$prefix}secondary) !default;
$navbar-hover-color: $white !default;
$navbar-hover-color: var(--#{$prefix}body-color) !default;
$navbar-border-width: var(--#{$prefix}border-width) !default;
$navbar-border-color: var(--#{$prefix}border-color) !default;
@@ -899,7 +917,7 @@ $input-bg: var(--#{$prefix}bg-forms) !default;
$input-disabled-bg: $disabled-bg !default;
$input-border-color: var(--#{$prefix}border-color) !default;
$input-border-color-translucent: var(--#{$prefix}border-color-translucent) !default;
$input-placeholder-color: $text-secondary-light !default;
$input-placeholder-color: var(--#{$prefix}tertiary) !default;
$input-group-addon-bg: var(--#{$prefix}bg-surface-secondary) !default;
$input-group-addon-color: var(--#{$prefix}gray-500) !default;
@@ -930,7 +948,7 @@ $form-check-radio-checked-bg-image: url("data:image/svg+xml,<svg xmlns='http://w
$form-check-label-disabled-opacity: $text-secondary-opacity;
$form-select-indicator-color: $text-secondary-light !default;
$form-select-box-shadow: var(--#{$prefix}box-shadow-input) !default;
$form-select-box-shadow: var(--#{$prefix}shadow-input) !default;
$form-switch-width: 2rem !default;
$form-switch-height: 1.25rem !default;
@@ -959,7 +977,7 @@ $form-feedback-icon-invalid: str-replace(
$form-label-font-size: $h4-font-size !default;
$form-label-font-weight: var(--#{$prefix}font-weight-medium) !default;
$form-secondary-color: var(--#{$prefix}gray-500) !default;
$form-secondary-color: var(--#{$prefix}secondary) !default;
// Legend
$legend-bg: var(--#{$prefix}border-color) !default;
@@ -967,7 +985,7 @@ $legend-size: 0.75em !default;
$legend-border-radius: var(--#{$prefix}border-radius-sm) !default;
// Flags
$flag-box-shadow: var(--#{$prefix}box-shadow-border) !default;
$flag-box-shadow: var(--#{$prefix}shadow-border) !default;
$flag-border-radius: var(--#{$prefix}border-radius) !default;
$flag-sizes: $avatar-sizes !default;
@@ -977,6 +995,7 @@ $payment-sizes: $avatar-sizes !default;
// Offcanvas
$offcanvas-bg-color: var(--#{$prefix}bg-surface) !default;
$offcanvas-border-color: var(--#{$prefix}border-color) !default;
$offcanvas-backdrop-bg: $backdrop-bg !default;
// Placeholder
$placeholder-opacity-min: 0.1 !default;

View File

@@ -0,0 +1,143 @@
//
// Clearfix
//
.clearfix {
@include clearfix();
}
//
// Text truncation
//
.text-truncate {
@include text-truncate();
}
//
// Vertical rule
//
.vr {
display: inline-block;
align-self: stretch;
width: $vr-border-width;
min-height: 1em;
background-color: currentcolor;
opacity: $hr-opacity;
}
//
// Stretched link
//
.stretched-link {
&::#{$stretched-link-pseudo-element} {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: $stretched-link-z-index;
content: "";
}
}
//
// Visually hidden
//
.visually-hidden,
.visually-hidden-focusable:not(:focus):not(:focus-within) {
@include visually-hidden();
}
//
// Stacks
//
.hstack {
display: flex;
flex-direction: row;
align-items: center;
align-self: stretch;
}
.vstack {
display: flex;
flex: 1 1 auto;
flex-direction: column;
align-self: stretch;
}
//
// Position
//
// Shorthand
.fixed-top {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: $zindex-fixed;
}
.fixed-bottom {
position: fixed;
right: 0;
bottom: 0;
left: 0;
z-index: $zindex-fixed;
}
// Responsive sticky top and bottom
@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
.sticky#{$infix}-top {
position: sticky;
top: 0;
z-index: $zindex-sticky;
}
.sticky#{$infix}-bottom {
position: sticky;
bottom: 0;
z-index: $zindex-sticky;
}
}
}
//
// Aspect ratio
//
.ratio {
position: relative;
width: 100%;
&::before {
display: block;
padding-top: var(--#{$prefix}aspect-ratio);
content: "";
}
> * {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
@each $key, $ratio in $aspect-ratios {
.ratio-#{$key} {
--#{$prefix}aspect-ratio: #{$ratio};
}
}
//
// Focus ring
//
.focus-ring:focus {
outline: 0;
// By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
}

View File

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

View File

@@ -2,8 +2,9 @@
// stylelint-disable declaration-no-important
body {
&:not(.theme-dark):not([data-bs-theme=dark]) {
@if $enable-dark-mode {
:root {
&:not(.theme-dark):not([data-bs-theme="dark"]) {
.hide-theme-light {
display: none !important;
}
@@ -14,7 +15,7 @@ body {
}
&.theme-dark,
&[data-bs-theme=dark] {
&[data-bs-theme="dark"] {
.hide-theme-dark {
display: none !important;
}
@@ -23,32 +24,33 @@ body {
display: none !important;
}
}
}
}
@if $enable-dark-mode {
@include color-mode(dark, true) {
--#{$prefix}body-color: #{$body-color-dark};
--#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};
--#{$prefix}muted: #{$text-secondary-dark};
color-scheme: dark;
--#{$prefix}body-color: var(--#{$prefix}gray-200);
--#{$prefix}secondary: var(--#{$prefix}gray-400);
--#{$prefix}body-bg: #{$darken-dark};
--#{$prefix}body-bg-rgb: #{to-rgb($darken-dark)};
--#{$prefix}body-bg: var(--#{$prefix}gray-900);
--#{$prefix}emphasis-color: #{$body-emphasis-color-dark};
--#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};
--#{$prefix}bg-forms: #{$darken-dark};
--#{$prefix}bg-surface: #{$dark};
--#{$prefix}bg-surface-dark: #{$darken-dark};
--#{$prefix}bg-surface-secondary: #{$lighten-dark};
--#{$prefix}bg-surface-tertiary: #{$darken-dark};
--#{$prefix}bg-forms: var(--#{$prefix}gray-900);
--#{$prefix}bg-surface: var(--#{$prefix}gray-800);
--#{$prefix}bg-surface-inverted: var(--#{$prefix}gray-100);
--#{$prefix}bg-surface-secondary: var(--#{$prefix}gray-900);
--#{$prefix}bg-surface-tertiary: var(--#{$prefix}gray-800);
--#{$prefix}link-color: #{color.adjust($primary, $lightness: 8%)};
--#{$prefix}link-hover-color: #{$primary};
--#{$prefix}text-inverted: var(--#{$prefix}gray-800);
--#{$prefix}link-color: var(--#{$prefix}primary);
--#{$prefix}link-hover-color: color-mix(in srgb, var(--#{$prefix}primary), black 20%);
--#{$prefix}active-bg: #{$lighten-dark};
--#{$prefix}disabled-color: var(--#{$prefix}gray-700);
--#{$prefix}disabled-color: #{color-transparent(var(--#{$prefix}body-color), .4)};
--#{$prefix}border-color: var(--#{$prefix}dark-mode-border-color);
--#{$prefix}border-color: var(--#{$prefix}gray-700);
--#{$prefix}border-color-translucent: var(
--#{$prefix}dark-mode-border-color-translucent
);
@@ -62,13 +64,6 @@ body {
--#{$prefix}code-color: var(--#{$prefix}body-color);
--#{$prefix}code-bg: #{$border-dark-color-dark};
@each $color, $value in $theme-colors {
--#{$prefix}#{$color}-lt: #{theme-color-lighter($value, $dark)};
--#{$prefix}#{$color}-lt-rgb: #{to-rgb(
theme-color-lighter($value, $dark)
)};
}
.navbar-brand-autodark {
.navbar-brand-image {
@include autodark-image;

View File

@@ -83,6 +83,7 @@ Navbar
--#{$prefix}navbar-active-border-color: #{$navbar-active-border-color};
--#{$prefix}navbar-active-bg: #{$navbar-light-active-bg};
--#{$prefix}navbar-border-color: #{$navbar-border-color};
--#{$prefix}navbar-hover-color: #{$navbar-hover-color};
align-items: stretch;
min-height: $navbar-height;
box-shadow: inset 0 calc(-1 * var(--#{$prefix}navbar-border-width)) 0 0 var(--#{$prefix}navbar-border-color);
@@ -275,7 +276,7 @@ Navbar transparent
Navbar nav
*/
.navbar-nav {
--#{$prefix}nav-link-hover-bg: #{$navbar-nav-link-hover-bg};
--#{$prefix}nav-link-hover-bg: #{color-transparent(var(--#{$prefix}nav-link-color), 0.04)};
margin: 0;
padding: 0;
align-items: stretch;

View File

@@ -81,6 +81,7 @@
min-height: 2.25rem;
flex-direction: column;
justify-content: center;
max-width: 100%;
.page-wrapper & {
margin: var(--#{$prefix}page-padding-y) 0 0;

View File

@@ -2,31 +2,38 @@
:host {
font-size: 16px;
height: 100%;
@include media-breakpoint-up(lg) {
margin-left: calc(100vw - 100%);
margin-right: 0;
}
}
:root,
:host,
[data-bs-theme="light"] {
@each $name, $color in map-merge($theme-colors, $gray-colors) {
--#{$prefix}#{$name}: #{$color};
--#{$prefix}#{$name}-rgb: #{to-rgb($color)};
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};
--#{$prefix}#{$name}-darken: #{theme-color-darker($color)};
--#{$prefix}#{$name}-lt: #{theme-color-lighter($color)};
--#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
}
color-scheme: light;
--#{$prefix}spacer: var(--#{$prefix}spacer-2);
@each $name, $value in $spacers {
--#{$prefix}spacer-#{$name}: #{$value};
}
--#{$prefix}spacer: #{$spacer};
--#{$prefix}bg-surface: #{$bg-surface};
--#{$prefix}bg-surface-secondary: #{$bg-surface-secondary};
--#{$prefix}bg-surface-tertiary: #{$bg-surface-tertiary};
--#{$prefix}bg-surface-dark: #{$bg-surface-dark};
--#{$prefix}bg-surface: var(--#{$prefix}bg-surface-primary);
--#{$prefix}bg-surface-primary: var(--#{$prefix}white);
--#{$prefix}bg-surface-secondary: var(--#{$prefix}gray-50);
--#{$prefix}bg-surface-tertiary: var(--#{$prefix}gray-50);
--#{$prefix}bg-surface-dark: var(--#{$prefix}gray-900);
--#{$prefix}bg-surface-inverted: var(--#{$prefix}gray-900);
--#{$prefix}bg-forms: var(--#{$prefix}bg-surface);
--#{$prefix}text-inverted: var(--#{$prefix}gray-100);
--#{$prefix}body-color: var(--#{$prefix}gray-700);
--#{$prefix}body-bg: var(--#{$prefix}bg-surface-secondary);
--#{$prefix}link-color: var(--#{$prefix}primary);
--#{$prefix}link-hover-color: color-mix(in srgb, var(--#{$prefix}primary), #000 20%);
--#{$prefix}secondary: var(--#{$prefix}gray-500);
--#{$prefix}tertiary: var(--#{$prefix}gray-400);
--#{$prefix}border-color: #{$border-color};
--#{$prefix}border-color-translucent: #{$border-color-translucent};
--#{$prefix}border-dark-color: #{$border-dark-color};
@@ -50,23 +57,8 @@
--#{$prefix}page-padding: #{$page-padding};
--#{$prefix}page-padding-y: #{$page-padding-y};
@include media-breakpoint-down($cards-grid-breakpoint) {
--#{$prefix}page-padding: #{$page-padding-sm};
}
@each $name, $value in $font-weights {
--#{$prefix}font-weight-#{$name}: #{$value};
}
@each $name, $value in $font-sizes {
--#{$prefix}font-size-h#{$name}: #{$value};
}
@each $name, $value in $line-heights {
--#{$prefix}line-height-#{$name}: #{$value};
}
@each $name, $value in $box-shadows {
--#{$prefix}#{$name}: #{$value};
}
}

View File

@@ -4,5 +4,5 @@
}
.body-gradient {
background: var(--tblr-bg-surface) linear-gradient(to bottom, var(--tblr-bg-surface-secondary) 12%, var(--tblr-bg-surface) 99%) repeat-x top center/100% 100vh;
background: var(--#{$prefix}bg-surface) linear-gradient(to bottom, var(--#{$prefix}bg-surface-secondary) 12%, var(--#{$prefix}bg-surface) 99%) repeat-x top center/100% 100vh;
}

View File

@@ -39,7 +39,7 @@ $pricing-card-width: 22rem;
&.featured {
z-index: 1;
border: 2px solid $primary;
border: 2px solid var(--#{$prefix}primary);
order: -1;
@include media-breakpoint-up(md) {

View File

@@ -1,6 +1,6 @@
@mixin subheader($include-color: true, $include-line-height: true) {
font-size: $h5-font-size;
font-weight: var(--#{$prefix}font-weight-bold);
font-weight: var(--#{$prefix}font-weight-medium);
text-transform: uppercase;
letter-spacing: .04em;
@@ -13,9 +13,9 @@
}
}
@mixin scrollbar($color: var(--#{$prefix}body-color-rgb)) {
@mixin scrollbar {
#{if(&, "&", "*")} {
scrollbar-color: rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .16);
scrollbar-color: color-transparent(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color)), .20) transparent;
}
#{if(&, "&", "*")}::-webkit-scrollbar {
@@ -27,7 +27,7 @@
#{if(&, "&", "*")}::-webkit-scrollbar-thumb {
border-radius: 1rem;
border: 5px solid transparent;
box-shadow: inset 0 0 0 1rem rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .16);
box-shadow: inset 0 0 0 1rem color-transparent(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color)), .20);
}
#{if(&, "&", "*")}::-webkit-scrollbar-track {
@@ -35,7 +35,7 @@
}
#{if(&, "&", "*")}:hover::-webkit-scrollbar-thumb {
box-shadow: inset 0 0 0 1rem rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .32);
box-shadow: inset 0 0 0 1rem color-transparent(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color)), .40);
}
#{if(&, "&", "*")}::-webkit-scrollbar-corner {

View File

@@ -0,0 +1 @@
@import "props"

View File

@@ -0,0 +1,121 @@
@import "config";
[data-bs-theme-base="slate"] {
--#{$prefix}gray-50: #f8fafc;
--#{$prefix}gray-100: #f1f5f9;
--#{$prefix}gray-200: #e2e8f0;
--#{$prefix}gray-300: #cbd5e1;
--#{$prefix}gray-400: #94a3b8;
--#{$prefix}gray-500: #64748b;
--#{$prefix}gray-600: #475569;
--#{$prefix}gray-700: #334155;
--#{$prefix}gray-800: #1e293b;
--#{$prefix}gray-900: #0f172a;
--#{$prefix}gray-950: #020617;
}
[data-bs-theme-base="gray"] {
--#{$prefix}gray-50: #f9fafb;
--#{$prefix}gray-100: #f3f4f6;
--#{$prefix}gray-200: #e5e7eb;
--#{$prefix}gray-300: #d1d5db;
--#{$prefix}gray-400: #9ca3af;
--#{$prefix}gray-500: #6b7280;
--#{$prefix}gray-600: #4b5563;
--#{$prefix}gray-700: #374151;
--#{$prefix}gray-800: #1f2937;
--#{$prefix}gray-900: #111827;
--#{$prefix}gray-950: #030712;
}
[data-bs-theme-base="zinc"] {
--#{$prefix}gray-50: #fafafa;
--#{$prefix}gray-100: #f4f4f5;
--#{$prefix}gray-200: #e4e4e7;
--#{$prefix}gray-300: #d4d4d8;
--#{$prefix}gray-400: #a1a1aa;
--#{$prefix}gray-500: #71717a;
--#{$prefix}gray-600: #52525b;
--#{$prefix}gray-700: #3f3f46;
--#{$prefix}gray-800: #27272a;
--#{$prefix}gray-900: #18181b;
--#{$prefix}gray-950: #09090b;
}
[data-bs-theme-base="neutral"] {
--#{$prefix}gray-50: #fafafa;
--#{$prefix}gray-100: #f5f5f5;
--#{$prefix}gray-200: #e5e5e5;
--#{$prefix}gray-300: #d4d4d4;
--#{$prefix}gray-400: #a3a3a3;
--#{$prefix}gray-500: #737373;
--#{$prefix}gray-600: #525252;
--#{$prefix}gray-700: #404040;
--#{$prefix}gray-800: #262626;
--#{$prefix}gray-900: #171717;
--#{$prefix}gray-950: #0a0a0a;
}
[data-bs-theme-base="stone"] {
--#{$prefix}gray-50: #fafaf9;
--#{$prefix}gray-100: #f5f5f4;
--#{$prefix}gray-200: #e7e5e4;
--#{$prefix}gray-300: #d6d3d1;
--#{$prefix}gray-400: #a8a29e;
--#{$prefix}gray-500: #78716c;
--#{$prefix}gray-600: #57534e;
--#{$prefix}gray-700: #44403c;
--#{$prefix}gray-800: #292524;
--#{$prefix}gray-900: #1c1917;
--#{$prefix}gray-950: #0c0a09;
}
[data-bs-theme-base="pink"] {
--#{$prefix}gray-50: #fdf2f8;
--#{$prefix}gray-100: #fce7f3;
--#{$prefix}gray-200: #fbcfe8;
--#{$prefix}gray-300: #f9a8d4;
--#{$prefix}gray-400: #f472b6;
--#{$prefix}gray-500: #ec4899;
--#{$prefix}gray-600: #db2777;
--#{$prefix}gray-700: #be185d;
--#{$prefix}gray-800: #9d174d;
--#{$prefix}gray-900: #831843;
--#{$prefix}gray-950: #500724;
}
@each $name, $value in $extra-colors {
[data-bs-theme-primary="#{$name}"] {
--#{$prefix}primary: #{$value};
--#{$prefix}primary-rgb: #{to-rgb($value)};
}
}
@each $value in (0, .5, 1, 1.5, 2) {
[data-bs-theme-radius="#{$value}"] {
--#{$prefix}border-radius-scale: #{$value};
}
}
[data-bs-theme-primary="inverted"] {
--#{$prefix}primary: var(--#{$prefix}gray-800);
--#{$prefix}primary-fg: var(--#{$prefix}light);
--#{$prefix}primary-rgb: #{to-rgb($dark)};
&[data-bs-theme="dark"],
[data-bs-theme="dark"] {
--#{$prefix}primary: #{$light};
--#{$prefix}primary-fg: var(--#{$prefix}dark);
--#{$prefix}primary-rgb: #{to-rgb($light)};
}
}
@each $name, $value in (monospace: $font-family-monospace, sans-serif: $font-family-sans-serif, serif: $font-family-serif, comic: $font-family-comic) {
[data-bs-theme-font="#{$name}"] {
--#{$prefix}body-font-family: var(--#{$prefix}font-#{$name});
@if $name == "monospace" {
--#{$prefix}body-font-size: 80%;
}
}
}

View File

@@ -8,7 +8,9 @@
@import "vendor/dropzone";
@import "vendor/fslightbox";
@import "vendor/plyr";
@import "vendor/tinymce";
@import "vendor/wysiwyg";
@import "vendor/stars-rating";
@import "vendor/coloris";
@import "vendor/typed";
@import "vendor/turbo";

View File

@@ -1,3 +1,2 @@
@import "core";

View File

@@ -3,41 +3,57 @@
--#{$prefix}accordion-border-color: var(--#{$prefix}border-color);
--#{$prefix}accordion-border-radius: #{$accordion-border-radius};
--#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
--#{$prefix}accordion-padding-x: #{$accordion-body-padding-x};
--#{$prefix}accordion-gap: 0;
--#{$prefix}accordion-active-color: #{$accordion-button-active-color};
--#{$prefix}accordion-btn-color: var(--#{$prefix}accordion-color);
--#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
--#{$prefix}accordion-btn-toggle-width: 1.25rem;
--#{$prefix}accordion-padding-x: #{$accordion-body-padding-x};
--#{$prefix}accordion-btn-padding-x: var(--#{$prefix}accordion-padding-x);
--#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
--#{$prefix}accordion-btn-font-weight: var(--#{$prefix}font-weight-medium);
--#{$prefix}accordion-body-padding-x: var(--#{$prefix}accordion-padding-x);
--#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
--#{$prefix}accordion-active-color: #{$accordion-button-active-color};
--#{$prefix}accordion-gap: 0;
display: flex;
flex-direction: column;
gap: var(--#{$prefix}accordion-gap);
}
.accordion-header {
.accordion-button {
position: relative;
display: flex;
gap: 1rem;
align-items: center;
width: 100%;
padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-padding-x);
color: var(--#{$prefix}accordion-btn-color);
text-align: left;
color: inherit;
text-align: inherit;
background-color: transparent;
border: 0;
overflow-anchor: none;
transition: transform $transition-time;
font-size: inherit;
font-weight: var(--#{$prefix}accordion-btn-font-weight);
gap: .75rem;
&:not(.collapsed) {
border-bottom-color: transparent;
box-shadow: none;
color: var(--#{$prefix}accordion-active-color);
}
}
.accordion-header {
margin: 0;
position: relative;
display: flex;
gap: 1rem;
align-items: center;
width: 100%;
color: var(--#{$prefix}accordion-btn-color);
text-align: left;
background-color: transparent;
border: 0;
overflow-anchor: none;
transition: transform $transition-time;
&:hover {
z-index: 2;
@@ -55,11 +71,11 @@
}
}
.accordion-header-icon {
.accordion-button-icon {
color: var(--#{$prefix}secondary);
}
.accordion-header-toggle {
.accordion-button-toggle {
display: flex;
line-height: 1;
transition: $transition-time transform;
@@ -69,7 +85,7 @@
width: var(--#{$prefix}accordion-btn-toggle-width);
height: var(--#{$prefix}accordion-btn-toggle-width);
.accordion-header:not(.collapsed) & {
.accordion-button:not(.collapsed) & {
transform: rotate(-180deg);
color: var(--#{$prefix}accordion-active-color);
}
@@ -79,23 +95,14 @@
}
}
.accordion-header-toggle-plus {
.accordion-header:not(.collapsed) & {
.accordion-button-toggle-plus {
.accordion-button:not(.collapsed) & {
path:first-child {
opacity: 0;
}
}
}
.accordion-header-text {
margin-bottom: 0;
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0;
}
}
.accordion-item {
color: var(--#{$prefix}accordion-color);
border: var(--#{$prefix}border-width) solid var(--#{$prefix}accordion-border-color);
@@ -145,13 +152,11 @@
border-bottom: 0;
}
// stylelint-disable selector-max-class
> .accordion-collapse,
> .accordion-header .accordion-button,
> .accordion-header .accordion-button.collapsed {
@include border-radius(0);
}
// stylelint-enable selector-max-class
}
}
@@ -165,7 +170,7 @@
}
.accordion-inverted {
.accordion-header-toggle {
.accordion-button-toggle {
order: -1;
margin-left: 0;
}

View File

@@ -1,14 +1,16 @@
.alert {
--#{$prefix}alert-bg: transparent;
// scss-docs-start alert-variables
--#{$prefix}alert-color: var(--#{$prefix}body-color);
--#{$prefix}alert-bg: #{color-transparent(var(--#{$prefix}alert-color), .1)};
--#{$prefix}alert-padding-x: #{$alert-padding-x};
--#{$prefix}alert-padding-y: #{$alert-padding-y};
--#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
--#{$prefix}alert-color: inherit;
--#{$prefix}alert-border-color: var(--#{$prefix}border-color);
--#{$prefix}alert-border-color: #{color-transparent(var(--#{$prefix}alert-color), .2)};
--#{$prefix}alert-border: var(--#{$prefix}border-width) solid var(--#{$prefix}alert-border-color);
--#{$prefix}alert-border-radius: var(--#{$prefix}border-radius);
--#{$prefix}alert-link-color: inherit;
--#{$prefix}alert-heading-font-weight: var(--#{$prefix}font-weight-medium);
// scss-docs-end
position: relative;
padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
@@ -66,8 +68,8 @@
.btn-close {
position: absolute;
top: 0;
right: 0;
top: calc(var(--#{$prefix}alert-padding-x) / 2 - 1px);
right: calc(var(--#{$prefix}alert-padding-y) / 2 - 1px);
z-index: 1;
padding: calc(var(--#{$prefix}alert-padding-y) * 1.25) var(--#{$prefix}alert-padding-x);
}
@@ -75,12 +77,21 @@
.alert-important {
border-color: var(--#{$prefix}alert-color);
color: var(--#{$prefix}alert-color);
background-color: var(--#{$prefix}alert-color);
color: var(--#{$prefix}white);
.btn-close,
.alert-description {
color: inherit;
}
.alert-icon {
color: inherit;
}
}
.alert-minor {
background: transparent;
border-color: var(--tblr-border-color);
}
@each $name, $color in $theme-colors {

View File

@@ -1,10 +1,12 @@
.avatar {
--#{$prefix}avatar-size: #{$avatar-size};
--#{$prefix}avatar-size: var(--#{$prefix}avatar-list-size, #{$avatar-size});
--#{$prefix}avatar-status-size: #{$avatar-status-size};
--#{$prefix}avatar-bg: #{$avatar-bg};
--#{$prefix}avatar-box-shadow: #{$avatar-box-shadow};
--#{$prefix}avatar-box-shadow-color: var(--#{$prefix}border-color-translucent);
--#{$prefix}avatar-box-shadow: inset 0 0 0 1px var(--#{$prefix}avatar-box-shadow-color);
--#{$prefix}avatar-font-size: #{$avatar-font-size};
--#{$prefix}avatar-icon-size: #{$avatar-icon-size};
--#{$prefix}avatar-brand-size: #{$avatar-brand-size};
position: relative;
width: var(--#{$prefix}avatar-size);
height: var(--#{$prefix}avatar-size);
@@ -22,6 +24,7 @@
background: var(--#{$prefix}avatar-bg) no-repeat center/cover;
border-radius: $avatar-border-radius;
box-shadow: var(--#{$prefix}avatar-box-shadow);
transition: color $transition-time, background-color $transition-time, box-shadow $transition-time;
.icon {
width: var(--#{$prefix}avatar-icon-size);
@@ -38,6 +41,11 @@
@at-root a#{&} {
cursor: pointer;
&:hover {
color: var(--#{$prefix}primary);
--#{$prefix}avatar-box-shadow-color: var(--#{$prefix}primary);
}
}
}
@@ -51,18 +59,20 @@
--#{$prefix}avatar-status-size: #{map-get($size, status-size)};
--#{$prefix}avatar-font-size: #{map-get($size, font-size)};
--#{$prefix}avatar-icon-size: #{map-get($size, icon-size)};
}
--#{$prefix}avatar-brand-size: #{map-get($size, brand-size)};
.avatar-#{$avatar-size} .badge:empty {
.badge:empty {
width: map-get($size, status-size);
height: map-get($size, status-size);
}
}
}
//
// Avatar list
//
.avatar-list {
--#{$prefix}avatar-list-size: #{$avatar-size};
@include elements-list;
a.avatar {
@@ -78,7 +88,13 @@
.avatar {
margin-right: calc(#{$avatar-list-spacing} * var(--#{$prefix}avatar-size)) !important;
box-shadow: var(--#{$prefix}avatar-box-shadow), 0 0 0 2px var(--#{$prefix}card-cap-bg, var(--#{$prefix}card-bg, var(--#{$prefix}bg-surface)));
box-shadow: var(--#{$prefix}avatar-box-shadow), 0 0 0 2px var(--#{$prefix}card-bg, var(--#{$prefix}bg-surface));
}
}
@each $avatar-size, $size in $avatar-sizes {
.avatar-list-#{$avatar-size} {
--#{$prefix}avatar-list-size: #{map-get($size, size)};
}
}
@@ -86,8 +102,6 @@
// Avatar upload
//
.avatar-upload {
width: 4rem;
height: 4rem;
border: var(--#{$prefix}border-width) dashed var(--#{$prefix}border-color);
background: $form-check-input-bg;
box-shadow: none;
@@ -117,3 +131,15 @@
margin-top: calc(-.5 * var(--#{$prefix}avatar-size));
box-shadow: 0 0 0 .25rem var(--#{$prefix}card-bg, var(--#{$prefix}body-bg));
}
.avatar-brand {
width: var(--#{$prefix}avatar-brand-size);
height: var(--#{$prefix}avatar-brand-size);
position: absolute;
right: -2px;
bottom: -2px;
z-index: 1000;
background: var(--#{$prefix}bg-surface);
border-radius: var(--#{$prefix}border-radius);
border: 1px solid var(--#{$prefix}border-color);
}

View File

@@ -28,7 +28,7 @@
line-height: var(--#{$prefix}badge-line-height);
@at-root a#{&} {
color: $card-bg;
background: var(--#{$prefix}bg-surface-secondary);
}
.icon {

View File

@@ -10,7 +10,7 @@
--#{$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}box-shadow-input);
--#{$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};
@@ -72,7 +72,7 @@
//
// Button color variations
//
@each $color, $value in $theme-colors {
@each $color, $value in map-merge($theme-colors, $social-colors) {
.btn-#{$color} {
@if $color == 'dark' {
--#{$prefix}btn-border-color: var(--#{$prefix}dark-mode-border-color);
@@ -84,7 +84,7 @@
--#{$prefix}btn-active-border-color: transparent;
}
--#{$prefix}btn-color: var(--#{$prefix}#{$color}-fg);
--#{$prefix}btn-color: var(--#{$prefix}#{$color}-fg, #{$white});
--#{$prefix}btn-bg: var(--#{$prefix}#{$color});
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color}-darken);
@@ -92,7 +92,7 @@
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color}-darken);
--#{$prefix}btn-disabled-bg: var(--#{$prefix}#{$color});
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color}-fg);
--#{$prefix}btn-box-shadow: var(--#{$prefix}box-shadow-input);
--#{$prefix}btn-box-shadow: var(--#{$prefix}shadow-input);
}
.btn-outline-#{$color} {
@@ -107,21 +107,19 @@
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color});
--#{$prefix}btn-disabled-border-color: var(--#{$prefix}#{$color});
}
}
@each $name, $color in $theme-colors {
.btn-ghost-#{$name} {
--#{$prefix}btn-color: var(--#{$prefix}#{$name});
.btn-ghost-#{$color} {
--#{$prefix}btn-color: var(--#{$prefix}#{$color});
--#{$prefix}btn-bg: transparent;
--#{$prefix}btn-border-color: transparent;
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$name}-fg);
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$name});
--#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$name});
--#{$prefix}btn-active-color: var(--#{$prefix}#{$name}-fg);
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$name});
--#{$prefix}btn-hover-color: var(--#{$prefix}#{$color}-fg);
--#{$prefix}btn-hover-bg: var(--#{$prefix}#{$color});
--#{$prefix}btn-hover-border-color: var(--#{$prefix}#{$color});
--#{$prefix}btn-active-color: var(--#{$prefix}#{$color}-fg);
--#{$prefix}btn-active-bg: var(--#{$prefix}#{$color});
--#{$prefix}btn-active-border-color: transparent;
--#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$name});
--#{$prefix}btn-disabled-color: var(--#{$prefix}#{$color});
--#{$prefix}btn-disabled-bg: transparent;
--#{$prefix}btn-disabled-border-color: transparent;
--#{$prefix}gradient: none;
@@ -186,9 +184,9 @@
.btn-floating {
position: fixed;
z-index: $zindex-fixed;
bottom: 1.5rem;
right: 1.5rem;
border-radius: $border-radius-pill;
bottom: 1rem;
left: 1rem;
box-shadow: var(--#{$prefix}shadow-dropdown);
}
//

View File

@@ -1,7 +1,60 @@
.btn-close {
--#{$prefix}btn-close-color: currentColor;
--#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
--#{$prefix}btn-close-opacity: #{$btn-close-opacity};
--#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
--#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
--#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
--#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
--#{$prefix}btn-close-size: #{$btn-close-width};
width: var(--#{$prefix}btn-close-size);
height: var(--#{$prefix}btn-close-size);
padding: $btn-close-padding-y $btn-close-padding-x;
color: var(--#{$prefix}btn-close-color);
mask: var(--#{$prefix}btn-close-bg) no-repeat center/calc(var(--#{$prefix}btn-close-size) * .75);
background-color: var(--#{$prefix}btn-close-color);
border: 0;
border-radius: var(--tblr-border-radius);
opacity: var(--#{$prefix}btn-close-opacity);
cursor: pointer;
display: block;
&:hover {
color: var(--#{$prefix}btn-close-color);
text-decoration: none;
opacity: var(--#{$prefix}btn-close-hover-opacity);
}
&:focus {
outline: none;
outline: 0;
box-shadow: var(--#{$prefix}btn-close-focus-shadow);
opacity: var(--#{$prefix}btn-close-focus-opacity);
}
&:disabled,
&.disabled {
pointer-events: none;
user-select: none;
opacity: var(--#{$prefix}btn-close-disabled-opacity);
}
}
// @mixin btn-close-white() {
// --#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
// }
// .btn-close-white {
// @include btn-close-white();
// }
// :root,
// [data-bs-theme="light"] {
// --#{$prefix}btn-close-filter: #{$btn-close-filter};
// }
// @if $enable-dark-mode {
// @include color-mode(dark, true) {
// @include btn-close-white();
// }
// }

View File

@@ -109,6 +109,7 @@
.dropdown-menu-card {
padding: 0;
min-width: 20rem;
> .card {
margin: 0;

View File

@@ -68,7 +68,7 @@ Form control
*/
.form-control {
&:-webkit-autofill {
box-shadow: 0 0 0 1000px var(--#{$prefix}body-bg) inset;
box-shadow: 0 0 0 1000px var(--#{$prefix}bg-surface-secondary) inset;
color: var(--#{$prefix}body-color);
-webkit-text-fill-color: var(--#{$prefix}body-color);
}
@@ -125,7 +125,7 @@ Form control
.form-fieldset {
padding: 1rem;
margin-bottom: 1rem;
background: var(--#{$prefix}body-bg);
background: var(--#{$prefix}bg-surface-secondary);
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
border-radius: var(--#{$prefix}border-radius);
}
@@ -239,3 +239,13 @@ label[for="floating-input"] {
text-overflow: ellipsis;
white-space: nowrap;
}
/**
Forms on mobile devices
*/
.form-control,
.form-select {
@include media-breakpoint-down(sm) {
font-size: 1rem;
}
}

View File

@@ -2,7 +2,7 @@
Markdown
*/
.markdown {
line-height: $line-height-lg;
line-height: $line-height-xl;
> :first-child {
margin-top: 0;
@@ -24,6 +24,10 @@ Markdown
h1, h2, h3, h4, h5, h6 {
font-weight: var(--#{$prefix}font-weight-bold);
}
h2, h3, h4, h5, h6 {
margin-top: 2.5rem;
}
}
> table {
@@ -39,5 +43,10 @@ Markdown
> img,
> p > img {
border-radius: var(--#{$prefix}border-radius);
border: 1px solid var(--#{$prefix}border-color);
}
> pre {
max-height: 20rem;
}
}

View File

@@ -1,3 +1,7 @@
.nav {
--#{$prefix}nav-link-hover-bg: #{color-transparent(var(--#{$prefix}nav-link-color), 0.04)};
}
.nav-vertical {
&,
.nav {
@@ -13,7 +17,8 @@
.nav-link.active,
.nav-item.show .nav-link {
font-weight: var(--#{$prefix}font-weight-medium);
font-weight: var(--#{$prefix}font-weight-bold);
color: var(--#{$prefix}nav-link-active-color);
}
&.nav-pills {
@@ -46,7 +51,12 @@
color: $nav-bordered-link-active-color;
border-color: $nav-bordered-link-active-border-color;
}
}
.nav-underline {
.nav-link {
border-radius: 0;
}
}
.nav-link {

View File

@@ -1,5 +1,5 @@
.offcanvas-header {
border-bottom: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $border-color-translucent;
border-bottom: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
}
.offcanvas-footer {

View File

@@ -1,5 +1,7 @@
.pagination {
--#{$prefix}pagination-gap: .25rem;
user-select: none;
gap: var(--#{$prefix}pagination-gap);
}
.page-link {

View File

@@ -1,12 +1,14 @@
.signature {
--#{$prefix}signature-padding: var(--#{$prefix}spacer-1);
--#{$prefix}signature-border-radius: var(--#{$prefix}border-radius);
border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color);
padding: var(--#{$prefix}spacer-1);
padding: var(--#{$prefix}signature-padding);
border-radius: var(--#{$prefix}border-radius);
}
.signature-canvas {
border: var(--#{$prefix}border-width) dashed var(--#{$prefix}border-color);
border-radius: var(--#{$prefix}border-radius-sm);
border-radius: calc(var(--#{$prefix}signature-border-radius) - var(--#{$prefix}signature-padding));
display: block;
cursor: crosshair;
width: 100%;

View File

@@ -17,6 +17,10 @@
@each $name, $color in $extra-colors {
.steps-#{$name} {
--#{$prefix}steps-color: var(--#{$prefix}#{$name});
&-lt {
--#{$prefix}steps-color: var(--#{$prefix}#{$name}-lt);
}
}
}

View File

@@ -154,8 +154,24 @@ Table sort
//
.table-selectable {
tbody tr {
.on-checked {
display: none;
}
.on-unchecked {
display: initial;
}
&:has(.table-selectable-check:checked) {
background-color: $table-active-bg;
.on-checked {
display: initial;
}
.on-unchecked {
display: none;
}
}
}
}

View File

@@ -7,7 +7,7 @@
border-radius: var(--#{$prefix}border-radius);
padding: 0 0.5rem;
background: var(--#{$prefix}bg-surface);
box-shadow: var(--#{$prefix}box-shadow-input);
box-shadow: var(--#{$prefix}shadow-input);
gap: .5rem;
.btn-close {

View File

@@ -1,11 +1,17 @@
@import "typo/hr";
.lead {
line-height: 1.4;
color: var(--#{$prefix}secondary);
font-size: inherit;
}
a {
text-decoration-skip-ink: auto;
color: color-mix(in srgb, transparent, var(--#{$prefix}link-color) var(--#{$prefix}link-opacity, 100%));
&:hover {
color: color-mix(in srgb, transparent, var(--#{$prefix}link-hover-color) var(--#{$prefix}link-opacity, 100%));
}
}
h1,
@@ -107,10 +113,14 @@ dl {
}
pre {
--#{$prefix}scrollbar-color: #{$pre-color};
padding: $pre-padding;
background: $pre-bg;
color: $pre-color;
border-radius: var(--#{$prefix}border-radius);
line-height: $line-height-base;
@include scrollbar;
code {
background: transparent;
@@ -157,7 +167,7 @@ Selection
*/
::selection,
.text-selected {
background-color: color-transparent(var(--#{$prefix}primary), .1);
background-color: color-transparent(var(--#{$prefix}primary), 0.1);
}
.text-selected {
@@ -179,6 +189,17 @@ a:hover:has(.icon) {
text-decoration: none;
}
.link-hoverable {
border-radius: var(--#{$prefix}border-radius);
transition: background-color 0.15s ease-in-out;
&:hover {
text-decoration: none;
color: var(--#{$prefix}primary);
background: color-transparent(var(--#{$prefix}secondary), 0.04);
}
}
/**
Subheader
*/
@@ -191,7 +212,7 @@ Mentions
*/
.mention {
display: inline-block;
box-shadow: var(--tblr-box-shadow-border);
box-shadow: var(--#{$prefix}box-shadow-border);
border-radius: var(--#{$prefix}border-radius-pill);
line-height: calc(16em / 12);
font-size: calc(12em / 14);
@@ -243,10 +264,51 @@ $text-variants: (
@each $variant, $color in $text-variants {
.text-#{$variant} {
background: color-transparent($color, .04);
background: color-transparent($color, 0.04);
background: color-transparent($color, 4%);
text-decoration: underline;
text-decoration-thickness: 1px;
text-decoration-color: $color;
}
}
.steps {
--#{$prefix}steps-padding: 2rem;
--#{$prefix}steps-item-size: 1.5rem;
margin-left: 1rem;
padding-left: var(--#{$prefix}steps-padding);
counter-reset: step;
border-left: 1px solid var(--#{$prefix}border-color);
margin-bottom: 2rem;
flex-direction: column;
h3 {
counter-increment: step;
&:not(:first-child) {
margin-top: 2.5rem !important;
}
&:before {
content: counter(step);
display: inline-block;
position: absolute;
margin-top: 1px;
margin-left: calc(-1 * var(--#{$prefix}steps-padding) - var(--#{$prefix}steps-item-size) / 2);
width: var(--#{$prefix}steps-item-size);
height: var(--#{$prefix}steps-item-size);
text-align: center;
color: var(--#{$prefix}body-color);
border: 1px solid var(--#{$prefix}border-color);
background: var(--#{$prefix}bg-surface);
border-radius: var(--#{$prefix}border-radius);
line-height: calc(var(--#{$prefix}steps-item-size) - 2px);
font-size: var(--#{$prefix}font-size-h4);
font-weight: var(--#{$prefix}font-weight-bold);
}
}
>:last-child {
margin-bottom: 0;
}
}

View File

@@ -21,7 +21,7 @@ Color Input
height: 1.5rem;
color: $white;
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $input-border-color-translucent;
border-radius: 3px;
border-radius: var(--#{$prefix}border-radius);
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
&:before {

View File

@@ -2,6 +2,7 @@
Image check
*/
.form-imagecheck {
--#{$prefix}form-imagecheck-radius: var(--#{$prefix}border-radius);
position: relative;
margin: 0;
cursor: pointer;
@@ -19,7 +20,7 @@ Image check
margin: 0;
user-select: none;
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
border-radius: 3px;
border-radius: var(--#{$prefix}form-imagecheck-radius);
.form-imagecheck-input:focus ~ & {
border-color: var(--#{$prefix}primary);
@@ -73,13 +74,13 @@ Image check
@include transition(opacity $transition-time);
&:first-child {
border-top-left-radius: 2px;
border-top-right-radius: 2px;
border-top-left-radius: calc(var(--#{$prefix}form-imagecheck-radius) - 1px);
border-top-right-radius: calc(var(--#{$prefix}form-imagecheck-radius) - 1px);
}
&:last-child {
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
border-bottom-right-radius: calc(var(--#{$prefix}form-imagecheck-radius) - 1px);
border-bottom-left-radius: calc(var(--#{$prefix}form-imagecheck-radius) - 1px);
}
.form-imagecheck:hover &,

View File

@@ -42,7 +42,7 @@ Select group
cursor: pointer;
user-select: none;
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $input-border-color;
border-radius: 3px;
border-radius: var(--#{$prefix}border-radius);
box-shadow: $input-box-shadow;
@include transition(border-color $transition-time, background $transition-time, color $transition-time);

View File

@@ -1,27 +1,55 @@
// All colors
@each $color, $value in map-merge($theme-colors, ( white: $white )) {
@each $color, $value in map-merge($theme-colors, ( white: $white)) {
.bg-#{"" + $color} {
--#{$prefix}bg-opacity: 1;
background-color: rgba(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity)) !important;
background-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}bg-opacity, 1) * 100%), transparent) !important;
}
.bg-#{"" + $color}-lt {
--#{$prefix}bg-opacity: 1;
--#{$prefix}text-opacity: 1;
color: rgba(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}text-opacity)) !important;
background-color: rgba(var(--#{$prefix}#{$color}-lt-rgb), var(--#{$prefix}bg-opacity)) !important;
color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}text-opacity, 1) * 100%), transparent) !important;
background-color: color-mix(in srgb, var(--#{$prefix}#{$color}-lt) calc(var(--#{$prefix}bg-opacity, 1) * 100%), transparent) !important;
}
.border-#{"" + $color} {
--#{$prefix}border-opacity: 1;
border-color: rgba(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}border-opacity)) !important;
border-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}border-opacity, 1) * 100%), transparent) !important;
}
.bg-gradient-from-#{"" + $color} {
--#{$prefix}gradient-from: var(--#{$prefix}#{$color});
}
.bg-gradient-to-#{"" + $color} {
--#{$prefix}gradient-to: var(--#{$prefix}#{$color});
}
.bg-gradient-via-#{"" + $color} {
--#{$prefix}gradient-via: var(--#{$prefix}#{$color});
--#{$prefix}gradient-stops: var(--#{$prefix}gradient-from, transparent), var(--#{$prefix}gradient-via, transparent), var(--#{$prefix}gradient-to, transparent);
}
.text-bg-#{"" + $color} {
color: color-contrast($value) if($enable-important-utilities, !important, null);
background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
}
.link-#{"" + $color} {
color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}link-opacity, 1) * 100%), transparent) !important;
text-decoration-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}link-underline-opacity, 1) * 100%), transparent) !important;
@if $link-shade-percentage != 0 {
&:hover,
&:focus {
$hover-color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));
color: RGBA(#{to-rgb($hover-color)}, var(--#{$prefix}link-opacity, 1)) if($enable-important-utilities, !important, null);
text-decoration-color: RGBA(to-rgb($hover-color), var(--#{$prefix}link-underline-opacity, 1)) if($enable-important-utilities, !important, null);
}
}
}
}
@each $color, $value in $theme-colors {
.text-#{"" + $color} {
--#{$prefix}text-opacity: 1;
color: rgba(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}text-opacity)) !important;
color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}text-opacity) * 100%), transparent) !important;
}
.text-#{"" + $color}-fg {
@@ -32,7 +60,7 @@
@each $color, $value in $gray-colors {
.bg-#{"" + $color} {
--#{$prefix}bg-opacity: 1;
background-color: rgba(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity)) !important;
background-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}bg-opacity) * 100%), transparent) !important;
}
.text-#{"" + $color}-fg {
@@ -40,6 +68,21 @@
}
}
@each $color, $value in $social-colors {
.bg-#{"" + $color} {
--#{$prefix}bg-opacity: 1;
background-color: color-mix(in srgb, var(--#{$prefix}#{$color}) calc(var(--#{$prefix}bg-opacity) * 100%), transparent) !important;
}
.text-#{"" + $color}-fg {
color: $value !important;
}
}
.bg-inverted {
--#{$prefix}bg-opacity: 1;
background-color: color-mix(in srgb, var(--#{$prefix}bg-surface-inverted) calc(var(--#{$prefix}bg-opacity) * 100%), transparent) !important;
}
.bg-surface {
background-color: var(--#{$prefix}bg-surface) !important;
}
@@ -51,3 +94,7 @@
.bg-surface-tertiary {
background-color: var(--#{$prefix}bg-surface-tertiary) !important;
}
.bg-surface-backdrop {
background-color: color-transparent($modal-backdrop-bg, $modal-backdrop-opacity) !important;
}

View File

@@ -1,5 +1,3 @@
// stylelint-disable declaration-no-important
/*
Scrollable
*/

View File

@@ -1,6 +1,11 @@
.clr-picker {
box-shadow: var(--#{$prefix}box-shadow-dropdown);
box-shadow: var(--#{$prefix}shadow-dropdown);
background-color: var(--#{$prefix}bg-surface);
border-radius: var(--#{$prefix}border-radius);
}
.clr-gradient {
border-radius: var(--#{$prefix}border-radius) var(--#{$prefix}border-radius) 0 0;
}
input.clr-color {

View File

@@ -1,6 +1,6 @@
.fslightbox-container {
font-family: inherit !important;
background: rgba($modal-backdrop-bg, $modal-backdrop-opacity) !important;
background: var(--#{$prefix}backdrop-bg) !important;
backdrop-filter: blur($modal-backdrop-blur) !important;
}

View File

@@ -1,7 +1,6 @@
// @import "jsvectormap/dist/jsvectormap";
.jvm-tooltip {
background: $dark;
background: var(--#{$prefix}bg-surface-inverted);
color: var(--#{$prefix}text-inverted);
font-family: inherit;
font-size: $h5-font-size;
box-shadow: $card-box-shadow;

View File

@@ -62,6 +62,7 @@
.container__months {
box-shadow: none;
background-color: var(--#{$prefix}bg-forms);
border-radius: calc(var(--#{$prefix}border-radius) - 1px);
}
}
}

View File

@@ -1,5 +1,3 @@
// @import "nouislider/dist/nouislider";
.noUi-target {
border: 0;
box-shadow: none;

View File

@@ -1,4 +1,4 @@
.tox-tinymce {
.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;
@@ -12,7 +12,7 @@
background: transparent !important;
}
.tox:not(.tox-tinymce-inline) {
.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;
@@ -29,6 +29,6 @@
}
.tox .tox-toolbar-overlord,
.tox:not(.tox-tinymce-inline) .tox-editor-header {
.tox:not(.tox-hugerte-inline) .tox-editor-header {
background: transparent !important;
}

View File

@@ -2,8 +2,6 @@ $select-color-dropdown: #fff;
$select-color-dropdown-border-top: red;
$input-border-width: 1px;
// @import "tom-select/src/scss/tom-select.bootstrap5.scss";
:root {
--ts-pr-clear-button: 0rem;
--ts-pr-caret: 0rem;
@@ -13,6 +11,11 @@ $input-border-width: 1px;
color: inherit;
}
.focus .ts-control {
border-radius: var(--#{$prefix}border-radius);
}
.ts-control {
color: inherit;
@@ -41,7 +44,7 @@ $input-border-width: 1px;
.ts-dropdown {
background: var(--#{$prefix}bg-surface);
color: var(--#{$prefix}body-color);
box-shadow: var(--#{$prefix}box-shadow-dropdown);
box-shadow: var(--#{$prefix}shadow-dropdown);
z-index: $zindex-dropdown;
.option {

3
core/scss/vendor/_turbo.scss vendored Normal file
View File

@@ -0,0 +1,3 @@
.turbo-progress-bar {
background: var(--#{$prefix}primary);
}

34
core/scss/vendor/_wysiwyg.scss vendored Normal file
View File

@@ -0,0 +1,34 @@
.tox-hugerte {
border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color) !important;
border-radius: $border-radius !important;
font-family: var(--#{$prefix}font-sans-serif) !important;
}
.tox-toolbar__group {
padding: 0 .5rem 0;
}
.tox .tox-toolbar__primary {
background: transparent !important;
}
.tox:not(.tox-hugerte-inline) {
.tox-editor-header {
border-bottom: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color) !important;
box-shadow: none !important;
padding: 0 !important;
}
}
.tox-tbtn {
margin: 0 !important;
}
.tox-statusbar {
border-top: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color) !important;
}
.tox .tox-toolbar-overlord,
.tox:not(.tox-hugerte-inline) .tox-editor-header {
background: transparent !important;
}

View File

@@ -0,0 +1,43 @@
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { babel } from '@rollup/plugin-babel'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import replace from '@rollup/plugin-replace'
import dotenv from "rollup-plugin-dotenv"
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const external = []
const plugins = [
dotenv({
cwd: path.resolve(__dirname, '../..'),
}),
babel({
exclude: 'node_modules/**',
babelHelpers: 'bundled'
})
]
plugins.push(
replace({
'process.env.NODE_ENV': '"production"',
preventAssignment: true
}),
nodeResolve()
)
const rollupConfig = {
input: [
path.resolve(__dirname, `../js/docs.js`)
],
output: {
name: 'docs',
dir: path.resolve(__dirname, `../dist/js`),
format: 'esm',
generatedCode: 'es2015'
},
external,
plugins
}
export default rollupConfig

1
docs/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.vercel

34
docs/CHANGELOG.md Normal file
View File

@@ -0,0 +1,34 @@
# @tabler/docs
## 1.0.1
### 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

View File

@@ -0,0 +1,6 @@
export default {
layout: 'docs/default',
permalink: function ({page}) {
return `${page.filePathStem.replace(/^\/content\//, '/').replace(/\/index$/, '') }/index.html`;
},
};

View File

@@ -0,0 +1,8 @@
---
title: Tabler Emails
seoTitle: Tabler Emails - premium email templates
order: 4
description: Customizable email templates for over 90 clients and devices.
summary: Tabler Emails is a set of 80 eye-catching, customizable HTML templates. They are compatible with over 90 email clients and devices.
seoDescription: Tabler Emails is a collection of 80 premium, customizable HTML templates. They are compatible with over 90 email clients and devices.
---

View File

@@ -0,0 +1,29 @@
---
title: Compiled templates
order: 2
seoTitle: Tabler Emails - How to use the compiled HTML email templates
description: Learn how to use the compiled HTML email templates from the Tabler Emails package.
summary: The compiled HTML files from the Tabler Emails package are ready to use in your email marketing campaigns. This guide explains how to use them effectively.
seoDescription: The compiled HTML files from the Tabler Emails package are ready to use in your email marketing campaigns. This guide explains how to use them effectively.
---
## Compiled version of the template
If you only want to change content (text or images) of the email template, you can just use the compiled HTML files - `compiled.html`. They are ready to use, and you need only a basic knowledge of HTML to modify them.
## How to modify the compiled HTML files
1. Open the `compiled.html` file in your favorite code editor.
2. Find the content you want to change inside the `<body>` element.
3. Modify the content as needed:
* Change the text, which is mostly placed inside the `<p>` or `<h1>` tags.
* Change the images by replacing the `src` attribute of the `<img>` tag.
* Change the links by replacing the `href` attribute of the `<a>` tag.
* Remove the HTML elements you don't need, but only if you're sure that they are not necessary for the email template to work correctly.
4. If you changed the images, make sure to replace them in the `assets/` folder.
5. Remove all the images you don't use from `assets/` to reduce the size of the email template.
## How to use the compiled HTML files
After changing the templates as needed, you can use them in your email campaigns.
The `compiled.html` file with the `assets/` folder should be sent to your email marketing tool, like Mailchimp, SendGrid, or any other.

View File

@@ -0,0 +1,63 @@
---
title: Contents
order: 1
seoTitle: Tabler Emails - Content of the package
description: Content of the Tabler Emails package.
summary: The Tabler Emails package contains files which can be used by everyone, even without great knowledge of HTML.
seoDescription: todo
---
## Folder structure
Once you unzip the downloaded file, you will see the following structure:
```
tabler-emails/
├── emails/
| ├── absence/
| | ├── assets/
| | ├── compiled.html
| | ├── compiled-dark.html
| | ├── source.html
| | ├── source-dark.html
| | ├── screenshot.jpg
| | ├── screenshot-dark.jpg
| | ├── screenshot-mobile.jpg
| | └── screenshot-mobile-dark.jpg
| ├── access-token/
| ├── account-deleted/
| ├── .../
| ├── welcome/
| └── whishlist/
├── images/
| ├── chart-donuts/
| ├── icons/
| ├── illustrations/
| └── overlays/
├── license.txt
└── readme.html
```
## Understanding the file structure in Tabler Emails
The **Tabler Emails** package is organized into a clear and efficient folder structure to streamline the use of its assets. Below is a breakdown of its key directories:
### 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](/docs/emails/compiled-html) section.
* Source HTML files for light and dark themes. Find more information in the [Source HTML](/docs/emails/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.
### 2. Images: `images/`
It contains 4 subfolders with images used across the different email templates:
* `chart-donuts/`: Images of donut charts with different fills.
* `icons/`: [Tabler Icons](/icons) used in the email templates, in PNG version.
* `illustrations/`: PNG versions of [Tabler Illustrations](/illustrations) for light and dark themes.
* `overlays/`: Overlay images used in the email templates.
### 3. License: `license.txt`
This file contains the license information for the Tabler Emails package.
### 4. Readme: `readme.html`
This file with the main information about the Tabler Emails package. It contains a brief description of the package and instructions on how to use it.

View File

@@ -0,0 +1,9 @@
---
title: Introduction
seoTitle: Introduction to Tabler Emails
description: Base information about Tabler Emails package.
summary: Tabler Emails is a set of 80 eye-catching, customizable HTML templates. They are compatible with over 90 email clients and devices.
seoDescription: Tabler Emails is a collection of 80 premium, customizable HTML templates. They are compatible with over 90 email clients and devices.
---

View File

@@ -0,0 +1,26 @@
---
title: Source templates
order: 3
seoTitle: Tabler Emails - How to use the source HTML email templates
description: Learn how to use the source HTML email templates from the Tabler Emails package.
summary: The source HTML files from the Tabler Emails package need a bit more work than the compiled ones. Learn how to use them.
seoDescription: The source HTML files from the Tabler Emails package need a bit more work than the compiled ones. Learn how to use them.
---
## Source version of the template
If you want to make more advanced changes to the email template, you can use the source HTML files - `source.html` combined with the `theme.css` file. They are ready to use, but you need a basic knowledge of HTML and CSS to modify them.
## How to modify the source HTML files
1. Open the `source.html` file in your favorite code editor.
2. Open the `theme.css` file from the `assets/`* directory in the same editor.
3. Change all the content and styles as needed.
4. Use a selected tool to inline the CSS styles into the HTML file. There are a lot of options, such as:
* Online tools like [Juice](https://automattic.github.io/juice/) or [Mailchimp CSS Inliner Tool](https://templates.mailchimp.com/resources/inline-css/).
* NPM tools like [juice](https://www.npmjs.com/package/juice) or [inline-css](https://www.npmjs.com/package/inline-css).
5. Save the output HTML file.
## How to use the source HTML files
To use the modified HTML template send the output file with the `assets/` folder to your email marketing tool.

View File

@@ -7,7 +7,7 @@ description: Over 5000 pixel-perfect icons for web design and development
## Browse icons
Tabler Icons is a comprehensive icon library that features over <IconsCount rounded /> high-quality icons. These icons are designed with a clean and modern aesthetic, making them suitable for a wide range of applications.
Tabler Icons is a comprehensive icon library that features {{ iconsCount }} high-quality icons. These icons are designed with a clean and modern aesthetic, making them suitable for a wide range of applications.
To use Tabler Icons, you can visit their website at https://tabler-icons.io. From there, you can browse the full collection of icons by category or search for a specific icon using the search bar. Once you have found an icon you like, you can download it in various file formats, including SVG, PNG, and Icon Font.

View File

@@ -4,11 +4,11 @@ description: Tabler Icons library for Preact framework.
summary: Tabler Icons for Preact provides an optimized collection of icons specifically designed for use with Preact. These lightweight and scalable icons are easy to integrate into Preact-based projects.
---
![](/docs/icons/package-preact.png)
![](/img/icons/package-preact.png)
## Installation
<TabsPackage name="@tabler/icons-preact" />
{% include "docs/tabs-package.html" name="@tabler/icons-preact" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -4,11 +4,11 @@ description: Tabler Icons library for React framework.
summary: Tabler Icons for React offers a robust set of icons tailored for React applications, providing developers with a seamless way to enhance their user interfaces with high-quality, scalable graphics.
---
![](/docs/icons/package-react.png)
![](/img/icons/package-react.png)
## Installation
<TabsPackage name="@tabler/icons-react" />
{% include "docs/tabs-package.html" name="@tabler/icons-react" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -4,12 +4,12 @@ description: Tabler Icons library for SolidJS framework.
summary: Tabler Icons for SolidJS is a lightweight library offering a vast selection of high-quality icons. It is designed for seamless integration with SolidJS, enabling developers to build visually appealing interfaces.
---
![](/docs/icons/package-solidjs.png)
![](/img/icons/package-solidjs.png)
## Installation
<TabsPackage name="@tabler/icons-solidjs" />
{% include "docs/tabs-package.html" name="@tabler/icons-solidjs" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -4,12 +4,12 @@ description: Tabler Icons library for Svelte framework.
summary: Tabler Icons for Svelte provides a clean and efficient way to use Tabler's comprehensive icon set in Svelte applications, helping developers deliver polished, user-friendly designs.
---
![](/docs/icons/package-svelte.png)
![](/img/icons/package-svelte.png)
## Installation
<TabsPackage name="@tabler/icons-svelte" />
{% include "docs/tabs-package.html" name="@tabler/icons-svelte" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).
@@ -17,7 +17,7 @@ or just [download from Github](https://github.com/tabler/tabler-icons/releases).
It's built with ESmodules so it's completely tree-shakable. Each icon can be imported as a component.
```sveltehtml
```html
<script lang="ts">
import { IconHeart } from '@tabler/icons-svelte';
</script>
@@ -29,7 +29,7 @@ import { IconHeart } from '@tabler/icons-svelte';
You can pass additional props to adjust the icon.
```sveltehtml
```html
<IconHeart size={48} stroke={1} />
```

View File

@@ -4,12 +4,12 @@ description: Tabler Icons library for Vue framework.
summary: Tabler Icons for Vue offers a collection of customizable and scalable icons designed for use in Vue applications, providing a powerful tool for creating modern and engaging interfaces.
---
![](/docs/icons/package-vue.png)
![](/img/icons/package-vue.png)
## Installation
<TabsPackage name="@tabler/icons-vue" />
{% include "docs/tabs-package.html" name="@tabler/icons-vue" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -4,7 +4,7 @@ description: Tabler Icons as a webfont.
summary: Tabler Icons as a webfont allows you to easily include icons in your projects using simple CSS classes, offering a lightweight and scalable solution for web development.
---
![](/docs/icons/package-webfont.png)
![](/img/icons/package-webfont.png)
## Installation

View File

@@ -12,4 +12,4 @@ The Tabler Icons Figma plugin is an essential tool for designers looking to enha
Using the plugin is simple: install it from the Figma community, launch it within your design file, and search for the desired icon by keyword. Once youve found the perfect icon, click to insert it into your design. You can easily customize the icons size, color, and stroke weight to fit your specific needs, making it a versatile addition to your design toolkit.
<BlogButton href="https://www.figma.com/community/plugin/1169807996149376642/Tabler-Icons">Download Plugin</BlogButton>
{% include "docs/download-button.html" href="https://www.figma.com/community/plugin/1169807996149376642/Tabler-Icons" title="Download Plugin" %}

View File

@@ -3,12 +3,12 @@ title: EPS version
description: Download Tabler Icons in EPS format.
---
![](/docs/icons/package-eps.png)
![](/img/icons/package-eps.png)
## Installation
<TabsPackage name="@tabler/icons-eps" />
{% include "docs/tabs-package.html" name="@tabler/icons-eps" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -3,12 +3,12 @@ title: PDF version
description: Download Tabler Icons in PDF format.
---
![](/docs/icons/package-pdf.png)
![](/img/icons/package-pdf.png)
## Installation
<TabsPackage name="@tabler/icons-pdf" />
{% include "docs/tabs-package.html" name="@tabler/icons-pdf" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -3,12 +3,12 @@ title: PNG version
description: Download Tabler Icons in PNG format.
---
![](/docs/icons/package-png.png)
![](/img/icons/package-png.png)
## Installation
<TabsPackage name="@tabler/icons-png" />
{% include "docs/tabs-package.html" name="@tabler/icons-png" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).

View File

@@ -3,11 +3,11 @@ title: SVG version
description: Download Tabler Icons in SVG format.
---
![](/docs/icons/package-svg.png)
![](/img/icons/package-svg.png)
## Installation
<TabsPackage name="@tabler/icons" />
{% include "docs/tabs-package.html" name="@tabler/icons" %}
or just [download from Github](https://github.com/tabler/tabler-icons/releases).
@@ -29,20 +29,7 @@ You can paste the content of the icon file into your HTML code to display it on
```html
<a href="">
<svg
xmlns="http://www.w3.org/2000/svg"
class="icon icon-tabler icon-tabler-disabled"
width="24"
height="24"
viewBox="0 0 24 24"
stroke-width="1.25"
stroke="currentColor"
fill="none"
stroke-linecap="round"
stroke-linejoin="round"
>
...
</svg>
{% include "ui/icon.html" icon="disabled" %}
Click me
</a>
```

View File

@@ -5,4 +5,4 @@ description: Customizable illustrations for modern web and mobile designs.
summary: Tabler Illustrations is a collection of customizable SVG illustrations for your web project. Explore our library of illustrations to enhance your web development experience.
---
![](/docs/cover-illustrations.png)
![](/img/cover-illustrations.png)

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