sakana-element 2.1.5 → 2.3.0

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 (157) hide show
  1. package/README.md +95 -19
  2. package/dist/es/{Alert-C76ZWSVk.js → Alert-BwTsp4X3.js} +2 -2
  3. package/dist/es/Avatar-CJu6JYV3.js +9 -0
  4. package/dist/es/Badge-BmxZXX8k.js +14 -0
  5. package/dist/es/Breadcrumb-BP8MSklj.js +15 -0
  6. package/dist/es/{Button-fW_ZOLmT.js → Button-BJHtN7gh.js} +5 -5
  7. package/dist/es/Card-DJHkCmsz.js +16 -0
  8. package/dist/es/Checkbox-DX8L3fyp.js +51 -0
  9. package/dist/es/Collapse-Ir3V9CuO.js +53 -0
  10. package/dist/es/ConfigProvider-CsbSqwwi.js +44 -0
  11. package/dist/es/Divider-C7PtODSK.js +9 -0
  12. package/dist/es/Drawer-C2eVmvUp.js +40 -0
  13. package/dist/es/Dropdown-CVg_c2fB.js +104 -0
  14. package/dist/es/FileInput-BE26BmXm.js +33 -0
  15. package/dist/es/Form-7lZt5ehf.js +122 -0
  16. package/dist/es/{Icon-DpJyuj7c.js → Icon-BLDDdSU-.js} +1 -1
  17. package/dist/es/Indicator-B-en-MgG.js +9 -0
  18. package/dist/es/{Input-DBPpvf0Y.js → Input-C5HuVehE.js} +4 -4
  19. package/dist/es/Link-Av9RdcFv.js +11 -0
  20. package/dist/es/Loading-CBNDUWQd.js +92 -0
  21. package/dist/es/Message-DgnyyuXn.js +152 -0
  22. package/dist/es/Notification-LYRXnVAf.js +69 -0
  23. package/dist/es/{Overlay-BRDSWspM.js → Overlay-CpvMhnuU.js} +1 -1
  24. package/dist/es/Pixelate-BPypBgJU.js +67 -0
  25. package/dist/es/Popconfirm-DvxFdLrw.js +23 -0
  26. package/dist/es/Progress-Bc5INMhJ.js +12 -0
  27. package/dist/es/Radio-263_rtRl.js +33 -0
  28. package/dist/es/Select-7ZxUCS8z.js +133 -0
  29. package/dist/es/Switch-DiCsMJT3.js +34 -0
  30. package/dist/es/Table-BvA_xzDe.js +10 -0
  31. package/dist/es/Tooltip-J3ji6weH.js +74 -0
  32. package/dist/es/hooks-BqobYUzS.js +171 -0
  33. package/dist/es/index.js +94 -64
  34. package/dist/{theme → es/theme}/Alert.css +1 -1
  35. package/dist/es/theme/Avatar.css +86 -0
  36. package/dist/{theme → es/theme}/Badge.css +36 -30
  37. package/dist/es/theme/Breadcrumb.css +192 -0
  38. package/dist/{theme → es/theme}/Button.css +216 -216
  39. package/dist/es/theme/Card.css +347 -0
  40. package/dist/es/theme/Checkbox.css +484 -0
  41. package/dist/{theme → es/theme}/Collapse.css +214 -54
  42. package/dist/es/theme/Divider.css +111 -0
  43. package/dist/es/theme/Drawer.css +206 -0
  44. package/dist/es/theme/Dropdown.css +471 -0
  45. package/dist/es/theme/FileInput.css +365 -0
  46. package/dist/es/theme/Form.css +83 -0
  47. package/dist/es/theme/Indicator.css +159 -0
  48. package/dist/{theme → es/theme}/Input.css +1 -0
  49. package/dist/es/theme/Link.css +69 -0
  50. package/dist/es/theme/Loading.css +266 -0
  51. package/dist/es/theme/Message.css +565 -0
  52. package/dist/es/theme/Notification.css +316 -0
  53. package/dist/es/theme/Popconfirm.css +46 -0
  54. package/dist/es/theme/Progress.css +278 -0
  55. package/dist/es/theme/Radio.css +426 -0
  56. package/dist/{theme → es/theme}/Select.css +78 -78
  57. package/dist/es/theme/Table.css +680 -0
  58. package/dist/es/theme/Tooltip.css +235 -0
  59. package/dist/es/utils-BS5vsvlM.js +101 -0
  60. package/dist/index.css +1 -1
  61. package/dist/types/components/Avatar/index.d.ts +30 -0
  62. package/dist/types/components/Avatar/types.d.ts +8 -0
  63. package/dist/types/components/Badge/types.d.ts +1 -0
  64. package/dist/types/components/Breadcrumb/constants.d.ts +3 -0
  65. package/dist/types/components/Breadcrumb/index.d.ts +45 -0
  66. package/dist/types/components/Breadcrumb/types.d.ts +13 -0
  67. package/dist/types/components/Card/types.d.ts +6 -0
  68. package/dist/types/components/Checkbox/constants.d.ts +5 -0
  69. package/dist/types/components/Checkbox/index.d.ts +94 -0
  70. package/dist/types/components/Checkbox/types.d.ts +46 -0
  71. package/dist/types/components/Collapse/constants.d.ts +3 -0
  72. package/dist/types/components/Collapse/index.d.ts +14 -8
  73. package/dist/types/components/Collapse/types.d.ts +12 -0
  74. package/dist/types/components/Divider/index.d.ts +30 -0
  75. package/dist/types/components/Divider/types.d.ts +10 -0
  76. package/dist/types/components/Drawer/constants.d.ts +1 -0
  77. package/dist/types/components/Drawer/index.d.ts +72 -0
  78. package/dist/types/components/Drawer/types.d.ts +20 -0
  79. package/dist/types/components/Dropdown/index.d.ts +11 -1
  80. package/dist/types/components/Dropdown/types.d.ts +3 -0
  81. package/dist/types/components/Dropdown/useDropdownKeyboard.d.ts +8 -0
  82. package/dist/types/components/FileInput/constants.d.ts +3 -0
  83. package/dist/types/components/FileInput/index.d.ts +58 -0
  84. package/dist/types/components/FileInput/types.d.ts +24 -0
  85. package/dist/types/components/Form/types.d.ts +17 -7
  86. package/dist/types/components/Indicator/constants.d.ts +2 -0
  87. package/dist/types/components/Indicator/index.d.ts +28 -0
  88. package/dist/types/components/Indicator/types.d.ts +10 -0
  89. package/dist/types/components/Input/index.d.ts +10 -10
  90. package/dist/types/components/Link/index.d.ts +34 -0
  91. package/dist/types/components/Link/types.d.ts +10 -0
  92. package/dist/types/components/Loading/index.d.ts +25 -0
  93. package/dist/types/components/Loading/types.d.ts +9 -0
  94. package/dist/types/components/Message/methods.d.ts +2 -0
  95. package/dist/types/components/Message/types.d.ts +9 -3
  96. package/dist/types/components/MessageBox/types.d.ts +16 -4
  97. package/dist/types/components/Notification/index.d.ts +1 -1
  98. package/dist/types/components/Notification/methods.d.ts +6 -1
  99. package/dist/types/components/Notification/types.d.ts +10 -4
  100. package/dist/types/components/Pixelate/constants.d.ts +2 -0
  101. package/dist/types/components/Pixelate/index.d.ts +71 -0
  102. package/dist/types/components/Pixelate/types.d.ts +23 -0
  103. package/dist/types/components/Popconfirm/index.d.ts +16 -7
  104. package/dist/types/components/Popconfirm/types.d.ts +2 -1
  105. package/dist/types/components/Progress/constants.d.ts +2 -0
  106. package/dist/types/components/Progress/index.d.ts +50 -0
  107. package/dist/types/components/Progress/types.d.ts +22 -0
  108. package/dist/types/components/Radio/constants.d.ts +5 -0
  109. package/dist/types/components/Radio/index.d.ts +88 -0
  110. package/dist/types/components/Radio/types.d.ts +43 -0
  111. package/dist/types/components/Select/constants.d.ts +2 -1
  112. package/dist/types/components/Select/index.d.ts +35 -26
  113. package/dist/types/components/Switch/index.d.ts +5 -5
  114. package/dist/types/components/Table/index.d.ts +27 -0
  115. package/dist/types/components/Table/types.d.ts +20 -0
  116. package/dist/types/components/Tooltip/index.d.ts +6 -0
  117. package/dist/types/components/Tooltip/types.d.ts +7 -0
  118. package/dist/types/components/index.d.ts +12 -0
  119. package/dist/types/hooks/index.d.ts +3 -1
  120. package/dist/types/hooks/useDraggable.d.ts +7 -0
  121. package/dist/types/hooks/useFocusTrap.d.ts +5 -0
  122. package/dist/types/hooks/vitest.setup.d.ts +4 -0
  123. package/dist/types/utils/index.d.ts +1 -0
  124. package/dist/types/utils/instance-management.d.ts +40 -0
  125. package/dist/umd/index.css +1 -1
  126. package/dist/umd/index.css.gz +0 -0
  127. package/dist/umd/index.umd.cjs +5 -14
  128. package/dist/umd/index.umd.cjs.gz +0 -0
  129. package/package.json +5 -6
  130. package/dist/es/Badge-BG-vYP8Y.js +0 -13
  131. package/dist/es/Card-BCBnlVi_.js +0 -12
  132. package/dist/es/Collapse-B08VhCVq.js +0 -38
  133. package/dist/es/ConfigProvider-DZO1d5Eq.js +0 -44
  134. package/dist/es/Dropdown-49nf6F8P.js +0 -40
  135. package/dist/es/Form-CGiTDSGI.js +0 -108
  136. package/dist/es/Loading-DlygqGOv.js +0 -88
  137. package/dist/es/Message-ganFfLeU.js +0 -123
  138. package/dist/es/Notification-D4RYHV9o.js +0 -58
  139. package/dist/es/Popconfirm-Cop44KwQ.js +0 -22
  140. package/dist/es/Select-Blw_iO2r.js +0 -133
  141. package/dist/es/Switch-CHjcLtHs.js +0 -34
  142. package/dist/es/Tooltip-HWx_i2FA.js +0 -74
  143. package/dist/es/hooks-CYdEHUVd.js +0 -105
  144. package/dist/es/utils-bsCscZfS.js +0 -84
  145. package/dist/theme/Card.css +0 -112
  146. package/dist/theme/Dropdown.css +0 -187
  147. package/dist/theme/Form.css +0 -52
  148. package/dist/theme/Loading.css +0 -78
  149. package/dist/theme/Message.css +0 -353
  150. package/dist/theme/Notification.css +0 -126
  151. package/dist/theme/Popconfirm.css +0 -30
  152. package/dist/theme/Tooltip.css +0 -111
  153. /package/dist/{theme → es/theme}/Icon.css +0 -0
  154. /package/dist/{theme → es/theme}/Overlay.css +0 -0
  155. /package/dist/{theme → es/theme}/Switch.css +0 -0
  156. /package/dist/{theme → es/theme}/fonts/zpix.woff2 +0 -0
  157. /package/dist/{theme → es/theme}/index.css +0 -0
