@howssatoshi/quantumcss 1.8.0 → 1.11.0

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 (49) hide show
  1. package/README.md +11 -10
  2. package/dist/quantum.min.css +10 -1
  3. package/examples/admin-panel.html +317 -600
  4. package/examples/analytics-dashboard.html +136 -299
  5. package/examples/blog.css +297 -0
  6. package/examples/blog.html +216 -0
  7. package/examples/chat-messaging.html +43 -70
  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/images/eric.png +0 -0
  13. package/examples/index.html +342 -259
  14. package/examples/kitchen-sink.html +332 -94
  15. package/examples/music-streaming.html +32 -91
  16. package/examples/news.html +199 -0
  17. package/examples/nova-shop.css +984 -0
  18. package/examples/portfolio.html +235 -0
  19. package/examples/shopping.html +812 -0
  20. package/examples/starlight.html +11 -9
  21. package/examples/task.md +12 -0
  22. package/examples/travel.html +514 -0
  23. package/examples/video-streaming.html +310 -92
  24. package/package.json +9 -3
  25. package/src/cli.js +5 -5
  26. package/src/defaults.js +19 -16
  27. package/src/generator.js +12 -3
  28. package/src/starlight.js +20 -15
  29. package/src/styles/quantum-animations.css +13 -13
  30. package/src/styles/quantum-base.css +110 -58
  31. package/src/styles/quantum-components.css +2379 -349
  32. package/src/styles/quantum-icons.css +345 -0
  33. package/src/styles/starlight.css +2702 -1054
  34. package/dist/index.html +0 -232
  35. package/dist/quantum.css +0 -2374
  36. package/examples/blog-template.html +0 -287
  37. package/examples/email-template.html +0 -712
  38. package/examples/gaming-template.html +0 -340
  39. package/examples/gradient-test.html +0 -124
  40. package/examples/news-template.html +0 -317
  41. package/examples/portfolio-resume.html +0 -647
  42. package/examples/shopping/images/headset.jpg +0 -0
  43. package/examples/shopping/images/sneakers.jpg +0 -0
  44. package/examples/shopping/images/windbreaker.jpg +0 -0
  45. package/examples/shopping/index.html +0 -338
  46. package/examples/theme-test.html +0 -159
  47. package/examples/travel/index.html +0 -275
  48. package/examples/verify_fixes.html +0 -52
  49. package/examples/verify_presets.html +0 -32
@@ -11,72 +11,65 @@
11
11
  display: grid;
12
12
  grid-template-columns: 320px 1fr;
13
13
  height: 100vh;
