@weave-framework/ui 0.2.107

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 (384) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/dist/autocomplete/autocomplete.d.ts +86 -0
  4. package/dist/autocomplete/autocomplete.d.ts.map +1 -0
  5. package/dist/autocomplete/autocomplete.js +263 -0
  6. package/dist/autocomplete/autocomplete.js.map +1 -0
  7. package/dist/badge/badge.d.ts +39 -0
  8. package/dist/badge/badge.d.ts.map +1 -0
  9. package/dist/badge/badge.js +59 -0
  10. package/dist/badge/badge.js.map +1 -0
  11. package/dist/bottom-sheet/bottom-sheet.d.ts +21 -0
  12. package/dist/bottom-sheet/bottom-sheet.d.ts.map +1 -0
  13. package/dist/bottom-sheet/bottom-sheet.js +82 -0
  14. package/dist/bottom-sheet/bottom-sheet.js.map +1 -0
  15. package/dist/button/button.d.ts +47 -0
  16. package/dist/button/button.d.ts.map +1 -0
  17. package/dist/button/button.js +47 -0
  18. package/dist/button/button.js.map +1 -0
  19. package/dist/button-toggle/button-toggle.d.ts +65 -0
  20. package/dist/button-toggle/button-toggle.d.ts.map +1 -0
  21. package/dist/button-toggle/button-toggle.js +127 -0
  22. package/dist/button-toggle/button-toggle.js.map +1 -0
  23. package/dist/card/card.d.ts +30 -0
  24. package/dist/card/card.d.ts.map +1 -0
  25. package/dist/card/card.js +32 -0
  26. package/dist/card/card.js.map +1 -0
  27. package/dist/cdk/bidi.d.ts +19 -0
  28. package/dist/cdk/bidi.d.ts.map +1 -0
  29. package/dist/cdk/bidi.js +32 -0
  30. package/dist/cdk/bidi.js.map +1 -0
  31. package/dist/cdk/breakpoints.d.ts +21 -0
  32. package/dist/cdk/breakpoints.d.ts.map +1 -0
  33. package/dist/cdk/breakpoints.js +39 -0
  34. package/dist/cdk/breakpoints.js.map +1 -0
  35. package/dist/cdk/clipboard.d.ts +8 -0
  36. package/dist/cdk/clipboard.d.ts.map +1 -0
  37. package/dist/cdk/clipboard.js +38 -0
  38. package/dist/cdk/clipboard.js.map +1 -0
  39. package/dist/cdk/data-source.d.ts +41 -0
  40. package/dist/cdk/data-source.d.ts.map +1 -0
  41. package/dist/cdk/data-source.js +36 -0
  42. package/dist/cdk/data-source.js.map +1 -0
  43. package/dist/cdk/date-adapter.d.ts +63 -0
  44. package/dist/cdk/date-adapter.d.ts.map +1 -0
  45. package/dist/cdk/date-adapter.js +155 -0
  46. package/dist/cdk/date-adapter.js.map +1 -0
  47. package/dist/cdk/drag-drop.d.ts +77 -0
  48. package/dist/cdk/drag-drop.d.ts.map +1 -0
  49. package/dist/cdk/drag-drop.js +268 -0
  50. package/dist/cdk/drag-drop.js.map +1 -0
  51. package/dist/cdk/focus-monitor.d.ts +27 -0
  52. package/dist/cdk/focus-monitor.d.ts.map +1 -0
  53. package/dist/cdk/focus-monitor.js +66 -0
  54. package/dist/cdk/focus-monitor.js.map +1 -0
  55. package/dist/cdk/focus-trap.d.ts +39 -0
  56. package/dist/cdk/focus-trap.d.ts.map +1 -0
  57. package/dist/cdk/focus-trap.js +127 -0
  58. package/dist/cdk/focus-trap.js.map +1 -0
  59. package/dist/cdk/index.d.ts +29 -0
  60. package/dist/cdk/index.d.ts.map +1 -0
  61. package/dist/cdk/index.js +29 -0
  62. package/dist/cdk/index.js.map +1 -0
  63. package/dist/cdk/interactivity.d.ts +19 -0
  64. package/dist/cdk/interactivity.d.ts.map +1 -0
  65. package/dist/cdk/interactivity.js +70 -0
  66. package/dist/cdk/interactivity.js.map +1 -0
  67. package/dist/cdk/key-manager.d.ts +41 -0
  68. package/dist/cdk/key-manager.d.ts.map +1 -0
  69. package/dist/cdk/key-manager.js +126 -0
  70. package/dist/cdk/key-manager.js.map +1 -0
  71. package/dist/cdk/live-announcer.d.ts +19 -0
  72. package/dist/cdk/live-announcer.d.ts.map +1 -0
  73. package/dist/cdk/live-announcer.js +48 -0
  74. package/dist/cdk/live-announcer.js.map +1 -0
  75. package/dist/cdk/observers.d.ts +17 -0
  76. package/dist/cdk/observers.d.ts.map +1 -0
  77. package/dist/cdk/observers.js +35 -0
  78. package/dist/cdk/observers.js.map +1 -0
  79. package/dist/cdk/overlay.d.ts +73 -0
  80. package/dist/cdk/overlay.d.ts.map +1 -0
  81. package/dist/cdk/overlay.js +154 -0
  82. package/dist/cdk/overlay.js.map +1 -0
  83. package/dist/cdk/platform.d.ts +22 -0
  84. package/dist/cdk/platform.d.ts.map +1 -0
  85. package/dist/cdk/platform.js +55 -0
  86. package/dist/cdk/platform.js.map +1 -0
  87. package/dist/cdk/portal.d.ts +31 -0
  88. package/dist/cdk/portal.d.ts.map +1 -0
  89. package/dist/cdk/portal.js +55 -0
  90. package/dist/cdk/portal.js.map +1 -0
  91. package/dist/cdk/positioning.d.ts +53 -0
  92. package/dist/cdk/positioning.d.ts.map +1 -0
  93. package/dist/cdk/positioning.js +140 -0
  94. package/dist/cdk/positioning.js.map +1 -0
  95. package/dist/cdk/scroll.d.ts +43 -0
  96. package/dist/cdk/scroll.d.ts.map +1 -0
  97. package/dist/cdk/scroll.js +97 -0
  98. package/dist/cdk/scroll.js.map +1 -0
  99. package/dist/cdk/selection-model.d.ts +50 -0
  100. package/dist/cdk/selection-model.d.ts.map +1 -0
  101. package/dist/cdk/selection-model.js +77 -0
  102. package/dist/cdk/selection-model.js.map +1 -0
  103. package/dist/cdk/virtual-scroll.d.ts +50 -0
  104. package/dist/cdk/virtual-scroll.d.ts.map +1 -0
  105. package/dist/cdk/virtual-scroll.js +92 -0
  106. package/dist/cdk/virtual-scroll.js.map +1 -0
  107. package/dist/checkbox/checkbox.d.ts +65 -0
  108. package/dist/checkbox/checkbox.d.ts.map +1 -0
  109. package/dist/checkbox/checkbox.js +82 -0
  110. package/dist/checkbox/checkbox.js.map +1 -0
  111. package/dist/chips/chips.d.ts +65 -0
  112. package/dist/chips/chips.d.ts.map +1 -0
  113. package/dist/chips/chips.js +119 -0
  114. package/dist/chips/chips.js.map +1 -0
  115. package/dist/context-menu/context-menu.d.ts +32 -0
  116. package/dist/context-menu/context-menu.d.ts.map +1 -0
  117. package/dist/context-menu/context-menu.js +63 -0
  118. package/dist/context-menu/context-menu.js.map +1 -0
  119. package/dist/datepicker/datepicker.d.ts +100 -0
  120. package/dist/datepicker/datepicker.d.ts.map +1 -0
  121. package/dist/datepicker/datepicker.js +440 -0
  122. package/dist/datepicker/datepicker.js.map +1 -0
  123. package/dist/dialog/dialog.d.ts +27 -0
  124. package/dist/dialog/dialog.d.ts.map +1 -0
  125. package/dist/dialog/dialog.js +47 -0
  126. package/dist/dialog/dialog.js.map +1 -0
  127. package/dist/dialog/modal-core.d.ts +42 -0
  128. package/dist/dialog/modal-core.d.ts.map +1 -0
  129. package/dist/dialog/modal-core.js +103 -0
  130. package/dist/dialog/modal-core.js.map +1 -0
  131. package/dist/expansion/expansion.d.ts +71 -0
  132. package/dist/expansion/expansion.d.ts.map +1 -0
  133. package/dist/expansion/expansion.js +127 -0
  134. package/dist/expansion/expansion.js.map +1 -0
  135. package/dist/form-field/form-field.d.ts +48 -0
  136. package/dist/form-field/form-field.d.ts.map +1 -0
  137. package/dist/form-field/form-field.js +89 -0
  138. package/dist/form-field/form-field.js.map +1 -0
  139. package/dist/grid-list/grid-list.d.ts +25 -0
  140. package/dist/grid-list/grid-list.d.ts.map +1 -0
  141. package/dist/grid-list/grid-list.js +22 -0
  142. package/dist/grid-list/grid-list.js.map +1 -0
  143. package/dist/icon/icon.d.ts +40 -0
  144. package/dist/icon/icon.d.ts.map +1 -0
  145. package/dist/icon/icon.js +99 -0
  146. package/dist/icon/icon.js.map +1 -0
  147. package/dist/icon/icons.d.ts +60 -0
  148. package/dist/icon/icons.d.ts.map +1 -0
  149. package/dist/icon/icons.js +126 -0
  150. package/dist/icon/icons.js.map +1 -0
  151. package/dist/icon/lucide-icons.d.ts +11 -0
  152. package/dist/icon/lucide-icons.d.ts.map +1 -0
  153. package/dist/icon/lucide-icons.js +65 -0
  154. package/dist/icon/lucide-icons.js.map +1 -0
  155. package/dist/index.d.ts +12 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +2 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/input/input.d.ts +90 -0
  160. package/dist/input/input.d.ts.map +1 -0
  161. package/dist/input/input.js +138 -0
  162. package/dist/input/input.js.map +1 -0
  163. package/dist/internal/compose.d.ts +26 -0
  164. package/dist/internal/compose.d.ts.map +1 -0
  165. package/dist/internal/compose.js +32 -0
  166. package/dist/internal/compose.js.map +1 -0
  167. package/dist/list/list.d.ts +70 -0
  168. package/dist/list/list.d.ts.map +1 -0
  169. package/dist/list/list.js +144 -0
  170. package/dist/list/list.js.map +1 -0
  171. package/dist/menu/menu-core.d.ts +56 -0
  172. package/dist/menu/menu-core.d.ts.map +1 -0
  173. package/dist/menu/menu-core.js +122 -0
  174. package/dist/menu/menu-core.js.map +1 -0
  175. package/dist/menu/menu.d.ts +31 -0
  176. package/dist/menu/menu.d.ts.map +1 -0
  177. package/dist/menu/menu.js +68 -0
  178. package/dist/menu/menu.js.map +1 -0
  179. package/dist/menubar/menubar.d.ts +49 -0
  180. package/dist/menubar/menubar.d.ts.map +1 -0
  181. package/dist/menubar/menubar.js +162 -0
  182. package/dist/menubar/menubar.js.map +1 -0
  183. package/dist/paginator/paginator.d.ts +89 -0
  184. package/dist/paginator/paginator.d.ts.map +1 -0
  185. package/dist/paginator/paginator.js +159 -0
  186. package/dist/paginator/paginator.js.map +1 -0
  187. package/dist/popover-edit/popover-edit.d.ts +33 -0
  188. package/dist/popover-edit/popover-edit.d.ts.map +1 -0
  189. package/dist/popover-edit/popover-edit.js +107 -0
  190. package/dist/popover-edit/popover-edit.js.map +1 -0
  191. package/dist/progress-bar/progress-bar.d.ts +32 -0
  192. package/dist/progress-bar/progress-bar.d.ts.map +1 -0
  193. package/dist/progress-bar/progress-bar.js +42 -0
  194. package/dist/progress-bar/progress-bar.js.map +1 -0
  195. package/dist/progress-spinner/progress-spinner.d.ts +25 -0
  196. package/dist/progress-spinner/progress-spinner.d.ts.map +1 -0
  197. package/dist/progress-spinner/progress-spinner.js +25 -0
  198. package/dist/progress-spinner/progress-spinner.js.map +1 -0
  199. package/dist/radio/radio.d.ts +68 -0
  200. package/dist/radio/radio.d.ts.map +1 -0
  201. package/dist/radio/radio.js +81 -0
  202. package/dist/radio/radio.js.map +1 -0
  203. package/dist/ripple/ripple.d.ts +20 -0
  204. package/dist/ripple/ripple.d.ts.map +1 -0
  205. package/dist/ripple/ripple.js +41 -0
  206. package/dist/ripple/ripple.js.map +1 -0
  207. package/dist/select/select.d.ts +83 -0
  208. package/dist/select/select.d.ts.map +1 -0
  209. package/dist/select/select.js +320 -0
  210. package/dist/select/select.js.map +1 -0
  211. package/dist/shared/options.d.ts +44 -0
  212. package/dist/shared/options.d.ts.map +1 -0
  213. package/dist/shared/options.js +59 -0
  214. package/dist/shared/options.js.map +1 -0
  215. package/dist/shared/positions.d.ts +20 -0
  216. package/dist/shared/positions.d.ts.map +1 -0
  217. package/dist/shared/positions.js +27 -0
  218. package/dist/shared/positions.js.map +1 -0
  219. package/dist/sidenav/sidenav.d.ts +65 -0
  220. package/dist/sidenav/sidenav.d.ts.map +1 -0
  221. package/dist/sidenav/sidenav.js +120 -0
  222. package/dist/sidenav/sidenav.js.map +1 -0
  223. package/dist/slide-toggle/slide-toggle.d.ts +56 -0
  224. package/dist/slide-toggle/slide-toggle.d.ts.map +1 -0
  225. package/dist/slide-toggle/slide-toggle.js +62 -0
  226. package/dist/slide-toggle/slide-toggle.js.map +1 -0
  227. package/dist/slider/slider.d.ts +69 -0
  228. package/dist/slider/slider.d.ts.map +1 -0
  229. package/dist/slider/slider.js +184 -0
  230. package/dist/slider/slider.js.map +1 -0
  231. package/dist/snackbar/snackbar.d.ts +25 -0
  232. package/dist/snackbar/snackbar.d.ts.map +1 -0
  233. package/dist/snackbar/snackbar.js +135 -0
  234. package/dist/snackbar/snackbar.js.map +1 -0
  235. package/dist/stepper/stepper.d.ts +87 -0
  236. package/dist/stepper/stepper.d.ts.map +1 -0
  237. package/dist/stepper/stepper.js +142 -0
  238. package/dist/stepper/stepper.js.map +1 -0
  239. package/dist/table/table.d.ts +140 -0
  240. package/dist/table/table.d.ts.map +1 -0
  241. package/dist/table/table.js +312 -0
  242. package/dist/table/table.js.map +1 -0
  243. package/dist/tabs/tabs.d.ts +64 -0
  244. package/dist/tabs/tabs.d.ts.map +1 -0
  245. package/dist/tabs/tabs.js +126 -0
  246. package/dist/tabs/tabs.js.map +1 -0
  247. package/dist/timepicker/timepicker.d.ts +83 -0
  248. package/dist/timepicker/timepicker.d.ts.map +1 -0
  249. package/dist/timepicker/timepicker.js +303 -0
  250. package/dist/timepicker/timepicker.js.map +1 -0
  251. package/dist/toolbar/toolbar.d.ts +34 -0
  252. package/dist/toolbar/toolbar.d.ts.map +1 -0
  253. package/dist/toolbar/toolbar.js +35 -0
  254. package/dist/toolbar/toolbar.js.map +1 -0
  255. package/dist/tooltip/tooltip.d.ts +30 -0
  256. package/dist/tooltip/tooltip.d.ts.map +1 -0
  257. package/dist/tooltip/tooltip.js +109 -0
  258. package/dist/tooltip/tooltip.js.map +1 -0
  259. package/dist/tree/tree.d.ts +100 -0
  260. package/dist/tree/tree.d.ts.map +1 -0
  261. package/dist/tree/tree.js +288 -0
  262. package/dist/tree/tree.js.map +1 -0
  263. package/package.json +230 -0
  264. package/src/styles/_api.scss +384 -0
  265. package/src/styles/_helpers.scss +101 -0
  266. package/src/styles/_index.scss +12 -0
  267. package/src/styles/_ref.scss +20 -0
  268. package/src/styles/_sass-utils.scss +14 -0
  269. package/src/styles/_token-utils.scss +24 -0
  270. package/src/styles/components/autocomplete/_index.scss +10 -0
  271. package/src/styles/components/autocomplete/_styles.scss +46 -0
  272. package/src/styles/components/autocomplete/_tokens.scss +28 -0
  273. package/src/styles/components/badge/_index.scss +12 -0
  274. package/src/styles/components/badge/_styles.scss +72 -0
  275. package/src/styles/components/badge/_tokens.scss +27 -0
  276. package/src/styles/components/bottom-sheet/_index.scss +9 -0
  277. package/src/styles/components/bottom-sheet/_styles.scss +77 -0
  278. package/src/styles/components/bottom-sheet/_tokens.scss +33 -0
  279. package/src/styles/components/button/_index.scss +12 -0
  280. package/src/styles/components/button/_styles.scss +106 -0
  281. package/src/styles/components/button/_tokens.scss +36 -0
  282. package/src/styles/components/button-toggle/_index.scss +12 -0
  283. package/src/styles/components/button-toggle/_styles.scss +57 -0
  284. package/src/styles/components/button-toggle/_tokens.scss +25 -0
  285. package/src/styles/components/card/_index.scss +15 -0
  286. package/src/styles/components/card/_styles.scss +68 -0
  287. package/src/styles/components/card/_tokens.scss +26 -0
  288. package/src/styles/components/checkbox/_index.scss +13 -0
  289. package/src/styles/components/checkbox/_styles.scss +108 -0
  290. package/src/styles/components/checkbox/_tokens.scss +25 -0
  291. package/src/styles/components/chips/_index.scss +12 -0
  292. package/src/styles/components/chips/_styles.scss +83 -0
  293. package/src/styles/components/chips/_tokens.scss +28 -0
  294. package/src/styles/components/datepicker/_index.scss +10 -0
  295. package/src/styles/components/datepicker/_styles.scss +203 -0
  296. package/src/styles/components/datepicker/_tokens.scss +50 -0
  297. package/src/styles/components/dialog/_index.scss +9 -0
  298. package/src/styles/components/dialog/_styles.scss +54 -0
  299. package/src/styles/components/dialog/_tokens.scss +29 -0
  300. package/src/styles/components/divider/_index.scss +8 -0
  301. package/src/styles/components/divider/_styles.scss +18 -0
  302. package/src/styles/components/divider/_tokens.scss +12 -0
  303. package/src/styles/components/expansion/_index.scss +14 -0
  304. package/src/styles/components/expansion/_styles.scss +128 -0
  305. package/src/styles/components/expansion/_tokens.scss +32 -0
  306. package/src/styles/components/form-field/_index.scss +13 -0
  307. package/src/styles/components/form-field/_styles.scss +39 -0
  308. package/src/styles/components/form-field/_tokens.scss +19 -0
  309. package/src/styles/components/grid-list/_index.scss +12 -0
  310. package/src/styles/components/grid-list/_styles.scss +31 -0
  311. package/src/styles/components/grid-list/_tokens.scss +18 -0
  312. package/src/styles/components/icon/_index.scss +8 -0
  313. package/src/styles/components/icon/_styles.scss +18 -0
  314. package/src/styles/components/icon/_tokens.scss +8 -0
  315. package/src/styles/components/input/_index.scss +13 -0
  316. package/src/styles/components/input/_styles.scss +111 -0
  317. package/src/styles/components/input/_tokens.scss +21 -0
  318. package/src/styles/components/list/_index.scss +12 -0
  319. package/src/styles/components/list/_styles.scss +87 -0
  320. package/src/styles/components/list/_tokens.scss +31 -0
  321. package/src/styles/components/menu/_index.scss +9 -0
  322. package/src/styles/components/menu/_styles.scss +60 -0
  323. package/src/styles/components/menu/_tokens.scss +33 -0
  324. package/src/styles/components/menubar/_index.scss +9 -0
  325. package/src/styles/components/menubar/_styles.scss +41 -0
  326. package/src/styles/components/menubar/_tokens.scss +25 -0
  327. package/src/styles/components/overlay/_index.scss +8 -0
  328. package/src/styles/components/overlay/_styles.scss +25 -0
  329. package/src/styles/components/overlay/_tokens.scss +21 -0
  330. package/src/styles/components/paginator/_index.scss +14 -0
  331. package/src/styles/components/paginator/_styles.scss +77 -0
  332. package/src/styles/components/paginator/_tokens.scss +28 -0
  333. package/src/styles/components/popover-edit/_index.scss +9 -0
  334. package/src/styles/components/popover-edit/_styles.scss +31 -0
  335. package/src/styles/components/popover-edit/_tokens.scss +21 -0
  336. package/src/styles/components/progress-bar/_index.scss +11 -0
  337. package/src/styles/components/progress-bar/_styles.scss +39 -0
  338. package/src/styles/components/progress-bar/_tokens.scss +17 -0
  339. package/src/styles/components/progress-spinner/_index.scss +11 -0
  340. package/src/styles/components/progress-spinner/_styles.scss +26 -0
  341. package/src/styles/components/progress-spinner/_tokens.scss +15 -0
  342. package/src/styles/components/radio/_index.scss +14 -0
  343. package/src/styles/components/radio/_styles.scss +92 -0
  344. package/src/styles/components/radio/_tokens.scss +24 -0
  345. package/src/styles/components/ripple/_index.scss +8 -0
  346. package/src/styles/components/ripple/_styles.scss +20 -0
  347. package/src/styles/components/ripple/_tokens.scss +12 -0
  348. package/src/styles/components/select/_index.scss +9 -0
  349. package/src/styles/components/select/_styles.scss +120 -0
  350. package/src/styles/components/select/_tokens.scss +35 -0
  351. package/src/styles/components/sidenav/_index.scss +14 -0
  352. package/src/styles/components/sidenav/_styles.scss +105 -0
  353. package/src/styles/components/sidenav/_tokens.scss +24 -0
  354. package/src/styles/components/slide-toggle/_index.scss +13 -0
  355. package/src/styles/components/slide-toggle/_styles.scss +86 -0
  356. package/src/styles/components/slide-toggle/_tokens.scss +24 -0
  357. package/src/styles/components/slider/_index.scss +13 -0
  358. package/src/styles/components/slider/_styles.scss +77 -0
  359. package/src/styles/components/slider/_tokens.scss +21 -0
  360. package/src/styles/components/snackbar/_index.scss +8 -0
  361. package/src/styles/components/snackbar/_styles.scss +59 -0
  362. package/src/styles/components/snackbar/_tokens.scss +28 -0
  363. package/src/styles/components/stepper/_index.scss +14 -0
  364. package/src/styles/components/stepper/_styles.scss +129 -0
  365. package/src/styles/components/stepper/_tokens.scss +44 -0
  366. package/src/styles/components/table/_index.scss +14 -0
  367. package/src/styles/components/table/_styles.scss +202 -0
  368. package/src/styles/components/table/_tokens.scss +47 -0
  369. package/src/styles/components/tabs/_index.scss +13 -0
  370. package/src/styles/components/tabs/_styles.scss +76 -0
  371. package/src/styles/components/tabs/_tokens.scss +28 -0
  372. package/src/styles/components/timepicker/_index.scss +9 -0
  373. package/src/styles/components/timepicker/_styles.scss +136 -0
  374. package/src/styles/components/timepicker/_tokens.scss +46 -0
  375. package/src/styles/components/toolbar/_index.scss +12 -0
  376. package/src/styles/components/toolbar/_styles.scss +41 -0
  377. package/src/styles/components/toolbar/_tokens.scss +17 -0
  378. package/src/styles/components/tooltip/_index.scss +8 -0
  379. package/src/styles/components/tooltip/_styles.scss +29 -0
  380. package/src/styles/components/tooltip/_tokens.scss +22 -0
  381. package/src/styles/components/tree/_index.scss +13 -0
  382. package/src/styles/components/tree/_styles.scss +99 -0
  383. package/src/styles/components/tree/_tokens.scss +38 -0
  384. package/src/styles/theme/_defaults.scss +50 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * `<Checkbox>` — a real `<input type=checkbox>` with the Weave visual (a 20px box that
3
+ * fills accent with a white ✓ when on). Lean DOM: the native input (visually hidden,
4
+ * kept for semantics/keyboard/focus) + a `__box` painted from its `:checked` /
5
+ * `:indeterminate` / `:focus-visible` / `:disabled` state, wrapped in a `<label>` so
6
+ * the whole control is clickable and the `__label` text is the accessible name.
7
+ *
8
+ * **Binding — the Weave form-control convention** (reused by Radio / Slide Toggle /
9
+ * Input / Chips):
10
+ * - **Signal**: `checked` (a getter) + `onChange` — controlled two-way.
11
+ * - **Forms**: `control` — a `@weave-framework/forms` `Field<boolean>` (structurally
12
+ * typed here so `@weave-framework/ui` stays decoupled from forms). When present it
13
+ * drives the value two-way, marks `touched` on blur, and reflects `aria-invalid`
14
+ * while the field is touched **and** invalid. `control` wins over `checked`/`onChange`.
15
+ * - **Tri-state**: `indeterminate` sets the DOM input's `.indeterminate` (styled via
16
+ * `:indeterminate`; the accessibility tree reports "mixed" natively).
17
+ *
18
+ * import Checkbox from '@weave-framework/ui/checkbox';
19
+ * <Checkbox checked={{ done() }} onChange={{ setDone }} label={{ 'Done' }} />
20
+ * <Checkbox control={{ form.controls.agree }} label={{ 'I agree' }} />
21
+ * <Checkbox indeterminate={{ someSelected() }} onChange={{ toggleAll }} />
22
+ */
23
+ import { type Signal } from '@weave-framework/runtime';
24
+ /**
25
+ * The subset of a `@weave-framework/forms` `Field<boolean>` a control binds to. A real
26
+ * `Field<boolean>` satisfies it structurally — no runtime dependency on forms.
27
+ */
28
+ export interface CheckboxControl {
29
+ value: Signal<boolean>;
30
+ touched?: Signal<boolean>;
31
+ error?: () => string | null;
32
+ }
33
+ export interface CheckboxProps {
34
+ /** Controlled checked state (a getter). Ignored when `control` is set. */
35
+ checked?: boolean;
36
+ /** Called with the next checked state on toggle. Ignored when `control` is set. */
37
+ onChange?: (checked: boolean) => void;
38
+ /** A forms `Field<boolean>` — two-way value + touched-on-blur + aria-invalid. */
39
+ control?: CheckboxControl;
40
+ /** Tri-state: render the "mixed" mark (sets the DOM input's `.indeterminate`). */
41
+ indeterminate?: boolean;
42
+ /** Disable the control. */
43
+ disabled?: boolean;
44
+ /** Mark the native input required. */
45
+ required?: boolean;
46
+ /** Visible label text (also the accessible name via the wrapping `<label>`). */
47
+ label?: string;
48
+ /** Native `name` (form submission). */
49
+ name?: string;
50
+ /** Extra classes, forwarded onto the `<label>` root. */
51
+ class?: string;
52
+ }
53
+ export declare const template: string;
54
+ export interface CheckboxContext {
55
+ input: Signal<HTMLInputElement | null>;
56
+ rootClass: () => string;
57
+ isDisabled: () => boolean;
58
+ isRequired: () => boolean;
59
+ name: () => string | undefined;
60
+ label: () => string | undefined;
61
+ onNativeChange: () => void;
62
+ onBlur: () => void;
63
+ }
64
+ export declare function setup(props: CheckboxProps): CheckboxContext;
65
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/checkbox/checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,iFAAiF;IACjF,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,EAAE,MAOX,CAAC;AAEb,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAgD3D"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * `<Checkbox>` — a real `<input type=checkbox>` with the Weave visual (a 20px box that
3
+ * fills accent with a white ✓ when on). Lean DOM: the native input (visually hidden,
4
+ * kept for semantics/keyboard/focus) + a `__box` painted from its `:checked` /
5
+ * `:indeterminate` / `:focus-visible` / `:disabled` state, wrapped in a `<label>` so
6
+ * the whole control is clickable and the `__label` text is the accessible name.
7
+ *
8
+ * **Binding — the Weave form-control convention** (reused by Radio / Slide Toggle /
9
+ * Input / Chips):
10
+ * - **Signal**: `checked` (a getter) + `onChange` — controlled two-way.
11
+ * - **Forms**: `control` — a `@weave-framework/forms` `Field<boolean>` (structurally
12
+ * typed here so `@weave-framework/ui` stays decoupled from forms). When present it
13
+ * drives the value two-way, marks `touched` on blur, and reflects `aria-invalid`
14
+ * while the field is touched **and** invalid. `control` wins over `checked`/`onChange`.
15
+ * - **Tri-state**: `indeterminate` sets the DOM input's `.indeterminate` (styled via
16
+ * `:indeterminate`; the accessibility tree reports "mixed" natively).
17
+ *
18
+ * import Checkbox from '@weave-framework/ui/checkbox';
19
+ * <Checkbox checked={{ done() }} onChange={{ setDone }} label={{ 'Done' }} />
20
+ * <Checkbox control={{ form.controls.agree }} label={{ 'I agree' }} />
21
+ * <Checkbox indeterminate={{ someSelected() }} onChange={{ toggleAll }} />
22
+ */
23
+ import { signal, effect } from '@weave-framework/runtime';
24
+ export const template = '<label class={{ rootClass() }}>' +
25
+ '<input type="checkbox" class="weave-checkbox__input" ref={{ input }}' +
26
+ ' disabled={{ isDisabled() }} required={{ isRequired() }} name={{ name() }}' +
27
+ ' on:change={{ onNativeChange }} on:blur={{ onBlur }} />' +
28
+ '<span class="weave-checkbox__box" aria-hidden="true"></span>' +
29
+ '@if (label()) {<span class="weave-checkbox__label">{{ label() }}</span>}' +
30
+ '</label>';
31
+ export function setup(props) {
32
+ const input = signal(null);
33
+ const isChecked = () => (props.control ? !!props.control.value() : !!props.checked);
34
+ const isIndeterminate = () => !!props.indeterminate;
35
+ // Source → DOM: keep the native `.checked` / `.indeterminate` properties in sync
36
+ // (properties, not attributes — the attributes are only the initial/default state).
37
+ effect(() => {
38
+ const el = input();
39
+ if (el)
40
+ el.checked = isChecked();
41
+ });
42
+ effect(() => {
43
+ const el = input();
44
+ if (el)
45
+ el.indeterminate = isIndeterminate();
46
+ });
47
+ // Forms validity → aria-invalid (touched AND invalid), the marker submit() focuses.
48
+ effect(() => {
49
+ const el = input();
50
+ if (!el)
51
+ return;
52
+ const c = props.control;
53
+ if (c && c.touched?.() && c.error?.())
54
+ el.setAttribute('aria-invalid', 'true');
55
+ else
56
+ el.removeAttribute('aria-invalid');
57
+ });
58
+ const onNativeChange = () => {
59
+ const el = input();
60
+ if (!el)
61
+ return;
62
+ const next = el.checked;
63
+ if (props.control)
64
+ props.control.value.set(next);
65
+ else
66
+ props.onChange?.(next);
67
+ };
68
+ const onBlur = () => {
69
+ props.control?.touched?.set(true);
70
+ };
71
+ return {
72
+ input,
73
+ rootClass: () => (props.class ? `weave-checkbox ${props.class}` : 'weave-checkbox'),
74
+ isDisabled: () => !!props.disabled,
75
+ isRequired: () => !!props.required,
76
+ name: () => props.name,
77
+ label: () => props.label,
78
+ onNativeChange,
79
+ onBlur,
80
+ };
81
+ }
82
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/checkbox/checkbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAe,MAAM,0BAA0B,CAAC;AAiCvE,MAAM,CAAC,MAAM,QAAQ,GACnB,iCAAiC;IACjC,sEAAsE;IACtE,4EAA4E;IAC5E,yDAAyD;IACzD,8DAA8D;IAC9D,0EAA0E;IAC1E,UAAU,CAAC;AAab,MAAM,UAAU,KAAK,CAAC,KAAoB;IACxC,MAAM,KAAK,GAAoC,MAAM,CAA0B,IAAI,CAAC,CAAC;IAErF,MAAM,SAAS,GAAG,GAAY,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7F,MAAM,eAAe,GAAG,GAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAE7D,iFAAiF;IACjF,oFAAoF;IACpF,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,EAAE,GAA4B,KAAK,EAAE,CAAC;QAC5C,IAAI,EAAE;YAAE,EAAE,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,EAAE,GAA4B,KAAK,EAAE,CAAC;QAC5C,IAAI,EAAE;YAAE,EAAE,CAAC,aAAa,GAAG,eAAe,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,oFAAoF;IACpF,MAAM,CAAC,GAAG,EAAE;QACV,MAAM,EAAE,GAA4B,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,CAAC,GAAgC,KAAK,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;;YAC1E,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,MAAM,EAAE,GAA4B,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,IAAI,GAAY,EAAE,CAAC,OAAO,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;YAC5C,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,SAAS,EAAE,GAAW,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC3F,UAAU,EAAE,GAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QAC3C,UAAU,EAAE,GAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QAC3C,IAAI,EAAE,GAAuB,EAAE,CAAC,KAAK,CAAC,IAAI;QAC1C,KAAK,EAAE,GAAuB,EAAE,CAAC,KAAK,CAAC,KAAK;QAC5C,cAAc;QACd,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * `<Chips>` — a removable tag list (Weave: 1px border, radius 3px, `__label` + a `×`
3
+ * `__remove`), optionally trailed by a dashed **"+ Add"** chip. The **value is the array**
4
+ * of chip strings; removing a chip emits the shorter array.
5
+ *
6
+ * Keyboard (WAI-ARIA-ish): the chips are a roving-tabindex group — Arrow/Home/End move
7
+ * focus (CDK `listKeyManager`, horizontal), and **Backspace/Delete removes the focused
8
+ * chip** then focuses its neighbour. Each `×` is a real button with an `aria-label`.
9
+ *
10
+ * Binding = the Weave form-control convention (array value):
11
+ * - **Signal**: `value` (a getter) + `onChange`.
12
+ * - **Forms**: `control` — a structural `Field<string[]>`. `control` wins; it drives the
13
+ * array two-way and marks `touched` when a chip is removed.
14
+ *
15
+ * import Chips from '@weave-framework/ui/chips';
16
+ * <Chips value={{ tags() }} onChange={{ setTags }} onAdd={{ promptForTag }} />
17
+ * <Chips control={{ form.controls.tags }} />
18
+ */
19
+ import { type Signal } from '@weave-framework/runtime';
20
+ /** The subset of a `@weave-framework/forms` `Field<string[]>` chips bind to. */
21
+ export interface ChipsControl {
22
+ value: Signal<string[]>;
23
+ touched?: Signal<boolean>;
24
+ error?: () => string | null;
25
+ }
26
+ export interface ChipsProps {
27
+ /** Controlled chip array (a getter). Ignored when `control` is set. */
28
+ value?: string[];
29
+ /** Called with the next array on remove. Ignored when `control` is set. */
30
+ onChange?: (next: string[]) => void;
31
+ /** A forms `Field<string[]>` — two-way value + touched-on-remove. */
32
+ control?: ChipsControl;
33
+ /** Show the `×` remove button on each chip. Default true. */
34
+ removable?: boolean;
35
+ /** Disable the whole group (no focus, no removal). */
36
+ disabled?: boolean;
37
+ /** Accessible name for the group. */
38
+ label?: string;
39
+ /** When set, render a dashed "+ Add" chip that calls this on click. */
40
+ onAdd?: () => void;
41
+ /** Text for the add chip. Default 'Add'. */
42
+ addLabel?: string;
43
+ /** aria-label for a chip's remove button. Default `Remove <chip>`. */
44
+ removeLabel?: (chip: string) => string;
45
+ /** Extra classes, forwarded onto the group. */
46
+ class?: string;
47
+ }
48
+ export declare const template: string;
49
+ export interface ChipsContext {
50
+ root: Signal<HTMLElement | null>;
51
+ chips: () => string[];
52
+ groupClass: () => string;
53
+ label: () => string | undefined;
54
+ removable: () => boolean;
55
+ isDisabled: () => boolean;
56
+ tabindexFor: (chip: string) => number;
57
+ removeLabelFor: (chip: string) => string;
58
+ removeChip: (chip: string) => void;
59
+ onKeydown: (event: KeyboardEvent) => void;
60
+ showAdd: () => boolean;
61
+ add: () => void;
62
+ addText: () => string;
63
+ }
64
+ export declare function setup(props: ChipsProps): ChipsContext;
65
+ //# sourceMappingURL=chips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chips.d.ts","sourceRoot":"","sources":["../../src/chips/chips.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAG/D,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpC,qEAAqE;IACrE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,EAAE,MAeb,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAkFrD"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * `<Chips>` — a removable tag list (Weave: 1px border, radius 3px, `__label` + a `×`
3
+ * `__remove`), optionally trailed by a dashed **"+ Add"** chip. The **value is the array**
4
+ * of chip strings; removing a chip emits the shorter array.
5
+ *
6
+ * Keyboard (WAI-ARIA-ish): the chips are a roving-tabindex group — Arrow/Home/End move
7
+ * focus (CDK `listKeyManager`, horizontal), and **Backspace/Delete removes the focused
8
+ * chip** then focuses its neighbour. Each `×` is a real button with an `aria-label`.
9
+ *
10
+ * Binding = the Weave form-control convention (array value):
11
+ * - **Signal**: `value` (a getter) + `onChange`.
12
+ * - **Forms**: `control` — a structural `Field<string[]>`. `control` wins; it drives the
13
+ * array two-way and marks `touched` when a chip is removed.
14
+ *
15
+ * import Chips from '@weave-framework/ui/chips';
16
+ * <Chips value={{ tags() }} onChange={{ setTags }} onAdd={{ promptForTag }} />
17
+ * <Chips control={{ form.controls.tags }} />
18
+ */
19
+ import { signal } from '@weave-framework/runtime';
20
+ import { listKeyManager } from '../cdk/key-manager.js';
21
+ export const template = '<div class={{ groupClass() }} ref={{ root }} role="group" aria-label={{ label() }} on:keydown={{ onKeydown }}>' +
22
+ '@for (chip of chips(); track chip) {' +
23
+ '<span class="weave-chips__chip" tabindex={{ tabindexFor(chip) }}>' +
24
+ '<span class="weave-chips__label">{{ chip }}</span>' +
25
+ '@if (removable()) {' +
26
+ '<button type="button" class="weave-chips__remove" aria-label={{ removeLabelFor(chip) }} tabindex="-1"' +
27
+ ' disabled={{ isDisabled() }} on:click={{ () => removeChip(chip) }}>×</button>' +
28
+ '}' +
29
+ '</span>' +
30
+ '}' +
31
+ '@if (showAdd()) {' +
32
+ '<button type="button" class="weave-chips__chip weave-chips__chip--add" disabled={{ isDisabled() }}' +
33
+ ' on:click={{ add }}>{{ addText() }}</button>' +
34
+ '}' +
35
+ '</div>';
36
+ export function setup(props) {
37
+ const root = signal(null);
38
+ const chips = () => (props.control ? props.control.value() : props.value ?? []);
39
+ const removable = () => props.removable !== false;
40
+ const isDisabled = () => !!props.disabled;
41
+ const manager = listKeyManager(chips, { orientation: 'horizontal', wrap: false });
42
+ // The single tabbable chip: the active one (once the keyboard has moved), else the first.
43
+ const rovingIndex = () => {
44
+ const active = manager.activeIndex();
45
+ return active >= 0 ? active : 0;
46
+ };
47
+ const focusChip = (index) => {
48
+ const el = root();
49
+ if (!el || index < 0)
50
+ return;
51
+ const chip = el.querySelectorAll('.weave-chips__chip:not(.weave-chips__chip--add)')[index];
52
+ chip?.focus();
53
+ };
54
+ const emit = (next) => {
55
+ if (props.control) {
56
+ props.control.value.set(next);
57
+ props.control.touched?.set(true);
58
+ }
59
+ else {
60
+ props.onChange?.(next);
61
+ }
62
+ };
63
+ const removeChip = (chip) => {
64
+ if (isDisabled())
65
+ return;
66
+ const list = chips();
67
+ const index = list.indexOf(chip);
68
+ if (index < 0)
69
+ return;
70
+ const next = list.slice();
71
+ next.splice(index, 1);
72
+ emit(next);
73
+ // Focus the chip now at `index` (its former neighbour), else the new last one.
74
+ const focusIndex = Math.min(index, next.length - 1);
75
+ manager.setActiveItem(focusIndex >= 0 ? focusIndex : 0);
76
+ focusChip(focusIndex);
77
+ };
78
+ const onKeydown = (event) => {
79
+ if (isDisabled())
80
+ return;
81
+ if (manager.activeIndex() < 0)
82
+ manager.setActiveItem(rovingIndex());
83
+ if (event.key === 'Backspace' || event.key === 'Delete') {
84
+ const chip = chips()[manager.activeIndex()];
85
+ if (chip !== undefined) {
86
+ removeChip(chip);
87
+ event.preventDefault();
88
+ }
89
+ return;
90
+ }
91
+ if (manager.onKeydown(event)) {
92
+ event.preventDefault();
93
+ focusChip(manager.activeIndex());
94
+ }
95
+ };
96
+ return {
97
+ root,
98
+ chips,
99
+ groupClass: () => (props.class ? `weave-chips ${props.class}` : 'weave-chips'),
100
+ label: () => props.label,
101
+ removable,
102
+ isDisabled,
103
+ tabindexFor: (chip) => {
104
+ if (isDisabled())
105
+ return -1;
106
+ return chips().indexOf(chip) === rovingIndex() ? 0 : -1;
107
+ },
108
+ removeLabelFor: (chip) => (props.removeLabel ? props.removeLabel(chip) : `Remove ${chip}`),
109
+ removeChip,
110
+ onKeydown,
111
+ showAdd: () => typeof props.onAdd === 'function',
112
+ add: () => {
113
+ if (!isDisabled())
114
+ props.onAdd?.();
115
+ },
116
+ addText: () => `+ ${props.addLabel ?? 'Add'}`,
117
+ };
118
+ }
119
+ //# sourceMappingURL=chips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chips.js","sourceRoot":"","sources":["../../src/chips/chips.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Context Menu — a right-click menu, applied as a Weave `use:` action to any host:
3
+ *
4
+ * <div use:contextMenu={{ { items: [{value:'copy',label:'Copy'}], onSelect: run } }}>…</div>
5
+ *
6
+ * Binds `contextmenu` (right-click) on the host, suppresses the native menu, and opens the
7
+ * SAME menu panel as `use:menu` — but anchored to a **virtual point** at the pointer (the
8
+ * CDK positioner accepts any origin; it flips near the viewport edges). Also opens via the
9
+ * keyboard context-menu key / Shift+F10 (anchored to the host), for native parity. Reuses
10
+ * the menu core (roving focus, typeahead, Esc/click-away) and the `.weave-menu` visual — no
11
+ * new styles. Zero-dep.
12
+ */
13
+ import { type MenuItem, type MenuPosition, type OptionAccessors } from '../menu/menu-core.js';
14
+ export type { MenuItem, MenuPosition, OptionAccessors } from '../menu/menu-core.js';
15
+ export interface ContextMenuOptions<T = MenuItem> extends OptionAccessors<T> {
16
+ /** The options — default shape, plain strings, or arbitrary objects (via `option*` accessors). */
17
+ items: T[];
18
+ /** Called with the chosen option (value string, or the whole object — see `emit`). */
19
+ onSelect: (selected: string | T) => void;
20
+ /** Is this option a hairline separator? Default: `item.divider`. */
21
+ isDivider?: (item: T) => boolean;
22
+ /**
23
+ * Where the panel is anchored. **Omitted (default): at the pointer** (native right-click
24
+ * feel). **Set to a position** (`'bottom-start'`, `'top-end'`, `'bottom'`, … or an explicit
25
+ * anchor pair) → anchored to the **host object** at that position instead, so the menu
26
+ * always appears in the same spot regardless of where inside the host you clicked.
27
+ */
28
+ position?: MenuPosition;
29
+ }
30
+ /** Weave `use:` action: `(host, options) => cleanup`. */
31
+ export declare function contextMenu<T = MenuItem>(host: HTMLElement, options: ContextMenuOptions<T>): () => void;
32
+ //# sourceMappingURL=context-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../src/context-menu/context-menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAKL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKpF,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,QAAQ,CAAE,SAAQ,eAAe,CAAC,CAAC,CAAC;IAC1E,kGAAkG;IAClG,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,sFAAsF;IACtF,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC;IACzC,oEAAoE;IACpE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAgDvG"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Context Menu — a right-click menu, applied as a Weave `use:` action to any host:
3
+ *
4
+ * <div use:contextMenu={{ { items: [{value:'copy',label:'Copy'}], onSelect: run } }}>…</div>
5
+ *
6
+ * Binds `contextmenu` (right-click) on the host, suppresses the native menu, and opens the
7
+ * SAME menu panel as `use:menu` — but anchored to a **virtual point** at the pointer (the
8
+ * CDK positioner accepts any origin; it flips near the viewport edges). Also opens via the
9
+ * keyboard context-menu key / Shift+F10 (anchored to the host), for native parity. Reuses
10
+ * the menu core (roving focus, typeahead, Esc/click-away) and the `.weave-menu` visual — no
11
+ * new styles. Zero-dep.
12
+ */
13
+ import { openMenuPanel, buildPositions, virtualOrigin, } from '../menu/menu-core.js';
14
+ // Pointer-anchored fallback order (down-right first, then the other quadrants).
15
+ const POINTER_POSITIONS = ['bottom-start', 'top-start', 'bottom-end', 'top-end'];
16
+ /** Weave `use:` action: `(host, options) => cleanup`. */
17
+ export function contextMenu(host, options) {
18
+ let handle = null;
19
+ // Anchor to the host at `position` when set; otherwise to the given pointer point.
20
+ function doOpen(focusFirst, pointer) {
21
+ handle?.close(false); // replace any open instance
22
+ const objectAnchored = options.position != null || pointer == null;
23
+ handle = openMenuPanel({
24
+ origin: objectAnchored ? host : virtualOrigin(pointer.x, pointer.y),
25
+ items: options.items,
26
+ positions: objectAnchored ? buildPositions(options.position, 'bottom-start') : POINTER_POSITIONS,
27
+ focusFirst,
28
+ isDivider: options.isDivider,
29
+ optionValue: options.optionValue,
30
+ optionLabel: options.optionLabel,
31
+ optionDescription: options.optionDescription,
32
+ optionDisabled: options.optionDisabled,
33
+ emit: options.emit,
34
+ onSelect: options.onSelect,
35
+ onClose: (returnFocus) => {
36
+ handle = null;
37
+ if (returnFocus && typeof host.focus === 'function')
38
+ host.focus();
39
+ },
40
+ });
41
+ }
42
+ const onContextMenu = (event) => {
43
+ event.preventDefault();
44
+ // Pointer open: nothing pre-highlighted (unless `position` re-anchors it to the host).
45
+ doOpen(false, { x: event.clientX, y: event.clientY });
46
+ };
47
+ const onKeydown = (event) => {
48
+ // Keyboard parity: the ContextMenu key or Shift+F10 opens anchored to the host (no
49
+ // pointer), first item highlighted.
50
+ if (event.key === 'ContextMenu' || (event.shiftKey && event.key === 'F10')) {
51
+ event.preventDefault();
52
+ doOpen(true, null);
53
+ }
54
+ };
55
+ host.addEventListener('contextmenu', onContextMenu);
56
+ host.addEventListener('keydown', onKeydown);
57
+ return () => {
58
+ handle?.close(false);
59
+ host.removeEventListener('contextmenu', onContextMenu);
60
+ host.removeEventListener('keydown', onKeydown);
61
+ };
62
+ }
63
+ //# sourceMappingURL=context-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.js","sourceRoot":"","sources":["../../src/context-menu/context-menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,GAKd,MAAM,sBAAsB,CAAC;AAI9B,gFAAgF;AAChF,MAAM,iBAAiB,GAAmB,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AAkBjG,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAe,IAAiB,EAAE,OAA8B;IACzF,IAAI,MAAM,GAAsB,IAAI,CAAC;IAErC,mFAAmF;IACnF,SAAS,MAAM,CAAC,UAAmB,EAAE,OAAwC;QAC3E,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B;QAClD,MAAM,cAAc,GAAY,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;QAC5E,MAAM,GAAG,aAAa,CAAI;YACxB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,OAAQ,CAAC,CAAC,EAAE,OAAQ,CAAC,CAAC,CAAC;YACrE,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB;YAChG,UAAU;YACV,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,CAAC,WAAoB,EAAQ,EAAE;gBACtC,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,WAAW,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;oBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACpE,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAQ,EAAE;QAChD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,uFAAuF;QACvF,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAQ,EAAE;QAC/C,mFAAmF;QACnF,oCAAoC;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC;YAC3E,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE5C,OAAO,GAAS,EAAE;QAChB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * `<Datepicker>` — a date field + calendar popover (WAI-ARIA dialog-grid pattern). A trigger
3
+ * field (the Select-style underline field, sharing Input's chrome via the `field-underline`
4
+ * helper) shows the formatted value + a calendar icon; clicking (or ↓/Enter/Space) opens a
5
+ * CDK-overlay **calendar** — a `role=grid` month view with ‹/› month nav, a locale weekday
6
+ * header, and a full-keyboard day grid. All date math flows through the zero-dep CDK
7
+ * **Date adapter**; the value is a plain local-midnight `Date`.
8
+ *
9
+ * - **Binding** — the Weave form-control convention: `value` (a `Date | null` getter) +
10
+ * `onChange`, OR a structural `control` (a forms `Field<Date>`). Compose with `<FormField>`
11
+ * for label/hint/error.
12
+ * - **Bounds** — `min`/`max` + a `dateFilter` predicate disable out-of-range / excluded days.
13
+ * - **Keyboard** — Arrows (day), PageUp/Down (month), Shift+PageUp/Down (year), Home/End
14
+ * (week edges), Enter/Space (select), Esc (close). Non-modal popover (click-away + Esc).
15
+ *
16
+ * import Datepicker from '@weave-framework/ui/datepicker';
17
+ * <Datepicker control={{ form.controls.dob }} max={{ adapter.today() }} />
18
+ */
19
+ import { type Signal } from '@weave-framework/runtime';
20
+ import { type DateAdapter } from '../cdk/index.js';
21
+ import { type MenuPosition } from '../shared/positions.js';
22
+ /** The subset of a forms `Field<Date>` a Datepicker binds to. */
23
+ export interface DatepickerControl {
24
+ value: Signal<Date | null | undefined>;
25
+ touched?: Signal<boolean>;
26
+ error?: () => string | null;
27
+ }
28
+ export interface DatepickerProps {
29
+ /** Controlled value (a getter). Ignored when `control` is set. */
30
+ value?: Date | null;
31
+ /** Called with the next value on selection/clear. Ignored when `control` is set. */
32
+ onChange?: (value: Date | null) => void;
33
+ /** A forms `Field<Date>` — two-way value + touched-on-close + error state. */
34
+ control?: DatepickerControl;
35
+ /** Earliest selectable date (inclusive). */
36
+ min?: Date;
37
+ /** Latest selectable date (inclusive). */
38
+ max?: Date;
39
+ /** Return false to disable a specific date. */
40
+ dateFilter?: (date: Date) => boolean;
41
+ /** Bring your own date adapter (else one is created from `locale`). */
42
+ adapter?: DateAdapter;
43
+ /** Locale for the default adapter (format/parse/first-day/names). */
44
+ locale?: string;
45
+ /** `Intl` options for the field's display format. Default `{ dateStyle: 'medium' }`. */
46
+ displayFormat?: Intl.DateTimeFormatOptions;
47
+ /** Let the user type a date into the field (parsed via the adapter). Default false — the
48
+ * design's field is a button trigger; `editable` swaps in a typeable input-as-combobox. */
49
+ editable?: boolean;
50
+ /** Shown when nothing is selected. */
51
+ placeholder?: string;
52
+ /** Disable the control. */
53
+ disabled?: boolean;
54
+ /** Mark required (aria). */
55
+ required?: boolean;
56
+ /** Show a clear (`×`) button when a date is set. */
57
+ clearable?: boolean;
58
+ /** Accessible name (when not wrapped by a FormField label). */
59
+ label?: string;
60
+ /** Accessible name for the clear button. Default 'Clear'. */
61
+ clearLabel?: string;
62
+ /** Panel position relative to the field. Default `'bottom-start'`. */
63
+ position?: MenuPosition;
64
+ /** Extra classes, forwarded onto the root. */
65
+ class?: string;
66
+ }
67
+ export declare const template: string;
68
+ export interface DatepickerContext {
69
+ root: Signal<HTMLElement | null>;
70
+ trigger: Signal<HTMLElement | null>;
71
+ input: Signal<HTMLInputElement | null>;
72
+ rootClass: () => string;
73
+ valueClass: () => string;
74
+ displayText: () => string;
75
+ editable: () => boolean;
76
+ fieldRole: () => string | undefined;
77
+ fieldHaspopup: () => string | undefined;
78
+ fieldExpanded: () => 'true' | 'false' | undefined;
79
+ fieldControls: () => string | undefined;
80
+ inputExpanded: () => 'true' | 'false';
81
+ inputControls: () => string | undefined;
82
+ fieldLabel: () => string | undefined;
83
+ tabindex: () => number;
84
+ isDisabled: () => boolean;
85
+ label: () => string | undefined;
86
+ placeholder: () => string | undefined;
87
+ ariaRequired: () => 'true' | undefined;
88
+ ariaDisabled: () => 'true' | undefined;
89
+ showClear: () => boolean;
90
+ clearLabel: () => string;
91
+ onFieldClick: () => void;
92
+ onTriggerKeydown: (event: KeyboardEvent) => void;
93
+ onInputKeydown: (event: KeyboardEvent) => void;
94
+ onInputBlur: () => void;
95
+ onInputClick: (event: MouseEvent) => void;
96
+ onIconClick: (event: MouseEvent) => void;
97
+ onClearClick: (event: MouseEvent) => void;
98
+ }
99
+ export declare function setup(props: DatepickerProps): DatepickerContext;
100
+ //# sourceMappingURL=datepicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datepicker.d.ts","sourceRoot":"","sources":["../../src/datepicker/datepicker.ts"],"names":[],"mappings":"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"}