sakana-element 2.2.0 → 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 (130) hide show
  1. package/README.md +95 -22
  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-CoFWwBwv.js → Badge-BmxZXX8k.js} +2 -2
  5. package/dist/es/{Breadcrumb-BtrwTVKW.js → Breadcrumb-BP8MSklj.js} +2 -2
  6. package/dist/es/{Button-S_31-UWJ.js → Button-BJHtN7gh.js} +2 -2
  7. package/dist/es/{Card-DcW6nHYD.js → Card-DJHkCmsz.js} +2 -2
  8. package/dist/es/Checkbox-DX8L3fyp.js +51 -0
  9. package/dist/es/{Collapse-DsS7M-m3.js → Collapse-Ir3V9CuO.js} +2 -2
  10. package/dist/es/{ConfigProvider-BgIewHXP.js → ConfigProvider-CsbSqwwi.js} +1 -1
  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-BQ59woas.js → FileInput-BE26BmXm.js} +3 -3
  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-CiE4bPJN.js → Input-C5HuVehE.js} +6 -6
  19. package/dist/es/{Link-B9B2APZq.js → Link-Av9RdcFv.js} +1 -1
  20. package/dist/es/{Loading-BW99pE5N.js → Loading-CBNDUWQd.js} +12 -12
  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-Dwqv8isB.js → Select-7ZxUCS8z.js} +13 -13
  29. package/dist/es/{Switch-B1Gnv1tB.js → Switch-DiCsMJT3.js} +3 -3
  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 +90 -70
  34. package/dist/{theme → es/theme}/Avatar.css +13 -43
  35. package/dist/{theme → es/theme}/Breadcrumb.css +46 -4
  36. package/dist/es/theme/Card.css +347 -0
  37. package/dist/es/theme/Checkbox.css +484 -0
  38. package/dist/es/theme/Divider.css +111 -0
  39. package/dist/es/theme/Drawer.css +206 -0
  40. package/dist/es/theme/Dropdown.css +471 -0
  41. package/dist/es/theme/Indicator.css +159 -0
  42. package/dist/{theme → es/theme}/Input.css +1 -0
  43. package/dist/{theme → es/theme}/Link.css +22 -3
  44. package/dist/{theme → es/theme}/Loading.css +50 -12
  45. package/dist/{theme → es/theme}/Message.css +249 -40
  46. package/dist/es/theme/Notification.css +316 -0
  47. package/dist/es/theme/Popconfirm.css +46 -0
  48. package/dist/es/theme/Progress.css +278 -0
  49. package/dist/es/theme/Radio.css +426 -0
  50. package/dist/es/theme/Table.css +680 -0
  51. package/dist/es/theme/Tooltip.css +235 -0
  52. package/dist/es/utils-BS5vsvlM.js +101 -0
  53. package/dist/index.css +1 -1
  54. package/dist/types/components/Avatar/types.d.ts +0 -2
  55. package/dist/types/components/Checkbox/constants.d.ts +5 -0
  56. package/dist/types/components/Checkbox/index.d.ts +94 -0
  57. package/dist/types/components/Checkbox/types.d.ts +46 -0
  58. package/dist/types/components/Collapse/index.d.ts +5 -5
  59. package/dist/types/components/Divider/index.d.ts +30 -0
  60. package/dist/types/components/Divider/types.d.ts +10 -0
  61. package/dist/types/components/Drawer/constants.d.ts +1 -0
  62. package/dist/types/components/Drawer/index.d.ts +72 -0
  63. package/dist/types/components/Drawer/types.d.ts +20 -0
  64. package/dist/types/components/Dropdown/index.d.ts +11 -1
  65. package/dist/types/components/Dropdown/types.d.ts +3 -0
  66. package/dist/types/components/Dropdown/useDropdownKeyboard.d.ts +8 -0
  67. package/dist/types/components/FileInput/index.d.ts +5 -5
  68. package/dist/types/components/Indicator/constants.d.ts +2 -0
  69. package/dist/types/components/Indicator/index.d.ts +28 -0
  70. package/dist/types/components/Indicator/types.d.ts +10 -0
  71. package/dist/types/components/Input/index.d.ts +10 -10
  72. package/dist/types/components/Message/methods.d.ts +2 -0
  73. package/dist/types/components/Message/types.d.ts +7 -1
  74. package/dist/types/components/MessageBox/types.d.ts +14 -2
  75. package/dist/types/components/Notification/methods.d.ts +3 -0
  76. package/dist/types/components/Notification/types.d.ts +8 -2
  77. package/dist/types/components/Pixelate/constants.d.ts +2 -0
  78. package/dist/types/components/Pixelate/index.d.ts +71 -0
  79. package/dist/types/components/Pixelate/types.d.ts +23 -0
  80. package/dist/types/components/Popconfirm/index.d.ts +16 -7
  81. package/dist/types/components/Popconfirm/types.d.ts +2 -1
  82. package/dist/types/components/Progress/constants.d.ts +2 -0
  83. package/dist/types/components/Progress/index.d.ts +50 -0
  84. package/dist/types/components/Progress/types.d.ts +22 -0
  85. package/dist/types/components/Radio/constants.d.ts +5 -0
  86. package/dist/types/components/Radio/index.d.ts +88 -0
  87. package/dist/types/components/Radio/types.d.ts +43 -0
  88. package/dist/types/components/Select/index.d.ts +30 -21
  89. package/dist/types/components/Switch/index.d.ts +5 -5
  90. package/dist/types/components/Table/index.d.ts +27 -0
  91. package/dist/types/components/Table/types.d.ts +20 -0
  92. package/dist/types/components/Tooltip/index.d.ts +6 -0
  93. package/dist/types/components/Tooltip/types.d.ts +7 -0
  94. package/dist/types/components/index.d.ts +8 -0
  95. package/dist/types/hooks/index.d.ts +3 -1
  96. package/dist/types/hooks/useDraggable.d.ts +7 -0
  97. package/dist/types/hooks/useFocusTrap.d.ts +5 -0
  98. package/dist/types/utils/index.d.ts +1 -0
  99. package/dist/types/utils/instance-management.d.ts +40 -0
  100. package/dist/umd/index.css +1 -1
  101. package/dist/umd/index.css.gz +0 -0
  102. package/dist/umd/index.umd.cjs +4 -4
  103. package/dist/umd/index.umd.cjs.gz +0 -0
  104. package/package.json +59 -59
  105. package/dist/es/Avatar-CxsRW-wl.js +0 -9
  106. package/dist/es/Dropdown-GcomGMAI.js +0 -40
  107. package/dist/es/Form-j90EzLXU.js +0 -122
  108. package/dist/es/Message-DCNnTUje.js +0 -123
  109. package/dist/es/Notification-CBzY5904.js +0 -58
  110. package/dist/es/Popconfirm-DF6d2ORS.js +0 -23
  111. package/dist/es/Tooltip-k6gKnMyt.js +0 -74
  112. package/dist/es/hooks-BaG7l8K5.js +0 -116
  113. package/dist/es/utils-bsCscZfS.js +0 -84
  114. package/dist/theme/Card.css +0 -263
  115. package/dist/theme/Dropdown.css +0 -187
  116. package/dist/theme/Notification.css +0 -126
  117. package/dist/theme/Popconfirm.css +0 -30
  118. package/dist/theme/Tooltip.css +0 -111
  119. /package/dist/{theme → es/theme}/Alert.css +0 -0
  120. /package/dist/{theme → es/theme}/Badge.css +0 -0
  121. /package/dist/{theme → es/theme}/Button.css +0 -0
  122. /package/dist/{theme → es/theme}/Collapse.css +0 -0
  123. /package/dist/{theme → es/theme}/FileInput.css +0 -0
  124. /package/dist/{theme → es/theme}/Form.css +0 -0
  125. /package/dist/{theme → es/theme}/Icon.css +0 -0
  126. /package/dist/{theme → es/theme}/Overlay.css +0 -0
  127. /package/dist/{theme → es/theme}/Select.css +0 -0
  128. /package/dist/{theme → es/theme}/Switch.css +0 -0
  129. /package/dist/{theme → es/theme}/fonts/zpix.woff2 +0 -0
  130. /package/dist/{theme → es/theme}/index.css +0 -0
@@ -0,0 +1,159 @@
1
+ /* Indicator Variables */
2
+ .px-indicator[data-v-84fa8f8b] {
3
+ --px-indicator-bg-color: var(--px-color-primary);
4
+ --px-indicator-border-color: var(--px-color-primary-dark);
5
+ --px-indicator-shadow-color: var(--px-color-primary-dark);
6
+ --px-indicator-dot-size: 10px;
7
+ --px-indicator-offset-x: 0px;
8
+ --px-indicator-offset-y: 0px;
9
+ }
10
+ /* Base Container */
11
+ .px-indicator[data-v-84fa8f8b] {
12
+ position: relative;
13
+ display: inline-block;
14
+ width: fit-content;
15
+ }
16
+ .px-indicator.is-inline[data-v-84fa8f8b] {
17
+ display: inline-flex;
18
+ }
19
+ /* Indicator Item — absolutely positioned overlay */
20
+ .px-indicator__item[data-v-84fa8f8b] {
21
+ position: absolute;
22
+ z-index: 1;
23
+ display: inline-flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ white-space: nowrap;
27
+ pointer-events: auto;
28
+ transition: none;
29
+ }
30
+ /* ─── Shared 9-position grid for item & ping ─── */
31
+ .px-indicator__item--top-start[data-v-84fa8f8b],
32
+ .px-indicator__item--top-center[data-v-84fa8f8b],
33
+ .px-indicator__item--top-end[data-v-84fa8f8b],
34
+ .px-indicator__ping--top-start[data-v-84fa8f8b],
35
+ .px-indicator__ping--top-center[data-v-84fa8f8b],
36
+ .px-indicator__ping--top-end[data-v-84fa8f8b] {
37
+ top: 0;
38
+ --px-indicator-ty: -50%;
39
+ }
40
+ .px-indicator__item--middle-start[data-v-84fa8f8b],
41
+ .px-indicator__item--middle-center[data-v-84fa8f8b],
42
+ .px-indicator__item--middle-end[data-v-84fa8f8b],
43
+ .px-indicator__ping--middle-start[data-v-84fa8f8b],
44
+ .px-indicator__ping--middle-center[data-v-84fa8f8b],
45
+ .px-indicator__ping--middle-end[data-v-84fa8f8b] {
46
+ top: 50%;
47
+ --px-indicator-ty: -50%;
48
+ }
49
+ .px-indicator__item--bottom-start[data-v-84fa8f8b],
50
+ .px-indicator__item--bottom-center[data-v-84fa8f8b],
51
+ .px-indicator__item--bottom-end[data-v-84fa8f8b],
52
+ .px-indicator__ping--bottom-start[data-v-84fa8f8b],
53
+ .px-indicator__ping--bottom-center[data-v-84fa8f8b],
54
+ .px-indicator__ping--bottom-end[data-v-84fa8f8b] {
55
+ bottom: 0;
56
+ --px-indicator-ty: 50%;
57
+ }
58
+ .px-indicator__item--top-start[data-v-84fa8f8b],
59
+ .px-indicator__item--middle-start[data-v-84fa8f8b],
60
+ .px-indicator__item--bottom-start[data-v-84fa8f8b],
61
+ .px-indicator__ping--top-start[data-v-84fa8f8b],
62
+ .px-indicator__ping--middle-start[data-v-84fa8f8b],
63
+ .px-indicator__ping--bottom-start[data-v-84fa8f8b] {
64
+ left: 0;
65
+ --px-indicator-tx: -50%;
66
+ }
67
+ .px-indicator__item--top-center[data-v-84fa8f8b],
68
+ .px-indicator__item--middle-center[data-v-84fa8f8b],
69
+ .px-indicator__item--bottom-center[data-v-84fa8f8b],
70
+ .px-indicator__ping--top-center[data-v-84fa8f8b],
71
+ .px-indicator__ping--middle-center[data-v-84fa8f8b],
72
+ .px-indicator__ping--bottom-center[data-v-84fa8f8b] {
73
+ left: 50%;
74
+ --px-indicator-tx: -50%;
75
+ }
76
+ .px-indicator__item--top-end[data-v-84fa8f8b],
77
+ .px-indicator__item--middle-end[data-v-84fa8f8b],
78
+ .px-indicator__item--bottom-end[data-v-84fa8f8b],
79
+ .px-indicator__ping--top-end[data-v-84fa8f8b],
80
+ .px-indicator__ping--middle-end[data-v-84fa8f8b],
81
+ .px-indicator__ping--bottom-end[data-v-84fa8f8b] {
82
+ right: 0;
83
+ --px-indicator-tx: 50%;
84
+ }
85
+ /* Apply transform with offset */
86
+ .px-indicator__item[data-v-84fa8f8b],
87
+ .px-indicator__ping[data-v-84fa8f8b] {
88
+ transform: translate(
89
+ calc(var(--px-indicator-tx, 0%) + var(--px-indicator-offset-x)),
90
+ calc(var(--px-indicator-ty, 0%) + var(--px-indicator-offset-y))
91
+ );
92
+ }
93
+ /* ─── Shared pixel staircase clip-path ─── */
94
+ .px-indicator__item.is-dot[data-v-84fa8f8b],
95
+ .px-indicator__ping[data-v-84fa8f8b] {
96
+ width: var(--px-indicator-dot-size);
97
+ height: var(--px-indicator-dot-size);
98
+ background: var(--px-indicator-bg-color);
99
+ clip-path: polygon(
100
+ 0 2px, 2px 2px, 2px 0,
101
+ calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
102
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
103
+ 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
104
+ );
105
+ }
106
+ /* ─── Dot mode ─── */
107
+ .px-indicator__item.is-dot[data-v-84fa8f8b] {
108
+ border: none;
109
+ filter: drop-shadow(1px 1px 0px var(--px-indicator-shadow-color));
110
+ }
111
+ /* ─── Processing ping animation ─── */
112
+ .px-indicator__ping[data-v-84fa8f8b] {
113
+ position: absolute;
114
+ z-index: 0;
115
+ opacity: 0.75;
116
+ pointer-events: none;
117
+ animation: px-indicator-ping-84fa8f8b 1.5s steps(4, end) infinite;
118
+ }
119
+ @keyframes px-indicator-ping-84fa8f8b {
120
+ 0% {
121
+ scale: 1;
122
+ opacity: 0.75;
123
+ }
124
+ 75%, 100% {
125
+ scale: 2;
126
+ opacity: 0;
127
+ }
128
+ }
129
+ /* ─── Type color variants ─── */
130
+ .px-indicator__item--primary[data-v-84fa8f8b],
131
+ .px-indicator__ping--primary[data-v-84fa8f8b] {
132
+ --px-indicator-bg-color: var(--px-color-primary);
133
+ --px-indicator-border-color: var(--px-color-primary-dark);
134
+ --px-indicator-shadow-color: var(--px-color-primary-dark);
135
+ }
136
+ .px-indicator__item--success[data-v-84fa8f8b],
137
+ .px-indicator__ping--success[data-v-84fa8f8b] {
138
+ --px-indicator-bg-color: var(--px-color-success);
139
+ --px-indicator-border-color: var(--px-color-success-dark);
140
+ --px-indicator-shadow-color: var(--px-color-success-dark);
141
+ }
142
+ .px-indicator__item--info[data-v-84fa8f8b],
143
+ .px-indicator__ping--info[data-v-84fa8f8b] {
144
+ --px-indicator-bg-color: var(--px-color-info);
145
+ --px-indicator-border-color: var(--px-color-info-dark);
146
+ --px-indicator-shadow-color: var(--px-color-info-dark);
147
+ }
148
+ .px-indicator__item--warning[data-v-84fa8f8b],
149
+ .px-indicator__ping--warning[data-v-84fa8f8b] {
150
+ --px-indicator-bg-color: var(--px-color-warning);
151
+ --px-indicator-border-color: var(--px-color-warning-dark);
152
+ --px-indicator-shadow-color: var(--px-color-warning-dark);
153
+ }
154
+ .px-indicator__item--danger[data-v-84fa8f8b],
155
+ .px-indicator__ping--danger[data-v-84fa8f8b] {
156
+ --px-indicator-bg-color: var(--px-color-danger);
157
+ --px-indicator-border-color: var(--px-color-danger-dark);
158
+ --px-indicator-shadow-color: var(--px-color-danger-dark);
159
+ }
@@ -464,6 +464,7 @@
464
464
  .px-input__prefix,
465
465
  .px-input__suffix {
466
466
  display: inline-flex;
467
+ align-items: center;
467
468
  white-space: nowrap;
468
469
  flex-shrink: 0;
469
470
  flex-wrap: nowrap;
@@ -15,17 +15,36 @@
15
15
  text-decoration: none;
16
16
  transition: none;
17
17
  }
18
+ .px-link.is-underline[data-v-d754ba7d] {
19
+ text-decoration: none;
20
+ background-image: repeating-linear-gradient(
21
+ to right,
22
+ var(--px-link-text-color) 0px,
23
+ var(--px-link-text-color) 4px,
24
+ transparent 4px,
25
+ transparent 8px
26
+ );
27
+ background-repeat: no-repeat;
28
+ background-position: bottom 0 left 0;
29
+ background-size: 100% 2px;
30
+ padding-bottom: 2px;
31
+ }
18
32
  .px-link[data-v-d754ba7d]:hover {
19
33
  color: var(--px-link-hover-color);
34
+ transform: translate(-1px, -1px);
20
35
  }
21
- .px-link.is-underline[data-v-d754ba7d] {
22
- text-decoration: underline;
23
- text-underline-offset: 3px;
36
+ .px-link[data-v-d754ba7d]:focus-visible {
37
+ outline: 2px dashed var(--px-color-primary);
38
+ outline-offset: 2px;
39
+ }
40
+ .px-link[data-v-d754ba7d]:active {
41
+ transform: translate(1px, 1px);
24
42
  }
25
43
  .px-link.is-disabled[data-v-d754ba7d] {
26
44
  opacity: 0.5;
27
45
  cursor: not-allowed;
28
46
  pointer-events: none;
47
+ outline: none;
29
48
  }
30
49
  /* Type variants */
31
50
  .px-link--primary[data-v-d754ba7d] {
@@ -43,16 +43,27 @@
43
43
  .px-loading-indicator--danger[data-v-1435ecee] {
44
44
  --px-loading-indicator-color: var(--px-color-danger);
45
45
  }
46
+ /* ─── Pixel-art ring mask (24×24 Bresenham circle with 2×2 blocks) ─── */
47
+ .px-loading-indicator--spinner .px-loading-indicator__inner[data-v-1435ecee],
48
+ .px-loading-indicator--ring .px-loading-indicator__inner[data-v-1435ecee] {
49
+ --px-ring-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='8' y='2' width='8' height='2' fill='white'/%3E%3Crect x='16' y='4' width='2' height='2' fill='white'/%3E%3Crect x='18' y='6' width='2' height='2' fill='white'/%3E%3Crect x='20' y='8' width='2' height='8' fill='white'/%3E%3Crect x='18' y='16' width='2' height='2' fill='white'/%3E%3Crect x='16' y='18' width='2' height='2' fill='white'/%3E%3Crect x='8' y='20' width='8' height='2' fill='white'/%3E%3Crect x='6' y='18' width='2' height='2' fill='white'/%3E%3Crect x='4' y='16' width='2' height='2' fill='white'/%3E%3Crect x='2' y='8' width='2' height='8' fill='white'/%3E%3Crect x='4' y='6' width='2' height='2' fill='white'/%3E%3Crect x='6' y='4' width='2' height='2' fill='white'/%3E%3C/svg%3E");
50
+ }
46
51
  /* ─── Spinner variant ─── */
47
52
  .px-loading-indicator--spinner .px-loading-indicator__inner[data-v-1435ecee] {
48
53
  display: block;
49
54
  width: 100%;
50
55
  height: 100%;
51
- border: 2px solid transparent;
52
- border-top-color: var(--px-loading-indicator-color);
53
- border-right-color: var(--px-loading-indicator-color);
54
- border-radius: 50%;
55
56
  box-sizing: border-box;
57
+ background: conic-gradient(
58
+ var(--px-loading-indicator-color) 0deg 180deg,
59
+ transparent 180deg 360deg
60
+ );
61
+ -webkit-mask-image: var(--px-ring-mask);
62
+ -webkit-mask-size: contain;
63
+ -webkit-mask-repeat: no-repeat;
64
+ mask-image: var(--px-ring-mask);
65
+ mask-size: contain;
66
+ mask-repeat: no-repeat;
56
67
  animation: px-indicator-spin-1435ecee 0.8s steps(8) infinite;
57
68
  }
58
69
  @keyframes px-indicator-spin-1435ecee {
@@ -139,14 +150,18 @@
139
150
  display: block;
140
151
  width: 80%;
141
152
  height: 80%;
142
- border: 2px solid transparent;
143
- border-top-color: var(--px-loading-indicator-color);
144
- border-right-color: var(--px-loading-indicator-color);
145
- border-bottom-color: transparent;
146
- border-left-color: transparent;
147
- border-radius: 50%;
148
153
  box-sizing: border-box;
149
- animation: px-indicator-spin-1435ecee 1s steps(12) infinite;
154
+ background: conic-gradient(
155
+ var(--px-loading-indicator-color) 0deg 120deg,
156
+ transparent 120deg 360deg
157
+ );
158
+ -webkit-mask-image: var(--px-ring-mask);
159
+ -webkit-mask-size: contain;
160
+ -webkit-mask-repeat: no-repeat;
161
+ mask-image: var(--px-ring-mask);
162
+ mask-size: contain;
163
+ mask-repeat: no-repeat;
164
+ animation: px-indicator-spin-1435ecee 1s steps(8) infinite;
150
165
  }
151
166
  /* Loading Variables */
152
167
  .px-loading {
@@ -157,6 +172,7 @@
157
172
  --px-loading-font-size: var(--px-font-size-base);
158
173
  --px-loading-z-index: 20000;
159
174
  --px-loading-bg-color: rgba(255, 255, 255, 0.8);
175
+ --px-loading-dot-color: rgba(0, 0, 0, 0.02);
160
176
  }
161
177
  /* Base Loading Styles - Pixel Game Loading */
162
178
  .px-loading {
@@ -174,7 +190,15 @@
174
190
  height: var(--px-loading-mask-size);
175
191
  width: var(--px-loading-mask-size);
176
192
  z-index: var(--px-loading-z-index);
177
- background: var(--px-loading-bg-color);
193
+ background:
194
+ repeating-linear-gradient(
195
+ to right,
196
+ var(--px-loading-dot-color) 0px,
197
+ var(--px-loading-dot-color) 2px,
198
+ transparent 2px,
199
+ transparent 4px
200
+ ),
201
+ var(--px-loading-bg-color);
178
202
  display: flex;
179
203
  justify-content: center;
180
204
  align-items: center;
@@ -196,6 +220,7 @@
196
220
  font-family: var(--px-font-family);
197
221
  color: var(--px-text-color-primary);
198
222
  letter-spacing: 1px;
223
+ animation: px-loading-text-pulse 1.5s steps(2) infinite;
199
224
  }
200
225
  .px-loading .px-loading__spinner i {
201
226
  font-size: var(--px-loading-icon-size);
@@ -211,6 +236,18 @@
211
236
  transform: rotate(360deg);
212
237
  }
213
238
  }
239
+ /* Pixel-style text pulse */
240
+ @keyframes px-loading-text-pulse {
241
+ 0% {
242
+ opacity: 1;
243
+ }
244
+ 50% {
245
+ opacity: 0.4;
246
+ }
247
+ 100% {
248
+ opacity: 1;
249
+ }
250
+ }
214
251
  /* Parent element states */
215
252
  .px-loading-parent--relative {
216
253
  position: relative !important;
@@ -221,6 +258,7 @@
221
258
  /* Dark mode loading */
222
259
  .px-dark .px-loading {
223
260
  --px-loading-bg-color: rgba(30, 30, 46, 0.85);
261
+ --px-loading-dot-color: rgba(255, 255, 255, 0.02);
224
262
  }
225
263
  .px-loading {
226
264
  --px-loading-bg-color: var(--d4003bba) !important;