@composy/keyboard-core 0.0.1

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 (337) hide show
  1. package/README.md +37 -0
  2. package/dist/index.js +3605 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/index.min.js +1 -0
  5. package/es/icons.d.ts +58 -0
  6. package/es/icons.d.ts.map +1 -0
  7. package/es/icons.js +34 -0
  8. package/es/icons.js.map +1 -0
  9. package/es/index.d.ts +12 -0
  10. package/es/index.d.ts.map +1 -0
  11. package/es/index.js +36 -0
  12. package/es/layouts/amount.d.ts +14 -0
  13. package/es/layouts/amount.d.ts.map +1 -0
  14. package/es/layouts/amount.js +175 -0
  15. package/es/layouts/amount.js.map +1 -0
  16. package/es/layouts/bankcard.d.ts +15 -0
  17. package/es/layouts/bankcard.d.ts.map +1 -0
  18. package/es/layouts/bankcard.js +99 -0
  19. package/es/layouts/bankcard.js.map +1 -0
  20. package/es/layouts/email.d.ts +11 -0
  21. package/es/layouts/email.d.ts.map +1 -0
  22. package/es/layouts/email.js +126 -0
  23. package/es/layouts/email.js.map +1 -0
  24. package/es/layouts/idcard.d.ts +16 -0
  25. package/es/layouts/idcard.d.ts.map +1 -0
  26. package/es/layouts/idcard.js +99 -0
  27. package/es/layouts/idcard.js.map +1 -0
  28. package/es/layouts/index.d.ts +54 -0
  29. package/es/layouts/index.d.ts.map +1 -0
  30. package/es/layouts/index.js +78 -0
  31. package/es/layouts/index.js.map +1 -0
  32. package/es/layouts/license-plate.d.ts +35 -0
  33. package/es/layouts/license-plate.d.ts.map +1 -0
  34. package/es/layouts/license-plate.js +290 -0
  35. package/es/layouts/license-plate.js.map +1 -0
  36. package/es/layouts/number.d.ts +14 -0
  37. package/es/layouts/number.d.ts.map +1 -0
  38. package/es/layouts/number.js +168 -0
  39. package/es/layouts/number.js.map +1 -0
  40. package/es/layouts/phone.d.ts +15 -0
  41. package/es/layouts/phone.d.ts.map +1 -0
  42. package/es/layouts/phone.js +175 -0
  43. package/es/layouts/phone.js.map +1 -0
  44. package/es/layouts/punct.d.ts +7 -0
  45. package/es/layouts/punct.d.ts.map +1 -0
  46. package/es/layouts/punct.js +112 -0
  47. package/es/layouts/punct.js.map +1 -0
  48. package/es/layouts/qwerty.d.ts +10 -0
  49. package/es/layouts/qwerty.d.ts.map +1 -0
  50. package/es/layouts/qwerty.js +116 -0
  51. package/es/layouts/qwerty.js.map +1 -0
  52. package/es/layouts/search.d.ts +7 -0
  53. package/es/layouts/search.d.ts.map +1 -0
  54. package/es/layouts/search.js +101 -0
  55. package/es/layouts/search.js.map +1 -0
  56. package/es/layouts/symbol.d.ts +14 -0
  57. package/es/layouts/symbol.d.ts.map +1 -0
  58. package/es/layouts/symbol.js +194 -0
  59. package/es/layouts/symbol.js.map +1 -0
  60. package/es/layouts/url.d.ts +7 -0
  61. package/es/layouts/url.d.ts.map +1 -0
  62. package/es/layouts/url.js +99 -0
  63. package/es/layouts/url.js.map +1 -0
  64. package/es/layouts/verifycode.d.ts +15 -0
  65. package/es/layouts/verifycode.d.ts.map +1 -0
  66. package/es/layouts/verifycode.js +100 -0
  67. package/es/layouts/verifycode.js.map +1 -0
  68. package/es/managers/index.d.ts +8 -0
  69. package/es/managers/index.d.ts.map +1 -0
  70. package/es/managers/index.js +14 -0
  71. package/es/managers/keyboard-manager.d.ts +130 -0
  72. package/es/managers/keyboard-manager.d.ts.map +1 -0
  73. package/es/managers/keyboard-manager.js +374 -0
  74. package/es/managers/keyboard-manager.js.map +1 -0
  75. package/es/managers/keyboard-renderer.d.ts +115 -0
  76. package/es/managers/keyboard-renderer.d.ts.map +1 -0
  77. package/es/managers/keyboard-renderer.js +283 -0
  78. package/es/managers/keyboard-renderer.js.map +1 -0
  79. package/es/managers/position-manager.d.ts +72 -0
  80. package/es/managers/position-manager.d.ts.map +1 -0
  81. package/es/managers/position-manager.js +199 -0
  82. package/es/managers/position-manager.js.map +1 -0
  83. package/es/themes/index.d.ts +70 -0
  84. package/es/themes/index.d.ts.map +1 -0
  85. package/es/themes/index.js +99 -0
  86. package/es/themes/index.js.map +1 -0
  87. package/es/themes/presets.d.ts +39 -0
  88. package/es/themes/presets.d.ts.map +1 -0
  89. package/es/themes/presets.js +207 -0
  90. package/es/themes/presets.js.map +1 -0
  91. package/es/themes/types.d.ts +118 -0
  92. package/es/themes/types.d.ts.map +1 -0
  93. package/es/themes/types.js +10 -0
  94. package/es/types/index.d.ts +7 -0
  95. package/es/types/index.d.ts.map +1 -0
  96. package/es/types/index.js +10 -0
  97. package/es/types/keyboard.d.ts +253 -0
  98. package/es/types/keyboard.d.ts.map +1 -0
  99. package/es/types/keyboard.js +10 -0
  100. package/es/types/position.d.ts +139 -0
  101. package/es/types/position.d.ts.map +1 -0
  102. package/es/types/position.js +10 -0
  103. package/es/utils/device.d.ts +45 -0
  104. package/es/utils/device.d.ts.map +1 -0
  105. package/es/utils/device.js +111 -0
  106. package/es/utils/device.js.map +1 -0
  107. package/es/utils/dom.d.ts +69 -0
  108. package/es/utils/dom.d.ts.map +1 -0
  109. package/es/utils/dom.js +134 -0
  110. package/es/utils/dom.js.map +1 -0
  111. package/es/utils/event-emitter.d.ts +52 -0
  112. package/es/utils/event-emitter.d.ts.map +1 -0
  113. package/es/utils/event-emitter.js +99 -0
  114. package/es/utils/event-emitter.js.map +1 -0
  115. package/es/utils/formatters.d.ts +51 -0
  116. package/es/utils/formatters.d.ts.map +1 -0
  117. package/es/utils/formatters.js +57 -0
  118. package/es/utils/formatters.js.map +1 -0
  119. package/es/utils/index.d.ts +10 -0
  120. package/es/utils/index.d.ts.map +1 -0
  121. package/es/utils/index.js +16 -0
  122. package/es/utils/random.d.ts +71 -0
  123. package/es/utils/random.d.ts.map +1 -0
  124. package/es/utils/random.js +292 -0
  125. package/es/utils/random.js.map +1 -0
  126. package/esm/icons.d.ts +58 -0
  127. package/esm/icons.d.ts.map +1 -0
  128. package/esm/icons.js +34 -0
  129. package/esm/icons.js.map +1 -0
  130. package/esm/index.d.ts +12 -0
  131. package/esm/index.d.ts.map +1 -0
  132. package/esm/index.js +37 -0
  133. package/esm/layouts/amount.d.ts +14 -0
  134. package/esm/layouts/amount.d.ts.map +1 -0
  135. package/esm/layouts/amount.js +175 -0
  136. package/esm/layouts/amount.js.map +1 -0
  137. package/esm/layouts/bankcard.d.ts +15 -0
  138. package/esm/layouts/bankcard.d.ts.map +1 -0
  139. package/esm/layouts/bankcard.js +99 -0
  140. package/esm/layouts/bankcard.js.map +1 -0
  141. package/esm/layouts/email.d.ts +11 -0
  142. package/esm/layouts/email.d.ts.map +1 -0
  143. package/esm/layouts/email.js +126 -0
  144. package/esm/layouts/email.js.map +1 -0
  145. package/esm/layouts/idcard.d.ts +16 -0
  146. package/esm/layouts/idcard.d.ts.map +1 -0
  147. package/esm/layouts/idcard.js +99 -0
  148. package/esm/layouts/idcard.js.map +1 -0
  149. package/esm/layouts/index.d.ts +54 -0
  150. package/esm/layouts/index.d.ts.map +1 -0
  151. package/esm/layouts/index.js +78 -0
  152. package/esm/layouts/index.js.map +1 -0
  153. package/esm/layouts/license-plate.d.ts +35 -0
  154. package/esm/layouts/license-plate.d.ts.map +1 -0
  155. package/esm/layouts/license-plate.js +290 -0
  156. package/esm/layouts/license-plate.js.map +1 -0
  157. package/esm/layouts/number.d.ts +14 -0
  158. package/esm/layouts/number.d.ts.map +1 -0
  159. package/esm/layouts/number.js +168 -0
  160. package/esm/layouts/number.js.map +1 -0
  161. package/esm/layouts/phone.d.ts +15 -0
  162. package/esm/layouts/phone.d.ts.map +1 -0
  163. package/esm/layouts/phone.js +175 -0
  164. package/esm/layouts/phone.js.map +1 -0
  165. package/esm/layouts/punct.d.ts +7 -0
  166. package/esm/layouts/punct.d.ts.map +1 -0
  167. package/esm/layouts/punct.js +112 -0
  168. package/esm/layouts/punct.js.map +1 -0
  169. package/esm/layouts/qwerty.d.ts +10 -0
  170. package/esm/layouts/qwerty.d.ts.map +1 -0
  171. package/esm/layouts/qwerty.js +116 -0
  172. package/esm/layouts/qwerty.js.map +1 -0
  173. package/esm/layouts/search.d.ts +7 -0
  174. package/esm/layouts/search.d.ts.map +1 -0
  175. package/esm/layouts/search.js +101 -0
  176. package/esm/layouts/search.js.map +1 -0
  177. package/esm/layouts/symbol.d.ts +14 -0
  178. package/esm/layouts/symbol.d.ts.map +1 -0
  179. package/esm/layouts/symbol.js +194 -0
  180. package/esm/layouts/symbol.js.map +1 -0
  181. package/esm/layouts/url.d.ts +7 -0
  182. package/esm/layouts/url.d.ts.map +1 -0
  183. package/esm/layouts/url.js +99 -0
  184. package/esm/layouts/url.js.map +1 -0
  185. package/esm/layouts/verifycode.d.ts +15 -0
  186. package/esm/layouts/verifycode.d.ts.map +1 -0
  187. package/esm/layouts/verifycode.js +100 -0
  188. package/esm/layouts/verifycode.js.map +1 -0
  189. package/esm/managers/index.d.ts +8 -0
  190. package/esm/managers/index.d.ts.map +1 -0
  191. package/esm/managers/index.js +14 -0
  192. package/esm/managers/keyboard-manager.d.ts +130 -0
  193. package/esm/managers/keyboard-manager.d.ts.map +1 -0
  194. package/esm/managers/keyboard-manager.js +374 -0
  195. package/esm/managers/keyboard-manager.js.map +1 -0
  196. package/esm/managers/keyboard-renderer.d.ts +115 -0
  197. package/esm/managers/keyboard-renderer.d.ts.map +1 -0
  198. package/esm/managers/keyboard-renderer.js +283 -0
  199. package/esm/managers/keyboard-renderer.js.map +1 -0
  200. package/esm/managers/position-manager.d.ts +72 -0
  201. package/esm/managers/position-manager.d.ts.map +1 -0
  202. package/esm/managers/position-manager.js +199 -0
  203. package/esm/managers/position-manager.js.map +1 -0
  204. package/esm/themes/index.d.ts +70 -0
  205. package/esm/themes/index.d.ts.map +1 -0
  206. package/esm/themes/index.js +99 -0
  207. package/esm/themes/index.js.map +1 -0
  208. package/esm/themes/presets.d.ts +39 -0
  209. package/esm/themes/presets.d.ts.map +1 -0
  210. package/esm/themes/presets.js +207 -0
  211. package/esm/themes/presets.js.map +1 -0
  212. package/esm/themes/types.d.ts +118 -0
  213. package/esm/themes/types.d.ts.map +1 -0
  214. package/esm/themes/types.js +10 -0
  215. package/esm/types/index.d.ts +7 -0
  216. package/esm/types/index.d.ts.map +1 -0
  217. package/esm/types/index.js +10 -0
  218. package/esm/types/keyboard.d.ts +253 -0
  219. package/esm/types/keyboard.d.ts.map +1 -0
  220. package/esm/types/keyboard.js +10 -0
  221. package/esm/types/position.d.ts +139 -0
  222. package/esm/types/position.d.ts.map +1 -0
  223. package/esm/types/position.js +10 -0
  224. package/esm/utils/device.d.ts +45 -0
  225. package/esm/utils/device.d.ts.map +1 -0
  226. package/esm/utils/device.js +111 -0
  227. package/esm/utils/device.js.map +1 -0
  228. package/esm/utils/dom.d.ts +69 -0
  229. package/esm/utils/dom.d.ts.map +1 -0
  230. package/esm/utils/dom.js +134 -0
  231. package/esm/utils/dom.js.map +1 -0
  232. package/esm/utils/event-emitter.d.ts +52 -0
  233. package/esm/utils/event-emitter.d.ts.map +1 -0
  234. package/esm/utils/event-emitter.js +99 -0
  235. package/esm/utils/event-emitter.js.map +1 -0
  236. package/esm/utils/formatters.d.ts +51 -0
  237. package/esm/utils/formatters.d.ts.map +1 -0
  238. package/esm/utils/formatters.js +57 -0
  239. package/esm/utils/formatters.js.map +1 -0
  240. package/esm/utils/index.d.ts +10 -0
  241. package/esm/utils/index.d.ts.map +1 -0
  242. package/esm/utils/index.js +16 -0
  243. package/esm/utils/random.d.ts +71 -0
  244. package/esm/utils/random.d.ts.map +1 -0
  245. package/esm/utils/random.js +292 -0
  246. package/esm/utils/random.js.map +1 -0
  247. package/lib/icons.cjs +44 -0
  248. package/lib/icons.cjs.map +1 -0
  249. package/lib/icons.d.ts +58 -0
  250. package/lib/index.cjs +141 -0
  251. package/lib/index.d.ts +12 -0
  252. package/lib/layouts/amount.cjs +177 -0
  253. package/lib/layouts/amount.cjs.map +1 -0
  254. package/lib/layouts/amount.d.ts +14 -0
  255. package/lib/layouts/bankcard.cjs +100 -0
  256. package/lib/layouts/bankcard.cjs.map +1 -0
  257. package/lib/layouts/bankcard.d.ts +15 -0
  258. package/lib/layouts/email.cjs +128 -0
  259. package/lib/layouts/email.cjs.map +1 -0
  260. package/lib/layouts/email.d.ts +11 -0
  261. package/lib/layouts/idcard.cjs +100 -0
  262. package/lib/layouts/idcard.cjs.map +1 -0
  263. package/lib/layouts/idcard.d.ts +16 -0
  264. package/lib/layouts/index.cjs +107 -0
  265. package/lib/layouts/index.cjs.map +1 -0
  266. package/lib/layouts/index.d.ts +54 -0
  267. package/lib/layouts/license-plate.cjs +296 -0
  268. package/lib/layouts/license-plate.cjs.map +1 -0
  269. package/lib/layouts/license-plate.d.ts +35 -0
  270. package/lib/layouts/number.cjs +170 -0
  271. package/lib/layouts/number.cjs.map +1 -0
  272. package/lib/layouts/number.d.ts +14 -0
  273. package/lib/layouts/phone.cjs +177 -0
  274. package/lib/layouts/phone.cjs.map +1 -0
  275. package/lib/layouts/phone.d.ts +15 -0
  276. package/lib/layouts/punct.cjs +113 -0
  277. package/lib/layouts/punct.cjs.map +1 -0
  278. package/lib/layouts/punct.d.ts +7 -0
  279. package/lib/layouts/qwerty.cjs +117 -0
  280. package/lib/layouts/qwerty.cjs.map +1 -0
  281. package/lib/layouts/qwerty.d.ts +10 -0
  282. package/lib/layouts/search.cjs +102 -0
  283. package/lib/layouts/search.cjs.map +1 -0
  284. package/lib/layouts/search.d.ts +7 -0
  285. package/lib/layouts/symbol.cjs +196 -0
  286. package/lib/layouts/symbol.cjs.map +1 -0
  287. package/lib/layouts/symbol.d.ts +14 -0
  288. package/lib/layouts/url.cjs +100 -0
  289. package/lib/layouts/url.cjs.map +1 -0
  290. package/lib/layouts/url.d.ts +7 -0
  291. package/lib/layouts/verifycode.cjs +101 -0
  292. package/lib/layouts/verifycode.cjs.map +1 -0
  293. package/lib/layouts/verifycode.d.ts +15 -0
  294. package/lib/managers/index.cjs +20 -0
  295. package/lib/managers/index.d.ts +8 -0
  296. package/lib/managers/keyboard-manager.cjs +376 -0
  297. package/lib/managers/keyboard-manager.cjs.map +1 -0
  298. package/lib/managers/keyboard-manager.d.ts +130 -0
  299. package/lib/managers/keyboard-renderer.cjs +285 -0
  300. package/lib/managers/keyboard-renderer.cjs.map +1 -0
  301. package/lib/managers/keyboard-renderer.d.ts +115 -0
  302. package/lib/managers/position-manager.cjs +201 -0
  303. package/lib/managers/position-manager.cjs.map +1 -0
  304. package/lib/managers/position-manager.d.ts +72 -0
  305. package/lib/package.json +3 -0
  306. package/lib/themes/index.cjs +117 -0
  307. package/lib/themes/index.cjs.map +1 -0
  308. package/lib/themes/index.d.ts +70 -0
  309. package/lib/themes/presets.cjs +214 -0
  310. package/lib/themes/presets.cjs.map +1 -0
  311. package/lib/themes/presets.d.ts +39 -0
  312. package/lib/themes/types.cjs +11 -0
  313. package/lib/themes/types.d.ts +118 -0
  314. package/lib/types/index.cjs +11 -0
  315. package/lib/types/index.d.ts +7 -0
  316. package/lib/types/keyboard.cjs +11 -0
  317. package/lib/types/keyboard.d.ts +253 -0
  318. package/lib/types/position.cjs +11 -0
  319. package/lib/types/position.d.ts +139 -0
  320. package/lib/utils/device.cjs +120 -0
  321. package/lib/utils/device.cjs.map +1 -0
  322. package/lib/utils/device.d.ts +45 -0
  323. package/lib/utils/dom.cjs +148 -0
  324. package/lib/utils/dom.cjs.map +1 -0
  325. package/lib/utils/dom.d.ts +69 -0
  326. package/lib/utils/event-emitter.cjs +100 -0
  327. package/lib/utils/event-emitter.cjs.map +1 -0
  328. package/lib/utils/event-emitter.d.ts +52 -0
  329. package/lib/utils/formatters.cjs +66 -0
  330. package/lib/utils/formatters.cjs.map +1 -0
  331. package/lib/utils/formatters.d.ts +51 -0
  332. package/lib/utils/index.cjs +58 -0
  333. package/lib/utils/index.d.ts +10 -0
  334. package/lib/utils/random.cjs +301 -0
  335. package/lib/utils/random.cjs.map +1 -0
  336. package/lib/utils/random.d.ts +71 -0
  337. package/package.json +121 -0
