@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,264 @@
|
|
|
1
|
+
<!-- ================================
|
|
2
|
+
PROFILE PANEL SNIPPETS
|
|
3
|
+
Pure Admin Visual Framework
|
|
4
|
+
================================ -->
|
|
5
|
+
|
|
6
|
+
<!-- ================================
|
|
7
|
+
PROFILE BUTTON (NAVBAR)
|
|
8
|
+
================================ -->
|
|
9
|
+
|
|
10
|
+
<!-- Profile Button (goes in header/navbar) -->
|
|
11
|
+
<button class="pa-navbar__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
|
|
12
|
+
<span class="pa-btn__icon">👤</span>
|
|
13
|
+
<span class="pa-navbar__profile-name">John Doe</span>
|
|
14
|
+
</button>
|
|
15
|
+
|
|
16
|
+
<!-- Profile Button with Font Awesome -->
|
|
17
|
+
<button class="pa-navbar__profile-btn" onclick="toggleProfilePanel()" aria-label="User Profile">
|
|
18
|
+
<span class="pa-btn__icon"><i class="fa-solid fa-user"></i></span>
|
|
19
|
+
<span class="pa-navbar__profile-name">John Doe</span>
|
|
20
|
+
</button>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<!-- ================================
|
|
24
|
+
PROFILE PANEL - BASIC
|
|
25
|
+
================================ -->
|
|
26
|
+
|
|
27
|
+
<!-- Complete Profile Panel (place before closing </body> tag) -->
|
|
28
|
+
<div class="pa-profile-panel" id="profilePanel">
|
|
29
|
+
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
30
|
+
<div class="pa-profile-panel__content">
|
|
31
|
+
<div class="pa-profile-panel__header">
|
|
32
|
+
<div class="pa-profile-panel__avatar">
|
|
33
|
+
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="pa-profile-panel__info">
|
|
36
|
+
<h3 class="pa-profile-panel__name">John Doe</h3>
|
|
37
|
+
<p class="pa-profile-panel__email">john.doe@company.com</p>
|
|
38
|
+
<span class="pa-profile-panel__role">Administrator</span>
|
|
39
|
+
</div>
|
|
40
|
+
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
41
|
+
✕
|
|
42
|
+
</button>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<div class="pa-profile-panel__body">
|
|
46
|
+
<nav class="pa-profile-panel__nav">
|
|
47
|
+
<ul>
|
|
48
|
+
<li><a href="#profile" class="pa-profile-panel__nav-item">
|
|
49
|
+
<span class="pa-profile-panel__nav-icon">👤</span>
|
|
50
|
+
Profile Settings
|
|
51
|
+
</a></li>
|
|
52
|
+
<li><a href="#security" class="pa-profile-panel__nav-item">
|
|
53
|
+
<span class="pa-profile-panel__nav-icon">🔒</span>
|
|
54
|
+
Security
|
|
55
|
+
</a></li>
|
|
56
|
+
<li><a href="#notifications" class="pa-profile-panel__nav-item">
|
|
57
|
+
<span class="pa-profile-panel__nav-icon">🔔</span>
|
|
58
|
+
Notifications
|
|
59
|
+
</a></li>
|
|
60
|
+
<li><a href="#preferences" class="pa-profile-panel__nav-item">
|
|
61
|
+
<span class="pa-profile-panel__nav-icon">⚙️</span>
|
|
62
|
+
Preferences
|
|
63
|
+
</a></li>
|
|
64
|
+
<li><a href="#help" class="pa-profile-panel__nav-item">
|
|
65
|
+
<span class="pa-profile-panel__nav-icon">❓</span>
|
|
66
|
+
Help & Support
|
|
67
|
+
</a></li>
|
|
68
|
+
</ul>
|
|
69
|
+
</nav>
|
|
70
|
+
|
|
71
|
+
<div class="pa-profile-panel__actions">
|
|
72
|
+
<button class="pa-btn pa-btn--secondary pa-btn--block">
|
|
73
|
+
Switch Account
|
|
74
|
+
</button>
|
|
75
|
+
<button class="pa-btn pa-btn--danger pa-btn--block">
|
|
76
|
+
Sign Out
|
|
77
|
+
</button>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
<!-- ================================
|
|
85
|
+
PROFILE PANEL - WITH FONT AWESOME
|
|
86
|
+
================================ -->
|
|
87
|
+
|
|
88
|
+
<div class="pa-profile-panel" id="profilePanel">
|
|
89
|
+
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
90
|
+
<div class="pa-profile-panel__content">
|
|
91
|
+
<div class="pa-profile-panel__header">
|
|
92
|
+
<div class="pa-profile-panel__avatar">
|
|
93
|
+
<span class="pa-profile-panel__avatar-icon"><i class="fa-solid fa-user"></i></span>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="pa-profile-panel__info">
|
|
96
|
+
<h3 class="pa-profile-panel__name">John Doe</h3>
|
|
97
|
+
<p class="pa-profile-panel__email">john.doe@company.com</p>
|
|
98
|
+
<span class="pa-profile-panel__role">Administrator</span>
|
|
99
|
+
</div>
|
|
100
|
+
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
101
|
+
<i class="fa-solid fa-xmark"></i>
|
|
102
|
+
</button>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div class="pa-profile-panel__body">
|
|
106
|
+
<nav class="pa-profile-panel__nav">
|
|
107
|
+
<ul>
|
|
108
|
+
<li><a href="#profile" class="pa-profile-panel__nav-item">
|
|
109
|
+
<span class="pa-profile-panel__nav-icon"><i class="fa-solid fa-user"></i></span>
|
|
110
|
+
Profile Settings
|
|
111
|
+
</a></li>
|
|
112
|
+
<li><a href="#security" class="pa-profile-panel__nav-item">
|
|
113
|
+
<span class="pa-profile-panel__nav-icon"><i class="fa-solid fa-lock"></i></span>
|
|
114
|
+
Security
|
|
115
|
+
</a></li>
|
|
116
|
+
<li><a href="#notifications" class="pa-profile-panel__nav-item">
|
|
117
|
+
<span class="pa-profile-panel__nav-icon"><i class="fa-solid fa-bell"></i></span>
|
|
118
|
+
Notifications
|
|
119
|
+
</a></li>
|
|
120
|
+
<li><a href="#preferences" class="pa-profile-panel__nav-item">
|
|
121
|
+
<span class="pa-profile-panel__nav-icon"><i class="fa-solid fa-gear"></i></span>
|
|
122
|
+
Preferences
|
|
123
|
+
</a></li>
|
|
124
|
+
<li><a href="#help" class="pa-profile-panel__nav-item">
|
|
125
|
+
<span class="pa-profile-panel__nav-icon"><i class="fa-solid fa-circle-question"></i></span>
|
|
126
|
+
Help & Support
|
|
127
|
+
</a></li>
|
|
128
|
+
</ul>
|
|
129
|
+
</nav>
|
|
130
|
+
|
|
131
|
+
<div class="pa-profile-panel__actions">
|
|
132
|
+
<button class="pa-btn pa-btn--secondary pa-btn--block">
|
|
133
|
+
<i class="fa-solid fa-right-left"></i> Switch Account
|
|
134
|
+
</button>
|
|
135
|
+
<button class="pa-btn pa-btn--danger pa-btn--block">
|
|
136
|
+
<i class="fa-solid fa-right-from-bracket"></i> Sign Out
|
|
137
|
+
</button>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
<!-- ================================
|
|
145
|
+
PROFILE PANEL - MINIMAL (NO ACTIONS)
|
|
146
|
+
================================ -->
|
|
147
|
+
|
|
148
|
+
<div class="pa-profile-panel" id="profilePanel">
|
|
149
|
+
<div class="pa-profile-panel__overlay" onclick="closeProfilePanel()"></div>
|
|
150
|
+
<div class="pa-profile-panel__content">
|
|
151
|
+
<div class="pa-profile-panel__header">
|
|
152
|
+
<div class="pa-profile-panel__avatar">
|
|
153
|
+
<span class="pa-profile-panel__avatar-icon">👤</span>
|
|
154
|
+
</div>
|
|
155
|
+
<div class="pa-profile-panel__info">
|
|
156
|
+
<h3 class="pa-profile-panel__name">John Doe</h3>
|
|
157
|
+
<p class="pa-profile-panel__email">john.doe@company.com</p>
|
|
158
|
+
<span class="pa-profile-panel__role">Administrator</span>
|
|
159
|
+
</div>
|
|
160
|
+
<button class="pa-profile-panel__close" onclick="closeProfilePanel()" aria-label="Close Profile">
|
|
161
|
+
✕
|
|
162
|
+
</button>
|
|
163
|
+
</div>
|
|
164
|
+
|
|
165
|
+
<div class="pa-profile-panel__body">
|
|
166
|
+
<nav class="pa-profile-panel__nav">
|
|
167
|
+
<ul>
|
|
168
|
+
<li><a href="#profile" class="pa-profile-panel__nav-item">
|
|
169
|
+
<span class="pa-profile-panel__nav-icon">👤</span>
|
|
170
|
+
Profile Settings
|
|
171
|
+
</a></li>
|
|
172
|
+
<li><a href="#logout" class="pa-profile-panel__nav-item">
|
|
173
|
+
<span class="pa-profile-panel__nav-icon">🚪</span>
|
|
174
|
+
Sign Out
|
|
175
|
+
</a></li>
|
|
176
|
+
</ul>
|
|
177
|
+
</nav>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
<!-- ================================
|
|
184
|
+
JAVASCRIPT - PROFILE PANEL TOGGLE
|
|
185
|
+
================================ -->
|
|
186
|
+
|
|
187
|
+
<script>
|
|
188
|
+
/**
|
|
189
|
+
* Toggle profile panel open/closed
|
|
190
|
+
*/
|
|
191
|
+
function toggleProfilePanel() {
|
|
192
|
+
const profilePanel = document.getElementById('profilePanel');
|
|
193
|
+
profilePanel.classList.toggle('pa-profile-panel--open');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Close profile panel
|
|
198
|
+
*/
|
|
199
|
+
function closeProfilePanel() {
|
|
200
|
+
const profilePanel = document.getElementById('profilePanel');
|
|
201
|
+
profilePanel.classList.remove('pa-profile-panel--open');
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Close profile panel when clicking outside
|
|
206
|
+
*/
|
|
207
|
+
document.addEventListener('click', (e) => {
|
|
208
|
+
const profilePanel = document.getElementById('profilePanel');
|
|
209
|
+
const profileBtn = document.querySelector('.pa-navbar__profile-btn');
|
|
210
|
+
|
|
211
|
+
if (!profilePanel || !profileBtn) return;
|
|
212
|
+
|
|
213
|
+
if (!profilePanel.contains(e.target) && !profileBtn.contains(e.target) &&
|
|
214
|
+
profilePanel.classList.contains('pa-profile-panel--open')) {
|
|
215
|
+
closeProfilePanel();
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
</script>
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
<!-- ================================
|
|
222
|
+
USAGE NOTES
|
|
223
|
+
================================ -->
|
|
224
|
+
|
|
225
|
+
<!--
|
|
226
|
+
PROFILE BUTTON (HEADER):
|
|
227
|
+
- .pa-navbar__profile-btn - Profile button in header
|
|
228
|
+
- .pa-btn__icon - Icon container
|
|
229
|
+
- .pa-navbar__profile-name - User name text
|
|
230
|
+
|
|
231
|
+
PROFILE PANEL STRUCTURE:
|
|
232
|
+
- .pa-profile-panel - Main panel container
|
|
233
|
+
- #profilePanel - Required ID for JavaScript
|
|
234
|
+
- .pa-profile-panel--open - Open state (toggled by JS)
|
|
235
|
+
- .pa-profile-panel__overlay - Click-to-close overlay
|
|
236
|
+
- .pa-profile-panel__content - Panel content container
|
|
237
|
+
|
|
238
|
+
PANEL HEADER:
|
|
239
|
+
- .pa-profile-panel__header - Header container
|
|
240
|
+
- .pa-profile-panel__avatar - Avatar container
|
|
241
|
+
- .pa-profile-panel__avatar-icon - Avatar icon/image
|
|
242
|
+
- .pa-profile-panel__info - User info container
|
|
243
|
+
- .pa-profile-panel__name - User name
|
|
244
|
+
- .pa-profile-panel__email - User email
|
|
245
|
+
- .pa-profile-panel__role - User role badge
|
|
246
|
+
- .pa-profile-panel__close - Close button
|
|
247
|
+
|
|
248
|
+
PANEL BODY:
|
|
249
|
+
- .pa-profile-panel__body - Body container
|
|
250
|
+
- .pa-profile-panel__nav - Navigation menu
|
|
251
|
+
- .pa-profile-panel__nav-item - Navigation link
|
|
252
|
+
- .pa-profile-panel__nav-icon - Navigation icon
|
|
253
|
+
- .pa-profile-panel__actions - Action buttons container
|
|
254
|
+
|
|
255
|
+
JAVASCRIPT FUNCTIONS:
|
|
256
|
+
- toggleProfilePanel() - Toggle panel open/closed
|
|
257
|
+
- closeProfilePanel() - Close panel
|
|
258
|
+
- Auto-closes when clicking outside
|
|
259
|
+
|
|
260
|
+
PLACEMENT:
|
|
261
|
+
- Profile button goes in header/navbar
|
|
262
|
+
- Profile panel goes before closing </body> tag
|
|
263
|
+
- Panel slides in from right side of screen
|
|
264
|
+
-->
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
<!-- ================================
|
|
2
|
+
TABLE SNIPPETS
|
|
3
|
+
Pure Admin Visual Framework
|
|
4
|
+
================================ -->
|
|
5
|
+
|
|
6
|
+
<!-- BASIC TABLE -->
|
|
7
|
+
|
|
8
|
+
<!-- Simple Table -->
|
|
9
|
+
<table class="pa-table">
|
|
10
|
+
<thead>
|
|
11
|
+
<tr>
|
|
12
|
+
<th>Name</th>
|
|
13
|
+
<th>Email</th>
|
|
14
|
+
<th>Role</th>
|
|
15
|
+
</tr>
|
|
16
|
+
</thead>
|
|
17
|
+
<tbody>
|
|
18
|
+
<tr>
|
|
19
|
+
<td>John Doe</td>
|
|
20
|
+
<td>john@example.com</td>
|
|
21
|
+
<td>Admin</td>
|
|
22
|
+
</tr>
|
|
23
|
+
<tr>
|
|
24
|
+
<td>Jane Smith</td>
|
|
25
|
+
<td>jane@example.com</td>
|
|
26
|
+
<td>User</td>
|
|
27
|
+
</tr>
|
|
28
|
+
</tbody>
|
|
29
|
+
</table>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<!-- STRIPED TABLE -->
|
|
33
|
+
|
|
34
|
+
<!-- Table with Alternating Row Colors -->
|
|
35
|
+
<table class="pa-table pa-table--striped">
|
|
36
|
+
<thead>
|
|
37
|
+
<tr>
|
|
38
|
+
<th>Name</th>
|
|
39
|
+
<th>Status</th>
|
|
40
|
+
</tr>
|
|
41
|
+
</thead>
|
|
42
|
+
<tbody>
|
|
43
|
+
<tr>
|
|
44
|
+
<td>John Doe</td>
|
|
45
|
+
<td>Active</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<td>Jane Smith</td>
|
|
49
|
+
<td>Inactive</td>
|
|
50
|
+
</tr>
|
|
51
|
+
</tbody>
|
|
52
|
+
</table>
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
<!-- NOTE: All tables have hover effect by default (no modifier needed) -->
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
<!-- TABLE WITH ACTIONS -->
|
|
59
|
+
|
|
60
|
+
<!-- Table with Icon Buttons -->
|
|
61
|
+
<table class="pa-table pa-table--striped">
|
|
62
|
+
<thead>
|
|
63
|
+
<tr>
|
|
64
|
+
<th>Name</th>
|
|
65
|
+
<th>Email</th>
|
|
66
|
+
<th class="col-auto">Actions</th>
|
|
67
|
+
</tr>
|
|
68
|
+
</thead>
|
|
69
|
+
<tbody>
|
|
70
|
+
<tr>
|
|
71
|
+
<td>John Doe</td>
|
|
72
|
+
<td>john@example.com</td>
|
|
73
|
+
<td class="col-auto">
|
|
74
|
+
<div class="pa-btn-group">
|
|
75
|
+
<button class="pa-btn pa-btn--xs pa-btn--icon-only pa-btn--primary" title="View">👁️</button>
|
|
76
|
+
<button class="pa-btn pa-btn--xs pa-btn--icon-only pa-btn--secondary" title="Edit">✏️</button>
|
|
77
|
+
<button class="pa-btn pa-btn--xs pa-btn--icon-only pa-btn--danger" title="Delete">🗑️</button>
|
|
78
|
+
</div>
|
|
79
|
+
</td>
|
|
80
|
+
</tr>
|
|
81
|
+
</tbody>
|
|
82
|
+
</table>
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
<!-- TABLE SPACING VARIANTS -->
|
|
86
|
+
|
|
87
|
+
<!-- Default Spacing (base padding) -->
|
|
88
|
+
<table class="pa-table">
|
|
89
|
+
<thead>
|
|
90
|
+
<tr>
|
|
91
|
+
<th>Name</th>
|
|
92
|
+
<th>Email</th>
|
|
93
|
+
</tr>
|
|
94
|
+
</thead>
|
|
95
|
+
<tbody>
|
|
96
|
+
<tr>
|
|
97
|
+
<td>John Doe</td>
|
|
98
|
+
<td>john@example.com</td>
|
|
99
|
+
</tr>
|
|
100
|
+
</tbody>
|
|
101
|
+
</table>
|
|
102
|
+
|
|
103
|
+
<!-- 2x Spacing (comfortable padding) -->
|
|
104
|
+
<table class="pa-table pa-table--2x">
|
|
105
|
+
<thead>
|
|
106
|
+
<tr>
|
|
107
|
+
<th>Name</th>
|
|
108
|
+
<th>Email</th>
|
|
109
|
+
</tr>
|
|
110
|
+
</thead>
|
|
111
|
+
<tbody>
|
|
112
|
+
<tr>
|
|
113
|
+
<td>John Doe</td>
|
|
114
|
+
<td>john@example.com</td>
|
|
115
|
+
</tr>
|
|
116
|
+
</tbody>
|
|
117
|
+
</table>
|
|
118
|
+
|
|
119
|
+
<!-- 3x Spacing (spacious padding) -->
|
|
120
|
+
<table class="pa-table pa-table--3x">
|
|
121
|
+
<thead>
|
|
122
|
+
<tr>
|
|
123
|
+
<th>Name</th>
|
|
124
|
+
<th>Email</th>
|
|
125
|
+
</tr>
|
|
126
|
+
</thead>
|
|
127
|
+
<tbody>
|
|
128
|
+
<tr>
|
|
129
|
+
<td>John Doe</td>
|
|
130
|
+
<td>john@example.com</td>
|
|
131
|
+
</tr>
|
|
132
|
+
</tbody>
|
|
133
|
+
</table>
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
<!-- RESPONSIVE TABLE -->
|
|
137
|
+
|
|
138
|
+
<!-- Table in Card with Horizontal Scroll on Mobile -->
|
|
139
|
+
<div class="pa-card">
|
|
140
|
+
<div class="pa-card__body">
|
|
141
|
+
<div class="pa-table-responsive">
|
|
142
|
+
<table class="pa-table pa-table--striped">
|
|
143
|
+
<thead>
|
|
144
|
+
<tr>
|
|
145
|
+
<th>ID</th>
|
|
146
|
+
<th>Name</th>
|
|
147
|
+
<th>Email</th>
|
|
148
|
+
<th>Role</th>
|
|
149
|
+
<th>Status</th>
|
|
150
|
+
</tr>
|
|
151
|
+
</thead>
|
|
152
|
+
<tbody>
|
|
153
|
+
<tr>
|
|
154
|
+
<td>1</td>
|
|
155
|
+
<td>John Doe</td>
|
|
156
|
+
<td>john@example.com</td>
|
|
157
|
+
<td>Admin</td>
|
|
158
|
+
<td>Active</td>
|
|
159
|
+
</tr>
|
|
160
|
+
</tbody>
|
|
161
|
+
</table>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
<!-- TABLE WITH BADGES -->
|
|
168
|
+
|
|
169
|
+
<!-- Table with Status Badges -->
|
|
170
|
+
<table class="pa-table pa-table--striped">
|
|
171
|
+
<thead>
|
|
172
|
+
<tr>
|
|
173
|
+
<th>Name</th>
|
|
174
|
+
<th>Status</th>
|
|
175
|
+
<th>Role</th>
|
|
176
|
+
</tr>
|
|
177
|
+
</thead>
|
|
178
|
+
<tbody>
|
|
179
|
+
<tr>
|
|
180
|
+
<td>John Doe</td>
|
|
181
|
+
<td><span class="pa-badge pa-badge--success">Active</span></td>
|
|
182
|
+
<td><span class="pa-badge pa-badge--primary">Admin</span></td>
|
|
183
|
+
</tr>
|
|
184
|
+
<tr>
|
|
185
|
+
<td>Jane Smith</td>
|
|
186
|
+
<td><span class="pa-badge pa-badge--danger">Inactive</span></td>
|
|
187
|
+
<td><span class="pa-badge pa-badge--secondary">User</span></td>
|
|
188
|
+
</tr>
|
|
189
|
+
</tbody>
|
|
190
|
+
</table>
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
<!-- TABLE CONTAINER -->
|
|
194
|
+
|
|
195
|
+
<!-- Table in Container with Border and Scrolling -->
|
|
196
|
+
<div class="pa-table-container">
|
|
197
|
+
<table class="pa-table">
|
|
198
|
+
<thead>
|
|
199
|
+
<tr>
|
|
200
|
+
<th>ID</th>
|
|
201
|
+
<th>Name</th>
|
|
202
|
+
<th>Email</th>
|
|
203
|
+
</tr>
|
|
204
|
+
</thead>
|
|
205
|
+
<tbody>
|
|
206
|
+
<tr>
|
|
207
|
+
<td>1</td>
|
|
208
|
+
<td>John Doe</td>
|
|
209
|
+
<td>john@example.com</td>
|
|
210
|
+
</tr>
|
|
211
|
+
</tbody>
|
|
212
|
+
</table>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
<!-- PAGER COMPONENT -->
|
|
217
|
+
|
|
218
|
+
<!-- Centered Pager (default) -->
|
|
219
|
+
<div class="pa-pager">
|
|
220
|
+
<div class="pa-pager__container">
|
|
221
|
+
<div class="pa-pager__controls">
|
|
222
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">‹ Previous</button>
|
|
223
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">Next ›</button>
|
|
224
|
+
</div>
|
|
225
|
+
<div class="pa-pager__info">
|
|
226
|
+
<span class="pa-pager__text">Page</span>
|
|
227
|
+
<input type="number" class="pa-input pa-input--sm pa-pager__input" value="1" min="1">
|
|
228
|
+
<span class="pa-pager__text">of 10</span>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
<!-- Left-Aligned Pager -->
|
|
234
|
+
<div class="pa-pager pa-pager--left">
|
|
235
|
+
<div class="pa-pager__container">
|
|
236
|
+
<div class="pa-pager__controls">
|
|
237
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">« First</button>
|
|
238
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">‹ Prev</button>
|
|
239
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">Next ›</button>
|
|
240
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">Last »</button>
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
|
|
245
|
+
<!-- Right-Aligned Pager -->
|
|
246
|
+
<div class="pa-pager pa-pager--right">
|
|
247
|
+
<div class="pa-pager__container">
|
|
248
|
+
<span class="pa-pager__text">Showing 1-25 of 250</span>
|
|
249
|
+
<div class="pa-pager__controls">
|
|
250
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">‹</button>
|
|
251
|
+
<button class="pa-btn pa-btn--sm pa-btn--secondary">›</button>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
<!-- LOAD MORE COMPONENT -->
|
|
258
|
+
|
|
259
|
+
<!-- Centered Load More (default) -->
|
|
260
|
+
<div class="pa-load-more">
|
|
261
|
+
<button class="pa-load-more__button">
|
|
262
|
+
<span class="pa-load-more__text">Load More</span>
|
|
263
|
+
<span class="pa-load-more__count">(25 of 250)</span>
|
|
264
|
+
</button>
|
|
265
|
+
</div>
|
|
266
|
+
|
|
267
|
+
<!-- Load More with Loading State -->
|
|
268
|
+
<div class="pa-load-more">
|
|
269
|
+
<button class="pa-load-more__button pa-load-more__button--loading">
|
|
270
|
+
<span class="pa-load-more__spinner"></span>
|
|
271
|
+
<span class="pa-load-more__text">Loading...</span>
|
|
272
|
+
</button>
|
|
273
|
+
</div>
|
|
274
|
+
|
|
275
|
+
<!-- Left-Aligned Load More -->
|
|
276
|
+
<div class="pa-load-more pa-load-more--left">
|
|
277
|
+
<button class="pa-load-more__button">
|
|
278
|
+
<span class="pa-load-more__text">Show More Items</span>
|
|
279
|
+
</button>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<!-- Right-Aligned Load More -->
|
|
283
|
+
<div class="pa-load-more pa-load-more--right">
|
|
284
|
+
<button class="pa-load-more__button">
|
|
285
|
+
<span class="pa-load-more__text">Load Previous</span>
|
|
286
|
+
</button>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
<!-- AVAILABLE TABLE MODIFIERS -->
|
|
291
|
+
<!--
|
|
292
|
+
BASE CLASS:
|
|
293
|
+
- pa-table (base table with hover effect built-in)
|
|
294
|
+
|
|
295
|
+
MODIFIERS:
|
|
296
|
+
- pa-table--striped (alternating row colors)
|
|
297
|
+
- pa-table--2x (comfortable padding, 2x base)
|
|
298
|
+
- pa-table--3x (spacious padding, 3x base)
|
|
299
|
+
|
|
300
|
+
HELPERS:
|
|
301
|
+
- col-auto (auto-width column that shrinks to content)
|
|
302
|
+
- pa-table-container (wrapper with border and scroll)
|
|
303
|
+
- pa-table-responsive (horizontal scroll on mobile)
|
|
304
|
+
|
|
305
|
+
PAGER:
|
|
306
|
+
- pa-pager (center aligned by default)
|
|
307
|
+
- pa-pager--left (left aligned)
|
|
308
|
+
- pa-pager--right (right aligned)
|
|
309
|
+
- pa-pager__container, __controls, __info, __input, __text
|
|
310
|
+
|
|
311
|
+
LOAD MORE:
|
|
312
|
+
- pa-load-more (center aligned by default)
|
|
313
|
+
- pa-load-more--left (left aligned)
|
|
314
|
+
- pa-load-more--right (right aligned)
|
|
315
|
+
- pa-load-more__button, __spinner, __text, __count
|
|
316
|
+
- pa-load-more__button--loading (loading state)
|
|
317
|
+
-->
|