@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.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +172 -0
  3. package/dist/css/main.css +11542 -0
  4. package/dist/fonts/Delivery/Delivery_W_Bd.woff2 +0 -0
  5. package/dist/fonts/Delivery/Delivery_W_BdIt.woff2 +0 -0
  6. package/dist/fonts/Delivery/Delivery_W_CdBlk.woff2 +0 -0
  7. package/dist/fonts/Delivery/Delivery_W_CdLt.woff2 +0 -0
  8. package/dist/fonts/Delivery/Delivery_W_It.woff2 +0 -0
  9. package/dist/fonts/Delivery/Delivery_W_Lt.woff2 +0 -0
  10. package/dist/fonts/Delivery/Delivery_W_LtIt.woff2 +0 -0
  11. package/dist/fonts/Delivery/Delivery_W_Rg.woff2 +0 -0
  12. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2 +0 -0
  13. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.1 +0 -0
  14. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8UH-qVHQ.woff2.2 +0 -0
  15. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2 +0 -0
  16. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.1 +0 -0
  17. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8VH-qVHQ.woff2.2 +0 -0
  18. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2 +0 -0
  19. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8bH-o.woff2.1 +0 -0
  20. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2 +0 -0
  21. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.1 +0 -0
  22. package/dist/fonts/google/3y976aknfjLm_3lMKjiMgmUUYBs04Y8fH-qVHQ.woff2.2 +0 -0
  23. package/dist/fonts/google/6aez4K2oVqwIvtE2H68T.woff2 +0 -0
  24. package/dist/fonts/google/6aez4K2oVqwIvtU2Hw.woff2 +0 -0
  25. package/dist/fonts/google/6aez4K2oVqwIvtY2H68T.woff2 +0 -0
  26. package/dist/fonts/google/6aez4K2oVqwIvtg2H68T.woff2 +0 -0
  27. package/dist/fonts/google/6aez4K2oVqwIvto2H68T.woff2 +0 -0
  28. package/dist/fonts/google/6aez4K2oVqwIvts2H68T.woff2 +0 -0
  29. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nejog.woff2 +0 -0
  30. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nijogp5.woff2 +0 -0
  31. package/dist/fonts/google/7Auup_AqnyWWAxW2Wk3swUz56MS91Eww8SX21nmjogp5.woff2 +0 -0
  32. package/dist/fonts/google/PN_xRfK9oXHga0XdZ8g_vT0.woff2 +0 -0
  33. package/dist/fonts/google/PN_xRfK9oXHga0XdZsg_.woff2 +0 -0
  34. package/dist/fonts/google/PN_xRfK9oXHga0XdaMg_vT0.woff2 +0 -0
  35. package/dist/fonts/google/TK3tWkYFABsmjsphPho.woff2 +0 -0
  36. package/dist/fonts/google/TK3tWkYFABsmjspuPho7vA.woff2 +0 -0
  37. package/dist/fonts/google/TK3tWkYFABsmjspvPho7vA.woff2 +0 -0
  38. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjTYJwQj.woff2 +0 -0
  39. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjXYJwQj.woff2 +0 -0
  40. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6Vj_YJwQj.woff2 +0 -0
  41. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjbYJwQj.woff2 +0 -0
  42. package/dist/fonts/google/dg45_pLmvrkcOkBnKsOzXyGWTBcmg-X6VjvYJw.woff2 +0 -0
  43. package/dist/fonts/google/fonts-tracklist.txt +48 -0
  44. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbBjM4.woff2 +0 -0
  45. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbOjM7sfA.woff2 +0 -0
  46. package/dist/fonts/google/vEFO2_JTCgwQ5ejvMV0O96D01E8J0tJXHKbPjM7sfA.woff2 +0 -0
  47. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfLtrftV.woff2 +0 -0
  48. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfXtrftV.woff2 +0 -0
  49. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfbtrQ.woff2 +0 -0
  50. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfjtrftV.woff2 +0 -0
  51. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfntrftV.woff2 +0 -0
  52. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfrtrftV.woff2 +0 -0
  53. package/dist/fonts/google/wEOhEADFm8hSaQTFG18FErVhsC9x-tarUfvtrftV.woff2 +0 -0
  54. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_B-bnBeA.woff2 +0 -0
  55. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_C-bk.woff2 +0 -0
  56. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_G-bnBeA.woff2 +0 -0
  57. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_M-bnBeA.woff2 +0 -0
  58. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_N-bnBeA.woff2 +0 -0
  59. package/dist/fonts/google/xn7_YHE41ni1AdIRqAuZuw1Bx9mbZk79FN_P-bnBeA.woff2 +0 -0
  60. package/package.json +60 -0
  61. package/snippets/alerts.html +281 -0
  62. package/snippets/badges.html +212 -0
  63. package/snippets/buttons.html +287 -0
  64. package/snippets/cards.html +393 -0
  65. package/snippets/checkbox-lists.html +490 -0
  66. package/snippets/code.html +225 -0
  67. package/snippets/command-palette.html +210 -0
  68. package/snippets/comparison.html +428 -0
  69. package/snippets/customization.html +142 -0
  70. package/snippets/forms.html +477 -0
  71. package/snippets/grid.html +338 -0
  72. package/snippets/layout.html +598 -0
  73. package/snippets/lists.html +232 -0
  74. package/snippets/loaders.html +183 -0
  75. package/snippets/manifest.json +388 -0
  76. package/snippets/modal-dialogs.html +411 -0
  77. package/snippets/modals.html +310 -0
  78. package/snippets/popconfirm.html +253 -0
  79. package/snippets/profile.html +264 -0
  80. package/snippets/tables.html +317 -0
  81. package/snippets/tabs.html +930 -0
  82. package/snippets/timeline.html +364 -0
  83. package/snippets/toasts.html +154 -0
  84. package/snippets/tooltips.html +411 -0
  85. package/snippets/typography.html +101 -0
  86. package/snippets/utilities.html +595 -0
  87. package/snippets/virtual-scroll.html +322 -0
  88. package/snippets/web-daterangepicker.html +634 -0
  89. package/snippets/web-multiselect.html +362 -0
  90. package/src/scss/.claude/settings.local.json +11 -0
  91. package/src/scss/_base-css-variables.scss +348 -0
  92. package/src/scss/_core.scss +99 -0
  93. package/src/scss/_fonts.scss +67 -0
  94. package/src/scss/_purecss-grid-responsive.scss +138 -0
  95. package/src/scss/_purecss-grid.scss +58 -0
  96. package/src/scss/_variables.scss +14 -0
  97. package/src/scss/core-components/_alerts.scss +212 -0
  98. package/src/scss/core-components/_badges.scss +16 -0
  99. package/src/scss/core-components/_base.scss +124 -0
  100. package/src/scss/core-components/_buttons.scss +473 -0
  101. package/src/scss/core-components/_cards.scss +285 -0
  102. package/src/scss/core-components/_checkbox-lists.scss +289 -0
  103. package/src/scss/core-components/_code.scss +141 -0
  104. package/src/scss/core-components/_command-palette.scss +518 -0
  105. package/src/scss/core-components/_comparison.scss +172 -0
  106. package/src/scss/core-components/_file-selector.scss +780 -0
  107. package/src/scss/core-components/_forms.scss +16 -0
  108. package/src/scss/core-components/_grid.scss +264 -0
  109. package/src/scss/core-components/_layout.scss +15 -0
  110. package/src/scss/core-components/_lists.scss +211 -0
  111. package/src/scss/core-components/_loaders.scss +277 -0
  112. package/src/scss/core-components/_logic-tree.scss +280 -0
  113. package/src/scss/core-components/_modals.scss +209 -0
  114. package/src/scss/core-components/_notifications.scss +253 -0
  115. package/src/scss/core-components/_pagers.scss +141 -0
  116. package/src/scss/core-components/_popconfirm.scss +170 -0
  117. package/src/scss/core-components/_profile.scss +281 -0
  118. package/src/scss/core-components/_settings-panel.scss +128 -0
  119. package/src/scss/core-components/_statistics.scss +200 -0
  120. package/src/scss/core-components/_tables.scss +555 -0
  121. package/src/scss/core-components/_tabs.scss +438 -0
  122. package/src/scss/core-components/_timeline.scss +589 -0
  123. package/src/scss/core-components/_toasts.scss +281 -0
  124. package/src/scss/core-components/_tooltips.scss +503 -0
  125. package/src/scss/core-components/_utilities.scss +241 -0
  126. package/src/scss/core-components/_web-components-theme.scss +294 -0
  127. package/src/scss/core-components/badges/_badge-base.scss +131 -0
  128. package/src/scss/core-components/badges/_badge-group.scss +25 -0
  129. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -0
  130. package/src/scss/core-components/badges/_composite-badge.scss +70 -0
  131. package/src/scss/core-components/badges/_index.scss +10 -0
  132. package/src/scss/core-components/badges/_labels.scss +155 -0
  133. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -0
  134. package/src/scss/core-components/forms/_form-inputs.scss +100 -0
  135. package/src/scss/core-components/forms/_form-layout.scss +66 -0
  136. package/src/scss/core-components/forms/_form-states.scss +89 -0
  137. package/src/scss/core-components/forms/_index.scss +12 -0
  138. package/src/scss/core-components/forms/_input-groups.scss +149 -0
  139. package/src/scss/core-components/forms/_input-wrapper.scss +89 -0
  140. package/src/scss/core-components/forms/_query-editor.scss +313 -0
  141. package/src/scss/core-components/layout/_index.scss +11 -0
  142. package/src/scss/core-components/layout/_layout-container.scss +105 -0
  143. package/src/scss/core-components/layout/_layout-responsive.scss +100 -0
  144. package/src/scss/core-components/layout/_navbar-elements.scss +238 -0
  145. package/src/scss/core-components/layout/_navbar.scss +71 -0
  146. package/src/scss/core-components/layout/_sidebar-states.scss +228 -0
  147. package/src/scss/core-components/layout/_sidebar.scss +177 -0
  148. package/src/scss/main.scss +7 -0
  149. package/src/scss/themes/_dark-base.scss +207 -0
  150. package/src/scss/themes/audi-light.scss +311 -0
  151. package/src/scss/themes/audi.scss +288 -0
  152. package/src/scss/themes/corporate.scss +203 -0
  153. package/src/scss/themes/dark-blue.scss +152 -0
  154. package/src/scss/themes/dark-green.scss +156 -0
  155. package/src/scss/themes/dark-red.scss +160 -0
  156. package/src/scss/themes/dark.scss +145 -0
  157. package/src/scss/themes/express.scss +281 -0
  158. package/src/scss/themes/minimal.scss +121 -0
  159. package/src/scss/utilities.scss +481 -0
  160. package/src/scss/variables/_base.scss +81 -0
  161. package/src/scss/variables/_colors.scss +148 -0
  162. package/src/scss/variables/_components.scss +509 -0
  163. package/src/scss/variables/_index.scss +13 -0
  164. package/src/scss/variables/_layout.scss +65 -0
  165. package/src/scss/variables/_spacing.scss +66 -0
  166. package/src/scss/variables/_system.scss +80 -0
  167. 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
+ -->