@spinjs/components 0.0.0-stage → 0.1.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +61 -2
  3. package/dist/angle-slider/angle-slider.events.d.ts +30 -0
  4. package/dist/angle-slider/angle-slider.events.js +1 -0
  5. package/dist/angle-slider/angle-slider.machine.d.ts +9 -0
  6. package/dist/angle-slider/angle-slider.machine.js +56 -0
  7. package/dist/angle-slider/angle-slider.presentation.d.ts +194 -0
  8. package/dist/angle-slider/angle-slider.presentation.js +277 -0
  9. package/dist/angle-slider/angle-slider.state.d.ts +38 -0
  10. package/dist/angle-slider/angle-slider.state.js +71 -0
  11. package/dist/angle-slider/angle-slider.transitions.d.ts +11 -0
  12. package/dist/angle-slider/angle-slider.transitions.js +18 -0
  13. package/dist/angle-slider/examples/basic.html +42 -0
  14. package/dist/angle-slider/examples/knob.html +34 -0
  15. package/dist/angle-slider/examples/labeled.html +63 -0
  16. package/dist/angle-slider/examples/marks.html +42 -0
  17. package/dist/async-list/async-list.events.d.ts +23 -0
  18. package/dist/async-list/async-list.events.js +1 -0
  19. package/dist/async-list/async-list.machine.d.ts +5 -0
  20. package/dist/async-list/async-list.machine.js +96 -0
  21. package/dist/async-list/async-list.presentation.d.ts +294 -0
  22. package/dist/async-list/async-list.presentation.js +380 -0
  23. package/dist/async-list/async-list.state.d.ts +27 -0
  24. package/dist/async-list/async-list.state.js +31 -0
  25. package/dist/async-list/async-list.transitions.d.ts +16 -0
  26. package/dist/async-list/async-list.transitions.js +17 -0
  27. package/dist/async-list/examples/basic.html +88 -0
  28. package/dist/avatar/avatar.events.d.ts +18 -0
  29. package/dist/avatar/avatar.events.js +1 -0
  30. package/dist/avatar/avatar.machine.d.ts +5 -0
  31. package/dist/avatar/avatar.machine.js +47 -0
  32. package/dist/avatar/avatar.presentation.d.ts +75 -0
  33. package/dist/avatar/avatar.presentation.js +68 -0
  34. package/dist/avatar/avatar.state.d.ts +28 -0
  35. package/dist/avatar/avatar.state.js +20 -0
  36. package/dist/avatar/avatar.transitions.d.ts +7 -0
  37. package/dist/avatar/avatar.transitions.js +5 -0
  38. package/dist/avatar/examples/badge.html +24 -0
  39. package/dist/avatar/examples/badgeminimal.html +16 -0
  40. package/dist/avatar/examples/basic.html +24 -0
  41. package/dist/avatar/examples/count.html +29 -0
  42. package/dist/avatar/examples/fallback.html +24 -0
  43. package/dist/avatar/examples/group.html +28 -0
  44. package/dist/avatar/examples/icon.html +15 -0
  45. package/dist/avatar/examples/multiples.html +48 -0
  46. package/dist/avatar/examples/pills.html +58 -0
  47. package/dist/avatar/examples/pillsolid.html +21 -0
  48. package/dist/avatar/examples/rounded.html +13 -0
  49. package/dist/avatar/examples/status.html +24 -0
  50. package/dist/avatar/examples/statusminimal.html +16 -0
  51. package/dist/avatar/examples/trusted.html +33 -0
  52. package/dist/avatar/examples/verification.html +18 -0
  53. package/dist/carousel/carousel.events.d.ts +50 -0
  54. package/dist/carousel/carousel.events.js +1 -0
  55. package/dist/carousel/carousel.machine.d.ts +6 -0
  56. package/dist/carousel/carousel.machine.js +70 -0
  57. package/dist/carousel/carousel.presentation.d.ts +379 -0
  58. package/dist/carousel/carousel.presentation.js +554 -0
  59. package/dist/carousel/carousel.state.d.ts +61 -0
  60. package/dist/carousel/carousel.state.js +93 -0
  61. package/dist/carousel/carousel.transitions.d.ts +20 -0
  62. package/dist/carousel/carousel.transitions.js +49 -0
  63. package/dist/carousel/examples/autoplay.html +69 -0
  64. package/dist/carousel/examples/basic.html +56 -0
  65. package/dist/carousel/examples/cards.html +71 -0
  66. package/dist/carousel/examples/hero.html +54 -0
  67. package/dist/carousel/examples/infinite.html +68 -0
  68. package/dist/carousel/examples/minimal.html +47 -0
  69. package/dist/carousel/examples/testimonials.html +78 -0
  70. package/dist/carousel/examples/thumbnails.html +67 -0
  71. package/dist/carousel/examples/vertical.html +67 -0
  72. package/dist/cascade-select/cascade.events.d.ts +42 -0
  73. package/dist/cascade-select/cascade.events.js +1 -0
  74. package/dist/cascade-select/cascade.machine.d.ts +7 -0
  75. package/dist/cascade-select/cascade.machine.js +118 -0
  76. package/dist/cascade-select/cascade.presentation.d.ts +415 -0
  77. package/dist/cascade-select/cascade.presentation.js +771 -0
  78. package/dist/cascade-select/cascade.state.d.ts +58 -0
  79. package/dist/cascade-select/cascade.state.js +97 -0
  80. package/dist/cascade-select/cascade.transitions.d.ts +21 -0
  81. package/dist/cascade-select/cascade.transitions.js +54 -0
  82. package/dist/cascade-select/examples/basic.html +77 -0
  83. package/dist/color-picker/color-picker.events.d.ts +83 -0
  84. package/dist/color-picker/color-picker.events.js +1 -0
  85. package/dist/color-picker/color-picker.machine.d.ts +5 -0
  86. package/dist/color-picker/color-picker.machine.js +130 -0
  87. package/dist/color-picker/color-picker.presentation.d.ts +402 -0
  88. package/dist/color-picker/color-picker.presentation.js +761 -0
  89. package/dist/color-picker/color-picker.state.d.ts +41 -0
  90. package/dist/color-picker/color-picker.state.js +71 -0
  91. package/dist/color-picker/color-picker.transitions.d.ts +21 -0
  92. package/dist/color-picker/color-picker.transitions.js +99 -0
  93. package/dist/color-picker/examples/basic.html +106 -0
  94. package/dist/color-picker/examples/hue-wheel.html +57 -0
  95. package/dist/color-picker/examples/inline.html +61 -0
  96. package/dist/color-picker/examples/with-presets.html +49 -0
  97. package/dist/combobox/combobox.events.d.ts +61 -0
  98. package/dist/combobox/combobox.events.js +1 -0
  99. package/dist/combobox/combobox.machine.d.ts +7 -0
  100. package/dist/combobox/combobox.machine.js +234 -0
  101. package/dist/combobox/combobox.presentation.d.ts +433 -0
  102. package/dist/combobox/combobox.presentation.js +746 -0
  103. package/dist/combobox/combobox.state.d.ts +80 -0
  104. package/dist/combobox/combobox.state.js +71 -0
  105. package/dist/combobox/combobox.transitions.d.ts +28 -0
  106. package/dist/combobox/combobox.transitions.js +91 -0
  107. package/dist/combobox/examples/basic.html +61 -0
  108. package/dist/combobox/examples/directory.html +71 -0
  109. package/dist/combobox/examples/grouping.html +36 -0
  110. package/dist/combobox/examples/multiple.html +37 -0
  111. package/dist/controller.d.ts +52 -0
  112. package/dist/controller.js +90 -0
  113. package/dist/date-input/date-input.events.d.ts +37 -0
  114. package/dist/date-input/date-input.events.js +1 -0
  115. package/dist/date-input/date-input.machine.d.ts +6 -0
  116. package/dist/date-input/date-input.machine.js +61 -0
  117. package/dist/date-input/date-input.presentation.d.ts +133 -0
  118. package/dist/date-input/date-input.presentation.js +328 -0
  119. package/dist/date-input/date-input.state.d.ts +77 -0
  120. package/dist/date-input/date-input.state.js +260 -0
  121. package/dist/date-input/date-input.transitions.d.ts +22 -0
  122. package/dist/date-input/date-input.transitions.js +166 -0
  123. package/dist/date-input/examples/basic.html +18 -0
  124. package/dist/date-picker/date-picker.events.d.ts +42 -0
  125. package/dist/date-picker/date-picker.events.js +1 -0
  126. package/dist/date-picker/date-picker.machine.d.ts +6 -0
  127. package/dist/date-picker/date-picker.machine.js +102 -0
  128. package/dist/date-picker/date-picker.presentation.d.ts +256 -0
  129. package/dist/date-picker/date-picker.presentation.js +549 -0
  130. package/dist/date-picker/date-picker.state.d.ts +66 -0
  131. package/dist/date-picker/date-picker.state.js +177 -0
  132. package/dist/date-picker/date-picker.transitions.d.ts +23 -0
  133. package/dist/date-picker/date-picker.transitions.js +94 -0
  134. package/dist/date-picker/examples/appointment.html +49 -0
  135. package/dist/date-picker/examples/basic.html +6 -0
  136. package/dist/date-picker/examples/multiple.html +6 -0
  137. package/dist/date-picker/examples/pricing.html +6 -0
  138. package/dist/date-picker/examples/range.html +6 -0
  139. package/dist/date-picker/examples/unavailable.html +6 -0
  140. package/dist/editable/editable.events.d.ts +29 -0
  141. package/dist/editable/editable.events.js +1 -0
  142. package/dist/editable/editable.machine.d.ts +5 -0
  143. package/dist/editable/editable.machine.js +82 -0
  144. package/dist/editable/editable.presentation.d.ts +278 -0
  145. package/dist/editable/editable.presentation.js +388 -0
  146. package/dist/editable/editable.state.d.ts +54 -0
  147. package/dist/editable/editable.state.js +32 -0
  148. package/dist/editable/editable.transitions.d.ts +11 -0
  149. package/dist/editable/editable.transitions.js +9 -0
  150. package/dist/editable/examples/basic.html +43 -0
  151. package/dist/editable/examples/doubleclick.html +19 -0
  152. package/dist/editable/examples/inline-edit.html +13 -0
  153. package/dist/editable/examples/profile-field.html +20 -0
  154. package/dist/editable/examples/resize.html +19 -0
  155. package/dist/editable/examples/task-item.html +19 -0
  156. package/dist/editable/examples/title-editor.html +13 -0
  157. package/dist/editable/examples/with-controls.html +20 -0
  158. package/dist/file-upload/examples/avatar.html +34 -0
  159. package/dist/file-upload/examples/basic.html +34 -0
  160. package/dist/file-upload/examples/directory.html +34 -0
  161. package/dist/file-upload/examples/dragdrop.html +31 -0
  162. package/dist/file-upload/examples/files.html +39 -0
  163. package/dist/file-upload/examples/images.html +40 -0
  164. package/dist/file-upload/examples/paste.html +30 -0
  165. package/dist/file-upload/examples/table.html +39 -0
  166. package/dist/file-upload/file-upload.events.d.ts +27 -0
  167. package/dist/file-upload/file-upload.events.js +1 -0
  168. package/dist/file-upload/file-upload.machine.d.ts +6 -0
  169. package/dist/file-upload/file-upload.machine.js +59 -0
  170. package/dist/file-upload/file-upload.presentation.d.ts +182 -0
  171. package/dist/file-upload/file-upload.presentation.js +256 -0
  172. package/dist/file-upload/file-upload.state.d.ts +52 -0
  173. package/dist/file-upload/file-upload.state.js +72 -0
  174. package/dist/file-upload/file-upload.transitions.d.ts +11 -0
  175. package/dist/file-upload/file-upload.transitions.js +32 -0
  176. package/dist/floating-panel/examples/basic.html +42 -0
  177. package/dist/floating-panel/examples/calculator.html +56 -0
  178. package/dist/floating-panel/examples/chat.html +45 -0
  179. package/dist/floating-panel/examples/media-player.html +54 -0
  180. package/dist/floating-panel/examples/notes.html +60 -0
  181. package/dist/floating-panel/examples/settings.html +73 -0
  182. package/dist/floating-panel/examples/task.html +79 -0
  183. package/dist/floating-panel/examples/video-call.html +47 -0
  184. package/dist/floating-panel/floating-panel.events.d.ts +45 -0
  185. package/dist/floating-panel/floating-panel.events.js +1 -0
  186. package/dist/floating-panel/floating-panel.machine.d.ts +6 -0
  187. package/dist/floating-panel/floating-panel.machine.js +70 -0
  188. package/dist/floating-panel/floating-panel.presentation.d.ts +239 -0
  189. package/dist/floating-panel/floating-panel.presentation.js +271 -0
  190. package/dist/floating-panel/floating-panel.state.d.ts +67 -0
  191. package/dist/floating-panel/floating-panel.state.js +76 -0
  192. package/dist/floating-panel/floating-panel.transitions.d.ts +22 -0
  193. package/dist/floating-panel/floating-panel.transitions.js +114 -0
  194. package/dist/hover-card/examples/basic.html +19 -0
  195. package/dist/hover-card/examples/controlled.html +32 -0
  196. package/dist/hover-card/examples/custom-positioning.html +29 -0
  197. package/dist/hover-card/examples/link.html +10 -0
  198. package/dist/hover-card/examples/product.html +33 -0
  199. package/dist/hover-card/examples/user.html +38 -0
  200. package/dist/hover-card/examples/with-arrow.html +29 -0
  201. package/dist/hover-card/hover-card.controller-def.d.ts +50 -0
  202. package/dist/hover-card/hover-card.controller-def.js +134 -0
  203. package/dist/image-cropper/crop-geometry.d.ts +133 -0
  204. package/dist/image-cropper/crop-geometry.js +453 -0
  205. package/dist/image-cropper/examples/basic.html +44 -0
  206. package/dist/image-cropper/examples/circle.html +44 -0
  207. package/dist/image-cropper/image-cropper.events.d.ts +108 -0
  208. package/dist/image-cropper/image-cropper.events.js +1 -0
  209. package/dist/image-cropper/image-cropper.machine.d.ts +5 -0
  210. package/dist/image-cropper/image-cropper.machine.js +231 -0
  211. package/dist/image-cropper/image-cropper.presentation.d.ts +295 -0
  212. package/dist/image-cropper/image-cropper.presentation.js +536 -0
  213. package/dist/image-cropper/image-cropper.state.d.ts +94 -0
  214. package/dist/image-cropper/image-cropper.state.js +134 -0
  215. package/dist/image-cropper/image-cropper.transitions.d.ts +13 -0
  216. package/dist/image-cropper/image-cropper.transitions.js +11 -0
  217. package/dist/index.d.ts +66 -0
  218. package/dist/index.js +279 -0
  219. package/dist/listbox/examples/basic.html +50 -0
  220. package/dist/listbox/examples/controlled.html +54 -0
  221. package/dist/listbox/examples/countries.html +61 -0
  222. package/dist/listbox/examples/grouped.html +58 -0
  223. package/dist/listbox/examples/icons.html +56 -0
  224. package/dist/listbox/examples/multiple.html +56 -0
  225. package/dist/listbox/examples/priority.html +50 -0
  226. package/dist/listbox/examples/settings.html +64 -0
  227. package/dist/listbox/listbox.events.d.ts +42 -0
  228. package/dist/listbox/listbox.events.js +1 -0
  229. package/dist/listbox/listbox.machine.d.ts +6 -0
  230. package/dist/listbox/listbox.machine.js +51 -0
  231. package/dist/listbox/listbox.presentation.d.ts +294 -0
  232. package/dist/listbox/listbox.presentation.js +493 -0
  233. package/dist/listbox/listbox.state.d.ts +55 -0
  234. package/dist/listbox/listbox.state.js +59 -0
  235. package/dist/listbox/listbox.transitions.d.ts +20 -0
  236. package/dist/listbox/listbox.transitions.js +73 -0
  237. package/dist/menu/examples/basic.html +75 -0
  238. package/dist/menu/examples/context.html +74 -0
  239. package/dist/menu/examples/groups.html +88 -0
  240. package/dist/menu/examples/icons.html +80 -0
  241. package/dist/menu/examples/nested.html +83 -0
  242. package/dist/menu/examples/user.html +87 -0
  243. package/dist/menu/menu.events.d.ts +42 -0
  244. package/dist/menu/menu.events.js +1 -0
  245. package/dist/menu/menu.machine.d.ts +6 -0
  246. package/dist/menu/menu.machine.js +148 -0
  247. package/dist/menu/menu.presentation.d.ts +252 -0
  248. package/dist/menu/menu.presentation.js +709 -0
  249. package/dist/menu/menu.state.d.ts +54 -0
  250. package/dist/menu/menu.state.js +55 -0
  251. package/dist/mode-picker/examples/basic.html +17 -0
  252. package/dist/mode-picker/examples/minimal.html +17 -0
  253. package/dist/mode-picker/examples/pill.html +17 -0
  254. package/dist/mode-picker/mode-picker.events.d.ts +20 -0
  255. package/dist/mode-picker/mode-picker.events.js +1 -0
  256. package/dist/mode-picker/mode-picker.machine.d.ts +5 -0
  257. package/dist/mode-picker/mode-picker.machine.js +29 -0
  258. package/dist/mode-picker/mode-picker.presentation.d.ts +129 -0
  259. package/dist/mode-picker/mode-picker.presentation.js +175 -0
  260. package/dist/mode-picker/mode-picker.state.d.ts +27 -0
  261. package/dist/mode-picker/mode-picker.state.js +56 -0
  262. package/dist/mode-picker/mode-picker.transitions.d.ts +11 -0
  263. package/dist/mode-picker/mode-picker.transitions.js +32 -0
  264. package/dist/navigation-menu/examples/basic.html +72 -0
  265. package/dist/navigation-menu/examples/grouped.html +91 -0
  266. package/dist/navigation-menu/examples/minimal.html +49 -0
  267. package/dist/navigation-menu/navigation-menu.events.d.ts +20 -0
  268. package/dist/navigation-menu/navigation-menu.events.js +1 -0
  269. package/dist/navigation-menu/navigation-menu.machine.d.ts +6 -0
  270. package/dist/navigation-menu/navigation-menu.machine.js +51 -0
  271. package/dist/navigation-menu/navigation-menu.presentation.d.ts +132 -0
  272. package/dist/navigation-menu/navigation-menu.presentation.js +151 -0
  273. package/dist/navigation-menu/navigation-menu.state.d.ts +33 -0
  274. package/dist/navigation-menu/navigation-menu.state.js +49 -0
  275. package/dist/navigation-menu/navigation-menu.transitions.d.ts +11 -0
  276. package/dist/navigation-menu/navigation-menu.transitions.js +32 -0
  277. package/dist/number-input/examples/basic.html +49 -0
  278. package/dist/number-input/examples/currency.html +33 -0
  279. package/dist/number-input/examples/decimal.html +33 -0
  280. package/dist/number-input/examples/limits.html +42 -0
  281. package/dist/number-input/examples/percentage.html +38 -0
  282. package/dist/number-input/examples/quantity.html +35 -0
  283. package/dist/number-input/examples/scrubber.html +46 -0
  284. package/dist/number-input/examples/wheel.html +42 -0
  285. package/dist/number-input/number-input.events.d.ts +66 -0
  286. package/dist/number-input/number-input.events.js +1 -0
  287. package/dist/number-input/number-input.machine.d.ts +5 -0
  288. package/dist/number-input/number-input.machine.js +132 -0
  289. package/dist/number-input/number-input.presentation.d.ts +292 -0
  290. package/dist/number-input/number-input.presentation.js +449 -0
  291. package/dist/number-input/number-input.state.d.ts +71 -0
  292. package/dist/number-input/number-input.state.js +86 -0
  293. package/dist/number-input/number-input.transitions.d.ts +17 -0
  294. package/dist/number-input/number-input.transitions.js +40 -0
  295. package/dist/pagination/examples/basic.html +39 -0
  296. package/dist/pagination/examples/dropdown.html +37 -0
  297. package/dist/pagination/examples/info.html +41 -0
  298. package/dist/pagination/examples/jump.html +38 -0
  299. package/dist/pagination/examples/numbered.html +31 -0
  300. package/dist/pagination/examples/pagesize.html +46 -0
  301. package/dist/pagination/pagination.events.d.ts +36 -0
  302. package/dist/pagination/pagination.events.js +1 -0
  303. package/dist/pagination/pagination.machine.d.ts +6 -0
  304. package/dist/pagination/pagination.machine.js +45 -0
  305. package/dist/pagination/pagination.presentation.d.ts +161 -0
  306. package/dist/pagination/pagination.presentation.js +162 -0
  307. package/dist/pagination/pagination.state.d.ts +44 -0
  308. package/dist/pagination/pagination.state.js +115 -0
  309. package/dist/pagination/pagination.transitions.d.ts +17 -0
  310. package/dist/pagination/pagination.transitions.js +30 -0
  311. package/dist/pin-input/examples/basic.html +23 -0
  312. package/dist/pin-input/examples/field.html +25 -0
  313. package/dist/pin-input/examples/masked.html +23 -0
  314. package/dist/pin-input/examples/placeholder.html +24 -0
  315. package/dist/pin-input/examples/twofactor.html +25 -0
  316. package/dist/pin-input/examples/verification.html +32 -0
  317. package/dist/pin-input/pin-input.events.d.ts +48 -0
  318. package/dist/pin-input/pin-input.events.js +1 -0
  319. package/dist/pin-input/pin-input.machine.d.ts +5 -0
  320. package/dist/pin-input/pin-input.machine.js +99 -0
  321. package/dist/pin-input/pin-input.presentation.d.ts +204 -0
  322. package/dist/pin-input/pin-input.presentation.js +392 -0
  323. package/dist/pin-input/pin-input.state.d.ts +67 -0
  324. package/dist/pin-input/pin-input.state.js +63 -0
  325. package/dist/pin-input/pin-input.transitions.d.ts +10 -0
  326. package/dist/pin-input/pin-input.transitions.js +22 -0
  327. package/dist/popover/examples/basic.html +15 -0
  328. package/dist/popover/examples/feedback.html +17 -0
  329. package/dist/popover/examples/notifications.html +21 -0
  330. package/dist/popover/examples/settings.html +39 -0
  331. package/dist/popover/examples/share.html +18 -0
  332. package/dist/popover/examples/user.html +43 -0
  333. package/dist/popover/popover.controller-def.d.ts +39 -0
  334. package/dist/popover/popover.controller-def.js +74 -0
  335. package/dist/rating-group/examples/basic.html +39 -0
  336. package/dist/rating-group/examples/movie.html +45 -0
  337. package/dist/rating-group/examples/product-review.html +52 -0
  338. package/dist/rating-group/examples/service-evaluation.html +31 -0
  339. package/dist/rating-group/rating-group.events.d.ts +38 -0
  340. package/dist/rating-group/rating-group.events.js +1 -0
  341. package/dist/rating-group/rating-group.machine.d.ts +6 -0
  342. package/dist/rating-group/rating-group.machine.js +70 -0
  343. package/dist/rating-group/rating-group.presentation.d.ts +144 -0
  344. package/dist/rating-group/rating-group.presentation.js +208 -0
  345. package/dist/rating-group/rating-group.state.d.ts +36 -0
  346. package/dist/rating-group/rating-group.state.js +41 -0
  347. package/dist/rating-group/rating-group.transitions.d.ts +16 -0
  348. package/dist/rating-group/rating-group.transitions.js +15 -0
  349. package/dist/react/react.d.ts +29 -0
  350. package/dist/react/react.js +8 -0
  351. package/dist/select/examples/basic.html +72 -0
  352. package/dist/select/examples/category.html +67 -0
  353. package/dist/select/examples/country.html +65 -0
  354. package/dist/select/examples/language.html +19 -0
  355. package/dist/select/examples/multiple.html +20 -0
  356. package/dist/select/examples/profile.html +73 -0
  357. package/dist/select/examples/theme.html +11 -0
  358. package/dist/select/examples/with-overlapping-label.html +57 -0
  359. package/dist/select/select.events.d.ts +59 -0
  360. package/dist/select/select.events.js +1 -0
  361. package/dist/select/select.machine.d.ts +6 -0
  362. package/dist/select/select.machine.js +203 -0
  363. package/dist/select/select.presentation.d.ts +358 -0
  364. package/dist/select/select.presentation.js +509 -0
  365. package/dist/select/select.shared.d.ts +8 -0
  366. package/dist/select/select.shared.js +13 -0
  367. package/dist/select/select.state.d.ts +51 -0
  368. package/dist/select/select.state.js +69 -0
  369. package/dist/select/select.transitions.d.ts +15 -0
  370. package/dist/select/select.transitions.js +27 -0
  371. package/dist/shared/keyboard.d.ts +29 -0
  372. package/dist/shared/keyboard.js +13 -0
  373. package/dist/signature-pad/examples/basic.html +29 -0
  374. package/dist/signature-pad/examples/contract.html +36 -0
  375. package/dist/signature-pad/examples/receipt.html +40 -0
  376. package/dist/signature-pad/examples/with-preview.html +40 -0
  377. package/dist/signature-pad/signature-pad.events.d.ts +26 -0
  378. package/dist/signature-pad/signature-pad.events.js +1 -0
  379. package/dist/signature-pad/signature-pad.machine.d.ts +7 -0
  380. package/dist/signature-pad/signature-pad.machine.js +44 -0
  381. package/dist/signature-pad/signature-pad.presentation.d.ts +184 -0
  382. package/dist/signature-pad/signature-pad.presentation.js +236 -0
  383. package/dist/signature-pad/signature-pad.state.d.ts +40 -0
  384. package/dist/signature-pad/signature-pad.state.js +94 -0
  385. package/dist/signature-pad/signature-pad.transitions.d.ts +12 -0
  386. package/dist/signature-pad/signature-pad.transitions.js +40 -0
  387. package/dist/slider/examples/basic.html +32 -0
  388. package/dist/slider/examples/equalizer.html +119 -0
  389. package/dist/slider/examples/fractional.html +7 -0
  390. package/dist/slider/examples/marks.html +42 -0
  391. package/dist/slider/examples/range.html +31 -0
  392. package/dist/slider/examples/stepped.html +7 -0
  393. package/dist/slider/examples/ticks.html +72 -0
  394. package/dist/slider/examples/vertical.html +30 -0
  395. package/dist/slider/slider.events.d.ts +50 -0
  396. package/dist/slider/slider.events.js +1 -0
  397. package/dist/slider/slider.machine.d.ts +5 -0
  398. package/dist/slider/slider.machine.js +86 -0
  399. package/dist/slider/slider.presentation.d.ts +252 -0
  400. package/dist/slider/slider.presentation.js +322 -0
  401. package/dist/slider/slider.state.d.ts +72 -0
  402. package/dist/slider/slider.state.js +91 -0
  403. package/dist/slider/slider.transitions.d.ts +17 -0
  404. package/dist/slider/slider.transitions.js +62 -0
  405. package/dist/solid/solid.d.ts +36 -0
  406. package/dist/solid/solid.js +10 -0
  407. package/dist/spin-element.d.ts +13 -0
  408. package/dist/spin-element.js +38 -0
  409. package/dist/splitter/examples/basic.html +22 -0
  410. package/dist/splitter/examples/nested.html +41 -0
  411. package/dist/splitter/examples/threepanels.html +23 -0
  412. package/dist/splitter/examples/vertical.html +23 -0
  413. package/dist/splitter/splitter.events.d.ts +52 -0
  414. package/dist/splitter/splitter.events.js +1 -0
  415. package/dist/splitter/splitter.machine.d.ts +6 -0
  416. package/dist/splitter/splitter.machine.js +78 -0
  417. package/dist/splitter/splitter.presentation.d.ts +204 -0
  418. package/dist/splitter/splitter.presentation.js +443 -0
  419. package/dist/splitter/splitter.state.d.ts +48 -0
  420. package/dist/splitter/splitter.state.js +225 -0
  421. package/dist/splitter/splitter.transitions.d.ts +20 -0
  422. package/dist/splitter/splitter.transitions.js +132 -0
  423. package/dist/steps/examples/basic.html +57 -0
  424. package/dist/steps/examples/checkmarks.html +32 -0
  425. package/dist/steps/examples/content.html +45 -0
  426. package/dist/steps/examples/descriptions.html +26 -0
  427. package/dist/steps/examples/icons.html +26 -0
  428. package/dist/steps/examples/lines.html +26 -0
  429. package/dist/steps/examples/navigation.html +41 -0
  430. package/dist/steps/examples/onboarding.html +32 -0
  431. package/dist/steps/examples/progress.html +47 -0
  432. package/dist/steps/examples/segmented.html +40 -0
  433. package/dist/steps/examples/vertical.html +58 -0
  434. package/dist/steps/examples/verticallabels.html +27 -0
  435. package/dist/steps/examples/verticalnavigation.html +36 -0
  436. package/dist/steps/steps.events.d.ts +27 -0
  437. package/dist/steps/steps.events.js +1 -0
  438. package/dist/steps/steps.machine.d.ts +6 -0
  439. package/dist/steps/steps.machine.js +36 -0
  440. package/dist/steps/steps.presentation.d.ts +177 -0
  441. package/dist/steps/steps.presentation.js +248 -0
  442. package/dist/steps/steps.state.d.ts +39 -0
  443. package/dist/steps/steps.state.js +47 -0
  444. package/dist/steps/steps.transitions.d.ts +15 -0
  445. package/dist/steps/steps.transitions.js +39 -0
  446. package/dist/tabs/examples/basic.html +41 -0
  447. package/dist/tabs/examples/dashboard.html +116 -0
  448. package/dist/tabs/examples/ghost.html +28 -0
  449. package/dist/tabs/examples/icon-above.html +50 -0
  450. package/dist/tabs/examples/icon-only.html +37 -0
  451. package/dist/tabs/examples/outline-with-icons.html +50 -0
  452. package/dist/tabs/examples/outline.html +29 -0
  453. package/dist/tabs/examples/pills.html +40 -0
  454. package/dist/tabs/examples/project.html +87 -0
  455. package/dist/tabs/examples/settings.html +100 -0
  456. package/dist/tabs/examples/stack-with-icons.html +51 -0
  457. package/dist/tabs/examples/stack.html +28 -0
  458. package/dist/tabs/examples/underline.html +41 -0
  459. package/dist/tabs/examples/vertical-ghost.html +44 -0
  460. package/dist/tabs/examples/vertical-icons.html +44 -0
  461. package/dist/tabs/examples/vertical-underline.html +45 -0
  462. package/dist/tabs/examples/vertical-with-icons.html +53 -0
  463. package/dist/tabs/examples/vertical.html +42 -0
  464. package/dist/tabs/examples/with-badges.html +43 -0
  465. package/dist/tabs/examples/with-icons.html +42 -0
  466. package/dist/tabs/tabs.events.d.ts +19 -0
  467. package/dist/tabs/tabs.events.js +1 -0
  468. package/dist/tabs/tabs.machine.d.ts +5 -0
  469. package/dist/tabs/tabs.machine.js +54 -0
  470. package/dist/tabs/tabs.presentation.d.ts +83 -0
  471. package/dist/tabs/tabs.presentation.js +94 -0
  472. package/dist/tabs/tabs.state.d.ts +61 -0
  473. package/dist/tabs/tabs.state.js +53 -0
  474. package/dist/tabs/tabs.transitions.d.ts +8 -0
  475. package/dist/tabs/tabs.transitions.js +6 -0
  476. package/dist/tags-input/examples/basic.html +43 -0
  477. package/dist/tags-input/examples/with-combobox.html +64 -0
  478. package/dist/tags-input/tags.events.d.ts +77 -0
  479. package/dist/tags-input/tags.events.js +1 -0
  480. package/dist/tags-input/tags.machine.d.ts +6 -0
  481. package/dist/tags-input/tags.machine.js +311 -0
  482. package/dist/tags-input/tags.presentation.d.ts +376 -0
  483. package/dist/tags-input/tags.presentation.js +782 -0
  484. package/dist/tags-input/tags.state.d.ts +109 -0
  485. package/dist/tags-input/tags.state.js +111 -0
  486. package/dist/tags-input/tags.transitions.d.ts +23 -0
  487. package/dist/tags-input/tags.transitions.js +101 -0
  488. package/dist/theme-picker/examples/basic.html +52 -0
  489. package/dist/theme-picker/examples/cards.html +32 -0
  490. package/dist/theme-picker/examples/compact.html +42 -0
  491. package/dist/theme-picker/examples/swatches.html +31 -0
  492. package/dist/theme-picker/theme-picker.events.d.ts +32 -0
  493. package/dist/theme-picker/theme-picker.events.js +1 -0
  494. package/dist/theme-picker/theme-picker.machine.d.ts +5 -0
  495. package/dist/theme-picker/theme-picker.machine.js +65 -0
  496. package/dist/theme-picker/theme-picker.presentation.d.ts +198 -0
  497. package/dist/theme-picker/theme-picker.presentation.js +306 -0
  498. package/dist/theme-picker/theme-picker.state.d.ts +40 -0
  499. package/dist/theme-picker/theme-picker.state.js +108 -0
  500. package/dist/theme-picker/theme-picker.transitions.d.ts +17 -0
  501. package/dist/theme-picker/theme-picker.transitions.js +62 -0
  502. package/dist/timer/examples/basic.html +36 -0
  503. package/dist/timer/examples/card.html +45 -0
  504. package/dist/timer/examples/compact.html +32 -0
  505. package/dist/timer/examples/countdown.html +45 -0
  506. package/dist/timer/examples/labels.html +43 -0
  507. package/dist/timer/examples/large.html +38 -0
  508. package/dist/timer/examples/minimal.html +21 -0
  509. package/dist/timer/examples/pomodoro.html +45 -0
  510. package/dist/timer/examples/workout.html +47 -0
  511. package/dist/timer/timer.events.d.ts +18 -0
  512. package/dist/timer/timer.events.js +1 -0
  513. package/dist/timer/timer.machine.d.ts +5 -0
  514. package/dist/timer/timer.machine.js +50 -0
  515. package/dist/timer/timer.presentation.d.ts +248 -0
  516. package/dist/timer/timer.presentation.js +265 -0
  517. package/dist/timer/timer.state.d.ts +29 -0
  518. package/dist/timer/timer.state.js +64 -0
  519. package/dist/timer/timer.transitions.d.ts +11 -0
  520. package/dist/timer/timer.transitions.js +35 -0
  521. package/dist/toast/examples/action.html +40 -0
  522. package/dist/toast/examples/basic.html +37 -0
  523. package/dist/toast/examples/bottomcenter.html +37 -0
  524. package/dist/toast/examples/bottomleft.html +37 -0
  525. package/dist/toast/examples/bottomright.html +37 -0
  526. package/dist/toast/examples/duration.html +36 -0
  527. package/dist/toast/examples/promise.html +44 -0
  528. package/dist/toast/examples/topcenter.html +37 -0
  529. package/dist/toast/examples/topleft.html +37 -0
  530. package/dist/toast/examples/topright.html +37 -0
  531. package/dist/toast/examples/types.html +47 -0
  532. package/dist/toast/examples/updatable.html +8 -0
  533. package/dist/toast/toast.events.d.ts +60 -0
  534. package/dist/toast/toast.events.js +1 -0
  535. package/dist/toast/toast.machine.d.ts +6 -0
  536. package/dist/toast/toast.machine.js +97 -0
  537. package/dist/toast/toast.presentation.d.ts +284 -0
  538. package/dist/toast/toast.presentation.js +532 -0
  539. package/dist/toast/toast.state.d.ts +65 -0
  540. package/dist/toast/toast.state.js +88 -0
  541. package/dist/toast/toast.transitions.d.ts +24 -0
  542. package/dist/toast/toast.transitions.js +85 -0
  543. package/dist/toggle-group/examples/basic.html +25 -0
  544. package/dist/toggle-group/examples/ghost.html +22 -0
  545. package/dist/toggle-group/examples/icons.html +25 -0
  546. package/dist/toggle-group/examples/multiple.html +14 -0
  547. package/dist/toggle-group/examples/outline.html +25 -0
  548. package/dist/toggle-group/examples/toolbar.html +25 -0
  549. package/dist/toggle-group/toggle-group.events.d.ts +45 -0
  550. package/dist/toggle-group/toggle-group.events.js +1 -0
  551. package/dist/toggle-group/toggle-group.machine.d.ts +5 -0
  552. package/dist/toggle-group/toggle-group.machine.js +65 -0
  553. package/dist/toggle-group/toggle-group.presentation.d.ts +112 -0
  554. package/dist/toggle-group/toggle-group.presentation.js +217 -0
  555. package/dist/toggle-group/toggle-group.state.d.ts +45 -0
  556. package/dist/toggle-group/toggle-group.state.js +67 -0
  557. package/dist/toggle-group/toggle-group.transitions.d.ts +10 -0
  558. package/dist/toggle-group/toggle-group.transitions.js +9 -0
  559. package/dist/tooltip/examples/basic.html +13 -0
  560. package/dist/tooltip/examples/metrics.html +30 -0
  561. package/dist/tooltip/examples/positioning.html +26 -0
  562. package/dist/tooltip/examples/status.html +33 -0
  563. package/dist/tooltip/examples/video.html +22 -0
  564. package/dist/tooltip/examples/with-arrow.html +14 -0
  565. package/dist/tooltip/tooltip.controller-def.d.ts +42 -0
  566. package/dist/tooltip/tooltip.controller-def.js +110 -0
  567. package/dist/tour/examples/basic.html +67 -0
  568. package/dist/tour/tour.events.d.ts +32 -0
  569. package/dist/tour/tour.events.js +1 -0
  570. package/dist/tour/tour.machine.d.ts +5 -0
  571. package/dist/tour/tour.machine.js +77 -0
  572. package/dist/tour/tour.presentation.d.ts +260 -0
  573. package/dist/tour/tour.presentation.js +272 -0
  574. package/dist/tour/tour.state.d.ts +43 -0
  575. package/dist/tour/tour.state.js +60 -0
  576. package/dist/tour/tour.transitions.d.ts +16 -0
  577. package/dist/tour/tour.transitions.js +32 -0
  578. package/dist/tree-view/examples/basic.html +47 -0
  579. package/dist/tree-view/examples/loading.html +57 -0
  580. package/dist/tree-view/tree-view.events.d.ts +67 -0
  581. package/dist/tree-view/tree-view.events.js +1 -0
  582. package/dist/tree-view/tree-view.machine.d.ts +6 -0
  583. package/dist/tree-view/tree-view.machine.js +86 -0
  584. package/dist/tree-view/tree-view.presentation.d.ts +254 -0
  585. package/dist/tree-view/tree-view.presentation.js +515 -0
  586. package/dist/tree-view/tree-view.state.d.ts +54 -0
  587. package/dist/tree-view/tree-view.state.js +61 -0
  588. package/dist/tree-view/tree-view.transitions.d.ts +30 -0
  589. package/dist/tree-view/tree-view.transitions.js +107 -0
  590. package/package.json +245 -4
