@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
@@ -0,0 +1,297 @@
1
+ /* Global Styles & Reset */
2
+ :root {
3
+ --starlight-deep: #020617;
4
+ --primary: #f8fafc;
5
+ --secondary: #94a3b8;
6
+ --accent: #00d4ff;
7
+ --highlight: rgba(0, 212, 255, 0.1);
8
+ --accent-glow: rgba(0, 212, 255, 0.35);
9
+ }
10
+
11
+ .container {
12
+ max-width: 1280px;
13
+ width: 100%;
14
+ margin: 0 auto;
15
+ padding: 0 1.5rem;
16
+ display: flex;
17
+ align-items: center;
18
+ gap: 1.5rem;
19
+ }
20
+
21
+ .nav-header {
22
+ padding: 0;
23
+ gap: 0;
24
+ }
25
+
26
+ body {
27
+ background-color: var(--starlight-deep) !important;
28
+ color: var(--primary);
29
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
30
+ line-height: 1.5;
31
+ -webkit-font-smoothing: antialiased;
32
+ min-height: 100-vh;
33
+ margin: 0;
34
+ overflow-x: hidden;
35
+ }
36
+
37
+ /* Main Content Layout */
38
+ main {
39
+ max-width: 1280px;
40
+ margin: 0 auto;
41
+ padding: 6rem 1.5rem;
42
+ }
43
+
44
+ main > div {
45
+ display: grid;
46
+ grid-template-columns: 1fr;
47
+ gap: 4rem;
48
+ }
49
+
50
+ @media (min-width: 1024px) {
51
+ main > div {
52
+ grid-template-columns: repeat(12, minmax(0, 1fr));
53
+ }
54
+
55
+ article {
56
+ grid-column: span 8 / span 8;
57
+ }
58
+
59
+ aside {
60
+ grid-column: span 4 / span 4;
61
+ }
62
+ }
63
+
64
+ /* Article Styles */
65
+ article {
66
+ display: flex;
67
+ flex-direction: column;
68
+ gap: 2.5rem; /* Standard content gap (40px) */
69
+ }
70
+
71
+ /* Major section transitions (Header and Featured Image) */
72
+ article > header,
73
+ article > div:nth-child(2) {
74
+ margin-bottom: 1.5rem; /* Adds to the 2.5rem gap to create a 4rem (64px) gap */
75
+ }
76
+
77
+ /* Article Tags section transition */
78
+ article > div:last-of-type {
79
+ margin-top: 1.5rem; /* Creates the larger 4rem gap before tags */
80
+ }
81
+
82
+ article > header {
83
+ display: flex;
84
+ flex-direction: column;
85
+ gap: 2rem;
86
+ }
87
+
88
+ article > header > div:first-child {
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 1rem;
92
+ font-size: 0.875rem;
93
+ color: var(--secondary);
94
+ }
95
+
96
+ article > header > div:last-child {
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 1rem;
100
+ padding-top: 1rem;
101
+ }
102
+
103
+ article > header > div:last-child p:first-child {
104
+ font-weight: 700;
105
+ text-transform: uppercase;
106
+ font-size: 0.75rem;
107
+ letter-spacing: 0.1em;
108
+ margin: 0;
109
+ }
110
+
111
+ article > header > div:last-child p:last-child {
112
+ font-size: 0.75rem;
113
+ color: var(--secondary);
114
+ font-weight: 500;
115
+ margin: 0;
116
+ }
117
+
118
+ /* Featured Image */
119
+ article > div:nth-child(2) {
120
+ border-radius: 1rem;
121
+ overflow: hidden;
122
+ background: rgba(255, 255, 255, 0.05);
123
+ backdrop-filter: blur(8px);
124
+ padding: 0.25rem;
125
+ border: 1px solid rgba(255, 255, 255, 0.1);
126
+ }
127
+
128
+ article > div:nth-child(2) > div {
129
+ aspect-ratio: 16 / 9;
130
+ background-color: rgba(0, 0, 0, 0.4);
131
+ border-radius: 0.75rem;
132
+ position: relative;
133
+ overflow: hidden;
134
+ }
135
+
136
+ article > div:nth-child(2) img {
137
+ width: 100%;
138
+ height: 100%;
139
+ object-fit: cover;
140
+ }
141
+
142
+ /* Content Body */
143
+ article > p:first-of-type {
144
+ font-size: 1.5rem;
145
+ font-weight: 500;
146
+ color: var(--primary);
147
+ }
148
+
149
+ article p {
150
+ font-size: 1.125rem;
151
+ line-height: 1.75;
152
+ color: #cbd5e1;
153
+ margin-bottom: 0;
154
+ }
155
+
156
+ h2 {
157
+ font-size: 1.875rem;
158
+ font-weight: 600;
159
+ margin: 0;
160
+ }
161
+
162
+ /* Tags */
163
+ article > div:last-of-type {
164
+ display: flex;
165
+ flex-wrap: wrap;
166
+ gap: 0.5rem;
167
+ padding-top: 2rem;
168
+ margin-top: 3rem;
169
+ }
170
+
171
+ article > div:last-of-type span {
172
+ font-size: 0.875rem;
173
+ color: #64748b;
174
+ margin-right: 0.5rem;
175
+ }
176
+
177
+ aside {
178
+ gap: 2rem;
179
+ }
180
+
181
+ aside > div:last-child h3 {
182
+ font-size: 0.75rem;
183
+ text-transform: uppercase;
184
+ letter-spacing: 0.1em;
185
+ color: #64748b;
186
+ }
187
+
188
+ aside > div:last-child a {
189
+ display: block;
190
+ background: rgba(255, 255, 255, 0.03);
191
+ backdrop-filter: blur(8px);
192
+ padding: 1rem;
193
+ border-radius: 0.75rem;
194
+ text-decoration: none;
195
+ margin-bottom: 1rem;
196
+ border: 1px solid rgba(255, 255, 255, 0.05);
197
+ transition: background 0.3s;
198
+ }
199
+
200
+ aside > div:last-child a:hover {
201
+ background: rgba(255, 255, 255, 0.05);
202
+ }
203
+
204
+ aside > div:last-child h4 {
205
+ font-weight: 700;
206
+ color: var(--primary);
207
+ margin: 0;
208
+ }
209
+
210
+ aside > div:last-child a p {
211
+ font-size: 0.75rem;
212
+ color: #64748b;
213
+ margin: 0.25rem 0 0;
214
+ }
215
+
216
+ /* Theme Toggle (Re-used from original) */
217
+ .theme-toggle {
218
+ cursor: pointer;
219
+ width: 2.5rem;
220
+ height: 2.5rem;
221
+ border-radius: 50%;
222
+ transition: background 0.3s ease;
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ flex-shrink: 0;
227
+ }
228
+
229
+ .theme-toggle:hover {
230
+ background: rgba(255, 255, 255, 0.1);
231
+ }
232
+
233
+ html[data-theme="light"] .theme-toggle:hover {
234
+ background: rgba(0, 0, 0, 0.05);
235
+ }
236
+
237
+ html[data-theme="light"] {
238
+ background-color: #f8fafc;
239
+ color: #1e293b;
240
+ }
241
+
242
+ html[data-theme="light"] body {
243
+ background-color: #f8fafc !important;
244
+ color: #1e293b;
245
+ }
246
+
247
+ html[data-theme="light"] .nav-header {
248
+ background: rgba(248, 250, 252, 0.9);
249
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
250
+ }
251
+
252
+ html[data-theme="light"] h1,
253
+ html[data-theme="light"] h2,
254
+ html[data-theme="light"] h3,
255
+ html[data-theme="light"] h4 {
256
+ color: #0f172a !important;
257
+ }
258
+
259
+ html[data-theme="light"] article p,
260
+ html[data-theme="light"] .card p,
261
+ html[data-theme="light"] .glass p,
262
+ html[data-theme="light"] .blue-card {
263
+ color: #1e293b !important;
264
+ }
265
+
266
+ html[data-theme="light"] .glass {
267
+ background: rgba(255, 255, 255, 0.8) !important;
268
+ border-color: rgba(0, 0, 0, 0.1) !important;
269
+ }
270
+
271
+ html[data-theme="light"] .card {
272
+ background: white;
273
+ border-color: #e2e8f0;
274
+ }
275
+
276
+ html[data-theme="light"] aside > div:last-child a {
277
+ background: rgba(0, 0, 0, 0.02);
278
+ border-color: rgba(0, 0, 0, 0.05);
279
+ }
280
+
281
+ html[data-theme="light"] aside > div:last-child a:hover {
282
+ background: rgba(0, 0, 0, 0.04);
283
+ }
284
+
285
+ html[data-theme="light"] .code-window {
286
+ background: #f1f5f9;
287
+ border-color: #e2e8f0;
288
+ }
289
+
290
+ html[data-theme="light"] .code-window pre {
291
+ color: #1e293b;
292
+ }
293
+
294
+ @keyframes pulse {
295
+ 0%, 100% { opacity: 1; }
296
+ 50% { opacity: .5; }
297
+ }
@@ -0,0 +1,216 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Starlight Blog Template</title>
7
+ <link rel="stylesheet" href="../dist/quantum.min.css">
8
+ <link rel="stylesheet" href="blog.css">
9
+ <script src="../src/starlight.js"></script>
10
+ </head>
11
+ <body>
12
+
13
+ <!-- ── Starfield ── -->
14
+ <div class="stars-bg" id="stars"></div>
15
+
16
+ <!-- Navigation -->
17
+ <input type="checkbox" id="nav-toggle" class="nav-toggle" />
18
+ <header class="nav-header">
19
+ <div class="container">
20
+ <label class="nav-hamburger" for="nav-toggle">
21
+ <span class="nav-hamburger-icon">
22
+ <span></span>
23
+ <span></span>
24
+ <span></span>
25
+ </span>
26
+ </label>
27
+ <a href="#" class="nav-logo">
28
+ <i class="q-icon-starlight"></i>
29
+ <span class="text-gradient font-bold">StarlightBlog</span>
30
+ </a>
31
+ <nav class="nav-links">
32
+ <a href="#">Home</a>
33
+ <a href="#">Articles</a>
34
+ <a href="#">About</a>
35
+ </nav>
36
+ <div class="theme-toggle" title="Toggle Theme" onclick="toggleTheme()">
37
+ <i class="q-icon-display"></i>
38
+ <i class="q-icon-sun sun-icon"></i>
39
+ <i class="q-icon-moon moon-icon"></i>
40
+ </div>
41
+ </div>
42
+ </header>
43
+
44
+ <!-- Mobile Drawer -->
45
+ <div class="nav-drawer">
46
+ <div class="nav-drawer-inner">
47
+ <a href="#">Home</a>
48
+ <a href="#">Articles</a>
49
+ <a href="#">About</a>
50
+ </div>
51
+ </div>
52
+
53
+ <!-- Main Content -->
54
+ <main>
55
+ <div>
56
+
57
+ <!-- Article Column -->
58
+ <article>
59
+
60
+ <!-- Header -->
61
+ <header>
62
+ <div>
63
+ <span class="badge-primary">Technology</span>
64
+ <span>•</span>
65
+ <time datetime="2026-02-01">February 1, 2026</time>
66
+ <span>•</span>
67
+ <span>5 min read</span>
68
+ </div>
69
+
70
+ <h1>
71
+ The Future of <span class="text-gradient">UI Design</span>
72
+ </h1>
73
+
74
+ <div>
75
+ <img src="images/eric.png" class="avatar" alt="Eric Yang">
76
+ <div>
77
+ <p>Eric Yang</p>
78
+ <p>Frontend Architect</p>
79
+ </div>
80
+ </div>
81
+ </header>
82
+
83
+ <!-- Featured Image -->
84
+ <div>
85
+ <div>
86
+ <img src="images/starlight.jpg" alt="Starlight Aesthetics" class="w-full h-full object-cover">
87
+ </div>
88
+ </div>
89
+
90
+ <!-- Content -->
91
+ <p>
92
+ Glassmorphism, neon glows, and deep gradients are making a comeback. Powered by modern CSS, they create an immersive experience.
93
+ </p>
94
+
95
+ <h2>
96
+ <span class="accent-bar"></span>
97
+ The Starlight Paradigm
98
+ </h2>
99
+ <p>
100
+ The "Starlight" aesthetic combines the ethereal beauty of space with the precision of modern interface design.
101
+ </p>
102
+
103
+ <div class="blue-card">
104
+ "Design is not just what it looks like and feels like. Design is how it works... in zero gravity."
105
+ </div>
106
+
107
+ <div>
108
+ <h2>Code Interface</h2>
109
+ <div class="code-window">
110
+ <div class="code-window-header">
111
+ <div class="code-window-controls">
112
+ <div class="code-window-dot bg-red-500"></div>
113
+ <div class="code-window-dot bg-yellow-500"></div>
114
+ <div class="code-window-dot bg-green-500"></div>
115
+ </div>
116
+ <span class="code-window-title">quantum.config.json</span>
117
+ </div>
118
+ <pre>
119
+ <code>
120
+ {
121
+ "theme": {
122
+ "extend": {
123
+ "colors": {
124
+ "starlight": "#00d4ff"
125
+ }
126
+ }
127
+ }
128
+ }
129
+ </code>
130
+ </pre>
131
+ </div>
132
+ </div>
133
+
134
+ <!-- Tags -->
135
+ <div>
136
+ <span>Tags:</span>
137
+ <a href="#" class="badge-secondary">CSS</a>
138
+ <a href="#" class="badge-secondary">Design</a>
139
+ <a href="#" class="badge-secondary">QuantumCSS</a>
140
+ </div>
141
+
142
+ </article>
143
+
144
+ <!-- Sidebar -->
145
+ <aside>
146
+
147
+ <!-- Author Card -->
148
+ <div class="card">
149
+ <h3>About the Author</h3>
150
+ <p>
151
+ Eric is a frontend wizard obsessed with making the web feel more organic and alive.
152
+ </p>
153
+ <button>Follow</button>
154
+ </div>
155
+
156
+ <!-- Newsletter -->
157
+ <div class="glass">
158
+ <h3>Join the Newsletter</h3>
159
+ <p>Get the latest design trends delivered to your inbox.</p>
160
+ <form>
161
+ <input type="email" placeholder="your@email.com">
162
+ <button>Subscribe</button>
163
+ </form>
164
+ </div>
165
+
166
+ <!-- Recommended -->
167
+ <div class="card">
168
+ <h3>Recommended</h3>
169
+
170
+ <a href="#">
171
+ <h4>Glassmorphism in 2026</h4>
172
+ <p>Feb 1 • 4 min read</p>
173
+ </a>
174
+
175
+ <a href="#">
176
+ <h4>Modern CSS Variables</h4>
177
+ <p>Jan 28 • 8 min read</p>
178
+ </a>
179
+ </div>
180
+
181
+ </aside>
182
+
183
+ </div>
184
+ </main>
185
+
186
+ <!-- Footer -->
187
+ <footer>
188
+ <div>
189
+ <div class="left">
190
+ © 2026 StarlightBlog. Powered by QuantumCSS.
191
+ </div>
192
+ <div class="right">
193
+ <a href="#">Privacy</a>
194
+ <a href="#">Terms</a>
195
+ </div>
196
+ </div>
197
+ </footer>
198
+
199
+ <script>
200
+ /* ── Stars ── */
201
+ const starsEl = document.getElementById("stars");
202
+ for (let i = 0; i < 120; i++) {
203
+ const s = document.createElement("div");
204
+ s.className = "star";
205
+ const size = Math.random() * 2.5 + 0.5;
206
+ s.style.cssText = `
207
+ width:${size}px; height:${size}px;
208
+ left:${Math.random() * 100}%; top:${Math.random() * 100}%;
209
+ --d:${2 + Math.random() * 5}s;
210
+ animation-delay:${Math.random() * 5}s;
211
+ `;
212
+ starsEl.appendChild(s);
213
+ }
214
+ </script>
215
+ </body>
216
+ </html>
@@ -67,9 +67,6 @@
67
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
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
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); }
74
71
  html[data-theme="light"] .message.received .message-bubble { background: #fff; border: 1px solid #e2e8f0; color: #0f172a; }
75
72
  html[data-theme="light"] .message.sent .message-bubble { background: var(--q-color-primary); color: #fff; }
@@ -91,10 +88,8 @@
91
88
  </div>
92
89
  </div>
93
90
  <div class="px-4 py-4 border-b border-white_5">
94
- <div class="starlight-search has-icon">
95
- <svg class="search-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
96
- <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>
97
- </svg>
91
+ <div class="search has-icon">
92
+ <i class="q-icon-search"></i>
98
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...">
99
94
  </div>
100
95
  </div>
@@ -154,8 +149,9 @@
154
149
  </div>
155
150
  <div class="theme-toggle-wrapper">
156
151
  <button class="theme-btn" onclick="toggleTheme()">
157
- <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>
158
- <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>
159
155
  <span class="theme-label">Toggle Theme</span>
160
156
  </button>
161
157
  </div>
@@ -174,19 +170,13 @@
174
170
  </div>
175
171
  <div style="display: flex; gap: 0.5rem;">
176
172
  <button class="icon-btn icon-btn-circle">
177
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
178
- <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>
179
- </svg>
173
+ <i class="q-icon-phone"></i>
180
174
  </button>
181
175
  <button class="icon-btn icon-btn-circle">
182
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
183
- <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>
184
- </svg>
176
+ <i class="q-icon-video"></i>
185
177
  </button>
186
178
  <button class="icon-btn icon-btn-circle">
187
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
188
- <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>
189
- </svg>
179
+ <i class="q-icon-more-vertical"></i>
190
180
  </button>
191
181
  </div>
192
182
  </div>
@@ -224,20 +214,14 @@
224
214
  <div class="chat-input-container">
225
215
  <div class="chat-input-wrapper">
226
216
  <button class="icon-btn icon-btn-circle">
227
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
228
- <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>
229
- </svg>
217
+ <i class="q-icon-smile"></i>
230
218
  </button>
231
219
  <input type="text" class="chat-input" placeholder="Type a message...">
232
220
  <button class="icon-btn icon-btn-circle">
233
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
234
- <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>
235
- </svg>
221
+ <i class="q-icon-paperclip"></i>
236
222
  </button>
237
223
  <button class="send-btn">
238
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
239
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"></path>
240
- </svg>
224
+ <i class="q-icon-send"></i>
241
225
  </button>
242
226
  </div>
243
227
  </div>