@howssatoshi/quantumcss 1.10.1 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -10
- package/dist/quantum.min.css +2 -2
- package/examples/admin-panel.html +303 -608
- package/examples/analytics-dashboard.html +128 -288
- package/examples/blog.css +297 -0
- package/examples/blog.html +216 -0
- package/examples/chat-messaging.html +11 -27
- package/examples/email-client.css +582 -0
- package/examples/email-client.html +432 -0
- package/examples/gaming-portal.css +352 -0
- package/examples/gaming-portal.html +239 -0
- package/examples/index.html +342 -232
- package/examples/kitchen-sink.html +284 -94
- package/examples/music-streaming.html +32 -91
- package/examples/{news-template.html → news.html} +35 -11
- package/examples/{portfolio-resume.html → portfolio.html} +72 -26
- package/examples/shopping.html +812 -0
- package/examples/starlight.html +7 -6
- package/examples/task.md +12 -0
- package/examples/travel.html +514 -0
- package/examples/video-streaming.html +1025 -546
- package/package.json +9 -3
- package/src/cli.js +5 -5
- package/src/defaults.js +18 -16
- package/src/starlight.js +20 -15
- package/src/styles/quantum-base.css +4 -0
- package/src/styles/quantum-components.css +1882 -136
- package/src/styles/quantum-icons.css +345 -0
- package/src/styles/starlight.css +2606 -1186
- package/dist/quantum.css +0 -2374
- package/examples/blog-template.html +0 -288
- package/examples/email-template.html +0 -712
- package/examples/gaming-template.html +0 -471
- package/examples/gradient-test.html +0 -129
- package/examples/shopping/images/headset.jpg +0 -0
- package/examples/shopping/images/sneakers.jpg +0 -0
- package/examples/shopping/images/windbreaker.jpg +0 -0
- package/examples/shopping/index.html +0 -525
- package/examples/theme-test.html +0 -159
- package/examples/travel/index.html +0 -432
- package/examples/verify_fixes.html +0 -52
- package/examples/verify_presets.html +0 -32
- /package/examples/{shopping/nova-shop.css → nova-shop.css} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@howssatoshi/quantumcss",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.1",
|
|
4
4
|
"description": "Advanced utility-first CSS framework with JIT generation and modern components",
|
|
5
5
|
"main": "dist/quantum.min.css",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
"watch": "node scripts/build.js --watch",
|
|
20
20
|
"docs": "node scripts/build.js --docs",
|
|
21
21
|
"generate": "node src/cli.js",
|
|
22
|
-
"generate:watch": "node src/cli.js --watch"
|
|
22
|
+
"generate:watch": "node src/cli.js --watch",
|
|
23
|
+
"harvest:icons": "node scripts/harvest-icons.js",
|
|
24
|
+
"release": "node scripts/release.js"
|
|
23
25
|
},
|
|
24
26
|
"repository": {
|
|
25
27
|
"type": "git",
|
|
@@ -44,8 +46,12 @@
|
|
|
44
46
|
"node": ">=14.0.0"
|
|
45
47
|
},
|
|
46
48
|
"dependencies": {
|
|
49
|
+
"autoprefixer": "^10.4.27",
|
|
47
50
|
"chokidar": "^5.0.0",
|
|
48
|
-
"
|
|
51
|
+
"cssnano": "^7.1.3",
|
|
52
|
+
"glob": "^13.0.0",
|
|
53
|
+
"parse5": "^8.0.0",
|
|
54
|
+
"postcss": "^8.5.8"
|
|
49
55
|
},
|
|
50
56
|
"devDependencies": {
|
|
51
57
|
"@eslint/js": "^9.39.2",
|
package/src/cli.js
CHANGED
|
@@ -115,12 +115,12 @@ function build(outputPath = 'dist/quantum.css') {
|
|
|
115
115
|
function scaffold(template, targetPath = 'index.html') {
|
|
116
116
|
const templatesDir = path.resolve(__dirname, '../examples');
|
|
117
117
|
const templateMap = {
|
|
118
|
-
gaming: 'gaming-
|
|
119
|
-
blog: 'blog
|
|
120
|
-
travel: 'travel
|
|
121
|
-
shopping: 'shopping
|
|
118
|
+
gaming: 'gaming-portal.html',
|
|
119
|
+
blog: 'blog.html',
|
|
120
|
+
travel: 'travel.html',
|
|
121
|
+
shopping: 'shopping.html',
|
|
122
122
|
starlight: 'starlight.html',
|
|
123
|
-
news: 'news
|
|
123
|
+
news: 'news.html',
|
|
124
124
|
docs: 'kitchen-sink.html'
|
|
125
125
|
};
|
|
126
126
|
|
package/src/defaults.js
CHANGED
|
@@ -150,7 +150,7 @@ const utilityMaps = {
|
|
|
150
150
|
value: ['rgba(255, 255, 255, 0.03)', 'blur(16px)', 'blur(16px)', '1px', 'solid', 'rgba(255, 255, 255, 0.1)']
|
|
151
151
|
},
|
|
152
152
|
'bg-starlight': { property: 'background', value: 'linear-gradient(135deg, var(--q-color-starlight-peach) 0%, var(--q-color-starlight-blue) 100%)' },
|
|
153
|
-
'text-gradient
|
|
153
|
+
'text-gradient': {
|
|
154
154
|
property: ['background', '-webkit-background-clip', '-webkit-text-fill-color', 'display'],
|
|
155
155
|
value: ['linear-gradient(to right, var(--q-color-starlight-peach), var(--q-color-starlight-blue))', 'text', 'transparent', 'inline-block']
|
|
156
156
|
},
|
|
@@ -163,10 +163,10 @@ const utilityMaps = {
|
|
|
163
163
|
value: ['rgba(255, 255, 255, 0.05)', 'blur(16px)', 'blur(16px)', 'rgba(255, 255, 255, 0.1)', '1px', 'solid']
|
|
164
164
|
},
|
|
165
165
|
'theme-glass-dark': {
|
|
166
|
-
property: ['background-color', '
|
|
167
|
-
value: ['rgba(255, 255, 255, 0.05)', '
|
|
166
|
+
property: ['background-color', 'border-color', 'border-width', 'border-style'],
|
|
167
|
+
value: ['rgba(255, 255, 255, 0.05)', 'rgba(255, 255, 255, 0.1)', '1px', 'solid']
|
|
168
168
|
},
|
|
169
|
-
'
|
|
169
|
+
'dialog-bg': {
|
|
170
170
|
property: ['background-color', 'backdrop-filter', '-webkit-backdrop-filter'],
|
|
171
171
|
value: ['rgba(8, 8, 26, 0.05) !important', 'blur(24px) !important', 'blur(24px) !important']
|
|
172
172
|
},
|
|
@@ -187,22 +187,24 @@ const utilityMaps = {
|
|
|
187
187
|
'search-container': 'relative block w-full h-12',
|
|
188
188
|
'search-input': 'pl-12 w-full h-12',
|
|
189
189
|
'search-icon': 'absolute left-4 top-1_2 -translate-y-1_2 pointer-events-none z-10 w-5 h-5',
|
|
190
|
-
'nav-glass': 'nav-base theme-glass-dark',
|
|
190
|
+
'nav-glass': 'nav-base theme-glass-dark border-b',
|
|
191
191
|
'starlight-card': 'card-base theme-glass-dark',
|
|
192
192
|
'starlight-card-interactive': 'card-base theme-glass-dark hover:border-white_20 hover:-translate-y-1 transition-all duration-300',
|
|
193
|
-
'
|
|
194
|
-
'starlight-
|
|
193
|
+
'nav-header': 'nav-base theme-glass-dark w-full sticky top-0 z-50 border-b',
|
|
194
|
+
'starlight-nav': 'nav-header',
|
|
195
|
+
'starlight-navbar': 'nav-header border-white_10',
|
|
195
196
|
'starlight-hero': 'container mx-auto px-6 py-16 md:py-24 text-center relative overflow-hidden',
|
|
196
197
|
'starlight-footer': 'border-t border-white_10 py-12 mt-20 bg-black_20 backdrop-blur-md',
|
|
197
|
-
'
|
|
198
|
+
'aside-nav': 'flex flex-col h-full backdrop-blur-xl border-r border-white_10',
|
|
199
|
+
'starlight-sidebar-nav': 'aside-nav p-6',
|
|
198
200
|
'nav-reverse': { property: 'flex-direction', value: 'row-reverse' },
|
|
199
201
|
'nav-center': { property: 'display', value: 'grid' },
|
|
200
202
|
'hamburger-left': { property: 'order', value: '-1' },
|
|
201
|
-
'
|
|
202
|
-
'
|
|
203
|
-
'
|
|
204
|
-
'
|
|
205
|
-
'
|
|
203
|
+
'search': 'search-container theme-glass-dark rounded-xl',
|
|
204
|
+
'dashboard': 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8',
|
|
205
|
+
'gallery': 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4',
|
|
206
|
+
'form': 'card-base theme-glass-dark grid grid-cols-1 md:grid-cols-2 gap-8 items-start',
|
|
207
|
+
'dialog': 'dialog-base modal-fixed theme-glass-dark dialog-bg ani-scale-in',
|
|
206
208
|
'starlight-sidebar': 'flex flex-col h-screen w-72 fixed left-0 top-0 bg-black_40 backdrop-blur-xl border-r border-white_10 p-6 z-40',
|
|
207
209
|
'starlight-feed-card': 'flex flex-col bg-white_03 backdrop-blur-md border border-white_10 rounded-2xl p-6 transition-all duration-300 ease',
|
|
208
210
|
'starlight-auth-form': 'flex flex-col max-w-md mx-auto bg-white_05 backdrop-blur-xl border border-white_10 rounded-2xl p-10 shadow-2xl',
|
|
@@ -263,9 +265,9 @@ const utilityMaps = {
|
|
|
263
265
|
'starlight-breadcrumb-separator': 'text-white_40',
|
|
264
266
|
'starlight-breadcrumb-current': 'font-medium',
|
|
265
267
|
|
|
266
|
-
'
|
|
267
|
-
'
|
|
268
|
-
'
|
|
268
|
+
'gallery-grid': 'grid gap-4',
|
|
269
|
+
'gallery-item': 'relative aspect-video rounded-lg overflow-hidden',
|
|
270
|
+
'gallery-overlay': 'absolute inset-0 flex items-end p-4 bg-gradient-to-t from-black_80 to-transparent opacity-0 transition-opacity',
|
|
269
271
|
|
|
270
272
|
'starlight-progress': 'flex items-center gap-3',
|
|
271
273
|
'starlight-progress-bar': 'flex-1 h-2 bg-white_10 rounded-full overflow-hidden',
|
package/src/starlight.js
CHANGED
|
@@ -439,7 +439,7 @@ const Starlight = {
|
|
|
439
439
|
iconSelector: {
|
|
440
440
|
light: '.sun-icon, [data-theme-icon="light"]',
|
|
441
441
|
dark: '.moon-icon, [data-theme-icon="dark"]',
|
|
442
|
-
auto: '.
|
|
442
|
+
auto: '.q-icon-display, [data-theme-icon="auto"]'
|
|
443
443
|
},
|
|
444
444
|
autoDetect: true
|
|
445
445
|
};
|
|
@@ -457,25 +457,30 @@ const Starlight = {
|
|
|
457
457
|
* @param {string} effectiveTheme - The actual theme being displayed
|
|
458
458
|
*/
|
|
459
459
|
const updateIcons = (theme, effectiveTheme) => {
|
|
460
|
-
const
|
|
460
|
+
const autoIconSelector = config.iconSelector.auto;
|
|
461
|
+
const hasAutoIcon = autoIconSelector && document.querySelector(autoIconSelector) !== null;
|
|
461
462
|
|
|
463
|
+
if (theme === 'auto' && hasAutoIcon) {
|
|
464
|
+
// Auto mode with auto icon: show only auto icon
|
|
465
|
+
document.querySelectorAll(autoIconSelector).forEach(icon => {
|
|
466
|
+
icon.classList.remove('hidden');
|
|
467
|
+
});
|
|
468
|
+
// Hide light/dark icons
|
|
469
|
+
const lightSelector = config.iconSelector.light;
|
|
470
|
+
const darkSelector = config.iconSelector.dark;
|
|
471
|
+
document.querySelectorAll(`${lightSelector}, ${darkSelector}`).forEach(icon => {
|
|
472
|
+
icon.classList.add('hidden');
|
|
473
|
+
});
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
// Otherwise use normal theme-based visibility
|
|
462
478
|
config.themes.forEach(t => {
|
|
463
479
|
const selector = config.iconSelector[t];
|
|
464
480
|
if (selector) {
|
|
465
481
|
document.querySelectorAll(selector).forEach(icon => {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
const isAutoIcon = t === 'auto';
|
|
469
|
-
const isEffectiveIcon = t === effectiveTheme;
|
|
470
|
-
|
|
471
|
-
if (hasAutoIcon) {
|
|
472
|
-
icon.classList.toggle('hidden', !isAutoIcon);
|
|
473
|
-
} else {
|
|
474
|
-
icon.classList.toggle('hidden', !isEffectiveIcon);
|
|
475
|
-
}
|
|
476
|
-
} else {
|
|
477
|
-
icon.classList.toggle('hidden', t !== theme);
|
|
478
|
-
}
|
|
482
|
+
const isEffective = theme === 'auto' ? t === effectiveTheme : t === theme;
|
|
483
|
+
icon.classList.toggle('hidden', !isEffective);
|
|
479
484
|
});
|
|
480
485
|
}
|
|
481
486
|
});
|