@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,241 @@
1
+ /* ========================================
2
+ Utility Components
3
+ Font utilities, compact mode, component showcase
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ // Font size classes - Apply to <html> element for proportional scaling of all rem units
8
+ // Example: document.documentElement.classList.add('font-size-large');
9
+ html.font-size-2xs {
10
+ font-size: $font-size-2xs;
11
+ }
12
+
13
+ html.font-size-xs {
14
+ font-size: $font-size-xs;
15
+ }
16
+
17
+ html.font-size-small {
18
+ font-size: $font-size-sm;
19
+ }
20
+
21
+ html.font-size-medium {
22
+ font-size: $font-size-md;
23
+ }
24
+
25
+ html.font-size-default {
26
+ font-size: $font-size-base;
27
+ }
28
+
29
+ html.font-size-large {
30
+ font-size: $font-size-lg;
31
+ }
32
+
33
+ html.font-size-xlarge {
34
+ font-size: $font-size-xl;
35
+ }
36
+
37
+ html.font-size-2xl {
38
+ font-size: $font-size-2xl;
39
+ }
40
+
41
+ html.font-size-3xl {
42
+ font-size: $font-size-3xl;
43
+ }
44
+
45
+ html.font-size-4xl {
46
+ font-size: $font-size-4xl;
47
+ }
48
+
49
+ // Font family utilities
50
+ // Only for overriding the theme's default font
51
+ .font-family-serif {
52
+ font-family: $font-stack-serif;
53
+ }
54
+
55
+ .font-family-mono {
56
+ font-family: $font-stack-mono;
57
+ }
58
+
59
+ // Compact mode
60
+ .compact-mode {
61
+ .pa-card__body {
62
+ padding: $spacing-md;
63
+ }
64
+
65
+ .pa-table td,
66
+ .pa-table th {
67
+ padding: $btn-padding-v $btn-padding-h;
68
+ }
69
+
70
+ .pa-sidebar__nav ul li a {
71
+ padding: $sidebar-padding;
72
+ }
73
+
74
+ .pa-form-group {
75
+ margin-bottom: $form-group-margin-compact;
76
+ }
77
+ }
78
+
79
+
80
+ // Min-height utilities (rem-based)
81
+ .min-h-2x { min-height: 2rem; } // 32px
82
+ .min-h-3x { min-height: 3rem; } // 48px
83
+ .min-h-5x { min-height: 5rem; } // 80px
84
+ .min-h-8x { min-height: 8rem; } // 128px
85
+ .min-h-10x { min-height: 10rem; } // 160px
86
+ .min-h-12x { min-height: 12rem; } // 192px
87
+ .min-h-15x { min-height: 15rem; } // 240px
88
+ .min-h-20x { min-height: 20rem; } // 320px
89
+ .min-h-25x { min-height: 25rem; } // 400px
90
+ .min-h-30x { min-height: 30rem; } // 480px
91
+
92
+ // Fixed height utilities (rem-based) - for scrollable containers
93
+ .h-2x { height: 2rem; } // 32px
94
+ .h-3x { height: 3rem; } // 48px
95
+ .h-5x { height: 5rem; } // 80px
96
+ .h-8x { height: 8rem; } // 128px
97
+ .h-10x { height: 10rem; } // 160px
98
+ .h-12x { height: 12rem; } // 192px
99
+ .h-15x { height: 15rem; } // 240px
100
+ .h-20x { height: 20rem; } // 320px
101
+ .h-25x { height: 25rem; } // 400px
102
+ .h-30x { height: 30rem; } // 480px
103
+ .h-40x { height: 40rem; } // 640px
104
+ .h-50x { height: 50rem; } // 800px
105
+
106
+ // Max-height utilities (rem-based) - useful for limiting content height
107
+ .max-h-5x { max-height: 5rem; } // 80px
108
+ .max-h-8x { max-height: 8rem; } // 128px
109
+ .max-h-10x { max-height: 10rem; } // 160px
110
+ .max-h-12x { max-height: 12rem; } // 192px
111
+ .max-h-15x { max-height: 15rem; } // 240px
112
+ .max-h-20x { max-height: 20rem; } // 320px
113
+ .max-h-25x { max-height: 25rem; } // 400px
114
+ .max-h-30x { max-height: 30rem; } // 480px
115
+ .max-h-40x { max-height: 40rem; } // 640px
116
+ .max-h-50x { max-height: 50rem; } // 800px
117
+
118
+ // Overflow utilities - pair with height/max-height for scrollable content
119
+ .overflow-auto { overflow: auto; }
120
+ .overflow-y-auto { overflow-y: auto; }
121
+ .overflow-x-auto { overflow-x: auto; }
122
+ .overflow-hidden { overflow: hidden; }
123
+ .overflow-visible { overflow: visible; }
124
+
125
+ // Cursor utilities
126
+ .cursor-pointer { cursor: pointer; }
127
+ .cursor-help { cursor: help; }
128
+ .cursor-wait { cursor: wait; }
129
+ .cursor-not-allowed { cursor: not-allowed; }
130
+ .cursor-text { cursor: text; }
131
+ .cursor-move { cursor: move; }
132
+ .cursor-default { cursor: default; }
133
+ .cursor-grab { cursor: grab; }
134
+ .cursor-grabbing { cursor: grabbing; }
135
+ .cursor-zoom-in { cursor: zoom-in; }
136
+ .cursor-zoom-out { cursor: zoom-out; }
137
+
138
+ // ========================================
139
+ // Text Component (BEM pattern)
140
+ // For paragraph typography across pages
141
+ // ========================================
142
+ .pa-text {
143
+ font-size: $font-size-sm; // 1.4rem (14px) - default
144
+ color: var(--pa-text-primary);
145
+
146
+ // Size modifiers
147
+ &--xs {
148
+ font-size: $font-size-2xs; // 1rem (10px)
149
+ }
150
+
151
+ &--sm {
152
+ font-size: $font-size-xs; // 1.2rem (12px)
153
+ }
154
+
155
+ &--lg {
156
+ font-size: $font-size-base; // 1.6rem (16px)
157
+ }
158
+
159
+ &--xl {
160
+ font-size: $font-size-lg; // 1.8rem (18px)
161
+ }
162
+
163
+ // Color modifiers
164
+ &--primary {
165
+ color: var(--pa-text-primary);
166
+ }
167
+
168
+ &--secondary {
169
+ color: var(--pa-text-secondary);
170
+ }
171
+
172
+ // Alignment modifiers
173
+ &--left {
174
+ text-align: left;
175
+ }
176
+
177
+ &--center {
178
+ text-align: center;
179
+ }
180
+
181
+ &--right {
182
+ text-align: right;
183
+ }
184
+
185
+ // Semantic variants (compound styles)
186
+ &--caption {
187
+ font-size: $font-size-xs;
188
+ color: var(--pa-text-secondary);
189
+ margin-bottom: $spacing-sm;
190
+ }
191
+
192
+ &--lead {
193
+ font-size: $font-size-base;
194
+ line-height: $line-height-relaxed;
195
+ }
196
+ }
197
+
198
+ // Component showcase styling
199
+ .component-showcase {
200
+ display: flex;
201
+ flex-wrap: wrap;
202
+ gap: $spacing-sm;
203
+ margin-bottom: $spacing-lg;
204
+ }
205
+
206
+ // Usage example styling
207
+ .usage-example {
208
+ .user-item,
209
+ .project-item {
210
+ display: flex;
211
+ align-items: center;
212
+ justify-content: space-between;
213
+ padding: $spacing-md;
214
+ margin-bottom: $spacing-sm;
215
+ background-color: var(--pa-card-bg);
216
+ border: $border-width-base solid var(--pa-border-color);
217
+ border-radius: $border-radius;
218
+
219
+ .user-name {
220
+ font-weight: $font-weight-medium;
221
+ }
222
+
223
+ h5 {
224
+ margin: 0 0 $spacing-sm 0;
225
+ font-size: $font-size-base;
226
+ font-weight: $font-weight-semibold;
227
+ }
228
+
229
+ .project-tags {
230
+ display: flex;
231
+ flex-wrap: wrap;
232
+ gap: $spacing-xs;
233
+ }
234
+ }
235
+
236
+ .project-item {
237
+ flex-direction: column;
238
+ align-items: flex-start;
239
+ }
240
+ }
241
+
@@ -0,0 +1,294 @@
1
+ /* Pure Admin - Web Components Theme Integration
2
+ * Maps Pure Admin SCSS variables to web component CSS custom properties
3
+ *
4
+ * @keenmate/web-multiselect: Uses --base-* variables from _base-css-variables.scss
5
+ * @keenmate/web-daterangepicker: Uses --drp-* variables defined below
6
+ */
7
+ @use '../variables' as *;
8
+ /*
9
+ */
10
+
11
+ /* ========================================
12
+ Date Range Picker Variables (--drp-*)
13
+ v1.3.0+ Semantic Variable Architecture
14
+
15
+ NOTE: Variables set directly on web-daterangepicker
16
+ element to pierce shadow DOM (custom properties
17
+ cascade into shadow DOM when set on host element)
18
+ ======================================== */
19
+
20
+ web-daterangepicker {
21
+ /* ===== BASE PRIMITIVES ===== */
22
+
23
+ /* Colors */
24
+ --drp-accent-color: #{$accent-color};
25
+ --drp-primary-bg: #{$btn-primary-bg};
26
+ --drp-primary-bg-hover: #{$btn-primary-bg-hover};
27
+ --drp-text-primary: var(--pa-text-primary);
28
+ --drp-text-secondary: var(--pa-text-secondary);
29
+ --drp-border-color: #{$border-color};
30
+ --drp-card-bg: var(--pa-card-bg);
31
+ --drp-hover-bg: #{$table-hover-bg};
32
+
33
+ /* Spacing */
34
+ --drp-spacing-xs: #{$spacing-xs};
35
+ --drp-spacing-sm: #{$spacing-sm};
36
+ --drp-spacing-md: #{$spacing-md};
37
+ --drp-spacing-base: #{$spacing-base};
38
+ --drp-spacing-lg: #{$spacing-lg};
39
+ --drp-spacing-xl: #{$spacing-xl};
40
+
41
+ /* Typography */
42
+ --drp-font-size-xs: #{$font-size-xs};
43
+ --drp-font-size-sm: #{$font-size-sm};
44
+ --drp-font-size-base: #{$font-size-base};
45
+ --drp-font-size-lg: #{$font-size-lg};
46
+ --drp-font-weight-normal: #{$font-weight-normal};
47
+ --drp-font-weight-medium: #{$font-weight-medium};
48
+ --drp-font-weight-semibold: #{$font-weight-semibold};
49
+
50
+ /* Animations */
51
+ --drp-transition-fast: #{$transition-fast};
52
+ --drp-transition-normal: #{$transition-normal};
53
+ --drp-easing-snappy: #{$easing-snappy};
54
+ --drp-easing-smooth: #{$easing-smooth};
55
+
56
+ /* Shadows */
57
+ --drp-shadow-sm: #{$shadow-sm};
58
+ --drp-shadow-md: #{$shadow-md};
59
+ --drp-shadow-lg: #{$shadow-lg};
60
+ --drp-shadow-xl: #{$shadow-xl};
61
+
62
+ /* Border radius */
63
+ --drp-border-radius: #{$border-radius};
64
+ --drp-border-radius-sm: #{$border-radius-sm};
65
+ --drp-border-radius-lg: #{$border-radius-lg};
66
+
67
+ /* Border width */
68
+ --drp-border-width-base: #{$border-width-base};
69
+ --drp-border-width-medium: #{$border-width-medium};
70
+
71
+ /* ===== INPUT FIELD SEMANTIC VARIABLES ===== */
72
+
73
+ /* Input colors */
74
+ --drp-input-background: var(--pa-input-bg);
75
+ --drp-input-color: var(--pa-text-primary);
76
+ --drp-input-border-color: #{$input-border};
77
+ --drp-input-border-color-hover: #{$accent-color};
78
+ --drp-input-border-color-focus: #{$accent-color};
79
+ --drp-input-placeholder-color: var(--pa-text-secondary);
80
+ --drp-input-disabled-background: var(--pa-input-bg);
81
+ --drp-input-disabled-color: var(--pa-text-secondary);
82
+
83
+ /* Input focus effects */
84
+ --drp-input-focus-shadow-color: #{$accent-light};
85
+ --drp-input-focus-shadow-size: #{$focus-ring-width};
86
+
87
+ /* Input icon */
88
+ --drp-input-icon-color: var(--pa-text-secondary);
89
+ --drp-input-icon-opacity: 1;
90
+
91
+ /* Input size variants - matched to Pure Admin .pa-input sizes (10px base)
92
+ Heights: xs=31px, sm=33px, md=35px, lg=38px, xl=41px */
93
+
94
+ /* Extra Small (31px) */
95
+ --drp-input-size-xs-font: #{$font-size-xs};
96
+ --drp-input-size-xs-padding-v: #{$input-padding-v};
97
+ --drp-input-size-xs-padding-h: #{$input-padding-h};
98
+ --drp-input-size-xs-height: 3.1rem; /* 31px (10px base) */
99
+ --drp-input-size-xs-icon-size: 1.2rem; /* 12px (10px base) */
100
+
101
+ /* Small (33px - same height as xs, slightly larger icon) */
102
+ --drp-input-size-sm-font: #{$font-size-xs};
103
+ --drp-input-size-sm-padding-v: #{$input-padding-v};
104
+ --drp-input-size-sm-padding-h: #{$input-padding-h};
105
+ --drp-input-size-sm-height: 3.3rem; /* 33px (10px base) */
106
+ --drp-input-size-sm-icon-size: 1.4rem; /* 14px (10px base) */
107
+
108
+ /* Medium/Default (maps to pa-input: 35px) */
109
+ --drp-input-size-md-font: #{$font-size-sm};
110
+ --drp-input-size-md-padding-v: #{$input-padding-v};
111
+ --drp-input-size-md-padding-h: #{$input-padding-h};
112
+ --drp-input-size-md-height: 3.5rem; /* 35px (10px base) */
113
+ --drp-input-size-md-icon-size: 1.6rem; /* 16px (10px base) */
114
+
115
+ /* Large (maps to pa-input--lg: 38px) */
116
+ --drp-input-size-lg-font: #{$font-size-base};
117
+ --drp-input-size-lg-padding-v: #{$input-padding-v};
118
+ --drp-input-size-lg-padding-h: #{$input-padding-h};
119
+ --drp-input-size-lg-height: 3.8rem; /* 38px (10px base) */
120
+ --drp-input-size-lg-icon-size: 1.8rem; /* 18px (10px base) */
121
+
122
+ /* Extra Large (maps to pa-input--xl: 41px) */
123
+ --drp-input-size-xl-font: #{$font-size-lg};
124
+ --drp-input-size-xl-padding-v: #{$input-padding-v};
125
+ --drp-input-size-xl-padding-h: #{$input-padding-h};
126
+ --drp-input-size-xl-height: 4.1rem; /* 41px (10px base) */
127
+ --drp-input-size-xl-icon-size: 2rem; /* 20px (10px base) */
128
+
129
+ /* ===== CALENDAR CONTAINER ===== */
130
+
131
+ --drp-calendar-bg: var(--pa-card-bg);
132
+ --drp-calendar-border: #{$border-color};
133
+ --drp-calendar-shadow: #{$shadow-xl};
134
+ --drp-calendar-border-radius: #{$border-radius};
135
+ --drp-calendar-padding: #{$spacing-base};
136
+ --drp-calendar-z-index: #{$z-index-dropdown};
137
+
138
+ /* ===== HEADER ===== */
139
+
140
+ --drp-header-padding: #{$spacing-sm} #{$spacing-md};
141
+ --drp-header-font-size: #{$font-size-base};
142
+ --drp-header-font-weight: #{$font-weight-semibold};
143
+ --drp-header-text-color: var(--pa-text-primary);
144
+ --drp-header-bg-hover: #{$accent-hover};
145
+ --drp-header-bg-active: #{$accent-light};
146
+
147
+ /* ===== NAVIGATION ===== */
148
+
149
+ --drp-nav-btn-size: 3.2rem; /* 32px (10px base) */
150
+ --drp-nav-text-color: var(--pa-text-primary);
151
+ --drp-nav-border-color: #{$border-color};
152
+ --drp-nav-bg-hover: #{$accent-hover};
153
+ --drp-nav-bg-active: #{$accent-light};
154
+ --drp-nav-border-hover: #{$accent-color};
155
+
156
+ /* ===== WEEKDAY HEADER ===== */
157
+
158
+ --drp-weekday-font-size: #{$font-size-xs};
159
+ --drp-weekday-font-weight: #{$font-weight-semibold};
160
+ --drp-weekday-color: var(--pa-text-secondary);
161
+ --drp-weekday-padding: #{$spacing-xs};
162
+
163
+ /* ===== CALENDAR GRID ===== */
164
+
165
+ --drp-day-size: 3.6rem; /* 36px (10px base) */
166
+ --drp-day-font-size: #{$font-size-sm};
167
+ --drp-day-border-radius: #{$border-radius-sm};
168
+
169
+ /* Day states */
170
+ --drp-day-text-color: var(--pa-text-primary);
171
+ --drp-day-bg-hover: #{$accent-hover};
172
+ --drp-day-border-hover: transparent;
173
+
174
+ /* Today indicator */
175
+ --drp-day-today-border: #{$accent-color};
176
+
177
+ /* Selected state */
178
+ --drp-day-selected-bg: #{$accent-color};
179
+ --drp-day-selected-color: #ffffff;
180
+
181
+ /* Range state */
182
+ --drp-day-range-bg: #{$accent-light};
183
+ --drp-day-range-text: var(--pa-text-primary);
184
+
185
+ /* Focused state */
186
+ --drp-day-focused-outline: #{$accent-color};
187
+
188
+ /* Disabled state */
189
+ --drp-day-disabled-color: var(--pa-text-secondary);
190
+ --drp-day-disabled-opacity: #{$opacity-disabled};
191
+
192
+ /* Other month */
193
+ --drp-day-other-month-color: var(--pa-text-secondary);
194
+ --drp-day-other-month-opacity: #{$opacity-muted};
195
+
196
+ /* ===== BADGES ===== */
197
+
198
+ /* Dot badges (original style) */
199
+ --drp-badge-size: 0.6rem; /* 6px (10px base) */
200
+ --drp-badge-primary: #{$btn-primary-bg};
201
+ --drp-badge-success: #{$success-bg};
202
+ --drp-badge-warning: #{$warning-bg};
203
+ --drp-badge-danger: #{$danger-bg};
204
+ --drp-badge-info: #{$info-bg};
205
+
206
+ /* Number badges */
207
+ --drp-badge-number-bg: #{$danger-bg};
208
+ --drp-badge-number-color: #ffffff;
209
+
210
+ /* Count badges */
211
+ --drp-badge-count-bg: #{$accent-color};
212
+ --drp-badge-count-color: #ffffff;
213
+
214
+ /* Text badges */
215
+ --drp-badge-text-bg: #{$accent-light};
216
+ --drp-badge-text-color: var(--pa-text-primary);
217
+
218
+ /* ===== SUMMARY BAR ===== */
219
+
220
+ --drp-summary-bg: #{$card-header-bg};
221
+ --drp-summary-border-color: #{$border-color};
222
+ --drp-summary-text-color: var(--pa-text-primary);
223
+ --drp-summary-count-color: #{$accent-color};
224
+ --drp-summary-padding: #{$spacing-sm} #{$spacing-md};
225
+ --drp-summary-font-size: #{$font-size-sm};
226
+ --drp-summary-font-weight: #{$font-weight-medium};
227
+
228
+ /* ===== BUTTONS ===== */
229
+
230
+ /* Today button */
231
+ --drp-button-today-bg: #{$btn-secondary-bg};
232
+ --drp-button-today-bg-hover: #{$btn-secondary-bg-hover};
233
+ --drp-button-today-color: #{$btn-secondary-text};
234
+ --drp-button-today-border: #{$border-color};
235
+
236
+ /* Clear button */
237
+ --drp-button-clear-bg: #{$btn-secondary-bg};
238
+ --drp-button-clear-bg-hover: #{$btn-secondary-bg-hover};
239
+ --drp-button-clear-color: #{$btn-secondary-text};
240
+ --drp-button-clear-border: #{$border-color};
241
+
242
+ /* Cancel button */
243
+ --drp-button-cancel-bg: #{$btn-secondary-bg};
244
+ --drp-button-cancel-bg-hover: #{$btn-secondary-bg-hover};
245
+ --drp-button-cancel-color: #{$btn-secondary-text};
246
+ --drp-button-cancel-border: #{$border-color};
247
+
248
+ /* Apply button */
249
+ --drp-button-apply-bg: #{$btn-primary-bg};
250
+ --drp-button-apply-bg-hover: #{$btn-primary-bg-hover};
251
+ --drp-button-apply-color: #{$btn-primary-text};
252
+ --drp-button-apply-border: #{$btn-primary-bg};
253
+
254
+ /* Button sizing */
255
+ --drp-button-padding: #{$btn-padding-sm-v} #{$btn-padding-sm-h};
256
+ --drp-button-font-size: #{$font-size-sm};
257
+ --drp-button-border-radius: #{$border-radius};
258
+ --drp-button-gap: #{$spacing-sm};
259
+
260
+ /* ===== UNIFIED NAVIGATION ===== */
261
+
262
+ /* Range selectors in unified nav */
263
+ --drp-unified-range-text-color: var(--pa-text-primary);
264
+ --drp-unified-range-bg-hover: #{$accent-hover};
265
+ --drp-unified-range-bg-active: #{$accent-light};
266
+
267
+ /* Month/Year display */
268
+ --drp-unified-month-color: var(--pa-text-primary);
269
+
270
+ /* Rolling selector disabled state */
271
+ --drp-unified-rolling-disabled-color: var(--pa-text-secondary);
272
+
273
+ /* ===== ROLLING SELECTOR ===== */
274
+
275
+ --drp-rolling-bg: var(--pa-card-bg);
276
+ --drp-rolling-border: #{$border-color};
277
+ --drp-rolling-shadow: #{$shadow-md};
278
+ --drp-rolling-item-hover-bg: #{$accent-hover};
279
+ --drp-rolling-item-selected-bg: #{$accent-color};
280
+ --drp-rolling-item-selected-text: #ffffff;
281
+ --drp-rolling-font-size: #{$font-size-sm};
282
+ --drp-rolling-item-text-color: var(--pa-text-primary);
283
+ --drp-rolling-item-disabled-color: var(--pa-text-secondary);
284
+
285
+ /* ===== LOADING OVERLAY ===== */
286
+
287
+ --drp-loading-bg: rgba(255, 255, 255, 0.8);
288
+ --drp-loading-spinner-color: #{$accent-color};
289
+ --drp-loading-spinner-size: #{$spinner-size};
290
+
291
+ /* ===== MULTIPLE MONTHS ===== */
292
+
293
+ --drp-months-gap: #{$spacing-lg};
294
+ }
@@ -0,0 +1,131 @@
1
+ /* ========================================
2
+ Badge Base
3
+ Core badge component with sizes, colors, and modifiers
4
+ ======================================== */
5
+ @use '../../variables' as *;
6
+
7
+ // Badge Components
8
+ .pa-badge {
9
+ display: inline-flex;
10
+ align-items: center;
11
+ gap: $spacing-xs;
12
+ padding: $spacing-xs $spacing-sm;
13
+ background-color: var(--pa-btn-secondary-bg);
14
+ color: var(--pa-btn-secondary-text);
15
+ font-size: $font-size-xs;
16
+ font-weight: $font-weight-semibold;
17
+ line-height: 1;
18
+ text-align: center;
19
+ white-space: nowrap;
20
+ vertical-align: baseline;
21
+ border-radius: $border-radius;
22
+ border: $border-width-base solid transparent;
23
+ transition: all $transition-fast $easing-snappy;
24
+
25
+ &__icon {
26
+ font-size: $font-size-2xs;
27
+ line-height: 1;
28
+ }
29
+
30
+ // Size variations
31
+ &--xs {
32
+ padding: 0.2rem 0.4rem;
33
+ font-size: $font-size-2xs; // 1rem (10px)
34
+ }
35
+
36
+ &--sm {
37
+ padding: 0.25rem 0.5rem;
38
+ font-size: $font-size-xs; // 1.2rem (12px)
39
+ }
40
+
41
+ &--lg {
42
+ padding: 0.5rem 1rem;
43
+ font-size: $font-size-sm; // 1.4rem (14px)
44
+ }
45
+
46
+ &--xl {
47
+ padding: 0.6rem 1.2rem;
48
+ font-size: $font-size-base; // 1.6rem (16px)
49
+ }
50
+
51
+ // Shape variations
52
+ &--pill {
53
+ border-radius: $badge-pill-radius;
54
+ }
55
+
56
+ // Color variations
57
+ &--primary {
58
+ background-color: var(--pa-btn-primary-bg);
59
+ color: var(--pa-btn-primary-text);
60
+ border-color: var(--pa-btn-primary-bg);
61
+ }
62
+
63
+ &--secondary {
64
+ background-color: var(--pa-btn-secondary-bg);
65
+ color: var(--pa-btn-secondary-text);
66
+ border-color: var(--pa-btn-secondary-bg);
67
+ }
68
+
69
+ &--success {
70
+ background-color: var(--pa-btn-success-bg);
71
+ color: var(--pa-btn-success-text);
72
+ border-color: var(--pa-btn-success-bg);
73
+ }
74
+
75
+ &--warning {
76
+ background-color: var(--pa-btn-warning-bg);
77
+ color: var(--pa-btn-warning-text);
78
+ border-color: var(--pa-btn-warning-bg);
79
+ }
80
+
81
+ &--danger {
82
+ background-color: var(--pa-btn-danger-bg);
83
+ color: var(--pa-btn-danger-text);
84
+ border-color: var(--pa-btn-danger-bg);
85
+ }
86
+
87
+ &--info {
88
+ background-color: var(--pa-btn-info-bg);
89
+ color: var(--pa-btn-info-text);
90
+ border-color: var(--pa-btn-info-bg);
91
+ }
92
+
93
+ &--light {
94
+ background-color: var(--pa-btn-light-bg);
95
+ color: var(--pa-btn-light-text);
96
+ border-color: var(--pa-btn-light-bg);
97
+ }
98
+
99
+ &--dark {
100
+ background-color: var(--pa-btn-dark-bg);
101
+ color: var(--pa-btn-dark-text);
102
+ border-color: var(--pa-btn-dark-bg);
103
+ }
104
+
105
+ // Fixed-width badges with ellipsis
106
+ &--w-1x { min-width: 1.6rem; max-width: 1.6rem; }
107
+ &--w-2x { min-width: 3.2rem; max-width: 3.2rem; }
108
+ &--w-3x { min-width: 4.8rem; max-width: 4.8rem; }
109
+ &--w-4x { min-width: 6.4rem; max-width: 6.4rem; }
110
+ &--w-5x { min-width: 8rem; max-width: 8rem; }
111
+ &--w-6x { min-width: 9.6rem; max-width: 9.6rem; }
112
+ &--w-7x { min-width: 11.2rem; max-width: 11.2rem; }
113
+ &--w-8x { min-width: 12.8rem; max-width: 12.8rem; }
114
+ &--w-9x { min-width: 14.4rem; max-width: 14.4rem; }
115
+ &--w-10x { min-width: 16rem; max-width: 16rem; }
116
+
117
+ // Apply ellipsis to fixed-width badges
118
+ &[class*="--w-"] {
119
+ display: inline-block;
120
+ overflow: hidden;
121
+ text-overflow: ellipsis;
122
+ white-space: nowrap;
123
+ vertical-align: middle;
124
+ }
125
+
126
+ // Left-side ellipsis for paths/hierarchies where end is important
127
+ &--ellipsis-left {
128
+ direction: rtl;
129
+ text-align: left;
130
+ }
131
+ }
@@ -0,0 +1,25 @@
1
+ /* ========================================
2
+ Badge Group
3
+ Container for grouped badges with visibility limits
4
+ ======================================== */
5
+ @use '../../variables' as *;
6
+
7
+ // Badge Group - limits visible badges and shows "more" indicator
8
+ .pa-badge-group {
9
+ display: inline-flex;
10
+ flex-wrap: wrap;
11
+ align-items: center;
12
+ gap: $badge-group-gap;
13
+
14
+ // Hide badges beyond the limit
15
+ .pa-badge:nth-child(n+#{$badge-group-visible-limit + 1}):not(:last-child) {
16
+ display: none;
17
+ }
18
+
19
+ // Show all badges without limit
20
+ &--show-all {
21
+ .pa-badge:nth-child(n+#{$badge-group-visible-limit + 1}):not(:last-child) {
22
+ display: inline-flex;
23
+ }
24
+ }
25
+ }