Compare commits
105 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d5d9bc847 | ||
|
|
776a85cf1a | ||
|
|
ac10f55405 | ||
|
|
d0f45a41f8 | ||
|
|
16a42ba330 | ||
|
|
f7d5b6a05e | ||
|
|
4376968bca | ||
|
|
dee2b8ad64 | ||
|
|
2c9a4dfb37 | ||
|
|
e46fec5050 | ||
|
|
f3c409ffc2 | ||
|
|
309ff40a48 | ||
|
|
eea2d38f39 | ||
|
|
876bec9db3 | ||
|
|
f06cce0300 | ||
|
|
e1931f8c37 | ||
|
|
c240b5ad21 | ||
|
|
baafe08d6e | ||
|
|
cba487f5b7 | ||
|
|
edbaa1eddd | ||
|
|
378fba89f5 | ||
|
|
b0a62b7cf5 | ||
|
|
1415820cb1 | ||
|
|
81a8738823 | ||
|
|
417d0bc444 | ||
|
|
22e10d4dba | ||
|
|
57f6219f7c | ||
|
|
fbe3680142 | ||
|
|
c2b446c209 | ||
|
|
09844ab64b | ||
|
|
cea1c87c21 | ||
|
|
a2640e2147 | ||
|
|
9cd532745a | ||
|
|
063bdc28ab | ||
|
|
5d8392366c | ||
|
|
2d05b5d5d3 | ||
|
|
ca4ba14718 | ||
|
|
9755e1e9e9 | ||
|
|
954e42f9c0 | ||
|
|
b47815d530 | ||
|
|
1edaff454b | ||
|
|
b47725dcc2 | ||
|
|
b85ef1a95e | ||
|
|
eff95dc033 | ||
|
|
846c48d140 | ||
|
|
ee3862fcf4 | ||
|
|
2fe9e70b54 | ||
|
|
002528fadd | ||
|
|
ee5e25a52b | ||
|
|
bd3d959cea | ||
|
|
afd070012d | ||
|
|
d6a10938e3 | ||
|
|
f95f2509c7 | ||
|
|
3dea9de29c | ||
|
|
3b0623fc42 | ||
|
|
f38fac3508 | ||
|
|
b4b4d1a816 | ||
|
|
821a1c5405 | ||
|
|
1b0266e612 | ||
|
|
3320246d0f | ||
|
|
55f467c945 | ||
|
|
958ad128ad | ||
|
|
06c3b5dd65 | ||
|
|
cac2606016 | ||
|
|
bc3a8360a7 | ||
|
|
6b3bf15c4c | ||
|
|
76f5de44e7 | ||
|
|
24b944cbdc | ||
|
|
687267de38 | ||
|
|
ea144622a1 | ||
|
|
52fa8658ea | ||
|
|
ffa095f981 | ||
|
|
6b7a761fd4 | ||
|
|
3b85669999 | ||
|
|
ffaf92b67b | ||
|
|
78383ef568 | ||
|
|
cb278c762d | ||
|
|
117fbbb2d5 | ||
|
|
60699ed9c3 | ||
|
|
54f0802f72 | ||
|
|
c2afa77258 | ||
|
|
c079e646ef | ||
|
|
1394c3420c | ||
|
|
92275670f5 | ||
|
|
37af5425ff | ||
|
|
d40dc60cd8 | ||
|
|
11f4487286 | ||
|
|
0689fa2abf | ||
|
|
4268994034 | ||
|
|
8dffb4e345 | ||
|
|
bc5951b50d | ||
|
|
f8a7a13f6b | ||
|
|
b28ce9f2e8 | ||
|
|
a370919ebe | ||
|
|
09a7e10ef1 | ||
|
|
0afaaf2348 | ||
|
|
f04cf51047 | ||
|
|
eaa7f81604 | ||
|
|
ce98145fb2 | ||
|
|
d3ae77cf8b | ||
|
|
28131f42df | ||
|
|
06b1dec645 | ||
|
|
9a46a8fbf9 | ||
|
|
9237d12cac | ||
|
|
fd8b11822a |
@@ -1,11 +1,6 @@
|
|||||||
>= 1%
|
>= 1%
|
||||||
last 1 major version
|
last 2 versions
|
||||||
|
Firefox ESR
|
||||||
not dead
|
not dead
|
||||||
Chrome >= 60
|
safari >= 15.4
|
||||||
Firefox >= 60
|
iOS >= 15.4
|
||||||
Edge >= 15.15063
|
|
||||||
Explorer 11
|
|
||||||
iOS >= 10
|
|
||||||
Safari >= 10
|
|
||||||
Android >= 6
|
|
||||||
not ExplorerMobile <= 11
|
|
||||||
|
|||||||
@@ -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();
|
|
||||||
|
|
||||||
@@ -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))
|
|
||||||
@@ -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)
|
|
||||||
// )
|
|
||||||
@@ -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}`)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@@ -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)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
66
.github/workflows/argos.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
name: Argos Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'preview/**/*.js'
|
||||||
|
- 'preview/**/*.html'
|
||||||
|
- 'preview/**/*.scss'
|
||||||
|
- 'core/**/*.js'
|
||||||
|
- 'core/**/*.scss'
|
||||||
|
|
||||||
|
env:
|
||||||
|
NODE: 20
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 60
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
steps:
|
||||||
|
- name: Clone repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache turbo build setup
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "${{ env.NODE }}"
|
||||||
|
|
||||||
|
- name: Install PNPM
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
|
||||||
|
- name: Get installed Playwright version
|
||||||
|
id: playwright-version
|
||||||
|
run: echo "PLAYWRIGHT_VERSION=$(node -e "console.log(require('./package.json').devDependencies['@playwright/test'])")" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Cache playwright binaries
|
||||||
|
uses: actions/cache@v4
|
||||||
|
id: playwright-cache
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.cache/ms-playwright
|
||||||
|
key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }}
|
||||||
|
|
||||||
|
- name: Install pnpm dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: pnpm exec playwright install --with-deps
|
||||||
|
if: steps.playwright-cache.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: pnpm run playwright
|
||||||
13
.github/workflows/bundlewatch.yml
vendored
@@ -19,6 +19,14 @@ jobs:
|
|||||||
- name: Clone repository
|
- name: Clone repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache turbo build setup
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
@@ -26,8 +34,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Install PNPM
|
- name: Install PNPM
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
|
||||||
version: 8
|
|
||||||
|
|
||||||
- name: Set up Bundler
|
- name: Set up Bundler
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
@@ -38,9 +44,6 @@ jobs:
|
|||||||
- name: Install pnpm dependencies
|
- name: Install pnpm dependencies
|
||||||
run: pnpm install --no-frozen-lockfile
|
run: pnpm install --no-frozen-lockfile
|
||||||
|
|
||||||
- name: Run build
|
|
||||||
run: pnpm run build
|
|
||||||
|
|
||||||
- name: Run bundlewatch
|
- name: Run bundlewatch
|
||||||
run: pnpm run bundlewatch
|
run: pnpm run bundlewatch
|
||||||
env:
|
env:
|
||||||
|
|||||||
3
.github/workflows/release.yml
vendored
@@ -3,7 +3,6 @@ name: Release
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
|
||||||
- dev
|
- dev
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -31,8 +30,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Install PNPM
|
- name: Install PNPM
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
|
||||||
version: 8
|
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|||||||
13
.github/workflows/test.yml
vendored
@@ -1,8 +1,7 @@
|
|||||||
name: Test build
|
name: Test build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request: null
|
||||||
types: [ opened, reopened ]
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
NODE: 20
|
NODE: 20
|
||||||
@@ -17,6 +16,14 @@ jobs:
|
|||||||
- name: Clone repository
|
- name: Clone repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Cache turbo build setup
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: .turbo
|
||||||
|
key: ${{ runner.os }}-turbo-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-turbo-
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
@@ -24,8 +31,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Install PNPM
|
- name: Install PNPM
|
||||||
uses: pnpm/action-setup@v4
|
uses: pnpm/action-setup@v4
|
||||||
with:
|
|
||||||
version: 8
|
|
||||||
|
|
||||||
- run: node --version
|
- run: node --version
|
||||||
|
|
||||||
|
|||||||
12
.gitignore
vendored
@@ -19,16 +19,20 @@ node_modules/
|
|||||||
/svg-tmp/
|
/svg-tmp/
|
||||||
/components/
|
/components/
|
||||||
/percy.sh
|
/percy.sh
|
||||||
/src/pages/playground.html
|
/preview/pages/playground.html
|
||||||
/src/pages/playground-*.html
|
/preview/pages/screenshot.html
|
||||||
/src/pages/features.html
|
/preview/pages/screenshot-*.html
|
||||||
|
/preview/pages/playground-*.html
|
||||||
|
/preview/pages/features.html
|
||||||
|
|
||||||
.pnp.loader.mjs
|
.pnp.loader.mjs
|
||||||
.pnp.cjs
|
.pnp.cjs
|
||||||
.yarn
|
.yarn
|
||||||
.next
|
.next
|
||||||
.vercel
|
.vercel
|
||||||
|
.turbo
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
demo/
|
demo/
|
||||||
dist/
|
dist/
|
||||||
|
packages-zip/
|
||||||
16
.vscode/settings.json
vendored
@@ -1,14 +1,12 @@
|
|||||||
{
|
{
|
||||||
"files.exclude": {
|
"files.exclude": {
|
||||||
"**/.git": false,
|
"**/.git": true,
|
||||||
"**/.svn": false,
|
"**/.svn": true,
|
||||||
"**/.hg": false,
|
"**/.hg": true,
|
||||||
"**/CVS": false,
|
"**/CVS": true,
|
||||||
"**/.DS_Store": false,
|
"**/.DS_Store": true,
|
||||||
"**/Thumbs.db": false,
|
"**/Thumbs.db": true,
|
||||||
"**/.idea/": false,
|
"**/.idea/": true
|
||||||
"dist": false,
|
|
||||||
"demo": false
|
|
||||||
},
|
},
|
||||||
"explorerExclude.backup": {}
|
"explorerExclude.backup": {}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 1.0.0
|
## 1.0.0 - 2025-01-28
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
||||||
@@ -16,8 +16,7 @@
|
|||||||
- be14607: Add new color picker component using `coloris.js` library
|
- be14607: Add new color picker component using `coloris.js` library
|
||||||
- d046570: Update Tabler Icons to version 2.23 with 18 new icons added
|
- d046570: Update Tabler Icons to version 2.23 with 18 new icons added
|
||||||
- 5488c50: New page with payment providers: `payment-providers.html`
|
- 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,
|
- 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
|
||||||
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
|
### Patch Changes
|
||||||
|
|
||||||
|
|||||||
49
README.md
@@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/tabler/tabler"><img src="https://raw.githubusercontent.com/tabler/tabler/dev/src/static/logo.svg" alt="A premium and open source dashboard template with a responsive and high-quality UI." width="300"></a><br><br>
|
<a href="https://github.com/tabler/tabler"><img src="https://raw.githubusercontent.com/tabler/tabler/refs/heads/dev/preview/static/logo.svg" alt="A premium and open source dashboard template with a responsive and high-quality UI." width="300"></a><br><br>
|
||||||
A premium and open source dashboard template with a responsive and high-quality UI.
|
A premium and open source dashboard template with a responsive and high-quality UI.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -18,9 +18,9 @@ A premium and open source dashboard template with a responsive and high-quality
|
|||||||
**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 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">
|
<p align="center">
|
||||||
<a href="https://github.com/sponsors/codecalm">
|
<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://cdn.jsdelivr.net/gh/tabler/sponsors@latest/sponsors.svg" alt="Tabler sponsors">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
@@ -28,21 +28,24 @@ A premium and open source dashboard template with a responsive and high-quality
|
|||||||
<p align="center">Browser testing via:</p>
|
<p align="center">Browser testing via:</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://www.lambdatest.com/" target="_blank">
|
<a href="https://www.lambdatest.com/" target="_blank">
|
||||||
<picture>
|
<picture>
|
||||||
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/14dd2a0a-bafe-436e-a6cb-29636278c781">
|
<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">
|
<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="Tabler Icons preview" width="296">
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## 🔎 Preview
|
## 🔎 Preview
|
||||||
|
|
||||||
Tabler is fully responsive and compatible with all modern browsers. Thanks to its modern and user-friendly design you can create a fully functional interface that users will love! Choose the layouts and components you need and customize them to make your design consistent and eye-catching. Every component has been created with attention to detail to make your interface beautiful! <a href="https://preview.tabler.io">Show me a demo</a>
|
Tabler is fully responsive and compatible with all modern browsers. Thanks to its modern and user-friendly design you can create a fully functional interface that users will love! Choose the layouts and components you need and customize them to make your design consistent and eye-catching. Every component has been created with attention to detail to make your interface beautiful! <a href="https://preview.tabler.io">Show me a demo</a>
|
||||||
|
|
||||||
<a href="https://preview.tabler.io" target="_blank"><img src="https://raw.githubusercontent.com/tabler/tabler/dev/src/static/tabler-preview.png" alt="Tabler preview"></a>
|
<p align="center">
|
||||||
|
<a href="https://preview.tabler.io" target="_blank">
|
||||||
|
<img src="https://raw.githubusercontent.com/tabler/tabler/dev/preview/static/tabler-preview.png" alt="Tabler Preview">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
## 🚀 Features
|
## 🚀 Features
|
||||||
|
|
||||||
@@ -67,8 +70,11 @@ To run the documentation site locally, follow instructions in the [Documentation
|
|||||||
|
|
||||||
## 💕 Sponsor Tabler
|
## 💕 Sponsor Tabler
|
||||||
|
|
||||||
<a href="https://github.com/sponsors/codecalm" target="_blank"><img src="/src/static/sponsor-banner-readme.png?raw=true" alt="Sponsor Tabler" /></a>
|
<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>
|
||||||
|
|
||||||
### Sponsors
|
### Sponsors
|
||||||
|
|
||||||
@@ -94,12 +100,15 @@ To use our build system and run our documentation locally, you'll need a copy of
|
|||||||
|
|
||||||
**OSX users**:
|
**OSX users**:
|
||||||
|
|
||||||
```pnpm install```
|
```sh
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
and then
|
and then
|
||||||
|
|
||||||
```npm run start```
|
```sh
|
||||||
|
npm run start
|
||||||
|
```
|
||||||
|
|
||||||
**Windows users**:
|
**Windows users**:
|
||||||
|
|
||||||
@@ -110,7 +119,7 @@ Once you complete the setup, you'll be able to run the various commands provided
|
|||||||
|
|
||||||
## Build locally
|
## Build locally
|
||||||
|
|
||||||
You need to have `pnpm` and `bundler` installed.
|
You need to have `pnpm` installed.
|
||||||
|
|
||||||
1. From the root `/tabler` directory, run installation in the command line: `pnpm install`
|
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.
|
2. Then execute `pnpm run start` to start up the application stack.
|
||||||
@@ -216,4 +225,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|||||||
<!-- prettier-ignore-end -->
|
<!-- prettier-ignore-end -->
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
||||||
63
build/reformat-mdx.mjs
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
import { readFileSync, writeFileSync } from 'node:fs';
|
||||||
|
import { join, dirname } from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url'
|
||||||
|
import { sync } from 'glob';
|
||||||
|
import * as prettier from "prettier";
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const docs = sync(join(__dirname, '..', 'docs', '**', '*.mdx'))
|
||||||
|
|
||||||
|
async function formatHTML(htmlString) {
|
||||||
|
try {
|
||||||
|
const formattedHtml = await prettier.format(htmlString, {
|
||||||
|
parser: "html",
|
||||||
|
printWidth: 100,
|
||||||
|
});
|
||||||
|
return formattedHtml;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error formatting HTML:", error);
|
||||||
|
return htmlString; // Return original in case of an error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function replaceAsync(str, regex, asyncFn) {
|
||||||
|
const matches = [...str.matchAll(regex)];
|
||||||
|
|
||||||
|
const replacements = await Promise.all(
|
||||||
|
matches.map(async (match) => asyncFn(...match))
|
||||||
|
);
|
||||||
|
|
||||||
|
let result = str;
|
||||||
|
matches.forEach((match, i) => {
|
||||||
|
result = result.replace(match[0], replacements[i]);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const file of docs) {
|
||||||
|
const oldContent = readFileSync(file, 'utf8')
|
||||||
|
|
||||||
|
// get codeblocks from markdown
|
||||||
|
const content = await replaceAsync(oldContent, /(```([a-z0-9]+).*?\n)(.*?)(```)/gs, async (m, m1, m2, m3, m4) => {
|
||||||
|
if (m2 === 'html') {
|
||||||
|
m3 = await formatHTML(m3);
|
||||||
|
|
||||||
|
// remove empty lines
|
||||||
|
m3 = m3.replace(/^\s*[\r\n]/gm, '');
|
||||||
|
|
||||||
|
return m1 + m3.trim() + "\n" + m4;
|
||||||
|
}
|
||||||
|
return m.trim();
|
||||||
|
})
|
||||||
|
|
||||||
|
if (content !== oldContent) {
|
||||||
|
writeFileSync(file, content, 'utf8')
|
||||||
|
console.log(`Reformatted ${file}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
33
core/CHANGELOG.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# @tabler/core
|
||||||
|
|
||||||
|
## 1.1.0
|
||||||
|
|
||||||
|
### Minor Changes
|
||||||
|
|
||||||
|
- a2640e2: Add Playwright configuration and visual regression tests
|
||||||
|
- d3ae77c: Enable `scrollSpy` in `countup` module
|
||||||
|
- bd3d959: Refactor SCSS files to replace divide function with calc
|
||||||
|
- cb278c7: Add Segmented Control component
|
||||||
|
- b47725d: Add new text features page with mentions: user, color and app.
|
||||||
|
- b4b4d1a: Add Scroll Spy page
|
||||||
|
- 9cd5327: Update border radius variables for consistency across components
|
||||||
|
- 4376968: Add Signature Pad feature and signatures page
|
||||||
|
- f95f250: Update color utility classes and replace background colors in pricing table
|
||||||
|
- eaa7f81: Refactored the project into a monorepo, removed Gulp, and introduced a new, more efficient build process.
|
||||||
|
- ea14462: Add documentation for segmented control component
|
||||||
|
- 1edaff4: Add new payment provider (Troy)
|
||||||
|
- edbaa1e: Add selectable table functionality with active background color
|
||||||
|
- 378fba8: Refactor badge styles, remove Bootstrap styles
|
||||||
|
- f3c409f: Refactor alert component styles and markup, remove Bootstrap styles
|
||||||
|
- c240b5a: Refactor accordion component styles and markup, remove Bootstrap styles
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- 687267d: Fix overflow of `label` in a `floating-input`
|
||||||
|
- 06b1dec: Fix size of `apexcharts` tooltip marker
|
||||||
|
- afd0700: Fix apexcharts heatmap example in docs
|
||||||
|
- 78383ef: Fix negative margins in `.navbar-bordered` variant
|
||||||
|
- 11f4487: Use the full license agreement for illustrations in docs
|
||||||
|
- b28ce9f: Fix vertical alignment in single page and error layouts
|
||||||
|
- 24b944c: Fix `.avatar-upload` double borders
|
||||||
|
- ca4ba14: Fixes navbar styles with new hover effects and color variables
|
||||||
46
core/build/add-banner.mjs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
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';
|
||||||
|
|
||||||
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const styles = sync(join(__dirname, '..', 'dist', 'css', '*.css'))
|
||||||
|
|
||||||
|
const plugins = {
|
||||||
|
'tabler-flags': 'Flags',
|
||||||
|
'tabler-flags.rtl': 'Flags RTL',
|
||||||
|
'tabler-marketing': 'Marketing',
|
||||||
|
'tabler-marketing.rtl': 'Marketing RTL',
|
||||||
|
'tabler-payments': 'Payments',
|
||||||
|
'tabler-payments.rtl': 'Payments RTL',
|
||||||
|
'tabler-socials': 'Socials',
|
||||||
|
'tabler-socials.rtl': 'Socials RTL',
|
||||||
|
'tabler-vendors': 'Vendors',
|
||||||
|
'tabler-vendors.rtl': 'Vendors RTL',
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.forEach((file, i) => {
|
||||||
|
const content = readFileSync(file, 'utf8')
|
||||||
|
const filename = basename(file)
|
||||||
|
const pluginKey = Object.keys(plugins).find(plugin => filename.includes(plugin))
|
||||||
|
const plugin = plugins[pluginKey]
|
||||||
|
const regex = /^(@charset ['"][a-zA-Z0-9-]+['"];?)\n?/i
|
||||||
|
|
||||||
|
let newContent = ''
|
||||||
|
|
||||||
|
if (content.match(regex)) {
|
||||||
|
newContent = content.replace(regex, (m, m1) => {
|
||||||
|
return `${m1}\n${banner(plugin)}\n`
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
newContent = `${banner(plugin)}\n${content}`
|
||||||
|
}
|
||||||
|
|
||||||
|
writeFileSync(file, newContent, 'utf8')
|
||||||
|
})
|
||||||
15
core/build/postcss.config.mjs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export default context => {
|
||||||
|
return {
|
||||||
|
map: {
|
||||||
|
inline: false,
|
||||||
|
annotation: true,
|
||||||
|
sourcesContent: true
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
autoprefixer: {
|
||||||
|
cascade: false
|
||||||
|
},
|
||||||
|
rtlcss: context.env === 'RTL'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
core/build/rollup.config.mjs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import path from 'node:path'
|
||||||
|
import process from 'node:process'
|
||||||
|
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'
|
||||||
|
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
const ESM = process.env.ESM === 'true'
|
||||||
|
|
||||||
|
let destinationFile = `tabler${ESM ? '.esm' : ''}`
|
||||||
|
const external = []
|
||||||
|
const plugins = [
|
||||||
|
babel({
|
||||||
|
exclude: 'node_modules/**',
|
||||||
|
babelHelpers: 'bundled'
|
||||||
|
})
|
||||||
|
]
|
||||||
|
|
||||||
|
plugins.push(
|
||||||
|
replace({
|
||||||
|
'process.env.NODE_ENV': '"production"',
|
||||||
|
preventAssignment: true
|
||||||
|
}),
|
||||||
|
nodeResolve()
|
||||||
|
)
|
||||||
|
|
||||||
|
const rollupConfig = {
|
||||||
|
input: path.resolve(__dirname, `../js/tabler.${ESM ? 'esm' : 'umd'}.js`),
|
||||||
|
output: {
|
||||||
|
banner: banner(),
|
||||||
|
file: path.resolve(__dirname, `../dist/js/${destinationFile}.js`),
|
||||||
|
format: ESM ? 'esm' : 'umd',
|
||||||
|
generatedCode: 'es2015'
|
||||||
|
},
|
||||||
|
external,
|
||||||
|
plugins
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ESM) {
|
||||||
|
rollupConfig.output.name = 'tabler'
|
||||||
|
}
|
||||||
|
|
||||||
|
export default rollupConfig
|
||||||
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 507 B After Width: | Height: | Size: 507 B |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 877 B After Width: | Height: | Size: 877 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 584 B |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 572 B After Width: | Height: | Size: 572 B |
|
Before Width: | Height: | Size: 992 B After Width: | Height: | Size: 992 B |
|
Before Width: | Height: | Size: 970 B After Width: | Height: | Size: 970 B |
|
Before Width: | Height: | Size: 842 B After Width: | Height: | Size: 842 B |
|
Before Width: | Height: | Size: 384 B After Width: | Height: | Size: 384 B |
|
Before Width: | Height: | Size: 387 B After Width: | Height: | Size: 387 B |
|
Before Width: | Height: | Size: 711 B After Width: | Height: | Size: 711 B |
|
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 450 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 426 B |
|
Before Width: | Height: | Size: 387 B After Width: | Height: | Size: 387 B |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 577 B After Width: | Height: | Size: 577 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 407 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 634 B |
|
Before Width: | Height: | Size: 633 B After Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 757 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 849 B After Width: | Height: | Size: 849 B |
|
Before Width: | Height: | Size: 633 B After Width: | Height: | Size: 633 B |
|
Before Width: | Height: | Size: 437 B After Width: | Height: | Size: 437 B |
|
Before Width: | Height: | Size: 620 B After Width: | Height: | Size: 620 B |
|
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 321 B |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 542 B After Width: | Height: | Size: 542 B |
|
Before Width: | Height: | Size: 532 B After Width: | Height: | Size: 532 B |
|
Before Width: | Height: | Size: 950 B After Width: | Height: | Size: 950 B |
|
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
|
Before Width: | Height: | Size: 565 B After Width: | Height: | Size: 565 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 817 B After Width: | Height: | Size: 817 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 666 B |
|
Before Width: | Height: | Size: 387 B After Width: | Height: | Size: 387 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 584 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 573 B After Width: | Height: | Size: 573 B |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 609 B After Width: | Height: | Size: 609 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 658 B |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 572 B After Width: | Height: | Size: 572 B |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 979 B After Width: | Height: | Size: 979 B |
|
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 634 B |
|
Before Width: | Height: | Size: 387 B After Width: | Height: | Size: 387 B |
|
Before Width: | Height: | Size: 387 B After Width: | Height: | Size: 387 B |
|
Before Width: | Height: | Size: 377 B After Width: | Height: | Size: 377 B |