@keenmate/pure-admin-core 2.3.1 → 2.3.3

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 (70) hide show
  1. package/README.md +30 -9
  2. package/dist/css/main.css +205 -190
  3. package/package.json +1 -1
  4. package/snippets/buttons.html +375 -365
  5. package/snippets/command-palette.html +15 -13
  6. package/src/scss/_base-css-variables.scss +10 -0
  7. package/src/scss/_core.scss +121 -121
  8. package/src/scss/core-components/_alerts.scss +227 -227
  9. package/src/scss/core-components/_badges.scss +16 -16
  10. package/src/scss/core-components/_base.scss +125 -125
  11. package/src/scss/core-components/_buttons.scss +31 -16
  12. package/src/scss/core-components/_callouts.scss +152 -152
  13. package/src/scss/core-components/_cards.scss +488 -488
  14. package/src/scss/core-components/_checkbox-lists.scss +289 -289
  15. package/src/scss/core-components/_code.scss +141 -141
  16. package/src/scss/core-components/_command-palette.scss +518 -509
  17. package/src/scss/core-components/_comparison.scss +172 -172
  18. package/src/scss/core-components/_data-display.scss +9 -9
  19. package/src/scss/core-components/_data-viz.scss +9 -9
  20. package/src/scss/core-components/_detail-panel.scss +1 -1
  21. package/src/scss/core-components/_file-selector.scss +780 -780
  22. package/src/scss/core-components/_filter-card.scss +58 -58
  23. package/src/scss/core-components/_forms.scss +16 -16
  24. package/src/scss/core-components/_grid.scss +293 -293
  25. package/src/scss/core-components/_layout.scss +15 -15
  26. package/src/scss/core-components/_lists.scss +211 -211
  27. package/src/scss/core-components/_loaders.scss +277 -277
  28. package/src/scss/core-components/_logic-tree.scss +280 -280
  29. package/src/scss/core-components/_modals.scss +203 -203
  30. package/src/scss/core-components/_notifications.scss +320 -320
  31. package/src/scss/core-components/_pagers.scss +141 -141
  32. package/src/scss/core-components/_popconfirm.scss +170 -170
  33. package/src/scss/core-components/_profile.scss +405 -405
  34. package/src/scss/core-components/_scrollbars.scss +40 -40
  35. package/src/scss/core-components/_settings-panel.scss +141 -141
  36. package/src/scss/core-components/_statistics.scss +200 -201
  37. package/src/scss/core-components/_tables.scss +900 -900
  38. package/src/scss/core-components/_tabs.scss +504 -504
  39. package/src/scss/core-components/_timeline.scss +589 -589
  40. package/src/scss/core-components/_toasts.scss +425 -425
  41. package/src/scss/core-components/_tooltips.scss +605 -605
  42. package/src/scss/core-components/_utilities.scss +1 -1
  43. package/src/scss/core-components/_web-components-theme.scss +21 -21
  44. package/src/scss/core-components/badges/_badge-base.scss +121 -121
  45. package/src/scss/core-components/badges/_badge-group.scss +25 -25
  46. package/src/scss/core-components/badges/_composite-badge-variants.scss +396 -396
  47. package/src/scss/core-components/badges/_composite-badge.scss +70 -70
  48. package/src/scss/core-components/badges/_index.scss +10 -10
  49. package/src/scss/core-components/badges/_labels.scss +155 -155
  50. package/src/scss/core-components/forms/_checkboxes-radios.scss +205 -205
  51. package/src/scss/core-components/forms/_form-inputs.scss +3 -3
  52. package/src/scss/core-components/forms/_form-layout.scss +66 -66
  53. package/src/scss/core-components/forms/_form-states.scss +115 -115
  54. package/src/scss/core-components/forms/_index.scss +12 -12
  55. package/src/scss/core-components/forms/_input-groups.scss +154 -154
  56. package/src/scss/core-components/forms/_input-wrapper.scss +89 -89
  57. package/src/scss/core-components/forms/_query-editor.scss +313 -313
  58. package/src/scss/core-components/layout/_index.scss +11 -11
  59. package/src/scss/core-components/layout/_layout-container.scss +168 -168
  60. package/src/scss/core-components/layout/_layout-responsive.scss +99 -99
  61. package/src/scss/core-components/layout/_navbar-elements.scss +250 -250
  62. package/src/scss/core-components/layout/_navbar.scss +83 -83
  63. package/src/scss/core-components/layout/_sidebar-states.scss +237 -237
  64. package/src/scss/core-components/layout/_sidebar.scss +234 -234
  65. package/src/scss/main.scss +7 -7
  66. package/src/scss/utilities.scss +740 -740
  67. package/src/scss/variables/_base.scss +228 -228
  68. package/src/scss/variables/_components.scss +748 -748
  69. package/src/scss/variables/_layout.scss +65 -65
  70. package/src/scss/variables/_typography.scss +37 -37
