@composy/keyboard-vue 0.0.1 → 0.0.2

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 (172) hide show
  1. package/README.md +48 -24
  2. package/dist/index.css +552 -560
  3. package/dist/index.js +228 -192
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.min.js +954 -1
  7. package/dist/index.min.js.map +1 -0
  8. package/es/.dts-output-manifest.json +1 -0
  9. package/es/.dts.tsbuildinfo +1 -0
  10. package/es/components/KeyboardKey.js +1 -1
  11. package/es/components/KeyboardKey.js.map +1 -1
  12. package/es/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js +16 -7
  13. package/es/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/es/components/KeyboardPopup.js +1 -1
  15. package/es/components/KeyboardPopup.js.map +1 -1
  16. package/es/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js +8 -5
  17. package/es/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/es/components/LicensePlateKeyboard.js +1 -1
  19. package/es/components/LicensePlateKeyboard.js.map +1 -1
  20. package/es/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js +2 -2
  21. package/es/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/es/components/VirtualKeyboard.js +1 -1
  23. package/es/components/VirtualKeyboard.js.map +1 -1
  24. package/es/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js +4 -4
  25. package/es/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/es/components/index.d.ts +1 -2
  27. package/es/components/index.d.ts.map +1 -1
  28. package/es/components/index.js +1 -1
  29. package/es/composables/index.d.ts +0 -1
  30. package/es/composables/index.js +1 -1
  31. package/es/composables/useKeyboard.d.ts +1 -2
  32. package/es/composables/useKeyboard.d.ts.map +1 -1
  33. package/es/composables/useKeyboard.js +8 -15
  34. package/es/composables/useKeyboard.js.map +1 -1
  35. package/es/composables/useKeyboardPopup.d.ts +2 -51
  36. package/es/composables/useKeyboardPopup.d.ts.map +1 -1
  37. package/es/composables/useKeyboardPopup.js +66 -49
  38. package/es/composables/useKeyboardPopup.js.map +1 -1
  39. package/es/directives/index.d.ts +0 -1
  40. package/es/directives/index.js +1 -1
  41. package/es/directives/v-keyboard.d.ts +0 -1
  42. package/es/directives/v-keyboard.d.ts.map +1 -1
  43. package/es/directives/v-keyboard.js +10 -11
  44. package/es/directives/v-keyboard.js.map +1 -1
  45. package/es/index.d.ts +3 -4
  46. package/es/index.d.ts.map +1 -1
  47. package/es/index.js +2 -5
  48. package/es/index.js.map +1 -1
  49. package/es/plugins/engine-plugin.d.ts +0 -1
  50. package/es/plugins/engine-plugin.d.ts.map +1 -1
  51. package/es/plugins/engine-plugin.js +19 -4
  52. package/es/plugins/engine-plugin.js.map +1 -1
  53. package/es/plugins/index.d.ts +0 -1
  54. package/es/plugins/index.js +1 -1
  55. package/es/style/css.js +1 -1
  56. package/es/style/index.css +2 -0
  57. package/es/style/index.js +1 -1
  58. package/es/styles/index.css +391 -0
  59. package/es/styles/keyboard.css +252 -0
  60. package/es/styles/themes.css +137 -0
  61. package/esm/components/KeyboardKey.js +17 -0
  62. package/esm/components/KeyboardKey.js.map +1 -0
  63. package/esm/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js +140 -0
  64. package/esm/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js.map +1 -0
  65. package/esm/components/KeyboardPopup.js +17 -0
  66. package/esm/components/KeyboardPopup.js.map +1 -0
  67. package/esm/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js +167 -0
  68. package/esm/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  69. package/esm/components/LicensePlateKeyboard.js +17 -0
  70. package/esm/components/LicensePlateKeyboard.js.map +1 -0
  71. package/esm/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js +97 -0
  72. package/esm/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  73. package/esm/components/VirtualKeyboard.js +17 -0
  74. package/esm/components/VirtualKeyboard.js.map +1 -0
  75. package/esm/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js +127 -0
  76. package/esm/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  77. package/{lib → esm}/components/index.d.ts +1 -1
  78. package/esm/components/index.d.ts.map +1 -0
  79. package/esm/components/index.js +15 -0
  80. package/esm/composables/index.d.ts.map +1 -0
  81. package/esm/composables/index.js +13 -0
  82. package/{lib → esm}/composables/useKeyboard.d.ts +1 -1
  83. package/esm/composables/useKeyboard.d.ts.map +1 -0
  84. package/esm/composables/useKeyboard.js +68 -0
  85. package/esm/composables/useKeyboard.js.map +1 -0
  86. package/esm/composables/useKeyboardPopup.d.ts +25 -0
  87. package/esm/composables/useKeyboardPopup.d.ts.map +1 -0
  88. package/esm/composables/useKeyboardPopup.js +136 -0
  89. package/esm/composables/useKeyboardPopup.js.map +1 -0
  90. package/esm/directives/index.d.ts.map +1 -0
  91. package/esm/directives/index.js +12 -0
  92. package/esm/directives/v-keyboard.d.ts.map +1 -0
  93. package/esm/directives/v-keyboard.js +64 -0
  94. package/esm/directives/v-keyboard.js.map +1 -0
  95. package/esm/index.d.ts +42 -0
  96. package/esm/index.d.ts.map +1 -0
  97. package/esm/index.js +34 -0
  98. package/esm/index.js.map +1 -0
  99. package/esm/plugins/engine-plugin.d.ts.map +1 -0
  100. package/esm/plugins/engine-plugin.js +53 -0
  101. package/esm/plugins/engine-plugin.js.map +1 -0
  102. package/esm/plugins/index.d.ts.map +1 -0
  103. package/esm/plugins/index.js +12 -0
  104. package/esm/style/css.js +1 -0
  105. package/esm/style/index.js +1 -0
  106. package/{es → esm}/style/index.less +1 -1
  107. package/esm/styles/index.less +5 -0
  108. package/esm/styles/keyboard.less +286 -0
  109. package/esm/styles/themes.less +164 -0
  110. package/lib/components/KeyboardKey.cjs +1 -1
  111. package/lib/components/KeyboardKey.cjs.map +1 -1
  112. package/lib/components/KeyboardKey.vue_vue_type_script_setup_true_lang.cjs +16 -7
  113. package/lib/components/KeyboardKey.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  114. package/lib/components/KeyboardPopup.cjs +1 -1
  115. package/lib/components/KeyboardPopup.cjs.map +1 -1
  116. package/lib/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.cjs +8 -5
  117. package/lib/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  118. package/lib/components/LicensePlateKeyboard.cjs +1 -1
  119. package/lib/components/LicensePlateKeyboard.cjs.map +1 -1
  120. package/lib/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.cjs +2 -2
  121. package/lib/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  122. package/lib/components/VirtualKeyboard.cjs +1 -1
  123. package/lib/components/VirtualKeyboard.cjs.map +1 -1
  124. package/lib/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.cjs +4 -4
  125. package/lib/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  126. package/lib/components/index.cjs +1 -1
  127. package/lib/components/index.d.cts +8 -0
  128. package/lib/components/index.d.cts.map +1 -0
  129. package/lib/composables/index.cjs +1 -1
  130. package/lib/composables/index.d.cts +6 -0
  131. package/lib/composables/index.d.cts.map +1 -0
  132. package/lib/composables/useKeyboard.cjs +8 -15
  133. package/lib/composables/useKeyboard.cjs.map +1 -1
  134. package/lib/composables/useKeyboard.d.cts +112 -0
  135. package/lib/composables/useKeyboard.d.cts.map +1 -0
  136. package/lib/composables/useKeyboardPopup.cjs +66 -49
  137. package/lib/composables/useKeyboardPopup.cjs.map +1 -1
  138. package/lib/composables/useKeyboardPopup.d.cts +24 -0
  139. package/lib/composables/useKeyboardPopup.d.cts.map +1 -0
  140. package/lib/directives/index.cjs +1 -1
  141. package/lib/directives/index.d.cts +5 -0
  142. package/lib/directives/index.d.cts.map +1 -0
  143. package/lib/directives/v-keyboard.cjs +10 -11
  144. package/lib/directives/v-keyboard.cjs.map +1 -1
  145. package/lib/directives/v-keyboard.d.cts +35 -0
  146. package/lib/directives/v-keyboard.d.cts.map +1 -0
  147. package/lib/index.cjs +2 -2
  148. package/lib/index.cjs.map +1 -1
  149. package/lib/index.d.cts +41 -0
  150. package/lib/index.d.cts.map +1 -0
  151. package/lib/plugins/engine-plugin.cjs +19 -3
  152. package/lib/plugins/engine-plugin.cjs.map +1 -1
  153. package/lib/plugins/engine-plugin.d.cts +36 -0
  154. package/lib/plugins/engine-plugin.d.cts.map +1 -0
  155. package/lib/plugins/index.cjs +1 -1
  156. package/lib/plugins/index.d.cts +5 -0
  157. package/lib/plugins/index.d.cts.map +1 -0
  158. package/lib/style/index.css +1 -1
  159. package/lib/styles/index.css +357 -195
  160. package/lib/styles/keyboard.css +92 -186
  161. package/lib/styles/themes.css +102 -178
  162. package/package.json +43 -34
  163. package/es/styles/index.less +0 -267
  164. package/es/styles/keyboard.less +0 -399
  165. package/es/styles/themes.less +0 -233
  166. package/lib/composables/useKeyboardPopup.d.ts +0 -73
  167. package/lib/index.d.ts +0 -42
  168. /package/{lib → esm}/composables/index.d.ts +0 -0
  169. /package/{lib → esm}/directives/index.d.ts +0 -0
  170. /package/{lib → esm}/directives/v-keyboard.d.ts +0 -0
  171. /package/{lib → esm}/plugins/engine-plugin.d.ts +0 -0
  172. /package/{lib → esm}/plugins/index.d.ts +0 -0
