sakana-element 2.2.0 → 2.4.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.
- package/README.md +98 -25
- package/dist/es/{Alert-C76ZWSVk.js → Alert-DfLsJvQD.js} +2 -2
- package/dist/es/Avatar-Ci4OKsv7.js +9 -0
- package/dist/es/{Badge-CoFWwBwv.js → Badge-B4wEToK6.js} +2 -2
- package/dist/es/{Breadcrumb-BtrwTVKW.js → Breadcrumb-BFzww8jd.js} +2 -2
- package/dist/es/{Button-S_31-UWJ.js → Button-DbFviVWb.js} +3 -3
- package/dist/es/{Card-DcW6nHYD.js → Card-ClRqKkc_.js} +2 -2
- package/dist/es/ChatBubble-DFEV_lVI.js +9 -0
- package/dist/es/Checkbox-l86YI3Fr.js +51 -0
- package/dist/es/{Collapse-DsS7M-m3.js → Collapse-B67v6RSE.js} +4 -4
- package/dist/es/{ConfigProvider-BgIewHXP.js → ConfigProvider-BCoGbcS5.js} +2 -2
- package/dist/es/Diff-BLiniLom.js +64 -0
- package/dist/es/Divider-DDSOHv8G.js +9 -0
- package/dist/es/Drawer-apeXw6EO.js +40 -0
- package/dist/es/Dropdown-By9qIErf.js +104 -0
- package/dist/es/{FileInput-BQ59woas.js → FileInput-CZ5jTfB_.js} +3 -3
- package/dist/es/Filter-B_1zU4Dq.js +40 -0
- package/dist/es/Form-B_XDnSjK.js +123 -0
- package/dist/es/{Icon-DpJyuj7c.js → Icon-D6qRB3pq.js} +1 -1
- package/dist/es/Indicator-C6Ip4dpP.js +9 -0
- package/dist/es/{Input-CiE4bPJN.js → Input-bThwBbNZ.js} +7 -7
- package/dist/es/Kbd-DXNjs7at.js +13 -0
- package/dist/es/{Link-B9B2APZq.js → Link-08Ee61Fv.js} +1 -1
- package/dist/es/{Loading-BW99pE5N.js → Loading-ByI9mjss.js} +13 -13
- package/dist/es/Message-CGG-lV5I.js +152 -0
- package/dist/es/Notification-B4clKY5h.js +69 -0
- package/dist/es/{Overlay-BRDSWspM.js → Overlay-6iPenJB1.js} +1 -1
- package/dist/es/Pixelate-A8J7jxDW.js +39 -0
- package/dist/es/Popconfirm-gcHGcOTz.js +23 -0
- package/dist/es/Progress-DFUBJQ4X.js +12 -0
- package/dist/es/Radio-CLBa1XIM.js +33 -0
- package/dist/es/Resizable-BWrFr2oj.js +151 -0
- package/dist/es/{Select-Dwqv8isB.js → Select-BtLqds1d.js} +20 -20
- package/dist/es/Skeleton-CGUQv3nQ.js +15 -0
- package/dist/es/{Switch-B1Gnv1tB.js → Switch-CZJ-S77_.js} +3 -3
- package/dist/es/Table-lHbxiyGq.js +10 -0
- package/dist/es/Tooltip-CdPqNYdn.js +74 -0
- package/dist/es/Validator-7ZT_nXDZ.js +40 -0
- package/dist/es/hooks-pU4JmsO3.js +171 -0
- package/dist/es/index.js +107 -70
- package/dist/es/utils-BXICIEsD.js +139 -0
- package/dist/es/{vendor-DXmGx29U.js → vendor-DrBJKLFW.js} +254 -210
- package/dist/index.css +1 -1
- package/dist/theme/Avatar.css +13 -43
- package/dist/theme/Badge.css +151 -151
- package/dist/theme/Breadcrumb.css +46 -4
- package/dist/theme/Button.css +72 -8
- package/dist/theme/Card.css +177 -93
- package/dist/theme/ChatBubble.css +218 -0
- package/dist/theme/Checkbox.css +604 -0
- package/dist/theme/Collapse.css +96 -96
- package/dist/theme/Diff.css +110 -0
- package/dist/theme/Divider.css +150 -0
- package/dist/theme/Drawer.css +206 -0
- package/dist/theme/Dropdown.css +359 -75
- package/dist/theme/FileInput.css +32 -0
- package/dist/theme/Filter.css +598 -0
- package/dist/theme/Indicator.css +159 -0
- package/dist/theme/Input.css +414 -406
- package/dist/theme/Kbd.css +104 -0
- package/dist/theme/Link.css +22 -3
- package/dist/theme/Loading.css +50 -12
- package/dist/theme/Message.css +250 -41
- package/dist/theme/Notification.css +232 -42
- package/dist/theme/Popconfirm.css +23 -7
- package/dist/theme/Progress.css +278 -0
- package/dist/theme/Radio.css +492 -0
- package/dist/theme/Resizable.css +95 -0
- package/dist/theme/Select.css +198 -88
- package/dist/theme/Skeleton.css +192 -0
- package/dist/theme/Switch.css +22 -3
- package/dist/theme/Table.css +680 -0
- package/dist/theme/Tooltip.css +150 -26
- package/dist/theme/Validator.css +25 -0
- package/dist/types/components/Avatar/types.d.ts +0 -2
- package/dist/types/components/ChatBubble/constants.d.ts +2 -0
- package/dist/types/components/ChatBubble/index.d.ts +27 -0
- package/dist/types/components/ChatBubble/types.d.ts +10 -0
- package/dist/types/components/Checkbox/constants.d.ts +5 -0
- package/dist/types/components/Checkbox/index.d.ts +94 -0
- package/dist/types/components/Checkbox/types.d.ts +46 -0
- package/dist/types/components/Collapse/index.d.ts +5 -5
- package/dist/types/components/Diff/constants.d.ts +4 -0
- package/dist/types/components/Diff/index.d.ts +67 -0
- package/dist/types/components/Diff/types.d.ts +29 -0
- package/dist/types/components/Divider/index.d.ts +30 -0
- package/dist/types/components/Divider/types.d.ts +10 -0
- package/dist/types/components/Drawer/constants.d.ts +1 -0
- package/dist/types/components/Drawer/index.d.ts +72 -0
- package/dist/types/components/Drawer/types.d.ts +20 -0
- package/dist/types/components/Dropdown/index.d.ts +13 -3
- package/dist/types/components/Dropdown/types.d.ts +3 -0
- package/dist/types/components/Dropdown/useDropdownKeyboard.d.ts +8 -0
- package/dist/types/components/FileInput/index.d.ts +5 -5
- package/dist/types/components/Filter/constants.d.ts +5 -0
- package/dist/types/components/Filter/index.d.ts +59 -0
- package/dist/types/components/Filter/types.d.ts +38 -0
- package/dist/types/components/Indicator/constants.d.ts +2 -0
- package/dist/types/components/Indicator/index.d.ts +28 -0
- package/dist/types/components/Indicator/types.d.ts +10 -0
- package/dist/types/components/Input/index.d.ts +10 -10
- package/dist/types/components/Kbd/constants.d.ts +3 -0
- package/dist/types/components/Kbd/index.d.ts +24 -0
- package/dist/types/components/Kbd/types.d.ts +10 -0
- package/dist/types/components/Message/methods.d.ts +2 -0
- package/dist/types/components/Message/types.d.ts +7 -1
- package/dist/types/components/MessageBox/types.d.ts +14 -2
- package/dist/types/components/Notification/methods.d.ts +3 -0
- package/dist/types/components/Notification/types.d.ts +8 -2
- package/dist/types/components/Pixelate/constants.d.ts +2 -0
- package/dist/types/components/Pixelate/index.d.ts +71 -0
- package/dist/types/components/Pixelate/types.d.ts +23 -0
- package/dist/types/components/Popconfirm/index.d.ts +18 -9
- package/dist/types/components/Popconfirm/types.d.ts +2 -1
- package/dist/types/components/Progress/constants.d.ts +2 -0
- package/dist/types/components/Progress/index.d.ts +50 -0
- package/dist/types/components/Progress/types.d.ts +22 -0
- package/dist/types/components/Radio/constants.d.ts +5 -0
- package/dist/types/components/Radio/index.d.ts +88 -0
- package/dist/types/components/Radio/types.d.ts +43 -0
- package/dist/types/components/Resizable/constants.d.ts +3 -0
- package/dist/types/components/Resizable/index.d.ts +135 -0
- package/dist/types/components/Resizable/types.d.ts +52 -0
- package/dist/types/components/Select/index.d.ts +32 -23
- package/dist/types/components/Skeleton/index.d.ts +36 -0
- package/dist/types/components/Skeleton/types.d.ts +12 -0
- package/dist/types/components/Switch/index.d.ts +5 -5
- package/dist/types/components/Table/index.d.ts +27 -0
- package/dist/types/components/Table/types.d.ts +20 -0
- package/dist/types/components/Tooltip/index.d.ts +9 -3
- package/dist/types/components/Tooltip/types.d.ts +7 -0
- package/dist/types/components/Validator/index.d.ts +52 -0
- package/dist/types/components/Validator/types.d.ts +13 -0
- package/dist/types/components/index.d.ts +15 -0
- package/dist/types/hooks/index.d.ts +3 -1
- package/dist/types/hooks/useDraggable.d.ts +7 -0
- package/dist/types/hooks/useFocusTrap.d.ts +5 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/instance-management.d.ts +40 -0
- package/dist/types/utils/pixelate.d.ts +10 -0
- package/dist/types/utils/style.d.ts +1 -0
- package/dist/umd/index.css +1 -1
- package/dist/umd/index.css.gz +0 -0
- package/dist/umd/index.umd.cjs +4 -4
- package/dist/umd/index.umd.cjs.gz +0 -0
- package/package.json +59 -59
- package/dist/es/Avatar-CxsRW-wl.js +0 -9
- package/dist/es/Dropdown-GcomGMAI.js +0 -40
- package/dist/es/Form-j90EzLXU.js +0 -122
- package/dist/es/Message-DCNnTUje.js +0 -123
- package/dist/es/Notification-CBzY5904.js +0 -58
- package/dist/es/Popconfirm-DF6d2ORS.js +0 -23
- package/dist/es/Tooltip-k6gKnMyt.js +0 -74
- package/dist/es/hooks-BaG7l8K5.js +0 -116
- package/dist/es/utils-bsCscZfS.js +0 -84
|
@@ -0,0 +1,192 @@
|
|
|
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
|
+
}
|
package/dist/theme/Switch.css
CHANGED
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
--px-switch-off-border-color: var(--px-border-color);
|
|
7
7
|
--px-switch-shadow-color: var(--px-shadow-color);
|
|
8
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);
|
|
9
17
|
}
|
|
10
18
|
/* Base Switch Styles - Pixel Toggle */
|
|
11
19
|
.px-switch {
|
|
@@ -40,6 +48,8 @@
|
|
|
40
48
|
}
|
|
41
49
|
.px-switch.is-checked .px-switch__core::after {
|
|
42
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);
|
|
43
53
|
}
|
|
44
54
|
.px-switch.is-checked .px-switch__core {
|
|
45
55
|
|
|
@@ -141,7 +151,7 @@
|
|
|
141
151
|
);
|
|
142
152
|
z-index: 0;
|
|
143
153
|
}
|
|
144
|
-
/* Fill layer — pixel shape */
|
|
154
|
+
/* Fill layer — pixel shape with sunken groove bevel */
|
|
145
155
|
.px-switch__core::after {
|
|
146
156
|
content: "";
|
|
147
157
|
position: absolute;
|
|
@@ -169,6 +179,7 @@
|
|
|
169
179
|
2px calc(100% - 4px),
|
|
170
180
|
0 calc(100% - 4px)
|
|
171
181
|
);
|
|
182
|
+
box-shadow: var(--px-switch-inset-shadow), var(--px-switch-inset-highlight);
|
|
172
183
|
z-index: 0;
|
|
173
184
|
}
|
|
174
185
|
/* The toggle handle - pixel square */
|
|
@@ -178,7 +189,7 @@
|
|
|
178
189
|
width: 18px;
|
|
179
190
|
height: 18px;
|
|
180
191
|
background: transparent;
|
|
181
|
-
transition:
|
|
192
|
+
transition: left 0.15s steps(3);
|
|
182
193
|
z-index: 2;
|
|
183
194
|
display: flex;
|
|
184
195
|
align-items: center;
|
|
@@ -205,7 +216,7 @@
|
|
|
205
216
|
0 calc(100% - 2px)
|
|
206
217
|
);
|
|
207
218
|
}
|
|
208
|
-
/* Handle fill layer */
|
|
219
|
+
/* Handle fill layer — raised bevel like a game D-pad button */
|
|
209
220
|
.px-switch__core .px-switch__core-action::after {
|
|
210
221
|
content: "";
|
|
211
222
|
position: absolute;
|
|
@@ -225,6 +236,7 @@
|
|
|
225
236
|
2px calc(100% - 2px),
|
|
226
237
|
0 calc(100% - 2px)
|
|
227
238
|
);
|
|
239
|
+
box-shadow: var(--px-switch-handle-highlight), var(--px-switch-handle-shadow);
|
|
228
240
|
}
|
|
229
241
|
/* Icon inside thumb */
|
|
230
242
|
.px-switch__core .px-switch__core-action .px-switch__icon {
|
|
@@ -302,3 +314,10 @@
|
|
|
302
314
|
var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-color-danger-dark)
|
|
303
315
|
);
|
|
304
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
|
+
}
|