Compare commits

...

7 Commits

Author SHA1 Message Date
BG-Software
e4e1ff40c1 Change LambdaTest image to TestMu AI in README.md 2026-01-21 17:50:35 +01:00
Paweł Kuna
938e9d35cc refactor: migrate Vite configuration from .ts to .mts (#2594) 2026-01-12 02:52:15 +01:00
Paweł Kuna
82e3c39585 Enhance markdown typography configuration (#2590) 2026-01-11 17:24:23 +01:00
Paweł Kuna
eac69eb35b Add branch and PR guidelines (#2589) 2026-01-11 17:24:10 +01:00
Paweł Kuna
684f40e7c1 Enhance customization guide with font size and color variables (#2588) 2026-01-11 16:49:28 +01:00
dependabot[bot]
f6414b3c94 chore(deps-dev): bump pnpm from 10.6.5 to 10.27.0 (#2584)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-11 01:30:19 +01:00
codecalm
c3e6aa1bd3 refactor: update stylesheet linking logic in default.html 2026-01-10 21:30:34 +01:00
20 changed files with 246 additions and 91 deletions

View File

@@ -0,0 +1,5 @@
---
"@tabler/docs": patch
---
Updated documentation to explain font sizing and system color CSS variables (`--tblr-primary-rgb`, `--tblr-secondary`, `--tblr-tertiary`, `--tblr-link-color`, `--tblr-gray-*`).

View File

@@ -0,0 +1,38 @@
---
description: Git Branch Naming Rules
globs:
alwaysApply: true
---
## Branch naming
- Use lowercase branch names.
- Use a type prefix and a short description in kebab-case.
- Format: `<type>/<short-description>` or `<type>/<issue-id>-<short-description>`
- Use `gh-123` as the issue id format (avoid `#` in branch names).
### Allowed types
- `feat` - new features
- `fix` - bug fixes
- `docs` - documentation changes
- `chore` - maintenance / tooling
- `refactor` - code refactoring (no behavior change)
- `test` - tests only
- `build` - build system changes
- `ci` - CI changes
- `perf` - performance improvements
- `style` - formatting / lint-only changes
- `revert` - reverting prior changes
### Examples
- `feat/gh-123-add-stepper-component`
- `fix/markdown-table-overflow`
- `docs/gh-45-update-contributing`
- `chore/update-pnpm-lock`
### Notes
- Branch off `dev` by default (unless maintainers request otherwise).
- Avoid spaces, uppercase letters, and special characters other than `/` and `-`.

View File

@@ -0,0 +1,39 @@
---
description: Pull Request Title & Description Rules
globs:
alwaysApply: true
---
## Pull request title
- Write PR titles in **English**.
- Start the title with a **capital letter**.
- Use **present tense** and keep it concise (ideally <= 72 chars).
- Avoid a trailing period.
### Examples
- `Improve markdown table overflow handling`
- `Clarify contributing branch naming`
- `Add onboarding stepper page`
## Pull request description
- Write PR descriptions in **English**.
- Focus on **why** the change is needed and what user-visible effect it has.
- Keep it skimmable: bullets, short paragraphs, clear headings.
### Recommended template
```md
## Summary
- <13 bullets describing the change and why>
## Changes
- <key implementation notes, non-obvious decisions>
```
### Notes
- If you changed SCSS or any package behavior, add a **changeset** describing it (one sentence, with backticks for code elements).
- If a PR is WIP, mark it as draft and prefix the title with `WIP:` only while it is not ready for review.

View File

@@ -28,13 +28,13 @@ 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.testmu.ai" 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/f0967860-31ad-4078-850b-40b0abc95582" />
<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/55ac290a-6729-44aa-bbc3-4c5e909facbf" />
<img src="https://github.com/user-attachments/assets/d3dede5a-d702-47c3-bb66-4d887948ed83" alt="labmdatest" width="296"> <img src="https://github.com/user-attachments/assets/86bcbe29-eb8d-4273-a381-5ce17d4ca92d" alt="TestMu AI" width="296">
</picture> </picture>
</a> </a>
</p> </p>
## 🔎 Preview ## 🔎 Preview

View File

@@ -0,0 +1,30 @@
import path from 'node:path'
import process from 'node:process'
import { fileURLToPath } from 'node:url'
import { createViteConfig } from '../../.build/vite.config.helper'
import getBanner from '../../shared/banner/index.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const baseName = process.env.BASE_NAME || 'tabler'
const entryFile = baseName
const libraryName = baseName
const bannerText = getBanner()
const entryPath = path.resolve(__dirname, `../js/${entryFile}`)
const entry = `${entryPath}.ts`
export default createViteConfig({
entry: entry,
name: libraryName,
fileName: (format) => {
const esmSuffix = format === 'es' ? '.esm' : ''
return `${baseName}${esmSuffix}.js`
},
formats: ['es', 'umd'],
outDir: path.resolve(__dirname, '../dist/js'),
banner: bannerText,
minify: false
})

View File

@@ -1,33 +0,0 @@
import path from 'node:path'
import process from 'node:process'
import { fileURLToPath } from 'node:url'
import { existsSync } from 'node:fs'
import { createViteConfig } from '../../.build/vite.config.helper'
import getBanner from '../../shared/banner/index.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const ESM = process.env.ESM === 'true'
const THEME = process.env.THEME === 'true'
const MINIFY = process.env.MINIFY === 'true'
const destinationFile = `tabler${THEME ? '-theme' : ''}${ESM ? '.esm' : ''}`
const entryFile = `tabler${THEME ? '-theme' : ''}`
const libraryName = `tabler${THEME ? '-theme' : ''}`
const bannerText = getBanner()
// Try .ts first, fallback to .js for gradual migration
const entryPath = path.resolve(__dirname, `../js/${entryFile}`)
const entry = existsSync(`${entryPath}.ts`) ? `${entryPath}.ts` : `${entryPath}.js`
export default createViteConfig({
entry: entry,
name: ESM ? undefined : libraryName,
fileName: () => MINIFY ? `${destinationFile}.min.js` : `${destinationFile}.js`,
formats: [ESM ? 'es' : 'umd'],
outDir: path.resolve(__dirname, '../dist/js'),
banner: bannerText,
minify: MINIFY ? true : false
})

View File

@@ -19,16 +19,12 @@
"css-lint": "pnpm run css-lint-variables", "css-lint": "pnpm run css-lint-variables",
"css-lint-variables": "find-unused-sass-variables scss/ node_modules/bootstrap/scss/", "css-lint-variables": "find-unused-sass-variables scss/ node_modules/bootstrap/scss/",
"js": "pnpm run js-build && pnpm run js-build-min", "js": "pnpm run js-build && pnpm run js-build-min",
"js-build": "concurrently \"pnpm run js-build-standalone\" \"pnpm run js-build-standalone-esm\" \"pnpm run js-build-theme\" \"pnpm run js-build-theme-esm\"", "js-build": "concurrently \"pnpm run js-build-standalone\" \"pnpm run js-build-theme\"",
"js-build-theme-esm": "cross-env THEME=true ESM=true vite build --config .build/vite.config.ts", "js-build-theme": "cross-env BASE_NAME=tabler-theme vite build --config .build/vite.config.mts",
"js-build-theme": "cross-env THEME=true vite build --config .build/vite.config.ts", "js-build-standalone": "cross-env BASE_NAME=tabler vite build --config .build/vite.config.mts",
"js-build-standalone": "vite build --config .build/vite.config.ts", "js-build-min": "concurrently \"pnpm run js-build-min-standalone\" \"pnpm run js-build-min-theme\"",
"js-build-standalone-esm": "cross-env ESM=true vite build --config .build/vite.config.ts", "js-build-min-standalone": "concurrently \"terser dist/js/tabler.js --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler.js.map,filename=dist/js/tabler.min.js.map,url=tabler.min.js.map\\\" -o dist/js/tabler.min.js\" \"terser dist/js/tabler.esm.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler.esm.js.map,filename=dist/js/tabler.esm.min.js.map,url=tabler.esm.min.js.map\\\" -o dist/js/tabler.esm.min.js\"",
"js-build-min": "concurrently \"pnpm run js-build-min-standalone\" \"pnpm run js-build-min-standalone-esm\" \"pnpm run js-build-min-theme\" \"pnpm run js-build-min-theme-esm\"", "js-build-min-theme": "concurrently \"terser dist/js/tabler-theme.js --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler-theme.js.map,filename=dist/js/tabler-theme.min.js.map,url=tabler-theme.min.js.map\\\" -o dist/js/tabler-theme.min.js\" \"terser dist/js/tabler-theme.esm.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \\\"content=dist/js/tabler-theme.esm.js.map,filename=dist/js/tabler-theme.esm.min.js.map,url=tabler-theme.esm.min.js.map\\\" -o dist/js/tabler-theme.esm.min.js\"",
"js-build-min-standalone": "cross-env MINIFY=true vite build --config .build/vite.config.ts",
"js-build-min-standalone-esm": "cross-env MINIFY=true ESM=true vite build --config .build/vite.config.ts",
"js-build-min-theme": "cross-env MINIFY=true THEME=true vite build --config .build/vite.config.ts",
"js-build-min-theme-esm": "cross-env MINIFY=true THEME=true ESM=true vite build --config .build/vite.config.ts",
"copy": "concurrently \"pnpm run copy-img\" \"pnpm run copy-libs\" \"pnpm run copy-fonts\"", "copy": "concurrently \"pnpm run copy-img\" \"pnpm run copy-libs\" \"pnpm run copy-fonts\"",
"copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img", "copy-img": "shx mkdir -p dist/img && shx cp -rf img/* dist/img",
"copy-libs": "tsx .build/copy-libs.ts", "copy-libs": "tsx .build/copy-libs.ts",

View File

@@ -32,7 +32,6 @@
/** Theme colors */ /** Theme colors */
@each $name, $color in map.merge($theme-colors, $social-colors) { @each $name, $color in map.merge($theme-colors, $social-colors) {
@debug contrast-ratio($color, white), $name, $min-contrast-ratio;
--#{$prefix}#{$name}: #{$color}; --#{$prefix}#{$name}: #{$color};
--#{$prefix}#{$name}-rgb: #{to-rgb($color)}; --#{$prefix}#{$name}-rgb: #{to-rgb($color)};
--#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))}; --#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};

View File

@@ -495,6 +495,11 @@ $line-heights: (
h4: $h4-line-height, h4: $h4-line-height,
h5: $h5-line-height, h5: $h5-line-height,
h6: $h6-line-height, h6: $h6-line-height,
base: $line-height-base,
sm: $line-height-sm,
lg: $line-height-lg,
xl: $line-height-xl,
) !default; ) !default;
$display-font-sizes: ( $display-font-sizes: (

View File

@@ -138,8 +138,6 @@
// Colors // Colors
@function to-rgb($value) { @function to-rgb($value) {
@debug $value;
@return color.channel($value, 'red', $space: rgb), color.channel($value, 'green', $space: rgb), color.channel($value, 'blue', $space: rgb); @return color.channel($value, 'red', $space: rgb), color.channel($value, 'green', $space: rgb), color.channel($value, 'blue', $space: rgb);
} }

View File

@@ -1,8 +1,12 @@
$markdown-font-size: var(--#{$prefix}font-size-h3) !default;
$markdown-line-height: var(--#{$prefix}line-height-lg) !default;
/** /**
Markdown Markdown
*/ */
.markdown { .markdown {
line-height: $line-height-xl; line-height: $markdown-line-height;
font-size: $markdown-font-size;
> :first-child { > :first-child {
margin-top: 0; margin-top: 0;

View File

@@ -1,25 +1,20 @@
import path from 'node:path' import path from 'node:path'
import process from 'node:process'
import { fileURLToPath } from 'node:url' import { fileURLToPath } from 'node:url'
import { existsSync } from 'node:fs'
import { createViteConfig } from '../../.build/vite.config.helper' import { createViteConfig } from '../../.build/vite.config.helper'
import getBanner from '../../shared/banner/index.mjs' import getBanner from '../../shared/banner/index.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url)) const __dirname = path.dirname(fileURLToPath(import.meta.url))
const MINIFY = process.env.MINIFY === 'true'
// Try .ts first, fallback to .js for gradual migration
const entryPath = path.resolve(__dirname, '../js/docs') const entryPath = path.resolve(__dirname, '../js/docs')
const entry = existsSync(`${entryPath}.ts`) ? `${entryPath}.ts` : `${entryPath}.js` const entry = `${entryPath}.ts`
export default createViteConfig({ export default createViteConfig({
entry: entry, entry: entry,
name: 'docs', name: 'docs',
fileName: () => MINIFY ? 'docs.min.js' : 'docs.js', fileName: () => 'docs.js',
formats: ['es'], formats: ['es'],
outDir: path.resolve(__dirname, '../dist/js'), outDir: path.resolve(__dirname, '../dist/js'),
banner: undefined, banner: undefined,
minify: MINIFY minify: false
}) })

View File

@@ -27,6 +27,35 @@ Now you just need to tell Tabler to use your favorite font:
</style> </style>
``` ```
## Custom font sizes
Tabler exposes typography settings as CSS variables. You can override them by setting variables on `:root` (global) or on any container (scoped).
### Base font size
To change the default font size used by body text and many components, override `--tblr-body-font-size`:
```html
<style>
:root {
--tblr-body-font-size: 1rem;
}
</style>
```
### Headings
Headings use `--tblr-font-size-h1``--tblr-font-size-h6` and `--tblr-line-height-h1``--tblr-line-height-h6`:
```html
<style>
:root {
--tblr-font-size-h1: 2rem;
--tblr-line-height-h1: 2.5rem;
}
</style>
```
## Custom primary color ## Custom primary color
To change the primary color of Tabler you need to set the `--tblr-primary` variable in your CSS. You can use any color format you like (hex, rgb, hsl, etc). In this example we will use a custom red color: To change the primary color of Tabler you need to set the `--tblr-primary` variable in your CSS. You can use any color format you like (hex, rgb, hsl, etc). In this example we will use a custom red color:
@@ -34,7 +63,56 @@ To change the primary color of Tabler you need to set the `--tblr-primary` varia
```html ```html
<style> <style>
:root { :root {
--tblr-primary: #F11D46; --tblr-primary: #f11d46;
} }
</style> </style>
``` ```
If you use `--tblr-primary` in `rgba()` contexts (or see inconsistent colors), also override `--tblr-primary-rgb` (as comma-separated RGB values) and optionally `--tblr-primary-fg` (text/icon color used on primary backgrounds):
```html
<style>
:root {
--tblr-primary: #f11d46;
--tblr-primary-rgb: 241, 29, 70;
--tblr-primary-fg: #fff;
}
</style>
```
## Other system colors
Tabler also exposes a few "system" colors you can customize globally:
```html
<style>
:root {
--tblr-secondary: #6b7280;
--tblr-tertiary: #9ca3af;
--tblr-link-color: #066fd1;
--tblr-link-hover-color: #045db0;
}
</style>
```
### Gray scale
You can override the full gray palette (`--tblr-gray-50``--tblr-gray-950`) to match your brand:
```html
<style>
:root {
--tblr-gray-50: #f9fafb;
--tblr-gray-100: #f3f4f6;
--tblr-gray-200: #e5e7eb;
--tblr-gray-300: #d1d5db;
--tblr-gray-400: #9ca3af;
--tblr-gray-500: #6b7280;
--tblr-gray-600: #4b5563;
--tblr-gray-700: #374151;
--tblr-gray-800: #1f2937;
--tblr-gray-900: #111827;
--tblr-gray-950: #030712;
}
</style>
```

View File

@@ -30,7 +30,8 @@ Follow these steps to set up Tabler for development:
3. Create a new branch for your changes: 3. Create a new branch for your changes:
```bash ```bash
git checkout -b your-branch-name # Use the project branch naming convention, e.g.:
git checkout -b fix/markdown-table-overflow
``` ```
## Development ## Development

View File

@@ -8,9 +8,9 @@
"build-assets": "concurrently \"pnpm run js\" \"pnpm run css\"", "build-assets": "concurrently \"pnpm run js\" \"pnpm run css\"",
"html": "eleventy", "html": "eleventy",
"js": "pnpm run js-build && pnpm run js-build-min", "js": "pnpm run js-build && pnpm run js-build-min",
"js-build": "vite build --config .build/vite.config.ts", "js-build": "vite build --config .build/vite.config.mts",
"js-build-min": "pnpm run js-build-min-docs", "js-build-min": "pnpm run js-build-min-docs",
"js-build-min-docs": "cross-env MINIFY=true vite build --config .build/vite.config.ts", "js-build-min-docs": "terser dist/js/docs.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \"content=dist/js/docs.js.map,filename=dist/js/docs.min.js.map,url=docs.min.js.map\" -o dist/js/docs.min.js",
"css": "pnpm run css-build && pnpm run css-prefix && pnpm run css-minify", "css": "pnpm run css-build && pnpm run css-prefix && pnpm run css-minify",
"css-build": "sass scss/:dist/css/ --no-source-map --load-path=./node_modules", "css-build": "sass scss/:dist/css/ --no-source-map --load-path=./node_modules",
"css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"", "css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",

View File

@@ -34,7 +34,7 @@
"js-beautify": "^1.15.4", "js-beautify": "^1.15.4",
"markdownlint-cli": "^0.47.0", "markdownlint-cli": "^0.47.0",
"nodemon": "^3.1.11", "nodemon": "^3.1.11",
"pnpm": "^10.6.5", "pnpm": "^10.27.0",
"postcss": "^8.5.6", "postcss": "^8.5.6",
"postcss-cli": "^11.0.1", "postcss-cli": "^11.0.1",
"prettier": "^3.7.4", "prettier": "^3.7.4",

25
pnpm-lock.yaml generated
View File

@@ -52,8 +52,8 @@ importers:
specifier: ^3.1.11 specifier: ^3.1.11
version: 3.1.11 version: 3.1.11
pnpm: pnpm:
specifier: ^10.6.5 specifier: ^10.27.0
version: 10.6.5 version: 10.27.0
postcss: postcss:
specifier: ^8.5.6 specifier: ^8.5.6
version: 8.5.6 version: 8.5.6
@@ -439,8 +439,8 @@ packages:
search-insights: search-insights:
optional: true optional: true
'@emnapi/runtime@1.7.1': '@emnapi/runtime@1.8.1':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
'@epic-web/invariant@1.0.0': '@epic-web/invariant@1.0.0':
resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==}
@@ -1394,6 +1394,9 @@ packages:
caniuse-lite@1.0.30001762: caniuse-lite@1.0.30001762:
resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==} resolution: {integrity: sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==}
caniuse-lite@1.0.30001763:
resolution: {integrity: sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==}
caseless@0.12.0: caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -2711,8 +2714,8 @@ packages:
plyr@3.8.3: plyr@3.8.3:
resolution: {integrity: sha512-0+iI5uw0WRvtKBpgPCkmQQv7ucHVQKTEo6UFJjgJ8cy/JZhy0dQqshHQVitHXV6l2O3MzhgnuvQ95VSkWcWeSw==} resolution: {integrity: sha512-0+iI5uw0WRvtKBpgPCkmQQv7ucHVQKTEo6UFJjgJ8cy/JZhy0dQqshHQVitHXV6l2O3MzhgnuvQ95VSkWcWeSw==}
pnpm@10.6.5: pnpm@10.27.0:
resolution: {integrity: sha512-zfko/KIIMs1Z7FOCZJK33CXcUk1DcLa0rb9lgD0y76psHIgUfArk6NV5psnuxxV1e1DU+jXuoXnYaOraTtBDrw==} resolution: {integrity: sha512-ctaZ2haxF5wUup5k3HHJpAmIy9xlwmTLDkidt96RfyDc9NZNhyNiXylpulLUt+KhFwaC2awqXcrqq3MrfhbwSg==}
engines: {node: '>=18.12'} engines: {node: '>=18.12'}
hasBin: true hasBin: true
@@ -3903,7 +3906,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- '@algolia/client-search' - '@algolia/client-search'
'@emnapi/runtime@1.7.1': '@emnapi/runtime@1.8.1':
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1
optional: true optional: true
@@ -4101,7 +4104,7 @@ snapshots:
'@img/sharp-wasm32@0.34.5': '@img/sharp-wasm32@0.34.5':
dependencies: dependencies:
'@emnapi/runtime': 1.7.1 '@emnapi/runtime': 1.8.1
optional: true optional: true
'@img/sharp-win32-arm64@0.34.5': '@img/sharp-win32-arm64@0.34.5':
@@ -4669,6 +4672,8 @@ snapshots:
caniuse-lite@1.0.30001762: {} caniuse-lite@1.0.30001762: {}
caniuse-lite@1.0.30001763: {}
caseless@0.12.0: {} caseless@0.12.0: {}
ccount@2.0.1: {} ccount@2.0.1: {}
@@ -5851,7 +5856,7 @@ snapshots:
dependencies: dependencies:
'@next/env': 16.0.4 '@next/env': 16.0.4
'@swc/helpers': 0.5.15 '@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001762 caniuse-lite: 1.0.30001763
postcss: 8.4.31 postcss: 8.4.31
react: 19.2.0 react: 19.2.0
react-dom: 19.2.0(react@19.2.0) react-dom: 19.2.0(react@19.2.0)
@@ -6060,7 +6065,7 @@ snapshots:
rangetouch: 2.0.1 rangetouch: 2.0.1
url-polyfill: 1.1.13 url-polyfill: 1.1.13
pnpm@10.6.5: {} pnpm@10.27.0: {}
postcss-cli@11.0.1(postcss@8.5.6)(tsx@4.21.0): postcss-cli@11.0.1(postcss@8.5.6)(tsx@4.21.0):
dependencies: dependencies:

View File

@@ -1,26 +1,22 @@
import path from 'node:path' import path from 'node:path'
import process from 'node:process'
import { fileURLToPath } from 'node:url' import { fileURLToPath } from 'node:url'
import { existsSync } from 'node:fs'
import { createViteConfig } from '../../.build/vite.config.helper' import { createViteConfig } from '../../.build/vite.config.helper'
import getBanner from '../../shared/banner/index.mjs' import getBanner from '../../shared/banner/index.mjs'
const __dirname = path.dirname(fileURLToPath(import.meta.url)) const __dirname = path.dirname(fileURLToPath(import.meta.url))
const MINIFY = process.env.MINIFY === 'true'
const bannerText = getBanner('Demo') const bannerText = getBanner('Demo')
// Try .ts first, fallback to .js for gradual migration
const entryPath = path.resolve(__dirname, '../js/demo') const entryPath = path.resolve(__dirname, '../js/demo')
const entry = existsSync(`${entryPath}.ts`) ? `${entryPath}.ts` : `${entryPath}.js` const entry = `${entryPath}.ts`
export default createViteConfig({ export default createViteConfig({
entry: entry, entry: entry,
name: 'demo', name: 'demo',
fileName: () => MINIFY ? 'demo.min.js' : 'demo.js', fileName: () => 'demo.js',
formats: ['es'], formats: ['es'],
outDir: path.resolve(__dirname, '../dist/preview/js'), outDir: path.resolve(__dirname, '../dist/preview/js'),
banner: bannerText, banner: bannerText,
minify: MINIFY minify: false
}) })

View File

@@ -15,9 +15,9 @@
"css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/preview/css/*.css\" \"!dist/preview/css/*.rtl*.css\" \"!dist/preview/css/*.min.css\"", "css-prefix": "postcss --config .build/postcss.config.mjs --replace \"dist/preview/css/*.css\" \"!dist/preview/css/*.rtl*.css\" \"!dist/preview/css/*.min.css\"",
"css-minify": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/preview/css/ --batch --batch-suffix \".min\" \"dist/preview/css/*.css\" \"!dist/preview/css/*.min.css\" \"!dist/preview/css/*rtl*.css\"", "css-minify": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/preview/css/ --batch --batch-suffix \".min\" \"dist/preview/css/*.css\" \"!dist/preview/css/*.min.css\" \"!dist/preview/css/*rtl*.css\"",
"js": "pnpm run js-build && pnpm run js-build-min", "js": "pnpm run js-build && pnpm run js-build-min",
"js-build": "vite build --config .build/vite.config.ts", "js-build": "vite build --config .build/vite.config.mts",
"js-build-min": "pnpm run js-build-min-demo", "js-build-min": "pnpm run js-build-min-demo",
"js-build-min-demo": "cross-env MINIFY=true vite build --config .build/vite.config.ts", "js-build-min-demo": "terser dist/preview/js/demo.js --module --compress --mangle --comments '/@license|@preserve|^!/' --source-map \"content=dist/preview/js/demo.js.map,filename=dist/preview/js/demo.min.js.map,url=demo.min.js.map\" -o dist/preview/js/demo.min.js",
"clean": "shx rm -rf dist demo", "clean": "shx rm -rf dist demo",
"html": "pnpm run html-build && pnpm run html-prettify && pnpm run html-remove-prettier-ignore", "html": "pnpm run html-build && pnpm run html-prettify && pnpm run html-remove-prettier-ignore",
"html-build": "eleventy", "html-build": "eleventy",

View File

@@ -64,13 +64,12 @@
rel="stylesheet" /> rel="stylesheet" />
{% endfor %} {% endfor %}
{% if docs-libs -%} {% if docs-libs -%}
{% for lib in libs.css -%} {% for lib in libs -%}
{% if docs-libs contains lib[0] -%} {% if docs-libs contains lib[0] -%}
{% for file in lib[1] -%} {% for file in lib[1].css -%}
<link <link
href="{% if file contains 'http://' or file contains 'https://' %}{{ file }}{% else %}{{ page | relative }}/libs/{% if environment != 'development' %}{{ file | replace: '@', '' }}{% else %}{{ file }}{% endif %}{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}" href="{% if file contains 'http://' or file contains 'https://' %}{{ file }}{% else %}/dist/libs/{{ lib[1].npm }}/{% if environment != 'development' %}{{ file | replace: '@', '' }}{% else %}{{ file }}{% endif %}{% if environment != 'development' %}?{{ 'now' | date: '%s' }}{% endif %}{% endif %}"
rel="stylesheet" /> rel="stylesheet" />
{% endfor -%} {% endfor -%}
{% endif -%} {% endif -%}