@@ -1,267 +0,0 @@
1
- /**
2
- * LDesign Keyboard 样式
3
- * @module styles
4
- */
5
-
6
- /* 核心样式 */
7
- @import './keyboard.css';
8
-
9
- /* 主题样式 */
10
- @import './themes.css';
11
-
12
- /* 深色主题 */
13
- .dark,
14
- [data-theme="dark"] {
15
- --keyboard-bg: #374151;
16
- --keyboard-key-bg: #4b5563;
17
- --keyboard-key-color: #f9fafb;
18
- --keyboard-key-active-bg: #6b7280;
19
- --keyboard-fn-key-bg: #1f2937;
20
- --keyboard-fn-key-color: #f9fafb;
21
- --keyboard-fn-key-active-bg: #111827;
22
- --keyboard-primary-bg: #2563eb;
23
- --keyboard-primary-active-bg: #1d4ed8;
24
- }
25
-
26
- /* iOS 风格主题 */
27
- .keyboard-theme-ios {
28
- --keyboard-bg: #d1d5db;
29
- --keyboard-key-bg: #ffffff;
30
- --keyboard-key-color: #000000;
31
- --keyboard-key-active-bg: #c4c7cc;
32
- --keyboard-fn-key-bg: #adb3bc;
33
- --keyboard-fn-key-color: #000000;
34
- --keyboard-fn-key-active-bg: #8e9399;
35
- --keyboard-primary-bg: #007aff;
36
- --keyboard-primary-active-bg: #0062cc;
37
- --keyboard-key-radius: 5px;
38
- }
39
-
40
- /* Android 风格主题 */
41
- .keyboard-theme-android {
42
- --keyboard-bg: #263238;
43
- --keyboard-key-bg: #37474f;
44
- --keyboard-key-color: #ffffff;
45
- --keyboard-key-active-bg: #455a64;
46
- --keyboard-fn-key-bg: #455a64;
47
- --keyboard-fn-key-color: #90a4ae;
48
- --keyboard-fn-key-active-bg: #546e7a;
49
- --keyboard-primary-bg: #4285f4;
50
- --keyboard-primary-active-bg: #3367d6;
51
- --keyboard-key-radius: 4px;
52
- }
53
-
54
- /* 基础重置 */
55
- .virtual-keyboard,
56
- .virtual-keyboard * {
57
- box-sizing: border-box;
58
- }
59
-
60
- .virtual-keyboard {
61
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
62
- -webkit-font-smoothing: antialiased;
63
- -moz-osx-font-smoothing: grayscale;
64
- }
65
-
66
- /* 禁止选中 */
67
- .virtual-keyboard,
68
- .keyboard-popup {
69
- -webkit-touch-callout: none;
70
- -webkit-user-select: none;
71
- user-select: none;
72
- }
73
-
74
- /* 禁止 iOS 点击高亮 */
75
- .keyboard-key {
76
- -webkit-tap-highlight-color: transparent;
77
- }
78
-
79
- /* 移动端优化 */
80
- @media (max-width: 768px) {
81
- :root {
82
- --keyboard-key-height: 46px;
83
- --keyboard-font-size: 18px;
84
- }
85
-
86
- .virtual-keyboard {
87
- padding: 6px 2px;
88
- }
89
-
90
- .keyboard-key {
91
- margin: 3px;
92
- }
93
- }
94
-
95
- /* 横屏优化 */
96
- @media (orientation: landscape) and (max-height: 500px) {
97
- :root {
98
- --keyboard-key-height: 36px;
99
- --keyboard-font-size: 14px;
100
- }
101
-
102
- .virtual-keyboard {
103
- padding: 4px 2px;
104
- }
105
- }
106
-
107
- /* 安全区域适配 */
108
- @supports (padding-bottom: env(safe-area-inset-bottom)) {
109
- .keyboard-popup--mobile {
110
- padding-bottom: calc(8px + env(safe-area-inset-bottom));
111
- }
112
- }
113
-
114
- /* =========================
115
- 数字键盘专用样式
116
- ========================= */
117
- .number-keyboard-row {
118
- display: flex;
119
- justify-content: center;
120
- width: 100%;
121
- }
122
-
123
- .number-keyboard-row .keyboard-key {
124
- flex: 1;
125
- max-width: 25%;
126
- height: 52px;
127
- font-size: 22px;
128
- font-weight: 500;
129
- }
130
-
131
- .number-keyboard-row .key-number {
132
- background-color: var(--keyboard-key-bg, #fff);
133
- color: var(--keyboard-key-color, #333);
134
- }
135
-
136
- .number-keyboard-row .key-side {
137
- background-color: var(--keyboard-fn-key-bg, #d4d6dc);
138
- color: var(--keyboard-fn-key-color, #333);
139
- font-size: 14px;
140
- }
141
-
142
- .number-keyboard-row .key-side:active {
143
- background-color: var(--keyboard-fn-key-active-bg, #b8bac0);
144
- }
145
-
146
- .number-keyboard-row .key-done {
147
- background-color: var(--keyboard-primary-bg, #007aff);
148
- color: #fff;
149
- }
150
-
151
- .number-keyboard-row .key-done:active {
152
- background-color: var(--keyboard-primary-active-bg, #0062cc);
153
- }
154
-
155
- .number-keyboard-row .key-decimal,
156
- .number-keyboard-row .key-double-zero {
157
- background-color: var(--keyboard-key-bg, #fff);
158
- font-size: 18px;
159
- }
160
-
161
- .number-keyboard-row .key-placeholder {
162
- background-color: transparent;
163
- box-shadow: none;
164
- cursor: default;
165
- }
166
-
167
- .number-keyboard-row .key-placeholder:active {
168
- transform: none;
169
- background-color: transparent;
170
- }
171
-
172
- /* =========================
173
- PC端专用样式
174
- ========================= */
175
- .keyboard-popup--desktop {
176
- min-width: 320px;
177
- }
178
-
179
- .keyboard-popup--desktop .keyboard-key {
180
- height: 40px;
181
- font-size: 15px;
182
- border-radius: 5px;
183
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
184
- }
185
-
186
- .keyboard-popup--desktop .keyboard-key:hover {
187
- background-color: var(--keyboard-key-active-bg, #e5e7eb);
188
- }
189
-
190
- .keyboard-popup--desktop .keyboard-key--backspace:hover,
191
- .keyboard-popup--desktop .keyboard-key--shift:hover,
192
- .keyboard-popup--desktop .keyboard-key--tab:hover,
193
- .keyboard-popup--desktop .keyboard-key--clear:hover,
194
- .keyboard-popup--desktop .keyboard-key--close:hover {
195
- background-color: var(--keyboard-fn-key-active-bg, #b8bac0);
196
- }
197
-
198
- .keyboard-popup--desktop .keyboard-key--done:hover,
199
- .keyboard-popup--desktop .keyboard-key--enter:hover {
200
- background-color: var(--keyboard-primary-active-bg, #0062cc);
201
- }
202
-
203
- /* PC端数字键盘 */
204
- .keyboard-popup--desktop .number-keyboard-row .keyboard-key {
205
- height: 44px;
206
- font-size: 18px;
207
- }
208
-
209
- .keyboard-popup--desktop .number-keyboard-row .key-side {
210
- font-size: 13px;
211
- }
212
-
213
- /* =========================
214
- 移动端专用样式
215
- ========================= */
216
- .keyboard-popup--mobile {
217
- width: 100%;
218
- }
219
-
220
- .keyboard-popup--mobile .keyboard-key {
221
- height: 46px;
222
- font-size: 18px;
223
- border-radius: 6px;
224
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
225
- }
226
-
227
- /* 移动端数字键盘 */
228
- .keyboard-popup--mobile .number-keyboard-row .keyboard-key {
229
- height: 54px;
230
- font-size: 24px;
231
- border-radius: 8px;
232
- }
233
-
234
- .keyboard-popup--mobile .number-keyboard-row .key-side {
235
- font-size: 15px;
236
- }
237
-
238
- /* =========================
239
- 键盘顶部栅栏(移动端)
240
- ========================= */
241
- .keyboard-toolbar {
242
- display: flex;
243
- justify-content: space-between;
244
- align-items: center;
245
- padding: 8px 16px;
246
- background-color: var(--keyboard-bg, #d1d5db);
247
- border-bottom: 1px solid rgba(0, 0, 0, 0.1);
248
- }
249
-
250
- .keyboard-toolbar__title {
251
- font-size: 14px;
252
- color: var(--keyboard-fn-key-color, #666);
253
- }
254
-
255
- .keyboard-toolbar__done {
256
- padding: 6px 16px;
257
- background: none;
258
- border: none;
259
- color: var(--keyboard-primary-bg, #007aff);
260
- font-size: 15px;
261
- font-weight: 500;
262
- cursor: pointer;
263
- }
264
-
265
- .keyboard-toolbar__done:active {
266
- opacity: 0.7;
267
- }
@@ -1,399 +0,0 @@
1
- /**
2
- * LDesign Keyboard - 核心样式
3
- * 简洁现代的默认主题
4
- */
5
-
6
- /* ====================
7
- CSS 变量 - 简洁主题
8
- ==================== */
9
- :root {
10
- /* 键盘背景 */
11
- --keyboard-bg: #f7f7f7;
12
-
13
- /* 普通按键 */
14
- --keyboard-key-bg: #ffffff;
15
- --keyboard-key-color: #333333;
16
- --keyboard-key-active-bg: #e5e5e5;
17
- --keyboard-key-border: #e0e0e0;
18
-
19
- /* 功能键 */
20
- --keyboard-fn-bg: #e8e8e8;
21
- --keyboard-fn-color: #666666;
22
- --keyboard-fn-active-bg: #d8d8d8;
23
-
24
- /* 主色调按键 */
25
- --keyboard-primary-bg: #2563eb;
26
- --keyboard-primary-active-bg: #1d4ed8;
27
- --keyboard-primary-color: #ffffff;
28
-
29
- /* 按键尺寸 */
30
- --keyboard-key-height: 48px;
31
- --keyboard-key-radius: 8px;
32
- --keyboard-key-gap: 6px;
33
-
34
- /* 字体 */
35
- --keyboard-font-size: 20px;
36
- --keyboard-fn-font-size: 14px;
37
-
38
- /* 动画 */
39
- --keyboard-transition: 80ms ease-out;
40
- }
41
-
42
- /* ====================
43
- 基础重置
44
- ==================== */
45
- .virtual-keyboard,
46
- .virtual-keyboard *,
47
- .keyboard-popup,
48
- .keyboard-popup * {
49
- box-sizing: border-box;
50
- margin: 0;
51
- padding: 0;
52
- }
53
-
54
- .virtual-keyboard {
55
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
56
- 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
57
- -webkit-font-smoothing: antialiased;
58
- -moz-osx-font-smoothing: grayscale;
59
- -webkit-touch-callout: none;
60
- -webkit-user-select: none;
61
- user-select: none;
62
- }
63
-
64
- /* ====================
65
- 键盘容器
66
- ==================== */
67
- .virtual-keyboard {
68
- display: flex;
69
- flex-direction: column;
70
- padding: 8px;
71
- background-color: var(--keyboard-bg);
72
- width: 100%;
73
- }
74
-
75
- .virtual-keyboard__row {
76
- display: flex;
77
- justify-content: center;
78
- width: 100%;
79
- gap: var(--keyboard-key-gap);
80
- margin-bottom: var(--keyboard-key-gap);
81
- }
82
-
83
- .virtual-keyboard__row:last-child {
84
- margin-bottom: 0;
85
- }
86
-
87
- /* ====================
88
- 按键基础样式
89
- ==================== */
90
- .keyboard-key {
91
- display: inline-flex;
92
- align-items: center;
93
- justify-content: center;
94
- flex: 1;
95
- height: var(--keyboard-key-height);
96
- min-width: 0;
97
- padding: 0 4px;
98
- border: none;
99
- border-radius: var(--keyboard-key-radius);
100
- background-color: var(--keyboard-key-bg);
101
- color: var(--keyboard-key-color);
102
- font-size: var(--keyboard-font-size);
103
- font-weight: 500;
104
- cursor: pointer;
105
- touch-action: manipulation;
106
- transition: background-color var(--keyboard-transition),
107
- transform var(--keyboard-transition);
108
- -webkit-tap-highlight-color: transparent;
109
- box-shadow: 0 1px 0 var(--keyboard-key-border);
110
- }
111
-
112
- .keyboard-key:active {
113
- background-color: var(--keyboard-key-active-bg);
114
- transform: scale(0.98);
115
- }
116
-
117
- .keyboard-key--disabled {
118
- opacity: 0;
119
- cursor: default;
120
- pointer-events: none;
121
- }
122
-
123
- /* ====================
124
- 功能键样式
125
- ==================== */
126
- .keyboard-key--backspace,
127
- .keyboard-key--shift,
128
- .keyboard-key--tab,
129
- .keyboard-key--clear,
130
- .keyboard-key--close {
131
- background-color: var(--keyboard-fn-bg);
132
- color: var(--keyboard-fn-color);
133
- font-size: var(--keyboard-fn-font-size);
134
- font-weight: 400;
135
- box-shadow: 0 1px 0 var(--keyboard-key-border);
136
- }
137
-
138
- .keyboard-key--backspace:active,
139
- .keyboard-key--shift:active,
140
- .keyboard-key--tab:active,
141
- .keyboard-key--clear:active,
142
- .keyboard-key--close:active {
143
- background-color: var(--keyboard-fn-active-bg);
144
- }
145
-
146
- /* Shift 激活状态 */
147
- .keyboard-key--shift.keyboard-key--active {
148
- background-color: var(--keyboard-primary-bg);
149
- color: var(--keyboard-primary-color);
150
- }
151
-
152
- /* ====================
153
- 主色按键(完成/确认)
154
- ==================== */
155
- .keyboard-key--done,
156
- .keyboard-key--enter {
157
- background-color: var(--keyboard-primary-bg);
158
- color: var(--keyboard-primary-color);
159
- font-size: var(--keyboard-fn-font-size);
160
- font-weight: 500;
161
- box-shadow: none;
162
- }
163
-
164
- .keyboard-key--done:active,
165
- .keyboard-key--enter:active {
166
- background-color: var(--keyboard-primary-active-bg);
167
- }
168
-
169
- /* ====================
170
- 空格键
171
- ==================== */
172
- .keyboard-key--space {
173
- flex: 4;
174
- }
175
-
176
- /* ====================
177
- 占位键(透明)
178
- ==================== */
179
- .key-placeholder {
180
- background-color: transparent !important;
181
- box-shadow: none !important;
182
- cursor: default;
183
- pointer-events: none;
184
- }
185
-
186
- /* ====================
187
- 数字键盘通用样式
188
- ==================== */
189
- .numpad-row {
190
- display: flex;
191
- gap: var(--keyboard-key-gap);
192
- width: 100%;
193
- }
194
-
195
- .numpad-row .keyboard-key {
196
- flex: 1;
197
- height: 54px;
198
- font-size: 24px;
199
- font-weight: 500;
200
- }
201
-
202
- /* 数字键 */
203
- .key-num {
204
- background-color: var(--keyboard-key-bg);
205
- color: var(--keyboard-key-color);
206
- }
207
-
208
- /* 功能键 */
209
- .key-numpad-fn {
210
- background-color: var(--keyboard-fn-bg);
211
- color: var(--keyboard-fn-color);
212
- font-size: 14px;
213
- font-weight: 400;
214
- }
215
-
216
- /* 完成键 */
217
- .key-numpad-done {
218
- background-color: var(--keyboard-primary-bg);
219
- color: var(--keyboard-primary-color);
220
- font-size: 16px;
221
- font-weight: 500;
222
- box-shadow: none;
223
- }
224
-
225
- .key-numpad-done:active {
226
- background-color: var(--keyboard-primary-active-bg);
227
- }
228
-
229
- /* ====================
230
- 车牌键盘样式
231
- ==================== */
232
- .virtual-keyboard:has(.plate-keyboard-row) {
233
- min-width: 340px;
234
- }
235
-
236
- .plate-keyboard-row {
237
- display: flex;
238
- gap: 3px;
239
- width: 100%;
240
- flex-wrap: nowrap;
241
- }
242
-
243
- .plate-keyboard-row .keyboard-key {
244
- flex: 1 1 0;
245
- height: 42px;
246
- min-width: 28px;
247
- max-width: none;
248
- padding: 0 2px;
249
- font-size: 15px;
250
- font-weight: 500;
251
- border-radius: 5px;
252
- }
253
-
254
- .key-plate-province,
255
- .key-plate-letter,
256
- .key-plate-number {
257
- background-color: var(--keyboard-key-bg);
258
- }
259
-
260
- .key-plate-fn {
261
- background-color: var(--keyboard-fn-bg);
262
- font-size: 12px;
263
- flex: 1.2 1 0 !important;
264
- }
265
-
266
- .key-plate-done {
267
- background-color: var(--keyboard-primary-bg);
268
- color: var(--keyboard-primary-color);
269
- font-size: 13px;
270
- box-shadow: none;
271
- flex: 1.5 1 0 !important;
272
- }
273
-
274
- .key-plate-switch {
275
- background-color: var(--keyboard-fn-bg);
276
- font-size: 12px;
277
- flex: 1.3 1 0 !important;
278
- }
279
-
280
- .key-plate-special {
281
- background-color: #fef3c7;
282
- color: #92400e;
283
- }
284
-
285
- /* ====================
286
- 弹出层样式
287
- ==================== */
288
- .keyboard-popup {
289
- position: fixed;
290
- z-index: 1000;
291
- background-color: var(--keyboard-bg);
292
- overflow: hidden;
293
- }
294
-
295
- .keyboard-popup--desktop {
296
- border-radius: 12px;
297
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);
298
- min-width: 300px;
299
- }
300
-
301
- .keyboard-popup--mobile {
302
- position: fixed;
303
- left: 0;
304
- right: 0;
305
- bottom: 0;
306
- border-radius: 0;
307
- border-top-left-radius: 12px;
308
- border-top-right-radius: 12px;
309
- box-shadow: 0 -2px 16px rgba(0, 0, 0, 0.08);
310
- }
311
-
312
- /* 安全区域 */
313
- @supports (padding-bottom: env(safe-area-inset-bottom)) {
314
- .keyboard-popup--mobile {
315
- padding-bottom: env(safe-area-inset-bottom);
316
- }
317
- }
318
-
319
- /* ====================
320
- 遮罩层
321
- ==================== */
322
- .keyboard-mask {
323
- position: fixed;
324
- inset: 0;
325
- background-color: rgba(0, 0, 0, 0.3);
326
- z-index: 999;
327
- }
328
-
329
- /* ====================
330
- 动画
331
- ==================== */
332
- .keyboard-mask-enter-active,
333
- .keyboard-mask-leave-active {
334
- transition: opacity 0.2s ease;
335
- }
336
-
337
- .keyboard-mask-enter-from,
338
- .keyboard-mask-leave-to {
339
- opacity: 0;
340
- }
341
-
342
- .keyboard-fade-enter-active,
343
- .keyboard-fade-leave-active {
344
- transition: opacity 0.15s ease, transform 0.15s ease;
345
- }
346
-
347
- .keyboard-fade-enter-from,
348
- .keyboard-fade-leave-to {
349
- opacity: 0;
350
- transform: translateY(-4px) scale(0.98);
351
- }
352
-
353
- .keyboard-slide-enter-active,
354
- .keyboard-slide-leave-active {
355
- transition: transform 0.25s cubic-bezier(0.32, 0.72, 0, 1);
356
- }
357
-
358
- .keyboard-slide-enter-from,
359
- .keyboard-slide-leave-to {
360
- transform: translateY(100%);
361
- }
362
-
363
- /* ====================
364
- 移动端适配
365
- ==================== */
366
- @media (max-width: 768px) {
367
- .virtual-keyboard {
368
- padding: 6px;
369
- }
370
-
371
- .keyboard-key {
372
- height: 44px;
373
- }
374
-
375
- .numpad-row .keyboard-key {
376
- height: 52px;
377
- font-size: 22px;
378
- }
379
-
380
- .plate-keyboard-row .keyboard-key {
381
- height: 40px;
382
- font-size: 15px;
383
- }
384
- }
385
-
386
- /* ====================
387
- 横屏适配
388
- ==================== */
389
- @media (orientation: landscape) and (max-height: 500px) {
390
- .keyboard-key {
391
- height: 36px;
392
- font-size: 16px;
393
- }
394
-
395
- .numpad-row .keyboard-key {
396
- height: 42px;
397
- font-size: 18px;
398
- }
399
- }