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

Compare commits

..

26 Commits

Author SHA1 Message Date
tabler.developer@gmail.com
95891cb108 remove old lemon squeezy integration 2023-12-07 02:07:01 +01:00
tabler.developer@gmail.com
09a8e2d2c5 lemon squeezy integration 2023-12-07 00:56:02 +01:00
tabler.developer@gmail.com
e4c76be517 fix lemon squeezy integration 2023-11-12 23:21:31 +01:00
tabler.developer@gmail.com
9bbdba9c67 add lemon squeezy webhooks 2023-11-08 01:39:58 +01:00
tabler.developer@gmail.com
4ef2d125c2 WIP add lemon squeezy webhooks 2023-10-26 22:12:50 +02:00
tabler.developer@gmail.com
7193a70102 pricing cards for lemon squeezy products 2023-10-20 02:00:26 +02:00
tabler.developer@gmail.com
442ac3bb4b fetch lemon squezy products 2023-10-09 00:44:43 +02:00
tabler.developer@gmail.com
877182140d Merge branch 'dev' into dev-site-entry 2023-10-08 14:34:08 +02:00
tabler.developer@gmail.com
9772160071 fix build 2023-09-09 01:46:05 +02:00
tabler.developer@gmail.com
aeff172a41 init subscriptions 2023-09-09 01:29:20 +02:00
tabler.developer@gmail.com
7e62c3a563 add navigation auth 2023-08-31 02:11:31 +02:00
tabler.developer@gmail.com
d673851db5 replace credentails auth with auth0 2023-08-28 00:16:54 +02:00
tabler.developer@gmail.com
020255f161 auth error handling 2023-08-27 00:44:28 +02:00
tabler.developer@gmail.com
5edc93384c fix error message 2023-08-21 22:30:49 +02:00
tabler.developer@gmail.com
0efbb01e55 fix package.json 2023-08-20 22:33:23 +02:00
tabler.developer@gmail.com
361e81e478 postinstall prisma generate 2023-08-20 22:25:44 +02:00
tabler.developer@gmail.com
ebda434060 add prisma generate 2023-08-20 22:03:49 +02:00
tabler.developer@gmail.com
8ffe0e6a1a auth fixes 2023-08-20 20:49:48 +02:00
tabler.developer@gmail.com
5250158600 remove nextauth url 2023-08-20 16:51:43 +02:00
tabler.developer@gmail.com
e307ba44fb add credentials provider 2023-08-20 16:43:59 +02:00
tabler.developer@gmail.com
8cf5058456 add google-brand icon 2023-08-15 21:50:59 +02:00
tabler.developer@gmail.com
b7c772ce1b styles fix 2023-08-15 21:18:11 +02:00
tabler.developer@gmail.com
1f0e6e074a add google provider 2023-08-15 16:26:15 +02:00
tabler.developer@gmail.com
a76df72359 prisma and auth init 2023-08-15 00:30:16 +02:00
tabler.developer@gmail.com
90f4931c96 tabler signup and signin 2023-08-12 18:05:13 +02:00
tabler.developer@gmail.com
33bbc46229 init tabler site entry 2023-08-08 23:09:36 +02:00
5335 changed files with 821407 additions and 25221 deletions

89
.all-contributorsrc Normal file
View File

