@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,503 @@
1
+ /* ========================================
2
+ Tooltip and Popover Components
3
+ Tooltips with multiple positions and popovers with rich content
4
+ ======================================== */
5
+ @use '../variables' as *;
6
+
7
+ @use "sass:color";
8
+
9
+ // Tooltips
10
+ .pa-tooltip {
11
+ position: relative;
12
+ display: inline-block;
13
+
14
+ // Elevate z-index on hover to appear above siblings
15
+ &:hover {
16
+ z-index: $z-index-modal;
17
+ }
18
+
19
+ // Help cursor modifier - use for informational tooltips
20
+ &--help {
21
+ cursor: help;
22
+ }
23
+
24
+ &::before,
25
+ &::after {
26
+ position: absolute;
27
+ opacity: 0;
28
+ pointer-events: none;
29
+ transition: opacity $transition-normal $easing-smooth, transform $transition-normal $easing-smooth;
30
+ z-index: $tooltip-z-index;
31
+ }
32
+
33
+ // Tooltip content
34
+ &::before {
35
+ content: attr(data-tooltip);
36
+ background-color: var(--pa-tooltip-bg);
37
+ color: var(--pa-tooltip-text);
38
+ padding: $spacing-xs $spacing-sm;
39
+ border-radius: $border-radius;
40
+ font-size: $font-size-xs;
41
+ white-space: nowrap;
42
+ max-width: $tooltip-max-width;
43
+ text-align: center;
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ }
47
+
48
+ // Multiline tooltip variant
49
+ &--multiline::before {
50
+ white-space: normal;
51
+ text-align: left;
52
+ width: $tooltip-multiline-width;
53
+ max-width: $tooltip-multiline-width;
54
+ line-height: $line-height-base;
55
+ }
56
+
57
+ // Tooltip arrow
58
+ &::after {
59
+ content: '';
60
+ border: $tooltip-arrow-size solid transparent;
61
+ }
62
+
63
+ // Show on hover
64
+ &:hover::before,
65
+ &:hover::after {
66
+ opacity: 1;
67
+ }
68
+
69
+ // Disable CSS tooltip when JS floating tooltip is active (prevents double tooltips)
70
+ &--floating::before,
71
+ &--floating::after {
72
+ display: none !important;
73
+ }
74
+
75
+ // Top position (default)
76
+ &::before {
77
+ bottom: calc(100% + $tooltip-distance);
78
+ left: 50%;
79
+ transform: translateX(-50%) translateY(-$tooltip-offset);
80
+ }
81
+
82
+ &::after {
83
+ bottom: calc(100% + ($tooltip-arrow-size - 2px));
84
+ left: 50%;
85
+ transform: translateX(-50%) translateY(-$tooltip-offset);
86
+ border-top-color: var(--pa-tooltip-bg);
87
+ }
88
+
89
+ &:hover::before,
90
+ &:hover::after {
91
+ transform: translateX(-50%) translateY(0);
92
+ }
93
+
94
+ // Right position
95
+ &--right::before {
96
+ bottom: auto;
97
+ left: calc(100% + $tooltip-distance);
98
+ top: 50%;
99
+ transform: translateX(-$tooltip-offset) translateY(-50%);
100
+ }
101
+
102
+ &--right::after {
103
+ bottom: auto;
104
+ left: calc(100% + ($tooltip-arrow-size - 2px));
105
+ top: 50%;
106
+ transform: translateX(-$tooltip-offset) translateY(-50%);
107
+ border-top-color: transparent;
108
+ border-right-color: var(--pa-tooltip-bg);
109
+ }
110
+
111
+ &--right:hover::before,
112
+ &--right:hover::after {
113
+ transform: translateX(0) translateY(-50%);
114
+ }
115
+
116
+ // Bottom position
117
+ &--bottom::before {
118
+ bottom: auto;
119
+ top: calc(100% + $tooltip-distance);
120
+ left: 50%;
121
+ transform: translateX(-50%) translateY($tooltip-offset);
122
+ }
123
+
124
+ &--bottom::after {
125
+ bottom: auto;
126
+ top: calc(100% + ($tooltip-arrow-size - 2px));
127
+ left: 50%;
128
+ transform: translateX(-50%) translateY($tooltip-offset);
129
+ border-top-color: transparent;
130
+ border-bottom-color: var(--pa-tooltip-bg);
131
+ }
132
+
133
+ &--bottom:hover::before,
134
+ &--bottom:hover::after {
135
+ transform: translateX(-50%) translateY(0);
136
+ }
137
+
138
+ // Left position
139
+ &--left::before {
140
+ bottom: auto;
141
+ left: auto;
142
+ right: calc(100% + $tooltip-distance);
143
+ top: 50%;
144
+ transform: translateX($tooltip-offset) translateY(-50%);
145
+ }
146
+
147
+ &--left::after {
148
+ bottom: auto;
149
+ left: auto;
150
+ right: calc(100% + ($tooltip-arrow-size - 2px));
151
+ top: 50%;
152
+ transform: translateX($tooltip-offset) translateY(-50%);
153
+ border-top-color: transparent;
154
+ border-left-color: var(--pa-tooltip-bg);
155
+ }
156
+
157
+ &--left:hover::before,
158
+ &--left:hover::after {
159
+ transform: translateX(0) translateY(-50%);
160
+ }
161
+
162
+ // Color variants
163
+ &--primary::before {
164
+ background-color: var(--pa-btn-primary-bg);
165
+ }
166
+ &--primary::after {
167
+ border-top-color: var(--pa-btn-primary-bg);
168
+ }
169
+ &--primary.pa-tooltip--right::after {
170
+ border-top-color: transparent;
171
+ border-right-color: var(--pa-btn-primary-bg);
172
+ }
173
+ &--primary.pa-tooltip--bottom::after {
174
+ border-top-color: transparent;
175
+ border-bottom-color: var(--pa-btn-primary-bg);
176
+ }
177
+ &--primary.pa-tooltip--left::after {
178
+ border-top-color: transparent;
179
+ border-left-color: var(--pa-btn-primary-bg);
180
+ }
181
+
182
+ &--success::before {
183
+ background-color: var(--pa-btn-success-bg);
184
+ }
185
+ &--success::after {
186
+ border-top-color: var(--pa-btn-success-bg);
187
+ }
188
+ &--success.pa-tooltip--right::after {
189
+ border-top-color: transparent;
190
+ border-right-color: var(--pa-btn-success-bg);
191
+ }
192
+ &--success.pa-tooltip--bottom::after {
193
+ border-top-color: transparent;
194
+ border-bottom-color: var(--pa-btn-success-bg);
195
+ }
196
+ &--success.pa-tooltip--left::after {
197
+ border-top-color: transparent;
198
+ border-left-color: var(--pa-btn-success-bg);
199
+ }
200
+
201
+ &--warning::before {
202
+ background-color: var(--pa-btn-warning-bg);
203
+ color: var(--pa-text-primary);
204
+ }
205
+ &--warning::after {
206
+ border-top-color: var(--pa-btn-warning-bg);
207
+ }
208
+ &--warning.pa-tooltip--right::after {
209
+ border-top-color: transparent;
210
+ border-right-color: var(--pa-btn-warning-bg);
211
+ }
212
+ &--warning.pa-tooltip--bottom::after {
213
+ border-top-color: transparent;
214
+ border-bottom-color: var(--pa-btn-warning-bg);
215
+ }
216
+ &--warning.pa-tooltip--left::after {
217
+ border-top-color: transparent;
218
+ border-left-color: var(--pa-btn-warning-bg);
219
+ }
220
+
221
+ &--danger::before {
222
+ background-color: var(--pa-btn-danger-bg);
223
+ }
224
+ &--danger::after {
225
+ border-top-color: var(--pa-btn-danger-bg);
226
+ }
227
+ &--danger.pa-tooltip--right::after {
228
+ border-top-color: transparent;
229
+ border-right-color: var(--pa-btn-danger-bg);
230
+ }
231
+ &--danger.pa-tooltip--bottom::after {
232
+ border-top-color: transparent;
233
+ border-bottom-color: var(--pa-btn-danger-bg);
234
+ }
235
+ &--danger.pa-tooltip--left::after {
236
+ border-top-color: transparent;
237
+ border-left-color: var(--pa-btn-danger-bg);
238
+ }
239
+
240
+ // Smart positioning - collision detection adjustments
241
+ // Applied dynamically by JavaScript based on viewport boundaries
242
+
243
+ // Auto-flip from top to bottom
244
+ &--auto-flip-bottom::before {
245
+ bottom: auto !important;
246
+ top: calc(100% + $tooltip-distance) !important;
247
+ transform: translateX(-50%) translateY($tooltip-offset) !important;
248
+ }
249
+
250
+ &--auto-flip-bottom::after {
251
+ bottom: auto !important;
252
+ top: calc(100% + ($tooltip-arrow-size - 2px)) !important;
253
+ transform: translateX(-50%) translateY($tooltip-offset) !important;
254
+ border-top-color: transparent !important;
255
+ border-bottom-color: var(--pa-tooltip-bg) !important;
256
+ }
257
+
258
+ &--auto-flip-bottom:hover::before,
259
+ &--auto-flip-bottom:hover::after {
260
+ transform: translateX(-50%) translateY(0) !important;
261
+ }
262
+
263
+ // Auto-flip from bottom to top
264
+ &--auto-flip-top::before {
265
+ top: auto !important;
266
+ bottom: calc(100% + $tooltip-distance) !important;
267
+ transform: translateX(-50%) translateY(-$tooltip-offset) !important;
268
+ }
269
+
270
+ &--auto-flip-top::after {
271
+ top: auto !important;
272
+ bottom: calc(100% + ($tooltip-arrow-size - 2px)) !important;
273
+ transform: translateX(-50%) translateY(-$tooltip-offset) !important;
274
+ border-bottom-color: transparent !important;
275
+ border-top-color: var(--pa-tooltip-bg) !important;
276
+ }
277
+
278
+ &--auto-flip-top:hover::before,
279
+ &--auto-flip-top:hover::after {
280
+ transform: translateX(-50%) translateY(0) !important;
281
+ }
282
+
283
+ // Auto-flip from left to right
284
+ &--auto-flip-right::before {
285
+ left: calc(100% + $tooltip-distance) !important;
286
+ right: auto !important;
287
+ transform: translateX(-$tooltip-offset) translateY(-50%) !important;
288
+ }
289
+
290
+ &--auto-flip-right::after {
291
+ left: calc(100% + ($tooltip-arrow-size - 2px)) !important;
292
+ right: auto !important;
293
+ transform: translateX(-$tooltip-offset) translateY(-50%) !important;
294
+ border-left-color: transparent !important;
295
+ border-right-color: var(--pa-tooltip-bg) !important;
296
+ }
297
+
298
+ &--auto-flip-right:hover::before,
299
+ &--auto-flip-right:hover::after {
300
+ transform: translateX(0) translateY(-50%) !important;
301
+ }
302
+
303
+ // Auto-flip from right to left
304
+ &--auto-flip-left::before {
305
+ right: calc(100% + $tooltip-distance) !important;
306
+ left: auto !important;
307
+ transform: translateX($tooltip-offset) translateY(-50%) !important;
308
+ }
309
+
310
+ &--auto-flip-left::after {
311
+ right: calc(100% + ($tooltip-arrow-size - 2px)) !important;
312
+ left: auto !important;
313
+ transform: translateX($tooltip-offset) translateY(-50%) !important;
314
+ border-right-color: transparent !important;
315
+ border-left-color: var(--pa-tooltip-bg) !important;
316
+ }
317
+
318
+ &--auto-flip-left:hover::before,
319
+ &--auto-flip-left:hover::after {
320
+ transform: translateX(0) translateY(-50%) !important;
321
+ }
322
+ }
323
+
324
+ // ========================================
325
+ // Popovers - Interactive rich-content tooltips with Floating UI
326
+ // ========================================
327
+
328
+ .pa-popover {
329
+ display: inline-block;
330
+
331
+ &__trigger {
332
+ display: inline-flex;
333
+ align-items: center;
334
+ justify-content: center;
335
+ width: $popover-trigger-size;
336
+ height: $popover-trigger-size;
337
+ padding: 0;
338
+ border: $border-width-base solid var(--pa-border-color);
339
+ border-radius: 50%;
340
+ background-color: var(--pa-popover-content-bg);
341
+ color: var(--pa-text-secondary);
342
+ font-size: $font-size-xs;
343
+ font-weight: $font-weight-bold;
344
+ cursor: pointer;
345
+ transition: all $transition-fast $easing-smooth;
346
+
347
+ &:hover {
348
+ background-color: var(--pa-accent);
349
+ color: var(--pa-modal-content-bg);
350
+ border-color: var(--pa-accent);
351
+ }
352
+ }
353
+
354
+ &__content {
355
+ position: absolute;
356
+ display: none;
357
+ min-width: $popover-min-width;
358
+ max-width: $popover-max-width;
359
+ background-color: var(--pa-card-bg);
360
+ border: $border-width-base solid var(--pa-border-color);
361
+ border-radius: $border-radius;
362
+ box-shadow: $shadow-lg;
363
+ z-index: $popover-z-index;
364
+
365
+ // Show when data-show attribute is present (controlled by JavaScript)
366
+ &[data-show] {
367
+ display: block;
368
+ }
369
+ }
370
+
371
+ &__header {
372
+ display: flex;
373
+ align-items: center;
374
+ justify-content: space-between;
375
+ padding: $popover-header-padding;
376
+ border-bottom: $popover-header-border;
377
+ background-color: var(--pa-card-header-bg);
378
+ border-radius: $popover-header-border-radius;
379
+
380
+ h4 {
381
+ margin: 0;
382
+ font-size: $popover-title-font-size;
383
+ font-weight: $font-weight-semibold;
384
+ color: var(--pa-text-primary);
385
+ }
386
+ }
387
+
388
+ &__body {
389
+ padding: $spacing-base;
390
+ font-size: $font-size-sm;
391
+ line-height: $line-height-base;
392
+ color: var(--pa-text-primary);
393
+
394
+ p {
395
+ margin: 0 0 $spacing-sm 0;
396
+
397
+ &:last-child {
398
+ margin-bottom: 0;
399
+ }
400
+ }
401
+
402
+ a {
403
+ color: var(--pa-accent);
404
+ text-decoration: underline;
405
+
406
+ &:hover {
407
+ color: var(--pa-accent-hover);
408
+ }
409
+ }
410
+
411
+ ul, ol {
412
+ margin: $spacing-sm 0;
413
+ padding-left: $spacing-lg;
414
+ }
415
+
416
+ code {
417
+ padding: $popover-code-padding-v $popover-code-padding-h;
418
+ background-color: color-mix(in srgb, var(--pa-text-secondary) 15%, transparent);
419
+ border-radius: $border-radius-sm;
420
+ font-family: monospace;
421
+ font-size: $popover-code-font-scale;
422
+ }
423
+ }
424
+
425
+ &__close {
426
+ background: none;
427
+ border: none;
428
+ font-size: $font-size-lg;
429
+ line-height: 1;
430
+ color: var(--pa-text-secondary);
431
+ cursor: pointer;
432
+ padding: 0;
433
+ width: $popover-close-size;
434
+ height: $popover-close-size;
435
+ display: flex;
436
+ align-items: center;
437
+ justify-content: center;
438
+ border-radius: $border-radius;
439
+ transition: all $transition-fast $easing-smooth;
440
+
441
+ &:hover {
442
+ background-color: color-mix(in srgb, var(--pa-text-secondary) 10%, transparent);
443
+ color: var(--pa-text-primary);
444
+ }
445
+ }
446
+
447
+ // Size variants
448
+ &--sm &__content {
449
+ min-width: $popover-sm-min-width;
450
+ max-width: $popover-sm-max-width;
451
+ }
452
+
453
+ &--lg &__content {
454
+ min-width: $popover-lg-min-width;
455
+ max-width: $popover-lg-max-width;
456
+ }
457
+ }
458
+
459
+ // ========================================
460
+ // Floating UI Tooltip (Portal Rendering)
461
+ // ========================================
462
+
463
+ .pa-tooltip-floating {
464
+ background-color: var(--pa-tooltip-bg);
465
+ color: var(--pa-tooltip-text);
466
+ padding: $spacing-xs $spacing-sm;
467
+ border-radius: $border-radius;
468
+ font-size: $font-size-xs;
469
+ white-space: nowrap;
470
+ max-width: $tooltip-max-width;
471
+ text-align: center;
472
+ box-shadow: $shadow-md;
473
+ pointer-events: none;
474
+ z-index: $z-index-tooltip;
475
+
476
+ // Multiline variant
477
+ &.pa-tooltip--multiline {
478
+ white-space: normal;
479
+ text-align: left;
480
+ max-width: $tooltip-multiline-max-width;
481
+ }
482
+
483
+ // Color variants
484
+ &.pa-tooltip--primary {
485
+ background-color: var(--pa-btn-primary-bg);
486
+ color: var(--pa-btn-primary-text);
487
+ }
488
+
489
+ &.pa-tooltip--success {
490
+ background-color: var(--pa-btn-success-bg);
491
+ color: var(--pa-btn-success-text);
492
+ }
493
+
494
+ &.pa-tooltip--warning {
495
+ background-color: var(--pa-btn-warning-bg);
496
+ color: var(--pa-btn-warning-text);
497
+ }
498
+
499
+ &.pa-tooltip--danger {
500
+ background-color: var(--pa-btn-danger-bg);
501
+ color: var(--pa-btn-danger-text);
502
+ }
503
+ }