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,680 @@
1
+ /* ─── Table Variables ─── */
2
+ .px-table {
3
+ --px-table-padding-y: 10px;
4
+ --px-table-padding-x: 14px;
5
+ --px-table-border-color: var(--px-border-color);
6
+ --px-table-bg-color: var(--px-bg-color-overlay);
7
+ --px-table-header-bg-color: var(--px-bg-color);
8
+ --px-table-row-hover-color: var(--px-fill-color-light);
9
+ --px-table-zebra-color: var(--px-fill-color);
10
+ --px-table-font-size: var(--px-font-size-base);
11
+ --px-table-shadow-color: var(--px-shadow-color);
12
+
13
+ /* Pixel-art interior styling */
14
+ --px-table-divider-color: var(--px-border-color-light);
15
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
16
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.08);
17
+ --px-table-footer-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
18
+ --px-table-footer-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.05);
19
+ --px-table-hover-overlay: rgba(0, 0, 0, 0.04);
20
+ --px-table-body-dot-color: rgba(0, 0, 0, 0.03);
21
+
22
+ /* Body cell subtle bevel */
23
+ --px-table-cell-highlight: inset 1px 1px 0 0 rgba(255, 255, 255, 0.12);
24
+ --px-table-cell-shadow: inset -1px -1px 0 0 rgba(0, 0, 0, 0.03);
25
+
26
+ /* Reduced bevel for outline variant */
27
+ --px-table-reduced-highlight: inset 1px 1px 0 0 rgba(255, 255, 255, 0.15);
28
+ --px-table-reduced-shadow: inset -1px -1px 0 0 rgba(0, 0, 0, 0.04);
29
+ --px-table-reduced-footer-highlight: inset 1px 1px 0 0 rgba(255, 255, 255, 0.10);
30
+ --px-table-reduced-footer-shadow: inset -1px -1px 0 0 rgba(0, 0, 0, 0.03);
31
+ }
32
+ /* ─── Base Table Styles — Pixel Game Aesthetic ─── */
33
+ .px-table {
34
+ position: relative;
35
+ width: 100%;
36
+ display: flex;
37
+ flex-direction: column;
38
+ font-family: var(--px-font-family);
39
+ font-size: var(--px-table-font-size);
40
+ color: var(--px-text-color-primary);
41
+ background: transparent;
42
+ border: none;
43
+ box-sizing: border-box;
44
+ transition: none;
45
+ overflow: hidden;
46
+ filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-table-shadow-color));
47
+ }
48
+ /* Border layer — filled with border color, clipped to pixel shape */
49
+ .px-table::before {
50
+ content: '';
51
+ position: absolute;
52
+ inset: 0;
53
+ background: var(--px-table-border-color);
54
+ clip-path: polygon(
55
+ 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
56
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
57
+ 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%,
58
+ 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
59
+ );
60
+ z-index: 0;
61
+ }
62
+ /* Fill layer — inset by border width, filled with bg color */
63
+ .px-table::after {
64
+ content: '';
65
+ position: absolute;
66
+ inset: 2px;
67
+ background: var(--px-table-bg-color);
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
+ z-index: 0;
75
+ }
76
+ /* ─── Inner Scroll Wrapper ─── */
77
+ .px-table__inner {
78
+ position: relative;
79
+ z-index: 1;
80
+ overflow: auto;
81
+ flex: 1 1 auto;
82
+ min-height: 0;
83
+ min-width: 0;
84
+ }
85
+ .px-table__inner table {
86
+ display: table;
87
+ width: 100%;
88
+ table-layout: fixed;
89
+ border-collapse: collapse;
90
+ border-spacing: 0;
91
+ margin: 0;
92
+ overflow-x: visible;
93
+ }
94
+ .px-table__inner th,
95
+ .px-table__inner td {
96
+ padding: var(--px-table-padding-y) var(--px-table-padding-x);
97
+ text-align: left;
98
+ vertical-align: middle;
99
+ border-bottom: none;
100
+ position: relative;
101
+ }
102
+ /* Header cells — beveled 3D raised panel with dot-grid texture */
103
+ .px-table__inner th {
104
+ font-weight: 600;
105
+ color: var(--px-text-color-primary);
106
+ background:
107
+ repeating-linear-gradient(
108
+ to right,
109
+ var(--px-table-body-dot-color) 0,
110
+ var(--px-table-body-dot-color) 2px,
111
+ transparent 2px,
112
+ transparent 4px
113
+ ),
114
+ var(--px-table-header-bg-color);
115
+ box-shadow:
116
+ var(--px-table-header-highlight),
117
+ var(--px-table-header-shadow);
118
+ }
119
+ /* Pixel-dashed divider under thead */
120
+ .px-table__inner thead th::after {
121
+ content: "";
122
+ position: absolute;
123
+ bottom: 0;
124
+ left: 0;
125
+ right: 0;
126
+ height: calc(var(--px-border-width) * 2);
127
+ background-image: repeating-linear-gradient(
128
+ to right,
129
+ var(--px-table-border-color) 0px,
130
+ var(--px-table-border-color) 6px,
131
+ transparent 6px,
132
+ transparent 12px
133
+ );
134
+ pointer-events: none;
135
+ }
136
+ /* Subtle pixel-dot grid + bevel on body cells */
137
+ .px-table__inner tbody td {
138
+ background-image: repeating-linear-gradient(
139
+ to right,
140
+ var(--px-table-body-dot-color) 0,
141
+ var(--px-table-body-dot-color) 2px,
142
+ transparent 2px,
143
+ transparent 4px
144
+ );
145
+ box-shadow:
146
+ var(--px-table-cell-highlight),
147
+ var(--px-table-cell-shadow);
148
+ }
149
+ /* Pixel-dashed row divider on body cells */
150
+ .px-table__inner tbody td::after {
151
+ content: "";
152
+ position: absolute;
153
+ bottom: 0;
154
+ left: 0;
155
+ right: 0;
156
+ height: var(--px-border-width);
157
+ background-image: repeating-linear-gradient(
158
+ to right,
159
+ var(--px-table-divider-color) 0px,
160
+ var(--px-table-divider-color) 6px,
161
+ transparent 6px,
162
+ transparent 12px
163
+ );
164
+ pointer-events: none;
165
+ }
166
+ /* Remove divider from last body row */
167
+ .px-table__inner tbody tr:last-child td::after {
168
+ display: none;
169
+ }
170
+ /* Footer cells — lighter beveled panel with dot-grid texture */
171
+ .px-table__inner tfoot th,
172
+ .px-table__inner tfoot td {
173
+ font-weight: 600;
174
+ background:
175
+ repeating-linear-gradient(
176
+ to right,
177
+ var(--px-table-body-dot-color) 0,
178
+ var(--px-table-body-dot-color) 2px,
179
+ transparent 2px,
180
+ transparent 4px
181
+ ),
182
+ var(--px-table-header-bg-color);
183
+ box-shadow:
184
+ var(--px-table-footer-highlight),
185
+ var(--px-table-footer-shadow);
186
+ }
187
+ /* Pixel-dashed divider at top of footer */
188
+ .px-table__inner tfoot tr:first-child th::before,
189
+ .px-table__inner tfoot tr:first-child td::before {
190
+ content: "";
191
+ position: absolute;
192
+ top: 0;
193
+ left: 0;
194
+ right: 0;
195
+ height: calc(var(--px-border-width) * 2);
196
+ background-image: repeating-linear-gradient(
197
+ to right,
198
+ var(--px-table-border-color) 0px,
199
+ var(--px-table-border-color) 6px,
200
+ transparent 6px,
201
+ transparent 12px
202
+ );
203
+ pointer-events: none;
204
+ }
205
+ /* ─── Caption ─── */
206
+ .px-table__inner table caption {
207
+ padding: var(--px-table-padding-y) var(--px-table-padding-x);
208
+ font-weight: 600;
209
+ text-align: center;
210
+ position: relative;
211
+ caption-side: top;
212
+ }
213
+ /* Pixel-dashed bottom divider (same pattern as thead divider) */
214
+ .px-table__inner table caption::after {
215
+ content: "";
216
+ position: absolute;
217
+ bottom: 0;
218
+ left: 0;
219
+ right: 0;
220
+ height: calc(var(--px-border-width) * 2);
221
+ background-image: repeating-linear-gradient(
222
+ to right,
223
+ var(--px-table-border-color) 0px,
224
+ var(--px-table-border-color) 6px,
225
+ transparent 6px,
226
+ transparent 12px
227
+ );
228
+ pointer-events: none;
229
+ }
230
+ /* ─── Pixel-Art Scrollbar ─── */
231
+ .px-table__inner {
232
+ /* Firefox */
233
+ scrollbar-width: thin;
234
+ scrollbar-color: var(--px-table-border-color) var(--px-fill-color-lighter);
235
+ }
236
+ /* Webkit (Chrome, Safari, Edge) */
237
+ .px-table__inner::-webkit-scrollbar {
238
+ width: 8px;
239
+ height: 8px;
240
+ }
241
+ .px-table__inner::-webkit-scrollbar-track {
242
+ background:
243
+ repeating-linear-gradient(
244
+ to right,
245
+ rgba(0, 0, 0, 0.03) 0,
246
+ rgba(0, 0, 0, 0.03) 2px,
247
+ transparent 2px,
248
+ transparent 4px
249
+ ),
250
+ var(--px-fill-color-lighter);
251
+ box-shadow: inset 1px 1px 0 0 rgba(0, 0, 0, 0.06), inset -1px -1px 0 0 rgba(255, 255, 255, 0.3);
252
+ }
253
+ .px-table__inner::-webkit-scrollbar-thumb {
254
+ background: var(--px-table-border-color);
255
+ box-shadow:
256
+ inset 1px 1px 0 0 rgba(255, 255, 255, 0.3),
257
+ inset -1px -1px 0 0 rgba(0, 0, 0, 0.15);
258
+ }
259
+ .px-table__inner::-webkit-scrollbar-corner {
260
+ background: var(--px-fill-color-lighter);
261
+ }
262
+ /* ─── Size Variants ─── */
263
+ .px-table--xs {
264
+ --px-table-padding-y: 4px;
265
+ --px-table-padding-x: 8px;
266
+ --px-table-font-size: var(--px-font-size-extra-small);
267
+ }
268
+ .px-table--sm {
269
+ --px-table-padding-y: 6px;
270
+ --px-table-padding-x: 10px;
271
+ --px-table-font-size: var(--px-font-size-small);
272
+ }
273
+ .px-table--md {
274
+ --px-table-padding-y: 10px;
275
+ --px-table-padding-x: 14px;
276
+ --px-table-font-size: var(--px-font-size-base);
277
+ }
278
+ .px-table--lg {
279
+ --px-table-padding-y: 14px;
280
+ --px-table-padding-x: 18px;
281
+ --px-table-font-size: var(--px-font-size-large);
282
+ }
283
+ .px-table--xl {
284
+ --px-table-padding-y: 18px;
285
+ --px-table-padding-x: 22px;
286
+ --px-table-font-size: var(--px-font-size-extra-large);
287
+ }
288
+ /* ─── Zebra Stripes — Checkerboard Texture ─── */
289
+ .px-table.is-zebra tbody tr:nth-child(even) td {
290
+ background:
291
+ linear-gradient(45deg, var(--px-table-hover-overlay) 25%, transparent 25%),
292
+ linear-gradient(-45deg, var(--px-table-hover-overlay) 25%, transparent 25%),
293
+ linear-gradient(45deg, transparent 75%, var(--px-table-hover-overlay) 75%),
294
+ linear-gradient(-45deg, transparent 75%, var(--px-table-hover-overlay) 75%),
295
+ var(--px-table-zebra-color);
296
+ background-size: 4px 4px, 4px 4px, 4px 4px, 4px 4px, auto;
297
+ background-position: 0 0, 0 2px, 2px -2px, -2px 0, 0 0;
298
+ }
299
+ /* ─── Hover Highlight — Diagonal Stripe Overlay ─── */
300
+ .px-table.is-hover tbody tr:hover td {
301
+ background:
302
+ repeating-linear-gradient(
303
+ -45deg,
304
+ transparent,
305
+ transparent 4px,
306
+ rgba(255, 255, 255, 0.18) 4px,
307
+ rgba(255, 255, 255, 0.18) 8px
308
+ ),
309
+ var(--px-table-row-hover-color);
310
+ }
311
+ /* ─── Full Borders — Pixel-Dashed Cell Outlines ─── */
312
+ .px-table.is-border th,
313
+ .px-table.is-border td {
314
+ border: none;
315
+ background-image:
316
+ /* Bottom edge — horizontal dashes */
317
+ repeating-linear-gradient(
318
+ to right,
319
+ var(--px-table-border-color) 0 6px,
320
+ transparent 6px 12px
321
+ ),
322
+ /* Right edge — vertical dashes */
323
+ repeating-linear-gradient(
324
+ to bottom,
325
+ var(--px-table-border-color) 0 6px,
326
+ transparent 6px 12px
327
+ );
328
+ background-size:
329
+ 100% var(--px-border-width),
330
+ var(--px-border-width) 100%;
331
+ background-position: 0 100%, 100% 0;
332
+ background-repeat: no-repeat;
333
+ }
334
+ /* Header cells: keep bevel, layer border dashes on top of header bg */
335
+ .px-table.is-border thead th {
336
+ background:
337
+ /* Dashed border edges (bottom + right only) */
338
+ repeating-linear-gradient(to right, var(--px-table-border-color) 0 6px, transparent 6px 12px) 0 100% / 100% var(--px-border-width) no-repeat,
339
+ repeating-linear-gradient(to bottom, var(--px-table-border-color) 0 6px, transparent 6px 12px) 100% 0 / var(--px-border-width) 100% no-repeat,
340
+ /* Dot texture */
341
+ repeating-linear-gradient(to right, var(--px-table-body-dot-color) 0 2px, transparent 2px 4px),
342
+ /* Base header color */
343
+ var(--px-table-header-bg-color);
344
+ }
345
+ /* Footer cells: keep bevel, layer border dashes on top of footer bg */
346
+ .px-table.is-border tfoot th,
347
+ .px-table.is-border tfoot td {
348
+ background:
349
+ repeating-linear-gradient(to right, var(--px-table-border-color) 0 6px, transparent 6px 12px) 0 100% / 100% var(--px-border-width) no-repeat,
350
+ repeating-linear-gradient(to bottom, var(--px-table-border-color) 0 6px, transparent 6px 12px) 100% 0 / var(--px-border-width) 100% no-repeat,
351
+ repeating-linear-gradient(to right, var(--px-table-body-dot-color) 0 2px, transparent 2px 4px),
352
+ var(--px-table-header-bg-color);
353
+ }
354
+ /* Disable pseudo-element dividers — border grid replaces them */
355
+ .px-table.is-border tbody td::after,
356
+ .px-table.is-border thead th::after,
357
+ .px-table.is-border tfoot tr:first-child th::before,
358
+ .px-table.is-border tfoot tr:first-child td::before {
359
+ display: none;
360
+ }
361
+ /* is-border + zebra: layer dashed borders on top of checkerboard texture */
362
+ .px-table.is-border.is-zebra tbody tr:nth-child(even) td {
363
+ background:
364
+ repeating-linear-gradient(to right, var(--px-table-border-color) 0 6px, transparent 6px 12px) 0 100% / 100% var(--px-border-width) no-repeat,
365
+ repeating-linear-gradient(to bottom, var(--px-table-border-color) 0 6px, transparent 6px 12px) 100% 0 / var(--px-border-width) 100% no-repeat,
366
+ linear-gradient(45deg, var(--px-table-hover-overlay) 25%, transparent 25%) 0 0 / 4px 4px,
367
+ linear-gradient(-45deg, var(--px-table-hover-overlay) 25%, transparent 25%) 0 2px / 4px 4px,
368
+ linear-gradient(45deg, transparent 75%, var(--px-table-hover-overlay) 75%) 2px -2px / 4px 4px,
369
+ linear-gradient(-45deg, transparent 75%, var(--px-table-hover-overlay) 75%) -2px 0 / 4px 4px,
370
+ var(--px-table-zebra-color);
371
+ }
372
+ /* is-border + hover: layer dashed borders on top of striped hover */
373
+ .px-table.is-border.is-hover tbody tr:hover td {
374
+ background:
375
+ repeating-linear-gradient(to right, var(--px-table-border-color) 0 6px, transparent 6px 12px) 0 100% / 100% var(--px-border-width) no-repeat,
376
+ repeating-linear-gradient(to bottom, var(--px-table-border-color) 0 6px, transparent 6px 12px) 100% 0 / var(--px-border-width) 100% no-repeat,
377
+ repeating-linear-gradient(-45deg, transparent, transparent 4px, rgba(255, 255, 255, 0.18) 4px, rgba(255, 255, 255, 0.18) 8px),
378
+ var(--px-table-row-hover-color);
379
+ }
380
+ /* ─── Pin Rows (Sticky Header/Footer) ─── */
381
+ .px-table.is-pin-rows thead th {
382
+ position: sticky;
383
+ top: 0;
384
+ z-index: 2;
385
+ }
386
+ .px-table.is-pin-rows tfoot th,
387
+ .px-table.is-pin-rows tfoot td {
388
+ position: sticky;
389
+ bottom: 0;
390
+ z-index: 2;
391
+ }
392
+ /* ─── Pin Cols (Sticky First Column) ─── */
393
+ .px-table.is-pin-cols th:first-child,
394
+ .px-table.is-pin-cols td:first-child {
395
+ position: sticky;
396
+ left: 0;
397
+ z-index: 1;
398
+ /* Layer dot-grid texture on top of solid bg to prevent texture loss */
399
+ background:
400
+ repeating-linear-gradient(
401
+ to right,
402
+ var(--px-table-body-dot-color) 0,
403
+ var(--px-table-body-dot-color) 2px,
404
+ transparent 2px,
405
+ transparent 4px
406
+ ),
407
+ var(--px-table-bg-color);
408
+ }
409
+ .px-table.is-pin-cols thead th:first-child {
410
+ background:
411
+ repeating-linear-gradient(
412
+ to right,
413
+ var(--px-table-body-dot-color) 0,
414
+ var(--px-table-body-dot-color) 2px,
415
+ transparent 2px,
416
+ transparent 4px
417
+ ),
418
+ var(--px-table-header-bg-color);
419
+ }
420
+ /* ─── Pin Rows + Cols intersection ─── */
421
+ .px-table.is-pin-rows.is-pin-cols thead th:first-child {
422
+ z-index: 3;
423
+ }
424
+ .px-table.is-pin-rows.is-pin-cols tfoot th:first-child,
425
+ .px-table.is-pin-rows.is-pin-cols tfoot td:first-child {
426
+ z-index: 3;
427
+ }
428
+ /* ─── Hide Header ─── */
429
+ .px-table.is-hide-header thead {
430
+ display: none;
431
+ }
432
+ /* ─── Color Type Variants ─── */
433
+ .px-table--primary {
434
+ --px-table-border-color: var(--px-color-primary);
435
+ --px-table-shadow-color: var(--px-color-primary-dark);
436
+ --px-table-header-bg-color: var(--px-color-primary-light-9);
437
+ --px-table-divider-color: var(--px-color-primary-light-5);
438
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
439
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
440
+ }
441
+ .px-table--primary.is-outline {
442
+ --px-table-bg-color: transparent;
443
+ --px-table-border-color: var(--px-color-primary);
444
+ --px-table-header-highlight: none;
445
+ --px-table-header-shadow: none;
446
+ --px-table-cell-highlight: none;
447
+ --px-table-cell-shadow: none;
448
+ }
449
+ .px-table--primary.is-ghost {
450
+ --px-table-bg-color: transparent;
451
+ --px-table-border-color: transparent;
452
+ --px-table-shadow-color: transparent;
453
+ --px-table-header-highlight: none;
454
+ --px-table-header-shadow: none;
455
+ --px-table-cell-highlight: none;
456
+ --px-table-cell-shadow: none;
457
+ }
458
+ .px-table--success {
459
+ --px-table-border-color: var(--px-color-success);
460
+ --px-table-shadow-color: var(--px-color-success-dark);
461
+ --px-table-header-bg-color: var(--px-color-success-light-9);
462
+ --px-table-divider-color: var(--px-color-success-light-5);
463
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
464
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
465
+ }
466
+ .px-table--success.is-outline {
467
+ --px-table-bg-color: transparent;
468
+ --px-table-border-color: var(--px-color-success);
469
+ --px-table-header-highlight: none;
470
+ --px-table-header-shadow: none;
471
+ --px-table-cell-highlight: none;
472
+ --px-table-cell-shadow: none;
473
+ }
474
+ .px-table--success.is-ghost {
475
+ --px-table-bg-color: transparent;
476
+ --px-table-border-color: transparent;
477
+ --px-table-shadow-color: transparent;
478
+ --px-table-header-highlight: none;
479
+ --px-table-header-shadow: none;
480
+ --px-table-cell-highlight: none;
481
+ --px-table-cell-shadow: none;
482
+ }
483
+ .px-table--info {
484
+ --px-table-border-color: var(--px-color-info);
485
+ --px-table-shadow-color: var(--px-color-info-dark);
486
+ --px-table-header-bg-color: var(--px-color-info-light-9);
487
+ --px-table-divider-color: var(--px-color-info-light-5);
488
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
489
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
490
+ }
491
+ .px-table--info.is-outline {
492
+ --px-table-bg-color: transparent;
493
+ --px-table-border-color: var(--px-color-info);
494
+ --px-table-header-highlight: none;
495
+ --px-table-header-shadow: none;
496
+ --px-table-cell-highlight: none;
497
+ --px-table-cell-shadow: none;
498
+ }
499
+ .px-table--info.is-ghost {
500
+ --px-table-bg-color: transparent;
501
+ --px-table-border-color: transparent;
502
+ --px-table-shadow-color: transparent;
503
+ --px-table-header-highlight: none;
504
+ --px-table-header-shadow: none;
505
+ --px-table-cell-highlight: none;
506
+ --px-table-cell-shadow: none;
507
+ }
508
+ .px-table--warning {
509
+ --px-table-border-color: var(--px-color-warning);
510
+ --px-table-shadow-color: var(--px-color-warning-dark);
511
+ --px-table-header-bg-color: var(--px-color-warning-light-9);
512
+ --px-table-divider-color: var(--px-color-warning-light-5);
513
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
514
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
515
+ }
516
+ .px-table--warning.is-outline {
517
+ --px-table-bg-color: transparent;
518
+ --px-table-border-color: var(--px-color-warning);
519
+ --px-table-header-highlight: none;
520
+ --px-table-header-shadow: none;
521
+ --px-table-cell-highlight: none;
522
+ --px-table-cell-shadow: none;
523
+ }
524
+ .px-table--warning.is-ghost {
525
+ --px-table-bg-color: transparent;
526
+ --px-table-border-color: transparent;
527
+ --px-table-shadow-color: transparent;
528
+ --px-table-header-highlight: none;
529
+ --px-table-header-shadow: none;
530
+ --px-table-cell-highlight: none;
531
+ --px-table-cell-shadow: none;
532
+ }
533
+ .px-table--danger {
534
+ --px-table-border-color: var(--px-color-danger);
535
+ --px-table-shadow-color: var(--px-color-danger-dark);
536
+ --px-table-header-bg-color: var(--px-color-danger-light-9);
537
+ --px-table-divider-color: var(--px-color-danger-light-5);
538
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
539
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
540
+ }
541
+ .px-table--danger.is-outline {
542
+ --px-table-bg-color: transparent;
543
+ --px-table-border-color: var(--px-color-danger);
544
+ --px-table-header-highlight: none;
545
+ --px-table-header-shadow: none;
546
+ --px-table-cell-highlight: none;
547
+ --px-table-cell-shadow: none;
548
+ }
549
+ .px-table--danger.is-ghost {
550
+ --px-table-bg-color: transparent;
551
+ --px-table-border-color: transparent;
552
+ --px-table-shadow-color: transparent;
553
+ --px-table-header-highlight: none;
554
+ --px-table-header-shadow: none;
555
+ --px-table-cell-highlight: none;
556
+ --px-table-cell-shadow: none;
557
+ }
558
+ /* ─── Outline Variant — pixel-cornered wireframe, transparent fill ─── */
559
+ .px-table.is-outline {
560
+ filter: none;
561
+ }
562
+ .px-table.is-outline::before {
563
+ background:
564
+ /* Top edge */
565
+ linear-gradient(var(--px-table-border-color), var(--px-table-border-color)) 0 0 / 100% 2px no-repeat,
566
+ /* Bottom edge */
567
+ linear-gradient(var(--px-table-border-color), var(--px-table-border-color)) 0 100% / 100% 2px no-repeat,
568
+ /* Left edge */
569
+ linear-gradient(var(--px-table-border-color), var(--px-table-border-color)) 0 0 / 2px 100% no-repeat,
570
+ /* Right edge */
571
+ linear-gradient(var(--px-table-border-color), var(--px-table-border-color)) 100% 0 / 2px 100% no-repeat;
572
+ /* clip-path inherited from base → pixel staircase corners preserved */
573
+ }
574
+ .px-table.is-outline::after {
575
+ background: transparent;
576
+ box-shadow: none;
577
+ }
578
+ /* ─── Shared Reduced Bevel for Outline ─── */
579
+ .px-table.is-outline .px-table__inner th {
580
+ box-shadow:
581
+ var(--px-table-reduced-highlight),
582
+ var(--px-table-reduced-shadow);
583
+ }
584
+ .px-table.is-outline .px-table__inner tfoot th,
585
+ .px-table.is-outline .px-table__inner tfoot td {
586
+ box-shadow:
587
+ var(--px-table-reduced-footer-highlight),
588
+ var(--px-table-reduced-footer-shadow);
589
+ }
590
+ /* ─── Ghost Variant — no border, no shadow, content-only ─── */
591
+ .px-table.is-ghost {
592
+ filter: none;
593
+ }
594
+ .px-table.is-ghost::before, .px-table.is-ghost::after { display: none;
595
+ }
596
+ /* ─── Hoverable — pixel-style diagonal lift/press on container ─── */
597
+ .px-table.is-hoverable {
598
+ cursor: pointer;
599
+ }
600
+ .px-table.is-hoverable:hover {
601
+ transform: translate(-2px, -2px);
602
+ filter: drop-shadow(5px 5px 0px var(--px-table-shadow-color));
603
+ }
604
+ .px-table.is-hoverable:active {
605
+ transform: translate(1px, 1px);
606
+ filter: drop-shadow(1px 1px 0px var(--px-table-shadow-color));
607
+ }
608
+ /* ─── Dark Mode ─── */
609
+ .px-dark .px-table,
610
+ .dark .px-table {
611
+ /* Invert bevel: reduce highlight, increase shadow for dark backgrounds */
612
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.10);
613
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.25);
614
+ --px-table-footer-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.06);
615
+ --px-table-footer-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.18);
616
+ --px-table-cell-highlight: inset 1px 1px 0 0 rgba(255, 255, 255, 0.05);
617
+ --px-table-cell-shadow: inset -1px -1px 0 0 rgba(0, 0, 0, 0.10);
618
+
619
+ /* Light-on-dark textures */
620
+ --px-table-hover-overlay: rgba(255, 255, 255, 0.04);
621
+ --px-table-body-dot-color: rgba(255, 255, 255, 0.03);
622
+
623
+ /* Reduced bevel (outline) — adjusted for dark backgrounds */
624
+ --px-table-reduced-highlight: inset 1px 1px 0 0 rgba(255, 255, 255, 0.08);
625
+ --px-table-reduced-shadow: inset -1px -1px 0 0 rgba(0, 0, 0, 0.12);
626
+ --px-table-reduced-footer-highlight: inset 1px 1px 0 0 rgba(255, 255, 255, 0.05);
627
+ --px-table-reduced-footer-shadow: inset -1px -1px 0 0 rgba(0, 0, 0, 0.10);
628
+ }
629
+ /* Dark mode scrollbar */
630
+ .px-dark .px-table .px-table__inner,
631
+ .dark .px-table .px-table__inner {
632
+ scrollbar-color: var(--px-border-color-lighter) var(--px-fill-color-dark);
633
+ }
634
+ .px-dark .px-table .px-table__inner::-webkit-scrollbar-track, .dark .px-table .px-table__inner::-webkit-scrollbar-track {
635
+ background:
636
+ repeating-linear-gradient(
637
+ to right,
638
+ rgba(255, 255, 255, 0.03) 0,
639
+ rgba(255, 255, 255, 0.03) 2px,
640
+ transparent 2px,
641
+ transparent 4px
642
+ ),
643
+ var(--px-fill-color-dark);
644
+ box-shadow: inset 1px 1px 0 0 rgba(0, 0, 0, 0.15), inset -1px -1px 0 0 rgba(255, 255, 255, 0.05);
645
+ }
646
+ .px-dark .px-table .px-table__inner::-webkit-scrollbar-thumb, .dark .px-table .px-table__inner::-webkit-scrollbar-thumb {
647
+ background: var(--px-border-color-lighter);
648
+ box-shadow:
649
+ inset 1px 1px 0 0 rgba(255, 255, 255, 0.12),
650
+ inset -1px -1px 0 0 rgba(0, 0, 0, 0.25);
651
+ }
652
+ .px-dark .px-table .px-table__inner::-webkit-scrollbar-corner, .dark .px-table .px-table__inner::-webkit-scrollbar-corner {
653
+ background: var(--px-fill-color-dark);
654
+ }
655
+ /* Dark mode color type bevel overrides */
656
+ .px-dark .px-table--primary,
657
+ .dark .px-table--primary {
658
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.12);
659
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.20);
660
+ }
661
+ .px-dark .px-table--success,
662
+ .dark .px-table--success {
663
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.12);
664
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.20);
665
+ }
666
+ .px-dark .px-table--info,
667
+ .dark .px-table--info {
668
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.12);
669
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.20);
670
+ }
671
+ .px-dark .px-table--warning,
672
+ .dark .px-table--warning {
673
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.12);
674
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.20);
675
+ }
676
+ .px-dark .px-table--danger,
677
+ .dark .px-table--danger {
678
+ --px-table-header-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.12);
679
+ --px-table-header-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.20);
680
+ }