@@ -0,0 +1,565 @@
1
+ /* Message Variables */
2
+ .px-message {
3
+ --px-message-bg-color: var(--px-fill-color-blank);
4
+ --px-message-border-color: var(--px-border-color-dark);
5
+ --px-message-text-color: var(--px-text-color-primary);
6
+ --px-message-shadow-color: var(--px-shadow-color);
7
+ --px-message-padding: 12px 16px;
8
+ --px-message-close-size: 16px;
9
+ --px-message-close-icon-color: var(--px-text-color-secondary);
10
+ --px-message-close-hover-color: var(--px-text-color-primary);
11
+ --px-message-icon-size: 16px;
12
+ --px-message-icon-margin: 10px;
13
+
14
+ /* Beveled inset for 3D raised-panel depth */
15
+ --px-message-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
16
+ --px-message-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.08);
17
+ }
18
+ /* Base Message Styles - Pixel Game Notification */
19
+ .px-message {
20
+ width: fit-content;
21
+ max-width: calc(100% - 32px);
22
+ box-sizing: border-box;
23
+ position: fixed;
24
+ left: 50%;
25
+ top: 20px;
26
+ transform: translateX(-50%);
27
+ padding: var(--px-message-padding);
28
+ display: flex;
29
+ align-items: center;
30
+ font-family: var(--px-font-family);
31
+
32
+ /* Remove traditional styling */
33
+ background: transparent;
34
+ border: none;
35
+
36
+ /* Pixel shadow via drop-shadow (respects clip-path shape) */
37
+ filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-message-shadow-color));
38
+
39
+ /* No smooth transitions for pixel feel */
40
+ transition: none;
41
+ }
42
+ /* Border layer — filled with border color, clipped to pixel shape */
43
+ .px-message::before {
44
+ content: '';
45
+ position: absolute;
46
+ inset: 0;
47
+ background: var(--px-message-border-color);
48
+ clip-path: polygon(
49
+ 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
50
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
51
+ 100% calc(100% - 4px), calc(100% - 2px) calc(100% - 4px), calc(100% - 2px) calc(100% - 2px), calc(100% - 4px) calc(100% - 2px), calc(100% - 4px) 100%,
52
+ 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
53
+ );
54
+ z-index: -1;
55
+ }
56
+ /* Fill layer — inset by border width, filled with bg color */
57
+ .px-message::after {
58
+ content: '';
59
+ position: absolute;
60
+ inset: 2px;
61
+ background: var(--px-message-bg-color);
62
+ clip-path: polygon(
63
+ 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
64
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
65
+ 100% calc(100% - 4px), calc(100% - 2px) calc(100% - 4px), calc(100% - 2px) calc(100% - 2px), calc(100% - 4px) calc(100% - 2px), calc(100% - 4px) 100%,
66
+ 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
67
+ );
68
+ box-shadow: var(--px-message-inset-highlight), var(--px-message-inset-shadow);
69
+ z-index: -1;
70
+ }
71
+ /* Icon styling */
72
+ .px-message .px-message__icon {
73
+ color: var(--px-message-text-color);
74
+ font-size: var(--px-message-icon-size);
75
+ width: var(--px-message-icon-size);
76
+ margin-right: var(--px-message-icon-margin);
77
+ flex-shrink: 0;
78
+ }
79
+ /* Content area */
80
+ .px-message .px-message__content {
81
+ color: var(--px-message-text-color);
82
+ overflow-wrap: break-word;
83
+ font-size: var(--px-font-size-base);
84
+ line-height: 1.5;
85
+ }
86
+ /* With close button */
87
+ .px-message.is-close .px-message__content {
88
+ padding-right: 12px;
89
+ }
90
+ /* Center alignment */
91
+ .px-message.text-center {
92
+ justify-content: center;
93
+ }
94
+ /* Close button - pixel style */
95
+ .px-message .px-message__close {
96
+ display: flex;
97
+ align-items: center;
98
+ }
99
+ .px-message .px-message__close .px-icon {
100
+ cursor: pointer;
101
+ color: var(--px-message-close-icon-color);
102
+ font-size: var(--px-message-close-size);
103
+ transition: none;
104
+ }
105
+ .px-message .px-message__close .px-icon:hover {
106
+ color: var(--px-message-close-hover-color);
107
+ transform: translate(-1px, -1px);
108
+ }
109
+ .px-message .px-message__close .px-icon:active {
110
+ transform: translate(1px, 1px);
111
+ }
112
+ /* Map error type to danger color palette so @each loops handle both */
113
+ .px-message--error {
114
+ --px-color-error: var(--px-color-danger);
115
+ --px-color-error-dark: var(--px-color-danger-dark);
116
+ --px-color-error-light-5: var(--px-color-danger-light-5);
117
+ --px-color-error-light-9: var(--px-color-danger-light-9);
118
+ }
119
+ /* Type variants with pixel styling */
120
+ .px-message--info {
121
+ --px-message-bg-color: var(--px-color-info-light-9);
122
+ --px-message-border-color: var(--px-color-info);
123
+ --px-message-text-color: var(--px-color-info-dark);
124
+ --px-message-shadow-color: var(--px-color-info-dark);
125
+ }
126
+ .px-message--info .px-message__close .px-icon {
127
+ color: var(--px-color-info);
128
+ }
129
+ .px-message--info .px-message__close .px-icon:hover {
130
+ color: var(--px-color-info-dark);
131
+ }
132
+ .px-message--success {
133
+ --px-message-bg-color: var(--px-color-success-light-9);
134
+ --px-message-border-color: var(--px-color-success);
135
+ --px-message-text-color: var(--px-color-success-dark);
136
+ --px-message-shadow-color: var(--px-color-success-dark);
137
+ }
138
+ .px-message--success .px-message__close .px-icon {
139
+ color: var(--px-color-success);
140
+ }
141
+ .px-message--success .px-message__close .px-icon:hover {
142
+ color: var(--px-color-success-dark);
143
+ }
144
+ .px-message--warning {
145
+ --px-message-bg-color: var(--px-color-warning-light-9);
146
+ --px-message-border-color: var(--px-color-warning);
147
+ --px-message-text-color: var(--px-color-warning-dark);
148
+ --px-message-shadow-color: var(--px-color-warning-dark);
149
+ }
150
+ .px-message--warning .px-message__close .px-icon {
151
+ color: var(--px-color-warning);
152
+ }
153
+ .px-message--warning .px-message__close .px-icon:hover {
154
+ color: var(--px-color-warning-dark);
155
+ }
156
+ .px-message--danger {
157
+ --px-message-bg-color: var(--px-color-danger-light-9);
158
+ --px-message-border-color: var(--px-color-danger);
159
+ --px-message-text-color: var(--px-color-danger-dark);
160
+ --px-message-shadow-color: var(--px-color-danger-dark);
161
+ }
162
+ .px-message--danger .px-message__close .px-icon {
163
+ color: var(--px-color-danger);
164
+ }
165
+ .px-message--danger .px-message__close .px-icon:hover {
166
+ color: var(--px-color-danger-dark);
167
+ }
168
+ .px-message--error {
169
+ --px-message-bg-color: var(--px-color-error-light-9);
170
+ --px-message-border-color: var(--px-color-error);
171
+ --px-message-text-color: var(--px-color-error-dark);
172
+ --px-message-shadow-color: var(--px-color-error-dark);
173
+ }
174
+ .px-message--error .px-message__close .px-icon {
175
+ color: var(--px-color-error);
176
+ }
177
+ .px-message--error .px-message__close .px-icon:hover {
178
+ color: var(--px-color-error-dark);
179
+ }
180
+ /* ─── Plain variant ─── */
181
+ .px-message.is-plain {
182
+ --px-message-bg-color: var(--px-fill-color-blank);
183
+ --px-message-border-color: var(--px-border-color-light);
184
+ --px-message-shadow-color: var(--px-border-color-light);
185
+ }
186
+ .px-message--info.is-plain {
187
+ --px-message-bg-color: var(--px-color-info-light-9);
188
+ --px-message-border-color: var(--px-color-info-light-5, var(--px-color-info));
189
+ --px-message-text-color: var(--px-color-info);
190
+ --px-message-shadow-color: var(--px-color-info-light-5, var(--px-color-info));
191
+ }
192
+ .px-message--success.is-plain {
193
+ --px-message-bg-color: var(--px-color-success-light-9);
194
+ --px-message-border-color: var(--px-color-success-light-5, var(--px-color-success));
195
+ --px-message-text-color: var(--px-color-success);
196
+ --px-message-shadow-color: var(--px-color-success-light-5, var(--px-color-success));
197
+ }
198
+ .px-message--warning.is-plain {
199
+ --px-message-bg-color: var(--px-color-warning-light-9);
200
+ --px-message-border-color: var(--px-color-warning-light-5, var(--px-color-warning));
201
+ --px-message-text-color: var(--px-color-warning);
202
+ --px-message-shadow-color: var(--px-color-warning-light-5, var(--px-color-warning));
203
+ }
204
+ .px-message--danger.is-plain {
205
+ --px-message-bg-color: var(--px-color-danger-light-9);
206
+ --px-message-border-color: var(--px-color-danger-light-5, var(--px-color-danger));
207
+ --px-message-text-color: var(--px-color-danger);
208
+ --px-message-shadow-color: var(--px-color-danger-light-5, var(--px-color-danger));
209
+ }
210
+ .px-message--error.is-plain {
211
+ --px-message-bg-color: var(--px-color-error-light-9);
212
+ --px-message-border-color: var(--px-color-error-light-5, var(--px-color-error));
213
+ --px-message-text-color: var(--px-color-error);
214
+ --px-message-shadow-color: var(--px-color-error-light-5, var(--px-color-error));
215
+ }
216
+ /* ─── Ghost variant ─── */
217
+ .px-message.is-ghost {
218
+ --px-message-bg-color: var(--px-fill-color-blank);
219
+ --px-message-shadow-color: transparent;
220
+ filter: none;
221
+ }
222
+ .px-message--info.is-ghost {
223
+ --px-message-bg-color: var(--px-fill-color-blank);
224
+ --px-message-border-color: var(--px-color-info);
225
+ --px-message-text-color: var(--px-color-info);
226
+ --px-message-shadow-color: transparent;
227
+ filter: none;
228
+ }
229
+ .px-message--success.is-ghost {
230
+ --px-message-bg-color: var(--px-fill-color-blank);
231
+ --px-message-border-color: var(--px-color-success);
232
+ --px-message-text-color: var(--px-color-success);
233
+ --px-message-shadow-color: transparent;
234
+ filter: none;
235
+ }
236
+ .px-message--warning.is-ghost {
237
+ --px-message-bg-color: var(--px-fill-color-blank);
238
+ --px-message-border-color: var(--px-color-warning);
239
+ --px-message-text-color: var(--px-color-warning);
240
+ --px-message-shadow-color: transparent;
241
+ filter: none;
242
+ }
243
+ .px-message--danger.is-ghost {
244
+ --px-message-bg-color: var(--px-fill-color-blank);
245
+ --px-message-border-color: var(--px-color-danger);
246
+ --px-message-text-color: var(--px-color-danger);
247
+ --px-message-shadow-color: transparent;
248
+ filter: none;
249
+ }
250
+ .px-message--error.is-ghost {
251
+ --px-message-bg-color: var(--px-fill-color-blank);
252
+ --px-message-border-color: var(--px-color-error);
253
+ --px-message-text-color: var(--px-color-error);
254
+ --px-message-shadow-color: transparent;
255
+ filter: none;
256
+ }
257
+ /* ─── Timer bar ─── */
258
+ .px-message__timer {
259
+ position: absolute;
260
+ bottom: 2px;
261
+ left: 4px;
262
+ right: 4px;
263
+ height: 2px;
264
+ background: var(--px-message-text-color);
265
+ opacity: 0.5;
266
+ animation: px-message-timer linear forwards;
267
+ transform-origin: left;
268
+ }
269
+ /* Pause timer bar animation when message is hovered (matches JS timer pause) */
270
+ .px-message:hover .px-message__timer {
271
+ animation-play-state: paused;
272
+ }
273
+ @keyframes px-message-timer {
274
+ 0% { transform: scaleX(1);
275
+ }
276
+ 100% { transform: scaleX(0);
277
+ }
278
+ }
279
+ /* Dark mode — invert bevel highlights */
280
+ .px-dark .px-message {
281
+ --px-message-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.10);
282
+ --px-message-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.25);
283
+ }
284
+ /* Animation - Pixel style instant appear/disappear */
285
+ .px-message.fade-up-enter-from,
286
+ .px-message.fade-up-leave-to {
287
+ opacity: 0;
288
+ transform: translate(-50%, -100%);
289
+ }
290
+ .px-message.fade-up-enter-active,
291
+ .px-message.fade-up-leave-active {
292
+ transition: opacity 0.15s steps(3), transform 0.15s steps(3);
293
+ }
294
+ /* MessageBox Variables */
295
+ .px-message-box {
296
+ --px-message-box-title-color: var(--px-text-color-primary);
297
+ --px-message-box-width: 420px;
298
+ --px-message-box-font-size: var(--px-font-size-large);
299
+ --px-message-box-content-font-size: var(--px-font-size-base);
300
+ --px-message-box-content-color: var(--px-text-color-regular);
301
+ --px-message-box-padding-primary: 16px;
302
+ --px-message-box-font-line-height: 1.5;
303
+ --px-message-box-close-size: var(--px-font-size-base);
304
+ --px-message-box-border-color: var(--px-border-color);
305
+ --px-message-box-shadow-color: var(--px-shadow-color);
306
+ --px-message-box-divider-color: var(--px-border-color-light);
307
+
308
+ /* Beveled inset for 3D raised-panel depth */
309
+ --px-message-box-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
310
+ --px-message-box-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.08);
311
+ }
312
+ /* Overlay */
313
+ .px-overlay-message-box {
314
+ text-align: center;
315
+ position: fixed;
316
+ top: 0;
317
+ right: 0;
318
+ bottom: 0;
319
+ left: 0;
320
+ padding: 16px;
321
+ overflow: auto;
322
+ background-color: rgba(0, 0, 0, 0.5);
323
+ }
324
+ .px-overlay-message-box::after {
325
+ content: '';
326
+ display: inline-block;
327
+ height: 100%;
328
+ width: 0;
329
+ vertical-align: middle;
330
+ }
331
+ /* Base MessageBox Styles - Pixel Dialog */
332
+ .px-message-box {
333
+ display: inline-block;
334
+ position: relative;
335
+ max-width: var(--px-message-box-width);
336
+ width: 100%;
337
+ padding: var(--px-message-box-padding-primary);
338
+ vertical-align: middle;
339
+ font-size: var(--px-message-box-font-size);
340
+ font-family: var(--px-font-family);
341
+ text-align: left;
342
+ overflow: hidden;
343
+ backface-visibility: hidden;
344
+ box-sizing: border-box;
345
+ overflow-wrap: break-word;
346
+
347
+ /* Remove traditional styling — pseudo-elements handle visuals */
348
+ background: transparent;
349
+ border: none;
350
+ border-radius: 0;
351
+
352
+ /* Pixel shadow via drop-shadow (respects clip-path shape) */
353
+ filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-message-box-shadow-color));
354
+
355
+ /* No smooth transitions for pixel feel */
356
+ transition: none;
357
+ }
358
+ /* Border layer — 3-step staircase clip (8px corners) */
359
+ .px-message-box::before {
360
+ content: '';
361
+ position: absolute;
362
+ inset: 0;
363
+ background: var(--px-message-box-border-color);
364
+ clip-path: polygon(
365
+ 0 8px, 2px 8px, 2px 4px, 4px 4px, 4px 2px, 8px 2px, 8px 0,
366
+ calc(100% - 8px) 0, calc(100% - 8px) 2px, calc(100% - 4px) 2px, calc(100% - 4px) 4px, calc(100% - 2px) 4px, calc(100% - 2px) 8px, 100% 8px,
367
+ 100% calc(100% - 8px), calc(100% - 2px) calc(100% - 8px), calc(100% - 2px) calc(100% - 4px), calc(100% - 4px) calc(100% - 4px), calc(100% - 4px) calc(100% - 2px), calc(100% - 8px) calc(100% - 2px), calc(100% - 8px) 100%,
368
+ 8px 100%, 8px calc(100% - 2px), 4px calc(100% - 2px), 4px calc(100% - 4px), 2px calc(100% - 4px), 2px calc(100% - 8px), 0 calc(100% - 8px)
369
+ );
370
+ z-index: 0;
371
+ }
372
+ /* Fill layer — 4px inset, 2-step staircase chamfer, beveled */
373
+ .px-message-box::after {
374
+ content: '';
375
+ position: absolute;
376
+ inset: 4px;
377
+ background: var(--px-bg-color);
378
+ clip-path: polygon(
379
+ 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
380
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
381
+ 100% calc(100% - 4px), calc(100% - 2px) calc(100% - 4px), calc(100% - 2px) calc(100% - 2px), calc(100% - 4px) calc(100% - 2px), calc(100% - 4px) 100%,
382
+ 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
383
+ );
384
+ box-shadow: var(--px-message-box-inset-highlight), var(--px-message-box-inset-shadow);
385
+ z-index: 0;
386
+ }
387
+ .px-message-box:focus {
388
+ outline: none !important;
389
+ }
390
+ .px-message-box.is-center .px-message-box__title {
391
+ display: flex;
392
+ align-items: center;
393
+ justify-content: center;
394
+ gap: 6px;
395
+ }
396
+ .px-message-box.is-center .px-message-box__footer,
397
+ .px-message-box.is-center .px-message-box__content {
398
+ justify-content: center;
399
+ }
400
+ /* Draggable cursor */
401
+ .px-message-box.is-draggable .px-message-box__header {
402
+ cursor: move;
403
+ user-select: none;
404
+ }
405
+ .px-message-box :deep(.px-icon).px-icon-info {
406
+ color: var(--px-color-info) !important;
407
+ }
408
+ .px-message-box :deep(.px-icon).px-icon-success {
409
+ color: var(--px-color-success) !important;
410
+ }
411
+ .px-message-box :deep(.px-icon).px-icon-warning {
412
+ color: var(--px-color-warning) !important;
413
+ }
414
+ .px-message-box :deep(.px-icon).px-icon-danger {
415
+ color: var(--px-color-danger) !important;
416
+ }
417
+ .px-message-box :deep(.px-icon).px-icon-error {
418
+ color: var(--px-color-danger) !important;
419
+ }
420
+ .px-message-box .px-message-box__header {
421
+ position: relative;
422
+ z-index: 1;
423
+ display: flex;
424
+ align-items: flex-start;
425
+ justify-content: space-between;
426
+ padding-bottom: var(--px-message-box-padding-primary);
427
+ }
428
+ .px-message-box .px-message-box__header .px-message-box__title {
429
+ flex: 1;
430
+ color: var(--px-message-box-title-color);
431
+ font-size: var(--px-message-box-font-size);
432
+ font-family: var(--px-font-family);
433
+ font-weight: 500;
434
+ line-height: var(--px-message-box-font-line-height);
435
+ }
436
+ /* Pixel-dashed divider at bottom */
437
+ .px-message-box .px-message-box__header::after {
438
+ content: "";
439
+ position: absolute;
440
+ bottom: 0;
441
+ left: 0;
442
+ right: 0;
443
+ height: 2px;
444
+ background-image: repeating-linear-gradient(
445
+ to right,
446
+ var(--px-message-box-divider-color) 0px,
447
+ var(--px-message-box-divider-color) 6px,
448
+ transparent 6px,
449
+ transparent 12px
450
+ );
451
+ }
452
+ .px-message-box .px-message-box__header .px-message-box__header-btn {
453
+ flex-shrink: 0;
454
+ margin-left: 8px;
455
+ padding: 0;
456
+ border: none;
457
+ outline: none;
458
+ background: transparent;
459
+ font-size: var(--px-message-box-close-size);
460
+ cursor: pointer;
461
+ z-index: 1;
462
+ transition: none;
463
+ display: flex;
464
+ align-items: center;
465
+ justify-content: center;
466
+ }
467
+ .px-message-box .px-message-box__header .px-message-box__header-btn i {
468
+ color: var(--px-text-color-secondary);
469
+ font-size: inherit;
470
+ }
471
+ .px-message-box .px-message-box__header .px-message-box__header-btn .px-icon {
472
+ cursor: pointer;
473
+ transition: none;
474
+ }
475
+ .px-message-box .px-message-box__header .px-message-box__header-btn .px-icon:hover {
476
+ color: var(--px-color-danger);
477
+ transform: translate(-1px, -1px);
478
+ }
479
+ .px-message-box .px-message-box__header .px-message-box__header-btn .px-icon:active {
480
+ transform: translate(1px, 1px);
481
+ }
482
+ .px-message-box .px-message-box__content {
483
+ position: relative;
484
+ z-index: 1;
485
+ display: flex;
486
+ align-items: center;
487
+ gap: 12px;
488
+ font-size: var(--px-message-box-content-font-size);
489
+ font-family: var(--px-font-family);
490
+ color: var(--px-message-box-content-color);
491
+ padding-top: var(--px-message-box-padding-primary);
492
+ }
493
+ .px-message-box .px-message-box__content .px-message-box__message {
494
+ margin: 0;
495
+ }
496
+ .px-message-box .px-message-box__content .px-message-box__message p {
497
+ margin: 0;
498
+ line-height: var(--px-message-box-font-line-height);
499
+ }
500
+ .px-message-box .px-message-box__input {
501
+ position: relative;
502
+ z-index: 1;
503
+ padding-top: 12px;
504
+ }
505
+ .px-message-box .px-message-box__error {
506
+ position: relative;
507
+ z-index: 1;
508
+ color: var(--px-color-danger);
509
+ font-size: 12px;
510
+ font-family: var(--px-font-family);
511
+ margin-top: 4px;
512
+ }
513
+ .px-message-box .px-message-box__footer {
514
+ position: relative;
515
+ z-index: 1;
516
+ display: flex;
517
+ flex-wrap: wrap;
518
+ justify-content: flex-end;
519
+ align-items: center;
520
+ padding-top: var(--px-message-box-padding-primary);
521
+ gap: 8px;
522
+ }
523
+ /* Type-colored borders */
524
+ .px-message-box.px-message-box--info {
525
+ --px-message-box-border-color: var(--px-color-info);
526
+ --px-message-box-shadow-color: var(--px-color-info-dark);
527
+ --px-message-box-divider-color: var(--px-color-info-light-5, var(--px-color-info));
528
+ }
529
+ .px-message-box.px-message-box--success {
530
+ --px-message-box-border-color: var(--px-color-success);
531
+ --px-message-box-shadow-color: var(--px-color-success-dark);
532
+ --px-message-box-divider-color: var(--px-color-success-light-5, var(--px-color-success));
533
+ }
534
+ .px-message-box.px-message-box--warning {
535
+ --px-message-box-border-color: var(--px-color-warning);
536
+ --px-message-box-shadow-color: var(--px-color-warning-dark);
537
+ --px-message-box-divider-color: var(--px-color-warning-light-5, var(--px-color-warning));
538
+ }
539
+ .px-message-box.px-message-box--danger {
540
+ --px-message-box-border-color: var(--px-color-danger);
541
+ --px-message-box-shadow-color: var(--px-color-danger-dark);
542
+ --px-message-box-divider-color: var(--px-color-danger-light-5, var(--px-color-danger));
543
+ }
544
+ /* Dark mode — invert bevel highlights */
545
+ .px-dark .px-message-box {
546
+ --px-message-box-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.10);
547
+ --px-message-box-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.25);
548
+ }
549
+ /* Animation */
550
+ .fade-in-linear-enter-active .px-overlay-message-box {
551
+ animation: msgbox-fade-in 0.15s steps(3);
552
+ }
553
+ .fade-in-linear-leave-active .px-overlay-message-box {
554
+ animation: msgbox-fade-in 0.15s steps(3) reverse;
555
+ }
556
+ @keyframes msgbox-fade-in {
557
+ 0% {
558
+ transform: translate3d(0, -10px, 0);
559
+ opacity: 0;
560
+ }
561
+ 100% {
562
+ transform: translate3d(0, 0, 0);
563
+ opacity: 1;
564
+ }
565
+ }