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.
Files changed (155) hide show
  1. package/README.md +98 -25
  2. package/dist/es/{Alert-C76ZWSVk.js → Alert-DfLsJvQD.js} +2 -2
  3. package/dist/es/Avatar-Ci4OKsv7.js +9 -0
  4. package/dist/es/{Badge-CoFWwBwv.js → Badge-B4wEToK6.js} +2 -2
  5. package/dist/es/{Breadcrumb-BtrwTVKW.js → Breadcrumb-BFzww8jd.js} +2 -2
  6. package/dist/es/{Button-S_31-UWJ.js → Button-DbFviVWb.js} +3 -3
  7. package/dist/es/{Card-DcW6nHYD.js → Card-ClRqKkc_.js} +2 -2
  8. package/dist/es/ChatBubble-DFEV_lVI.js +9 -0
  9. package/dist/es/Checkbox-l86YI3Fr.js +51 -0
  10. package/dist/es/{Collapse-DsS7M-m3.js → Collapse-B67v6RSE.js} +4 -4
  11. package/dist/es/{ConfigProvider-BgIewHXP.js → ConfigProvider-BCoGbcS5.js} +2 -2
  12. package/dist/es/Diff-BLiniLom.js +64 -0
  13. package/dist/es/Divider-DDSOHv8G.js +9 -0
  14. package/dist/es/Drawer-apeXw6EO.js +40 -0
  15. package/dist/es/Dropdown-By9qIErf.js +104 -0
  16. package/dist/es/{FileInput-BQ59woas.js → FileInput-CZ5jTfB_.js} +3 -3
  17. package/dist/es/Filter-B_1zU4Dq.js +40 -0
  18. package/dist/es/Form-B_XDnSjK.js +123 -0
  19. package/dist/es/{Icon-DpJyuj7c.js → Icon-D6qRB3pq.js} +1 -1
  20. package/dist/es/Indicator-C6Ip4dpP.js +9 -0
  21. package/dist/es/{Input-CiE4bPJN.js → Input-bThwBbNZ.js} +7 -7
  22. package/dist/es/Kbd-DXNjs7at.js +13 -0
  23. package/dist/es/{Link-B9B2APZq.js → Link-08Ee61Fv.js} +1 -1
  24. package/dist/es/{Loading-BW99pE5N.js → Loading-ByI9mjss.js} +13 -13
  25. package/dist/es/Message-CGG-lV5I.js +152 -0
  26. package/dist/es/Notification-B4clKY5h.js +69 -0
  27. package/dist/es/{Overlay-BRDSWspM.js → Overlay-6iPenJB1.js} +1 -1
  28. package/dist/es/Pixelate-A8J7jxDW.js +39 -0
  29. package/dist/es/Popconfirm-gcHGcOTz.js +23 -0
  30. package/dist/es/Progress-DFUBJQ4X.js +12 -0
  31. package/dist/es/Radio-CLBa1XIM.js +33 -0
  32. package/dist/es/Resizable-BWrFr2oj.js +151 -0
  33. package/dist/es/{Select-Dwqv8isB.js → Select-BtLqds1d.js} +20 -20
  34. package/dist/es/Skeleton-CGUQv3nQ.js +15 -0
  35. package/dist/es/{Switch-B1Gnv1tB.js → Switch-CZJ-S77_.js} +3 -3
  36. package/dist/es/Table-lHbxiyGq.js +10 -0
  37. package/dist/es/Tooltip-CdPqNYdn.js +74 -0
  38. package/dist/es/Validator-7ZT_nXDZ.js +40 -0
  39. package/dist/es/hooks-pU4JmsO3.js +171 -0
  40. package/dist/es/index.js +107 -70
  41. package/dist/es/utils-BXICIEsD.js +139 -0
  42. package/dist/es/{vendor-DXmGx29U.js → vendor-DrBJKLFW.js} +254 -210
  43. package/dist/index.css +1 -1
  44. package/dist/theme/Avatar.css +13 -43
  45. package/dist/theme/Badge.css +151 -151
  46. package/dist/theme/Breadcrumb.css +46 -4
  47. package/dist/theme/Button.css +72 -8
  48. package/dist/theme/Card.css +177 -93
  49. package/dist/theme/ChatBubble.css +218 -0
  50. package/dist/theme/Checkbox.css +604 -0
  51. package/dist/theme/Collapse.css +96 -96
  52. package/dist/theme/Diff.css +110 -0
  53. package/dist/theme/Divider.css +150 -0
  54. package/dist/theme/Drawer.css +206 -0
  55. package/dist/theme/Dropdown.css +359 -75
  56. package/dist/theme/FileInput.css +32 -0
  57. package/dist/theme/Filter.css +598 -0
  58. package/dist/theme/Indicator.css +159 -0
  59. package/dist/theme/Input.css +414 -406
  60. package/dist/theme/Kbd.css +104 -0
  61. package/dist/theme/Link.css +22 -3
  62. package/dist/theme/Loading.css +50 -12
  63. package/dist/theme/Message.css +250 -41
  64. package/dist/theme/Notification.css +232 -42
  65. package/dist/theme/Popconfirm.css +23 -7
  66. package/dist/theme/Progress.css +278 -0
  67. package/dist/theme/Radio.css +492 -0
  68. package/dist/theme/Resizable.css +95 -0
  69. package/dist/theme/Select.css +198 -88
  70. package/dist/theme/Skeleton.css +192 -0
  71. package/dist/theme/Switch.css +22 -3
  72. package/dist/theme/Table.css +680 -0
  73. package/dist/theme/Tooltip.css +150 -26
  74. package/dist/theme/Validator.css +25 -0
  75. package/dist/types/components/Avatar/types.d.ts +0 -2
  76. package/dist/types/components/ChatBubble/constants.d.ts +2 -0
  77. package/dist/types/components/ChatBubble/index.d.ts +27 -0
  78. package/dist/types/components/ChatBubble/types.d.ts +10 -0
  79. package/dist/types/components/Checkbox/constants.d.ts +5 -0
  80. package/dist/types/components/Checkbox/index.d.ts +94 -0
  81. package/dist/types/components/Checkbox/types.d.ts +46 -0
  82. package/dist/types/components/Collapse/index.d.ts +5 -5
  83. package/dist/types/components/Diff/constants.d.ts +4 -0
  84. package/dist/types/components/Diff/index.d.ts +67 -0
  85. package/dist/types/components/Diff/types.d.ts +29 -0
  86. package/dist/types/components/Divider/index.d.ts +30 -0
  87. package/dist/types/components/Divider/types.d.ts +10 -0
  88. package/dist/types/components/Drawer/constants.d.ts +1 -0
  89. package/dist/types/components/Drawer/index.d.ts +72 -0
  90. package/dist/types/components/Drawer/types.d.ts +20 -0
  91. package/dist/types/components/Dropdown/index.d.ts +13 -3
  92. package/dist/types/components/Dropdown/types.d.ts +3 -0
  93. package/dist/types/components/Dropdown/useDropdownKeyboard.d.ts +8 -0
  94. package/dist/types/components/FileInput/index.d.ts +5 -5
  95. package/dist/types/components/Filter/constants.d.ts +5 -0
  96. package/dist/types/components/Filter/index.d.ts +59 -0
  97. package/dist/types/components/Filter/types.d.ts +38 -0
  98. package/dist/types/components/Indicator/constants.d.ts +2 -0
  99. package/dist/types/components/Indicator/index.d.ts +28 -0
  100. package/dist/types/components/Indicator/types.d.ts +10 -0
  101. package/dist/types/components/Input/index.d.ts +10 -10
  102. package/dist/types/components/Kbd/constants.d.ts +3 -0
  103. package/dist/types/components/Kbd/index.d.ts +24 -0
  104. package/dist/types/components/Kbd/types.d.ts +10 -0
  105. package/dist/types/components/Message/methods.d.ts +2 -0
  106. package/dist/types/components/Message/types.d.ts +7 -1
  107. package/dist/types/components/MessageBox/types.d.ts +14 -2
  108. package/dist/types/components/Notification/methods.d.ts +3 -0
  109. package/dist/types/components/Notification/types.d.ts +8 -2
  110. package/dist/types/components/Pixelate/constants.d.ts +2 -0
  111. package/dist/types/components/Pixelate/index.d.ts +71 -0
  112. package/dist/types/components/Pixelate/types.d.ts +23 -0
  113. package/dist/types/components/Popconfirm/index.d.ts +18 -9
  114. package/dist/types/components/Popconfirm/types.d.ts +2 -1
  115. package/dist/types/components/Progress/constants.d.ts +2 -0
  116. package/dist/types/components/Progress/index.d.ts +50 -0
  117. package/dist/types/components/Progress/types.d.ts +22 -0
  118. package/dist/types/components/Radio/constants.d.ts +5 -0
  119. package/dist/types/components/Radio/index.d.ts +88 -0
  120. package/dist/types/components/Radio/types.d.ts +43 -0
  121. package/dist/types/components/Resizable/constants.d.ts +3 -0
  122. package/dist/types/components/Resizable/index.d.ts +135 -0
  123. package/dist/types/components/Resizable/types.d.ts +52 -0
  124. package/dist/types/components/Select/index.d.ts +32 -23
  125. package/dist/types/components/Skeleton/index.d.ts +36 -0
  126. package/dist/types/components/Skeleton/types.d.ts +12 -0
  127. package/dist/types/components/Switch/index.d.ts +5 -5
  128. package/dist/types/components/Table/index.d.ts +27 -0
  129. package/dist/types/components/Table/types.d.ts +20 -0
  130. package/dist/types/components/Tooltip/index.d.ts +9 -3
  131. package/dist/types/components/Tooltip/types.d.ts +7 -0
  132. package/dist/types/components/Validator/index.d.ts +52 -0
  133. package/dist/types/components/Validator/types.d.ts +13 -0
  134. package/dist/types/components/index.d.ts +15 -0
  135. package/dist/types/hooks/index.d.ts +3 -1
  136. package/dist/types/hooks/useDraggable.d.ts +7 -0
  137. package/dist/types/hooks/useFocusTrap.d.ts +5 -0
  138. package/dist/types/utils/index.d.ts +2 -0
  139. package/dist/types/utils/instance-management.d.ts +40 -0
  140. package/dist/types/utils/pixelate.d.ts +10 -0
  141. package/dist/types/utils/style.d.ts +1 -0
  142. package/dist/umd/index.css +1 -1
  143. package/dist/umd/index.css.gz +0 -0
  144. package/dist/umd/index.umd.cjs +4 -4
  145. package/dist/umd/index.umd.cjs.gz +0 -0
  146. package/package.json +59 -59
  147. package/dist/es/Avatar-CxsRW-wl.js +0 -9
  148. package/dist/es/Dropdown-GcomGMAI.js +0 -40
  149. package/dist/es/Form-j90EzLXU.js +0 -122
  150. package/dist/es/Message-DCNnTUje.js +0 -123
  151. package/dist/es/Notification-CBzY5904.js +0 -58
  152. package/dist/es/Popconfirm-DF6d2ORS.js +0 -23
  153. package/dist/es/Tooltip-k6gKnMyt.js +0 -74
  154. package/dist/es/hooks-BaG7l8K5.js +0 -116
  155. package/dist/es/utils-bsCscZfS.js +0 -84
