@chenzy-design/core 0.3.1 → 0.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 (283) hide show
  1. package/dist/ai-chat-dialogue.d.ts +300 -0
  2. package/dist/ai-chat-dialogue.d.ts.map +1 -0
  3. package/dist/ai-chat-dialogue.js +699 -0
  4. package/dist/ai-chat-dialogue.js.map +1 -0
  5. package/dist/ai-chat-dialogue.test.d.ts +2 -0
  6. package/dist/ai-chat-dialogue.test.d.ts.map +1 -0
  7. package/dist/ai-chat-dialogue.test.js +338 -0
  8. package/dist/ai-chat-dialogue.test.js.map +1 -0
  9. package/dist/ai-chat-input.d.ts +191 -0
  10. package/dist/ai-chat-input.d.ts.map +1 -0
  11. package/dist/ai-chat-input.js +274 -0
  12. package/dist/ai-chat-input.js.map +1 -0
  13. package/dist/ai-chat-input.test.d.ts +2 -0
  14. package/dist/ai-chat-input.test.d.ts.map +1 -0
  15. package/dist/ai-chat-input.test.js +339 -0
  16. package/dist/ai-chat-input.test.js.map +1 -0
  17. package/dist/audio-player.d.ts +154 -0
  18. package/dist/audio-player.d.ts.map +1 -0
  19. package/dist/audio-player.js +254 -0
  20. package/dist/audio-player.js.map +1 -0
  21. package/dist/audio-player.test.d.ts +2 -0
  22. package/dist/audio-player.test.d.ts.map +1 -0
  23. package/dist/audio-player.test.js +275 -0
  24. package/dist/audio-player.test.js.map +1 -0
  25. package/dist/back-top.d.ts +4 -1
  26. package/dist/back-top.d.ts.map +1 -1
  27. package/dist/back-top.js +5 -2
  28. package/dist/back-top.js.map +1 -1
  29. package/dist/back-top.test.js +3 -2
  30. package/dist/back-top.test.js.map +1 -1
  31. package/dist/calendar.d.ts +132 -44
  32. package/dist/calendar.d.ts.map +1 -1
  33. package/dist/calendar.js +413 -70
  34. package/dist/calendar.js.map +1 -1
  35. package/dist/calendar.test.js +160 -76
  36. package/dist/calendar.test.js.map +1 -1
  37. package/dist/chat.d.ts +172 -0
  38. package/dist/chat.d.ts.map +1 -0
  39. package/dist/chat.js +210 -0
  40. package/dist/chat.js.map +1 -0
  41. package/dist/chat.test.d.ts +2 -0
  42. package/dist/chat.test.d.ts.map +1 -0
  43. package/dist/chat.test.js +181 -0
  44. package/dist/chat.test.js.map +1 -0
  45. package/dist/code-highlight.d.ts +30 -0
  46. package/dist/code-highlight.d.ts.map +1 -0
  47. package/dist/code-highlight.js +37 -0
  48. package/dist/code-highlight.js.map +1 -0
  49. package/dist/code-highlight.test.d.ts +2 -0
  50. package/dist/code-highlight.test.d.ts.map +1 -0
  51. package/dist/code-highlight.test.js +36 -0
  52. package/dist/code-highlight.test.js.map +1 -0
  53. package/dist/collapsible.d.ts +41 -0
  54. package/dist/collapsible.d.ts.map +1 -0
  55. package/dist/collapsible.js +33 -0
  56. package/dist/collapsible.js.map +1 -0
  57. package/dist/collapsible.test.d.ts +2 -0
  58. package/dist/collapsible.test.d.ts.map +1 -0
  59. package/dist/collapsible.test.js +57 -0
  60. package/dist/collapsible.test.js.map +1 -0
  61. package/dist/color-value.d.ts +60 -0
  62. package/dist/color-value.d.ts.map +1 -0
  63. package/dist/color-value.js +165 -0
  64. package/dist/color-value.js.map +1 -0
  65. package/dist/color-value.test.d.ts +2 -0
  66. package/dist/color-value.test.d.ts.map +1 -0
  67. package/dist/color-value.test.js +104 -0
  68. package/dist/color-value.test.js.map +1 -0
  69. package/dist/config-provider.d.ts +76 -37
  70. package/dist/config-provider.d.ts.map +1 -1
  71. package/dist/config-provider.js +107 -32
  72. package/dist/config-provider.js.map +1 -1
  73. package/dist/config-provider.test.js +123 -60
  74. package/dist/config-provider.test.js.map +1 -1
  75. package/dist/cropper.d.ts +164 -0
  76. package/dist/cropper.d.ts.map +1 -0
  77. package/dist/cropper.js +841 -0
  78. package/dist/cropper.js.map +1 -0
  79. package/dist/cropper.test.d.ts +2 -0
  80. package/dist/cropper.test.d.ts.map +1 -0
  81. package/dist/cropper.test.js +259 -0
  82. package/dist/cropper.test.js.map +1 -0
  83. package/dist/drag-move.d.ts +119 -0
  84. package/dist/drag-move.d.ts.map +1 -0
  85. package/dist/drag-move.js +237 -0
  86. package/dist/drag-move.js.map +1 -0
  87. package/dist/drag-move.test.d.ts +2 -0
  88. package/dist/drag-move.test.d.ts.map +1 -0
  89. package/dist/drag-move.test.js +304 -0
  90. package/dist/drag-move.test.js.map +1 -0
  91. package/dist/editable.d.ts +24 -4
  92. package/dist/editable.d.ts.map +1 -1
  93. package/dist/editable.js +18 -0
  94. package/dist/editable.js.map +1 -1
  95. package/dist/editable.test.js +55 -2
  96. package/dist/editable.test.js.map +1 -1
  97. package/dist/ellipsis.d.ts +13 -0
  98. package/dist/ellipsis.d.ts.map +1 -1
  99. package/dist/ellipsis.js +36 -0
  100. package/dist/ellipsis.js.map +1 -1
  101. package/dist/ellipsis.test.js +37 -1
  102. package/dist/ellipsis.test.js.map +1 -1
  103. package/dist/form-path.d.ts +19 -0
  104. package/dist/form-path.d.ts.map +1 -0
  105. package/dist/form-path.js +97 -0
  106. package/dist/form-path.js.map +1 -0
  107. package/dist/form-path.test.d.ts +2 -0
  108. package/dist/form-path.test.d.ts.map +1 -0
  109. package/dist/form-path.test.js +57 -0
  110. package/dist/form-path.test.js.map +1 -0
  111. package/dist/form-validate.d.ts +13 -0
  112. package/dist/form-validate.d.ts.map +1 -0
  113. package/dist/form-validate.js +204 -0
  114. package/dist/form-validate.js.map +1 -0
  115. package/dist/form.d.ts +91 -18
  116. package/dist/form.d.ts.map +1 -1
  117. package/dist/form.js +170 -115
  118. package/dist/form.js.map +1 -1
  119. package/dist/form.test.js +349 -76
  120. package/dist/form.test.js.map +1 -1
  121. package/dist/highlight.d.ts +42 -32
  122. package/dist/highlight.d.ts.map +1 -1
  123. package/dist/highlight.js +67 -41
  124. package/dist/highlight.js.map +1 -1
  125. package/dist/highlight.test.js +73 -32
  126. package/dist/highlight.test.js.map +1 -1
  127. package/dist/hotkeys.d.ts +151 -0
  128. package/dist/hotkeys.d.ts.map +1 -0
  129. package/dist/hotkeys.js +188 -0
  130. package/dist/hotkeys.js.map +1 -0
  131. package/dist/hotkeys.test.d.ts +2 -0
  132. package/dist/hotkeys.test.d.ts.map +1 -0
  133. package/dist/hotkeys.test.js +170 -0
  134. package/dist/hotkeys.test.js.map +1 -0
  135. package/dist/index.d.ts +33 -17
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +32 -13
  138. package/dist/index.js.map +1 -1
  139. package/dist/input.d.ts +34 -0
  140. package/dist/input.d.ts.map +1 -0
  141. package/dist/input.js +54 -0
  142. package/dist/input.js.map +1 -0
  143. package/dist/input.test.d.ts +2 -0
  144. package/dist/input.test.d.ts.map +1 -0
  145. package/dist/input.test.js +56 -0
  146. package/dist/input.test.js.map +1 -0
  147. package/dist/markdown-render.d.ts +49 -0
  148. package/dist/markdown-render.d.ts.map +1 -0
  149. package/dist/markdown-render.js +61 -0
  150. package/dist/markdown-render.js.map +1 -0
  151. package/dist/markdown-render.test.d.ts +2 -0
  152. package/dist/markdown-render.test.d.ts.map +1 -0
  153. package/dist/markdown-render.test.js +106 -0
  154. package/dist/markdown-render.test.js.map +1 -0
  155. package/dist/notification.d.ts +40 -31
  156. package/dist/notification.d.ts.map +1 -1
  157. package/dist/notification.js +86 -70
  158. package/dist/notification.js.map +1 -1
  159. package/dist/notification.test.js +62 -39
  160. package/dist/notification.test.js.map +1 -1
  161. package/dist/numeral.d.ts +32 -0
  162. package/dist/numeral.d.ts.map +1 -0
  163. package/dist/numeral.js +67 -0
  164. package/dist/numeral.js.map +1 -0
  165. package/dist/numeral.test.d.ts +2 -0
  166. package/dist/numeral.test.d.ts.map +1 -0
  167. package/dist/numeral.test.js +59 -0
  168. package/dist/numeral.test.js.map +1 -0
  169. package/dist/overflow-list.d.ts +9 -40
  170. package/dist/overflow-list.d.ts.map +1 -1
  171. package/dist/overflow-list.js +9 -70
  172. package/dist/overflow-list.js.map +1 -1
  173. package/dist/overflow-list.test.js +1 -122
  174. package/dist/overflow-list.test.js.map +1 -1
  175. package/dist/pagination.d.ts +17 -0
  176. package/dist/pagination.d.ts.map +1 -1
  177. package/dist/pagination.js +48 -0
  178. package/dist/pagination.js.map +1 -1
  179. package/dist/pagination.test.js +40 -1
  180. package/dist/pagination.test.js.map +1 -1
  181. package/dist/pincode.d.ts +79 -0
  182. package/dist/pincode.d.ts.map +1 -0
  183. package/dist/pincode.js +119 -0
  184. package/dist/pincode.js.map +1 -0
  185. package/dist/pincode.test.d.ts +2 -0
  186. package/dist/pincode.test.d.ts.map +1 -0
  187. package/dist/pincode.test.js +151 -0
  188. package/dist/pincode.test.js.map +1 -0
  189. package/dist/progress.d.ts +32 -30
  190. package/dist/progress.d.ts.map +1 -1
  191. package/dist/progress.js +257 -64
  192. package/dist/progress.js.map +1 -1
  193. package/dist/progress.test.js +50 -47
  194. package/dist/progress.test.js.map +1 -1
  195. package/dist/resizable.d.ts +200 -0
  196. package/dist/resizable.d.ts.map +1 -0
  197. package/dist/resizable.js +329 -0
  198. package/dist/resizable.js.map +1 -0
  199. package/dist/resizable.test.d.ts +2 -0
  200. package/dist/resizable.test.d.ts.map +1 -0
  201. package/dist/resizable.test.js +302 -0
  202. package/dist/resizable.test.js.map +1 -0
  203. package/dist/scroll-list.d.ts +69 -62
  204. package/dist/scroll-list.d.ts.map +1 -1
  205. package/dist/scroll-list.js +103 -144
  206. package/dist/scroll-list.js.map +1 -1
  207. package/dist/scroll-list.test.js +100 -110
  208. package/dist/scroll-list.test.js.map +1 -1
  209. package/dist/sidebar.d.ts +46 -0
  210. package/dist/sidebar.d.ts.map +1 -0
  211. package/dist/sidebar.js +65 -0
  212. package/dist/sidebar.js.map +1 -0
  213. package/dist/sidebar.test.d.ts +2 -0
  214. package/dist/sidebar.test.d.ts.map +1 -0
  215. package/dist/sidebar.test.js +88 -0
  216. package/dist/sidebar.test.js.map +1 -0
  217. package/dist/spin.d.ts +5 -5
  218. package/dist/spin.d.ts.map +1 -1
  219. package/dist/spin.js +13 -39
  220. package/dist/spin.js.map +1 -1
  221. package/dist/spin.test.js +2 -26
  222. package/dist/spin.test.js.map +1 -1
  223. package/dist/toast.d.ts +33 -30
  224. package/dist/toast.d.ts.map +1 -1
  225. package/dist/toast.js +77 -72
  226. package/dist/toast.js.map +1 -1
  227. package/dist/toast.test.js +63 -37
  228. package/dist/toast.test.js.map +1 -1
  229. package/dist/tree.d.ts +22 -5
  230. package/dist/tree.d.ts.map +1 -1
  231. package/dist/tree.js +61 -9
  232. package/dist/tree.js.map +1 -1
  233. package/dist/tree.test.js +72 -1
  234. package/dist/tree.test.js.map +1 -1
  235. package/dist/user-guide.d.ts +73 -0
  236. package/dist/user-guide.d.ts.map +1 -0
  237. package/dist/user-guide.js +95 -0
  238. package/dist/user-guide.js.map +1 -0
  239. package/dist/user-guide.test.d.ts +2 -0
  240. package/dist/user-guide.test.d.ts.map +1 -0
  241. package/dist/user-guide.test.js +109 -0
  242. package/dist/user-guide.test.js.map +1 -0
  243. package/dist/video-player.d.ts +196 -0
  244. package/dist/video-player.d.ts.map +1 -0
  245. package/dist/video-player.js +461 -0
  246. package/dist/video-player.js.map +1 -0
  247. package/dist/video-player.test.d.ts +2 -0
  248. package/dist/video-player.test.d.ts.map +1 -0
  249. package/dist/video-player.test.js +435 -0
  250. package/dist/video-player.test.js.map +1 -0
  251. package/package.json +17 -1
  252. package/dist/banner.d.ts +0 -19
  253. package/dist/banner.d.ts.map +0 -1
  254. package/dist/banner.js +0 -20
  255. package/dist/banner.js.map +0 -1
  256. package/dist/banner.test.d.ts +0 -2
  257. package/dist/banner.test.d.ts.map +0 -1
  258. package/dist/banner.test.js +0 -29
  259. package/dist/banner.test.js.map +0 -1
  260. package/dist/breakpoints.d.ts +0 -30
  261. package/dist/breakpoints.d.ts.map +0 -1
  262. package/dist/breakpoints.js +0 -45
  263. package/dist/breakpoints.js.map +0 -1
  264. package/dist/breakpoints.test.d.ts +0 -2
  265. package/dist/breakpoints.test.d.ts.map +0 -1
  266. package/dist/breakpoints.test.js +0 -46
  267. package/dist/breakpoints.test.js.map +0 -1
  268. package/dist/lottie-icon.d.ts +0 -88
  269. package/dist/lottie-icon.d.ts.map +0 -1
  270. package/dist/lottie-icon.js +0 -84
  271. package/dist/lottie-icon.js.map +0 -1
  272. package/dist/lottie-icon.test.d.ts +0 -2
  273. package/dist/lottie-icon.test.d.ts.map +0 -1
  274. package/dist/lottie-icon.test.js +0 -88
  275. package/dist/lottie-icon.test.js.map +0 -1
  276. package/dist/sider.d.ts +0 -26
  277. package/dist/sider.d.ts.map +0 -1
  278. package/dist/sider.js +0 -55
  279. package/dist/sider.js.map +0 -1
  280. package/dist/sider.test.d.ts +0 -2
  281. package/dist/sider.test.d.ts.map +0 -1
  282. package/dist/sider.test.js +0 -29
  283. package/dist/sider.test.js.map +0 -1
