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,206 @@
1
+ /* Drawer Variables */
2
+ .px-drawer[data-v-647267d6] {
3
+ position: relative;
4
+ display: block;
5
+ }
6
+ .px-drawer__content[data-v-647267d6] {
7
+ position: relative;
8
+ z-index: 0;
9
+ }
10
+ /* Overlay backdrop */
11
+ .px-drawer-overlay[data-v-647267d6] {
12
+ position: fixed;
13
+ inset: 0;
14
+ background: rgba(0, 0, 0, 0.45);
15
+ }
16
+ /* Sidebar panel — pixel-art style
17
+ Variables defined here (not on .px-drawer) because
18
+ <Teleport to="body"> moves this node out of .px-drawer
19
+ in the DOM, breaking CSS custom-property inheritance. */
20
+ .px-drawer__sidebar[data-v-647267d6] {
21
+ --px-drawer-bg-color: var(--px-bg-color);
22
+ --px-drawer-border-color: var(--px-border-color);
23
+ --px-drawer-shadow-color: var(--px-shadow-color);
24
+ --px-drawer-text-color: var(--px-text-color-primary);
25
+ --px-drawer-header-border-color: var(--px-border-color-light);
26
+ --px-drawer-padding: 16px;
27
+ --px-drawer-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
28
+ --px-drawer-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.08);
29
+
30
+ position: fixed;
31
+ top: 0;
32
+ bottom: 0;
33
+ background: transparent;
34
+ color: var(--px-drawer-text-color);
35
+ font-family: var(--px-font-family);
36
+ font-size: var(--px-font-size-base);
37
+ display: flex;
38
+ flex-direction: column;
39
+ overflow: hidden;
40
+ box-sizing: border-box;
41
+
42
+ /* Pixel shadow */
43
+ filter: drop-shadow(
44
+ var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-drawer-shadow-color)
45
+ );
46
+ }
47
+ /* Left placement — inner edge is the right side */
48
+ .px-drawer__sidebar--left[data-v-647267d6] {
49
+ left: 0;
50
+ }
51
+ /* Border layer — staircase only on right (inner) edge */
52
+ .px-drawer__sidebar--left[data-v-647267d6]::before {
53
+ content: '';
54
+ position: absolute;
55
+ inset: 0;
56
+ background: var(--px-drawer-border-color);
57
+ clip-path: polygon(
58
+ 0 0,
59
+ calc(100% - 8px) 0,
60
+ calc(100% - 8px) 2px,
61
+ calc(100% - 4px) 2px,
62
+ calc(100% - 4px) 4px,
63
+ calc(100% - 2px) 4px,
64
+ calc(100% - 2px) 8px,
65
+ 100% 8px,
66
+ 100% calc(100% - 8px),
67
+ calc(100% - 2px) calc(100% - 8px),
68
+ calc(100% - 2px) calc(100% - 4px),
69
+ calc(100% - 4px) calc(100% - 4px),
70
+ calc(100% - 4px) calc(100% - 2px),
71
+ calc(100% - 8px) calc(100% - 2px),
72
+ calc(100% - 8px) 100%,
73
+ 0 100%
74
+ );
75
+ z-index: 0;
76
+ }
77
+ /* Fill layer — inset with bevel */
78
+ .px-drawer__sidebar--left[data-v-647267d6]::after {
79
+ content: '';
80
+ position: absolute;
81
+ top: 4px;
82
+ left: 0;
83
+ right: 4px;
84
+ bottom: 4px;
85
+ background: var(--px-drawer-bg-color);
86
+ clip-path: polygon(
87
+ 0 0,
88
+ calc(100% - 4px) 0,
89
+ calc(100% - 4px) 2px,
90
+ calc(100% - 2px) 2px,
91
+ calc(100% - 2px) 4px,
92
+ 100% 4px,
93
+ 100% calc(100% - 4px),
94
+ calc(100% - 2px) calc(100% - 4px),
95
+ calc(100% - 2px) calc(100% - 2px),
96
+ calc(100% - 4px) calc(100% - 2px),
97
+ calc(100% - 4px) 100%,
98
+ 0 100%
99
+ );
100
+ box-shadow: var(--px-drawer-inset-highlight), var(--px-drawer-inset-shadow);
101
+ z-index: 0;
102
+ }
103
+ /* Right placement — inner edge is the left side */
104
+ .px-drawer__sidebar--right[data-v-647267d6] {
105
+ right: 0;
106
+ }
107
+ /* Border layer — staircase only on left (inner) edge */
108
+ .px-drawer__sidebar--right[data-v-647267d6]::before {
109
+ content: '';
110
+ position: absolute;
111
+ inset: 0;
112
+ background: var(--px-drawer-border-color);
113
+ clip-path: polygon(
114
+ 0 8px,
115
+ 2px 8px,
116
+ 2px 4px,
117
+ 4px 4px,
118
+ 4px 2px,
119
+ 8px 2px,
120
+ 8px 0,
121
+ 100% 0,
122
+ 100% 100%,
123
+ 8px 100%,
124
+ 8px calc(100% - 2px),
125
+ 4px calc(100% - 2px),
126
+ 4px calc(100% - 4px),
127
+ 2px calc(100% - 4px),
128
+ 2px calc(100% - 8px),
129
+ 0 calc(100% - 8px)
130
+ );
131
+ z-index: 0;
132
+ }
133
+ /* Fill layer — inset with bevel */
134
+ .px-drawer__sidebar--right[data-v-647267d6]::after {
135
+ content: '';
136
+ position: absolute;
137
+ top: 4px;
138
+ left: 4px;
139
+ right: 0;
140
+ bottom: 4px;
141
+ background: var(--px-drawer-bg-color);
142
+ clip-path: polygon(
143
+ 0 4px,
144
+ 2px 4px,
145
+ 2px 2px,
146
+ 4px 2px,
147
+ 4px 0,
148
+ 100% 0,
149
+ 100% 100%,
150
+ 4px 100%,
151
+ 4px calc(100% - 2px),
152
+ 2px calc(100% - 2px),
153
+ 2px calc(100% - 4px),
154
+ 0 calc(100% - 4px)
155
+ );
156
+ box-shadow: var(--px-drawer-inset-highlight), var(--px-drawer-inset-shadow);
157
+ z-index: 0;
158
+ }
159
+ /* Header with pixel-dashed divider */
160
+ .px-drawer__header[data-v-647267d6] {
161
+ position: relative;
162
+ z-index: 1;
163
+ padding: var(--px-drawer-padding);
164
+ font-weight: 600;
165
+ }
166
+ .px-drawer__header[data-v-647267d6]::after {
167
+ content: "";
168
+ position: absolute;
169
+ bottom: 0;
170
+ left: 4px;
171
+ right: 4px;
172
+ height: 2px;
173
+ background-image: repeating-linear-gradient(
174
+ to right,
175
+ var(--px-drawer-header-border-color) 0px,
176
+ var(--px-drawer-header-border-color) 6px,
177
+ transparent 6px,
178
+ transparent 12px
179
+ );
180
+ }
181
+ .px-drawer__body[data-v-647267d6] {
182
+ position: relative;
183
+ z-index: 1;
184
+ padding: var(--px-drawer-padding);
185
+ flex: 1;
186
+ overflow-y: auto;
187
+ }
188
+ /* Slide transitions — pixel-feel with steps(12)
189
+ steps(4) was too coarse (75 px jumps for a 300 px drawer).
190
+ steps(12) gives ~25 px jumps — still visibly discrete but not jarring. */
191
+ .px-drawer-slide-left-enter-active[data-v-647267d6],
192
+ .px-drawer-slide-left-leave-active[data-v-647267d6] {
193
+ transition: transform 0.25s steps(12);
194
+ }
195
+ .px-drawer-slide-left-enter-from[data-v-647267d6],
196
+ .px-drawer-slide-left-leave-to[data-v-647267d6] {
197
+ transform: translateX(-100%);
198
+ }
199
+ .px-drawer-slide-right-enter-active[data-v-647267d6],
200
+ .px-drawer-slide-right-leave-active[data-v-647267d6] {
201
+ transition: transform 0.25s steps(12);
202
+ }
203
+ .px-drawer-slide-right-enter-from[data-v-647267d6],
204
+ .px-drawer-slide-right-leave-to[data-v-647267d6] {
205
+ transform: translateX(100%);
206
+ }
@@ -0,0 +1,471 @@
1
+ /* Dropdown Variables */
2
+ .px-dropdown .px-dropdown__menu {
3
+ --px-dropdown-menuItem-hover-fill: var(--px-color-primary);
4
+ --px-dropdown-menuItem-hover-color: #fff;
5
+ --px-dropdown-menuItem-disabled-color: var(--px-text-color-disabled);
6
+ --px-dropdown-menuItem-divided-color: var(--px-border-color-lighter);
7
+ --px-dropdown-shadow-color: var(--px-shadow-color-dark);
8
+ --px-dropdown-border-color: var(--px-border-color);
9
+ --px-dropdown-bg-color: var(--px-bg-color);
10
+
11
+ /* Beveled inset for 3D raised-panel depth */
12
+ --px-dropdown-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.6);
13
+ --px-dropdown-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.25);
14
+ }
15
+ /* Base Dropdown Styles - Pixel Game Menu */
16
+ .px-dropdown {
17
+ display: inline-block;
18
+ font-family: var(--px-font-family);
19
+
20
+ outline: none;
21
+ }
22
+ .px-dropdown .px-tooltip {
23
+ /* 6px vertical clears staircase corners; 4px horizontal matches border inset */
24
+ --px-tooltip-padding: 6px 4px;
25
+ --px-tooltip-border-color: transparent;
26
+ --px-tooltip-shadow-color: transparent;
27
+ --px-shadow-offset-x: 0px;
28
+ --px-shadow-offset-y: 0px;
29
+ }
30
+ .px-dropdown .px-tooltip .px-tooltip__popper {
31
+ filter: none;
32
+ }
33
+ /* Remove staircase border layer from popup */
34
+ .px-dropdown .px-tooltip .px-tooltip__popper::before {
35
+ display: none;
36
+ }
37
+ /* Enhanced pixel-art bevel on fill layer */
38
+ .px-dropdown .px-tooltip .px-tooltip__popper::after {
39
+ box-shadow:
40
+ inset 2px 2px 0 0 rgba(255, 255, 255, 0.6),
41
+ inset -2px -2px 0 0 rgba(0, 0, 0, 0.15);
42
+ }
43
+ /* Disabled state */
44
+ .px-dropdown.is-disabled > * {
45
+ color: var(--px-text-color-placeholder) !important;
46
+ cursor: not-allowed !important;
47
+ }
48
+ /* Dropdown Menu - Pixel style list */
49
+ .px-dropdown__menu {
50
+ list-style-type: none;
51
+ margin: 0;
52
+ padding: 4px 0;
53
+ background: var(--px-dropdown-bg-color);
54
+ position: relative;
55
+ outline: none;
56
+ }
57
+ /* Pixel-art scrollbar */
58
+ .px-dropdown__menu::-webkit-scrollbar {
59
+ width: 10px;
60
+ }
61
+ .px-dropdown__menu::-webkit-scrollbar-track {
62
+ background: var(--px-fill-color-light);
63
+ border-left: 2px solid var(--px-dropdown-border-color);
64
+ }
65
+ .px-dropdown__menu::-webkit-scrollbar-thumb {
66
+ background: var(--px-fill-color-darker, var(--px-border-color));
67
+ border: 2px solid var(--px-dropdown-border-color);
68
+ }
69
+ .px-dropdown__menu::-webkit-scrollbar-thumb:hover {
70
+ background: var(--px-dropdown-menuItem-hover-fill);
71
+ }
72
+ /* Menu items - Pixel RPG menu style */
73
+ .px-dropdown__menu .px-dropdown__item {
74
+ display: flex;
75
+ align-items: center;
76
+ white-space: nowrap;
77
+ list-style: none;
78
+ line-height: 22px;
79
+ padding: 8px 16px 8px 22px;
80
+ margin: 0;
81
+ font-size: var(--px-font-size-base);
82
+ font-family: var(--px-font-family);
83
+ color: var(--px-text-color-primary);
84
+ cursor: pointer;
85
+ outline: none;
86
+ position: relative;
87
+ transition: none;
88
+ z-index: 1;
89
+ }
90
+ /* Item icon */
91
+ .px-dropdown__menu .px-dropdown__item .px-dropdown__item-icon {
92
+ margin-right: 8px;
93
+ font-size: var(--px-font-size-base);
94
+ width: 16px;
95
+ flex-shrink: 0;
96
+ display: flex;
97
+ align-items: center;
98
+ }
99
+ /* Pixel arrow indicator — right-pointing staircase triangle */
100
+ .px-dropdown__menu .px-dropdown__item::before {
101
+ content: '';
102
+ position: absolute;
103
+ left: 8px;
104
+ top: 50%;
105
+ transform: translateY(-50%);
106
+ width: 6px;
107
+ height: 8px;
108
+ background: var(--px-dropdown-menuItem-hover-color);
109
+ clip-path: polygon(
110
+ 0 0, 2px 0,
111
+ 2px 2px, 4px 2px,
112
+ 4px 4px, 6px 4px,
113
+ 6px 4px, 4px 4px,
114
+ 4px 6px, 2px 6px,
115
+ 2px 8px, 0 8px
116
+ );
117
+ opacity: 0;
118
+ z-index: 2;
119
+ }
120
+ /* Background highlight layer — full width selection bar */
121
+ .px-dropdown__menu .px-dropdown__item::after {
122
+ content: '';
123
+ position: absolute;
124
+ inset: 0;
125
+ background: transparent;
126
+ z-index: -1;
127
+ }
128
+ /* Hover & focus effect - Pixel highlight with beveled 3D bar */
129
+ .px-dropdown__menu .px-dropdown__item:hover,
130
+ .px-dropdown__menu .px-dropdown__item:focus {
131
+ color: var(--px-dropdown-menuItem-hover-color);
132
+ }
133
+ .px-dropdown__menu .px-dropdown__item:hover::before, .px-dropdown__menu .px-dropdown__item:focus::before {
134
+ opacity: 1;
135
+ }
136
+ .px-dropdown__menu .px-dropdown__item:hover::after, .px-dropdown__menu .px-dropdown__item:focus::after {
137
+ background-color: var(--px-dropdown-menuItem-hover-fill);
138
+ box-shadow: var(--px-dropdown-inset-highlight), var(--px-dropdown-inset-shadow);
139
+ }
140
+ /* Active/pressed - reversed bevel for "pressed in" feel */
141
+ .px-dropdown__menu .px-dropdown__item:active:not(.is-disabled)::after {
142
+ box-shadow: var(--px-dropdown-inset-shadow), var(--px-dropdown-inset-highlight);
143
+ }
144
+ /* Disabled state */
145
+ .px-dropdown__menu .px-dropdown__item.is-disabled {
146
+ color: var(--px-dropdown-menuItem-disabled-color);
147
+ cursor: not-allowed;
148
+ opacity: 0.55;
149
+ }
150
+ .px-dropdown__menu .px-dropdown__item.is-disabled::before {
151
+ opacity: 0 !important;
152
+ }
153
+ .px-dropdown__menu .px-dropdown__item.is-disabled:hover,
154
+ .px-dropdown__menu .px-dropdown__item.is-disabled:focus {
155
+ color: var(--px-dropdown-menuItem-disabled-color);
156
+ }
157
+ .px-dropdown__menu .px-dropdown__item.is-disabled:hover::after, .px-dropdown__menu .px-dropdown__item.is-disabled:focus::after {
158
+ background-color: transparent;
159
+ box-shadow: none;
160
+ }
161
+ /* First item — top staircase corners on highlight layer */
162
+ .px-dropdown__menu .px-dropdown__item:first-child::after {
163
+ top: 2px;
164
+ clip-path: polygon(
165
+ 0 2px, 2px 2px, 2px 0, 4px 0,
166
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, 100% 2px,
167
+ 100% 100%,
168
+ 0 100%
169
+ );
170
+ }
171
+ /* Last item — bottom staircase corners on highlight layer */
172
+ .px-dropdown__menu .px-dropdown__item:last-child::after {
173
+ bottom: 2px;
174
+ clip-path: polygon(
175
+ 0 0,
176
+ 100% 0,
177
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%, calc(100% - 4px) 100%,
178
+ 4px 100%, 4px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
179
+ );
180
+ }
181
+ /* Single item — both top and bottom staircase corners */
182
+ .px-dropdown__menu .px-dropdown__item:first-child:last-child::after {
183
+ top: 2px;
184
+ bottom: 2px;
185
+ clip-path: polygon(
186
+ 0 2px, 2px 2px, 2px 0, 4px 0,
187
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, 100% 2px,
188
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%, calc(100% - 4px) 100%,
189
+ 4px 100%, 4px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
190
+ );
191
+ }
192
+ /* Size variants */
193
+ .px-dropdown__menu .px-dropdown__item--large {
194
+ padding: 10px 20px 10px 26px;
195
+ line-height: 26px;
196
+ font-size: var(--px-font-size-large);
197
+ }
198
+ .px-dropdown__menu .px-dropdown__item--large::before {
199
+ left: 10px;
200
+ width: 8px;
201
+ height: 12px;
202
+ clip-path: polygon(
203
+ 0 0, 2px 0,
204
+ 2px 2px, 4px 2px,
205
+ 4px 4px, 6px 4px,
206
+ 6px 6px, 8px 6px,
207
+ 8px 6px, 6px 6px,
208
+ 6px 8px, 4px 8px,
209
+ 4px 10px, 2px 10px,
210
+ 2px 12px, 0 12px
211
+ );
212
+ }
213
+ .px-dropdown__menu .px-dropdown__item--small {
214
+ padding: 5px 12px 5px 18px;
215
+ line-height: 18px;
216
+ font-size: var(--px-font-size-small);
217
+ }
218
+ .px-dropdown__menu .px-dropdown__item--small::before {
219
+ left: 6px;
220
+ width: 4px;
221
+ height: 6px;
222
+ }
223
+ /* Divider - Pixel-dashed gradient line */
224
+ .px-dropdown__menu .divided-placeholder {
225
+ margin: 4px 6px;
226
+ height: 2px;
227
+ background-image: repeating-linear-gradient(
228
+ to right,
229
+ var(--px-dropdown-menuItem-divided-color) 0px,
230
+ var(--px-dropdown-menuItem-divided-color) 6px,
231
+ transparent 6px,
232
+ transparent 12px
233
+ );
234
+ }
235
+ /* Dropdown Variables */
236
+ .px-dropdown .px-dropdown__menu {
237
+ --px-dropdown-menuItem-hover-fill: var(--px-color-primary);
238
+ --px-dropdown-menuItem-hover-color: #fff;
239
+ --px-dropdown-menuItem-disabled-color: var(--px-text-color-disabled);
240
+ --px-dropdown-menuItem-divided-color: var(--px-border-color-lighter);
241
+ --px-dropdown-shadow-color: var(--px-shadow-color-dark);
242
+ --px-dropdown-border-color: var(--px-border-color);
243
+ --px-dropdown-bg-color: var(--px-bg-color);
244
+
245
+ /* Beveled inset for 3D raised-panel depth */
246
+ --px-dropdown-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.6);
247
+ --px-dropdown-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.25);
248
+ }
249
+ /* Base Dropdown Styles - Pixel Game Menu */
250
+ .px-dropdown {
251
+ display: inline-block;
252
+ font-family: var(--px-font-family);
253
+
254
+ outline: none;
255
+ }
256
+ .px-dropdown .px-tooltip {
257
+ /* 6px vertical clears staircase corners; 4px horizontal matches border inset */
258
+ --px-tooltip-padding: 6px 4px;
259
+ --px-tooltip-border-color: transparent;
260
+ --px-tooltip-shadow-color: transparent;
261
+ --px-shadow-offset-x: 0px;
262
+ --px-shadow-offset-y: 0px;
263
+ }
264
+ .px-dropdown .px-tooltip .px-tooltip__popper {
265
+ filter: none;
266
+ }
267
+ /* Remove staircase border layer from popup */
268
+ .px-dropdown .px-tooltip .px-tooltip__popper::before {
269
+ display: none;
270
+ }
271
+ /* Enhanced pixel-art bevel on fill layer */
272
+ .px-dropdown .px-tooltip .px-tooltip__popper::after {
273
+ box-shadow:
274
+ inset 2px 2px 0 0 rgba(255, 255, 255, 0.6),
275
+ inset -2px -2px 0 0 rgba(0, 0, 0, 0.15);
276
+ }
277
+ /* Disabled state */
278
+ .px-dropdown.is-disabled > * {
279
+ color: var(--px-text-color-placeholder) !important;
280
+ cursor: not-allowed !important;
281
+ }
282
+ /* Dropdown Menu - Pixel style list */
283
+ .px-dropdown__menu {
284
+ list-style-type: none;
285
+ margin: 0;
286
+ padding: 4px 0;
287
+ background: var(--px-dropdown-bg-color);
288
+ position: relative;
289
+ outline: none;
290
+ }
291
+ /* Pixel-art scrollbar */
292
+ .px-dropdown__menu::-webkit-scrollbar {
293
+ width: 10px;
294
+ }
295
+ .px-dropdown__menu::-webkit-scrollbar-track {
296
+ background: var(--px-fill-color-light);
297
+ border-left: 2px solid var(--px-dropdown-border-color);
298
+ }
299
+ .px-dropdown__menu::-webkit-scrollbar-thumb {
300
+ background: var(--px-fill-color-darker, var(--px-border-color));
301
+ border: 2px solid var(--px-dropdown-border-color);
302
+ }
303
+ .px-dropdown__menu::-webkit-scrollbar-thumb:hover {
304
+ background: var(--px-dropdown-menuItem-hover-fill);
305
+ }
306
+ /* Menu items - Pixel RPG menu style */
307
+ .px-dropdown__menu .px-dropdown__item {
308
+ display: flex;
309
+ align-items: center;
310
+ white-space: nowrap;
311
+ list-style: none;
312
+ line-height: 22px;
313
+ padding: 8px 16px 8px 22px;
314
+ margin: 0;
315
+ font-size: var(--px-font-size-base);
316
+ font-family: var(--px-font-family);
317
+ color: var(--px-text-color-primary);
318
+ cursor: pointer;
319
+ outline: none;
320
+ position: relative;
321
+ transition: none;
322
+ z-index: 1;
323
+ }
324
+ /* Item icon */
325
+ .px-dropdown__menu .px-dropdown__item .px-dropdown__item-icon {
326
+ margin-right: 8px;
327
+ font-size: var(--px-font-size-base);
328
+ width: 16px;
329
+ flex-shrink: 0;
330
+ display: flex;
331
+ align-items: center;
332
+ }
333
+ /* Pixel arrow indicator — right-pointing staircase triangle */
334
+ .px-dropdown__menu .px-dropdown__item::before {
335
+ content: '';
336
+ position: absolute;
337
+ left: 8px;
338
+ top: 50%;
339
+ transform: translateY(-50%);
340
+ width: 6px;
341
+ height: 8px;
342
+ background: var(--px-dropdown-menuItem-hover-color);
343
+ clip-path: polygon(
344
+ 0 0, 2px 0,
345
+ 2px 2px, 4px 2px,
346
+ 4px 4px, 6px 4px,
347
+ 6px 4px, 4px 4px,
348
+ 4px 6px, 2px 6px,
349
+ 2px 8px, 0 8px
350
+ );
351
+ opacity: 0;
352
+ z-index: 2;
353
+ }
354
+ /* Background highlight layer — full width selection bar */
355
+ .px-dropdown__menu .px-dropdown__item::after {
356
+ content: '';
357
+ position: absolute;
358
+ inset: 0;
359
+ background: transparent;
360
+ z-index: -1;
361
+ }
362
+ /* Hover & focus effect - Pixel highlight with beveled 3D bar */
363
+ .px-dropdown__menu .px-dropdown__item:hover,
364
+ .px-dropdown__menu .px-dropdown__item:focus {
365
+ color: var(--px-dropdown-menuItem-hover-color);
366
+ }
367
+ .px-dropdown__menu .px-dropdown__item:hover::before, .px-dropdown__menu .px-dropdown__item:focus::before {
368
+ opacity: 1;
369
+ }
370
+ .px-dropdown__menu .px-dropdown__item:hover::after, .px-dropdown__menu .px-dropdown__item:focus::after {
371
+ background-color: var(--px-dropdown-menuItem-hover-fill);
372
+ box-shadow: var(--px-dropdown-inset-highlight), var(--px-dropdown-inset-shadow);
373
+ }
374
+ /* Active/pressed - reversed bevel for "pressed in" feel */
375
+ .px-dropdown__menu .px-dropdown__item:active:not(.is-disabled)::after {
376
+ box-shadow: var(--px-dropdown-inset-shadow), var(--px-dropdown-inset-highlight);
377
+ }
378
+ /* Disabled state */
379
+ .px-dropdown__menu .px-dropdown__item.is-disabled {
380
+ color: var(--px-dropdown-menuItem-disabled-color);
381
+ cursor: not-allowed;
382
+ opacity: 0.55;
383
+ }
384
+ .px-dropdown__menu .px-dropdown__item.is-disabled::before {
385
+ opacity: 0 !important;
386
+ }
387
+ .px-dropdown__menu .px-dropdown__item.is-disabled:hover,
388
+ .px-dropdown__menu .px-dropdown__item.is-disabled:focus {
389
+ color: var(--px-dropdown-menuItem-disabled-color);
390
+ }
391
+ .px-dropdown__menu .px-dropdown__item.is-disabled:hover::after, .px-dropdown__menu .px-dropdown__item.is-disabled:focus::after {
392
+ background-color: transparent;
393
+ box-shadow: none;
394
+ }
395
+ /* First item — top staircase corners on highlight layer */
396
+ .px-dropdown__menu .px-dropdown__item:first-child::after {
397
+ top: 2px;
398
+ clip-path: polygon(
399
+ 0 2px, 2px 2px, 2px 0, 4px 0,
400
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, 100% 2px,
401
+ 100% 100%,
402
+ 0 100%
403
+ );
404
+ }
405
+ /* Last item — bottom staircase corners on highlight layer */
406
+ .px-dropdown__menu .px-dropdown__item:last-child::after {
407
+ bottom: 2px;
408
+ clip-path: polygon(
409
+ 0 0,
410
+ 100% 0,
411
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%, calc(100% - 4px) 100%,
412
+ 4px 100%, 4px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
413
+ );
414
+ }
415
+ /* Single item — both top and bottom staircase corners */
416
+ .px-dropdown__menu .px-dropdown__item:first-child:last-child::after {
417
+ top: 2px;
418
+ bottom: 2px;
419
+ clip-path: polygon(
420
+ 0 2px, 2px 2px, 2px 0, 4px 0,
421
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, 100% 2px,
422
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%, calc(100% - 4px) 100%,
423
+ 4px 100%, 4px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
424
+ );
425
+ }
426
+ /* Size variants */
427
+ .px-dropdown__menu .px-dropdown__item--large {
428
+ padding: 10px 20px 10px 26px;
429
+ line-height: 26px;
430
+ font-size: var(--px-font-size-large);
431
+ }
432
+ .px-dropdown__menu .px-dropdown__item--large::before {
433
+ left: 10px;
434
+ width: 8px;
435
+ height: 12px;
436
+ clip-path: polygon(
437
+ 0 0, 2px 0,
438
+ 2px 2px, 4px 2px,
439
+ 4px 4px, 6px 4px,
440
+ 6px 6px, 8px 6px,
441
+ 8px 6px, 6px 6px,
442
+ 6px 8px, 4px 8px,
443
+ 4px 10px, 2px 10px,
444
+ 2px 12px, 0 12px
445
+ );
446
+ }
447
+ .px-dropdown__menu .px-dropdown__item--small {
448
+ padding: 5px 12px 5px 18px;
449
+ line-height: 18px;
450
+ font-size: var(--px-font-size-small);
451
+ }
452
+ .px-dropdown__menu .px-dropdown__item--small::before {
453
+ left: 6px;
454
+ width: 4px;
455
+ height: 6px;
456
+ }
457
+ /* Divider - Pixel-dashed gradient line */
458
+ .px-dropdown__menu .divided-placeholder {
459
+ margin: 4px 6px;
460
+ height: 2px;
461
+ background-image: repeating-linear-gradient(
462
+ to right,
463
+ var(--px-dropdown-menuItem-divided-color) 0px,
464
+ var(--px-dropdown-menuItem-divided-color) 6px,
465
+ transparent 6px,
466
+ transparent 12px
467
+ );
468
+ }
469
+ .px-dropdown .px-button-group > :last-child {
470
+ padding: 5px 7px;
471
+ }