@@ -0,0 +1,73 @@
1
+ import { parseKeys, rowsOf } from "./listbox.state.js";
2
+ // src/listbox/listbox.transitions.ts
3
+ const orderOf = (ctx) => rowsOf(ctx.items).map((row) => row.value);
4
+ const select = (ctx, value, metaKey) => {
5
+ if (!orderOf(ctx).includes(value)) return ctx.value;
6
+ if (!ctx.multiple) return [value];
7
+ if (metaKey) return ctx.value.includes(value) ? ctx.value.filter((v) => v !== value) : [...ctx.value, value];
8
+ if (ctx.selectionBehavior === "clear") return [value];
9
+ if (ctx.selectionBehavior === "preserve") return ctx.value.includes(value) ? ctx.value : [...ctx.value, value];
10
+ return [value];
11
+ };
12
+ const extendSelection = (ctx, anchorValue, value) => {
13
+ const indexOf = (v) => orderOf(ctx).indexOf(v);
14
+ const anchor = indexOf(anchorValue);
15
+ const end = indexOf(value);
16
+ if (anchor < 0 || end < 0) return ctx.value;
17
+ const [from, to] = anchor < end ? [anchor, end] : [end, anchor];
18
+ return orderOf(ctx).slice(from, to + 1);
19
+ };
20
+ const search = (ctx, key) => {
21
+ const order = orderOf(ctx);
22
+ const labels = Object.fromEntries(rowsOf(ctx.items).map((row) => [row.value, row.label]));
23
+ const needle = key.toLowerCase();
24
+ const start = ctx.highlightedValue === null ? 0 : order.indexOf(ctx.highlightedValue) + 1;
25
+ const rotated = [...order.slice(start), ...order.slice(0, start)];
26
+ for (const value of rotated) if ((labels[value] ?? value).toLowerCase().startsWith(needle)) return value;
27
+ return null;
28
+ };
29
+ const setFocused = () => ({ focused: true });
30
+ const clearHighlightedValue = () => ({ highlightedValue: null });
31
+ const setHighlightedItem = (ctx, event) => {
32
+ const value = event.value;
33
+ if (typeof value !== "string") return {};
34
+ return orderOf(ctx).includes(value) ? { highlightedValue: value } : {};
35
+ };
36
+ const syncSelectedItems = (ctx) => ({
37
+ value: ctx.value.filter((v) => orderOf(ctx).includes(v)),
38
+ highlightedValue: ctx.highlightedValue !== null && orderOf(ctx).includes(ctx.highlightedValue) ? ctx.highlightedValue : null
39
+ });
40
+ const setHighlightedValue = (ctx, event) => {
41
+ const raw = event.highlightedValue !== void 0 ? event.highlightedValue : event.value;
42
+ const value = typeof raw === "string" ? raw : null;
43
+ if (value === null || !orderOf(ctx).includes(value)) return {};
44
+ return { highlightedValue: value };
45
+ };
46
+ const selectItem = (ctx, event) => ({ value: select(ctx, event.value, false) });
47
+ const clearItem = (ctx, event) => ({ value: ctx.value.filter((v) => v !== event.value) });
48
+ const setValue = (ctx, event) => ({ value: parseKeys(event.value).filter((v) => orderOf(ctx).includes(v)) });
49
+ const clearValue = () => ({ value: [] });
50
+ const itemClickInner = (ctx, event) => {
51
+ const value = event.value ?? ctx.highlightedValue;
52
+ if (value === null || value === void 0 || !orderOf(ctx).includes(value)) return {};
53
+ if (event.shiftKey === true && ctx.multiple && event.anchorValue !== void 0) return { value: extendSelection(ctx, event.anchorValue, value) };
54
+ return { value: select(ctx, value, event.metaKey === true) };
55
+ };
56
+ const contentFocusAssigns = (ctx) => {
57
+ if (ctx.value.length > 0 || ctx.highlightedValue !== null) return [setFocused()];
58
+ return [setFocused(), { highlightedValue: orderOf(ctx)[0] ?? null }];
59
+ };
60
+ const typeaheadInner = (ctx, event) => {
61
+ const found = search(ctx, event.key);
62
+ return found === null ? {} : { highlightedValue: found };
63
+ };
64
+ const pointerMove = (ctx, event) => orderOf(ctx).includes(event.value) ? { highlightedValue: event.value } : {};
65
+ const navigateInner = (ctx, event) => {
66
+ if (!orderOf(ctx).includes(event.value)) return {};
67
+ if (event.shiftKey === true && ctx.multiple && event.anchorValue !== void 0) return { value: extendSelection(ctx, event.anchorValue, event.value) };
68
+ if (ctx.selectOnHighlight) return { value: [event.value] };
69
+ return {};
70
+ };
71
+ export { clearHighlightedValue, clearItem, clearValue, contentFocusAssigns, itemClickInner, navigateInner, pointerMove, selectItem, setFocused, setHighlightedItem, setHighlightedValue, setValue, syncSelectedItems, typeaheadInner };
72
+
73
+ //# sourceMappingURL=listbox.transitions.js.map
@@ -0,0 +1,75 @@
1
+ <script lang="ts">
2
+ import { menu } from "../menu.presentation.js";
3
+
4
+ const machine = menu({
5
+ items: [{ "value": "new", "label": "New release", "shortcut": "Ctrl+N" }, {
6
+ "value": "open",
7
+ "label": "Open…",
8
+ "shortcut": "Ctrl+O",
9
+ }, { "value": "promote", "label": "Promote to production", "shortcut": "Ctrl+S" }],
10
+ });
11
+ </script>
12
+ <div class="relative inline-block">
13
+ <div class="relative" {...machine.getContextTriggerProps()}>
14
+ <button
15
+ class="secondary s-sm inline-flex items-center gap-2"
16
+ {...machine.getTriggerProps()}>
17
+ <span class="truncate">Release</span>
18
+ <span aria-hidden="true"
19
+ class={["text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-180": machine.isOpen }]}
20
+ {...machine.getTriggerIndicatorProps()}><span class="inline-block i-lucide-chevron-down text-xs" aria-hidden="true"></span></span>
21
+ </button>
22
+ </div>
23
+ <div {...machine.getPositionerProps()}>
24
+ <panel {...machine.getContentProps()}>
25
+ <template for={machine.getBlocks()} as={block} key={block.id}>
26
+ <div class="py-1" {...machine.getItemGroupProps(block)}>
27
+ <span show={block.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
28
+ {...machine.getItemGroupLabelProps(block)}>{block.label}</span>
29
+ <template for={machine.getRows(block)} as={row} key={row.value}>
30
+ <div
31
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": row.disabled }]}
32
+ {...machine.getItemProps(row)}>
33
+ <span class="min-w-0 flex-1 truncate"
34
+ {...machine.getItemTextProps(row)}>{row.label}</span>
35
+ <span class="shrink-0 text-xs text-text-muted"
36
+ {...machine.getItemShortcutProps(row)}>{row.shortcut}</span>
37
+ <span aria-hidden="true"
38
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": row.checked }]}
39
+ {...machine.getItemIndicatorProps(row)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
40
+ <span aria-hidden="true"
41
+ class={["shrink-0 text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-90": machine.openSubmenu === row.value }]}
42
+ {...machine.getItemSubmenuIndicatorProps(row)}><span class="inline-block i-lucide-chevron-right text-xs" aria-hidden="true"></span></span>
43
+ <panel show={machine.openSubmenu === row.value}
44
+ {...machine.getSubmenuContentProps(row)}>
45
+ <template for={machine.getSubmenuBlocks(row)} as={sub} key={sub.id}>
46
+ <div class="py-1" {...machine.getItemGroupProps(sub)}>
47
+ <span show={sub.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
48
+ {...machine.getItemGroupLabelProps(sub)}>{sub.label}</span>
49
+ <template for={machine.getRows(sub)} as={child} key={child.value}>
50
+ <div
51
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": child.disabled }]}
52
+ {...machine.getSubmenuItemProps(child)}>
53
+ <span class="min-w-0 flex-1 truncate"
54
+ {...machine.getItemTextProps(child)}>{child.label}</span>
55
+ <span class="shrink-0 text-xs text-text-muted"
56
+ {...machine.getItemShortcutProps(child)}>{child.shortcut}</span>
57
+ <span aria-hidden="true"
58
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": child.checked }]}
59
+ {...machine.getItemIndicatorProps(child)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
60
+ </div>
61
+ </template>
62
+ </div>
63
+ <hr show={sub.separator}
64
+ {...machine.getSeparatorProps(sub)} />
65
+ </template>
66
+ </panel>
67
+ </div>
68
+ </template>
69
+ </div>
70
+ <hr show={block.separator}
71
+ {...machine.getSeparatorProps(block)} />
72
+ </template>
73
+ </panel>
74
+ </div>
75
+ </div>
@@ -0,0 +1,74 @@
1
+ <script lang="ts">
2
+ import { menu } from "../menu.presentation.js";
3
+
4
+ const machine = menu({
5
+ items: [
6
+ { value: "url", label: "Copy deploy URL" },
7
+ { value: "logs", label: "View logs" },
8
+ { value: "rollback", label: "Roll back" },
9
+ { separator: true },
10
+ { value: "delete", label: "Delete deploy", disabled: true },
11
+ { separator: true },
12
+ { value: "settings", label: "Deploy settings" },
13
+ ],
14
+ });
15
+ </script>
16
+ <div class="relative inline-block">
17
+ <div
18
+ class="flex items-center justify-center w-64 h-[8rem] rounded-lg border border-solid border-border bg-surface-raised p-4 text-center text-sm text-text-muted cursor-context-menu"
19
+ {...machine.getContextTriggerProps()}>
20
+ Deploy #4821 · v4.12.0 — right-click for actions
21
+ </div>
22
+ <div {...machine.getPositionerProps()}>
23
+ <panel {...machine.getContentProps()}>
24
+ <template for={machine.getBlocks()} as={block} key={block.id}>
25
+ <div class="py-1" {...machine.getItemGroupProps(block)}>
26
+ <span show={block.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
27
+ {...machine.getItemGroupLabelProps(block)}>{block.label}</span>
28
+ <template for={machine.getRows(block)} as={row} key={row.value}>
29
+ <div
30
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": row.disabled }]}
31
+ {...machine.getItemProps(row)}>
32
+ <span class="min-w-0 flex-1 truncate"
33
+ {...machine.getItemTextProps(row)}>{row.label}</span>
34
+ <span class="shrink-0 text-xs text-text-muted"
35
+ {...machine.getItemShortcutProps(row)}>{row.shortcut}</span>
36
+ <span aria-hidden="true"
37
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": row.checked }]}
38
+ {...machine.getItemIndicatorProps(row)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
39
+ <span aria-hidden="true"
40
+ class={["shrink-0 text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-90": machine.openSubmenu === row.value }]}
41
+ {...machine.getItemSubmenuIndicatorProps(row)}><span class="inline-block i-lucide-chevron-right text-xs" aria-hidden="true"></span></span>
42
+ <panel show={machine.openSubmenu === row.value}
43
+ {...machine.getSubmenuContentProps(row)}>
44
+ <template for={machine.getSubmenuBlocks(row)} as={sub} key={sub.id}>
45
+ <div class="py-1" {...machine.getItemGroupProps(sub)}>
46
+ <span show={sub.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
47
+ {...machine.getItemGroupLabelProps(sub)}>{sub.label}</span>
48
+ <template for={machine.getRows(sub)} as={child} key={child.value}>
49
+ <div
50
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": child.disabled }]}
51
+ {...machine.getSubmenuItemProps(child)}>
52
+ <span class="min-w-0 flex-1 truncate"
53
+ {...machine.getItemTextProps(child)}>{child.label}</span>
54
+ <span class="shrink-0 text-xs text-text-muted"
55
+ {...machine.getItemShortcutProps(child)}>{child.shortcut}</span>
56
+ <span aria-hidden="true"
57
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": child.checked }]}
58
+ {...machine.getItemIndicatorProps(child)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
59
+ </div>
60
+ </template>
61
+ </div>
62
+ <hr show={sub.separator}
63
+ {...machine.getSeparatorProps(sub)} />
64
+ </template>
65
+ </panel>
66
+ </div>
67
+ </template>
68
+ </div>
69
+ <hr show={block.separator}
70
+ {...machine.getSeparatorProps(block)} />
71
+ </template>
72
+ </panel>
73
+ </div>
74
+ </div>
@@ -0,0 +1,88 @@
1
+ <script lang="ts">
2
+ import { menu } from "../menu.presentation.js";
3
+
4
+ const machine = menu({
5
+ items: [
6
+ {
7
+ group: "Release",
8
+ items: [
9
+ { value: "new", label: "New release" },
10
+ { value: "promote", label: "Promote" },
11
+ { value: "rollback", label: "Roll back" },
12
+ ],
13
+ },
14
+ {
15
+ group: "Instances",
16
+ items: [
17
+ { value: "restart", label: "Restart" },
18
+ { value: "drain", label: "Drain" },
19
+ { value: "logs", label: "View logs" },
20
+ ],
21
+ },
22
+ ],
23
+ });
24
+ </script>
25
+ <div class="relative inline-block">
26
+ <div class="relative" {...machine.getContextTriggerProps()}>
27
+ <button
28
+ class="secondary s-sm inline-flex items-center gap-2"
29
+ {...machine.getTriggerProps()}>
30
+ <span class="truncate">Deploy</span>
31
+ <span aria-hidden="true"
32
+ class={["text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-180": machine.isOpen }]}
33
+ {...machine.getTriggerIndicatorProps()}><span class="inline-block i-lucide-chevron-down text-xs" aria-hidden="true"></span></span>
34
+ </button>
35
+ </div>
36
+ <div {...machine.getPositionerProps()}>
37
+ <panel {...machine.getContentProps()}>
38
+ <template for={machine.getBlocks()} as={block} key={block.id}>
39
+ <div class="py-1" {...machine.getItemGroupProps(block)}>
40
+ <span show={block.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
41
+ {...machine.getItemGroupLabelProps(block)}>{block.label}</span>
42
+ <template for={machine.getRows(block)} as={row} key={row.value}>
43
+ <div
44
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": row.disabled }]}
45
+ {...machine.getItemProps(row)}>
46
+ <span class="min-w-0 flex-1 truncate"
47
+ {...machine.getItemTextProps(row)}>{row.label}</span>
48
+ <span class="shrink-0 text-xs text-text-muted"
49
+ {...machine.getItemShortcutProps(row)}>{row.shortcut}</span>
50
+ <span aria-hidden="true"
51
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": row.checked }]}
52
+ {...machine.getItemIndicatorProps(row)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
53
+ <span aria-hidden="true"
54
+ class={["shrink-0 text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-90": machine.openSubmenu === row.value }]}
55
+ {...machine.getItemSubmenuIndicatorProps(row)}><span class="inline-block i-lucide-chevron-right text-xs" aria-hidden="true"></span></span>
56
+ <panel show={machine.openSubmenu === row.value}
57
+ {...machine.getSubmenuContentProps(row)}>
58
+ <template for={machine.getSubmenuBlocks(row)} as={sub} key={sub.id}>
59
+ <div class="py-1" {...machine.getItemGroupProps(sub)}>
60
+ <span show={sub.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
61
+ {...machine.getItemGroupLabelProps(sub)}>{sub.label}</span>
62
+ <template for={machine.getRows(sub)} as={child} key={child.value}>
63
+ <div
64
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": child.disabled }]}
65
+ {...machine.getSubmenuItemProps(child)}>
66
+ <span class="min-w-0 flex-1 truncate"
67
+ {...machine.getItemTextProps(child)}>{child.label}</span>
68
+ <span class="shrink-0 text-xs text-text-muted"
69
+ {...machine.getItemShortcutProps(child)}>{child.shortcut}</span>
70
+ <span aria-hidden="true"
71
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": child.checked }]}
72
+ {...machine.getItemIndicatorProps(child)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
73
+ </div>
74
+ </template>
75
+ </div>
76
+ <hr show={sub.separator}
77
+ {...machine.getSeparatorProps(sub)} />
78
+ </template>
79
+ </panel>
80
+ </div>
81
+ </template>
82
+ </div>
83
+ <hr show={block.separator}
84
+ {...machine.getSeparatorProps(block)} />
85
+ </template>
86
+ </panel>
87
+ </div>
88
+ </div>
@@ -0,0 +1,80 @@
1
+ <script lang="ts">
2
+ import { menu } from "../menu.presentation.js";
3
+
4
+ const machine = menu({
5
+ items: [
6
+ { "value": "deploy", "label": "Deploy now" },
7
+ { "value": "logs", "label": "View logs" },
8
+ { "value": "rollback", "label": "Roll back" },
9
+ { "value": "copy", "label": "Copy deploy URL" },
10
+ { "value": "pause", "label": "Pause rollout" },
11
+ { "value": "delete", "label": "Delete deploy" },
12
+ ],
13
+ });
14
+ </script>
15
+ <div class="relative inline-block">
16
+ <div class="relative" {...machine.getContextTriggerProps()}>
17
+ <button
18
+ class="secondary s-sm inline-flex items-center gap-2"
19
+ {...machine.getTriggerProps()}>
20
+ <span class="truncate">Deploy</span>
21
+ <span aria-hidden="true"
22
+ class={["text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-180": machine.isOpen }]}
23
+ {...machine.getTriggerIndicatorProps()}><span class="inline-block i-lucide-chevron-down text-xs" aria-hidden="true"></span></span>
24
+ </button>
25
+ </div>
26
+ <div {...machine.getPositionerProps()}>
27
+ <panel {...machine.getContentProps()}>
28
+ <template for={machine.getBlocks()} as={block} key={block.id}>
29
+ <div class="py-1" {...machine.getItemGroupProps(block)}>
30
+ <span show={block.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
31
+ {...machine.getItemGroupLabelProps(block)}>{block.label}</span>
32
+ <template for={machine.getRows(block)} as={row} key={row.value}>
33
+ <div
34
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": row.disabled }]}
35
+ {...machine.getItemProps(row)}>
36
+ <span class="shrink-0 text-xs text-text-muted"
37
+ aria-hidden="true"><span class="inline-block i-lucide-rocket text-xs" aria-hidden="true" show={row.value === "deploy"}></span><span class="inline-block i-lucide-scroll-text text-xs" aria-hidden="true" show={row.value === "logs"}></span><span class="inline-block i-lucide-undo-2 text-xs" aria-hidden="true" show={row.value === "rollback"}></span><span class="inline-block i-lucide-copy text-xs" aria-hidden="true" show={row.value === "copy"}></span><span class="inline-block i-lucide-pause text-xs" aria-hidden="true" show={row.value === "pause"}></span><span class="inline-block i-lucide-trash-2 text-xs" aria-hidden="true" show={row.value === "delete"}></span></span>
38
+ <span class="min-w-0 flex-1 truncate"
39
+ {...machine.getItemTextProps(row)}>{row.label}</span>
40
+ <span class="shrink-0 text-xs text-text-muted"
41
+ {...machine.getItemShortcutProps(row)}>{row.shortcut}</span>
42
+ <span aria-hidden="true"
43
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": row.checked }]}
44
+ {...machine.getItemIndicatorProps(row)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
45
+ <span aria-hidden="true"
46
+ class={["shrink-0 text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-90": machine.openSubmenu === row.value }]}
47
+ {...machine.getItemSubmenuIndicatorProps(row)}><span class="inline-block i-lucide-chevron-right text-xs" aria-hidden="true"></span></span>
48
+ <panel show={machine.openSubmenu === row.value}
49
+ {...machine.getSubmenuContentProps(row)}>
50
+ <template for={machine.getSubmenuBlocks(row)} as={sub} key={sub.id}>
51
+ <div class="py-1" {...machine.getItemGroupProps(sub)}>
52
+ <span show={sub.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
53
+ {...machine.getItemGroupLabelProps(sub)}>{sub.label}</span>
54
+ <template for={machine.getRows(sub)} as={child} key={child.value}>
55
+ <div
56
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": child.disabled }]}
57
+ {...machine.getSubmenuItemProps(child)}>
58
+ <span class="min-w-0 flex-1 truncate"
59
+ {...machine.getItemTextProps(child)}>{child.label}</span>
60
+ <span class="shrink-0 text-xs text-text-muted"
61
+ {...machine.getItemShortcutProps(child)}>{child.shortcut}</span>
62
+ <span aria-hidden="true"
63
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": child.checked }]}
64
+ {...machine.getItemIndicatorProps(child)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
65
+ </div>
66
+ </template>
67
+ </div>
68
+ <hr show={sub.separator}
69
+ {...machine.getSeparatorProps(sub)} />
70
+ </template>
71
+ </panel>
72
+ </div>
73
+ </template>
74
+ </div>
75
+ <hr show={block.separator}
76
+ {...machine.getSeparatorProps(block)} />
77
+ </template>
78
+ </panel>
79
+ </div>
80
+ </div>
@@ -0,0 +1,83 @@
1
+ <script lang="ts">
2
+ import { menu } from "../menu.presentation.js";
3
+
4
+ const machine = menu({
5
+ items: [
6
+ { value: "new", label: "New release" },
7
+ { value: "promote", label: "Promote" },
8
+ {
9
+ value: "notify",
10
+ label: "Notify",
11
+ children: [
12
+ { value: "oncall", label: "Page on-call" },
13
+ { value: "team", label: "Team channel" },
14
+ { value: "status", label: "Status page" },
15
+ ],
16
+ },
17
+ ],
18
+ });
19
+ </script>
20
+ <div class="relative inline-block">
21
+ <div class="relative" {...machine.getContextTriggerProps()}>
22
+ <button
23
+ class="secondary s-sm inline-flex items-center gap-2"
24
+ {...machine.getTriggerProps()}>
25
+ <span class="truncate">Release</span>
26
+ <span aria-hidden="true"
27
+ class={["text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-180": machine.isOpen }]}
28
+ {...machine.getTriggerIndicatorProps()}><span class="inline-block i-lucide-chevron-down text-xs" aria-hidden="true"></span></span>
29
+ </button>
30
+ </div>
31
+ <div {...machine.getPositionerProps()}>
32
+ <panel {...machine.getContentProps()}>
33
+ <template for={machine.getBlocks()} as={block} key={block.id}>
34
+ <div class="py-1" {...machine.getItemGroupProps(block)}>
35
+ <span show={block.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
36
+ {...machine.getItemGroupLabelProps(block)}>{block.label}</span>
37
+ <template for={machine.getRows(block)} as={row} key={row.value}>
38
+ <div
39
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": row.disabled }]}
40
+ {...machine.getItemProps(row)}>
41
+ <span class="min-w-0 flex-1 truncate"
42
+ {...machine.getItemTextProps(row)}>{row.label}</span>
43
+ <span class="shrink-0 text-xs text-text-muted"
44
+ {...machine.getItemShortcutProps(row)}>{row.shortcut}</span>
45
+ <span aria-hidden="true"
46
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": row.checked }]}
47
+ {...machine.getItemIndicatorProps(row)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
48
+ <span aria-hidden="true"
49
+ class={["shrink-0 text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-90": machine.openSubmenu === row.value }]}
50
+ {...machine.getItemSubmenuIndicatorProps(row)}><span class="inline-block i-lucide-chevron-right text-xs" aria-hidden="true"></span></span>
51
+ <panel show={machine.openSubmenu === row.value}
52
+ {...machine.getSubmenuContentProps(row)}>
53
+ <template for={machine.getSubmenuBlocks(row)} as={sub} key={sub.id}>
54
+ <div class="py-1" {...machine.getItemGroupProps(sub)}>
55
+ <span show={sub.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
56
+ {...machine.getItemGroupLabelProps(sub)}>{sub.label}</span>
57
+ <template for={machine.getRows(sub)} as={child} key={child.value}>
58
+ <div
59
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": child.disabled }]}
60
+ {...machine.getSubmenuItemProps(child)}>
61
+ <span class="min-w-0 flex-1 truncate"
62
+ {...machine.getItemTextProps(child)}>{child.label}</span>
63
+ <span class="shrink-0 text-xs text-text-muted"
64
+ {...machine.getItemShortcutProps(child)}>{child.shortcut}</span>
65
+ <span aria-hidden="true"
66
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": child.checked }]}
67
+ {...machine.getItemIndicatorProps(child)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
68
+ </div>
69
+ </template>
70
+ </div>
71
+ <hr show={sub.separator}
72
+ {...machine.getSeparatorProps(sub)} />
73
+ </template>
74
+ </panel>
75
+ </div>
76
+ </template>
77
+ </div>
78
+ <hr show={block.separator}
79
+ {...machine.getSeparatorProps(block)} />
80
+ </template>
81
+ </panel>
82
+ </div>
83
+ </div>
@@ -0,0 +1,87 @@
1
+ <script lang="ts">
2
+ import { menu } from "../menu.presentation.js";
3
+
4
+ const machine = menu({
5
+ items: [
6
+ { value: "profile", label: "Profile" },
7
+ { value: "tokens", label: "API tokens" },
8
+ { value: "billing", label: "Billing" },
9
+ { separator: true },
10
+ { value: "help", label: "Help & Support" },
11
+ { separator: true },
12
+ { value: "logout", label: "Log out" },
13
+ ],
14
+ });
15
+ </script>
16
+ <div class="relative inline-block">
17
+ <div class="relative" {...machine.getContextTriggerProps()}>
18
+ <button
19
+ class="secondary s-sm inline-flex items-center gap-3"
20
+ {...machine.getTriggerProps()}>
21
+ <span aria-hidden="true"
22
+ class="grid h-6 w-6 shrink-0 place-items-center rounded-full bg-primary text-xs font-semibold text-on-primary">PR</span>
23
+ <span class="truncate">Priya Raman</span>
24
+ <span aria-hidden="true"
25
+ class={["text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-180": machine.isOpen }]}
26
+ {...machine.getTriggerIndicatorProps()}><span class="inline-block i-lucide-chevron-down text-xs" aria-hidden="true"></span></span>
27
+ </button>
28
+ </div>
29
+ <div {...machine.getPositionerProps()}>
30
+ <panel {...machine.getContentProps()}>
31
+ <div class="px-3 py-2 border-b border-solid border-border">
32
+ <div class="text-sm font-medium text-text">Priya Raman</div>
33
+ <div class="text-xs text-text-muted">priya@lodestar.dev</div>
34
+ </div>
35
+ <template for={machine.getBlocks()} as={block} key={block.id}>
36
+ <div class="py-1" {...machine.getItemGroupProps(block)}>
37
+ <span show={block.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
38
+ {...machine.getItemGroupLabelProps(block)}>{block.label}</span>
39
+ <template for={machine.getRows(block)} as={row} key={row.value}>
40
+ <div
41
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm transition-colors duration-fast cursor-default", { "opacity-50": row.disabled, "text-text": row.value !== "logout", "text-semantic-error": row.value === "logout" }]}
42
+ {...machine.getItemProps(row)}>
43
+ <span class="shrink-0 text-xs text-text-muted"
44
+ aria-hidden="true"><span class="inline-block i-lucide-circle-user-round text-xs" aria-hidden="true" show={row.value === "profile"}></span><span class="inline-block i-lucide-key-round text-xs" aria-hidden="true" show={row.value === "tokens"}></span><span class="inline-block i-lucide-credit-card text-xs" aria-hidden="true" show={row.value === "billing"}></span><span class="inline-block i-lucide-circle-question-mark text-xs" aria-hidden="true" show={row.value === "help"}></span><span class="inline-block i-lucide-log-out text-xs text-semantic-error" aria-hidden="true" show={row.value === "logout"}></span></span>
45
+ <span class="min-w-0 flex-1 truncate"
46
+ {...machine.getItemTextProps(row)}>{row.label}</span>
47
+ <span class="shrink-0 text-xs text-text-muted"
48
+ {...machine.getItemShortcutProps(row)}>{row.shortcut}</span>
49
+ <span aria-hidden="true"
50
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": row.checked }]}
51
+ {...machine.getItemIndicatorProps(row)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
52
+ <span aria-hidden="true"
53
+ class={["shrink-0 text-xs text-text-muted transition-transform duration-fast ease-decelerate", { "rotate-90": machine.openSubmenu === row.value }]}
54
+ {...machine.getItemSubmenuIndicatorProps(row)}><span class="inline-block i-lucide-chevron-right text-xs" aria-hidden="true"></span></span>
55
+ <panel show={machine.openSubmenu === row.value}
56
+ {...machine.getSubmenuContentProps(row)}>
57
+ <template for={machine.getSubmenuBlocks(row)} as={sub} key={sub.id}>
58
+ <div class="py-1" {...machine.getItemGroupProps(sub)}>
59
+ <span show={sub.label !== null} class="block px-2 pb-1 text-xs font-medium text-text-muted"
60
+ {...machine.getItemGroupLabelProps(sub)}>{sub.label}</span>
61
+ <template for={machine.getRows(sub)} as={child} key={child.value}>
62
+ <div
63
+ class={["bare relative flex items-center gap-2 rounded-md px-2 py-1 text-sm text-text transition-colors duration-fast cursor-default", { "opacity-50": child.disabled }]}
64
+ {...machine.getSubmenuItemProps(child)}>
65
+ <span class="min-w-0 flex-1 truncate"
66
+ {...machine.getItemTextProps(child)}>{child.label}</span>
67
+ <span class="shrink-0 text-xs text-text-muted"
68
+ {...machine.getItemShortcutProps(child)}>{child.shortcut}</span>
69
+ <span aria-hidden="true"
70
+ class={["shrink-0 text-primary transition-transform duration-fast ease-decelerate scale-50 opacity-0", { "scale-100 opacity-100": child.checked }]}
71
+ {...machine.getItemIndicatorProps(child)}><span class="inline-block i-lucide-check text-xs" aria-hidden="true"></span></span>
72
+ </div>
73
+ </template>
74
+ </div>
75
+ <hr show={sub.separator}
76
+ {...machine.getSeparatorProps(sub)} />
77
+ </template>
78
+ </panel>
79
+ </div>
80
+ </template>
81
+ </div>
82
+ <hr show={block.separator}
83
+ {...machine.getSeparatorProps(block)} />
84
+ </template>
85
+ </panel>
86
+ </div>
87
+ </div>
@@ -0,0 +1,42 @@
1
+ import { MenuEntry } from "./menu.state.js";
2
+ import { EventUnion } from "@spinjs/runtime/fsm";
3
+ export interface MenuEvents {
4
+ "OPEN": {};
5
+ "CLOSE": {};
6
+ "CONTROLLED_OPEN": {};
7
+ "CONTROLLED_CLOSE": {};
8
+ "TRIGGER_CLICK": {};
9
+ "CONTEXT_MENU": {
10
+ point: {
11
+ x: number;
12
+ y: number;
13
+ };
14
+ };
15
+ "HIGHLIGHT": {
16
+ value: string | null;
17
+ };
18
+ "SUBMENU_HIGHLIGHT": {
19
+ value: string | null;
20
+ };
21
+ "ENTRIES.SET": {
22
+ entries: readonly MenuEntry[];
23
+ };
24
+ "SUBMENU_OPEN": {
25
+ value: string;
26
+ };
27
+ "SUBMENU_CLOSE": {};
28
+ "ITEM_CLICK": {
29
+ value: string;
30
+ };
31
+ }
32
+ export type MenuEvent = EventUnion<MenuEvents>;
33
+ export interface MenuOpenChange {
34
+ readonly open: boolean;
35
+ }
36
+ export interface MenuSelect {
37
+ readonly value: string;
38
+ }
39
+ export interface MenuHighlightChange {
40
+ readonly highlightedValue: string | null;
41
+ }
42
+ //# sourceMappingURL=menu.events.d.ts.map
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { MenuArgs, MenuContext, MenuState } from "./menu.state.js";
2
+ import { MenuEvent, MenuEvents } from "./menu.events.js";
3
+ import { Machine, Service } from "@spinjs/runtime/fsm";
4
+ export type MenuService = Service<MenuContext, MenuEvent>;
5
+ export declare function menu(args: MenuArgs | undefined, authored: (name: string) => boolean): Machine<MenuContext, MenuEvents, MenuState>;
6
+ //# sourceMappingURL=menu.machine.d.ts.map