@@ -1,234 +1,234 @@
1
- /* ========================================
2
- Sidebar Component
3
- Sidebar navigation with nested submenus
4
- ======================================== */
5
- @use '../../variables' as *;
6
-
7
- // Local CSS variables for sidebar (runtime state, modified by JS for resize)
8
- :root {
9
- --pa-local-sidebar-width: #{$sidebar-width};
10
- --pa-local-sidebar-min-width: 18rem;
11
- --pa-local-sidebar-max-width: 50rem;
12
- }
13
-
14
- // Sidebar layout element - width in :where() for low specificity (utility classes can override)
15
- :where(.pa-layout__sidebar) {
16
- width: var(--pa-local-sidebar-width);
17
- }
18
-
19
- .pa-layout__sidebar {
20
- background-color: var(--pa-sidebar-bg);
21
- border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to border-left
22
- flex-shrink: 0;
23
- position: relative;
24
- }
25
-
26
- // Resize handle on sidebar edge
27
- .pa-sidebar-resize {
28
- position: absolute;
29
- top: 0;
30
- inset-inline-end: 0; // RTL: flips to left
31
- width: 6px;
32
- height: 100%;
33
- cursor: ew-resize;
34
- z-index: 100;
35
-
36
- // Visual indicator on hover
37
- &::after {
38
- content: '';
39
- position: absolute;
40
- top: 0;
41
- inset-inline-start: 50%;
42
- transform: translateX(-50%);
43
- width: 2px;
44
- height: 100%;
45
- background-color: transparent;
46
- transition: background-color $transition-fast $easing-snappy;
47
- }
48
-
49
- &:hover::after,
50
- &--active::after {
51
- background-color: var(--pa-accent);
52
- }
53
- }
54
-
55
- // Disable text selection during resize
56
- body.pa-sidebar-resizing {
57
- cursor: ew-resize !important;
58
- user-select: none;
59
-
60
- * {
61
- cursor: ew-resize !important;
62
- }
63
- }
64
-
65
- // Sticky mode - sidebar scrolls
66
- body.pa-layout--sticky .pa-layout__sidebar {
67
- overflow-y: auto;
68
- overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
69
- overflow-x: visible; // Allow tooltips to escape (right in LTR, left in RTL)
70
- }
71
-
72
- // Sidebar component (separate BEM block)
73
- .pa-sidebar {
74
- &__nav {
75
- padding: $spacing-base 0;
76
-
77
- ul {
78
- list-style: none;
79
- margin: 0;
80
- padding: 0;
81
- }
82
- }
83
-
84
- &__item {
85
- // Base styles for all sidebar items (regular links and submenu toggles)
86
- }
87
-
88
- &__link {
89
- display: flex;
90
- align-items: center;
91
- gap: $sidebar-item-gap;
92
- padding: $sidebar-padding;
93
- color: var(--pa-sidebar-text-secondary);
94
- text-decoration: none;
95
- font-weight: $font-weight-medium;
96
- border-inline-end: $border-width-thick solid transparent; // RTL: flips to border-left
97
-
98
- body.loaded & {
99
- transition: all $transition-fast $easing-snappy;
100
- }
101
-
102
- &:hover {
103
- color: var(--pa-sidebar-text);
104
- background-color: var(--pa-accent-light);
105
- }
106
-
107
- &--active {
108
- color: var(--pa-accent);
109
- background-color: var(--pa-accent-hover);
110
- border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
111
- font-weight: $font-weight-semibold;
112
- }
113
- }
114
-
115
- &__toggle {
116
- // For submenu toggle buttons (non-link items)
117
- display: flex;
118
- align-items: center;
119
- gap: $sidebar-item-gap;
120
- padding: $sidebar-padding;
121
- color: var(--pa-sidebar-text-secondary);
122
- background: none;
123
- border: none;
124
- width: 100%;
125
- text-align: start; // RTL: flips to right
126
- font-weight: $font-weight-medium;
127
- cursor: pointer;
128
-
129
- body.loaded & {
130
- transition: all $transition-fast $easing-snappy;
131
- }
132
-
133
- &:hover {
134
- color: var(--pa-sidebar-text);
135
- background-color: var(--pa-accent-light);
136
- }
137
-
138
- &--active {
139
- color: var(--pa-accent);
140
- background-color: var(--pa-accent-hover);
141
- }
142
- }
143
-
144
- // Icon and label styles
145
- &__icon {
146
- width: $sidebar-icon-size;
147
- min-width: $sidebar-icon-size;
148
- height: $sidebar-icon-size;
149
- display: flex;
150
- align-items: center;
151
- justify-content: center;
152
- flex-shrink: 0;
153
- font-size: $font-size-base;
154
- text-align: center;
155
- line-height: 1; // Prevent emoji baseline shift
156
- }
157
-
158
- &__label {
159
- flex: 1;
160
- overflow: hidden;
161
- text-overflow: ellipsis;
162
- white-space: nowrap;
163
-
164
- body.loaded & {
165
- transition: opacity $transition-normal $easing-snappy, width $transition-normal $easing-snappy;
166
- }
167
- }
168
-
169
- // Submenu styles - Level 2
170
- &__submenu {
171
- list-style: none;
172
- margin: 0;
173
- padding: 0;
174
- display: none;
175
- background-color: var(--pa-sidebar-submenu-bg);
176
-
177
- &--open {
178
- display: block;
179
- }
180
- }
181
-
182
- // Level 2 submenu links
183
- &__submenu > &__item > &__link {
184
- padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
185
- font-size: $font-size-md;
186
- border-inline-end: $border-width-medium solid transparent; // RTL: flips to border-left
187
-
188
- &:hover {
189
- background-color: var(--pa-sidebar-submenu-hover-bg);
190
- }
191
-
192
- &--active {
193
- background-color: var(--pa-sidebar-submenu-active-bg);
194
- border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
195
- }
196
- }
197
-
198
- // Level 2 submenu toggles (for third level)
199
- &__submenu > &__item > &__toggle {
200
- padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
201
- font-size: $font-size-md;
202
- }
203
-
204
- // Level 3 submenu links
205
- &__submenu &__submenu > &__item > &__link {
206
- padding-inline-start: calc($sidebar-submenu-indent * $sidebar-submenu-indent-multiplier); // RTL: flips
207
- font-size: $font-size-sm;
208
- border-inline-end: $border-width-base solid transparent; // RTL: flips to border-left
209
-
210
- &--active {
211
- border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
212
- }
213
- }
214
-
215
- // Chevron icon for toggle buttons
216
- &__chevron {
217
- margin-inline-start: auto; // RTL: flips to margin-right: auto
218
- font-size: $font-size-xs;
219
-
220
- body.loaded & {
221
- transition: transform $transition-fast $easing-snappy;
222
- }
223
-
224
- // Chevron points right (›) in LTR, left (‹) in RTL
225
- // When open, rotates 90deg clockwise in LTR, -90deg (counter-clockwise) in RTL
226
- .pa-sidebar__item--open & {
227
- transform: rotate(90deg);
228
- }
229
-
230
- [dir="rtl"] .pa-sidebar__item--open & {
231
- transform: rotate(-90deg);
232
- }
233
- }
234
- }
1
+ /* ========================================
2
+ Sidebar Component
3
+ Sidebar navigation with nested submenus
4
+ ======================================== */
5
+ @use '../../variables' as *;
6
+
7
+ // Local CSS variables for sidebar (runtime state, modified by JS for resize)
8
+ :root {
9
+ --pa-local-sidebar-width: #{$sidebar-width};
10
+ --pa-local-sidebar-min-width: 18rem;
11
+ --pa-local-sidebar-max-width: 50rem;
12
+ }
13
+
14
+ // Sidebar layout element - width in :where() for low specificity (utility classes can override)
15
+ :where(.pa-layout__sidebar) {
16
+ width: var(--pa-local-sidebar-width);
17
+ }
18
+
19
+ .pa-layout__sidebar {
20
+ background-color: var(--pa-sidebar-bg);
21
+ border-inline-end: $border-width-base solid var(--pa-border-color); // RTL: flips to border-left
22
+ flex-shrink: 0;
23
+ position: relative;
24
+ }
25
+
26
+ // Resize handle on sidebar edge
27
+ .pa-sidebar-resize {
28
+ position: absolute;
29
+ top: 0;
30
+ inset-inline-end: 0; // RTL: flips to left
31
+ width: 6px;
32
+ height: 100%;
33
+ cursor: ew-resize;
34
+ z-index: 100;
35
+
36
+ // Visual indicator on hover
37
+ &::after {
38
+ content: '';
39
+ position: absolute;
40
+ top: 0;
41
+ inset-inline-start: 50%;
42
+ transform: translateX(-50%);
43
+ width: 2px;
44
+ height: 100%;
45
+ background-color: transparent;
46
+ transition: background-color $transition-fast $easing-snappy;
47
+ }
48
+
49
+ &:hover::after,
50
+ &--active::after {
51
+ background-color: var(--pa-accent);
52
+ }
53
+ }
54
+
55
+ // Disable text selection during resize
56
+ body.pa-sidebar-resizing {
57
+ cursor: ew-resize !important;
58
+ user-select: none;
59
+
60
+ * {
61
+ cursor: ew-resize !important;
62
+ }
63
+ }
64
+
65
+ // Sticky mode - sidebar scrolls
66
+ body.pa-layout--sticky .pa-layout__sidebar {
67
+ overflow-y: auto;
68
+ overflow-y: overlay; // Chromium: scrollbar overlays content, doesn't reduce width
69
+ overflow-x: visible; // Allow tooltips to escape (right in LTR, left in RTL)
70
+ }
71
+
72
+ // Sidebar component (separate BEM block)
73
+ .pa-sidebar {
74
+ &__nav {
75
+ padding: $spacing-base 0;
76
+
77
+ ul {
78
+ list-style: none;
79
+ margin: 0;
80
+ padding: 0;
81
+ }
82
+ }
83
+
84
+ &__item {
85
+ // Base styles for all sidebar items (regular links and submenu toggles)
86
+ }
87
+
88
+ &__link {
89
+ display: flex;
90
+ align-items: center;
91
+ gap: $sidebar-item-gap;
92
+ padding: $sidebar-padding;
93
+ color: var(--pa-sidebar-text-secondary);
94
+ text-decoration: none;
95
+ font-weight: $font-weight-medium;
96
+ border-inline-end: $border-width-thick solid transparent; // RTL: flips to border-left
97
+
98
+ body.loaded & {
99
+ transition: all $transition-fast $easing-snappy;
100
+ }
101
+
102
+ &:hover {
103
+ color: var(--pa-sidebar-text);
104
+ background-color: var(--pa-accent-light);
105
+ }
106
+
107
+ &--active {
108
+ color: var(--pa-accent);
109
+ background-color: var(--pa-accent-hover);
110
+ border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
111
+ font-weight: $font-weight-semibold;
112
+ }
113
+ }
114
+
115
+ &__toggle {
116
+ // For submenu toggle buttons (non-link items)
117
+ display: flex;
118
+ align-items: center;
119
+ gap: $sidebar-item-gap;
120
+ padding: $sidebar-padding;
121
+ color: var(--pa-sidebar-text-secondary);
122
+ background: none;
123
+ border: none;
124
+ width: 100%;
125
+ text-align: start; // RTL: flips to right
126
+ font-weight: $font-weight-medium;
127
+ cursor: pointer;
128
+
129
+ body.loaded & {
130
+ transition: all $transition-fast $easing-snappy;
131
+ }
132
+
133
+ &:hover {
134
+ color: var(--pa-sidebar-text);
135
+ background-color: var(--pa-accent-light);
136
+ }
137
+
138
+ &--active {
139
+ color: var(--pa-accent);
140
+ background-color: var(--pa-accent-hover);
141
+ }
142
+ }
143
+
144
+ // Icon and label styles
145
+ &__icon {
146
+ width: $sidebar-icon-size;
147
+ min-width: $sidebar-icon-size;
148
+ height: $sidebar-icon-size;
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ flex-shrink: 0;
153
+ font-size: $font-size-base;
154
+ text-align: center;
155
+ line-height: 1; // Prevent emoji baseline shift
156
+ }
157
+
158
+ &__label {
159
+ flex: 1;
160
+ overflow: hidden;
161
+ text-overflow: ellipsis;
162
+ white-space: nowrap;
163
+
164
+ body.loaded & {
165
+ transition: opacity $transition-normal $easing-snappy, width $transition-normal $easing-snappy;
166
+ }
167
+ }
168
+
169
+ // Submenu styles - Level 2
170
+ &__submenu {
171
+ list-style: none;
172
+ margin: 0;
173
+ padding: 0;
174
+ display: none;
175
+ background-color: var(--pa-sidebar-submenu-bg);
176
+
177
+ &--open {
178
+ display: block;
179
+ }
180
+ }
181
+
182
+ // Level 2 submenu links
183
+ &__submenu > &__item > &__link {
184
+ padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
185
+ font-size: $font-size-md;
186
+ border-inline-end: $border-width-medium solid transparent; // RTL: flips to border-left
187
+
188
+ &:hover {
189
+ background-color: var(--pa-sidebar-submenu-hover-bg);
190
+ }
191
+
192
+ &--active {
193
+ background-color: var(--pa-sidebar-submenu-active-bg);
194
+ border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
195
+ }
196
+ }
197
+
198
+ // Level 2 submenu toggles (for third level)
199
+ &__submenu > &__item > &__toggle {
200
+ padding-inline-start: $sidebar-submenu-indent; // RTL: flips to padding-right
201
+ font-size: $font-size-md;
202
+ }
203
+
204
+ // Level 3 submenu links
205
+ &__submenu &__submenu > &__item > &__link {
206
+ padding-inline-start: calc($sidebar-submenu-indent * $sidebar-submenu-indent-multiplier); // RTL: flips
207
+ font-size: $font-size-sm;
208
+ border-inline-end: $border-width-base solid transparent; // RTL: flips to border-left
209
+
210
+ &--active {
211
+ border-inline-end-color: var(--pa-accent); // RTL: flips to border-left-color
212
+ }
213
+ }
214
+
215
+ // Chevron icon for toggle buttons
216
+ &__chevron {
217
+ margin-inline-start: auto; // RTL: flips to margin-right: auto
218
+ font-size: $font-size-xs;
219
+
220
+ body.loaded & {
221
+ transition: transform $transition-fast $easing-snappy;
222
+ }
223
+
224
+ // Chevron points right (›) in LTR, left (‹) in RTL
225
+ // When open, rotates 90deg clockwise in LTR, -90deg (counter-clockwise) in RTL
226
+ .pa-sidebar__item--open & {
227
+ transform: rotate(90deg);
228
+ }
229
+
230
+ [dir="rtl"] .pa-sidebar__item--open & {
231
+ transform: rotate(-90deg);
232
+ }
233
+ }
234
+ }
@@ -1,7 +1,7 @@
1
- /* Pure Admin Visual Framework - Main Entry Point */
2
-
3
- // Utilities (spacing, etc.)
4
- @use "utilities" as *;
5
-
6
- // Core framework (includes variables and all core-components)
7
- @use 'core' as *;
1
+ /* Pure Admin Visual Framework - Main Entry Point */
2
+
3
+ // Utilities (spacing, etc.)
4
+ @use "utilities" as *;
5
+
6
+ // Core framework (includes variables and all core-components)
7
+ @use 'core' as *;