@@ -1,30 +0,0 @@
1
- /**
2
- * breakpoints — framework-agnostic responsive breakpoint resolution.
3
- * Six-tier scale aligned with Semi Design / Ant Design. Pure functions over a
4
- * viewport width; no DOM, no matchMedia (the render layer owns the listener).
5
- * See specs/components/basic/Grid.spec.md (responsive).
6
- */
7
- /** ordered from smallest to largest; min-width (px) for each tier. */
8
- export declare const BREAKPOINTS: {
9
- readonly xs: 0;
10
- readonly sm: 576;
11
- readonly md: 768;
12
- readonly lg: 992;
13
- readonly xl: 1200;
14
- readonly xxl: 1600;
15
- };
16
- export type Breakpoint = keyof typeof BREAKPOINTS;
17
- /** smallest → largest, the降级查找顺序的反向基准 */
18
- export declare const BREAKPOINT_ORDER: Breakpoint[];
19
- /** the active breakpoint for a viewport width (largest tier whose min-width ≤ width). */
20
- export declare function resolveActiveBreakpoint(width: number): Breakpoint;
21
- /**
22
- * Resolve a per-breakpoint map to the value that applies at `active`, cascading
23
- * down: if `active` has no value, fall back to the nearest smaller tier that
24
- * does (mobile-first). Returns `fallback` if none match.
25
- *
26
- * resolveResponsiveValue({ xs: 24, md: 12 }, 'lg') // → 12 (md cascades up to lg)
27
- * resolveResponsiveValue({ md: 12 }, 'sm') // → fallback (no sm/xs)
28
- */
29
- export declare function resolveResponsiveValue<T>(byBreakpoint: Partial<Record<Breakpoint, T>>, active: Breakpoint, fallback: T): T;
30
- //# sourceMappingURL=breakpoints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../src/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sEAAsE;AACtE,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,EAAE,UAAU,EAA0C,CAAC;AAEpF,yFAAyF;AACzF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAMjE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAC5C,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,CAAC,GACV,CAAC,CAQH"}
@@ -1,45 +0,0 @@
1
- /**
2
- * breakpoints — framework-agnostic responsive breakpoint resolution.
3
- * Six-tier scale aligned with Semi Design / Ant Design. Pure functions over a
4
- * viewport width; no DOM, no matchMedia (the render layer owns the listener).
5
- * See specs/components/basic/Grid.spec.md (responsive).
6
- */
7
- /** ordered from smallest to largest; min-width (px) for each tier. */
8
- export const BREAKPOINTS = {
9
- xs: 0,
10
- sm: 576,
11
- md: 768,
12
- lg: 992,
13
- xl: 1200,
14
- xxl: 1600,
15
- };
16
- /** smallest → largest, the降级查找顺序的反向基准 */
17
- export const BREAKPOINT_ORDER = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];
18
- /** the active breakpoint for a viewport width (largest tier whose min-width ≤ width). */
19
- export function resolveActiveBreakpoint(width) {
20
- let active = 'xs';
21
- for (const bp of BREAKPOINT_ORDER) {
22
- if (width >= BREAKPOINTS[bp])
23
- active = bp;
24
- }
25
- return active;
26
- }
27
- /**
28
- * Resolve a per-breakpoint map to the value that applies at `active`, cascading
29
- * down: if `active` has no value, fall back to the nearest smaller tier that
30
- * does (mobile-first). Returns `fallback` if none match.
31
- *
32
- * resolveResponsiveValue({ xs: 24, md: 12 }, 'lg') // → 12 (md cascades up to lg)
33
- * resolveResponsiveValue({ md: 12 }, 'sm') // → fallback (no sm/xs)
34
- */
35
- export function resolveResponsiveValue(byBreakpoint, active, fallback) {
36
- const activeIndex = BREAKPOINT_ORDER.indexOf(active);
37
- for (let i = activeIndex; i >= 0; i -= 1) {
38
- const bp = BREAKPOINT_ORDER[i];
39
- const value = byBreakpoint[bp];
40
- if (value !== undefined)
41
- return value;
42
- }
43
- return fallback;
44
- }
45
- //# sourceMappingURL=breakpoints.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../src/breakpoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;CACD,CAAC;AAIX,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEpF,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,IAAI,MAAM,GAAe,IAAI,CAAC;IAC9B,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC;YAAE,MAAM,GAAG,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAA4C,EAC5C,MAAkB,EAClB,QAAW;IAEX,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=breakpoints.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breakpoints.test.d.ts","sourceRoot":"","sources":["../src/breakpoints.test.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { BREAKPOINTS, resolveActiveBreakpoint, resolveResponsiveValue, } from './breakpoints.js';
3
- describe('resolveActiveBreakpoint', () => {
4
- it('returns xs below the sm threshold', () => {
5
- expect(resolveActiveBreakpoint(0)).toBe('xs');
6
- expect(resolveActiveBreakpoint(575)).toBe('xs');
7
- });
8
- it('returns the exact tier at its min-width boundary', () => {
9
- expect(resolveActiveBreakpoint(BREAKPOINTS.sm)).toBe('sm');
10
- expect(resolveActiveBreakpoint(BREAKPOINTS.md)).toBe('md');
11
- expect(resolveActiveBreakpoint(BREAKPOINTS.lg)).toBe('lg');
12
- expect(resolveActiveBreakpoint(BREAKPOINTS.xl)).toBe('xl');
13
- expect(resolveActiveBreakpoint(BREAKPOINTS.xxl)).toBe('xxl');
14
- });
15
- it('returns the largest tier whose min-width is ≤ width', () => {
16
- expect(resolveActiveBreakpoint(700)).toBe('sm'); // 576 ≤ 700 < 768
17
- expect(resolveActiveBreakpoint(1000)).toBe('lg'); // 992 ≤ 1000 < 1200
18
- expect(resolveActiveBreakpoint(5000)).toBe('xxl');
19
- });
20
- });
21
- describe('resolveResponsiveValue', () => {
22
- it('returns the exact value when the active tier is set', () => {
23
- expect(resolveResponsiveValue({ xs: 24, md: 12 }, 'md', 0)).toBe(12);
24
- });
25
- it('cascades up from the nearest smaller tier (mobile-first)', () => {
26
- // lg unset → falls back to md
27
- expect(resolveResponsiveValue({ xs: 24, md: 12 }, 'lg', 0)).toBe(12);
28
- // xxl unset → cascades all the way to xs
29
- expect(resolveResponsiveValue({ xs: 24 }, 'xxl', 0)).toBe(24);
30
- });
31
- it('does NOT cascade down from a larger tier', () => {
32
- // only md set, active is sm → no smaller value → fallback
33
- expect(resolveResponsiveValue({ md: 12 }, 'sm', 99)).toBe(99);
34
- });
35
- it('returns the fallback when the map is empty', () => {
36
- expect(resolveResponsiveValue({}, 'lg', 8)).toBe(8);
37
- });
38
- it('treats 0 as a present value (not missing)', () => {
39
- expect(resolveResponsiveValue({ xs: 0, lg: 6 }, 'sm', 99)).toBe(0);
40
- });
41
- it('works with object values (span/offset config)', () => {
42
- const cfg = { xs: { span: 24 }, lg: { span: 8, offset: 2 } };
43
- expect(resolveResponsiveValue(cfg, 'xl', { span: 24 })).toEqual({ span: 8, offset: 2 });
44
- });
45
- });
46
- //# sourceMappingURL=breakpoints.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breakpoints.test.js","sourceRoot":"","sources":["../src/breakpoints.test.ts"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- /**
2
- * createLottieIcon helpers — framework-agnostic Lottie icon logic.
3
- * Pure decision functions (reduced-motion resolution, size mapping, autoplay
4
- * gating) plus a player-adapter interface so the library never hard-depends on
5
- * lottie-web — consumers inject any player. The svelte layer owns the mount
6
- * node + adapter lifecycle. See specs/components/other/LottieIcon.spec.md §3
7
- * (dependency-injected adapter; src fetch / visible / segments deferred).
8
- */
9
- export type LottieTrigger = 'auto' | 'hover' | 'manual';
10
- export type LottieSize = 'small' | 'default' | 'large';
11
- /**
12
- * Render backend the injected player should use. Mirrors lottie-web's
13
- * `renderer` option ('svg' | 'canvas' | 'html'). Optional everywhere so legacy
14
- * factories that ignore it keep their default ('svg') behaviour.
15
- */
16
- export type LottieRenderer = 'svg' | 'canvas' | 'html';
17
- /**
18
- * Frame segment to play: a `[start, end]` frame pair, or a named marker string
19
- * resolved against the animation data's `markers`. See `resolveSegments`.
20
- */
21
- export type LottieSegments = [number, number] | string;
22
- /** Minimal player adapter the host injects (e.g. wrapping lottie-web). */
23
- export interface LottiePlayerAdapter {
24
- play(): void;
25
- pause(): void;
26
- stop(): void;
27
- /** jump to a specific frame and hold (used for reduced-motion static frame) */
28
- goToFrame?(frame: number): void;
29
- /**
30
- * Play a resolved `[start, end]` frame segment. Optional: when the injected
31
- * player lacks it, the host falls back to `play()`. The svelte layer always
32
- * passes a numeric pair (named markers resolved via `resolveSegments`).
33
- */
34
- playSegments?(segments: [number, number]): void;
35
- destroy(): void;
36
- }
37
- /** Factory the host passes: builds an adapter for the given container + data. */
38
- export type LottiePlayerFactory = (config: {
39
- container: HTMLElement;
40
- data: unknown;
41
- loop: boolean | number;
42
- autoplay: boolean;
43
- speed: number;
44
- /** Resolved initial `[start, end]` frame segment, when `segments` is set. */
45
- segment?: [number, number];
46
- /**
47
- * Render backend ('svg' | 'canvas' | 'html'), forwarded to e.g. lottie-web's
48
- * `renderer` option. Optional & backward-compatible: omitted when the host's
49
- * `canvas`/`renderer` prop is unset, so legacy factories default to 'svg'.
50
- */
51
- renderer?: LottieRenderer;
52
- }) => LottiePlayerAdapter;
53
- /**
54
- * Resolve the host `canvas` / `renderer` prop into a concrete renderer backend
55
- * for the factory (pure). `renderer` (explicit string) wins; otherwise
56
- * `canvas === true` → 'canvas'. Returns `undefined` when neither is set so the
57
- * host omits `renderer` entirely and legacy factories keep their 'svg' default.
58
- */
59
- export declare function resolveRenderer(canvas: boolean | undefined, renderer: LottieRenderer | undefined): LottieRenderer | undefined;
60
- /**
61
- * Resolve a `segments` prop into a concrete `[start, end]` frame pair.
62
- * - `[start, end]` numeric pair → returned as-is.
63
- * - marker name string → looked up in the data's `markers` (`cm` name,
64
- * `tm` start time, `dr` duration); resolves to `[tm, tm + dr]`.
65
- * Returns `null` when unresolvable (no markers / name not found / bad input)
66
- * so the host can fall back to playing the whole animation.
67
- */
68
- export declare function resolveSegments(segments: LottieSegments | undefined, data: unknown): [number, number] | null;
69
- /**
70
- * Is `src` a usable animation source URL (non-empty string). Pure guard used
71
- * by the host to decide whether to kick off a fetch.
72
- */
73
- export declare function isLottieSrc(src: unknown): src is string;
74
- /** Map a size token (or raw px number) to a pixel value. */
75
- export declare function resolveSize(size: LottieSize | number): number;
76
- /**
77
- * Resolve whether animation should run: an explicit `reducedMotion` prop wins;
78
- * otherwise follow the system `prefers-reduced-motion`. Returns true when
79
- * animation is ALLOWED (i.e. NOT reduced).
80
- */
81
- export declare function resolveAnimated(reducedMotionProp: boolean | undefined, systemReduced: boolean): boolean;
82
- /**
83
- * Should the icon start playing on mount, given trigger + autoplay + whether
84
- * animation is allowed (reduced-motion). Only `auto` honors autoplay; hover &
85
- * manual never autoplay.
86
- */
87
- export declare function shouldAutoplay(trigger: LottieTrigger, autoplay: boolean, animated: boolean): boolean;
88
- //# sourceMappingURL=lottie-icon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lottie-icon.d.ts","sourceRoot":"","sources":["../src/lottie-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,+EAA+E;IAC/E,SAAS,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,iFAAiF;AACjF,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE;IACzC,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,KAAK,mBAAmB,CAAC;AAE1B;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,QAAQ,EAAE,cAAc,GAAG,SAAS,GACnC,cAAc,GAAG,SAAS,CAI5B;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,IAAI,EAAE,OAAO,GACZ,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiBzB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAEvD;AAID,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,iBAAiB,EAAE,OAAO,GAAG,SAAS,EACtC,aAAa,EAAE,OAAO,GACrB,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAGT"}
@@ -1,84 +0,0 @@
1
- /**
2
- * createLottieIcon helpers — framework-agnostic Lottie icon logic.
3
- * Pure decision functions (reduced-motion resolution, size mapping, autoplay
4
- * gating) plus a player-adapter interface so the library never hard-depends on
5
- * lottie-web — consumers inject any player. The svelte layer owns the mount
6
- * node + adapter lifecycle. See specs/components/other/LottieIcon.spec.md §3
7
- * (dependency-injected adapter; src fetch / visible / segments deferred).
8
- */
9
- /**
10
- * Resolve the host `canvas` / `renderer` prop into a concrete renderer backend
11
- * for the factory (pure). `renderer` (explicit string) wins; otherwise
12
- * `canvas === true` → 'canvas'. Returns `undefined` when neither is set so the
13
- * host omits `renderer` entirely and legacy factories keep their 'svg' default.
14
- */
15
- export function resolveRenderer(canvas, renderer) {
16
- if (renderer != null)
17
- return renderer;
18
- if (canvas === true)
19
- return 'canvas';
20
- return undefined;
21
- }
22
- /**
23
- * Resolve a `segments` prop into a concrete `[start, end]` frame pair.
24
- * - `[start, end]` numeric pair → returned as-is.
25
- * - marker name string → looked up in the data's `markers` (`cm` name,
26
- * `tm` start time, `dr` duration); resolves to `[tm, tm + dr]`.
27
- * Returns `null` when unresolvable (no markers / name not found / bad input)
28
- * so the host can fall back to playing the whole animation.
29
- */
30
- export function resolveSegments(segments, data) {
31
- if (segments == null)
32
- return null;
33
- if (Array.isArray(segments)) {
34
- const [start, end] = segments;
35
- if (typeof start === 'number' && typeof end === 'number' && Number.isFinite(start) && Number.isFinite(end)) {
36
- return [start, end];
37
- }
38
- return null;
39
- }
40
- if (typeof segments !== 'string')
41
- return null;
42
- const markers = data?.markers;
43
- if (!Array.isArray(markers))
44
- return null;
45
- const marker = markers.find((m) => m && m.cm === segments);
46
- if (!marker || typeof marker.tm !== 'number')
47
- return null;
48
- const start = marker.tm;
49
- const end = start + (typeof marker.dr === 'number' ? marker.dr : 0);
50
- return [start, end];
51
- }
52
- /**
53
- * Is `src` a usable animation source URL (non-empty string). Pure guard used
54
- * by the host to decide whether to kick off a fetch.
55
- */
56
- export function isLottieSrc(src) {
57
- return typeof src === 'string' && src.trim().length > 0;
58
- }
59
- const SIZE_PX = { small: 16, default: 20, large: 24 };
60
- /** Map a size token (or raw px number) to a pixel value. */
61
- export function resolveSize(size) {
62
- return typeof size === 'number' ? size : SIZE_PX[size];
63
- }
64
- /**
65
- * Resolve whether animation should run: an explicit `reducedMotion` prop wins;
66
- * otherwise follow the system `prefers-reduced-motion`. Returns true when
67
- * animation is ALLOWED (i.e. NOT reduced).
68
- */
69
- export function resolveAnimated(reducedMotionProp, systemReduced) {
70
- if (reducedMotionProp !== undefined)
71
- return !reducedMotionProp;
72
- return !systemReduced;
73
- }
74
- /**
75
- * Should the icon start playing on mount, given trigger + autoplay + whether
76
- * animation is allowed (reduced-motion). Only `auto` honors autoplay; hover &
77
- * manual never autoplay.
78
- */
79
- export function shouldAutoplay(trigger, autoplay, animated) {
80
- if (!animated)
81
- return false;
82
- return trigger === 'auto' && autoplay;
83
- }
84
- //# sourceMappingURL=lottie-icon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lottie-icon.js","sourceRoot":"","sources":["../src/lottie-icon.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmDH;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA2B,EAC3B,QAAoC;IAEpC,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACtC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AASD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAoC,EACpC,IAAa;IAEb,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3G,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAI,IAAwD,EAAE,OAAO,CAAC;IACnF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,GAA+B,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAElF,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,iBAAsC,EACtC,aAAsB;IAEtB,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO,CAAC,iBAAiB,CAAC;IAC/D,OAAO,CAAC,aAAa,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAsB,EACtB,QAAiB,EACjB,QAAiB;IAEjB,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,OAAO,KAAK,MAAM,IAAI,QAAQ,CAAC;AACxC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=lottie-icon.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lottie-icon.test.d.ts","sourceRoot":"","sources":["../src/lottie-icon.test.ts"],"names":[],"mappings":""}
@@ -1,88 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { resolveSize, resolveAnimated, shouldAutoplay, resolveSegments, isLottieSrc, resolveRenderer, } from './lottie-icon.js';
3
- describe('resolveSize', () => {
4
- it('maps size tokens to px', () => {
5
- expect(resolveSize('small')).toBe(16);
6
- expect(resolveSize('default')).toBe(20);
7
- expect(resolveSize('large')).toBe(24);
8
- });
9
- it('passes through raw numbers', () => {
10
- expect(resolveSize(48)).toBe(48);
11
- });
12
- });
13
- describe('resolveAnimated', () => {
14
- it('explicit reducedMotion prop wins over system', () => {
15
- expect(resolveAnimated(true, false)).toBe(false); // forced reduce → not animated
16
- expect(resolveAnimated(false, true)).toBe(true); // forced motion → animated despite system
17
- });
18
- it('follows system when prop is undefined', () => {
19
- expect(resolveAnimated(undefined, false)).toBe(true); // system not reduced → animated
20
- expect(resolveAnimated(undefined, true)).toBe(false); // system reduced → not animated
21
- });
22
- });
23
- describe('shouldAutoplay', () => {
24
- it('auto + autoplay + animated → true', () => {
25
- expect(shouldAutoplay('auto', true, true)).toBe(true);
26
- });
27
- it('not animated (reduced-motion) → never autoplay', () => {
28
- expect(shouldAutoplay('auto', true, false)).toBe(false);
29
- });
30
- it('autoplay=false → no autoplay', () => {
31
- expect(shouldAutoplay('auto', false, true)).toBe(false);
32
- });
33
- it('hover/manual triggers never autoplay', () => {
34
- expect(shouldAutoplay('hover', true, true)).toBe(false);
35
- expect(shouldAutoplay('manual', true, true)).toBe(false);
36
- });
37
- });
38
- describe('resolveSegments', () => {
39
- it('passes through a numeric frame pair', () => {
40
- expect(resolveSegments([10, 60], null)).toEqual([10, 60]);
41
- });
42
- it('returns null for undefined / invalid pairs', () => {
43
- expect(resolveSegments(undefined, null)).toBeNull();
44
- // @ts-expect-error invalid tuple
45
- expect(resolveSegments(['a', 'b'], null)).toBeNull();
46
- expect(resolveSegments([NaN, 5], null)).toBeNull();
47
- });
48
- it('resolves a named marker against data.markers (tm + dr)', () => {
49
- const data = { markers: [{ cm: 'hover', tm: 30, dr: 20 }, { cm: 'idle', tm: 0, dr: 30 }] };
50
- expect(resolveSegments('hover', data)).toEqual([30, 50]);
51
- expect(resolveSegments('idle', data)).toEqual([0, 30]);
52
- });
53
- it('returns null when marker missing or no markers', () => {
54
- expect(resolveSegments('nope', { markers: [{ cm: 'x', tm: 1, dr: 1 }] })).toBeNull();
55
- expect(resolveSegments('x', {})).toBeNull();
56
- expect(resolveSegments('x', null)).toBeNull();
57
- });
58
- it('treats marker without dr as a zero-length point', () => {
59
- expect(resolveSegments('p', { markers: [{ cm: 'p', tm: 12 }] })).toEqual([12, 12]);
60
- });
61
- });
62
- describe('isLottieSrc', () => {
63
- it('true for non-empty strings', () => {
64
- expect(isLottieSrc('https://x/a.json')).toBe(true);
65
- expect(isLottieSrc(' /local.json ')).toBe(true);
66
- });
67
- it('false for empty / non-string', () => {
68
- expect(isLottieSrc('')).toBe(false);
69
- expect(isLottieSrc(' ')).toBe(false);
70
- expect(isLottieSrc(undefined)).toBe(false);
71
- expect(isLottieSrc({})).toBe(false);
72
- });
73
- });
74
- describe('resolveRenderer', () => {
75
- it('explicit renderer wins over canvas', () => {
76
- expect(resolveRenderer(true, 'html')).toBe('html');
77
- expect(resolveRenderer(false, 'svg')).toBe('svg');
78
- expect(resolveRenderer(undefined, 'canvas')).toBe('canvas');
79
- });
80
- it('canvas=true maps to canvas when no explicit renderer', () => {
81
- expect(resolveRenderer(true, undefined)).toBe('canvas');
82
- });
83
- it('undefined (omitted) for default svg / backward compat', () => {
84
- expect(resolveRenderer(false, undefined)).toBeUndefined();
85
- expect(resolveRenderer(undefined, undefined)).toBeUndefined();
86
- });
87
- });
88
- //# sourceMappingURL=lottie-icon.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lottie-icon.test.js","sourceRoot":"","sources":["../src/lottie-icon.test.ts"],"names":[],"mappings":"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"}
package/dist/sider.d.ts DELETED
@@ -1,26 +0,0 @@
1
- import { type Breakpoint } from './breakpoints.js';
2
- export type SiderTrigger = 'click' | 'breakpoint';
3
- export type { Breakpoint };
4
- export interface SiderOptions {
5
- /** controlled collapsed value; when provided, internal state is not mutated */
6
- collapsed?: boolean;
7
- defaultCollapsed?: boolean;
8
- /** auto-collapse below this breakpoint */
9
- breakpoint?: Breakpoint;
10
- onChange?: (collapsed: boolean, trigger: SiderTrigger) => void;
11
- onBreakpoint?: (matched: boolean, breakpoint: Breakpoint) => void;
12
- }
13
- export interface SiderApi {
14
- /** stable id for aria-controls */
15
- readonly id: string;
16
- /** current collapsed state */
17
- getCollapsed(): boolean;
18
- /** subscribe to collapsed changes; returns unsubscribe */
19
- subscribe(listener: (collapsed: boolean) => void): () => void;
20
- toggle(): void;
21
- setCollapsed(value: boolean, trigger?: SiderTrigger): void;
22
- /** start matchMedia breakpoint watching (call on mount). no-op without breakpoint. */
23
- watchBreakpoint(): () => void;
24
- }
25
- export declare function createSider(options?: SiderOptions): SiderApi;
26
- //# sourceMappingURL=sider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sider.d.ts","sourceRoot":"","sources":["../src/sider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,YAAY,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,IAAI,OAAO,CAAC;IACxB,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9D,MAAM,IAAI,IAAI,CAAC;IACf,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3D,sFAAsF;IACtF,eAAe,IAAI,MAAM,IAAI,CAAC;CAC/B;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,YAAiB,GAAG,QAAQ,CAsDhE"}
package/dist/sider.js DELETED
@@ -1,55 +0,0 @@
1
- /**
2
- * createSider — framework-agnostic collapse state machine for Layout.Sider.
3
- * Handles controlled/uncontrolled collapse + optional breakpoint matchMedia.
4
- * No DOM rendering, no framework deps. See specs/components/basic/Layout.spec.md.
5
- */
6
- import { useId } from './id.js';
7
- import { BREAKPOINTS } from './breakpoints.js';
8
- export function createSider(options = {}) {
9
- const { collapsed: controlled, defaultCollapsed = false, breakpoint, onChange, onBreakpoint, } = options;
10
- const isControlled = controlled !== undefined;
11
- let internal = isControlled ? controlled : defaultCollapsed;
12
- const listeners = new Set();
13
- function current() {
14
- return isControlled ? controlled : internal;
15
- }
16
- function emit() {
17
- for (const l of listeners)
18
- l(current());
19
- }
20
- function setCollapsed(value, trigger = 'click') {
21
- if (!isControlled) {
22
- if (internal === value)
23
- return;
24
- internal = value;
25
- emit();
26
- }
27
- onChange?.(value, trigger);
28
- }
29
- return {
30
- id: useId('cd-sider'),
31
- getCollapsed: current,
32
- subscribe(listener) {
33
- listeners.add(listener);
34
- return () => listeners.delete(listener);
35
- },
36
- toggle() {
37
- setCollapsed(!current(), 'click');
38
- },
39
- setCollapsed,
40
- watchBreakpoint() {
41
- if (!breakpoint || typeof window === 'undefined' || !window.matchMedia) {
42
- return () => { };
43
- }
44
- const mql = window.matchMedia(`(max-width: ${BREAKPOINTS[breakpoint] - 0.02}px)`);
45
- const handle = (e) => {
46
- onBreakpoint?.(e.matches, breakpoint);
47
- setCollapsed(e.matches, 'breakpoint');
48
- };
49
- handle(mql);
50
- mql.addEventListener('change', handle);
51
- return () => mql.removeEventListener('change', handle);
52
- },
53
- };
54
- }
55
- //# sourceMappingURL=sider.js.map
package/dist/sider.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sider.js","sourceRoot":"","sources":["../src/sider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AA4BhE,MAAM,UAAU,WAAW,CAAC,UAAwB,EAAE;IACpD,MAAM,EACJ,SAAS,EAAE,UAAU,EACrB,gBAAgB,GAAG,KAAK,EACxB,UAAU,EACV,QAAQ,EACR,YAAY,GACb,GAAG,OAAO,CAAC;IAEZ,MAAM,YAAY,GAAG,UAAU,KAAK,SAAS,CAAC;IAC9C,IAAI,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE1D,SAAS,OAAO;QACd,OAAO,YAAY,CAAC,CAAC,CAAE,UAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,CAAC;IACD,SAAS,IAAI;QACX,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,YAAY,CAAC,KAAc,EAAE,UAAwB,OAAO;QACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,QAAQ,KAAK,KAAK;gBAAE,OAAO;YAC/B,QAAQ,GAAG,KAAK,CAAC;YACjB,IAAI,EAAE,CAAC;QACT,CAAC;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC;QACrB,YAAY,EAAE,OAAO;QACrB,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM;YACJ,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,YAAY;QACZ,eAAe;YACb,IAAI,CAAC,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;YAClF,MAAM,MAAM,GAAG,CAAC,CAAuC,EAAQ,EAAE;gBAC/D,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACxC,CAAC,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sider.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sider.test.d.ts","sourceRoot":"","sources":["../src/sider.test.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest';
2
- import { createSider } from './sider.js';
3
- describe('createSider', () => {
4
- it('uncontrolled: toggles and notifies subscribers', () => {
5
- const s = createSider({ defaultCollapsed: false });
6
- const seen = [];
7
- s.subscribe((c) => seen.push(c));
8
- expect(s.getCollapsed()).toBe(false);
9
- s.toggle();
10
- expect(s.getCollapsed()).toBe(true);
11
- expect(seen).toEqual([true]);
12
- });
13
- it('controlled: does not mutate internal, still fires onChange', () => {
14
- const onChange = vi.fn();
15
- const s = createSider({ collapsed: false, onChange });
16
- s.toggle();
17
- expect(s.getCollapsed()).toBe(false); // unchanged (controlled)
18
- expect(onChange).toHaveBeenCalledWith(true, 'click');
19
- });
20
- it('exposes a stable id for aria-controls', () => {
21
- const s = createSider();
22
- expect(s.id).toMatch(/^cd-sider-/);
23
- });
24
- it('watchBreakpoint is a no-op without a breakpoint', () => {
25
- const s = createSider();
26
- expect(typeof s.watchBreakpoint()).toBe('function');
27
- });
28
- });
29
- //# sourceMappingURL=sider.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sider.test.js","sourceRoot":"","sources":["../src/sider.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}