14
- background: var(--bg-primary, #08081a);
14
+ background: var(--q-color-bg, #08081a);
15
15
  overflow: hidden;
16
16
  }
17
17
  .chat-sidebar {
18
- background: linear-gradient(180deg, rgba(15, 23, 42, 0.98) 0%, rgba(8, 8, 26, 0.98) 100%);
19
- border-right: 1px solid rgba(255, 255, 255, 0.06);
18
+ background: linear-gradient(180deg, color-mix(in srgb, var(--q-color-bg), white 2%) 0%, var(--q-color-bg) 100%);
19
+ border-right: 1px solid var(--q-color-border);
20
20
  display: flex;
21
21
  flex-direction: column;
22
22
  overflow: hidden;
23
23
  }
24
- .sidebar-header { padding: 1.25rem; border-bottom: 1px solid rgba(255, 255, 255, 0.06); }
25
- .chat-tabs { display: flex; gap: 0.25rem; padding: 0.75rem 1rem; border-bottom: 1px solid rgba(255, 255, 255, 0.06); }
24
+ .sidebar-header { padding: 1.25rem; border-bottom: 1px solid var(--q-color-border); }
25
+ .chat-tabs { display: flex; gap: 0.25rem; padding: 0.75rem 1rem; border-bottom: 1px solid var(--q-color-border); }
26
26
  .chat-tab { flex: 1; padding: 0.5rem; background: transparent; border: none; border-radius: 0.5rem;
27
- color: var(--text-muted, #64748b); font-size: 0.8125rem; font-weight: 500; cursor: pointer;
27
+ color: var(--q-text-muted, #64748b); font-size: 0.8125rem; font-weight: 500; cursor: pointer;
28
28
  }
29
- .chat-tab.active { color: var(--color-starlight, #00d4ff); background: rgba(0, 212, 255, 0.1); }
29
+ .chat-tab.active { color: var(--q-color-starlight-blue, #00d4ff); background: var(--q-highlight-bg); }
30
30
  .conversation-list { flex: 1; overflow-y: auto; padding: 0.5rem; }
31
31
  .conversation-item { display: flex; align-items: center; gap: 0.875rem; padding: 0.875rem; border-radius: 0.75rem; cursor: pointer; margin-bottom: 0.25rem; }
32
- .conversation-item:hover { background: rgba(255, 255, 255, 0.03); }
33
- .conversation-item.active { background: rgba(0, 212, 255, 0.08); }
32
+ .conversation-item:hover { background: var(--q-highlight-bg); }
33
+ .conversation-item.active { background: color-mix(in srgb, var(--q-color-starlight-blue), transparent 90%); }
34
34
  .conversation-avatar { position: relative; flex-shrink: 0; }
35
35
  .conversation-avatar img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
36
36
  .conversation-info { flex: 1; min-width: 0; }
37
37
  .conversation-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.25rem; }
38
- .conversation-name { font-size: 0.9375rem; font-weight: 600; color: var(--text-primary, #f1f5f9); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
39
- .conversation-time { font-size: 0.75rem; color: var(--text-muted, #64748b); }
40
- .conversation-message { font-size: 0.875rem; color: var(--text-secondary, #94a3b8); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
41
- .conversation-item.unread .conversation-message { color: var(--text-primary, #f1f5f9); font-weight: 500; }
38
+ .conversation-name { font-size: 0.9375rem; font-weight: 600; color: var(--q-text-primary, #f1f5f9); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
39
+ .conversation-time { font-size: 0.75rem; color: var(--q-text-muted, #64748b); }
40
+ .conversation-message { font-size: 0.875rem; color: var(--q-text-secondary, #94a3b8); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
41
+ .conversation-item.unread .conversation-message { color: var(--q-text-primary, #f1f5f9); font-weight: 500; }
42
42
  .chat-main { display: flex; flex-direction: column; overflow: hidden; }
43
- .chat-header { display: flex; align-items: center; justify-content: space-between; padding: 0 1.5rem; border-bottom: 1px solid rgba(255, 255, 255, 0.06); background: rgba(255, 255, 255, 0.02); height: 5rem; flex-shrink: 0; }
43
+ .chat-header { display: flex; align-items: center; justify-content: space-between; padding: 0 1.5rem; border-bottom: 1px solid var(--q-color-border); background: color-mix(in srgb, var(--q-color-bg), white 1%); height: 5rem; flex-shrink: 0; }
44
44
  .chat-header-info { display: flex; align-items: center; gap: 0.875rem; }
45
45
  .chat-header-avatar { position: relative; }
46
46
  .chat-header-avatar img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
47
- .chat-header-details h3 { font-size: 1rem; font-weight: 600; color: var(--text-primary, #f1f5f9); margin-bottom: 0.125rem; }
47
+ .chat-header-details h3 { font-size: 1rem; font-weight: 600; color: var(--q-text-primary, #f1f5f9); margin-bottom: 0.125rem; }
48
48
  .chat-header-details p { font-size: 0.8125rem; color: #10b981; }
49
49
  .messages-container { flex: 1; overflow-y: auto; padding: 1.5rem; display: flex; flex-direction: column; gap: 1rem; }
50
50
  .message-date { text-align: center; margin: 1rem 0; }
51
- .message-date span { font-size: 0.75rem; color: var(--text-muted, #64748b); background: rgba(255, 255, 255, 0.05); padding: 0.375rem 0.875rem; border-radius: 9999px; }
51
+ .message-date span { font-size: 0.75rem; color: var(--q-text-muted, #64748b); background: var(--q-color-bg-muted); padding: 0.375rem 0.875rem; border-radius: 9999px; }
52
52
  .message { display: flex; gap: 0.75rem; max-width: 70%; }
53
53
  .message.sent { align-self: flex-end; flex-direction: row-reverse; }
54
54
  .message-avatar { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
55
55
  .message-content { display: flex; flex-direction: column; gap: 0.25rem; }
56
56
  .message-bubble { padding: 0.875rem 1.125rem; border-radius: 1.125rem; font-size: 0.9375rem; line-height: 1.5; }
57
- .message.received .message-bubble { background: rgba(255, 255, 255, 0.08); color: var(--text-primary, #f1f5f9); border-bottom-left-radius: 0.25rem; }
58
- .message.sent .message-bubble { background: linear-gradient(135deg, var(--color-starlight, #00d4ff), #3b82f6); color: white; border-bottom-right-radius: 0.25rem; }
59
- .message-time { font-size: 0.75rem; color: var(--text-muted, #64748b); align-self: flex-start; margin-left: 0.5rem; }
57
+ .message.received .message-bubble { background: color-mix(in srgb, var(--q-color-bg), white 8%); color: var(--q-text-primary, #f1f5f9); border-bottom-left-radius: 0.25rem; }
58
+ .message.sent .message-bubble { background: var(--q-color-starlight-blue); color: #000; font-weight: 600; border-bottom-right-radius: 0.25rem; }
59
+ .message-time { font-size: 0.75rem; color: var(--q-text-muted, #64748b); align-self: flex-start; margin-left: 0.5rem; }
60
60
  .message.sent .message-time { align-self: flex-end; margin-left: 0; margin-right: 0.5rem; }
61
- .chat-input-container { padding: 0 1.25rem; border-top: 1px solid rgba(255, 255, 255, 0.06); background: rgba(255, 255, 255, 0.02); height: 5rem; min-height: 5rem; display: flex; align-items: center; flex-shrink: 0; box-sizing: border-box; }
62
- .chat-input-wrapper { display: flex; align-items: flex-end; gap: 0.75rem; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 1.25rem; padding: 0.5rem 0.75rem; width: 100%; }
63
- .chat-input { flex: 1; background: transparent; border: none; color: var(--text-primary, #f1f5f9); font-size: 0.9375rem; resize: none; max-height: 120px; padding: 0.625rem 0; outline: none; }
64
- .chat-input::placeholder { color: var(--text-muted, #64748b); }
65
- .send-btn { width: 36px; height: 36px; border-radius: 50%; background: linear-gradient(135deg, var(--color-starlight, #00d4ff), #3b82f6); border: none; color: white; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; margin-bottom: 0.125rem; }
66
- .theme-toggle-wrapper { padding: 0 1.25rem; border-top: 1px solid rgba(255, 255, 255, 0.06); height: 5rem; min-height: 5rem; display: flex; align-items: center; flex-shrink: 0; background: rgba(255, 255, 255, 0.02); box-sizing: border-box; }
67
- .theme-btn { width: 100%; display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 0.75rem; color: var(--text-primary, #f1f5f9); cursor: pointer; transition: all 0.2s ease; }
68
- .theme-btn:hover { background: rgba(255, 255, 255, 0.08); }
61
+ .chat-input-container { padding: 0 1.25rem; border-top: 1px solid var(--q-color-border); background: color-mix(in srgb, var(--q-color-bg), white 1%); height: 5rem; min-height: 5rem; display: flex; align-items: center; flex-shrink: 0; box-sizing: border-box; }
62
+ .chat-input-wrapper { display: flex; align-items: flex-end; gap: 0.75rem; background: var(--q-input-bg); border: 1px solid var(--q-input-border); border-radius: 1.25rem; padding: 0.5rem 0.75rem; width: 100%; }
63
+ .chat-input { flex: 1; background: transparent; border: none; color: var(--q-text-primary, #f1f5f9); font-size: 0.9375rem; resize: none; max-height: 120px; padding: 0.625rem 0; outline: none; }
64
+ .chat-input::placeholder { color: var(--q-text-muted, #64748b); }
65
+ .send-btn { width: 36px; height: 36px; border-radius: 50%; background: var(--q-gradient-primary); border: none; color: white; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; margin-bottom: 0.125rem; }
66
+ .theme-toggle-wrapper { padding: 0 1.25rem; border-top: 1px solid var(--q-color-border); height: 5rem; min-height: 5rem; display: flex; align-items: center; flex-shrink: 0; background: color-mix(in srgb, var(--q-color-bg), white 1%); box-sizing: border-box; }
67
+ .theme-btn { width: 100%; display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; background: var(--q-color-surface); border: 1px solid var(--q-color-border); border-radius: 0.75rem; color: var(--q-text-primary, #f1f5f9); cursor: pointer; transition: all 0.2s ease; }
68
+ .theme-btn:hover { background: var(--q-highlight-bg); }
69
69
  .theme-label { font-size: 0.875rem; font-weight: 500; }
70
- .sun-icon { display: none; }
71
- html[data-theme="light"] .sun-icon { display: inline; }
72
- html[data-theme="light"] .moon-icon { display: none; }
73
- html[data-theme="light"] { --bg-primary: #f8fafc; --text-primary: #0f172a; --text-secondary: #475569; --text-muted: #64748b; }
74
- html[data-theme="light"] .chat-sidebar { background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%); border-right-color: #e2e8f0; }
75
- html[data-theme="light"] .chat-header, html[data-theme="light"] .chat-input-container { background: #f8fafc; border-color: #e2e8f0; }
76
- html[data-theme="light"] .chat-input-wrapper { background: #f1f5f9; border-color: #e2e8f0; }
77
- html[data-theme="light"] .conversation-item:hover { background: #f8fafc; }
78
- html[data-theme="light"] .conversation-item.active { background: rgba(0, 212, 255, 0.08); }
79
- html[data-theme="light"] .message.received .message-bubble { background: #f1f5f9; color: #0f172a; }
70
+ html[data-theme="light"] { --bg-primary: var(--q-light-bg); --text-primary: var(--q-light-text); --text-secondary: var(--q-light-text-muted); --text-muted: var(--q-light-text-muted); }
71
+ html[data-theme="light"] .message.received .message-bubble { background: #fff; border: 1px solid #e2e8f0; color: #0f172a; }
72
+ html[data-theme="light"] .message.sent .message-bubble { background: var(--q-color-primary); color: #fff; }
80
73
  @media (max-width: 768px) { .chat-app { grid-template-columns: 1fr; } .chat-sidebar { display: none; } .message { max-width: 85%; } }
81
74
  </style>
82
75
  </head>
@@ -91,15 +84,13 @@
91
84
  </div>
92
85
  <div class="user-info">
93
86
  <div class="user-name">John Doe</div>
94
- <div class="user-email" style="color: var(--text-muted, #64748b); font-size: 0.8125rem;">Online</div>
87
+ <div class="user-email" style="color: var(--q-text-muted, #64748b); font-size: 0.8125rem;">Online</div>
95
88
  </div>
96
89
  </div>
97
90
  <div class="px-4 py-4 border-b border-white_5">
98
- <div class="starlight-search">
99
- <svg class="search-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
100
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
101
- </svg>
102
- <input type="text" class="bg-transparent border-none w-full h-full pl-12 outline-none text-sm text-white" placeholder="Search conversations...">
91
+ <div class="search has-icon">
92
+ <i class="q-icon-search"></i>
93
+ <input type="text" class="search-input bg-transparent border-none w-full h-full pl-12 outline-none text-sm text-white" placeholder="Search conversations...">
103
94
  </div>
104
95
  </div>
105
96
  </div>
@@ -158,8 +149,9 @@
158
149
  </div>
159
150
  <div class="theme-toggle-wrapper">
160
151
  <button class="theme-btn" onclick="toggleTheme()">
161
- <svg class="sun-icon w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"/></svg>
162
- <svg class="moon-icon w-4 h-4" fill="currentColor" viewBox="0 0 20 20"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"/></svg>
152
+ <i class="q-icon-display"></i>
153
+ <i class="q-icon-sun sun-icon"></i>
154
+ <i class="q-icon-moon moon-icon"></i>
163
155
  <span class="theme-label">Toggle Theme</span>
164
156
  </button>
165
157
  </div>
@@ -178,19 +170,13 @@
178
170
  </div>
179
171
  <div style="display: flex; gap: 0.5rem;">
180
172
  <button class="icon-btn icon-btn-circle">
181
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
182
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z"></path>
183
- </svg>
173
+ <i class="q-icon-phone"></i>
184
174
  </button>
185
175
  <button class="icon-btn icon-btn-circle">
186
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
187
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"></path>
188
- </svg>
176
+ <i class="q-icon-video"></i>
189
177
  </button>
190
178
  <button class="icon-btn icon-btn-circle">
191
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
192
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 5v.01M12 12v.01M12 19v.01M12 6a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2zm0 7a1 1 0 110-2 1 1 0 010 2z"></path>
193
- </svg>
179
+ <i class="q-icon-more-vertical"></i>
194
180
  </button>
195
181
  </div>
196
182
  </div>
@@ -228,31 +214,18 @@
228
214
  <div class="chat-input-container">
229
215
  <div class="chat-input-wrapper">
230
216
  <button class="icon-btn icon-btn-circle">
231
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
232
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.828 14.828a4 4 0 01-5.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
233
- </svg>
217
+ <i class="q-icon-smile"></i>
234
218
  </button>
235
219
  <input type="text" class="chat-input" placeholder="Type a message...">
236
220
  <button class="icon-btn icon-btn-circle">
237
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
238
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"></path>
239
- </svg>
221
+ <i class="q-icon-paperclip"></i>
240
222
  </button>
241
223
  <button class="send-btn">
242
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
243
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"></path>
244
- </svg>
224
+ <i class="q-icon-send"></i>
245
225
  </button>
246
226
  </div>
247
227
  </div>
248
228
  </div>
249
229
  </div>
250
- <script>
251
- document.addEventListener('DOMContentLoaded', () => {
252
- if (typeof Starlight !== 'undefined') {
253
- Starlight.initStars();
254
- }
255
- });
256
- </script>
257
230
  </body>
258
231
  </html>