@@ -0,0 +1,89 @@
{
"projectName": "tabler",
"projectOwner": "tabler",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
"CONTRIBUTORS.md"
],
"imageSize": 100,
"commit": true,
"commitConvention": "angular",
"contributors": [
{
"login": "codecalm",
"name": "Paweł Kuna",
"avatar_url": "https://avatars.githubusercontent.com/u/1282324?v=4",
"profile": "https://tabler.io/",
"contributions": [
"code",
"doc"
]
},
{
"login": "martynaaj",
"name": "Martyna",
"avatar_url": "https://avatars.githubusercontent.com/u/60158888?v=4",
"profile": "https://github.com/martynaaj",
"contributions": [
"doc"
]
},
{
"login": "deralaxo",
"name": "Dawid Harat",
"avatar_url": "https://avatars.githubusercontent.com/u/40028795?v=4",
"profile": "https://github.com/deralaxo",
"contributions": [
"code"
]
},
{
"login": "rjd22",
"name": "Robert-Jan de Dreu",
"avatar_url": "https://avatars.githubusercontent.com/u/160743?v=4",
"profile": "https://codersopinion.com/",
"contributions": [
"code"
]
},
{
"login": "FreexD",
"name": "Michał Wolny",
"avatar_url": "https://avatars.githubusercontent.com/u/7117869?v=4",
"profile": "https://github.com/FreexD",
"contributions": [
"code"
]
},
{
"login": "wangkanai",
"name": "Sarin Na Wangkanai",
"avatar_url": "https://avatars.githubusercontent.com/u/10666633?v=4",
"profile": "https://www.wangkanai.com/",
"contributions": [
"code"
]
},
{
"login": "WinterSilence",
"name": "Anton",
"avatar_url": "https://avatars.githubusercontent.com/u/3521094?v=4",
"profile": "https://ensostudio.ru/",
"contributions": [
"code"
]
},
{
"login": "dheineman",
"name": "Dave Heineman",
"avatar_url": "https://avatars.githubusercontent.com/u/516028?v=4",
"profile": "https://github.com/dheineman",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,
"linkToUsage": false
}

View File

@@ -1,57 +0,0 @@
#!/usr/bin/env node
'use strict'
const fs = require('node:fs')
const path = require('node:path')
const request = require('request')
const filePath = path.join(__dirname, '../src/pages/_data/photos.json')
const photos = JSON.parse(fs.readFileSync(filePath, 'utf8'))
const urlTitle = (str) => {
str = str
.toLowerCase()
.replaceAll('&', 'and')
.replace(/[^[a-z0-9-]/g, '-')
.replace(/-+/g, '-')
return str
}
const download = function (uri, filename, callback, error) {
request.head(uri, function (err, res, body) {
request(uri).pipe(fs.createWriteStream(filename))
.on('close', callback)
.on('error', error)
})
}
async function downloadPhotos() {
for (const key in photos) {
const photo = photos[key]
let filename, i = 1;
do {
filename = `${urlTitle(photo['title'])}${i > 1 ? `-${i}` : ''}.jpg`
i++
} while (fs.existsSync(path.join(__dirname, `../src/static/photos/${filename}`)))
await new Promise((resolve, reject) => {
download(photo['path'], path.join(__dirname, `../src/static/photos/${filename}`), function () {
resolve()
}, function () {
reject()
});
})
photos[key]['file'] = filename
photos[key]['horizontal'] = photo['width'] > photo['height']
}
fs.writeFileSync(filePath, JSON.stringify(photos))
}
downloadPhotos();

View File

@@ -1,37 +0,0 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs'),
path = require('path');
const iconsTags = require('../node_modules/@tabler/icons/icons.json'),
iconsPkg = require('../node_modules/@tabler/icons/package.json');
const prepareSvgFile = (svg) => {
return svg.replace(/\n/g, '').replace(/>\s+</g, '><').replace(/\s+/g, ' ')
}
let svgList = {}
for (let iconName in iconsTags) {
let iconData = iconsTags[iconName]
svgList[iconName] = {
name: iconName,
svg: {
outline: iconData.styles.outline ? prepareSvgFile(fs.readFileSync(path.join(__dirname, `../node_modules/@tabler/icons/icons/outline/${iconName}.svg`), 'utf8')) : null,
filled: iconData.styles.filled ? prepareSvgFile(fs.readFileSync(path.join(__dirname, `../node_modules/@tabler/icons/icons/filled/${iconName}.svg`), 'utf8')) : null,
}
}
}
fs.writeFileSync(
path.join(__dirname, `../src/pages/_data/icons-info.json`),
JSON.stringify({
version: iconsPkg.version,
count: Object.values(svgList).reduce((acc, icon) => {
return acc + (icon.svg.outline ? 1 : 0) + (icon.svg.filled ? 1 : 0)
}, 0)
})
)
fs.writeFileSync(path.join(__dirname, `../src/pages/_data/icons.json`), JSON.stringify(svgList))

View File

@@ -1,44 +0,0 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs'),
path = require('path'),
glob = require('glob');
const illustrations = glob
.sync(path.join(__dirname, `../src/static/illustrations/light/*.png`))
.map((file) => {
return path.basename(file, '.png')
})
fs.writeFileSync(
path.join(__dirname, `../src/pages/_data/illustrations.json`),
JSON.stringify(illustrations)
)
// let i = {}
// const dirs = ['light', 'dark', 'autodark']
// const ilustrations = ['not-found', 'computer-fix', 'boy-with-key', 'boy-girl']
// for(const dir of dirs) {
// i[dir] = {}
// for(const ilustration of ilustrations) {
// let svg = fs.readFileSync(path.join(__dirname, `../src/pages/_free-illustrations/${dir}/${ilustration}.svg`), 'utf8')
// svg = svg
// .replace(/\n+/g, ' ')
// .replace(/>\s+</g, '><')
// .replace(/\s+/g, ' ')
// .replace(/^[\n\s-]+/, '')
// i[dir][ilustration] = svg
// }
// }
// fs.writeFileSync(
// path.join(__dirname, `../src/pages/_data/free-illustrations.json`),
// JSON.stringify(i)
// )

View File

@@ -1,36 +0,0 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs'),
path = require('path'),
glob = require('glob'),
beautifyHtml = require('js-beautify').html;
const docs = glob
.sync(path.join(__dirname, `../docs/**/*.mdx`))
docs.forEach((file, i) => {
const oldContent = fs.readFileSync(file, 'utf8')
// get codeblocks from markdown
const content = oldContent.replace(/(```([a-z0-9]+).*?\n)(.*?)(```)/gs, (m, m1, m2, m3, m4) => {
if (m2 === 'html') {
let m3m = beautifyHtml(m3, {
"indent_size": 2,
"indent_char": " ",
}).trim();
// remove empty lines
m3m = m3m.replace(/^\s*[\r\n]/gm, '');
return m1 + m3m + "\n" + m4;
}
return m
})
if (content !== oldContent) {
fs.writeFileSync(file, content, 'utf8')
console.log(`Reformatted ${file}`)
}
})

View File

@@ -1,26 +0,0 @@
const glob = require('glob');
const fs = require('fs')
const path = require('path')
const srcDir = path.join(__dirname, '../src')
let foundFiles = []
glob.sync(`${srcDir}/pages/**/*.{html,md}`).forEach((file) => {
let fileContent = fs.readFileSync(file)
fileContent.toString().replace(/\{% include(_cached)? "([a-z0-9\/_-]+\.html)"/g, (f, c, filename) => {
filename = `${srcDir}/pages/_includes/${filename}`
if (!foundFiles.includes(filename)) {
foundFiles.push(filename)
}
})
})
let includeFiles = glob.sync(`${srcDir}/pages/_includes/**/*.html`)
includeFiles.forEach((file) => {
if (!foundFiles.includes(file)) {
console.log('file', file)
}
})

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Change Twitter to X brand

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Dependencies update

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Order menu items alphabetically

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Automatically retrieve and display the changelog from the CHANGELOG.md file.

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Initialize Visual Studio Code config

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Make horizontal rule direction aware

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Illustrations to v1.5

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Icons to v3.29.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Remove unused dependencies from `package.json`

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Replace Jekyll with Eleventy

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Dependencies update

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update TinyMCE to v7.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Remove invalid `z-index` setting for dropdowns

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Emails to v2.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Init changelog script

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Replace `.page-center` with `.my-auto` in single page layouts

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Add border-opacity variable for improved color utility

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix icon display issues in the Star Ratings component

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix `color` of disabled `dropdown-item` in Navbar component

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Bump pnpm/action-setup from 2 to 3

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Add social icons plugin

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Jekyll to version 4.3.4

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Add Tabler Illustrations

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update illustrations and enhance SVG handling in HTML

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix ids of custom size star ratings

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update icons to v2.42.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Set `font-size` of an `i` element with `icon` class in a `button` element

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Dependencies update

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix icons in `form-elements.html`

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Icons to v3.28.1

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix description of alerts with a description

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix colors of disabled `.ts-control`

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Center content on error and single page layouts

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Resolve map page issues

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Improve base font family loading

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Introduce Docker Compose Config to build and run Ttabler locally

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix `@charset` CSS declaration in bundle.

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update `_navbar.scss` with disabled dropdown menu items color

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Icons to v3.17.0

View File

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

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Refactor data structure by converting YAML files to JSON

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Increase `z-index` of `ts-dropdown` to prevent overlapping by buttons

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Adding punctuation to `SECURITY.md`

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix padding in code blocks

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Remove duplicated setting of color in `th` element

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix layout of search results for small and medium screens

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Remove `text-decoration` on hovering `a` element with class having `icon` class

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Improve documentation for alerts

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Bump `pnpm/action-setup` from 3 to 4

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update dependencies

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Set value of `$font-family-monospace` as default

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Refactor Dockerfile and package.json

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Enhance documentation

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix cells with inline icons

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix `color` of disabled `nav-link` in `nav-bordered`

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix the `z-index` value of the `nav-tab` inside `card-tab` #1933

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Increase contrast of active `dropdown-item` in vertical layout

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update documentation for Tabler components

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Do not display empty `fieldset` element

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Refactor SCSS variables to use `color.adjust` for improved color manipulation

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Add Tabler Illustrations

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Icons to v3.26.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Updated Tabler Icons to v3.24.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Node.js engine requirement to allow versions >=20

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update Tabler Icons to v3.14.0

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Upgrade Node.js from version 18 to version 20 for improved performance, security, and feature updates.

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": minor
---
New page with payment providers: `payment-providers.html`

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": minor
---
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

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Update package dependencies to latest versions

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix link to webfont version of Tabler Icons

View File

@@ -1,5 +0,0 @@
---
"@tabler/core": patch
---
Fix colors in date range datepicker

View File

@@ -13,7 +13,7 @@ jobs:
name: Add new issue and pr to project
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@v1.0.2
- uses: actions/add-to-project@v0.5.0
with:
project-url: https://github.com/orgs/tabler/projects/9/views/1
github-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -9,7 +9,7 @@ on:
env:
FORCE_COLOR: 2
NODE: 20
NODE: 18
jobs:
bundlewatch:
@@ -17,22 +17,22 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
- name: Install PNPM
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v2
with:
version: 8
version: 7
- name: Set up Bundler
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2
ruby-version: 2.6
bundler-cache: true
- name: Install pnpm dependencies

View File

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

View File

@@ -11,7 +11,7 @@ jobs:
pull-requests: write
issues: write
steps:
- uses: actions/stale@v9
- uses: actions/stale@v8
with:
days-before-issue-stale: 360
days-before-issue-close: 14

View File

@@ -1,6 +1,10 @@
name: Changed lock files
on:
pull_request: null
push:
branches:
- main
- dev
permissions:
pull-requests: read
@@ -11,7 +15,7 @@ jobs:
name: Verify lock file integrity
steps:
- name: Clone Tabler
uses: actions/checkout@v4
uses: actions/checkout@v2
- name: Prevent lock file change
uses: xalvarez/prevent-file-change-action@v1

View File

@@ -3,11 +3,7 @@ name: Release
on:
push:
branches:
- main
permissions:
contents: read
pull-requests: write
- dev
concurrency: ${{ github.workflow }}-${{ github.ref }}
@@ -17,17 +13,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Setup Node.js 18
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: 20
node-version: 18
- name: Install PNPM
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v2
with:
version: 8
version: 7
- name: Install Dependencies
run: pnpm install

View File

@@ -5,7 +5,7 @@ on:
types: [ opened, reopened ]
env:
NODE: 20
NODE: 18
permissions:
contents: read
@@ -15,18 +15,26 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE }}"
cache: pnpm
- name: Install PNPM
uses: pnpm/action-setup@v4
uses: pnpm/action-setup@v2
with:
version: 8
version: 7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6
bundler-cache: true
- run: ruby --version
- run: node --version
- name: Install pnpm dependencies

7
.gitignore vendored
View File

@@ -12,6 +12,8 @@ node_modules/
/.cache/
.sass-cache/
.vscode/
/_gh_pages/
/site/docs/**/dist/
/site/static/**/dist/
@@ -28,7 +30,4 @@ node_modules/
.yarn
.next
.vercel
package-lock.json
demo/
dist/
package-lock.json

2
.nvmrc
View File

@@ -1 +1 @@
20
18

3
.percy.yml Normal file
View File

@@ -0,0 +1,3 @@
version: 1
snapshot:
widths: [1440]

14
.vscode/settings.json vendored
View File

@@ -1,14 +0,0 @@
{
"files.exclude": {
"**/.git": false,
"**/.svn": false,
"**/.hg": false,
"**/CVS": false,
"**/.DS_Store": false,
"**/Thumbs.db": false,
"**/.idea/": false,
"dist": false,
"demo": false
},
"explorerExclude.backup": {}
}

View File

@@ -1,108 +1,6 @@
# Changelog
## `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.
All notable changes to this project will be documented in this file.
## `1.0.0-beta20` - 2023-08-24

View File

@@ -1,20 +1,23 @@
FROM ruby:3.2-alpine
FROM ruby:2.7-alpine
WORKDIR /app
ADD _config.yml /app/
ADD _config_prod.yml /app/
ADD Gemfile /app/
ADD Gemfile.lock /app/
ADD package.json /app/
ADD pnpm-lock.yaml /app/
ADD gulpfile.js /app/
RUN apk add --virtual build-dependencies build-base npm
RUN apk upgrade
RUN apk add --virtual build-dependencies build-base
RUN apk add npm --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community/
RUN npm i -g pnpm
RUN pnpm install
RUN bundle config --global silence_root_warning 1 && bundler install --verbose
# website
EXPOSE 3000
# website management (browser auto reload)
EXPOSE 3001
# run tabler
ENTRYPOINT [ "pnpm", "run", "start" ]
ENTRYPOINT [ "pnpm", "run", "start-plugins" ]

14
Gemfile Normal file
View File

@@ -0,0 +1,14 @@
source "https://rubygems.org"
gem "jekyll", "4.3.2"
group :jekyll_plugins do
gem "jekyll-random"
gem "jekyll-tidy"
gem "jekyll-timeago"
gem 'jekyll-redirect-from'
end
gem 'wdm', '>= 0.1.1' if Gem.win_platform?

89
Gemfile.lock Normal file
View File

@@ -0,0 +1,89 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.2.2)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.16.2)
forwardable-extended (2.6.0)
google-protobuf (3.24.3)
htmlbeautifier (1.4.2)
htmlcompressor (0.4.0)
http_parser.rb (0.8.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jekyll (4.3.2)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-random (0.1)
jekyll (>= 3.3, < 5.0)
jekyll-redirect-from (0.16.0)
jekyll (>= 3.3, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-tidy (0.2.2)
htmlbeautifier
htmlcompressor
jekyll
jekyll-timeago (0.15.0)
mini_i18n (>= 0.8.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
mini_i18n (0.9.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.3)
rake (13.0.6)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (4.1.3)
safe_yaml (1.0.5)
sass-embedded (1.68.0)
google-protobuf (~> 3.23)
rake (>= 13.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.4.2)
webrick (1.8.1)
PLATFORMS
ruby
DEPENDENCIES
jekyll (= 4.3.2)
jekyll-random
jekyll-redirect-from
jekyll-tidy
jekyll-timeago
BUNDLED WITH
2.4.19

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2018-2025 The Tabler Authors
Copyright (c) 2018-2023 The Tabler Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -13,29 +13,12 @@ A premium and open source dashboard template with a responsive and high-quality
<a href="https://github.com/tabler/tabler" target="__blank"><img alt="GitHub stars" src="https://img.shields.io/github/stars/tabler/tabler?style=social"></a>
</p>
## 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) :)**
<p align="center">
<a href="https://github.com/sponsors/codecalm">
<img src="https://cdn.jsdelivr.net/gh/tabler/sponsors@latest/sponsors.svg" alt="Tabler sponsors">
<img src='https://raw.githubusercontent.com/tabler/static/main/sponsors.svg'>
</a>
</p>
## Testing
<p align="center">Browser testing via:</p>
<p align="center">
<a href="https://www.lambdatest.com/" target="_blank">
<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">
</picture>
</a>
</p>
## 🔎 Preview
@@ -59,8 +42,6 @@ We've created this admin panel for everyone who wants to create templates based
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).
## 🪴 Project Activity
![Alt](https://repobeats.axiom.co/api/embed/61d1db34446967b0848af68198a392067e0f5870.svg "Repobeats analytics image")
@@ -85,25 +66,39 @@ Support this project by becoming a sponsor. Your logo will show up in this READM
<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`.
3. [Install Ruby](https://www.ruby-lang.org/en/documentation/installation/) - the recommended version is [2.7.6](https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.6.tar.gz).
4. [Install Bundler](https://bundler.io) with `gem install bundler` and finally run `bundle install`. It will install all Ruby dependencies, such as [Jekyll and plugins](https://jekyllrb.com).
**OSX users**:
```pnpm install```
and then
```npm run start```
1. NPM ```pnpm install```
2. install Ruby (2.5.* recommended)
```brew install ruby @2.5```
3. install bundler
```gem install bundler```
4. install
```bundle install```
- if bundler get any errors try
```
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
```
5. Run NPM
```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.
1. [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.
2. [Install Ruby+Devkit](https://rubyinstaller.org/downloads/) - the recommended version is [2.7.6](https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.6-1/rubyinstaller-devkit-2.7.6-1-x64.exe).
3. [Read guide](https://jekyllrb.com/docs/installation/windows/) to get Jekyll up and running without problems.
Once you complete the setup, you'll be able to run the various commands provided from the command line.
@@ -112,8 +107,10 @@ Once you complete the setup, you'll be able to run the various commands provided
You need to have `pnpm` and `bundler` 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.
1. From the root `/tabler` directory, run installation in the command line:
- `pnpm install`
- `bundler install`
2. Then execute `pnpm run start-plugins` 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.
@@ -131,9 +128,7 @@ 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.
If you don't want to install node/npm/ruby 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:
@@ -150,9 +145,6 @@ docker run -p 3000:3000 -p 3001:3001 -v $(pwd)/src:/app/src -v $(pwd)/_config.ym
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
@@ -201,6 +193,12 @@ Thank you to all our backers! 🙏 [Become a backer](https://opencollective.com/
<a href="https://opencollective.com/tabler#backers" target="_blank"><img src="https://opencollective.com/tabler/tiers/backer.svg?width=890&button=false" /></a>
## ❤️ Thanks
<a href="https://www.chromatic.com/"><img src="https://user-images.githubusercontent.com/321738/84662277-e3db4f80-af1b-11ea-88f5-91d67a5e59f6.png" width="153" height="30" alt="Chromatic" /></a>
Thanks to [Chromatic](https://www.chromatic.com/) for providing the visual testing platform that helps us review UI changes and catch visual regressions.
## License
See the [LICENSE](https://github.com/tabler/tabler/blob/master/LICENSE) file.

View File

@@ -11,6 +11,6 @@ We take security very seriously and ask that you follow the following process.
## Reporting a Vulnerability
If you think you may have found a security bug, We ask that you privately send the details to support@tabler.io.
If you think you may have found a security bug we ask that you privately send the details to support@tabler.io.
Please make sure to use a descriptive title in the email.

233
_config.yml Normal file
View File

@@ -0,0 +1,233 @@
source: src/pages
destination: tmp
keep_files:
- css
- js
- img
- dist
- static
- playground.html
use-iconfont: false
rtl: false
title: Tabler
description: Premium and Open Source dashboard template with responsive and high quality UI.
theme-color: "#0054a6"
email: support@tabler.io
homepage: https://tabler.io
github-url: https://github.com/tabler/tabler
github-sponsors-url: https://github.com/sponsors/codecalm
changelog-url: https://github.com/tabler/tabler/releases
sponsor-url: https://github.com/sponsors/codecalm
preview-url: https://tabler.io/demo
docs-url: https://tabler.io/docs
mapbox-key: pk.eyJ1IjoiY29kZWNhbG0iLCJhIjoiSzRiOVJvQSJ9.BUVkTT6IYs83xSUs4H7bjQ
google-maps-key: AIzaSyAr5mRB4U1KRkVznIrDWEvZjroYcD202DI
google-maps-dev-key: AIzaSyCL-BY8-sq12m0S9H-S_yMqDmcun3A9znw
npm-package: "@tabler/core"
random-date-from: "2018-01-01"
random-date-to: "2022-01-01"
debug: false
layout-dark: false
plugins:
- jekyll-random
- jekyll-tidy
- jekyll-timeago
- jekyll-redirect-from
tabler-css-plugins:
- tabler-flags
- tabler-payments
- tabler-vendors
exclude:
- .jekyll-cache
- redirects.json
markdown: kramdown
kramdown:
input: GFM
syntax_highlighter: rouge
jekyll_tidy:
compress_html: false
ignore_env: development
defaults:
- scope:
type: "pages"
path: "*.md"
values:
layout: markdown
- scope:
type: "pages"
values:
layout: default
colors:
blue:
class: blue
hex: '#0054a6'
title: Blue
azure:
class: azure
hex: '#45aaf2'
title: Azure
indigo:
class: indigo
hex: '#6574cd'
title: Indigo
purple:
class: purple
hex: '#a55eea'
title: Purple
pink:
class: pink
hex: '#f66d9b'
title: Pink
red:
class: red
hex: '#fa4654'
title: Red
orange:
class: orange
hex: '#fd9644'
title: Orange
yellow:
class: yellow
hex: '#f1c40f'
title: Yellow
lime:
class: lime
hex: '#7bd235'
title: Lime
green:
class: green
hex: '#5eba00'
title: Green
teal:
class: teal
hex: '#2bcbba'
title: Teal
cyan:
class: cyan
hex: '#17a2b8'
title: Cyan
colors-extra:
white:
hex: '#ffffff'
title: White
dark:
hex: '#303645'
title: Dark
gray:
hex: '#868e96'
title: Gray
variants:
- name: success
icon: check
- name: info
icon: info-circle
- name: warning
icon: alert-triangle
- name: danger
icon: alert-circle
theme-colors:
primary:
class: primary
title: Primary
secondary:
class: secondary
title: Secondary
success:
class: success
title: Success
warning:
class: warning
title: Warning
danger:
class: danger
title: Danger
info:
class: info
title: Info
dark:
class: dark
title: Dark
light:
class: light
title: Light
button-states:
- class:
title: Normal
- class: active
title: Active state
- class: disabled
title: Disabled
socials:
facebook:
icon: brand-facebook
title: Facebook
twitter:
icon: brand-twitter
title: Twitter
google:
icon: brand-google
title: Google
youtube:
icon: brand-youtube
title: Youtube
vimeo:
icon: brand-vimeo
title: Vimeo
dribbble:
icon: brand-dribbble
title: Dribbble
github:
icon: brand-github
title: Github
instagram:
icon: brand-instagram
title: Instagram
pinterest:
icon: brand-pinterest
title: Pinterest
vk:
icon: brand-vk
title: VK
rss:
icon: rss
title: RSS
flickr:
icon: brand-flickr
title: Flickr
bitbucket:
icon: brand-bitbucket
title: Bitbucket
tabler:
icon: brand-tabler
title: Tabler
months-short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
months-long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
icons:
link: https://tabler-icons.io
emails:
price: "$29"
count: 54
buy_link: https://tabler.io/buy-emails

4
_config_prod.yml Normal file
View File

@@ -0,0 +1,4 @@
exclude:
- redirects.json
- playground.html
- playground-*.html

58
build/download-images.js Normal file
View File

@@ -0,0 +1,58 @@
#!/usr/bin/env node
'use strict'
const YAML = require('yaml')
const fs = require('node:fs')
const path = require('node:path')
const request = require('request')
const filePath = path.join(__dirname, '../src/pages/_data/photos.yml')
const photos = YAML.parse(fs.readFileSync(filePath, 'utf8'))
const urlTitle = (str) => {
str = str
.toLowerCase()
.replaceAll('&', 'and')
.replace(/[^[a-z0-9-]/g, '-')
.replace(/-+/g, '-')
return str
}
const download = function(uri, filename, callback, error) {
request.head(uri, function(err, res, body) {
request(uri).pipe(fs.createWriteStream(filename))
.on('close', callback)
.on('error', error)
})
}
async function downloadPhotos() {
for (const key in photos) {
const photo = photos[key]
let filename, i = 1;
do {
filename = `${urlTitle(photo['title'])}${i > 1 ? `-${i}` : ''}.jpg`
i++
} while (fs.existsSync(path.join(__dirname, `../src/static/photos/${filename}`)))
await new Promise((resolve, reject) => {
download(photo['path'], path.join(__dirname, `../src/static/photos/${filename}`), function(){
resolve()
}, function() {
reject()
});
})
photos[key]['file'] = filename
photos[key]['horizontal'] = photo['width'] > photo['height']
}
fs.writeFileSync(filePath, YAML.stringify(photos))
}
downloadPhotos();

View File

@@ -0,0 +1,129 @@
<!doctype html>
<!--
* Tabler - Premium and Open Source dashboard template with responsive and high quality UI.
* @version 1.0.0-beta20
* @link https://tabler.io
* Copyright 2018-2023 The Tabler Authors
* Copyright 2018-2023 codecalm.net Paweł Kuna
* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE)
-->
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>2-Step Verification - Tabler - Premium and Open Source dashboard template with responsive and high quality UI.</title>
<!-- CSS files -->
<link href="./dist/css/tabler.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/tabler-flags.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/tabler-payments.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/tabler-vendors.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/demo.min.css?1692870487" rel="stylesheet"/>
<style>
@import url('https://rsms.me/inter/inter.css');
:root {
--tblr-font-sans-serif: 'Inter Var', -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
}
body {
font-feature-settings: "cv03", "cv04", "cv11";
}
</style>
</head>
<body class=" d-flex flex-column">
<script src="./dist/js/demo-theme.min.js?1692870487"></script>
<div class="page page-center">
<div class="container container-tight py-4">
<div class="text-center mb-4">
<a href="." class="navbar-brand navbar-brand-autodark">
<img src="./static/logo.svg" width="110" height="32" alt="Tabler" class="navbar-brand-image">
</a>
</div>
<form
class="card card-md"
action="./"
method="get"
autocomplete="off"
novalidate
>
<div class="card-body">
<h2 class="card-title card-title-lg text-center mb-4">Authenticate Your Account</h2>
<p class="my-4 text-center">Please confirm your account by entering the authorization code sent to <strong>+1 856-672-8552</strong>.</p>
<div class="my-5">
<div class="row g-4">
<div class="col">
<div class="row g-2">
<div class="col">
<input type="text" class="form-control form-control-lg text-center py-3" maxlength="1" inputmode="numeric" pattern="[0-9]*" data-code-input />
</div>
<div class="col">
<input type="text" class="form-control form-control-lg text-center py-3" maxlength="1" inputmode="numeric" pattern="[0-9]*" data-code-input />
</div>
<div class="col">
<input type="text" class="form-control form-control-lg text-center py-3" maxlength="1" inputmode="numeric" pattern="[0-9]*" data-code-input />
</div>
</div>
</div>
<div class="col">
<div class="row g-2">
<div class="col">
<input type="text" class="form-control form-control-lg text-center py-3" maxlength="1" inputmode="numeric" pattern="[0-9]*" data-code-input />
</div>
<div class="col">
<input type="text" class="form-control form-control-lg text-center py-3" maxlength="1" inputmode="numeric" pattern="[0-9]*" data-code-input />
</div>
<div class="col">
<input type="text" class="form-control form-control-lg text-center py-3" maxlength="1" inputmode="numeric" pattern="[0-9]*" data-code-input />
</div>
</div>
</div>
</div>
</div>
<div class="my-4">
<label class="form-check">
<input type="checkbox" class="form-check-input" />
Dont't ask for codes again on this device
</label>
</div>
<div class="form-footer">
<div class="btn-list flex-nowrap">
<a href="./2-step-verification.html" class="btn w-100">
Cancel
</a>
<a href="#" class="btn btn-primary w-100">
Verify
</a>
</div>
</div>
</div>
</form>
<div class="text-center text-secondary mt-3">
It may take a minute to receive your code. Haven't received it? <a href="./">Resend a new code.</a>
</div>
</div>
</div>
<!-- Libs JS -->
<!-- Tabler Core -->
<script src="./dist/js/tabler.min.js?1692870487" defer></script>
<script src="./dist/js/demo.min.js?1692870487" defer></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
var inputs = document.querySelectorAll('[data-code-input]');
// Attach an event listener to each input element
for(let i = 0; i < inputs.length; i++) {
inputs[i].addEventListener('input', function(e) {
// If the input field has a character, and there is a next input field, focus it
if(e.target.value.length === e.target.maxLength && i + 1 < inputs.length) {
inputs[i + 1].focus();
}
});
inputs[i].addEventListener('keydown', function(e) {
// If the input field is empty and the keyCode for Backspace (8) is detected, and there is a previous input field, focus it
if(e.target.value.length === 0 && e.keyCode === 8 && i > 0) {
inputs[i - 1].focus();
}
});
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,331 @@
<!doctype html>
<!--
* Tabler - Premium and Open Source dashboard template with responsive and high quality UI.
* @version 1.0.0-beta20
* @link https://tabler.io
* Copyright 2018-2023 The Tabler Authors
* Copyright 2018-2023 codecalm.net Paweł Kuna
* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE)
-->
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<title>2-Step Verification - Tabler - Premium and Open Source dashboard template with responsive and high quality UI.</title>
<!-- CSS files -->
<link href="./dist/css/tabler.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/tabler-flags.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/tabler-payments.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/tabler-vendors.min.css?1692870487" rel="stylesheet"/>
<link href="./dist/css/demo.min.css?1692870487" rel="stylesheet"/>
<style>
@import url('https://rsms.me/inter/inter.css');
:root {
--tblr-font-sans-serif: 'Inter Var', -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
}
body {
font-feature-settings: "cv03", "cv04", "cv11";
}
</style>
</head>
<body class=" d-flex flex-column">
<script src="./dist/js/demo-theme.min.js?1692870487"></script>
<div class="page page-center">
<div class="container container-tight py-4">
<div class="text-center mb-4">
<a href="." class="navbar-brand navbar-brand-autodark">
<img src="./static/logo.svg" width="110" height="32" alt="Tabler" class="navbar-brand-image">
</a>
</div>
<form
class="card card-md"
action="./2-step-verification-code.html"
method="get"
autocomplete="off"
novalidate
>
<div class="card-body">
<h2 class="card-title text-center mb-4">2-Step Verification</h2>
<div class="mb-3">
<label class="form-label">Country</label>
<select class="form-select">
<option value="">Andorra</option>
<option value="">United Arab Emirates</option>
<option value="">Afghanistan</option>
<option value="">Antigua</option>
<option value="">Anguilla</option>
<option value="">Armenia</option>
<option value="">Angolan</option>
<option value="">Antarctica</option>
<option value="">Argentina</option>
<option value="">American Samoa</option>
<option value="">Austria</option>
<option value="">Australia</option>
<option value="">Aruba</option>
<option value="">Aslan Islands</option>
<option value="">Azerbaijan</option>
<option value="">Bosnian</option>
<option value="">Barbados</option>
<option value="">Belgium</option>
<option value="">Burkina Faso</option>
<option value="">Bulgaria</option>
<option value="">Bahrain</option>
<option value="">Burundi</option>
<option value="">Benin</option>
<option value="">Saint-Barthélemy</option>
<option value="">Bermuda</option>
<option value="">Bruneian</option>
<option value="">Bolivia</option>
<option value="">Bonaire</option>
<option value="">Brazil</option>
<option value="">Bahamas</option>
<option value="">Bhutan</option>
<option value="">Bouvet Island</option>
<option value="">Batswana</option>
<option value="">Belarus</option>
<option value="">Belize</option>
<option value="">Canada</option>
<option value="">Cocos Island</option>
<option value="">Democratic Republic of Congo</option>
<option value="">Central African Republic</option>
<option value="">Republic of the Congo</option>
<option value="">Switzerland</option>
<option value="">Ivory Coast</option>
<option value="">Cook Island</option>
<option value="">Chile</option>
<option value="">Cameroon</option>
<option value="">China</option>
<option value="">Colombia</option>
<option value="">Costa Rica</option>
<option value="">Cuba</option>
<option value="">Cape Verde</option>
<option value="">Curacao</option>
<option value="">Christmas Island</option>
<option value="">Cyprus</option>
<option value="">Czech Republic</option>
<option value="">Germany</option>
<option value="">Djibouti</option>
<option value="">Denmark</option>
<option value="">Dominica</option>
<option value="">Dominican Republic</option>
<option value="">Algeria</option>
<option value="">Ecuador</option>
<option value="">Estonia</option>
<option value="">Egypt</option>
<option value="">Sahrawi</option>
<option value="">Eritrea</option>
<option value="">Spain</option>
<option value="">Catalonia</option>
<option value="">Ethiopia</option>
<option value="">European Union</option>
<option value="">Finland</option>
<option value="">Fiji</option>
<option value="">Falkland Islands</option>
<option value="">Federate States of Micronesia</option>
<option value="">Faroe Islands</option>
<option value="">France</option>
<option value="">Gabon</option>
<option value="">Great Britain</option>
<option value="">England</option>
<option value="">Nothern Ireland</option>
<option value="">Scotland</option>
<option value="">Wales</option>
<option value="">Grenada</option>
<option value="">Georgia</option>
<option value="">Guyana</option>
<option value="">Guernsey</option>
<option value="">Ghana</option>
<option value="">Gibraltar</option>
<option value="">Greenland</option>
<option value="">Gambia</option>
<option value="">Guinea</option>
<option value="">Guadeloupe</option>
<option value="">Equatorial Guinea</option>
<option value="">Greece</option>
<option value="">South Georgia</option>
<option value="">Guatemala</option>
<option value="">Guam</option>
<option value="">Guinea-Bissau</option>
<option value="">Guyana</option>
<option value="">Hong Kong</option>
<option value="">Heard and McDonald Islands</option>
<option value="">Honduras</option>
<option value="">Croatia</option>
<option value="">Haiti</option>
<option value="">Hungary</option>
<option value="">Indonesia</option>
<option value="">Ireland</option>
<option value="">Israel</option>
<option value="">Isle of Man</option>
<option value="">India</option>
<option value="">British Indian Ocean Territory</option>
<option value="">Iraq</option>
<option value="">Iran</option>
<option value="">Iceland</option>
<option value="">Italy</option>
<option value="">Jersey</option>
<option value="">Jamaica</option>
<option value="">Jordan</option>
<option value="">Japan</option>
<option value="">Kenya</option>
<option value="">Kyrgyzstan</option>
<option value="">Cambodia</option>
<option value="">Kiribati</option>
<option value="">Comoros</option>
<option value="">Saint Kitts and Nevis</option>
<option value="">North Korea</option>
<option value="">South Korea</option>
<option value="">Kuwait</option>
<option value="">Cayman Islands</option>
<option value="">Kazakhstan</option>
<option value="">Laos</option>
<option value="">Lebanese</option>
<option value="">Saint Lucia</option>
<option value="">Liechtenstein</option>
<option value="">Sri Lanka</option>
<option value="">Liberia</option>
<option value="">Lesotho</option>
<option value="">Lithuania</option>
<option value="">Luxembourg</option>
<option value="">Latvia</option>
<option value="">Libya</option>
<option value="">Morocco</option>
<option value="">Monaco</option>
<option value="">Moldova</option>
<option value="">Montenegro</option>
<option value="">Saint Martin</option>
<option value="">Madagascar</option>
<option value="">Marshall Islands</option>
<option value="">Macedonia</option>
<option value="">Mali</option>
<option value="">Myanmar</option>
<option value="">Mongolia</option>
<option value="">Macao</option>
<option value="">Nothern Mariana Islands</option>
<option value="">Martinique</option>
<option value="">Mauritania</option>
<option value="">Montserrat</option>
<option value="">Malta</option>
<option value="">Mauritius</option>
<option value="">Maldives</option>
<option value="">Malawi</option>
<option value="">Mexico</option>
<option value="">Malaysia</option>
<option value="">Mozambique</option>
<option value="">Namibia</option>
<option value="">New Caledonia</option>
<option value="">Niger</option>
<option value="">Norfolk Island</option>
<option value="">Nigeria</option>
<option value="">Nicaragua</option>
<option value="">Norway</option>
<option value="">Nepal</option>
<option value="">Nauruan</option>
<option value="">Niger</option>
<option value="">New Zealand</option>
<option value="">Oman</option>
<option value="">Panama</option>
<option value="">Peru</option>
<option value="">French Polynesia</option>
<option value="">Papua New Guinea</option>
<option value="">Philippines</option>
<option value="">Pakistan</option>
<option value="">Poland</option>
<option value="">Saint Pierre</option>
<option value="">Pitcairn Islands</option>
<option value="">Puerto Rico</option>
<option value="">Palestine</option>
<option value="">Portugal</option>
<option value="">Palau</option>
<option value="">Paraguay</option>
<option value="">Qatar</option>
<option value="">Reunion Island</option>
<option value="">Romania</option>
<option value="">Serbia</option>
<option value="">Russia</option>
<option value="">Rwanda</option>
<option value="">Saudi Arabia</option>
<option value="">Solomon Islands</option>
<option value="">Seychelles</option>
<option value="">Sudan</option>
<option value="">Sweden</option>
<option value="">Singapore</option>
<option value="">Saint Helena</option>
<option value="">Slovenia</option>
<option value="">Svalbard Island</option>
<option value="">Slovakia</option>
<option value="">Sierra Leone</option>
<option value="">San Marino</option>
<option value="">Senegal</option>
<option value="">Somalia</option>
<option value="">Suriname</option>
<option value="">South Sudan</option>
<option value="">Sao Tome</option>
<option value="">El Salvador</option>
<option value="">Sint Maarten</option>
<option value="">Syria</option>
<option value="">Swaziland</option>
<option value="">Turks and Caicos</option>
<option value="">Chad</option>
<option value="">French Southern and Antarctic Lands</option>
<option value="">Togo</option>
<option value="">Thailand</option>
<option value="">Tajikistan</option>
<option value="">Tokelau</option>
<option value="">Timor Leste</option>
<option value="">Turkmenistan</option>
<option value="">Tunisia</option>
<option value="">Tonga</option>
<option value="">Turkey</option>
<option value="">Trinidad and Tobago</option>
<option value="">Tuvalu</option>
<option value="">Tanzania</option>
<option value="">Ukraine</option>
<option value="">Uganda</option>
<option value="">United States Minor Islands</option>
<option value="">United Nations</option>
<option value="">United States of America</option>
<option value="">Uruguay</option>
<option value="">Uzbekistan</option>
<option value="">Vatican City</option>
<option value="">Saint Vincent</option>
<option value="">Venezuela</option>
<option value="">British Virgin Islands</option>
<option value="">Virgiin Islands</option>
<option value="">Vietnam</option>
<option value="">Vanuatu</option>
<option value="">Wallis and Futuna</option>
<option value="">Samoa</option>
<option value="">Yemen</option>
<option value="">South Africa</option>
<option value="">Zambia</option>
<option value="">Zimbabwe</option>
</select>
</div>
<div class="mb-4">
<label class="form-label">Your Phone Number</label>
<div class="input-group">
<span class="input-group-text">+1</span>
<input type="text" class="form-control" placeholder="Enter phone number" />
</div>
</div>
<div class="text-secondary">
Security is critical in Tabler. to help keep your account safe, we'll
text you a verification code when you sign in on a new device
</div>
<div class="form-footer">
<button type="submit" class="btn btn-primary w-100">
Send code
</button>
</div>
</div>
</form>
</div>
</div>
<!-- Libs JS -->
<!-- Tabler Core -->
<script src="./dist/js/tabler.min.js?1692870487" defer></script>
<script src="./dist/js/demo.min.js?1692870487" defer></script>
</body>
</html>

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