@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.
Files changed (43) hide show
  1. package/README.md +11 -10
  2. package/dist/quantum.min.css +2 -2
  3. package/examples/admin-panel.html +303 -608
  4. package/examples/analytics-dashboard.html +128 -288
  5. package/examples/blog.css +297 -0
  6. package/examples/blog.html +216 -0
  7. package/examples/chat-messaging.html +11 -27
  8. package/examples/email-client.css +582 -0
  9. package/examples/email-client.html +432 -0
  10. package/examples/gaming-portal.css +352 -0
  11. package/examples/gaming-portal.html +239 -0
  12. package/examples/index.html +342 -232
  13. package/examples/kitchen-sink.html +284 -94
  14. package/examples/music-streaming.html +32 -91
  15. package/examples/{news-template.html → news.html} +35 -11
  16. package/examples/{portfolio-resume.html → portfolio.html} +72 -26
  17. package/examples/shopping.html +812 -0
  18. package/examples/starlight.html +7 -6
  19. package/examples/task.md +12 -0
  20. package/examples/travel.html +514 -0
  21. package/examples/video-streaming.html +1025 -546
  22. package/package.json +9 -3
  23. package/src/cli.js +5 -5
  24. package/src/defaults.js +18 -16
  25. package/src/starlight.js +20 -15
  26. package/src/styles/quantum-base.css +4 -0
  27. package/src/styles/quantum-components.css +1882 -136
  28. package/src/styles/quantum-icons.css +345 -0
  29. package/src/styles/starlight.css +2606 -1186
  30. package/dist/quantum.css +0 -2374
  31. package/examples/blog-template.html +0 -288
  32. package/examples/email-template.html +0 -712
  33. package/examples/gaming-template.html +0 -471
  34. package/examples/gradient-test.html +0 -129
  35. package/examples/shopping/images/headset.jpg +0 -0
  36. package/examples/shopping/images/sneakers.jpg +0 -0
  37. package/examples/shopping/images/windbreaker.jpg +0 -0
  38. package/examples/shopping/index.html +0 -525
  39. package/examples/theme-test.html +0 -159
  40. package/examples/travel/index.html +0 -432
  41. package/examples/verify_fixes.html +0 -52
  42. package/examples/verify_presets.html +0 -32
  43. /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.10.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
- "glob": "^13.0.0"
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-template.html',
119
- blog: 'blog-template.html',
120
- travel: 'travel/index.html',
121
- shopping: 'shopping/index.html',
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-template.html',
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-starlight': {
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', 'backdrop-filter', '-webkit-backdrop-filter', 'border-color', 'border-width', 'border-style'],
167
- value: ['rgba(255, 255, 255, 0.05)', 'blur(16px)', 'blur(16px)', 'rgba(255, 255, 255, 0.1)', '1px', 'solid']
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
- 'starlight-dialog-bg': {
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
- 'starlight-nav': 'nav-base theme-glass-dark w-full',
194
- 'starlight-navbar': 'nav-base theme-glass-dark w-full sticky top-0 z-50 border-b border-white_10',
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
- 'starlight-sidebar-nav': 'flex flex-col h-full p-6 bg-black_40 backdrop-blur-xl border-r border-white_10',
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
- 'starlight-search': 'search-container theme-glass-dark rounded-xl',
202
- 'starlight-dashboard': 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8',
203
- 'starlight-gallery': 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4',
204
- 'starlight-form': 'card-base theme-glass-dark grid grid-cols-1 md:grid-cols-2 gap-8 items-start',
205
- 'starlight-dialog': 'dialog-base modal-fixed theme-glass-dark starlight-dialog-bg ani-scale-in',
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
- 'starlight-gallery-grid': 'grid gap-4',
267
- 'starlight-gallery-item': 'relative aspect-video rounded-lg overflow-hidden',
268
- 'starlight-gallery-overlay': 'absolute inset-0 flex items-end p-4 bg-gradient-to-t from-black_80 to-transparent opacity-0 transition-opacity',
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: '.system-icon, [data-theme-icon="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 hasAutoIcon = document.querySelector(config.iconSelector.auto) !== null;
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
- if (theme === 'auto') {
467
- // In auto mode, show system icon if it exists, otherwise show the effective theme icon
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
  });
@@ -184,6 +184,10 @@ body {
184
184
  line-height: inherit;
185
185
  }
186
186
 
187
+ ul, ol {
188
+ list-style: none;
189
+ }
190
+
187
191
  input, textarea, select, button {
188
192
  font-family: inherit;
189
193
  font-size: inherit;