@keenmate/pure-admin-core 1.0.0-rc01
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/LICENSE +21 -0
- package/README.md +172 -0
- package/dist/css/main.css +11542 -0
- package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
- package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.1 +0 -0
- package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtE2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtU2Hw.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtY2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvtg2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvto2H68T.woff2 +0 -0
- package/dist/fonts/google/6aez4K2oVqwIvts2H68T.woff2 +0 -0
- package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nejog.woff2 +0 -0
- package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nijogp5.woff2 +0 -0
- package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nmjogp5.woff2 +0 -0
- package/dist/fonts/google/PN_xRfK9oXHga0XdZ8g_vT0.woff2 +0 -0
- package/dist/fonts/google/PN_xRfK9oXHga0XdZsg_.woff2 +0 -0
- package/dist/fonts/google/PN_xRfK9oXHga0XdaMg_vT0.woff2 +0 -0
- package/dist/fonts/google/TK3tWkYFABsmjsphPho.woff2 +0 -0
- package/dist/fonts/google/TK3tWkYFABsmjspuPho7vA.woff2 +0 -0
- package/dist/fonts/google/TK3tWkYFABsmjspvPho7vA.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjTYJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjXYJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6Vj_YJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjbYJwQj.woff2 +0 -0
- package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjvYJw.woff2 +0 -0
- package/dist/fonts/google/fonts-tracklist.txt +48 -0
- package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbBjM4.woff2 +0 -0
- package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbOjM7sfA.woff2 +0 -0
- package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbPjM7sfA.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2 +0 -0
- package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_B-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_C-bk.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_G-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_M-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_N-bnBeA.woff2 +0 -0
- package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_P-bnBeA.woff2 +0 -0
- package/package.json +60 -0
- package/snippets/alerts.html +281 -0
- package/snippets/badges.html +212 -0
- package/snippets/buttons.html +287 -0
- package/snippets/cards.html +393 -0
- package/snippets/checkbox-lists.html +490 -0
- package/snippets/code.html +225 -0
- package/snippets/command-palette.html +210 -0
- package/snippets/comparison.html +428 -0
- package/snippets/customization.html +142 -0
- package/snippets/forms.html +477 -0
- package/snippets/grid.html +338 -0
- package/snippets/layout.html +598 -0
- package/snippets/lists.html +232 -0
- package/snippets/loaders.html +183 -0
- package/snippets/manifest.json +388 -0
- package/snippets/modal-dialogs.html +411 -0
- package/snippets/modals.html +310 -0
- package/snippets/popconfirm.html +253 -0
- package/snippets/profile.html +264 -0
- package/snippets/tables.html +317 -0
- package/snippets/tabs.html +930 -0
- package/snippets/timeline.html +364 -0
- package/snippets/toasts.html +154 -0
- package/snippets/tooltips.html +411 -0
- package/snippets/typography.html +101 -0
- package/snippets/utilities.html +595 -0
- package/snippets/virtual-scroll.html +322 -0
- package/snippets/web-daterangepicker.html +634 -0
- package/snippets/web-multiselect.html +362 -0
- package/src/scss/.claude/settings.local.json +11 -0
- package/src/scss/_base-css-variables.scss +348 -0
- package/src/scss/_core.scss +99 -0
- package/src/scss/_fonts.scss +67 -0
- package/src/scss/_purecss-grid-responsive.scss +138 -0
- package/src/scss/_purecss-grid.scss +58 -0
- package/src/scss/_variables.scss +14 -0
- package/src/scss/core-components/_alerts.scss +212 -0
- package/src/scss/core-components/_badges.scss +16 -0
- package/src/scss/core-components/_base.scss +124 -0
- package/src/scss/core-components/_buttons.scss +473 -0
- package/src/scss/core-components/_cards.scss +285 -0
- package/src/scss/core-components/_checkbox-lists.scss +289 -0
- package/src/scss/core-components/_code.scss +141 -0
- package/src/scss/core-components/_command-palette.scss +518 -0
- package/src/scss/core-components/_comparison.scss +172 -0
- package/src/scss/core-components/_file-selector.scss +780 -0
- package/src/scss/core-components/_forms.scss +16 -0
- package/src/scss/core-components/_grid.scss +264 -0
- package/src/scss/core-components/_layout.scss +15 -0
- package/src/scss/core-components/_lists.scss +211 -0
- package/src/scss/core-components/_loaders.scss +277 -0
- package/src/scss/core-components/_logic-tree.scss +280 -0
- package/src/scss/core-components/_modals.scss +209 -0
- package/src/scss/core-components/_notifications.scss +253 -0
- package/src/scss/core-components/_pagers.scss +141 -0
- package/src/scss/core-components/_popconfirm.scss +170 -0
- package/src/scss/core-components/_profile.scss +281 -0
- package/src/scss/core-components/_settings-panel.scss +128 -0
- package/src/scss/core-components/_statistics.scss +200 -0
- package/src/scss/core-components/_tables.scss +555 -0
- package/src/scss/core-components/_tabs.scss +438 -0
- package/src/scss/core-components/_timeline.scss +589 -0
- package/src/scss/core-components/_toasts.scss +281 -0
- package/src/scss/core-components/_tooltips.scss +503 -0
- package/src/scss/core-components/_utilities.scss +241 -0
- package/src/scss/core-components/_web-components-theme.scss +294 -0
- package/src/scss/core-components/badges/_badge-base.scss +131 -0
- package/src/scss/core-components/badges/_badge-group.scss +25 -0
- package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -0
- package/src/scss/core-components/badges/_composite-badge.scss +70 -0
- package/src/scss/core-components/badges/_index.scss +10 -0
- package/src/scss/core-components/badges/_labels.scss +155 -0
- package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -0
- package/src/scss/core-components/forms/_form-inputs.scss +100 -0
- package/src/scss/core-components/forms/_form-layout.scss +66 -0
- package/src/scss/core-components/forms/_form-states.scss +89 -0
- package/src/scss/core-components/forms/_index.scss +12 -0
- package/src/scss/core-components/forms/_input-groups.scss +149 -0
- package/src/scss/core-components/forms/_input-wrapper.scss +89 -0
- package/src/scss/core-components/forms/_query-editor.scss +313 -0
- package/src/scss/core-components/layout/_index.scss +11 -0
- package/src/scss/core-components/layout/_layout-container.scss +105 -0
- package/src/scss/core-components/layout/_layout-responsive.scss +100 -0
- package/src/scss/core-components/layout/_navbar-elements.scss +238 -0
- package/src/scss/core-components/layout/_navbar.scss +71 -0
- package/src/scss/core-components/layout/_sidebar-states.scss +228 -0
- package/src/scss/core-components/layout/_sidebar.scss +177 -0
- package/src/scss/main.scss +7 -0
- package/src/scss/themes/_dark-base.scss +207 -0
- package/src/scss/themes/audi-light.scss +311 -0
- package/src/scss/themes/audi.scss +288 -0
- package/src/scss/themes/corporate.scss +203 -0
- package/src/scss/themes/dark-blue.scss +152 -0
- package/src/scss/themes/dark-green.scss +156 -0
- package/src/scss/themes/dark-red.scss +160 -0
- package/src/scss/themes/dark.scss +145 -0
- package/src/scss/themes/express.scss +281 -0
- package/src/scss/themes/minimal.scss +121 -0
- package/src/scss/utilities.scss +481 -0
- package/src/scss/variables/_base.scss +81 -0
- package/src/scss/variables/_colors.scss +148 -0
- package/src/scss/variables/_components.scss +509 -0
- package/src/scss/variables/_index.scss +13 -0
- package/src/scss/variables/_layout.scss +65 -0
- package/src/scss/variables/_spacing.scss +66 -0
- package/src/scss/variables/_system.scss +80 -0
- package/src/scss/variables/_typography.scss +37 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
<!-- CODE COMPONENT SNIPPETS -->
|
|
2
|
+
|
|
3
|
+
<!-- ========================================
|
|
4
|
+
INLINE CODE
|
|
5
|
+
======================================== -->
|
|
6
|
+
|
|
7
|
+
<!-- Basic inline code -->
|
|
8
|
+
<p>Use the <code><code></code> element for inline code.</p>
|
|
9
|
+
|
|
10
|
+
<!-- Inline code in sentences -->
|
|
11
|
+
<p>Install packages with <code>npm install</code> and run with <code>npm start</code>.</p>
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
<!-- ========================================
|
|
15
|
+
BASIC CODE BLOCKS
|
|
16
|
+
======================================== -->
|
|
17
|
+
|
|
18
|
+
<!-- Plain code block -->
|
|
19
|
+
<pre class="pa-code">function example() {
|
|
20
|
+
return 'Plain code block';
|
|
21
|
+
}</pre>
|
|
22
|
+
|
|
23
|
+
<!-- JavaScript code block -->
|
|
24
|
+
<pre class="pa-code pa-code--javascript">function greet(name) {
|
|
25
|
+
return `Hello, ${name}!`;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const result = greet('World');
|
|
29
|
+
console.log(result);</pre>
|
|
30
|
+
|
|
31
|
+
<!-- JSON code block -->
|
|
32
|
+
<pre class="pa-code pa-code--json">{
|
|
33
|
+
"name": "Pure Admin",
|
|
34
|
+
"version": "1.0.0",
|
|
35
|
+
"theme": "corporate",
|
|
36
|
+
"features": [
|
|
37
|
+
"responsive",
|
|
38
|
+
"themeable",
|
|
39
|
+
"lightweight"
|
|
40
|
+
]
|
|
41
|
+
}</pre>
|
|
42
|
+
|
|
43
|
+
<!-- HTML code block -->
|
|
44
|
+
<pre class="pa-code pa-code--html"><div class="pa-card">
|
|
45
|
+
<div class="pa-card__header">
|
|
46
|
+
<h3>Card Title</h3>
|
|
47
|
+
</div>
|
|
48
|
+
<div class="pa-card__body">
|
|
49
|
+
Content here
|
|
50
|
+
</div>
|
|
51
|
+
</div></pre>
|
|
52
|
+
|
|
53
|
+
<!-- CSS code block -->
|
|
54
|
+
<pre class="pa-code pa-code--css">.pa-btn {
|
|
55
|
+
padding: 0.5rem 0.75rem;
|
|
56
|
+
border-radius: 0.25rem;
|
|
57
|
+
font-size: 0.875rem;
|
|
58
|
+
background-color: #3b82f6;
|
|
59
|
+
color: #ffffff;
|
|
60
|
+
}</pre>
|
|
61
|
+
|
|
62
|
+
<!-- Bash/Terminal code block -->
|
|
63
|
+
<pre class="pa-code pa-code--bash">$ npm install
|
|
64
|
+
$ npm run build
|
|
65
|
+
$ npm start
|
|
66
|
+
|
|
67
|
+
Server running on port 3000...</pre>
|
|
68
|
+
|
|
69
|
+
<!-- SQL code block -->
|
|
70
|
+
<pre class="pa-code pa-code--sql">SELECT users.name, orders.total
|
|
71
|
+
FROM users
|
|
72
|
+
INNER JOIN orders
|
|
73
|
+
ON users.id = orders.user_id
|
|
74
|
+
WHERE orders.status = 'completed'
|
|
75
|
+
ORDER BY orders.total DESC;</pre>
|
|
76
|
+
|
|
77
|
+
<!-- Python code block -->
|
|
78
|
+
<pre class="pa-code pa-code--python">def fibonacci(n):
|
|
79
|
+
if n <= 1:
|
|
80
|
+
return n
|
|
81
|
+
return fibonacci(n-1) + fibonacci(n-2)
|
|
82
|
+
|
|
83
|
+
print(fibonacci(10))</pre>
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
<!-- ========================================
|
|
87
|
+
CODE BLOCK WITH HEADER
|
|
88
|
+
======================================== -->
|
|
89
|
+
|
|
90
|
+
<!-- Code block with filename and copy button -->
|
|
91
|
+
<div class="pa-code-block">
|
|
92
|
+
<div class="pa-code-block__header">
|
|
93
|
+
<span class="pa-code-block__title">server.js</span>
|
|
94
|
+
<button class="pa-btn pa-btn--xs pa-btn--secondary" onclick="copyCode(this)">
|
|
95
|
+
<span class="pa-btn__icon">📋</span>
|
|
96
|
+
Copy
|
|
97
|
+
</button>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="pa-code-block__body">
|
|
100
|
+
<pre class="pa-code">const express = require('express');
|
|
101
|
+
const app = express();
|
|
102
|
+
|
|
103
|
+
app.get('/', (req, res) => {
|
|
104
|
+
res.send('Hello World!');
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
app.listen(3000);</pre>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<!-- JSON config file -->
|
|
112
|
+
<div class="pa-code-block">
|
|
113
|
+
<div class="pa-code-block__header">
|
|
114
|
+
<span class="pa-code-block__title">package.json</span>
|
|
115
|
+
<button class="pa-btn pa-btn--xs pa-btn--secondary" onclick="copyCode(this)">
|
|
116
|
+
<span class="pa-btn__icon">📋</span>
|
|
117
|
+
Copy
|
|
118
|
+
</button>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="pa-code-block__body">
|
|
121
|
+
<pre class="pa-code pa-code--json">{
|
|
122
|
+
"name": "my-app",
|
|
123
|
+
"version": "1.0.0",
|
|
124
|
+
"scripts": {
|
|
125
|
+
"start": "node server.js",
|
|
126
|
+
"dev": "nodemon server.js"
|
|
127
|
+
}
|
|
128
|
+
}</pre>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
<!-- ========================================
|
|
134
|
+
COMPACT VARIANT
|
|
135
|
+
======================================== -->
|
|
136
|
+
|
|
137
|
+
<!-- Compact code block -->
|
|
138
|
+
<pre class="pa-code pa-code--compact">const x = 42;</pre>
|
|
139
|
+
|
|
140
|
+
<!-- Compact with language variant -->
|
|
141
|
+
<pre class="pa-code pa-code--compact pa-code--python">print("Hello World")</pre>
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
<!-- ========================================
|
|
145
|
+
ALL LANGUAGE VARIANTS
|
|
146
|
+
======================================== -->
|
|
147
|
+
|
|
148
|
+
<!-- JavaScript - Yellow accent -->
|
|
149
|
+
<pre class="pa-code pa-code--javascript">console.log('JavaScript');</pre>
|
|
150
|
+
|
|
151
|
+
<!-- JSON - Orange accent -->
|
|
152
|
+
<pre class="pa-code pa-code--json">{"language": "JSON"}</pre>
|
|
153
|
+
|
|
154
|
+
<!-- HTML - Red accent -->
|
|
155
|
+
<pre class="pa-code pa-code--html"><div>HTML</div></pre>
|
|
156
|
+
|
|
157
|
+
<!-- CSS - Blue accent -->
|
|
158
|
+
<pre class="pa-code pa-code--css">.class { color: blue; }</pre>
|
|
159
|
+
|
|
160
|
+
<!-- Bash - Green accent -->
|
|
161
|
+
<pre class="pa-code pa-code--bash">$ echo "Bash"</pre>
|
|
162
|
+
|
|
163
|
+
<!-- SQL - Teal accent -->
|
|
164
|
+
<pre class="pa-code pa-code--sql">SELECT * FROM table;</pre>
|
|
165
|
+
|
|
166
|
+
<!-- Python - Blue accent -->
|
|
167
|
+
<pre class="pa-code pa-code--python">print("Python")</pre>
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
<!-- ========================================
|
|
171
|
+
JAVASCRIPT FOR COPY FUNCTIONALITY
|
|
172
|
+
======================================== -->
|
|
173
|
+
|
|
174
|
+
<script>
|
|
175
|
+
function copyCode(button) {
|
|
176
|
+
const codeBlock = button.closest('.pa-code-block');
|
|
177
|
+
const code = codeBlock.querySelector('.pa-code').textContent;
|
|
178
|
+
|
|
179
|
+
navigator.clipboard.writeText(code).then(() => {
|
|
180
|
+
const originalText = button.innerHTML;
|
|
181
|
+
button.innerHTML = '<span class="pa-btn__icon">✓</span> Copied!';
|
|
182
|
+
button.classList.add('pa-btn--success');
|
|
183
|
+
|
|
184
|
+
setTimeout(() => {
|
|
185
|
+
button.innerHTML = originalText;
|
|
186
|
+
button.classList.remove('pa-btn--success');
|
|
187
|
+
}, 2000);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
</script>
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
<!-- ========================================
|
|
194
|
+
COMPONENT REFERENCE
|
|
195
|
+
======================================== -->
|
|
196
|
+
|
|
197
|
+
<!--
|
|
198
|
+
INLINE CODE:
|
|
199
|
+
- <code> - Inline code element with light background
|
|
200
|
+
|
|
201
|
+
CODE BLOCKS:
|
|
202
|
+
- .pa-code - Basic code block (pre element)
|
|
203
|
+
- .pa-code--compact - Smaller padding and font size
|
|
204
|
+
- .pa-code--javascript - Yellow left border
|
|
205
|
+
- .pa-code--json - Orange left border
|
|
206
|
+
- .pa-code--html - Red left border
|
|
207
|
+
- .pa-code--css - Blue left border
|
|
208
|
+
- .pa-code--bash - Green left border
|
|
209
|
+
- .pa-code--sql - Teal left border
|
|
210
|
+
- .pa-code--python - Blue left border
|
|
211
|
+
|
|
212
|
+
CODE BLOCK WITH HEADER:
|
|
213
|
+
- .pa-code-block - Container with border
|
|
214
|
+
- .pa-code-block__header - Header with title and actions
|
|
215
|
+
- .pa-code-block__title - Filename or description
|
|
216
|
+
- .pa-code-block__body - Body containing .pa-code
|
|
217
|
+
|
|
218
|
+
COMBINE MODIFIERS:
|
|
219
|
+
<pre class="pa-code pa-code--compact pa-code--javascript">
|
|
220
|
+
|
|
221
|
+
USAGE:
|
|
222
|
+
Inline: <code>code here</code>
|
|
223
|
+
Block: <pre class="pa-code">code here</pre>
|
|
224
|
+
With language: <pre class="pa-code pa-code--json">{"key": "value"}</pre>
|
|
225
|
+
-->
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
<!-- ========================================
|
|
2
|
+
Command Palette Component
|
|
3
|
+
macOS Spotlight-style global search
|
|
4
|
+
======================================== -->
|
|
5
|
+
|
|
6
|
+
<!--
|
|
7
|
+
USAGE:
|
|
8
|
+
- Include this HTML in your layout (globally available)
|
|
9
|
+
- Include /dist/js/command-palette.js for functionality
|
|
10
|
+
- Press Ctrl+K or Cmd+K to open
|
|
11
|
+
- Use /p, /o, /u, /i prefixes for context switching
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
<!-- Command Palette Modal -->
|
|
15
|
+
<div class="pa-command-palette" id="commandPalette">
|
|
16
|
+
<!-- Backdrop overlay -->
|
|
17
|
+
<div class="pa-command-palette__backdrop" id="commandPaletteBackdrop"></div>
|
|
18
|
+
|
|
19
|
+
<!-- Main container -->
|
|
20
|
+
<div class="pa-command-palette__container">
|
|
21
|
+
<!-- Search input -->
|
|
22
|
+
<div class="pa-command-palette__search">
|
|
23
|
+
<input
|
|
24
|
+
type="text"
|
|
25
|
+
class="pa-command-palette__input"
|
|
26
|
+
id="commandPaletteInput"
|
|
27
|
+
placeholder="Search products, orders, users... (try /p, /o, /u)"
|
|
28
|
+
autocomplete="off"
|
|
29
|
+
spellcheck="false"
|
|
30
|
+
>
|
|
31
|
+
<!-- Context label (hidden by default, shown when prefix detected) -->
|
|
32
|
+
<div class="pa-command-palette__context" id="commandPaletteContext"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<!-- Results container -->
|
|
36
|
+
<div class="pa-command-palette__results" id="commandPaletteResults">
|
|
37
|
+
<!-- Empty state (default) -->
|
|
38
|
+
<div class="pa-command-palette__empty">
|
|
39
|
+
Type to search or use /p for products, /o for orders, /u for users, /i for invoices
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<!-- Footer with keyboard hints -->
|
|
44
|
+
<div class="pa-command-palette__footer">
|
|
45
|
+
<div class="pa-command-palette__hint">
|
|
46
|
+
<span class="pa-command-palette__key">↑↓</span>
|
|
47
|
+
<span>Navigate</span>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="pa-command-palette__hint">
|
|
50
|
+
<span class="pa-command-palette__key">←→</span>
|
|
51
|
+
<span>Pages</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="pa-command-palette__hint">
|
|
54
|
+
<span class="pa-command-palette__key">↵</span>
|
|
55
|
+
<span>Select</span>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="pa-command-palette__hint">
|
|
58
|
+
<span class="pa-command-palette__key">Esc</span>
|
|
59
|
+
<span>Close</span>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<!-- ========================================
|
|
66
|
+
JavaScript States
|
|
67
|
+
======================================== -->
|
|
68
|
+
|
|
69
|
+
<!-- Loader state (shown during search) -->
|
|
70
|
+
<div class="pa-command-palette__loader">
|
|
71
|
+
<div class="pa-spinner pa-spinner--sm pa-spinner--primary"></div>
|
|
72
|
+
<span>Searching...</span>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<!-- Result item (generated dynamically) -->
|
|
76
|
+
<div class="pa-command-palette__item">
|
|
77
|
+
<div class="pa-command-palette__item-icon">💻</div>
|
|
78
|
+
<div class="pa-command-palette__item-content">
|
|
79
|
+
<div class="pa-command-palette__item-title">MacBook Pro 16"</div>
|
|
80
|
+
<div class="pa-command-palette__item-meta">SKU: MBP-16-001 • $2,499.00</div>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="pa-command-palette__item-badge">In Stock</div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- Active result item -->
|
|
86
|
+
<div class="pa-command-palette__item pa-command-palette__item--active">
|
|
87
|
+
<div class="pa-command-palette__item-icon">📱</div>
|
|
88
|
+
<div class="pa-command-palette__item-content">
|
|
89
|
+
<div class="pa-command-palette__item-title">iPhone 15 Pro</div>
|
|
90
|
+
<div class="pa-command-palette__item-meta">SKU: IP15P-256 • $999.00</div>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="pa-command-palette__item-badge">New</div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<!-- Result with highlighted search match -->
|
|
96
|
+
<div class="pa-command-palette__item">
|
|
97
|
+
<div class="pa-command-palette__item-icon">🎧</div>
|
|
98
|
+
<div class="pa-command-palette__item-content">
|
|
99
|
+
<div class="pa-command-palette__item-title">Air<mark>Pods</mark> Pro</div>
|
|
100
|
+
<div class="pa-command-palette__item-meta">SKU: APP-GEN2 • $249.00</div>
|
|
101
|
+
</div>
|
|
102
|
+
<div class="pa-command-palette__item-badge">Popular</div>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<!-- Pagination indicator (shown when multiple pages) -->
|
|
106
|
+
<div class="pa-command-palette__pagination">
|
|
107
|
+
Page 1 of 3 • 24 results
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<!-- Section header (for grouping results) -->
|
|
111
|
+
<div class="pa-command-palette__section">
|
|
112
|
+
Recent Searches
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<!-- ========================================
|
|
116
|
+
CSS Modifiers
|
|
117
|
+
======================================== -->
|
|
118
|
+
|
|
119
|
+
<!-- Active state (shows the palette) -->
|
|
120
|
+
<div class="pa-command-palette pa-command-palette--active">
|
|
121
|
+
<!-- ... -->
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<!-- Context label visible -->
|
|
125
|
+
<div class="pa-command-palette__context pa-command-palette__context--visible">
|
|
126
|
+
Searching in Products
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<!-- Results in loading state (shows overlay) -->
|
|
130
|
+
<div class="pa-command-palette__results pa-command-palette__results--loading">
|
|
131
|
+
<!-- ... -->
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
<!-- ========================================
|
|
135
|
+
JavaScript API
|
|
136
|
+
======================================== -->
|
|
137
|
+
|
|
138
|
+
<!--
|
|
139
|
+
// Open palette
|
|
140
|
+
document.getElementById('commandPalette').classList.add('pa-command-palette--active');
|
|
141
|
+
document.getElementById('commandPaletteInput').focus();
|
|
142
|
+
|
|
143
|
+
// Close palette
|
|
144
|
+
document.getElementById('commandPalette').classList.remove('pa-command-palette--active');
|
|
145
|
+
document.getElementById('commandPaletteInput').value = '';
|
|
146
|
+
|
|
147
|
+
// Open with pre-filled query
|
|
148
|
+
const input = document.getElementById('commandPaletteInput');
|
|
149
|
+
input.value = '/p laptop';
|
|
150
|
+
input.dispatchEvent(new Event('input'));
|
|
151
|
+
-->
|
|
152
|
+
|
|
153
|
+
<!-- ========================================
|
|
154
|
+
Context Prefixes
|
|
155
|
+
======================================== -->
|
|
156
|
+
|
|
157
|
+
<!--
|
|
158
|
+
/p → Products → "Searching in Products"
|
|
159
|
+
/o → Orders → "Searching in Orders"
|
|
160
|
+
/u → Users → "Searching in Users"
|
|
161
|
+
/i → Invoices → "Searching in Invoices"
|
|
162
|
+
-->
|
|
163
|
+
|
|
164
|
+
<!-- ========================================
|
|
165
|
+
Keyboard Shortcuts
|
|
166
|
+
======================================== -->
|
|
167
|
+
|
|
168
|
+
<!--
|
|
169
|
+
Ctrl+K / Cmd+K → Open/close palette
|
|
170
|
+
↑ ↓ → Navigate between results
|
|
171
|
+
← → → Navigate between pages
|
|
172
|
+
Enter → Select highlighted result
|
|
173
|
+
Esc → Close palette
|
|
174
|
+
-->
|
|
175
|
+
|
|
176
|
+
<!-- ========================================
|
|
177
|
+
SCSS Variables (for customization)
|
|
178
|
+
======================================== -->
|
|
179
|
+
|
|
180
|
+
<!--
|
|
181
|
+
$command-palette-width: 38rem
|
|
182
|
+
$command-palette-offset-top: 8rem
|
|
183
|
+
$command-palette-border-radius: $border-radius
|
|
184
|
+
$command-palette-backdrop-bg: rgba(0, 0, 0, 0.5)
|
|
185
|
+
$command-palette-backdrop-blur: 4px
|
|
186
|
+
$command-palette-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.3)
|
|
187
|
+
$command-palette-input-padding-v: $spacing-base
|
|
188
|
+
$command-palette-input-padding-h: $spacing-lg
|
|
189
|
+
$command-palette-input-font-size: $font-size-lg
|
|
190
|
+
$command-palette-results-max-height: 24rem
|
|
191
|
+
$command-palette-empty-padding-v: $spacing-2xl
|
|
192
|
+
$command-palette-item-padding-v: $spacing-sm
|
|
193
|
+
$command-palette-item-hover-bg: rgba($accent-color, 0.05)
|
|
194
|
+
$command-palette-item-active-bg: rgba($accent-color, 0.1)
|
|
195
|
+
$command-palette-item-icon-size: 2rem
|
|
196
|
+
$command-palette-highlight-bg: rgba($accent-color, 0.2)
|
|
197
|
+
$command-palette-highlight-text: $accent-color
|
|
198
|
+
-->
|
|
199
|
+
|
|
200
|
+
<!-- ========================================
|
|
201
|
+
Implementation Files
|
|
202
|
+
======================================== -->
|
|
203
|
+
|
|
204
|
+
<!--
|
|
205
|
+
SCSS: src/scss/core-components/_command-palette.scss
|
|
206
|
+
Variables: src/scss/_variables.scss (17 variables)
|
|
207
|
+
JavaScript: dist/js/command-palette.js
|
|
208
|
+
HTML: views/layout.mustache (included globally)
|
|
209
|
+
Demo: /command-palette
|
|
210
|
+
-->
|