@@ -1,15 +1,19 @@
1
1
  /* Card Variables */
2
- .px-card[data-v-61d3ab66] {
2
+ .px-card[data-v-f3900769] {
3
3
  --px-card-bg-color: var(--px-bg-color);
4
4
  --px-card-border-color: var(--px-border-color);
5
5
  --px-card-shadow-color: var(--px-shadow-color);
6
6
  --px-card-text-color: var(--px-text-color-primary);
7
7
  --px-card-header-border-color: var(--px-border-color-light);
8
8
  --px-card-footer-border-color: var(--px-border-color-light);
9
- --px-card-padding: 16px;
9
+ --px-card-padding: 16px;
10
+
11
+ /* Beveled inset for 3D raised-panel depth */
12
+ --px-card-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.35);
13
+ --px-card-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.08);
10
14
  }
11
15
  /* Base Card Styles - Pixel Game Aesthetic */
12
- .px-card[data-v-61d3ab66] {
16
+ .px-card[data-v-f3900769] {
13
17
  position: relative;
14
18
  display: flex;
15
19
  flex-direction: column;
@@ -22,242 +26,322 @@
22
26
  overflow: hidden;
23
27
  transition: none;
24
28
  }
25
- /* Border layer — filled with border color, clipped to pixel shape */
26
- .px-card[data-v-61d3ab66]::before {
29
+ /* Border layer — 3-step staircase clip (8px corners) */
30
+ .px-card[data-v-f3900769]::before {
27
31
  content: '';
28
32
  position: absolute;
29
33
  inset: 0;
30
34
  background: var(--px-card-border-color);
31
35
  clip-path: polygon(
32
- 0 2px, 2px 2px, 2px 0,
33
- calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
34
- 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
35
- 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
36
+ 0 8px, 2px 8px, 2px 4px, 4px 4px, 4px 2px, 8px 2px, 8px 0,
37
+ calc(100% - 8px) 0, calc(100% - 8px) 2px, calc(100% - 4px) 2px, calc(100% - 4px) 4px, calc(100% - 2px) 4px, calc(100% - 2px) 8px, 100% 8px,
38
+ 100% calc(100% - 8px), calc(100% - 2px) calc(100% - 8px), calc(100% - 2px) calc(100% - 4px), calc(100% - 4px) calc(100% - 4px), calc(100% - 4px) calc(100% - 2px), calc(100% - 8px) calc(100% - 2px), calc(100% - 8px) 100%,
39
+ 8px 100%, 8px calc(100% - 2px), 4px calc(100% - 2px), 4px calc(100% - 4px), 2px calc(100% - 4px), 2px calc(100% - 8px), 0 calc(100% - 8px)
36
40
  );
37
41
  z-index: 0;
38
42
  }
39
- /* Fill layer — inset by border width, filled with bg color */
40
- .px-card[data-v-61d3ab66]::after {
43
+ /* Fill layer — 4px inset, 2-step staircase (double staircase effect), beveled */
44
+ .px-card[data-v-f3900769]::after {
41
45
  content: '';
42
46
  position: absolute;
43
- inset: 2px;
47
+ inset: 4px;
44
48
  background: var(--px-card-bg-color);
45
49
  clip-path: polygon(
46
- 0 2px, 2px 2px, 2px 0,
47
- calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
48
- 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
49
- 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
50
+ 0 4px, 2px 4px, 2px 2px, 4px 2px, 4px 0,
51
+ calc(100% - 4px) 0, calc(100% - 4px) 2px, calc(100% - 2px) 2px, calc(100% - 2px) 4px, 100% 4px,
52
+ 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%,
53
+ 4px 100%, 4px calc(100% - 2px), 2px calc(100% - 2px), 2px calc(100% - 4px), 0 calc(100% - 4px)
50
54
  );
55
+ box-shadow: var(--px-card-inset-highlight), var(--px-card-inset-shadow);
51
56
  z-index: 0;
52
57
  }
53
58
  /* Card sections - all above pseudo-elements */
54
- .px-card__header[data-v-61d3ab66] {
59
+ .px-card__header[data-v-f3900769] {
55
60
  position: relative;
56
61
  z-index: 1;
57
62
  padding: var(--px-card-padding);
58
- border-bottom: 2px solid var(--px-card-header-border-color);
63
+ border-bottom: none;
59
64
  font-weight: 600;
60
- }
61
- .px-card__body[data-v-61d3ab66] {
65
+ }
66
+ /* Pixel-dashed divider at bottom */
67
+ .px-card__header[data-v-f3900769]::after {
68
+ content: "";
69
+ position: absolute;
70
+ bottom: 0;
71
+ left: 4px;
72
+ right: 4px;
73
+ height: 2px;
74
+ background-image: repeating-linear-gradient(
75
+ to right,
76
+ var(--px-card-header-border-color) 0px,
77
+ var(--px-card-header-border-color) 6px,
78
+ transparent 6px,
79
+ transparent 12px
80
+ );
81
+ }
82
+ .px-card__body[data-v-f3900769] {
62
83
  position: relative;
63
84
  z-index: 1;
64
85
  padding: var(--px-card-padding);
65
86
  flex: 1;
66
87
  }
67
- .px-card__footer[data-v-61d3ab66] {
88
+ .px-card__footer[data-v-f3900769] {
68
89
  position: relative;
69
90
  z-index: 1;
70
91
  padding: var(--px-card-padding);
71
- border-top: 2px solid var(--px-card-footer-border-color);
92
+ border-top: none;
93
+ }
94
+ /* Pixel-dashed divider at top */
95
+ .px-card__footer[data-v-f3900769]::before {
96
+ content: "";
97
+ position: absolute;
98
+ top: 0;
99
+ left: 4px;
100
+ right: 4px;
101
+ height: 2px;
102
+ background-image: repeating-linear-gradient(
103
+ to right,
104
+ var(--px-card-footer-border-color) 0px,
105
+ var(--px-card-footer-border-color) 6px,
106
+ transparent 6px,
107
+ transparent 12px
108
+ );
72
109
  }
73
110
  /* Shadow variants */
74
- .px-card--shadow-always[data-v-61d3ab66] {
111
+ .px-card--shadow-always[data-v-f3900769] {
75
112
  filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-card-shadow-color));
76
113
  }
77
- .px-card--shadow-hover[data-v-61d3ab66] {
114
+ .px-card--shadow-hover[data-v-f3900769] {
78
115
  filter: none;
79
116
  }
80
- .px-card--shadow-hover[data-v-61d3ab66]:hover {
117
+ .px-card--shadow-hover[data-v-f3900769]:hover {
81
118
  filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-card-shadow-color));
82
119
  }
83
- .px-card--shadow-never[data-v-61d3ab66] {
120
+ .px-card--shadow-never[data-v-f3900769] {
84
121
  filter: none;
85
122
  }
86
- /* Hoverable interaction */
87
- .px-card.is-hoverable[data-v-61d3ab66] {
123
+ /* Hoverable interaction — pixel-style diagonal lift/press */
124
+ .px-card.is-hoverable[data-v-f3900769] {
88
125
  cursor: pointer;
89
126
  }
90
- .px-card.is-hoverable[data-v-61d3ab66]:hover {
91
- transform: translateY(-4px);
92
- filter: drop-shadow(var(--px-shadow-offset-x) var(--px-shadow-offset-y) 0px var(--px-card-shadow-color));
127
+ .px-card.is-hoverable[data-v-f3900769]:hover {
128
+ transform: translate(-2px, -2px);
129
+ filter: drop-shadow(5px 5px 0px var(--px-card-shadow-color));
93
130
  }
94
- .px-card.is-hoverable[data-v-61d3ab66]:active {
95
- transform: translateY(0);
131
+ .px-card.is-hoverable[data-v-f3900769]:active {
132
+ transform: translate(1px, 1px);
133
+ filter: drop-shadow(1px 1px 0px var(--px-card-shadow-color));
96
134
  }
97
135
  /* Size variants */
98
- .px-card--small[data-v-61d3ab66] {
136
+ .px-card--small[data-v-f3900769] {
99
137
  --px-card-padding: 12px;
100
138
  font-size: var(--px-font-size-small);
101
139
  filter: drop-shadow(2px 2px 0px var(--px-card-shadow-color));
102
140
  }
103
- .px-card--small.px-card--shadow-hover[data-v-61d3ab66] { filter: none;
141
+ .px-card--small.px-card--shadow-hover[data-v-f3900769] { filter: none;
104
142
  }
105
- .px-card--small.px-card--shadow-hover[data-v-61d3ab66]:hover { filter: drop-shadow(2px 2px 0px var(--px-card-shadow-color));
143
+ .px-card--small.px-card--shadow-hover[data-v-f3900769]:hover { filter: drop-shadow(2px 2px 0px var(--px-card-shadow-color));
106
144
  }
107
- .px-card--small.px-card--shadow-never[data-v-61d3ab66] { filter: none;
145
+ .px-card--small.px-card--shadow-never[data-v-f3900769] { filter: none;
108
146
  }
109
- .px-card--large[data-v-61d3ab66] {
147
+ .px-card--large[data-v-f3900769] {
110
148
  --px-card-padding: 20px;
111
149
  font-size: var(--px-font-size-large);
112
150
  }
113
151
  /* Type variants */
114
- .px-card--primary[data-v-61d3ab66] {
152
+ .px-card--primary[data-v-f3900769] {
115
153
  --px-card-bg-color: var(--px-color-primary-light-9);
116
154
  --px-card-border-color: var(--px-color-primary);
117
155
  --px-card-shadow-color: var(--px-color-primary-dark);
118
156
  --px-card-text-color: var(--px-text-color-primary);
119
157
  --px-card-header-border-color: var(--px-color-primary);
120
- --px-card-footer-border-color: var(--px-color-primary);
158
+ --px-card-footer-border-color: var(--px-color-primary);
159
+ --px-card-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
160
+ --px-card-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
121
161
  }
122
- .px-card--primary.is-outline[data-v-61d3ab66] {
162
+ .px-card--primary.is-outline[data-v-f3900769] {
123
163
  --px-card-bg-color: transparent;
124
164
  --px-card-border-color: var(--px-color-primary);
125
- --px-card-text-color: var(--px-color-primary);
165
+ --px-card-text-color: var(--px-color-primary);
166
+ --px-card-inset-highlight: none;
167
+ --px-card-inset-shadow: none;
126
168
  }
127
- .px-card--primary.is-dash[data-v-61d3ab66] {
169
+ .px-card--primary.is-dash[data-v-f3900769] {
128
170
  --px-card-bg-color: var(--px-color-primary-light-9);
129
171
  --px-card-border-color: var(--px-color-primary);
130
172
  --px-card-text-color: var(--px-color-primary);
131
173
  }
132
- .px-card--primary.is-ghost[data-v-61d3ab66] {
174
+ .px-card--primary.is-ghost[data-v-f3900769] {
133
175
  --px-card-bg-color: transparent;
134
176
  --px-card-border-color: transparent;
135
177
  --px-card-shadow-color: transparent;
136
- --px-card-text-color: var(--px-color-primary);
178
+ --px-card-text-color: var(--px-color-primary);
179
+ --px-card-inset-highlight: none;
180
+ --px-card-inset-shadow: none;
137
181
  }
138
- .px-card--success[data-v-61d3ab66] {
182
+ .px-card--success[data-v-f3900769] {
139
183
  --px-card-bg-color: var(--px-color-success-light-9);
140
184
  --px-card-border-color: var(--px-color-success);
141
185
  --px-card-shadow-color: var(--px-color-success-dark);
142
186
  --px-card-text-color: var(--px-text-color-primary);
143
187
  --px-card-header-border-color: var(--px-color-success);
144
- --px-card-footer-border-color: var(--px-color-success);
188
+ --px-card-footer-border-color: var(--px-color-success);
189
+ --px-card-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
190
+ --px-card-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
145
191
  }
146
- .px-card--success.is-outline[data-v-61d3ab66] {
192
+ .px-card--success.is-outline[data-v-f3900769] {
147
193
  --px-card-bg-color: transparent;
148
194
  --px-card-border-color: var(--px-color-success);
149
- --px-card-text-color: var(--px-color-success);
195
+ --px-card-text-color: var(--px-color-success);
196
+ --px-card-inset-highlight: none;
197
+ --px-card-inset-shadow: none;
150
198
  }
151
- .px-card--success.is-dash[data-v-61d3ab66] {
199
+ .px-card--success.is-dash[data-v-f3900769] {
152
200
  --px-card-bg-color: var(--px-color-success-light-9);
153
201
  --px-card-border-color: var(--px-color-success);
154
202
  --px-card-text-color: var(--px-color-success);
155
203
  }
156
- .px-card--success.is-ghost[data-v-61d3ab66] {
204
+ .px-card--success.is-ghost[data-v-f3900769] {
157
205
  --px-card-bg-color: transparent;
158
206
  --px-card-border-color: transparent;
159
207
  --px-card-shadow-color: transparent;
160
- --px-card-text-color: var(--px-color-success);
208
+ --px-card-text-color: var(--px-color-success);
209
+ --px-card-inset-highlight: none;
210
+ --px-card-inset-shadow: none;
161
211
  }
162
- .px-card--info[data-v-61d3ab66] {
212
+ .px-card--info[data-v-f3900769] {
163
213
  --px-card-bg-color: var(--px-color-info-light-9);
164
214
  --px-card-border-color: var(--px-color-info);
165
215
  --px-card-shadow-color: var(--px-color-info-dark);
166
216
  --px-card-text-color: var(--px-text-color-primary);
167
217
  --px-card-header-border-color: var(--px-color-info);
168
- --px-card-footer-border-color: var(--px-color-info);
218
+ --px-card-footer-border-color: var(--px-color-info);
219
+ --px-card-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
220
+ --px-card-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
169
221
  }
170
- .px-card--info.is-outline[data-v-61d3ab66] {
222
+ .px-card--info.is-outline[data-v-f3900769] {
171
223
  --px-card-bg-color: transparent;
172
224
  --px-card-border-color: var(--px-color-info);
173
- --px-card-text-color: var(--px-color-info);
225
+ --px-card-text-color: var(--px-color-info);
226
+ --px-card-inset-highlight: none;
227
+ --px-card-inset-shadow: none;
174
228
  }
175
- .px-card--info.is-dash[data-v-61d3ab66] {
229
+ .px-card--info.is-dash[data-v-f3900769] {
176
230
  --px-card-bg-color: var(--px-color-info-light-9);
177
231
  --px-card-border-color: var(--px-color-info);
178
232
  --px-card-text-color: var(--px-color-info);
179
233
  }
180
- .px-card--info.is-ghost[data-v-61d3ab66] {
234
+ .px-card--info.is-ghost[data-v-f3900769] {
181
235
  --px-card-bg-color: transparent;
182
236
  --px-card-border-color: transparent;
183
237
  --px-card-shadow-color: transparent;
184
- --px-card-text-color: var(--px-color-info);
238
+ --px-card-text-color: var(--px-color-info);
239
+ --px-card-inset-highlight: none;
240
+ --px-card-inset-shadow: none;
185
241
  }
186
- .px-card--warning[data-v-61d3ab66] {
242
+ .px-card--warning[data-v-f3900769] {
187
243
  --px-card-bg-color: var(--px-color-warning-light-9);
188
244
  --px-card-border-color: var(--px-color-warning);
189
245
  --px-card-shadow-color: var(--px-color-warning-dark);
190
246
  --px-card-text-color: var(--px-text-color-primary);
191
247
  --px-card-header-border-color: var(--px-color-warning);
192
- --px-card-footer-border-color: var(--px-color-warning);
248
+ --px-card-footer-border-color: var(--px-color-warning);
249
+ --px-card-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
250
+ --px-card-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
193
251
  }
194
- .px-card--warning.is-outline[data-v-61d3ab66] {
252
+ .px-card--warning.is-outline[data-v-f3900769] {
195
253
  --px-card-bg-color: transparent;
196
254
  --px-card-border-color: var(--px-color-warning);
197
- --px-card-text-color: var(--px-color-warning);
255
+ --px-card-text-color: var(--px-color-warning);
256
+ --px-card-inset-highlight: none;
257
+ --px-card-inset-shadow: none;
198
258
  }
199
- .px-card--warning.is-dash[data-v-61d3ab66] {
259
+ .px-card--warning.is-dash[data-v-f3900769] {
200
260
  --px-card-bg-color: var(--px-color-warning-light-9);
201
261
  --px-card-border-color: var(--px-color-warning);
202
262
  --px-card-text-color: var(--px-color-warning);
203
263
  }
204
- .px-card--warning.is-ghost[data-v-61d3ab66] {
264
+ .px-card--warning.is-ghost[data-v-f3900769] {
205
265
  --px-card-bg-color: transparent;
206
266
  --px-card-border-color: transparent;
207
267
  --px-card-shadow-color: transparent;
208
- --px-card-text-color: var(--px-color-warning);
268
+ --px-card-text-color: var(--px-color-warning);
269
+ --px-card-inset-highlight: none;
270
+ --px-card-inset-shadow: none;
209
271
  }
210
- .px-card--danger[data-v-61d3ab66] {
272
+ .px-card--danger[data-v-f3900769] {
211
273
  --px-card-bg-color: var(--px-color-danger-light-9);
212
274
  --px-card-border-color: var(--px-color-danger);
213
275
  --px-card-shadow-color: var(--px-color-danger-dark);
214
276
  --px-card-text-color: var(--px-text-color-primary);
215
277
  --px-card-header-border-color: var(--px-color-danger);
216
- --px-card-footer-border-color: var(--px-color-danger);
278
+ --px-card-footer-border-color: var(--px-color-danger);
279
+ --px-card-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.4);
280
+ --px-card-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.1);
217
281
  }
218
- .px-card--danger.is-outline[data-v-61d3ab66] {
282
+ .px-card--danger.is-outline[data-v-f3900769] {
219
283
  --px-card-bg-color: transparent;
220
284
  --px-card-border-color: var(--px-color-danger);
221
- --px-card-text-color: var(--px-color-danger);
285
+ --px-card-text-color: var(--px-color-danger);
286
+ --px-card-inset-highlight: none;
287
+ --px-card-inset-shadow: none;
222
288
  }
223
- .px-card--danger.is-dash[data-v-61d3ab66] {
289
+ .px-card--danger.is-dash[data-v-f3900769] {
224
290
  --px-card-bg-color: var(--px-color-danger-light-9);
225
291
  --px-card-border-color: var(--px-color-danger);
226
292
  --px-card-text-color: var(--px-color-danger);
227
293
  }
228
- .px-card--danger.is-ghost[data-v-61d3ab66] {
294
+ .px-card--danger.is-ghost[data-v-f3900769] {
229
295
  --px-card-bg-color: transparent;
230
296
  --px-card-border-color: transparent;
231
297
  --px-card-shadow-color: transparent;
232
- --px-card-text-color: var(--px-color-danger);
298
+ --px-card-text-color: var(--px-color-danger);
299
+ --px-card-inset-highlight: none;
300
+ --px-card-inset-shadow: none;
233
301
  }
234
- /* Outline variant */
235
- .px-card.is-outline[data-v-61d3ab66] {
236
- border: 2px solid var(--px-card-border-color);
302
+ /* Outline variant — pixel-cornered wireframe, no fill, no bevel */
303
+ .px-card.is-outline[data-v-f3900769] {
237
304
  filter: none;
238
305
  }
239
- .px-card.is-outline[data-v-61d3ab66]::before { display: none;
240
- }
241
- .px-card.is-outline[data-v-61d3ab66]::after {
242
- clip-path: none;
243
- inset: 0;
244
- background: var(--px-card-bg-color);
306
+ .px-card.is-outline[data-v-f3900769]::before {
307
+ background:
308
+ /* Top edge */
309
+ linear-gradient(var(--px-card-border-color), var(--px-card-border-color)) 0 0 / 100% 4px no-repeat,
310
+ /* Bottom edge */
311
+ linear-gradient(var(--px-card-border-color), var(--px-card-border-color)) 0 100% / 100% 4px no-repeat,
312
+ /* Left edge */
313
+ linear-gradient(var(--px-card-border-color), var(--px-card-border-color)) 0 0 / 4px 100% no-repeat,
314
+ /* Right edge */
315
+ linear-gradient(var(--px-card-border-color), var(--px-card-border-color)) 100% 0 / 4px 100% no-repeat;
316
+ /* clip-path inherited from base → pixel staircase corners preserved */
317
+ }
318
+ .px-card.is-outline[data-v-f3900769]::after {
319
+ background: transparent;
320
+ box-shadow: none;
245
321
  }
246
- /* Dash variant */
247
- .px-card.is-dash[data-v-61d3ab66] {
248
- border: 2px dashed var(--px-card-border-color);
322
+ /* Dash variant — pixel-art dashed border via repeating gradients */
323
+ .px-card.is-dash[data-v-f3900769] {
249
324
  filter: none;
250
325
  }
251
- .px-card.is-dash[data-v-61d3ab66]::before { display: none;
252
- }
253
- .px-card.is-dash[data-v-61d3ab66]::after {
254
- clip-path: none;
255
- inset: 0;
256
- background: var(--px-card-bg-color);
326
+ .px-card.is-dash[data-v-f3900769]::before {
327
+ background:
328
+ /* Top edge */
329
+ repeating-linear-gradient(to right, var(--px-card-border-color) 0 8px, transparent 8px 16px) 0 0 / 100% 4px no-repeat,
330
+ /* Bottom edge */
331
+ repeating-linear-gradient(to right, var(--px-card-border-color) 0 8px, transparent 8px 16px) 0 100% / 100% 4px no-repeat,
332
+ /* Left edge */
333
+ repeating-linear-gradient(to bottom, var(--px-card-border-color) 0 8px, transparent 8px 16px) 0 0 / 4px 100% no-repeat,
334
+ /* Right edge */
335
+ repeating-linear-gradient(to bottom, var(--px-card-border-color) 0 8px, transparent 8px 16px) 100% 0 / 4px 100% no-repeat;
336
+ /* Inherits clip-path from base → pixel corners on dashes */
337
+ }
338
+ .px-card.is-dash[data-v-f3900769]::after {
339
+ background: transparent;
340
+ box-shadow: none;
257
341
  }
258
342
  /* Ghost variant */
259
- .px-card.is-ghost[data-v-61d3ab66] {
343
+ .px-card.is-ghost[data-v-f3900769] {
260
344
  filter: none;
261
345
  }
262
- .px-card.is-ghost[data-v-61d3ab66]::before, .px-card.is-ghost[data-v-61d3ab66]::after { display: none;
346
+ .px-card.is-ghost[data-v-f3900769]::before, .px-card.is-ghost[data-v-f3900769]::after { display: none;
263
347
  }
@@ -0,0 +1,218 @@
1
+ /* ChatBubble Variables */
2
+ .px-chat[data-v-c022026d] {
3
+ --px-chat-bubble-bg-color: var(--px-fill-color-light);
4
+ --px-chat-bubble-text-color: var(--px-text-color-primary);
5
+ --px-chat-bubble-border-color: var(--px-border-color);
6
+ --px-chat-bubble-shadow-color: var(--px-shadow-color);
7
+ --px-chat-header-color: var(--px-text-color-secondary);
8
+ --px-chat-footer-color: var(--px-text-color-placeholder);
9
+
10
+ /* Beveled inset for 3D raised-bubble depth */
11
+ --px-chat-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.2);
12
+ --px-chat-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.06);
13
+ }
14
+ /* Base ChatBubble Styles - Pixel Game Aesthetic */
15
+ .px-chat[data-v-c022026d] {
16
+ display: flex;
17
+ align-items: flex-start;
18
+ gap: 8px;
19
+ font-family: var(--px-font-family);
20
+ font-size: var(--px-font-size-base);
21
+ box-sizing: border-box;
22
+ transition: none;
23
+ }
24
+ /* Placement variants */
25
+ .px-chat--start[data-v-c022026d] {
26
+ flex-direction: row;
27
+ }
28
+ .px-chat--start .px-chat__header[data-v-c022026d] {
29
+ text-align: left;
30
+ }
31
+ .px-chat--start .px-chat__footer[data-v-c022026d] {
32
+ text-align: left;
33
+ }
34
+ /* Tail pointing left — positioned inside bubble */
35
+ .px-chat--start .px-chat__tail[data-v-c022026d] {
36
+ left: -6px;
37
+
38
+ /* Border layer: 4-step staircase pointing left */
39
+ background: var(--px-chat-bubble-border-color);
40
+ clip-path: polygon(
41
+ 6px 0, 8px 0,
42
+ 8px 8px,
43
+ 0 8px, 0 6px,
44
+ 2px 6px, 2px 4px,
45
+ 4px 4px, 4px 2px,
46
+ 6px 2px
47
+ );
48
+ }
49
+ /* Fill layer */
50
+ .px-chat--start .px-chat__tail[data-v-c022026d]::after {
51
+ content: '';
52
+ position: absolute;
53
+ inset: 0;
54
+ background: var(--px-chat-bubble-bg-color);
55
+ clip-path: polygon(
56
+ 6px 2px, 8px 2px,
57
+ 8px 6px,
58
+ 4px 6px, 4px 4px,
59
+ 6px 4px
60
+ );
61
+ }
62
+ .px-chat--end[data-v-c022026d] {
63
+ flex-direction: row-reverse;
64
+ }
65
+ .px-chat--end .px-chat__header[data-v-c022026d] {
66
+ text-align: right;
67
+ }
68
+ .px-chat--end .px-chat__footer[data-v-c022026d] {
69
+ text-align: right;
70
+ }
71
+ /* Tail pointing right — mirror of left */
72
+ .px-chat--end .px-chat__tail[data-v-c022026d] {
73
+ right: -6px;
74
+ left: auto;
75
+
76
+ /* Border layer: 4-step staircase pointing right */
77
+ background: var(--px-chat-bubble-border-color);
78
+ clip-path: polygon(
79
+ 0 0, 2px 0,
80
+ 2px 2px, 4px 2px,
81
+ 4px 4px, 6px 4px,
82
+ 6px 6px, 8px 6px,
83
+ 8px 8px, 0 8px
84
+ );
85
+ }
86
+ /* Fill layer */
87
+ .px-chat--end .px-chat__tail[data-v-c022026d]::after {
88
+ content: '';
89
+ position: absolute;
90
+ inset: 0;
91
+ background: var(--px-chat-bubble-bg-color);
92
+ clip-path: polygon(
93
+ 0 2px, 2px 2px,
94
+ 2px 4px, 4px 4px,
95
+ 4px 6px, 0 6px
96
+ );
97
+ }
98
+ /* Avatar */
99
+ .px-chat__avatar[data-v-c022026d] {
100
+ flex-shrink: 0;
101
+ }
102
+ /* Content wrapper */
103
+ .px-chat__content[data-v-c022026d] {
104
+ position: relative;
105
+ display: flex;
106
+ flex-direction: column;
107
+ gap: 4px;
108
+ max-width: 80%;
109
+ }
110
+ /* Header */
111
+ .px-chat__header[data-v-c022026d] {
112
+ display: flex;
113
+ align-items: center;
114
+ gap: 8px;
115
+ font-size: var(--px-font-size-small);
116
+ color: var(--px-chat-header-color);
117
+ line-height: 1.2;
118
+ }
119
+ .px-chat__name[data-v-c022026d] {
120
+ font-weight: 600;
121
+ }
122
+ .px-chat__time[data-v-c022026d] {
123
+ font-size: var(--px-font-size-extra-small);
124
+ opacity: 0.7;
125
+ }
126
+ /* Tail — positioned inside bubble (which is position:relative) */
127
+ .px-chat__tail[data-v-c022026d] {
128
+ position: absolute;
129
+ top: 8px;
130
+ width: 8px;
131
+ height: 8px;
132
+ z-index: 1;
133
+ }
134
+ /* Bubble — pixel border via pseudo-elements */
135
+ .px-chat__bubble[data-v-c022026d] {
136
+ position: relative;
137
+ padding: 8px 12px;
138
+ color: var(--px-chat-bubble-text-color);
139
+ background: transparent;
140
+ border: none;
141
+ line-height: 1.5;
142
+ word-break: break-word;
143
+
144
+ filter: drop-shadow(2px 2px 0px var(--px-chat-bubble-shadow-color));
145
+ }
146
+ /* Border layer */
147
+ .px-chat__bubble[data-v-c022026d]::before {
148
+ content: '';
149
+ position: absolute;
150
+ inset: 0;
151
+ background: var(--px-chat-bubble-border-color);
152
+ clip-path: polygon(
153
+ 0 2px, 2px 2px, 2px 0,
154
+ calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
155
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
156
+ 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
157
+ );
158
+ z-index: -1;
159
+ }
160
+ /* Fill layer */
161
+ .px-chat__bubble[data-v-c022026d]::after {
162
+ content: '';
163
+ position: absolute;
164
+ inset: 2px;
165
+ background: var(--px-chat-bubble-bg-color);
166
+ clip-path: polygon(
167
+ 0 2px, 2px 2px, 2px 0,
168
+ calc(100% - 2px) 0, calc(100% - 2px) 2px, 100% 2px,
169
+ 100% calc(100% - 2px), calc(100% - 2px) calc(100% - 2px), calc(100% - 2px) 100%,
170
+ 2px 100%, 2px calc(100% - 2px), 0 calc(100% - 2px)
171
+ );
172
+ box-shadow: var(--px-chat-inset-highlight), var(--px-chat-inset-shadow);
173
+ z-index: -1;
174
+ }
175
+ /* Footer */
176
+ .px-chat__footer[data-v-c022026d] {
177
+ font-size: var(--px-font-size-extra-small);
178
+ color: var(--px-chat-footer-color);
179
+ line-height: 1.2;
180
+ }
181
+ /* Type variants */
182
+ .px-chat--primary[data-v-c022026d] {
183
+ --px-chat-bubble-text-color: var(--px-color-white);
184
+ --px-chat-bubble-bg-color: var(--px-color-primary);
185
+ --px-chat-bubble-border-color: var(--px-color-primary-dark);
186
+ --px-chat-bubble-shadow-color: var(--px-color-primary-dark);
187
+ }
188
+ .px-chat--success[data-v-c022026d] {
189
+ --px-chat-bubble-text-color: var(--px-color-white);
190
+ --px-chat-bubble-bg-color: var(--px-color-success);
191
+ --px-chat-bubble-border-color: var(--px-color-success-dark);
192
+ --px-chat-bubble-shadow-color: var(--px-color-success-dark);
193
+ }
194
+ .px-chat--info[data-v-c022026d] {
195
+ --px-chat-bubble-text-color: var(--px-color-white);
196
+ --px-chat-bubble-bg-color: var(--px-color-info);
197
+ --px-chat-bubble-border-color: var(--px-color-info-dark);
198
+ --px-chat-bubble-shadow-color: var(--px-color-info-dark);
199
+ }
200
+ .px-chat--warning[data-v-c022026d] {
201
+ --px-chat-bubble-text-color: var(--px-color-white);
202
+ --px-chat-bubble-bg-color: var(--px-color-warning);
203
+ --px-chat-bubble-border-color: var(--px-color-warning-dark);
204
+ --px-chat-bubble-shadow-color: var(--px-color-warning-dark);
205
+ }
206
+ .px-chat--danger[data-v-c022026d] {
207
+ --px-chat-bubble-text-color: var(--px-color-white);
208
+ --px-chat-bubble-bg-color: var(--px-color-danger);
209
+ --px-chat-bubble-border-color: var(--px-color-danger-dark);
210
+ --px-chat-bubble-shadow-color: var(--px-color-danger-dark);
211
+ }
212
+ /* Dark mode */
213
+ html.dark .px-chat[data-v-c022026d],
214
+ .px-dark .px-chat[data-v-c022026d] {
215
+ --px-chat-bubble-bg-color: var(--px-fill-color-light);
216
+ --px-chat-inset-highlight: inset 2px 2px 0 0 rgba(255, 255, 255, 0.08);
217
+ --px-chat-inset-shadow: inset -2px -2px 0 0 rgba(0, 0, 0, 0.15);
218
+ }