@@ -0,0 +1,70 @@
1
+ /**
2
+ * 主题管理模块
3
+ * @module themes
4
+ */
5
+ import type { ThemeConfig, ThemeCSSVariables, ThemeName } from './types';
6
+ export * from './types';
7
+ export * from './presets';
8
+ /**
9
+ * 获取主题配置
10
+ * @param name - 主题名称
11
+ * @returns 主题配置,如果不存在则返回默认主题
12
+ */
13
+ export declare function getTheme(name: ThemeName | string): ThemeConfig;
14
+ /**
15
+ * 注册自定义主题
16
+ * @param theme - 主题配置
17
+ */
18
+ export declare function registerTheme(theme: ThemeConfig): void;
19
+ /**
20
+ * 获取所有可用主题
21
+ * @returns 主题名称列表
22
+ */
23
+ export declare function getAvailableThemes(): string[];
24
+ /**
25
+ * 获取所有主题配置
26
+ * @returns 主题配置列表
27
+ */
28
+ export declare function getAllThemes(): ThemeConfig[];
29
+ /**
30
+ * 设置当前主题
31
+ * @param name - 主题名称
32
+ */
33
+ export declare function setCurrentTheme(name: ThemeName | string): ThemeConfig;
34
+ /**
35
+ * 获取当前主题
36
+ */
37
+ export declare function getCurrentTheme(): ThemeConfig;
38
+ /**
39
+ * 将主题配置转换为 CSS 变量
40
+ * @param theme - 主题配置
41
+ * @returns CSS 变量对象
42
+ */
43
+ export declare function themeToCSS(theme: ThemeConfig): ThemeCSSVariables;
44
+ /**
45
+ * 将 CSS 变量应用到元素
46
+ * @param element - 目标元素
47
+ * @param theme - 主题配置
48
+ */
49
+ export declare function applyTheme(element: HTMLElement, theme: ThemeConfig): void;
50
+ /**
51
+ * 生成主题的内联样式字符串
52
+ * @param theme - 主题配置
53
+ * @returns 内联样式字符串
54
+ */
55
+ export declare function generateThemeStyle(theme: ThemeConfig): string;
56
+ /**
57
+ * 合并主题配置
58
+ * @param base - 基础主题
59
+ * @param overrides - 覆盖配置
60
+ * @returns 合并后的主题
61
+ */
62
+ export declare function mergeTheme(base: ThemeConfig, overrides: Partial<ThemeConfig>): ThemeConfig;
63
+ /**
64
+ * 创建自定义主题
65
+ * @param name - 主题名称
66
+ * @param baseTheme - 基础主题名称
67
+ * @param customization - 自定义配置
68
+ */
69
+ export declare function createTheme(name: string, baseTheme: ThemeName | string, customization: Partial<Omit<ThemeConfig, 'name'>>): ThemeConfig;
70
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxE,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AAYzB;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAE9D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEtD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAK5C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAGrE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB,CAuBhE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAYzE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAM7D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,GAC9B,WAAW,CAQb;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAChD,WAAW,CAQb"}
@@ -0,0 +1,99 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/keyboard-core v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:33:29 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ import { darkTheme, defaultTheme, iosTheme, materialTheme, minimalTheme, miuiTheme, presetThemes } from "./presets.js";
11
+ //#region src/themes/index.ts
12
+ const customThemes = /* @__PURE__ */ new Map();
13
+ let currentTheme = defaultTheme;
14
+ function getTheme(name) {
15
+ return customThemes.get(name) || presetThemes[name] || defaultTheme;
16
+ }
17
+ function registerTheme(theme) {
18
+ customThemes.set(theme.name, theme);
19
+ }
20
+ function getAvailableThemes() {
21
+ return [...Object.keys(presetThemes), ...customThemes.keys()];
22
+ }
23
+ function getAllThemes() {
24
+ return [...Object.values(presetThemes), ...customThemes.values()];
25
+ }
26
+ function setCurrentTheme(name) {
27
+ currentTheme = getTheme(name);
28
+ return currentTheme;
29
+ }
30
+ function getCurrentTheme() {
31
+ return currentTheme;
32
+ }
33
+ function themeToCSS(theme) {
34
+ return {
35
+ "--keyboard-bg": theme.colors.background,
36
+ "--keyboard-key-bg": theme.colors.keyBackground,
37
+ "--keyboard-key-color": theme.colors.keyColor,
38
+ "--keyboard-key-active-bg": theme.colors.keyActiveBackground,
39
+ "--keyboard-fn-key-bg": theme.colors.fnKeyBackground,
40
+ "--keyboard-fn-key-color": theme.colors.fnKeyColor,
41
+ "--keyboard-fn-key-active-bg": theme.colors.fnKeyActiveBackground,
42
+ "--keyboard-primary-bg": theme.colors.primaryBackground,
43
+ "--keyboard-primary-active-bg": theme.colors.primaryActiveBackground,
44
+ "--keyboard-primary-color": theme.colors.primaryColor,
45
+ "--keyboard-key-height": `${theme.sizes.keyHeight}px`,
46
+ "--keyboard-key-radius": `${theme.sizes.keyRadius}px`,
47
+ "--keyboard-key-gap": `${theme.sizes.keyGap}px`,
48
+ "--keyboard-font-size": `${theme.sizes.fontSize}px`,
49
+ "--keyboard-fn-font-size": `${theme.sizes.fnFontSize}px`,
50
+ "--keyboard-padding": `${theme.sizes.padding}px`,
51
+ "--keyboard-key-shadow": theme.effects.keyShadow,
52
+ "--keyboard-transition-duration": `${theme.effects.transitionDuration}ms`,
53
+ "--keyboard-border-color": theme.colors.borderColor,
54
+ "--keyboard-divider-color": theme.colors.dividerColor
55
+ };
56
+ }
57
+ function applyTheme(element, theme) {
58
+ const cssVars = themeToCSS(theme);
59
+ Object.entries(cssVars).forEach(([key, value]) => {
60
+ if (value) element.style.setProperty(key, value);
61
+ });
62
+ element.classList.remove("keyboard-theme-light", "keyboard-theme-dark");
63
+ element.classList.add(theme.isDark ? "keyboard-theme-dark" : "keyboard-theme-light");
64
+ element.dataset.theme = theme.name;
65
+ }
66
+ function generateThemeStyle(theme) {
67
+ const cssVars = themeToCSS(theme);
68
+ return Object.entries(cssVars).filter(([, value]) => value).map(([key, value]) => `${key}: ${value}`).join("; ");
69
+ }
70
+ function mergeTheme(base, overrides) {
71
+ return {
72
+ ...base,
73
+ ...overrides,
74
+ colors: {
75
+ ...base.colors,
76
+ ...overrides.colors
77
+ },
78
+ sizes: {
79
+ ...base.sizes,
80
+ ...overrides.sizes
81
+ },
82
+ effects: {
83
+ ...base.effects,
84
+ ...overrides.effects
85
+ }
86
+ };
87
+ }
88
+ function createTheme(name, baseTheme, customization) {
89
+ const theme = mergeTheme(getTheme(baseTheme), {
90
+ ...customization,
91
+ name
92
+ });
93
+ registerTheme(theme);
94
+ return theme;
95
+ }
96
+ //#endregion
97
+ export { applyTheme, createTheme, darkTheme, defaultTheme, generateThemeStyle, getAllThemes, getAvailableThemes, getCurrentTheme, getTheme, iosTheme, materialTheme, mergeTheme, minimalTheme, miuiTheme, presetThemes, registerTheme, setCurrentTheme, themeToCSS };
98
+ /*! End of @composy/keyboard-core | Powered by @composy/builder */
99
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/themes/index.ts"],"sourcesContent":["/**\n * 主题管理模块\n * @module themes\n */\n\nimport type { ThemeConfig, ThemeCSSVariables, ThemeName } from './types'\nimport { defaultTheme, presetThemes } from './presets'\n\nexport * from './types'\nexport * from './presets'\n\n/**\n * 自定义主题存储\n */\nconst customThemes: Map<string, ThemeConfig> = new Map()\n\n/**\n * 当前激活的主题\n */\nlet currentTheme: ThemeConfig = defaultTheme\n\n/**\n * 获取主题配置\n * @param name - 主题名称\n * @returns 主题配置,如果不存在则返回默认主题\n */\nexport function getTheme(name: ThemeName | string): ThemeConfig {\n return customThemes.get(name) || presetThemes[name] || defaultTheme\n}\n\n/**\n * 注册自定义主题\n * @param theme - 主题配置\n */\nexport function registerTheme(theme: ThemeConfig): void {\n customThemes.set(theme.name, theme)\n}\n\n/**\n * 获取所有可用主题\n * @returns 主题名称列表\n */\nexport function getAvailableThemes(): string[] {\n return [...Object.keys(presetThemes), ...customThemes.keys()]\n}\n\n/**\n * 获取所有主题配置\n * @returns 主题配置列表\n */\nexport function getAllThemes(): ThemeConfig[] {\n return [\n ...Object.values(presetThemes),\n ...customThemes.values(),\n ]\n}\n\n/**\n * 设置当前主题\n * @param name - 主题名称\n */\nexport function setCurrentTheme(name: ThemeName | string): ThemeConfig {\n currentTheme = getTheme(name)\n return currentTheme\n}\n\n/**\n * 获取当前主题\n */\nexport function getCurrentTheme(): ThemeConfig {\n return currentTheme\n}\n\n/**\n * 将主题配置转换为 CSS 变量\n * @param theme - 主题配置\n * @returns CSS 变量对象\n */\nexport function themeToCSS(theme: ThemeConfig): ThemeCSSVariables {\n return {\n '--keyboard-bg': theme.colors.background,\n '--keyboard-key-bg': theme.colors.keyBackground,\n '--keyboard-key-color': theme.colors.keyColor,\n '--keyboard-key-active-bg': theme.colors.keyActiveBackground,\n '--keyboard-fn-key-bg': theme.colors.fnKeyBackground,\n '--keyboard-fn-key-color': theme.colors.fnKeyColor,\n '--keyboard-fn-key-active-bg': theme.colors.fnKeyActiveBackground,\n '--keyboard-primary-bg': theme.colors.primaryBackground,\n '--keyboard-primary-active-bg': theme.colors.primaryActiveBackground,\n '--keyboard-primary-color': theme.colors.primaryColor,\n '--keyboard-key-height': `${theme.sizes.keyHeight}px`,\n '--keyboard-key-radius': `${theme.sizes.keyRadius}px`,\n '--keyboard-key-gap': `${theme.sizes.keyGap}px`,\n '--keyboard-font-size': `${theme.sizes.fontSize}px`,\n '--keyboard-fn-font-size': `${theme.sizes.fnFontSize}px`,\n '--keyboard-padding': `${theme.sizes.padding}px`,\n '--keyboard-key-shadow': theme.effects.keyShadow,\n '--keyboard-transition-duration': `${theme.effects.transitionDuration}ms`,\n '--keyboard-border-color': theme.colors.borderColor,\n '--keyboard-divider-color': theme.colors.dividerColor,\n }\n}\n\n/**\n * 将 CSS 变量应用到元素\n * @param element - 目标元素\n * @param theme - 主题配置\n */\nexport function applyTheme(element: HTMLElement, theme: ThemeConfig): void {\n const cssVars = themeToCSS(theme)\n Object.entries(cssVars).forEach(([key, value]) => {\n if (value) {\n element.style.setProperty(key, value)\n }\n })\n\n // 添加主题类名\n element.classList.remove('keyboard-theme-light', 'keyboard-theme-dark')\n element.classList.add(theme.isDark ? 'keyboard-theme-dark' : 'keyboard-theme-light')\n element.dataset.theme = theme.name\n}\n\n/**\n * 生成主题的内联样式字符串\n * @param theme - 主题配置\n * @returns 内联样式字符串\n */\nexport function generateThemeStyle(theme: ThemeConfig): string {\n const cssVars = themeToCSS(theme)\n return Object.entries(cssVars)\n .filter(([, value]) => value)\n .map(([key, value]) => `${key}: ${value}`)\n .join('; ')\n}\n\n/**\n * 合并主题配置\n * @param base - 基础主题\n * @param overrides - 覆盖配置\n * @returns 合并后的主题\n */\nexport function mergeTheme(\n base: ThemeConfig,\n overrides: Partial<ThemeConfig>,\n): ThemeConfig {\n return {\n ...base,\n ...overrides,\n colors: { ...base.colors, ...overrides.colors },\n sizes: { ...base.sizes, ...overrides.sizes },\n effects: { ...base.effects, ...overrides.effects },\n }\n}\n\n/**\n * 创建自定义主题\n * @param name - 主题名称\n * @param baseTheme - 基础主题名称\n * @param customization - 自定义配置\n */\nexport function createTheme(\n name: string,\n baseTheme: ThemeName | string,\n customization: Partial<Omit<ThemeConfig, 'name'>>,\n): ThemeConfig {\n const base = getTheme(baseTheme)\n const theme = mergeTheme(base, {\n ...customization,\n name,\n })\n registerTheme(theme)\n return theme\n}\n"],"mappings":";;;;;;;;;;;AAcA,MAAM,+BAAyC,IAAI,IAAI;AAKvD,IAAI,eAA4B;AAOzB,SAAS,SAAS,MAAuC;CAC9D,OAAO,aAAa,IAAI,IAAI,KAAK,aAAa,SAAS;AACzD;AAMO,SAAS,cAAc,OAA0B;CACtD,aAAa,IAAI,MAAM,MAAM,KAAK;AACpC;AAMO,SAAS,qBAA+B;CAC7C,OAAO,CAAC,GAAG,OAAO,KAAK,YAAY,GAAG,GAAG,aAAa,KAAK,CAAC;AAC9D;AAMO,SAAS,eAA8B;CAC5C,OAAO,CACL,GAAG,OAAO,OAAO,YAAY,GAC7B,GAAG,aAAa,OAAO,CACzB;AACF;AAMO,SAAS,gBAAgB,MAAuC;CACrE,eAAe,SAAS,IAAI;CAC5B,OAAO;AACT;AAKO,SAAS,kBAA+B;CAC7C,OAAO;AACT;AAOO,SAAS,WAAW,OAAuC;CAChE,OAAO;EACL,iBAAiB,MAAM,OAAO;EAC9B,qBAAqB,MAAM,OAAO;EAClC,wBAAwB,MAAM,OAAO;EACrC,4BAA4B,MAAM,OAAO;EACzC,wBAAwB,MAAM,OAAO;EACrC,2BAA2B,MAAM,OAAO;EACxC,+BAA+B,MAAM,OAAO;EAC5C,yBAAyB,MAAM,OAAO;EACtC,gCAAgC,MAAM,OAAO;EAC7C,4BAA4B,MAAM,OAAO;EACzC,yBAAyB,GAAG,MAAM,MAAM,UAAS;EACjD,yBAAyB,GAAG,MAAM,MAAM,UAAS;EACjD,sBAAsB,GAAG,MAAM,MAAM,OAAM;EAC3C,wBAAwB,GAAG,MAAM,MAAM,SAAQ;EAC/C,2BAA2B,GAAG,MAAM,MAAM,WAAU;EACpD,sBAAsB,GAAG,MAAM,MAAM,QAAO;EAC5C,yBAAyB,MAAM,QAAQ;EACvC,kCAAkC,GAAG,MAAM,QAAQ,mBAAkB;EACrE,2BAA2B,MAAM,OAAO;EACxC,4BAA4B,MAAM,OAAO;CAC3C;AACF;AAOO,SAAS,WAAW,SAAsB,OAA0B;CACzE,MAAM,UAAU,WAAW,KAAK;CAChC,OAAO,QAAQ,OAAO,CAAA,CAAE,SAAS,CAAC,KAAK,WAAW;EAChD,IAAI,OACF,QAAQ,MAAM,YAAY,KAAK,KAAK;CAExC,CAAC;CAGD,QAAQ,UAAU,OAAO,wBAAwB,qBAAqB;CACtE,QAAQ,UAAU,IAAI,MAAM,SAAS,wBAAwB,sBAAsB;CACnF,QAAQ,QAAQ,QAAQ,MAAM;AAChC;AAOO,SAAS,mBAAmB,OAA4B;CAC7D,MAAM,UAAU,WAAW,KAAK;CAChC,OAAO,OAAO,QAAQ,OAAO,CAAA,CAC1B,QAAQ,GAAG,WAAW,KAAK,CAAA,CAC3B,KAAK,CAAC,KAAK,WAAW,GAAG,IAAG,IAAK,OAAO,CAAA,CACxC,KAAK,IAAI;AACd;AAQO,SAAS,WACd,MACA,WACa;CACb,OAAO;EACL,GAAG;EACH,GAAG;EACH,QAAQ;GAAE,GAAG,KAAK;GAAQ,GAAG,UAAU;EAAO;EAC9C,OAAO;GAAE,GAAG,KAAK;GAAO,GAAG,UAAU;EAAM;EAC3C,SAAS;GAAE,GAAG,KAAK;GAAS,GAAG,UAAU;EAAQ;CACnD;AACF;AAQO,SAAS,YACd,MACA,WACA,eACa;CAEb,MAAM,QAAQ,WADD,SAAS,SACG,GAAM;EAC7B,GAAG;EACH;CACF,CAAC;CACD,cAAc,KAAK;CACnB,OAAO;AACT"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 预设主题配置
3
+ * @module themes/presets
4
+ */
5
+ import type { ThemeConfig } from './types';
6
+ /**
7
+ * MIUI 小米风格主题(默认)
8
+ * 特点:纯净、扁平、简洁、无多余装饰
9
+ */
10
+ export declare const miuiTheme: ThemeConfig;
11
+ /**
12
+ * iOS 风格主题
13
+ * 特点:毛玻璃、圆润阴影、精致
14
+ */
15
+ export declare const iosTheme: ThemeConfig;
16
+ /**
17
+ * Material Design 主题
18
+ * 特点:深色、涟漪动效、层次感
19
+ */
20
+ export declare const materialTheme: ThemeConfig;
21
+ /**
22
+ * 极简主题
23
+ * 特点:无边框、超简洁、透明感
24
+ */
25
+ export declare const minimalTheme: ThemeConfig;
26
+ /**
27
+ * 深色主题
28
+ * 特点:护眼、现代、高对比
29
+ */
30
+ export declare const darkTheme: ThemeConfig;
31
+ /**
32
+ * 所有预设主题
33
+ */
34
+ export declare const presetThemes: Record<string, ThemeConfig>;
35
+ /**
36
+ * 默认主题
37
+ */
38
+ export declare const defaultTheme: ThemeConfig;
39
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/themes/presets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WAoCvB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,WAoCtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAoC3B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WAoC1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,WAoCvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAMpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,aAAY,CAAA"}
@@ -0,0 +1,207 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/keyboard-core v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:33:29 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ //#region src/themes/presets.ts
11
+ const miuiTheme = {
12
+ name: "miui",
13
+ displayName: "MIUI",
14
+ description: "小米风格 - 纯净简洁",
15
+ isDark: false,
16
+ colors: {
17
+ background: "#f5f5f5",
18
+ keyBackground: "#ffffff",
19
+ keyColor: "#1a1a1a",
20
+ keyActiveBackground: "#e8e8e8",
21
+ fnKeyBackground: "#e0e0e0",
22
+ fnKeyColor: "#666666",
23
+ fnKeyActiveBackground: "#d0d0d0",
24
+ primaryBackground: "#ff6700",
25
+ primaryActiveBackground: "#e55d00",
26
+ primaryColor: "#ffffff",
27
+ borderColor: "transparent",
28
+ dividerColor: "#eeeeee"
29
+ },
30
+ sizes: {
31
+ keyHeight: 46,
32
+ keyRadius: 8,
33
+ keyGap: 6,
34
+ fontSize: 18,
35
+ fnFontSize: 14,
36
+ padding: 8
37
+ },
38
+ effects: {
39
+ keyShadow: "none",
40
+ keyActiveShadow: "none",
41
+ keyActiveScale: .96,
42
+ transitionDuration: 100,
43
+ enableBlur: false,
44
+ blurAmount: 0,
45
+ enableRipple: false
46
+ }
47
+ };
48
+ const iosTheme = {
49
+ name: "ios",
50
+ displayName: "iOS",
51
+ description: "Apple 风格 - 精致优雅",
52
+ isDark: false,
53
+ colors: {
54
+ background: "#d1d3d9",
55
+ keyBackground: "#ffffff",
56
+ keyColor: "#000000",
57
+ keyActiveBackground: "#b8bac2",
58
+ fnKeyBackground: "#a8aab4",
59
+ fnKeyColor: "#000000",
60
+ fnKeyActiveBackground: "#9699a3",
61
+ primaryBackground: "#007aff",
62
+ primaryActiveBackground: "#0062cc",
63
+ primaryColor: "#ffffff",
64
+ borderColor: "transparent",
65
+ dividerColor: "#c8cad0"
66
+ },
67
+ sizes: {
68
+ keyHeight: 43,
69
+ keyRadius: 5,
70
+ keyGap: 6,
71
+ fontSize: 22,
72
+ fnFontSize: 15,
73
+ padding: 4
74
+ },
75
+ effects: {
76
+ keyShadow: "0 1px 0 rgba(0,0,0,0.35)",
77
+ keyActiveShadow: "0 0 0 rgba(0,0,0,0)",
78
+ keyActiveScale: 1,
79
+ transitionDuration: 80,
80
+ enableBlur: true,
81
+ blurAmount: 20,
82
+ enableRipple: false
83
+ }
84
+ };
85
+ const materialTheme = {
86
+ name: "material",
87
+ displayName: "Material",
88
+ description: "Google 风格 - 深邃现代",
89
+ isDark: true,
90
+ colors: {
91
+ background: "#263238",
92
+ keyBackground: "#37474f",
93
+ keyColor: "#ffffff",
94
+ keyActiveBackground: "#455a64",
95
+ fnKeyBackground: "#455a64",
96
+ fnKeyColor: "#b0bec5",
97
+ fnKeyActiveBackground: "#546e7a",
98
+ primaryBackground: "#4caf50",
99
+ primaryActiveBackground: "#43a047",
100
+ primaryColor: "#ffffff",
101
+ borderColor: "transparent",
102
+ dividerColor: "#37474f"
103
+ },
104
+ sizes: {
105
+ keyHeight: 48,
106
+ keyRadius: 4,
107
+ keyGap: 4,
108
+ fontSize: 20,
109
+ fnFontSize: 14,
110
+ padding: 6
111
+ },
112
+ effects: {
113
+ keyShadow: "0 1px 3px rgba(0,0,0,0.2)",
114
+ keyActiveShadow: "0 2px 6px rgba(0,0,0,0.3)",
115
+ keyActiveScale: 1,
116
+ transitionDuration: 150,
117
+ enableBlur: false,
118
+ blurAmount: 0,
119
+ enableRipple: true
120
+ }
121
+ };
122
+ const minimalTheme = {
123
+ name: "minimal",
124
+ displayName: "Minimal",
125
+ description: "极简风格 - 轻盈透明",
126
+ isDark: false,
127
+ colors: {
128
+ background: "rgba(250, 250, 250, 0.95)",
129
+ keyBackground: "transparent",
130
+ keyColor: "#333333",
131
+ keyActiveBackground: "rgba(0, 0, 0, 0.08)",
132
+ fnKeyBackground: "transparent",
133
+ fnKeyColor: "#888888",
134
+ fnKeyActiveBackground: "rgba(0, 0, 0, 0.08)",
135
+ primaryBackground: "#333333",
136
+ primaryActiveBackground: "#000000",
137
+ primaryColor: "#ffffff",
138
+ borderColor: "#eeeeee",
139
+ dividerColor: "#eeeeee"
140
+ },
141
+ sizes: {
142
+ keyHeight: 44,
143
+ keyRadius: 12,
144
+ keyGap: 8,
145
+ fontSize: 17,
146
+ fnFontSize: 13,
147
+ padding: 12
148
+ },
149
+ effects: {
150
+ keyShadow: "none",
151
+ keyActiveShadow: "none",
152
+ keyActiveScale: .92,
153
+ transitionDuration: 120,
154
+ enableBlur: true,
155
+ blurAmount: 30,
156
+ enableRipple: false
157
+ }
158
+ };
159
+ const darkTheme = {
160
+ name: "dark",
161
+ displayName: "Dark",
162
+ description: "深色模式 - 护眼舒适",
163
+ isDark: true,
164
+ colors: {
165
+ background: "#1c1c1e",
166
+ keyBackground: "#3a3a3c",
167
+ keyColor: "#ffffff",
168
+ keyActiveBackground: "#4a4a4c",
169
+ fnKeyBackground: "#2c2c2e",
170
+ fnKeyColor: "#ebebf5",
171
+ fnKeyActiveBackground: "#3c3c3e",
172
+ primaryBackground: "#0a84ff",
173
+ primaryActiveBackground: "#0070e0",
174
+ primaryColor: "#ffffff",
175
+ borderColor: "#3a3a3c",
176
+ dividerColor: "#3a3a3c"
177
+ },
178
+ sizes: {
179
+ keyHeight: 45,
180
+ keyRadius: 8,
181
+ keyGap: 6,
182
+ fontSize: 18,
183
+ fnFontSize: 14,
184
+ padding: 8
185
+ },
186
+ effects: {
187
+ keyShadow: "0 1px 2px rgba(0,0,0,0.4)",
188
+ keyActiveShadow: "0 0 8px rgba(10,132,255,0.3)",
189
+ keyActiveScale: .97,
190
+ transitionDuration: 100,
191
+ enableBlur: true,
192
+ blurAmount: 20,
193
+ enableRipple: false
194
+ }
195
+ };
196
+ const presetThemes = {
197
+ miui: miuiTheme,
198
+ ios: iosTheme,
199
+ material: materialTheme,
200
+ minimal: minimalTheme,
201
+ dark: darkTheme
202
+ };
203
+ const defaultTheme = miuiTheme;
204
+ //#endregion
205
+ export { darkTheme, defaultTheme, iosTheme, materialTheme, minimalTheme, miuiTheme, presetThemes };
206
+ /*! End of @composy/keyboard-core | Powered by @composy/builder */
207
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","names":[],"sources":["../../src/themes/presets.ts"],"sourcesContent":["/**\n * 预设主题配置\n * @module themes/presets\n */\n\nimport type { ThemeConfig } from './types'\n\n/**\n * MIUI 小米风格主题(默认)\n * 特点:纯净、扁平、简洁、无多余装饰\n */\nexport const miuiTheme: ThemeConfig = {\n name: 'miui',\n displayName: 'MIUI',\n description: '小米风格 - 纯净简洁',\n isDark: false,\n colors: {\n background: '#f5f5f5',\n keyBackground: '#ffffff',\n keyColor: '#1a1a1a',\n keyActiveBackground: '#e8e8e8',\n fnKeyBackground: '#e0e0e0',\n fnKeyColor: '#666666',\n fnKeyActiveBackground: '#d0d0d0',\n primaryBackground: '#ff6700', // 小米橙\n primaryActiveBackground: '#e55d00',\n primaryColor: '#ffffff',\n borderColor: 'transparent',\n dividerColor: '#eeeeee',\n },\n sizes: {\n keyHeight: 46,\n keyRadius: 8,\n keyGap: 6,\n fontSize: 18,\n fnFontSize: 14,\n padding: 8,\n },\n effects: {\n keyShadow: 'none',\n keyActiveShadow: 'none',\n keyActiveScale: 0.96,\n transitionDuration: 100,\n enableBlur: false,\n blurAmount: 0,\n enableRipple: false,\n },\n}\n\n/**\n * iOS 风格主题\n * 特点:毛玻璃、圆润阴影、精致\n */\nexport const iosTheme: ThemeConfig = {\n name: 'ios',\n displayName: 'iOS',\n description: 'Apple 风格 - 精致优雅',\n isDark: false,\n colors: {\n background: '#d1d3d9',\n keyBackground: '#ffffff',\n keyColor: '#000000',\n keyActiveBackground: '#b8bac2',\n fnKeyBackground: '#a8aab4',\n fnKeyColor: '#000000',\n fnKeyActiveBackground: '#9699a3',\n primaryBackground: '#007aff',\n primaryActiveBackground: '#0062cc',\n primaryColor: '#ffffff',\n borderColor: 'transparent',\n dividerColor: '#c8cad0',\n },\n sizes: {\n keyHeight: 43,\n keyRadius: 5,\n keyGap: 6,\n fontSize: 22,\n fnFontSize: 15,\n padding: 4,\n },\n effects: {\n keyShadow: '0 1px 0 rgba(0,0,0,0.35)',\n keyActiveShadow: '0 0 0 rgba(0,0,0,0)',\n keyActiveScale: 1,\n transitionDuration: 80,\n enableBlur: true,\n blurAmount: 20,\n enableRipple: false,\n },\n}\n\n/**\n * Material Design 主题\n * 特点:深色、涟漪动效、层次感\n */\nexport const materialTheme: ThemeConfig = {\n name: 'material',\n displayName: 'Material',\n description: 'Google 风格 - 深邃现代',\n isDark: true,\n colors: {\n background: '#263238',\n keyBackground: '#37474f',\n keyColor: '#ffffff',\n keyActiveBackground: '#455a64',\n fnKeyBackground: '#455a64',\n fnKeyColor: '#b0bec5',\n fnKeyActiveBackground: '#546e7a',\n primaryBackground: '#4caf50', // Material Green\n primaryActiveBackground: '#43a047',\n primaryColor: '#ffffff',\n borderColor: 'transparent',\n dividerColor: '#37474f',\n },\n sizes: {\n keyHeight: 48,\n keyRadius: 4,\n keyGap: 4,\n fontSize: 20,\n fnFontSize: 14,\n padding: 6,\n },\n effects: {\n keyShadow: '0 1px 3px rgba(0,0,0,0.2)',\n keyActiveShadow: '0 2px 6px rgba(0,0,0,0.3)',\n keyActiveScale: 1,\n transitionDuration: 150,\n enableBlur: false,\n blurAmount: 0,\n enableRipple: true,\n },\n}\n\n/**\n * 极简主题\n * 特点:无边框、超简洁、透明感\n */\nexport const minimalTheme: ThemeConfig = {\n name: 'minimal',\n displayName: 'Minimal',\n description: '极简风格 - 轻盈透明',\n isDark: false,\n colors: {\n background: 'rgba(250, 250, 250, 0.95)',\n keyBackground: 'transparent',\n keyColor: '#333333',\n keyActiveBackground: 'rgba(0, 0, 0, 0.08)',\n fnKeyBackground: 'transparent',\n fnKeyColor: '#888888',\n fnKeyActiveBackground: 'rgba(0, 0, 0, 0.08)',\n primaryBackground: '#333333',\n primaryActiveBackground: '#000000',\n primaryColor: '#ffffff',\n borderColor: '#eeeeee',\n dividerColor: '#eeeeee',\n },\n sizes: {\n keyHeight: 44,\n keyRadius: 12,\n keyGap: 8,\n fontSize: 17,\n fnFontSize: 13,\n padding: 12,\n },\n effects: {\n keyShadow: 'none',\n keyActiveShadow: 'none',\n keyActiveScale: 0.92,\n transitionDuration: 120,\n enableBlur: true,\n blurAmount: 30,\n enableRipple: false,\n },\n}\n\n/**\n * 深色主题\n * 特点:护眼、现代、高对比\n */\nexport const darkTheme: ThemeConfig = {\n name: 'dark',\n displayName: 'Dark',\n description: '深色模式 - 护眼舒适',\n isDark: true,\n colors: {\n background: '#1c1c1e',\n keyBackground: '#3a3a3c',\n keyColor: '#ffffff',\n keyActiveBackground: '#4a4a4c',\n fnKeyBackground: '#2c2c2e',\n fnKeyColor: '#ebebf5',\n fnKeyActiveBackground: '#3c3c3e',\n primaryBackground: '#0a84ff',\n primaryActiveBackground: '#0070e0',\n primaryColor: '#ffffff',\n borderColor: '#3a3a3c',\n dividerColor: '#3a3a3c',\n },\n sizes: {\n keyHeight: 45,\n keyRadius: 8,\n keyGap: 6,\n fontSize: 18,\n fnFontSize: 14,\n padding: 8,\n },\n effects: {\n keyShadow: '0 1px 2px rgba(0,0,0,0.4)',\n keyActiveShadow: '0 0 8px rgba(10,132,255,0.3)',\n keyActiveScale: 0.97,\n transitionDuration: 100,\n enableBlur: true,\n blurAmount: 20,\n enableRipple: false,\n },\n}\n\n/**\n * 所有预设主题\n */\nexport const presetThemes: Record<string, ThemeConfig> = {\n miui: miuiTheme,\n ios: iosTheme,\n material: materialTheme,\n minimal: minimalTheme,\n dark: darkTheme,\n}\n\n/**\n * 默认主题\n */\nexport const defaultTheme = miuiTheme\n"],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * 主题系统类型定义
3
+ * @module themes/types
4
+ */
5
+ /**
6
+ * 预设主题名称
7
+ */
8
+ export type ThemeName = 'miui' | 'ios' | 'material' | 'minimal' | 'dark' | 'custom';
9
+ /**
10
+ * 主题色彩配置
11
+ */
12
+ export interface ThemeColors {
13
+ /** 键盘背景色 */
14
+ background: string;
15
+ /** 按键背景色 */
16
+ keyBackground: string;
17
+ /** 按键文字颜色 */
18
+ keyColor: string;
19
+ /** 按键按下背景色 */
20
+ keyActiveBackground: string;
21
+ /** 功能键背景色 */
22
+ fnKeyBackground: string;
23
+ /** 功能键文字颜色 */
24
+ fnKeyColor: string;
25
+ /** 功能键按下背景色 */
26
+ fnKeyActiveBackground: string;
27
+ /** 主色调(确认/完成键) */
28
+ primaryBackground: string;
29
+ /** 主色调按下 */
30
+ primaryActiveBackground: string;
31
+ /** 主色调文字 */
32
+ primaryColor: string;
33
+ /** 边框颜色(可选) */
34
+ borderColor?: string;
35
+ /** 分割线颜色 */
36
+ dividerColor?: string;
37
+ }
38
+ /**
39
+ * 主题尺寸配置
40
+ */
41
+ export interface ThemeSizes {
42
+ /** 按键高度 */
43
+ keyHeight: number;
44
+ /** 按键圆角 */
45
+ keyRadius: number;
46
+ /** 按键间距 */
47
+ keyGap: number;
48
+ /** 字体大小 */
49
+ fontSize: number;
50
+ /** 功能键字体大小 */
51
+ fnFontSize: number;
52
+ /** 键盘内边距 */
53
+ padding: number;
54
+ }
55
+ /**
56
+ * 主题效果配置
57
+ */
58
+ export interface ThemeEffects {
59
+ /** 按键阴影 */
60
+ keyShadow: string;
61
+ /** 按键按下阴影 */
62
+ keyActiveShadow: string;
63
+ /** 按键按下缩放 */
64
+ keyActiveScale: number;
65
+ /** 动画时长 (ms) */
66
+ transitionDuration: number;
67
+ /** 是否启用毛玻璃效果 */
68
+ enableBlur: boolean;
69
+ /** 毛玻璃模糊度 */
70
+ blurAmount: number;
71
+ /** 是否启用涟漪效果 */
72
+ enableRipple: boolean;
73
+ }
74
+ /**
75
+ * 完整主题配置
76
+ */
77
+ export interface ThemeConfig {
78
+ /** 主题名称 */
79
+ name: ThemeName | string;
80
+ /** 显示名称 */
81
+ displayName: string;
82
+ /** 主题描述 */
83
+ description?: string;
84
+ /** 色彩配置 */
85
+ colors: ThemeColors;
86
+ /** 尺寸配置 */
87
+ sizes: ThemeSizes;
88
+ /** 效果配置 */
89
+ effects: ThemeEffects;
90
+ /** 是否为深色主题 */
91
+ isDark: boolean;
92
+ }
93
+ /**
94
+ * 主题CSS变量映射
95
+ */
96
+ export interface ThemeCSSVariables {
97
+ '--keyboard-bg': string;
98
+ '--keyboard-key-bg': string;
99
+ '--keyboard-key-color': string;
100
+ '--keyboard-key-active-bg': string;
101
+ '--keyboard-fn-key-bg': string;
102
+ '--keyboard-fn-key-color': string;
103
+ '--keyboard-fn-key-active-bg': string;
104
+ '--keyboard-primary-bg': string;
105
+ '--keyboard-primary-active-bg': string;
106
+ '--keyboard-primary-color': string;
107
+ '--keyboard-key-height': string;
108
+ '--keyboard-key-radius': string;
109
+ '--keyboard-key-gap': string;
110
+ '--keyboard-font-size': string;
111
+ '--keyboard-fn-font-size': string;
112
+ '--keyboard-padding': string;
113
+ '--keyboard-key-shadow': string;
114
+ '--keyboard-transition-duration': string;
115
+ '--keyboard-border-color'?: string;
116
+ '--keyboard-divider-color'?: string;
117
+ }
118
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/themes/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/keyboard-core v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:33:29 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ /*! End of @composy/keyboard-core | Powered by @composy/builder */
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 类型定义导出
3
+ * @module types
4
+ */
5
+ export * from './keyboard';
6
+ export * from './position';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * ***********************************
3
+ * @composy/keyboard-core v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-08-17 11:33:29 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ /*! End of @composy/keyboard-core | Powered by @composy/builder */