@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,518 @@
1
+ /* ========================================
2
+ Command Palette Component
3
+ macOS Spotlight-style search with context switching
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ .pa-command-palette {
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ right: 0;
12
+ bottom: 0;
13
+ z-index: $z-index-command-palette;
14
+ display: none;
15
+ align-items: flex-start;
16
+ justify-content: center;
17
+ padding-top: $command-palette-offset-top;
18
+
19
+ &--active {
20
+ display: flex;
21
+ }
22
+
23
+ // Backdrop overlay
24
+ &__backdrop {
25
+ position: absolute;
26
+ top: 0;
27
+ left: 0;
28
+ right: 0;
29
+ bottom: 0;
30
+ background-color: var(--pa-command-palette-backdrop-bg);
31
+ backdrop-filter: blur($command-palette-backdrop-blur);
32
+ animation: fadeIn $transition-normal $easing-smooth;
33
+ }
34
+
35
+ // Main container
36
+ &__container {
37
+ position: relative;
38
+ width: 100%;
39
+ max-width: $command-palette-width;
40
+ background-color: var(--pa-modal-content-bg);
41
+ border-radius: $command-palette-border-radius;
42
+ box-shadow: $command-palette-shadow;
43
+ animation: slideDown $transition-normal $easing-smooth;
44
+ overflow: hidden;
45
+ }
46
+
47
+ // Search input wrapper
48
+ &__search {
49
+ position: relative;
50
+ border-bottom: $border-width-base solid var(--pa-border-color);
51
+ padding: $spacing-sm;
52
+ }
53
+
54
+ // Tokens container (resolved query fragments)
55
+ &__tokens {
56
+ display: flex;
57
+ flex-wrap: wrap;
58
+ gap: $spacing-xs;
59
+ align-items: center;
60
+
61
+ .pa-badge {
62
+ display: inline-flex;
63
+ align-items: center;
64
+ margin: 0;
65
+
66
+ // Remove button inside badge
67
+ &__remove {
68
+ margin-left: $spacing-xs;
69
+ padding: 0 $spacing-xs;
70
+ border: none;
71
+ background: transparent;
72
+ color: inherit;
73
+ cursor: pointer;
74
+ font-size: 1.2em;
75
+ line-height: 1;
76
+ opacity: 0.7;
77
+ transition: opacity $transition-fast $easing-smooth;
78
+
79
+ &:hover {
80
+ opacity: 1;
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ &__input {
87
+ width: 100%;
88
+ height: $command-palette-input-height;
89
+ padding: $command-palette-input-padding-v $command-palette-input-padding-h;
90
+ font-size: $command-palette-input-font-size;
91
+ border: $border-width-base solid var(--pa-border-color);
92
+ border-radius: $border-radius;
93
+ background-color: var(--pa-input-bg);
94
+ color: var(--pa-text-primary);
95
+ outline: none;
96
+ transition: border-color $transition-fast $easing-snappy;
97
+
98
+ &:focus {
99
+ border-color: $input-focus-border-color;
100
+ box-shadow: 0 0 0 $focus-ring-width $accent-light;
101
+ }
102
+
103
+ &::placeholder {
104
+ color: var(--pa-text-secondary);
105
+ opacity: $opacity-muted;
106
+ }
107
+ }
108
+
109
+ // Context label (e.g., "Searching in Products")
110
+ &__context {
111
+ position: absolute;
112
+ right: calc(#{$spacing-sm} + #{$command-palette-input-padding-h});
113
+ top: 50%;
114
+ transform: translateY(-50%);
115
+ font-size: $font-size-xs;
116
+ color: var(--pa-accent);
117
+ font-weight: $font-weight-medium;
118
+ padding: $spacing-xs $spacing-sm;
119
+ background-color: var(--pa-accent-light);
120
+ border-radius: $border-radius-sm;
121
+ opacity: 0;
122
+ transition: opacity $transition-fast $easing-smooth;
123
+
124
+ &--visible {
125
+ opacity: 1;
126
+ }
127
+ }
128
+
129
+ // Results container
130
+ &__results {
131
+ max-height: $command-palette-results-max-height;
132
+ overflow-y: auto;
133
+ padding: $spacing-sm 0;
134
+ position: relative;
135
+
136
+ // Loading state - show subtle opacity overlay
137
+ &--loading {
138
+ &::after {
139
+ content: '';
140
+ position: absolute;
141
+ top: 0;
142
+ left: 0;
143
+ right: 0;
144
+ bottom: 0;
145
+ background-color: rgba($modal-content-bg, 0.7);
146
+ pointer-events: none;
147
+ z-index: 1;
148
+ }
149
+ }
150
+ }
151
+
152
+ // Empty state
153
+ &__empty {
154
+ padding: $command-palette-empty-padding-v $command-palette-input-padding-h;
155
+ text-align: center;
156
+ color: var(--pa-text-secondary);
157
+ font-size: $font-size-sm;
158
+ }
159
+
160
+ // Loader
161
+ &__loader {
162
+ padding: $command-palette-empty-padding-v $command-palette-input-padding-h;
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ gap: $spacing-sm;
167
+ color: var(--pa-text-secondary);
168
+ font-size: $font-size-sm;
169
+
170
+ .pa-spinner {
171
+ width: $spacing-base;
172
+ height: $spacing-base;
173
+ }
174
+ }
175
+
176
+ // Result item
177
+ &__item {
178
+ padding: $command-palette-item-padding-v $command-palette-input-padding-h;
179
+ cursor: pointer;
180
+ transition: background-color $transition-fast $easing-smooth;
181
+ display: flex;
182
+ align-items: center;
183
+ gap: $spacing-sm;
184
+
185
+ &:hover {
186
+ background-color: var(--pa-command-palette-item-hover-bg);
187
+ }
188
+
189
+ &--active {
190
+ background-color: var(--pa-command-palette-item-active-bg);
191
+ }
192
+ }
193
+
194
+ // Item icon
195
+ &__item-icon {
196
+ flex-shrink: 0;
197
+ width: $command-palette-item-icon-size;
198
+ height: $command-palette-item-icon-size;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ background-color: var(--pa-accent-light);
203
+ color: var(--pa-accent);
204
+ border-radius: $border-radius-sm;
205
+ font-size: $font-size-sm;
206
+ }
207
+
208
+ // Item content
209
+ &__item-content {
210
+ flex: 1;
211
+ min-width: 0;
212
+ }
213
+
214
+ &__item-title {
215
+ font-size: $font-size-sm;
216
+ font-weight: $font-weight-medium;
217
+ color: var(--pa-text-primary);
218
+ margin: 0;
219
+ white-space: nowrap;
220
+ overflow: hidden;
221
+ text-overflow: ellipsis;
222
+
223
+ mark {
224
+ background-color: var(--pa-command-palette-highlight-bg);
225
+ color: var(--pa-command-palette-highlight-text);
226
+ font-weight: $font-weight-semibold;
227
+ padding: 0 2px;
228
+ border-radius: 2px;
229
+ }
230
+ }
231
+
232
+ &__item-meta {
233
+ font-size: $font-size-xs;
234
+ color: var(--pa-text-secondary);
235
+ margin: 0;
236
+ margin-top: 2px;
237
+ white-space: nowrap;
238
+ overflow: hidden;
239
+ text-overflow: ellipsis;
240
+ }
241
+
242
+ // Item badge (e.g., category, status)
243
+ &__item-badge {
244
+ flex-shrink: 0;
245
+ font-size: $font-size-xs;
246
+ padding: 2px $spacing-xs;
247
+ background-color: $secondary-light-bg;
248
+ color: var(--pa-text-secondary);
249
+ border-radius: $border-radius-sm;
250
+ }
251
+
252
+ // Footer with keyboard hints
253
+ &__footer {
254
+ border-top: $border-width-base solid var(--pa-border-color);
255
+ padding: $spacing-sm $command-palette-input-padding-h;
256
+ display: flex;
257
+ gap: $spacing-base;
258
+ font-size: $font-size-xs;
259
+ color: var(--pa-text-secondary);
260
+ }
261
+
262
+ &__hint {
263
+ display: flex;
264
+ align-items: center;
265
+ gap: $spacing-xs;
266
+ }
267
+
268
+ &__key {
269
+ padding: 2px $spacing-xs;
270
+ background-color: $secondary-light-bg;
271
+ border: $border-width-base solid var(--pa-border-color);
272
+ border-radius: $border-radius-sm;
273
+ font-family: $body-font-family;
274
+ font-weight: $font-weight-medium;
275
+ font-size: $font-size-2xs;
276
+ line-height: 1;
277
+ }
278
+
279
+ // Section headers (for grouping results)
280
+ &__section {
281
+ padding: $spacing-sm $command-palette-input-padding-h $spacing-xs;
282
+ font-size: $font-size-xs;
283
+ font-weight: $font-weight-semibold;
284
+ color: var(--pa-text-secondary);
285
+ text-transform: uppercase;
286
+ letter-spacing: 0.5px;
287
+ }
288
+
289
+ // Pagination indicator
290
+ &__pagination {
291
+ padding: $spacing-xs $command-palette-input-padding-h;
292
+ text-align: center;
293
+ font-size: $font-size-xs;
294
+ color: var(--pa-text-secondary);
295
+ border-top: $border-width-base solid var(--pa-border-color);
296
+ }
297
+ }
298
+
299
+ // Animations
300
+ @keyframes fadeIn {
301
+ from {
302
+ opacity: 0;
303
+ }
304
+ to {
305
+ opacity: 1;
306
+ }
307
+ }
308
+
309
+ @keyframes slideDown {
310
+ from {
311
+ opacity: 0;
312
+ transform: translateY(-20px);
313
+ }
314
+ to {
315
+ opacity: 1;
316
+ transform: translateY(0);
317
+ }
318
+ }
319
+
320
+ // Responsive
321
+ @media (max-width: $mobile-breakpoint) {
322
+ .pa-command-palette {
323
+ padding-top: $spacing-base;
324
+
325
+ &__container {
326
+ max-width: calc(100% - #{$spacing-base * 2});
327
+ }
328
+
329
+ &__results {
330
+ max-height: 60vh;
331
+ }
332
+ }
333
+ }
334
+
335
+ /* ========================================
336
+ Navbar Search Trigger
337
+ Button that opens the command palette
338
+ ======================================== */
339
+
340
+ .pa-navbar-search {
341
+ display: flex;
342
+ align-items: center;
343
+ gap: $spacing-sm;
344
+ padding: $input-padding-v $input-padding-h;
345
+ background-color: var(--pa-input-bg);
346
+ border: $border-width-base solid var(--pa-border-color);
347
+ border-radius: $border-radius;
348
+ cursor: pointer;
349
+ transition: border-color $transition-fast $easing-snappy;
350
+
351
+ &:hover {
352
+ border-color: $input-focus-border-color;
353
+ }
354
+
355
+ &:focus {
356
+ outline: none;
357
+ border-color: $input-focus-border-color;
358
+ box-shadow: 0 0 0 $focus-ring-width $accent-light;
359
+ }
360
+
361
+ // Size modifiers (matching input sizes)
362
+ &--xs {
363
+ height: #{$base-input-size-xs-height}rem;
364
+ font-size: $font-size-xs;
365
+ }
366
+
367
+ &--sm {
368
+ height: #{$base-input-size-sm-height}rem;
369
+ font-size: $font-size-xs;
370
+ }
371
+
372
+ &--md {
373
+ height: #{$base-input-size-md-height}rem;
374
+ font-size: $font-size-sm;
375
+ }
376
+
377
+ &--lg {
378
+ height: #{$base-input-size-lg-height}rem;
379
+ font-size: $font-size-base;
380
+ }
381
+
382
+ &--xl {
383
+ height: #{$base-input-size-xl-height}rem;
384
+ font-size: $font-size-lg;
385
+ }
386
+
387
+ &__icon {
388
+ flex-shrink: 0;
389
+ opacity: $opacity-muted;
390
+ }
391
+
392
+ &__placeholder {
393
+ flex: 1;
394
+ color: var(--pa-text-secondary);
395
+ white-space: nowrap;
396
+ overflow: hidden;
397
+ text-overflow: ellipsis;
398
+ }
399
+
400
+ &__shortcut {
401
+ display: flex;
402
+ align-items: center;
403
+ gap: 2px;
404
+ flex-shrink: 0;
405
+
406
+ kbd {
407
+ display: inline-flex;
408
+ align-items: center;
409
+ justify-content: center;
410
+ min-width: 2rem;
411
+ height: 2rem;
412
+ padding: 0 $spacing-xs;
413
+ font-family: $body-font-family;
414
+ font-size: $font-size-2xs;
415
+ font-weight: $font-weight-medium;
416
+ color: var(--pa-text-secondary);
417
+ background-color: $secondary-light-bg;
418
+ border: $border-width-base solid var(--pa-border-color);
419
+ border-radius: $border-radius-sm;
420
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
421
+ }
422
+ }
423
+ }
424
+
425
+ // Responsive: hide shortcut on small screens
426
+ @media (max-width: $mobile-breakpoint) {
427
+ .pa-navbar-search {
428
+ &__placeholder {
429
+ display: none;
430
+ }
431
+
432
+ &__shortcut {
433
+ display: none;
434
+ }
435
+ }
436
+ }
437
+
438
+ /* ========================================
439
+ Shortcut Help Dialog
440
+ Modal content for displaying keyboard shortcuts
441
+ ======================================== */
442
+
443
+ .pa-shortcut-help {
444
+ display: flex;
445
+ flex-direction: column;
446
+ gap: $spacing-base;
447
+ }
448
+
449
+ .pa-shortcut-help__category {
450
+ display: flex;
451
+ flex-direction: column;
452
+ gap: $spacing-xs;
453
+ }
454
+
455
+ .pa-shortcut-help__category-title {
456
+ font-size: $font-size-xs;
457
+ font-weight: $font-weight-semibold;
458
+ text-transform: uppercase;
459
+ letter-spacing: 0.5px;
460
+ color: var(--pa-text-secondary);
461
+ margin: 0;
462
+ padding-bottom: $spacing-xs;
463
+ border-bottom: $border-width-base solid var(--pa-border-color);
464
+ }
465
+
466
+ .pa-shortcut-help__list {
467
+ display: flex;
468
+ flex-direction: column;
469
+ gap: $spacing-xs;
470
+ }
471
+
472
+ .pa-shortcut-help__item {
473
+ display: flex;
474
+ align-items: center;
475
+ justify-content: space-between;
476
+ gap: $spacing-base;
477
+ padding: $spacing-xs 0;
478
+ }
479
+
480
+ .pa-shortcut-help__keys {
481
+ display: flex;
482
+ align-items: center;
483
+ gap: $spacing-xs;
484
+ flex-shrink: 0;
485
+ }
486
+
487
+ .pa-shortcut-help__key {
488
+ display: inline-flex;
489
+ align-items: center;
490
+ justify-content: center;
491
+ min-width: $spacing-lg;
492
+ height: $spacing-lg;
493
+ padding: 0 $spacing-xs;
494
+ font-family: $body-font-family;
495
+ font-size: $font-size-2xs;
496
+ font-weight: $font-weight-medium;
497
+ color: var(--pa-text-primary);
498
+ background-color: $secondary-light-bg;
499
+ border: $border-width-base solid var(--pa-border-color);
500
+ border-radius: $border-radius-sm;
501
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
502
+ }
503
+
504
+ .pa-shortcut-help__separator {
505
+ color: var(--pa-text-secondary);
506
+ font-size: $font-size-xs;
507
+ }
508
+
509
+ .pa-shortcut-help__description {
510
+ color: var(--pa-text-primary);
511
+ font-size: $font-size-sm;
512
+ }
513
+
514
+ .pa-shortcut-help__empty {
515
+ text-align: center;
516
+ color: var(--pa-text-secondary);
517
+ padding: $spacing-xl;
518
+ }
@@ -0,0 +1,172 @@
1
+ /* ========================================
2
+ Comparison Table Component
3
+ Two-column and three-column comparison tables for version control, data changes, and merge operations
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ .pa-comparison-table {
8
+ // Ensure proper spacing and borders
9
+ border-collapse: collapse;
10
+
11
+ // Header styling
12
+ thead th {
13
+ background-color: var(--pa-table-header-bg);
14
+ font-weight: $font-weight-semibold;
15
+ text-align: left;
16
+ padding: $spacing-sm $spacing-base;
17
+ border-bottom: $border-width-medium solid var(--pa-border-color);
18
+ }
19
+
20
+ tbody tr {
21
+ border-bottom: $border-width-base solid var(--pa-border-color);
22
+
23
+ &:last-child {
24
+ border-bottom: none;
25
+ }
26
+ }
27
+
28
+ tbody td {
29
+ padding: $spacing-sm $spacing-base;
30
+ vertical-align: middle;
31
+ }
32
+
33
+ // Field label column (left column with field names)
34
+ &__label {
35
+ font-weight: $font-weight-medium;
36
+ color: var(--pa-text-secondary);
37
+ background-color: var(--pa-primary-bg);
38
+ }
39
+
40
+ // Value wrapper (contains value text + copy button)
41
+ &__value {
42
+ display: flex;
43
+ align-items: center;
44
+ gap: $spacing-sm;
45
+
46
+ span {
47
+ flex: 1;
48
+ word-break: break-word;
49
+ }
50
+ }
51
+
52
+ // Copy button
53
+ &__copy {
54
+ opacity: 0;
55
+ transition: opacity $transition-fast $easing-smooth;
56
+ flex-shrink: 0;
57
+
58
+ i {
59
+ font-size: $font-size-sm;
60
+ }
61
+ }
62
+
63
+ // Show copy button on row hover
64
+ tbody tr:hover &__copy {
65
+ opacity: 1;
66
+ }
67
+
68
+ // Changed value highlighting (pink/salmon background)
69
+ &__changed {
70
+ background-color: rgba(244, 114, 182, 0.15); // Pink highlight
71
+ position: relative;
72
+
73
+ &::before {
74
+ content: '';
75
+ position: absolute;
76
+ left: 0;
77
+ top: 0;
78
+ bottom: 0;
79
+ width: $border-width-medium;
80
+ background-color: $comparison-accent-pink;
81
+ }
82
+
83
+ // Solid background variant (no left border accent)
84
+ &--solid {
85
+ background-color: rgba(244, 114, 182, 0.25) !important; // More opaque pink
86
+
87
+ &::before {
88
+ content: none; // Remove left border accent
89
+ }
90
+ }
91
+ }
92
+
93
+ // Conflict highlighting (orange background for 3-column merge conflicts)
94
+ &__conflict {
95
+ background-color: rgba(251, 146, 60, 0.15); // Orange highlight
96
+
97
+ &::before {
98
+ background-color: $comparison-accent-orange;
99
+ }
100
+
101
+ // Solid background variant (no left border accent)
102
+ &--solid {
103
+ background-color: rgba(251, 146, 60, 0.25) !important; // More opaque orange
104
+
105
+ &::before {
106
+ content: none; // Remove left border accent
107
+ }
108
+ }
109
+ }
110
+
111
+ // Section header rows (for grouping fields)
112
+ &__section {
113
+ td {
114
+ background-color: var(--pa-table-header-bg);
115
+ font-weight: $font-weight-semibold;
116
+ color: var(--pa-text-secondary);
117
+ padding: $spacing-xs $spacing-base;
118
+ border-top: $border-width-medium solid var(--pa-border-color);
119
+ border-bottom: $border-width-base solid var(--pa-border-color);
120
+ }
121
+ }
122
+
123
+ // Responsive behavior - stack on mobile
124
+ @media (max-width: $mobile-breakpoint) {
125
+ thead {
126
+ display: none;
127
+ }
128
+
129
+ tbody tr {
130
+ display: flex;
131
+ flex-direction: column;
132
+ margin-bottom: $spacing-base;
133
+ border: $border-width-base solid var(--pa-border-color);
134
+ border-radius: $border-radius;
135
+ }
136
+
137
+ tbody td {
138
+ display: flex;
139
+ padding: $spacing-sm;
140
+ border: none;
141
+
142
+ &:not(:last-child) {
143
+ border-bottom: $border-width-base solid var(--pa-border-color);
144
+ }
145
+
146
+ &::before {
147
+ content: attr(data-label);
148
+ font-weight: $font-weight-semibold;
149
+ margin-right: $spacing-sm;
150
+ min-width: 120px;
151
+ }
152
+ }
153
+
154
+ &__label {
155
+ background-color: transparent;
156
+ font-weight: $font-weight-bold;
157
+ padding: $spacing-xs $spacing-sm;
158
+ }
159
+
160
+ &__section {
161
+ td {
162
+ justify-content: center;
163
+ background-color: var(--pa-table-header-bg);
164
+ padding: $spacing-sm;
165
+
166
+ &::before {
167
+ display: none;
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }