sakana-element 2.4.2 → 2.5.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 (137) hide show
  1. package/dist/es/Alert-Bh6HeGRU.js +57 -0
  2. package/dist/es/Avatar-NF4bQN7G.js +5 -0
  3. package/dist/es/Badge-CHgxCwjo.js +7 -0
  4. package/dist/es/Breadcrumb-lEWE4Gu6.js +6 -0
  5. package/dist/es/Button-BM129Q7H.js +28 -0
  6. package/dist/es/Card-DAAF5q-g.js +8 -0
  7. package/dist/es/Carousel-Cc98Eg3m.js +11 -0
  8. package/dist/es/ChatBubble-DvRSjkcV.js +5 -0
  9. package/dist/es/Checkbox-WwH8lZhh.js +228 -0
  10. package/dist/es/Collapse-CR_RWE5e.js +11 -0
  11. package/dist/es/Collapsible-BHg6BxmU.js +12 -0
  12. package/dist/es/Command-DM1kXZ6n.js +45 -0
  13. package/dist/es/ConfigProvider-Bfp86-Oj.js +35 -0
  14. package/dist/es/Diff-Cs62zIBX.js +17 -0
  15. package/dist/es/Divider-Yq-jZAD6.js +5 -0
  16. package/dist/es/Drawer-DTIUkiIQ.js +6 -0
  17. package/dist/es/Dropdown-uSRkAnxr.js +115 -0
  18. package/dist/es/FileInput-rT_BAYOK.js +113 -0
  19. package/dist/es/Filter-pj4lwoJ3.js +13 -0
  20. package/dist/es/Icon-DXRJjblp.js +3 -0
  21. package/dist/es/Indicator-BeFoSuXk.js +5 -0
  22. package/dist/es/Input-DL5clGaQ.js +8 -0
  23. package/dist/es/Kbd-BK_mWOUQ.js +5 -0
  24. package/dist/es/Link-t_r2AmyI.js +5 -0
  25. package/dist/es/Loading-CfMeogGy.js +27 -0
  26. package/dist/es/Message-DVd-37vE.js +51 -0
  27. package/dist/es/Notification-DzFscVIb.js +22 -0
  28. package/dist/es/Pixelate-CnY7ulip.js +12 -0
  29. package/dist/es/Popconfirm-BeIJD0c1.js +8 -0
  30. package/dist/es/Progress-DkjXY0in.js +6 -0
  31. package/dist/es/Radio-BEFq7s6x.js +11 -0
  32. package/dist/es/Resizable-CiWcvscr.js +59 -0
  33. package/dist/es/Select-_AakAT4E.js +31 -0
  34. package/dist/es/Skeleton-HaEvHu7t.js +7 -0
  35. package/dist/es/Switch-DTwoMkmG.js +11 -0
  36. package/dist/es/Table-CtnNz-I3.js +5 -0
  37. package/dist/es/Tooltip-C3XS2Ue8.js +4 -0
  38. package/dist/es/Validator-B_i9IpaG.js +16 -0
  39. package/dist/es/index.js +41 -140
  40. package/dist/index.css +2 -1
  41. package/dist/theme/Alert.css +1 -295
  42. package/dist/theme/Avatar.css +1 -86
  43. package/dist/theme/Badge.css +1 -214
  44. package/dist/theme/Breadcrumb.css +1 -192
  45. package/dist/theme/Button.css +1 -1570
  46. package/dist/theme/Card.css +1 -347
  47. package/dist/theme/Carousel.css +1 -0
  48. package/dist/theme/ChatBubble.css +1 -218
  49. package/dist/theme/Checkbox.css +1 -604
  50. package/dist/theme/Collapse.css +1 -764
  51. package/dist/theme/Collapsible.css +1 -0
  52. package/dist/theme/Command.css +1 -0
  53. package/dist/theme/Diff.css +1 -110
  54. package/dist/theme/Divider.css +1 -150
  55. package/dist/theme/Drawer.css +1 -206
  56. package/dist/theme/Dropdown.css +1 -471
  57. package/dist/theme/FileInput.css +1 -397
  58. package/dist/theme/Filter.css +1 -598
  59. package/dist/theme/Indicator.css +1 -159
  60. package/dist/theme/Input.css +1 -647
  61. package/dist/theme/Kbd.css +1 -104
  62. package/dist/theme/Link.css +1 -69
  63. package/dist/theme/Loading.css +1 -266
  64. package/dist/theme/Message.css +1 -565
  65. package/dist/theme/Notification.css +1 -316
  66. package/dist/theme/Popconfirm.css +1 -46
  67. package/dist/theme/Progress.css +1 -278
  68. package/dist/theme/Radio.css +1 -492
  69. package/dist/theme/Resizable.css +1 -95
  70. package/dist/theme/Select.css +1 -584
  71. package/dist/theme/Skeleton.css +1 -192
  72. package/dist/theme/Switch.css +1 -323
  73. package/dist/theme/Table.css +1 -680
  74. package/dist/theme/Validator.css +1 -25
  75. package/dist/theme/index.css +1 -341
  76. package/dist/types/components/Badge/types.d.ts +2 -0
  77. package/dist/types/components/Carousel/constants.d.ts +6 -0
  78. package/dist/types/components/Carousel/index.d.ts +77 -0
  79. package/dist/types/components/Carousel/types.d.ts +27 -0
  80. package/dist/types/components/Collapsible/constants.d.ts +6 -0
  81. package/dist/types/components/Collapsible/index.d.ts +85 -0
  82. package/dist/types/components/Collapsible/types.d.ts +22 -0
  83. package/dist/types/components/Command/constants.d.ts +4 -0
  84. package/dist/types/components/Command/index.d.ts +216 -0
  85. package/dist/types/components/Command/types.d.ts +59 -0
  86. package/dist/types/components/Validator/index.d.ts +1 -0
  87. package/dist/types/components/index.d.ts +3 -0
  88. package/dist/types/hooks/index.d.ts +1 -1
  89. package/dist/umd/index.css +2 -1
  90. package/dist/umd/index.css.gz +0 -0
  91. package/dist/umd/index.umd.cjs +1255 -5
  92. package/dist/umd/index.umd.cjs.gz +0 -0
  93. package/package.json +1 -2
  94. package/dist/es/Alert-DdAShH-x.js +0 -19
  95. package/dist/es/Avatar-BGTH7x40.js +0 -9
  96. package/dist/es/Badge-CYZ55qNe.js +0 -14
  97. package/dist/es/Breadcrumb-BTWTtzrN.js +0 -15
  98. package/dist/es/Button-GsSCWg5x.js +0 -24
  99. package/dist/es/Card-BhgzwQqo.js +0 -16
  100. package/dist/es/ChatBubble-4F481Agj.js +0 -9
  101. package/dist/es/Checkbox-C7vZGSTh.js +0 -51
  102. package/dist/es/Collapse-CbcSQig5.js +0 -53
  103. package/dist/es/ConfigProvider-K1UzjlRm.js +0 -45
  104. package/dist/es/Diff-B747pgwb.js +0 -64
  105. package/dist/es/Divider-BSu_1-AU.js +0 -9
  106. package/dist/es/Drawer-I2lCgyba.js +0 -40
  107. package/dist/es/Dropdown-B0J_c8Wv.js +0 -104
  108. package/dist/es/FileInput-CFg1wpsH.js +0 -33
  109. package/dist/es/Filter-nA8j-62U.js +0 -40
  110. package/dist/es/Form-C1b8Igns.js +0 -123
  111. package/dist/es/Icon-BulvH9Wm.js +0 -27
  112. package/dist/es/Indicator-BbW4iUkh.js +0 -9
  113. package/dist/es/Input-BUHFulIW.js +0 -42
  114. package/dist/es/Kbd-CeP2wkdE.js +0 -13
  115. package/dist/es/Link-Dks2bXo8.js +0 -11
  116. package/dist/es/Loading-DoBtVGWo.js +0 -92
  117. package/dist/es/Message-Ba_P4Wvy.js +0 -152
  118. package/dist/es/Notification-DzG8dLuk.js +0 -69
  119. package/dist/es/Overlay-DeyTycv0.js +0 -12
  120. package/dist/es/Pixelate-B21HKbSE.js +0 -39
  121. package/dist/es/Popconfirm-BqN3JxJ_.js +0 -23
  122. package/dist/es/Progress--6EJjbbM.js +0 -12
  123. package/dist/es/Radio-CrdrvrFH.js +0 -33
  124. package/dist/es/Resizable-By3ijQf0.js +0 -151
  125. package/dist/es/Select-Cq1Ucs_U.js +0 -133
  126. package/dist/es/Skeleton-ChCVgMSk.js +0 -15
  127. package/dist/es/Switch-DURmSH-T.js +0 -34
  128. package/dist/es/Table-BE2f9u65.js +0 -10
  129. package/dist/es/Tooltip-DR4Mc5Fh.js +0 -74
  130. package/dist/es/Validator-BYn72MYn.js +0 -40
  131. package/dist/es/hooks-dJGu-5DG.js +0 -170
  132. package/dist/es/utils-CnCdZsHG.js +0 -155
  133. package/dist/es/vendor-eombfMkP.js +0 -1351
  134. package/dist/theme/Form.css +0 -83
  135. package/dist/theme/Icon.css +0 -168
  136. package/dist/theme/Overlay.css +0 -12
  137. package/dist/theme/Tooltip.css +0 -235
@@ -1,192 +1 @@
1
- /* ─── Skeleton Variables ─── */
2
- .px-skeleton {
3
- --px-skeleton-bg-color: var(--px-fill-color-darker, #e0e0e0);
4
- --px-skeleton-shimmer-color: var(--px-fill-color-light, #f5f5f5);
5
- --px-skeleton-border-color: var(--px-border-color, #c0c0c0);
6
- --px-skeleton-shadow-color: var(--px-shadow-color, rgba(0, 0, 0, 0.15));
7
-
8
- /* Inset bevels (sunken look — opposite of Button's raised look) */
9
- --px-skeleton-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.3);
10
- --px-skeleton-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.12);
11
-
12
- /* Dither overlay color */
13
- --px-skeleton-dither-color: rgba(255, 255, 255, 0.15);
14
- }
15
- /* ─── Base bone / row — positioned container ─── */
16
- .px-skeleton__bone,
17
- .px-skeleton__row {
18
- display: block;
19
- position: relative;
20
- background: transparent;
21
-
22
- /* Pixel drop-shadow traces the pseudo-element shapes */
23
- filter: drop-shadow(2px 2px 0 var(--px-skeleton-shadow-color));
24
- }
25
- /* Border layer */
26
- .px-skeleton__bone::before, .px-skeleton__row::before {
27
- content: '';
28
- position: absolute;
29
- inset: 0;
30
- background: var(--px-skeleton-border-color);
31
- z-index: -1;
32
- }
33
- /* Fill layer — inset by border width */
34
- .px-skeleton__bone::after, .px-skeleton__row::after {
35
- content: '';
36
- position: absolute;
37
- inset: 2px;
38
- background: var(--px-skeleton-bg-color);
39
- box-shadow:
40
- var(--px-skeleton-inset-highlight),
41
- var(--px-skeleton-inset-shadow);
42
- z-index: -1;
43
- }
44
- .px-skeleton__bone {
45
- width: 100%;
46
- height: 16px;
47
- }
48
- /* ─── Clip-paths per variant ─── */
49
- /* Rectangular / Text — 2px chamfered pixel corners */
50
- .px-skeleton--rectangular .px-skeleton__bone::before,
51
- .px-skeleton--rectangular .px-skeleton__bone::after,
52
- .px-skeleton--rectangular .px-skeleton__row::before,
53
- .px-skeleton--rectangular .px-skeleton__row::after,
54
- .px-skeleton--text .px-skeleton__bone::before,
55
- .px-skeleton--text .px-skeleton__bone::after,
56
- .px-skeleton--text .px-skeleton__row::before,
57
- .px-skeleton--text .px-skeleton__row::after {
58
- clip-path: polygon(
59
- 0 2px, 2px 2px, 2px 0,
60
- calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
61
- 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
62
- 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
63
- );
64
- }
65
- /* Rounded — 4px staircase corners */
66
- .px-skeleton--rounded .px-skeleton__bone::before,
67
- .px-skeleton--rounded .px-skeleton__bone::after {
68
- clip-path: polygon(
69
- 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
70
- calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
71
- 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%,
72
- 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
73
- );
74
- }
75
- /* Circular — 4-step staircase pixel circle (matching Avatar/Button) */
76
- .px-skeleton--circular .px-skeleton__bone::before,
77
- .px-skeleton--circular .px-skeleton__bone::after {
78
- clip-path: polygon(
79
- 0 10px, 2px 10px, 2px 6px, 4px 6px, 4px 4px, 6px 4px, 6px 2px, 10px 2px, 10px 0,
80
- calc(100% - 10px) 0, calc(100% - 10px) 2px, calc(100% - 6px) 2px, calc(100% - 6px) 4px, calc(100% - 4px) 4px, calc(100% - 4px) 6px, calc(100% - 2px) 6px, calc(100% - 2px) 10px, 100% 10px,
81
- 100% calc(100% - 10px), calc(100% - 2px) calc(100% - 10px), calc(100% - 2px) calc(100% - 6px), calc(100% - 4px) calc(100% - 6px), calc(100% - 4px) calc(100% - 4px), calc(100% - 6px) calc(100% - 4px), calc(100% - 6px) calc(100% - 2px), calc(100% - 10px) calc(100% - 2px), calc(100% - 10px) 100%,
82
- 10px 100%, 10px calc(100% - 2px), 6px calc(100% - 2px), 6px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 6px), 2px calc(100% - 6px), 2px calc(100% - 10px), 0 calc(100% - 10px)
83
- );
84
- }
85
- /* ─── Animation: Shimmer — Scanline sweep ─── */
86
- @keyframes px-skeleton-shimmer {
87
- 0% { background-position: -30% 0, 0 0;
88
- }
89
- 100% { background-position: 130% 0, 0 0;
90
- }
91
- }
92
- .px-skeleton.is-animated.is-animation-shimmer .px-skeleton__bone::after,
93
- .px-skeleton.is-animated.is-animation-shimmer .px-skeleton__row::after {
94
- background:
95
- /* Narrow hard-edged highlight band — scanline-like */
96
- linear-gradient(
97
- 90deg,
98
- transparent 0%,
99
- transparent 40%,
100
- var(--px-skeleton-shimmer-color) 45%,
101
- var(--px-skeleton-shimmer-color) 55%,
102
- transparent 60%,
103
- transparent 100%
104
- ),
105
- var(--px-skeleton-bg-color);
106
- background-size: 200% 100%, 100% 100%;
107
- animation: px-skeleton-shimmer 1.5s steps(12, jump-none) infinite;
108
- }
109
- /* ─── Animation: Pulse — Two-frame blink ─── */
110
- @keyframes px-skeleton-pulse {
111
- 0%, 100% { opacity: 1;
112
- }
113
- 50% { opacity: 0.5;
114
- }
115
- }
116
- .px-skeleton.is-animated.is-animation-pulse .px-skeleton__bone::after,
117
- .px-skeleton.is-animated.is-animation-pulse .px-skeleton__row::after {
118
- animation: px-skeleton-pulse 1.2s steps(2, jump-none) infinite;
119
- }
120
- /* ─── Animation: Dither — Checkerboard dissolve ─── */
121
- @keyframes px-skeleton-dither {
122
- 0% { background-position: 0 0, 0 0;
123
- }
124
- 25% { background-position: 2px 0, 0 0;
125
- }
126
- 50% { background-position: 2px 2px, 0 0;
127
- }
128
- 75% { background-position: 0 2px, 0 0;
129
- }
130
- 100% { background-position: 0 0, 0 0;
131
- }
132
- }
133
- .px-skeleton.is-animated.is-animation-dither .px-skeleton__bone::after,
134
- .px-skeleton.is-animated.is-animation-dither .px-skeleton__row::after {
135
- background:
136
- /* 2×2 pixel checkerboard dither pattern */
137
- repeating-conic-gradient(
138
- var(--px-skeleton-dither-color) 0% 25%,
139
- transparent 0% 50%
140
- ) 0 0 / 4px 4px,
141
- var(--px-skeleton-bg-color);
142
- animation: px-skeleton-dither 1.6s steps(4, jump-none) infinite;
143
- }
144
- /* ─── Text variant — thin horizontal bars ─── */
145
- .px-skeleton--text .px-skeleton__bone {
146
- height: 12px;
147
- }
148
- .px-skeleton--text .px-skeleton__row {
149
- height: 12px;
150
- margin-bottom: 8px;
151
- }
152
- .px-skeleton--text .px-skeleton__row:last-child {
153
- margin-bottom: 0;
154
- }
155
- /* ─── Circular variant ─── */
156
- .px-skeleton--circular .px-skeleton__bone {
157
- width: 40px;
158
- height: 40px;
159
- }
160
- /* ─── Size: Large ─── */
161
- .px-skeleton--large .px-skeleton__bone {
162
- height: 24px;
163
- }
164
- .px-skeleton--large .px-skeleton__row {
165
- height: 18px;
166
- }
167
- .px-skeleton--large.px-skeleton--circular .px-skeleton__bone {
168
- width: 56px;
169
- height: 56px;
170
- }
171
- /* ─── Size: Small ─── */
172
- .px-skeleton--small .px-skeleton__bone {
173
- height: 12px;
174
- }
175
- .px-skeleton--small .px-skeleton__row {
176
- height: 10px;
177
- margin-bottom: 6px;
178
- }
179
- .px-skeleton--small.px-skeleton--circular .px-skeleton__bone {
180
- width: 28px;
181
- height: 28px;
182
- }
183
- /* ─── Dark mode ─── */
184
- .px-dark .px-skeleton {
185
- --px-skeleton-bg-color: var(--px-fill-color-darker, #3a3a3a);
186
- --px-skeleton-shimmer-color: var(--px-fill-color, #4a4a4a);
187
- --px-skeleton-border-color: var(--px-border-color, #555);
188
- --px-skeleton-shadow-color: rgba(0, 0, 0, 0.3);
189
- --px-skeleton-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
190
- --px-skeleton-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
191
- --px-skeleton-dither-color: rgba(255, 255, 255, 0.08);
192
- }
1
+ .px-skeleton{--px-skeleton-bg-color:var(--px-fill-color-darker,#e0e0e0);--px-skeleton-shimmer-color:var(--px-fill-color-light,#f5f5f5);--px-skeleton-border-color:var(--px-border-color,silver);--px-skeleton-shadow-color:var(--px-shadow-color,#00000026);--px-skeleton-inset-highlight:inset 2px 2px 0 0 #ffffff4d;--px-skeleton-inset-shadow:inset -2px -2px 0 0 #0000001f;--px-skeleton-dither-color:#ffffff26}.px-skeleton__bone,.px-skeleton__row{filter:drop-shadow(2px 2px 0 var(--px-skeleton-shadow-color));background:0 0;display:block;position:relative}.px-skeleton__bone:before,.px-skeleton__row:before{content:"";background:var(--px-skeleton-border-color);z-index:-1;position:absolute;inset:0}.px-skeleton__bone:after,.px-skeleton__row:after{content:"";background:var(--px-skeleton-bg-color);box-shadow:var(--px-skeleton-inset-highlight), var(--px-skeleton-inset-shadow);z-index:-1;position:absolute;inset:2px}.px-skeleton__bone{width:100%;height:16px}.px-skeleton--rectangular .px-skeleton__bone:before,.px-skeleton--rectangular .px-skeleton__bone:after,.px-skeleton--rectangular .px-skeleton__row:before,.px-skeleton--rectangular .px-skeleton__row:after,.px-skeleton--text .px-skeleton__bone:before,.px-skeleton--text .px-skeleton__bone:after,.px-skeleton--text .px-skeleton__row:before,.px-skeleton--text .px-skeleton__row:after{clip-path:polygon(0 2px,2px 2px,2px 0,calc(100% - 2px) 0,calc(100% - 2px) 2px,100% 2px,100% calc(100% - 2px),calc(100% - 2px) calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,2px calc(100% - 2px),0 calc(100% - 2px))}.px-skeleton--rounded .px-skeleton__bone:before,.px-skeleton--rounded .px-skeleton__bone:after{clip-path:polygon(0 4px,2px 4px,2px 2px,4px 2px,4px 0,calc(100% - 4px) 0,calc(100% - 4px) 2px,calc(100% - 2px) 2px,calc(100% - 2px) 4px,100% 4px,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%,4px 100%,4px calc(100% - 2px),2px calc(100% - 2px),2px calc(100% - 4px),0 calc(100% - 4px))}.px-skeleton--circular .px-skeleton__bone:before,.px-skeleton--circular .px-skeleton__bone:after{clip-path:polygon(0 10px,2px 10px,2px 6px,4px 6px,4px 4px,6px 4px,6px 2px,10px 2px,10px 0,calc(100% - 10px) 0,calc(100% - 10px) 2px,calc(100% - 6px) 2px,calc(100% - 6px) 4px,calc(100% - 4px) 4px,calc(100% - 4px) 6px,calc(100% - 2px) 6px,calc(100% - 2px) 10px,100% 10px,100% calc(100% - 10px),calc(100% - 2px) calc(100% - 10px),calc(100% - 2px) calc(100% - 6px),calc(100% - 4px) calc(100% - 6px),calc(100% - 4px) calc(100% - 4px),calc(100% - 6px) calc(100% - 4px),calc(100% - 6px) calc(100% - 2px),calc(100% - 10px) calc(100% - 2px),calc(100% - 10px) 100%,10px 100%,10px calc(100% - 2px),6px calc(100% - 2px),6px calc(100% - 4px),4px calc(100% - 4px),4px calc(100% - 6px),2px calc(100% - 6px),2px calc(100% - 10px),0 calc(100% - 10px))}@keyframes px-skeleton-shimmer{0%{background-position:-30% 0,0 0}to{background-position:130% 0,0 0}}.px-skeleton.is-animated.is-animation-shimmer .px-skeleton__bone:after,.px-skeleton.is-animated.is-animation-shimmer .px-skeleton__row:after{background: linear-gradient(90deg, transparent 0%, transparent 40%, var(--px-skeleton-shimmer-color) 45%, var(--px-skeleton-shimmer-color) 55%, transparent 60%, transparent 100%), var(--px-skeleton-bg-color);background-size:200% 100%,100% 100%;animation:1.5s steps(12,jump-none) infinite px-skeleton-shimmer}@keyframes px-skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.px-skeleton.is-animated.is-animation-pulse .px-skeleton__bone:after,.px-skeleton.is-animated.is-animation-pulse .px-skeleton__row:after{animation:1.2s steps(2,jump-none) infinite px-skeleton-pulse}@keyframes px-skeleton-dither{0%{background-position:0 0,0 0}25%{background-position:2px 0,0 0}50%{background-position:2px 2px,0 0}75%{background-position:0 2px,0 0}to{background-position:0 0,0 0}}.px-skeleton.is-animated.is-animation-dither .px-skeleton__bone:after,.px-skeleton.is-animated.is-animation-dither .px-skeleton__row:after{background: repeating-conic-gradient(var(--px-skeleton-dither-color) 0% 25%, transparent 0% 50%) 0 0 / 4px 4px, var(--px-skeleton-bg-color);animation:1.6s steps(4,jump-none) infinite px-skeleton-dither}.px-skeleton--text .px-skeleton__bone{height:12px}.px-skeleton--text .px-skeleton__row{height:12px;margin-bottom:8px}.px-skeleton--text .px-skeleton__row:last-child{margin-bottom:0}.px-skeleton--circular .px-skeleton__bone{width:40px;height:40px}.px-skeleton--large .px-skeleton__bone{height:24px}.px-skeleton--large .px-skeleton__row{height:18px}.px-skeleton--large.px-skeleton--circular .px-skeleton__bone{width:56px;height:56px}.px-skeleton--small .px-skeleton__bone{height:12px}.px-skeleton--small .px-skeleton__row{height:10px;margin-bottom:6px}.px-skeleton--small.px-skeleton--circular .px-skeleton__bone{width:28px;height:28px}.px-dark .px-skeleton{--px-skeleton-bg-color:var(--px-fill-color-darker,#3a3a3a);--px-skeleton-shimmer-color:var(--px-fill-color,#4a4a4a);--px-skeleton-border-color:var(--px-border-color,#555);--px-skeleton-shadow-color:#0000004d;--px-skeleton-inset-highlight:inset 2px 2px 0 0 #ffffff14;--px-skeleton-inset-shadow:inset -2px -2px 0 0 #0003;--px-skeleton-dither-color:#ffffff14}
@@ -1,323 +1 @@
1
- /* Switch Variables */
2
- .px-switch {
3
- --px-switch-on-color: var(--px-color-primary);
4
- --px-switch-off-color: var(--px-fill-color-darker);
5
- --px-switch-on-border-color: var(--px-color-primary-dark);
6
- --px-switch-off-border-color: var(--px-border-color);
7
- --px-switch-shadow-color: var(--px-shadow-color);
8
- --px-switch-handle-color: var(--px-color-white);
9
-
10
- /* Track groove (sunken bevel) */
11
- --px-switch-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.12);
12
- --px-switch-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.1);
13
-
14
- /* Handle (raised bevel) */
15
- --px-switch-handle-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.3);
16
- --px-switch-handle-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.12);
17
- }
18
- /* Base Switch Styles - Pixel Toggle */
19
- .px-switch {
20
- display: inline-flex;
21
- align-items: center;
22
- font-size: var(--px-font-size-base);
23
- font-family: var(--px-font-family);
24
- line-height: 20px;
25
- height: 32px;
26
- }
27
- .px-switch .px-switch__input {
28
- position: absolute;
29
- width: 0;
30
- height: 0;
31
- opacity: 0;
32
- margin: 0;
33
- }
34
- .px-switch .px-switch__input:focus-visible ~ .px-switch__core {
35
- outline: 2px dashed var(--px-switch-on-color);
36
- outline-offset: 2px;
37
- }
38
- /* Disabled state */
39
- .px-switch.is-disabled {
40
- opacity: 0.5;
41
- }
42
- .px-switch.is-disabled .px-switch__core {
43
- cursor: not-allowed;
44
- }
45
- /* Checked state */
46
- .px-switch.is-checked .px-switch__core::before {
47
- background: var(--px-switch-on-border-color);
48
- }
49
- .px-switch.is-checked .px-switch__core::after {
50
- background: var(--px-switch-on-color);
51
- box-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.06),
52
- inset -2px -2px 0 0 rgba(255, 255, 255, 0.15);
53
- }
54
- .px-switch.is-checked .px-switch__core {
55
-
56
- filter: drop-shadow(
57
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-switch-on-border-color)
58
- );
59
- }
60
- .px-switch.is-checked .px-switch__core .px-switch__core-action {
61
- left: calc(100% - 20px);
62
- }
63
- .px-switch.is-checked .px-switch__core .px-switch__core-inner {
64
- padding: 0 22px 0 6px;
65
- }
66
- /* Size variants */
67
- .px-switch--large {
68
- font-size: var(--px-font-size-base);
69
- line-height: 24px;
70
- height: 40px;
71
- }
72
- .px-switch--large .px-switch__core {
73
- min-width: 60px;
74
- height: 32px;
75
- }
76
- .px-switch--large .px-switch__core .px-switch__core-action {
77
- width: 24px;
78
- height: 24px;
79
- }
80
- .px-switch--large.is-checked .px-switch__core .px-switch__core-action {
81
- left: calc(100% - 28px);
82
- }
83
- .px-switch--small {
84
- font-size: var(--px-font-size-small);
85
- line-height: 16px;
86
- height: 24px;
87
- }
88
- .px-switch--small .px-switch__core {
89
- min-width: 40px;
90
- height: 20px;
91
- filter: drop-shadow(2px 2px 0px var(--px-switch-shadow-color));
92
- }
93
- .px-switch--small .px-switch__core .px-switch__core-action {
94
- width: 14px;
95
- height: 14px;
96
- }
97
- .px-switch--small.is-checked .px-switch__core {
98
- filter: drop-shadow(2px 2px 0px var(--px-switch-on-border-color));
99
- }
100
- .px-switch--small.is-checked .px-switch__core .px-switch__core-action {
101
- left: calc(100% - 16px);
102
- }
103
- /* Core element - The actual toggle with pixel style */
104
- .px-switch__core {
105
- cursor: pointer;
106
- display: inline-flex;
107
- align-items: center;
108
- position: relative;
109
- height: 26px;
110
- min-width: 50px;
111
- box-sizing: border-box;
112
- outline: none;
113
- background: transparent;
114
- border: none;
115
-
116
- /* Pixel shadow via drop-shadow */
117
- filter: drop-shadow(
118
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-switch-shadow-color)
119
- );
120
-
121
- /* No smooth transitions */
122
- transition: none;
123
- }
124
- /* Border layer — pixel shape */
125
- .px-switch__core::before {
126
- content: "";
127
- position: absolute;
128
- inset: 0;
129
- background: var(--px-switch-off-border-color);
130
- clip-path: polygon(
131
- 0 4px,
132
- 2px 4px,
133
- 2px 2px,
134
- 4px 2px,
135
- 4px 0,
136
- calc(100% - 4px) 0,
137
- calc(100% - 4px) 2px,
138
- calc(100% - 2px) 2px,
139
- calc(100% - 2px) 4px,
140
- 100% 4px,
141
- 100% calc(100% - 4px),
142
- calc(100% - 2px) calc(100% - 4px),
143
- calc(100% - 2px) calc(100% - 2px),
144
- calc(100% - 4px) calc(100% - 2px),
145
- calc(100% - 4px) 100%,
146
- 4px 100%,
147
- 4px calc(100% - 2px),
148
- 2px calc(100% - 2px),
149
- 2px calc(100% - 4px),
150
- 0 calc(100% - 4px)
151
- );
152
- z-index: 0;
153
- }
154
- /* Fill layer — pixel shape with sunken groove bevel */
155
- .px-switch__core::after {
156
- content: "";
157
- position: absolute;
158
- inset: 2px;
159
- background: var(--px-switch-off-color);
160
- clip-path: polygon(
161
- 0 4px,
162
- 2px 4px,
163
- 2px 2px,
164
- 4px 2px,
165
- 4px 0,
166
- calc(100% - 4px) 0,
167
- calc(100% - 4px) 2px,
168
- calc(100% - 2px) 2px,
169
- calc(100% - 2px) 4px,
170
- 100% 4px,
171
- 100% calc(100% - 4px),
172
- calc(100% - 2px) calc(100% - 4px),
173
- calc(100% - 2px) calc(100% - 2px),
174
- calc(100% - 4px) calc(100% - 2px),
175
- calc(100% - 4px) 100%,
176
- 4px 100%,
177
- 4px calc(100% - 2px),
178
- 2px calc(100% - 2px),
179
- 2px calc(100% - 4px),
180
- 0 calc(100% - 4px)
181
- );
182
- box-shadow: var(--px-switch-inset-shadow), var(--px-switch-inset-highlight);
183
- z-index: 0;
184
- }
185
- /* The toggle handle - pixel square */
186
- .px-switch__core .px-switch__core-action {
187
- position: absolute;
188
- left: 4px;
189
- width: 18px;
190
- height: 18px;
191
- background: transparent;
192
- transition: left 0.15s steps(3);
193
- z-index: 2;
194
- display: flex;
195
- align-items: center;
196
- justify-content: center;
197
- }
198
- /* Handle border layer */
199
- .px-switch__core .px-switch__core-action::before {
200
- content: "";
201
- position: absolute;
202
- inset: 0;
203
- background: var(--px-border-color);
204
- clip-path: polygon(
205
- 0 2px,
206
- 2px 2px,
207
- 2px 0,
208
- calc(100% - 2px) 0,
209
- calc(100% - 2px) 2px,
210
- 100% 2px,
211
- 100% calc(100% - 2px),
212
- calc(100% - 2px) calc(100% - 2px),
213
- calc(100% - 2px) 100%,
214
- 2px 100%,
215
- 2px calc(100% - 2px),
216
- 0 calc(100% - 2px)
217
- );
218
- }
219
- /* Handle fill layer — raised bevel like a game D-pad button */
220
- .px-switch__core .px-switch__core-action::after {
221
- content: "";
222
- position: absolute;
223
- inset: 2px;
224
- background: var(--px-switch-handle-color);
225
- clip-path: polygon(
226
- 0 2px,
227
- 2px 2px,
228
- 2px 0,
229
- calc(100% - 2px) 0,
230
- calc(100% - 2px) 2px,
231
- 100% 2px,
232
- 100% calc(100% - 2px),
233
- calc(100% - 2px) calc(100% - 2px),
234
- calc(100% - 2px) 100%,
235
- 2px 100%,
236
- 2px calc(100% - 2px),
237
- 0 calc(100% - 2px)
238
- );
239
- box-shadow: var(--px-switch-handle-highlight), var(--px-switch-handle-shadow);
240
- }
241
- /* Icon inside thumb */
242
- .px-switch__core .px-switch__core-action .px-switch__icon {
243
- position: relative;
244
- z-index: 3;
245
- width: 12px !important;
246
- height: 12px !important;
247
- }
248
- /* Inner text container */
249
- .px-switch__core .px-switch__core-inner {
250
- width: 100%;
251
- height: 16px;
252
- display: flex;
253
- justify-content: center;
254
- align-items: center;
255
- overflow: hidden;
256
- padding: 0 6px 0 22px;
257
- z-index: 1;
258
- position: relative;
259
- }
260
- .px-switch__core .px-switch__core-inner .px-switch__core-inner-text {
261
- font-size: var(--px-font-size-extra-small);
262
- font-family: var(--px-font-family);
263
- color: var(--px-color-white);
264
- user-select: none;
265
- overflow: hidden;
266
- text-overflow: ellipsis;
267
- white-space: nowrap;
268
- text-transform: uppercase;
269
- letter-spacing: 1px;
270
- }
271
- /* Type variants */
272
- .px-switch--primary {
273
- --px-switch-on-color: var(--px-color-primary);
274
- --px-switch-on-border-color: var(--px-color-primary-dark);
275
- }
276
- .px-switch--primary.is-checked .px-switch__core {
277
- filter: drop-shadow(
278
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark)
279
- );
280
- }
281
- .px-switch--success {
282
- --px-switch-on-color: var(--px-color-success);
283
- --px-switch-on-border-color: var(--px-color-success-dark);
284
- }
285
- .px-switch--success.is-checked .px-switch__core {
286
- filter: drop-shadow(
287
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark)
288
- );
289
- }
290
- .px-switch--info {
291
- --px-switch-on-color: var(--px-color-info);
292
- --px-switch-on-border-color: var(--px-color-info-dark);
293
- }
294
- .px-switch--info.is-checked .px-switch__core {
295
- filter: drop-shadow(
296
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark)
297
- );
298
- }
299
- .px-switch--warning {
300
- --px-switch-on-color: var(--px-color-warning);
301
- --px-switch-on-border-color: var(--px-color-warning-dark);
302
- }
303
- .px-switch--warning.is-checked .px-switch__core {
304
- filter: drop-shadow(
305
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark)
306
- );
307
- }
308
- .px-switch--danger {
309
- --px-switch-on-color: var(--px-color-danger);
310
- --px-switch-on-border-color: var(--px-color-danger-dark);
311
- }
312
- .px-switch--danger.is-checked .px-switch__core {
313
- filter: drop-shadow(
314
- var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
315
- );
316
- }
317
- /* Dark mode bevel adjustments */
318
- html.dark .px-switch {
319
- --px-switch-inset-shadow: inset 2px 2px 0 0 rgba(0, 0, 0, 0.25);
320
- --px-switch-inset-highlight: inset -2px -2px 0 0 rgba(255, 255, 255, 0.05);
321
- --px-switch-handle-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.15);
322
- --px-switch-handle-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.2);
323
- }
1
+ .px-switch{--px-switch-on-color:var(--px-color-primary);--px-switch-off-color:var(--px-fill-color-darker);--px-switch-on-border-color:var(--px-color-primary-dark);--px-switch-off-border-color:var(--px-border-color);--px-switch-shadow-color:var(--px-shadow-color);--px-switch-handle-color:var(--px-color-white);--px-switch-inset-shadow:inset 2px 2px 0 0 #0000001f;--px-switch-inset-highlight:inset -2px -2px 0 0 #ffffff1a;--px-switch-handle-highlight:inset 2px 2px 0 0 #ffffff4d;--px-switch-handle-shadow:inset -2px -2px 0 0 #0000001f;font-size:var(--px-font-size-base);font-family:var(--px-font-family);align-items:center;height:32px;line-height:20px;display:inline-flex}.px-switch .px-switch__input{opacity:0;width:0;height:0;margin:0;position:absolute}.px-switch .px-switch__input:focus-visible~.px-switch__core{outline:2px dashed var(--px-switch-on-color);outline-offset:2px}.px-switch.is-disabled{opacity:.5}.px-switch.is-disabled .px-switch__core{cursor:not-allowed}.px-switch.is-checked .px-switch__core:before{background:var(--px-switch-on-border-color)}.px-switch.is-checked .px-switch__core:after{background:var(--px-switch-on-color);box-shadow:inset 2px 2px #0000000f,inset -2px -2px #ffffff26}.px-switch.is-checked .px-switch__core{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-switch-on-border-color))}.px-switch.is-checked .px-switch__core .px-switch__core-action{left:calc(100% - 20px)}.px-switch.is-checked .px-switch__core .px-switch__core-inner{padding:0 22px 0 6px}.px-switch--large{font-size:var(--px-font-size-base);height:40px;line-height:24px}.px-switch--large .px-switch__core{min-width:60px;height:32px}.px-switch--large .px-switch__core .px-switch__core-action{width:24px;height:24px}.px-switch--large.is-checked .px-switch__core .px-switch__core-action{left:calc(100% - 28px)}.px-switch--small{font-size:var(--px-font-size-small);height:24px;line-height:16px}.px-switch--small .px-switch__core{min-width:40px;height:20px;filter:drop-shadow(2px 2px 0px var(--px-switch-shadow-color))}.px-switch--small .px-switch__core .px-switch__core-action{width:14px;height:14px}.px-switch--small.is-checked .px-switch__core{filter:drop-shadow(2px 2px 0px var(--px-switch-on-border-color))}.px-switch--small.is-checked .px-switch__core .px-switch__core-action{left:calc(100% - 16px)}.px-switch__core{cursor:pointer;box-sizing:border-box;min-width:50px;height:26px;filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-switch-shadow-color));background:0 0;border:none;outline:none;align-items:center;transition:none;display:inline-flex;position:relative}.px-switch__core:before{content:"";background:var(--px-switch-off-border-color);clip-path:polygon(0 4px,2px 4px,2px 2px,4px 2px,4px 0,calc(100% - 4px) 0,calc(100% - 4px) 2px,calc(100% - 2px) 2px,calc(100% - 2px) 4px,100% 4px,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%,4px 100%,4px calc(100% - 2px),2px calc(100% - 2px),2px calc(100% - 4px),0 calc(100% - 4px));z-index:0;position:absolute;inset:0}.px-switch__core:after{content:"";background:var(--px-switch-off-color);clip-path:polygon(0 4px,2px 4px,2px 2px,4px 2px,4px 0,calc(100% - 4px) 0,calc(100% - 4px) 2px,calc(100% - 2px) 2px,calc(100% - 2px) 4px,100% 4px,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%,4px 100%,4px calc(100% - 2px),2px calc(100% - 2px),2px calc(100% - 4px),0 calc(100% - 4px));box-shadow:var(--px-switch-inset-shadow), var(--px-switch-inset-highlight);z-index:0;position:absolute;inset:2px}.px-switch__core .px-switch__core-action{z-index:2;background:0 0;justify-content:center;align-items:center;width:18px;height:18px;transition:left .15s steps(3,end);display:flex;position:absolute;left:4px}.px-switch__core .px-switch__core-action:before{content:"";background:var(--px-border-color);clip-path:polygon(0 2px,2px 2px,2px 0,calc(100% - 2px) 0,calc(100% - 2px) 2px,100% 2px,100% calc(100% - 2px),calc(100% - 2px) calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,2px calc(100% - 2px),0 calc(100% - 2px));position:absolute;inset:0}.px-switch__core .px-switch__core-action:after{content:"";background:var(--px-switch-handle-color);clip-path:polygon(0 2px,2px 2px,2px 0,calc(100% - 2px) 0,calc(100% - 2px) 2px,100% 2px,100% calc(100% - 2px),calc(100% - 2px) calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,2px calc(100% - 2px),0 calc(100% - 2px));box-shadow:var(--px-switch-handle-highlight), var(--px-switch-handle-shadow);position:absolute;inset:2px}.px-switch__core .px-switch__core-action .px-switch__icon{z-index:3;position:relative;width:12px!important;height:12px!important}.px-switch__core .px-switch__core-inner{z-index:1;justify-content:center;align-items:center;width:100%;height:16px;padding:0 6px 0 22px;display:flex;position:relative;overflow:hidden}.px-switch__core .px-switch__core-inner .px-switch__core-inner-text{font-size:var(--px-font-size-extra-small);font-family:var(--px-font-family);color:var(--px-color-white);-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;letter-spacing:1px;overflow:hidden}.px-switch--primary{--px-switch-on-color:var(--px-color-primary);--px-switch-on-border-color:var(--px-color-primary-dark)}.px-switch--primary.is-checked .px-switch__core{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-primary-dark))}.px-switch--success{--px-switch-on-color:var(--px-color-success);--px-switch-on-border-color:var(--px-color-success-dark)}.px-switch--success.is-checked .px-switch__core{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-success-dark))}.px-switch--info{--px-switch-on-color:var(--px-color-info);--px-switch-on-border-color:var(--px-color-info-dark)}.px-switch--info.is-checked .px-switch__core{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-info-dark))}.px-switch--warning{--px-switch-on-color:var(--px-color-warning);--px-switch-on-border-color:var(--px-color-warning-dark)}.px-switch--warning.is-checked .px-switch__core{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-warning-dark))}.px-switch--danger{--px-switch-on-color:var(--px-color-danger);--px-switch-on-border-color:var(--px-color-danger-dark)}.px-switch--danger.is-checked .px-switch__core{filter:drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark))}html.dark .px-switch{--px-switch-inset-shadow:inset 2px 2px 0 0 #00000040;--px-switch-inset-highlight:inset -2px -2px 0 0 #ffffff0d;--px-switch-handle-highlight:inset 2px 2px 0 0 #ffffff26;--px-switch-handle-shadow:inset -2px -2px 0 0 #0003}