@mhmo91/schmancy 0.6.19 → 0.7.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 (407) hide show
  1. package/ai/menu.md +117 -186
  2. package/dist/ai/menu.md +117 -186
  3. package/dist/{animated-text-CgKXZOvy.cjs → animated-text-B8pXfnjg.cjs} +2 -2
  4. package/dist/{animated-text-CgKXZOvy.cjs.map → animated-text-B8pXfnjg.cjs.map} +1 -1
  5. package/dist/{animated-text-Df3UZBT2.js → animated-text-C7RzcmyV.js} +3 -3
  6. package/dist/{animated-text-Df3UZBT2.js.map → animated-text-C7RzcmyV.js.map} +1 -1
  7. package/dist/animated-text.cjs +1 -1
  8. package/dist/animated-text.js +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/{area.component-DXQff5kK.js → area.component-DfGcGjsN.js} +3 -3
  11. package/dist/{area.component-DXQff5kK.js.map → area.component-DfGcGjsN.js.map} +1 -1
  12. package/dist/{area.component-_AwKbrLf.cjs → area.component-TRIJcSoQ.cjs} +2 -2
  13. package/dist/{area.component-_AwKbrLf.cjs.map → area.component-TRIJcSoQ.cjs.map} +1 -1
  14. package/dist/area.js +1 -1
  15. package/dist/{autocomplete-DLzc6eqO.js → autocomplete-Bhv2JOnL.js} +4 -4
  16. package/dist/autocomplete-Bhv2JOnL.js.map +1 -0
  17. package/dist/{autocomplete-DEzGDw9s.cjs → autocomplete-Dio0lk_E.cjs} +2 -2
  18. package/dist/autocomplete-Dio0lk_E.cjs.map +1 -0
  19. package/dist/autocomplete.cjs +1 -1
  20. package/dist/autocomplete.js +1 -1
  21. package/dist/{avatar-YRXX1DQy.js → avatar-BCLeThlA.js} +51 -51
  22. package/dist/{avatar-YRXX1DQy.js.map → avatar-BCLeThlA.js.map} +1 -1
  23. package/dist/{avatar-B_Mf0HXa.cjs → avatar-DecX7RJw.cjs} +2 -2
  24. package/dist/{avatar-B_Mf0HXa.cjs.map → avatar-DecX7RJw.cjs.map} +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{boat-VzOnSD8z.cjs → boat-B3IhIJhy.cjs} +2 -2
  28. package/dist/{boat-VzOnSD8z.cjs.map → boat-B3IhIJhy.cjs.map} +1 -1
  29. package/dist/{boat-CWADeoFv.js → boat-DrAkyCAd.js} +3 -3
  30. package/dist/{boat-CWADeoFv.js.map → boat-DrAkyCAd.js.map} +1 -1
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/card.cjs +1 -1
  38. package/dist/card.js +1 -1
  39. package/dist/{checkbox-ZryxdmZz.js → checkbox-BKT1cZnv.js} +2 -2
  40. package/dist/checkbox-BKT1cZnv.js.map +1 -0
  41. package/dist/{checkbox-DClxbWbU.cjs → checkbox-C4CHTajr.cjs} +2 -2
  42. package/dist/checkbox-C4CHTajr.cjs.map +1 -0
  43. package/dist/checkbox.cjs +1 -1
  44. package/dist/checkbox.js +1 -1
  45. package/dist/chips.cjs +1 -1
  46. package/dist/chips.js +2 -2
  47. package/dist/code-highlight.cjs +1 -1
  48. package/dist/code-highlight.js +1 -1
  49. package/dist/{code-preview-BoYqlMxl.cjs → code-preview-CEbRCvUd.cjs} +2 -2
  50. package/dist/code-preview-CEbRCvUd.cjs.map +1 -0
  51. package/dist/{code-preview-Bn2K5K9h.js → code-preview-DzMETSJv.js} +2 -2
  52. package/dist/code-preview-DzMETSJv.js.map +1 -0
  53. package/dist/components.cjs +1 -1
  54. package/dist/components.js +1 -1
  55. package/dist/consume-5D1qfVWM.js.map +1 -1
  56. package/dist/consume-edta5ng5.cjs.map +1 -1
  57. package/dist/content-drawer.cjs +1 -1
  58. package/dist/content-drawer.js +1 -1
  59. package/dist/context-create-CA907mdD.cjs.map +1 -1
  60. package/dist/context-create-DCiujzV2.js.map +1 -1
  61. package/dist/{date-range-CCQsqKSy.js → date-range-B-5LtvhH.js} +3 -3
  62. package/dist/date-range-B-5LtvhH.js.map +1 -0
  63. package/dist/{date-range-B-rPnyst.cjs → date-range-B1PGOR7h.cjs} +2 -2
  64. package/dist/date-range-B1PGOR7h.cjs.map +1 -0
  65. package/dist/{date-range-inline-DO0Ps_QS.js → date-range-inline-D90CpK7z.js} +3 -3
  66. package/dist/{date-range-inline-DO0Ps_QS.js.map → date-range-inline-D90CpK7z.js.map} +1 -1
  67. package/dist/{date-range-inline-NACS06ev.cjs → date-range-inline-DLV7jB_x.cjs} +2 -2
  68. package/dist/{date-range-inline-NACS06ev.cjs.map → date-range-inline-DLV7jB_x.cjs.map} +1 -1
  69. package/dist/date-range-inline.cjs +1 -1
  70. package/dist/date-range-inline.js +1 -1
  71. package/dist/date-range.cjs +1 -1
  72. package/dist/date-range.js +1 -1
  73. package/dist/{delay-BaltOHAs.js → delay-D5RAR00M.js} +2 -2
  74. package/dist/delay-D5RAR00M.js.map +1 -0
  75. package/dist/{delay-DzqfMSBJ.cjs → delay-UAjkp-21.cjs} +2 -2
  76. package/dist/delay-UAjkp-21.cjs.map +1 -0
  77. package/dist/delay.cjs +1 -1
  78. package/dist/delay.js +1 -1
  79. package/dist/{details-Bic4ZKNZ.js → details-CiuixU2H.js} +2 -2
  80. package/dist/{details-Bic4ZKNZ.js.map → details-CiuixU2H.js.map} +1 -1
  81. package/dist/{details-DPSpg2dL.cjs → details-RHTdNCLS.cjs} +2 -2
  82. package/dist/{details-DPSpg2dL.cjs.map → details-RHTdNCLS.cjs.map} +1 -1
  83. package/dist/details.cjs +1 -1
  84. package/dist/details.js +1 -1
  85. package/dist/{dialog-content-CR4l1Yts.cjs → dialog-content-BF1xiYWw.cjs} +2 -2
  86. package/dist/{dialog-content-CR4l1Yts.cjs.map → dialog-content-BF1xiYWw.cjs.map} +1 -1
  87. package/dist/{dialog-content-CwsV3nWG.js → dialog-content-dtIrTHLU.js} +3 -3
  88. package/dist/{dialog-content-CwsV3nWG.js.map → dialog-content-dtIrTHLU.js.map} +1 -1
  89. package/dist/dialog.cjs +1 -1
  90. package/dist/dialog.js +1 -1
  91. package/dist/{divider-ChXDN5-E.js → divider-DcEB9uHV.js} +3 -3
  92. package/dist/{divider-ChXDN5-E.js.map → divider-DcEB9uHV.js.map} +1 -1
  93. package/dist/{divider-CpiE9MZW.cjs → divider-ZhcWRyc2.cjs} +2 -2
  94. package/dist/{divider-CpiE9MZW.cjs.map → divider-ZhcWRyc2.cjs.map} +1 -1
  95. package/dist/divider.cjs +1 -1
  96. package/dist/divider.js +1 -1
  97. package/dist/{dropdown-content-BmA6vuhB.js → dropdown-content-BoUnfAyz.js} +3 -3
  98. package/dist/{dropdown-content-BmA6vuhB.js.map → dropdown-content-BoUnfAyz.js.map} +1 -1
  99. package/dist/{dropdown-content-8I1uIUoF.cjs → dropdown-content-klaWLDI-.cjs} +2 -2
  100. package/dist/{dropdown-content-8I1uIUoF.cjs.map → dropdown-content-klaWLDI-.cjs.map} +1 -1
  101. package/dist/dropdown.cjs +1 -1
  102. package/dist/dropdown.js +1 -1
  103. package/dist/{email-recipients-Cl_-UNWo.cjs → email-recipients-DA2HLG8K.cjs} +2 -2
  104. package/dist/{email-recipients-Cl_-UNWo.cjs.map → email-recipients-DA2HLG8K.cjs.map} +1 -1
  105. package/dist/{email-recipients-Ew87bYRp.js → email-recipients-yN1Jcu9X.js} +6 -6
  106. package/dist/{email-recipients-Ew87bYRp.js.map → email-recipients-yN1Jcu9X.js.map} +1 -1
  107. package/dist/extra.cjs +1 -1
  108. package/dist/extra.js +1 -1
  109. package/dist/{flex-DsHnuUb7.cjs → flex-CYCtLC7W.cjs} +2 -2
  110. package/dist/{flex-DsHnuUb7.cjs.map → flex-CYCtLC7W.cjs.map} +1 -1
  111. package/dist/{flex-CW7oSqU1.js → flex-C_fGjgWC.js} +2 -2
  112. package/dist/{flex-CW7oSqU1.js.map → flex-C_fGjgWC.js.map} +1 -1
  113. package/dist/flow-D0e7hGXO.cjs.map +1 -1
  114. package/dist/flow-DXYqC9OA.js.map +1 -1
  115. package/dist/{form-DZ9l7TjO.cjs → form-CYBgxvdH.cjs} +2 -2
  116. package/dist/{form-DZ9l7TjO.cjs.map → form-CYBgxvdH.cjs.map} +1 -1
  117. package/dist/{form-C5d6gWUg.js → form-Dn3XWE7d.js} +2 -2
  118. package/dist/{form-C5d6gWUg.js.map → form-Dn3XWE7d.js.map} +1 -1
  119. package/dist/form.cjs +1 -1
  120. package/dist/form.js +1 -1
  121. package/dist/{formField.mixin-BW4RaqbT.cjs → formField.mixin-D_gQgJXC.cjs} +2 -2
  122. package/dist/{formField.mixin-BW4RaqbT.cjs.map → formField.mixin-D_gQgJXC.cjs.map} +1 -1
  123. package/dist/{formField.mixin-DpD9oPMR.js → formField.mixin-Ds2S1kRc.js} +2 -2
  124. package/dist/{formField.mixin-DpD9oPMR.js.map → formField.mixin-Ds2S1kRc.js.map} +1 -1
  125. package/dist/{icon-BATnNWHh.js → icon-Bw8hqRtQ.js} +2 -2
  126. package/dist/{icon-BATnNWHh.js.map → icon-Bw8hqRtQ.js.map} +1 -1
  127. package/dist/{icon-CV5KKSMK.cjs → icon-DYGsNRVu.cjs} +2 -2
  128. package/dist/{icon-CV5KKSMK.cjs.map → icon-DYGsNRVu.cjs.map} +1 -1
  129. package/dist/{icon-button-BCdwHPLZ.cjs → icon-button-BfjcTNKq.cjs} +2 -2
  130. package/dist/{icon-button-BCdwHPLZ.cjs.map → icon-button-BfjcTNKq.cjs.map} +1 -1
  131. package/dist/{icon-button-BCqgaB3e.js → icon-button-Cu-RShdY.js} +3 -3
  132. package/dist/{icon-button-BCqgaB3e.js.map → icon-button-Cu-RShdY.js.map} +1 -1
  133. package/dist/icons.cjs +1 -1
  134. package/dist/icons.js +1 -1
  135. package/dist/index-CCi1otmh.cjs.map +1 -1
  136. package/dist/index-CW6PhEkx.js.map +1 -1
  137. package/dist/index.cjs +1 -1
  138. package/dist/index.js +50 -50
  139. package/dist/{input-RPj2xLz4.cjs → input-D-YRT2vo.cjs} +2 -2
  140. package/dist/input-D-YRT2vo.cjs.map +1 -0
  141. package/dist/{input-BJvZX3nK.js → input-UlrGLoXt.js} +3 -3
  142. package/dist/input-UlrGLoXt.js.map +1 -0
  143. package/dist/{input-chip-CyvaAJiR.js → input-chip-BwEuJAV5.js} +2 -2
  144. package/dist/{input-chip-CyvaAJiR.js.map → input-chip-BwEuJAV5.js.map} +1 -1
  145. package/dist/{input-chip-CGilKpgN.cjs → input-chip-pho9bYvS.cjs} +2 -2
  146. package/dist/{input-chip-CGilKpgN.cjs.map → input-chip-pho9bYvS.cjs.map} +1 -1
  147. package/dist/input.cjs +1 -1
  148. package/dist/input.js +1 -1
  149. package/dist/layout.cjs +1 -1
  150. package/dist/layout.js +1 -1
  151. package/dist/{list-Dqwbw_0L.js → list-B4x432bs.js} +2 -2
  152. package/dist/{list-Dqwbw_0L.js.map → list-B4x432bs.js.map} +1 -1
  153. package/dist/{list-Dphnkgjm.cjs → list-CyCR5ywg.cjs} +2 -2
  154. package/dist/{list-Dphnkgjm.cjs.map → list-CyCR5ywg.cjs.map} +1 -1
  155. package/dist/list.cjs +1 -1
  156. package/dist/list.js +1 -1
  157. package/dist/{litElement.mixin-BbwZRaPp.js → litElement.mixin-BPe38Tqd.js} +2 -2
  158. package/dist/{litElement.mixin-BbwZRaPp.js.map → litElement.mixin-BPe38Tqd.js.map} +1 -1
  159. package/dist/{litElement.mixin-1i17ImwN.cjs → litElement.mixin-DXaT0TQx.cjs} +2 -2
  160. package/dist/{litElement.mixin-1i17ImwN.cjs.map → litElement.mixin-DXaT0TQx.cjs.map} +1 -1
  161. package/dist/mailbox.cjs +1 -1
  162. package/dist/mailbox.js +1 -1
  163. package/dist/{map-DEjWWl14.cjs → map-C2fG3es8.cjs} +2 -2
  164. package/dist/{map-DEjWWl14.cjs.map → map-C2fG3es8.cjs.map} +1 -1
  165. package/dist/{map-BHfXl4eZ.js → map-CNoi0TZi.js} +2 -2
  166. package/dist/{map-BHfXl4eZ.js.map → map-CNoi0TZi.js.map} +1 -1
  167. package/dist/map.cjs +1 -1
  168. package/dist/map.js +1 -1
  169. package/dist/{media-CFqac3i-.js → media-D_ne5TmT.js} +2 -2
  170. package/dist/{media-CFqac3i-.js.map → media-D_ne5TmT.js.map} +1 -1
  171. package/dist/{media-wEB2juTQ.cjs → media-dMr54ISj.cjs} +2 -2
  172. package/dist/{media-wEB2juTQ.cjs.map → media-dMr54ISj.cjs.map} +1 -1
  173. package/dist/menu-BdWhwHXc.js +89 -0
  174. package/dist/menu-BdWhwHXc.js.map +1 -0
  175. package/dist/menu-BsX4Mjjn.cjs +23 -0
  176. package/dist/menu-BsX4Mjjn.cjs.map +1 -0
  177. package/dist/menu.cjs +1 -1
  178. package/dist/menu.js +1 -1
  179. package/dist/mixins.cjs +2 -0
  180. package/dist/mixins.cjs.map +1 -0
  181. package/dist/mixins.js +12 -0
  182. package/dist/mixins.js.map +1 -0
  183. package/dist/nav-drawer.cjs +1 -1
  184. package/dist/nav-drawer.js +1 -1
  185. package/dist/navigation-bar.cjs +1 -1
  186. package/dist/navigation-bar.js +1 -1
  187. package/dist/{navigation-rail-Cdklj_Vy.js → navigation-rail-DM2NQY_2.js} +3 -3
  188. package/dist/{navigation-rail-Cdklj_Vy.js.map → navigation-rail-DM2NQY_2.js.map} +1 -1
  189. package/dist/{navigation-rail-eNmqnFXJ.cjs → navigation-rail-DfFgV2PX.cjs} +2 -2
  190. package/dist/{navigation-rail-eNmqnFXJ.cjs.map → navigation-rail-DfFgV2PX.cjs.map} +1 -1
  191. package/dist/navigation-rail.cjs +1 -1
  192. package/dist/navigation-rail.js +1 -1
  193. package/dist/{notification-service-jityv87S.cjs → notification-service-Cm_0BsnA.cjs} +2 -2
  194. package/dist/{notification-service-jityv87S.cjs.map → notification-service-Cm_0BsnA.cjs.map} +1 -1
  195. package/dist/{notification-service-CqxmKVJX.js → notification-service-DDfyKN2r.js} +4 -4
  196. package/dist/{notification-service-CqxmKVJX.js.map → notification-service-DDfyKN2r.js.map} +1 -1
  197. package/dist/notification.cjs +1 -1
  198. package/dist/notification.js +2 -2
  199. package/dist/{notify-C8EM_JmR.js → notify-BGHQRbsD.js} +2 -2
  200. package/dist/{notify-C8EM_JmR.js.map → notify-BGHQRbsD.js.map} +1 -1
  201. package/dist/{notify-CxqHlCZF.cjs → notify-DMoBBADS.cjs} +2 -2
  202. package/dist/{notify-CxqHlCZF.cjs.map → notify-DMoBBADS.cjs.map} +1 -1
  203. package/dist/{option-COJIldwK.js → option-EBGoYClu.js} +2 -2
  204. package/dist/{option-COJIldwK.js.map → option-EBGoYClu.js.map} +1 -1
  205. package/dist/{option-CBQoRZ86.cjs → option-MaqD_vGw.cjs} +2 -2
  206. package/dist/{option-CBQoRZ86.cjs.map → option-MaqD_vGw.cjs.map} +1 -1
  207. package/dist/option.cjs +1 -1
  208. package/dist/option.js +1 -1
  209. package/dist/{payment-card-form-BzDuKScU.cjs → payment-card-form-DZmaLaVl.cjs} +2 -2
  210. package/dist/payment-card-form-DZmaLaVl.cjs.map +1 -0
  211. package/dist/{payment-card-form-CHMYeZs2.js → payment-card-form-p_Wj1NRm.js} +3 -3
  212. package/dist/payment-card-form-p_Wj1NRm.js.map +1 -0
  213. package/dist/{progress-nOhWloHs.cjs → progress-BqIOFoJX.cjs} +2 -2
  214. package/dist/{progress-nOhWloHs.cjs.map → progress-BqIOFoJX.cjs.map} +1 -1
  215. package/dist/{progress-CtNg2SPw.js → progress-DC88fksT.js} +2 -2
  216. package/dist/{progress-CtNg2SPw.js.map → progress-DC88fksT.js.map} +1 -1
  217. package/dist/progress.cjs +1 -1
  218. package/dist/progress.js +1 -1
  219. package/dist/provide-BxZ2kn_p.cjs.map +1 -1
  220. package/dist/provide-tcktw8xB.js.map +1 -1
  221. package/dist/{radio-button-DttgXEeY.cjs → radio-button-BfpkkEgE.cjs} +2 -2
  222. package/dist/radio-button-BfpkkEgE.cjs.map +1 -0
  223. package/dist/{radio-button-DggshTfa.js → radio-button-DQA5Kswx.js} +3 -3
  224. package/dist/radio-button-DQA5Kswx.js.map +1 -0
  225. package/dist/radio-group.cjs +1 -1
  226. package/dist/radio-group.js +1 -1
  227. package/dist/{schmancy-steps-container-DhtHaKgX.js → schmancy-steps-container-Br5qKWIs.js} +2 -2
  228. package/dist/{schmancy-steps-container-DhtHaKgX.js.map → schmancy-steps-container-Br5qKWIs.js.map} +1 -1
  229. package/dist/{schmancy-steps-container-hIBLjMgI.cjs → schmancy-steps-container-Cr2B9C-w.cjs} +2 -2
  230. package/dist/{schmancy-steps-container-hIBLjMgI.cjs.map → schmancy-steps-container-Cr2B9C-w.cjs.map} +1 -1
  231. package/dist/{select-BqyRn0cF.js → select-B_DaDLhe.js} +3 -3
  232. package/dist/select-B_DaDLhe.js.map +1 -0
  233. package/dist/{select-xZKW8cHu.cjs → select-DwaiJBG2.cjs} +2 -2
  234. package/dist/select-DwaiJBG2.cjs.map +1 -0
  235. package/dist/select.cjs +1 -1
  236. package/dist/select.js +1 -1
  237. package/dist/{sheet-DE8jIQUk.js → sheet-5c6WR3vS.js} +5 -5
  238. package/dist/{sheet-DE8jIQUk.js.map → sheet-5c6WR3vS.js.map} +1 -1
  239. package/dist/{sheet-C6Liqa_3.cjs → sheet-BrK8_X4J.cjs} +2 -2
  240. package/dist/{sheet-C6Liqa_3.cjs.map → sheet-BrK8_X4J.cjs.map} +1 -1
  241. package/dist/sheet.cjs +1 -1
  242. package/dist/sheet.js +2 -2
  243. package/dist/{sheet.service-NAV5vSsM.cjs → sheet.service-BkKHvgFa.cjs} +2 -2
  244. package/dist/{sheet.service-NAV5vSsM.cjs.map → sheet.service-BkKHvgFa.cjs.map} +1 -1
  245. package/dist/{sheet.service-1jZMJbNp.js → sheet.service-EPEmcCpX.js} +2 -2
  246. package/dist/{sheet.service-1jZMJbNp.js.map → sheet.service-EPEmcCpX.js.map} +1 -1
  247. package/dist/{slider-BvbkpEef.js → slider-CiNvtgZJ.js} +3 -3
  248. package/dist/{slider-BvbkpEef.js.map → slider-CiNvtgZJ.js.map} +1 -1
  249. package/dist/{slider-lEoCLK-7.cjs → slider-DW9URxIY.cjs} +2 -2
  250. package/dist/{slider-lEoCLK-7.cjs.map → slider-DW9URxIY.cjs.map} +1 -1
  251. package/dist/slider.cjs +1 -1
  252. package/dist/slider.js +1 -1
  253. package/dist/{spinner-CQxy0lF3.cjs → spinner-9JRrKdub.cjs} +2 -2
  254. package/dist/{spinner-CQxy0lF3.cjs.map → spinner-9JRrKdub.cjs.map} +1 -1
  255. package/dist/{spinner-DdG6BEOr.js → spinner-D8stZ8uP.js} +2 -2
  256. package/dist/{spinner-DdG6BEOr.js.map → spinner-D8stZ8uP.js.map} +1 -1
  257. package/dist/steps.cjs +1 -1
  258. package/dist/steps.js +1 -1
  259. package/dist/{suggestion-chip-BRz15zwU.js → suggestion-chip-CXPMf7Je.js} +3 -3
  260. package/dist/{suggestion-chip-BRz15zwU.js.map → suggestion-chip-CXPMf7Je.js.map} +1 -1
  261. package/dist/{suggestion-chip-DK4xFJvZ.cjs → suggestion-chip-inBIBMff.cjs} +2 -2
  262. package/dist/{suggestion-chip-DK4xFJvZ.cjs.map → suggestion-chip-inBIBMff.cjs.map} +1 -1
  263. package/dist/{surface-C3vER2uq.js → surface-BcZEnDON.js} +2 -2
  264. package/dist/{surface-C3vER2uq.js.map → surface-BcZEnDON.js.map} +1 -1
  265. package/dist/{surface-Bt1FetPM.cjs → surface-BsrV4kzE.cjs} +2 -2
  266. package/dist/{surface-Bt1FetPM.cjs.map → surface-BsrV4kzE.cjs.map} +1 -1
  267. package/dist/surface.cjs +1 -1
  268. package/dist/surface.js +1 -1
  269. package/dist/{table-DhheYeQ8.js → table-B5CHKp8S.js} +2 -2
  270. package/dist/table-B5CHKp8S.js.map +1 -0
  271. package/dist/{table-DYay68qu.cjs → table-CzejyN5W.cjs} +2 -2
  272. package/dist/table-CzejyN5W.cjs.map +1 -0
  273. package/dist/table.cjs +1 -1
  274. package/dist/table.js +1 -1
  275. package/dist/{tabs-compatibility-C-gQwADa.js → tabs-compatibility-8NddfF1x.js} +2 -2
  276. package/dist/{tabs-compatibility-C-gQwADa.js.map → tabs-compatibility-8NddfF1x.js.map} +1 -1
  277. package/dist/{tabs-compatibility-Dz5YaB06.cjs → tabs-compatibility-UitZoxcs.cjs} +2 -2
  278. package/dist/{tabs-compatibility-Dz5YaB06.cjs.map → tabs-compatibility-UitZoxcs.cjs.map} +1 -1
  279. package/dist/tabs.cjs +1 -1
  280. package/dist/tabs.js +1 -1
  281. package/dist/tailwind.mixin-2PdnHg0B.cjs +2 -0
  282. package/dist/{tailwind.mixin-Ge3p8F8Z.cjs.map → tailwind.mixin-2PdnHg0B.cjs.map} +1 -1
  283. package/dist/tailwind.mixin-BgdEBNZM.js +67 -0
  284. package/dist/{tailwind.mixin-BTS7jBB1.js.map → tailwind.mixin-BgdEBNZM.js.map} +1 -1
  285. package/dist/teleport.cjs +1 -1
  286. package/dist/teleport.js +1 -1
  287. package/dist/{textarea-DmoZM65K.js → textarea-2oVdZPXR.js} +2 -2
  288. package/dist/textarea-2oVdZPXR.js.map +1 -0
  289. package/dist/{textarea-Dn1lmlIx.cjs → textarea-D24UakyK.cjs} +2 -2
  290. package/dist/textarea-D24UakyK.cjs.map +1 -0
  291. package/dist/textarea.cjs +1 -1
  292. package/dist/textarea.js +1 -1
  293. package/dist/{theme-button-CtF2dxRy.cjs → theme-button-D0Xi4WHC.cjs} +2 -2
  294. package/dist/{theme-button-CtF2dxRy.cjs.map → theme-button-D0Xi4WHC.cjs.map} +1 -1
  295. package/dist/{theme-button-BkoRO_Ko.js → theme-button-D4BhpOj6.js} +2 -2
  296. package/dist/{theme-button-BkoRO_Ko.js.map → theme-button-D4BhpOj6.js.map} +1 -1
  297. package/dist/theme-button.cjs +1 -1
  298. package/dist/theme-button.js +1 -1
  299. package/dist/{theme-controller-boat-DDsW4EOJ.js → theme-controller-boat-C8AnrOkJ.js} +4 -4
  300. package/dist/theme-controller-boat-C8AnrOkJ.js.map +1 -0
  301. package/dist/{theme-controller-boat-CBQlbHHc.cjs → theme-controller-boat-r74J3tyl.cjs} +2 -2
  302. package/dist/theme-controller-boat-r74J3tyl.cjs.map +1 -0
  303. package/dist/theme.cjs +1 -1
  304. package/dist/theme.js +1 -1
  305. package/dist/{timezone-DM_3vLZj.cjs → timezone-BbGoZoJM.cjs} +2 -2
  306. package/dist/{timezone-DM_3vLZj.cjs.map → timezone-BbGoZoJM.cjs.map} +1 -1
  307. package/dist/{timezone-C-V8qJE3.js → timezone-D4wUA6zL.js} +3 -3
  308. package/dist/{timezone-C-V8qJE3.js.map → timezone-D4wUA6zL.js.map} +1 -1
  309. package/dist/{tooltip-Cw5mfhRj.js → tooltip-BL92Hwwe.js} +2 -2
  310. package/dist/{tooltip-Cw5mfhRj.js.map → tooltip-BL92Hwwe.js.map} +1 -1
  311. package/dist/{tooltip-DntsYOsj.cjs → tooltip-DxdU3Drr.cjs} +2 -2
  312. package/dist/{tooltip-DntsYOsj.cjs.map → tooltip-DxdU3Drr.cjs.map} +1 -1
  313. package/dist/tooltip.cjs +1 -1
  314. package/dist/tooltip.js +1 -1
  315. package/dist/{tree-C3487udC.cjs → tree-BuGpk0as.cjs} +2 -2
  316. package/dist/{tree-C3487udC.cjs.map → tree-BuGpk0as.cjs.map} +1 -1
  317. package/dist/{tree-DimUJjcj.js → tree-cZIPOana.js} +2 -2
  318. package/dist/{tree-DimUJjcj.js.map → tree-cZIPOana.js.map} +1 -1
  319. package/dist/tree.cjs +1 -1
  320. package/dist/tree.js +1 -1
  321. package/dist/tslib.es6-DgOcxv4s.cjs.map +1 -1
  322. package/dist/tslib.es6-ujVQHAQ4.js.map +1 -1
  323. package/dist/{typewriter-B7nBcBU9.js → typewriter-DT0f_Fla.js} +4 -4
  324. package/dist/typewriter-DT0f_Fla.js.map +1 -0
  325. package/dist/{typewriter-CHcRZUee.cjs → typewriter-Dc7MHBRy.cjs} +2 -2
  326. package/dist/typewriter-Dc7MHBRy.cjs.map +1 -0
  327. package/dist/typewriter.cjs +1 -1
  328. package/dist/typewriter.js +1 -1
  329. package/dist/{typography-CRVUouR2.cjs → typography-BBCRpsA_.cjs} +2 -2
  330. package/dist/{typography-CRVUouR2.cjs.map → typography-BBCRpsA_.cjs.map} +1 -1
  331. package/dist/{typography-DnZjZEIe.js → typography-DayYVIRD.js} +2 -2
  332. package/dist/{typography-DnZjZEIe.js.map → typography-DayYVIRD.js.map} +1 -1
  333. package/dist/typography.cjs +1 -1
  334. package/dist/typography.js +1 -1
  335. package/package.json +4 -10
  336. package/types/src/autocomplete/autocomplete.d.ts +11 -0
  337. package/types/src/extra/timezone/timezone.d.ts +8 -0
  338. package/types/src/input/input.d.ts +1 -0
  339. package/types/src/menu/menu.d.ts +5 -6
  340. package/types/src/radio-group/radio-button.d.ts +8 -0
  341. package/types/src/select/select.d.ts +11 -0
  342. package/types/src/textarea/textarea.d.ts +12 -0
  343. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Bold.woff +0 -0
  344. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Light.woff +0 -0
  345. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Medium.woff +0 -0
  346. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Regular.woff +0 -0
  347. package/dist/GT-Eesti/GT-Eesti-Pro-Display-Thin.woff +0 -0
  348. package/dist/GT-Eesti/GT-Eesti-Pro-Display-UBold.woff +0 -0
  349. package/dist/GT-Eesti/GT-Eesti-Pro-Display-ULight.woff +0 -0
  350. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold-Italic.woff +0 -0
  351. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold.woff +0 -0
  352. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book-Italic.woff +0 -0
  353. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book.woff +0 -0
  354. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Light.woff +0 -0
  355. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium-Italic.woff +0 -0
  356. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium.woff +0 -0
  357. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Regular.woff +0 -0
  358. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin-Italic.woff +0 -0
  359. package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin.woff +0 -0
  360. package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight-Italic.woff +0 -0
  361. package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight.woff +0 -0
  362. package/dist/GT-Eesti/GT-Eesti-Text-Regular.woff2 +0 -0
  363. package/dist/_headers +0 -3
  364. package/dist/autocomplete-DEzGDw9s.cjs.map +0 -1
  365. package/dist/autocomplete-DLzc6eqO.js.map +0 -1
  366. package/dist/checkbox-DClxbWbU.cjs.map +0 -1
  367. package/dist/checkbox-ZryxdmZz.js.map +0 -1
  368. package/dist/code-preview-Bn2K5K9h.js.map +0 -1
  369. package/dist/code-preview-BoYqlMxl.cjs.map +0 -1
  370. package/dist/date-range-B-rPnyst.cjs.map +0 -1
  371. package/dist/date-range-CCQsqKSy.js.map +0 -1
  372. package/dist/delay-BaltOHAs.js.map +0 -1
  373. package/dist/delay-DzqfMSBJ.cjs.map +0 -1
  374. package/dist/input-BJvZX3nK.js.map +0 -1
  375. package/dist/input-RPj2xLz4.cjs.map +0 -1
  376. package/dist/logo-dark.png +0 -0
  377. package/dist/menu-BlR27aWR.js +0 -100
  378. package/dist/menu-BlR27aWR.js.map +0 -1
  379. package/dist/menu-DYWTnN4u.cjs +0 -36
  380. package/dist/menu-DYWTnN4u.cjs.map +0 -1
  381. package/dist/mixins/baseElement.ts +0 -73
  382. package/dist/mixins/constructor.ts +0 -3
  383. package/dist/mixins/discovery.service.ts +0 -60
  384. package/dist/mixins/formField.mixin.ts +0 -223
  385. package/dist/mixins/index.ts +0 -5
  386. package/dist/mixins/litElement.mixin.ts +0 -15
  387. package/dist/mixins/scss.d.ts +0 -21
  388. package/dist/mixins/tailwind.css +0 -201
  389. package/dist/mixins/tailwind.mixin.ts +0 -30
  390. package/dist/netlify.toml +0 -366
  391. package/dist/payment-card-form-BzDuKScU.cjs.map +0 -1
  392. package/dist/payment-card-form-CHMYeZs2.js.map +0 -1
  393. package/dist/radio-button-DggshTfa.js.map +0 -1
  394. package/dist/radio-button-DttgXEeY.cjs.map +0 -1
  395. package/dist/select-BqyRn0cF.js.map +0 -1
  396. package/dist/select-xZKW8cHu.cjs.map +0 -1
  397. package/dist/table-DYay68qu.cjs.map +0 -1
  398. package/dist/table-DhheYeQ8.js.map +0 -1
  399. package/dist/tailwind.mixin-BTS7jBB1.js +0 -66
  400. package/dist/tailwind.mixin-Ge3p8F8Z.cjs +0 -2
  401. package/dist/textarea-DmoZM65K.js.map +0 -1
  402. package/dist/textarea-Dn1lmlIx.cjs.map +0 -1
  403. package/dist/theme-controller-boat-CBQlbHHc.cjs.map +0 -1
  404. package/dist/theme-controller-boat-DDsW4EOJ.js.map +0 -1
  405. package/dist/typewriter-B7nBcBU9.js.map +0 -1
  406. package/dist/typewriter-CHcRZUee.cjs.map +0 -1
  407. package/readme.md +0 -307
package/ai/menu.md CHANGED
@@ -1,217 +1,148 @@
1
1
  # Schmancy Menu - AI Reference
2
2
 
3
+ ## Overview
4
+
5
+ The menu component provides context menus and dropdown menus using the `$dialog` service for positioning. Menus are portaled to `document.body` for proper z-index handling and work correctly in complex layouts (tables, virtualizers, overflow containers).
6
+
7
+ ## Architecture
8
+
9
+ - **Positioning**: Uses `$dialog.component()` with mouse event position
10
+ - **Portal Pattern**: Menu items are temporarily moved to dialog at `document.body` level
11
+ - **Fixed Positioning**: Menus stay fixed to viewport and don't scroll with content
12
+ - **Auto-close**: Menus close on item click or when clicking outside
13
+
14
+ ## Basic Usage
15
+
3
16
  ```js
4
17
  // Basic Menu
5
- <schmancy-menu @select=${handleSelect}>
6
- <schmancy-menu-item value="item1">Item 1</schmancy-menu-item>
7
- <schmancy-menu-item value="item2">Item 2</schmancy-menu-item>
8
- <schmancy-menu-item value="item3" disabled>Item 3</schmancy-menu-item>
9
- <schmancy-divider></schmancy-divider>
10
- <schmancy-menu-item value="item4">Item 4</schmancy-menu-item>
18
+ <schmancy-menu>
19
+ <schmancy-menu-item @click=${() => console.log('Item 1')}>Item 1</schmancy-menu-item>
20
+ <schmancy-menu-item @click=${() => console.log('Item 2')}>Item 2</schmancy-menu-item>
21
+ <schmancy-menu-item @click=${() => console.log('Item 3')}>Item 3</schmancy-menu-item>
11
22
  </schmancy-menu>
12
23
 
13
24
  // Menu with icons
14
25
  <schmancy-menu>
15
- <schmancy-menu-item value="copy">
16
- <schmancy-icon slot="prefix" icon="copy"></schmancy-icon>
26
+ <schmancy-menu-item @click=${handleCopy}>
27
+ <schmancy-icon slot="leading">content_copy</schmancy-icon>
17
28
  Copy
18
29
  </schmancy-menu-item>
19
-
20
- <schmancy-menu-item value="cut">
21
- <schmancy-icon slot="prefix" icon="scissors"></schmancy-icon>
30
+
31
+ <schmancy-menu-item @click=${handleCut}>
32
+ <schmancy-icon slot="leading">content_cut</schmancy-icon>
22
33
  Cut
23
34
  </schmancy-menu-item>
24
-
25
- <schmancy-menu-item value="paste">
26
- <schmancy-icon slot="prefix" icon="clipboard"></schmancy-icon>
27
- Paste
28
- </schmancy-menu-item>
29
- </schmancy-menu>
30
35
 
31
- // Menu with checkable items
32
- <schmancy-menu multiple>
33
- <schmancy-menu-item value="bold" checkable>
34
- <schmancy-icon slot="prefix" icon="bold"></schmancy-icon>
35
- Bold
36
- </schmancy-menu-item>
37
-
38
- <schmancy-menu-item value="italic" checkable>
39
- <schmancy-icon slot="prefix" icon="italic"></schmancy-icon>
40
- Italic
41
- </schmancy-menu-item>
42
-
43
- <schmancy-menu-item value="underline" checkable>
44
- <schmancy-icon slot="prefix" icon="underline"></schmancy-icon>
45
- Underline
36
+ <schmancy-menu-item @click=${handlePaste}>
37
+ <schmancy-icon slot="leading">content_paste</schmancy-icon>
38
+ Paste
46
39
  </schmancy-menu-item>
47
40
  </schmancy-menu>
48
41
 
49
- // Menu in a dropdown
50
- <schmancy-dropdown>
51
- <schmancy-button slot="trigger">
52
- Options
42
+ // Menu with custom trigger button
43
+ <schmancy-menu>
44
+ <schmancy-button slot="button" variant="filled">
45
+ Actions
53
46
  </schmancy-button>
54
-
55
- <schmancy-menu slot="content" @select=${handleMenuSelect}>
56
- <schmancy-menu-item value="edit">Edit</schmancy-menu-item>
57
- <schmancy-menu-item value="duplicate">Duplicate</schmancy-menu-item>
58
- <schmancy-menu-item value="archive">Archive</schmancy-menu-item>
59
- <schmancy-divider></schmancy-divider>
60
- <schmancy-menu-item value="delete" variant="danger">Delete</schmancy-menu-item>
61
- </schmancy-menu>
62
- </schmancy-dropdown>
63
-
64
- // Menu Properties
65
- multiple: boolean // Allow selecting multiple items
66
- value: string|string[] // Selected item value(s)
67
- size: string // Size: "small", "medium", "large"
68
- dense: boolean // More compact appearance
69
-
70
- // Menu Item Properties
71
- value: string // Value for selection
72
- disabled: boolean // Disable the item
73
- selected: boolean // Whether the item is selected
74
- checkable: boolean // Show checkbox/radio indicator
75
- checked: boolean // Checked state for checkable items
76
- variant: string // Variant: "default", "primary", "danger", etc.
77
-
78
- // Menu Events
79
- @select // Fires when item is selected, with { detail: { value, item } }
80
- @change // Fires when selection changes, with { detail: { value } }
81
-
82
- // Examples
83
- // Context menu
84
- <schmancy-dropdown>
85
- <div
86
- slot="trigger"
87
- @contextmenu=${(e) => {
88
- e.preventDefault();
89
- dropdown.open({ x: e.clientX, y: e.clientY });
90
- }}
91
- style="width: 300px; height: 200px; border: 1px dashed #ccc; display: flex; align-items: center; justify-content: center;">
92
- Right-click me
93
- </div>
94
-
95
- <schmancy-menu slot="content" @select=${handleContextMenuSelect}>
96
- <schmancy-menu-item value="view">
97
- <schmancy-icon slot="prefix" icon="eye"></schmancy-icon>
98
- View
99
- </schmancy-menu-item>
100
-
101
- <schmancy-menu-item value="edit">
102
- <schmancy-icon slot="prefix" icon="edit"></schmancy-icon>
103
- Edit
104
- </schmancy-menu-item>
105
-
106
- <schmancy-menu-item value="share">
107
- <schmancy-icon slot="prefix" icon="share"></schmancy-icon>
108
- Share
109
- <schmancy-icon slot="suffix" icon="external-link"></schmancy-icon>
110
- </schmancy-menu-item>
111
-
112
- <schmancy-divider></schmancy-divider>
113
-
114
- <schmancy-menu-item value="delete" variant="danger">
115
- <schmancy-icon slot="prefix" icon="trash"></schmancy-icon>
116
- Delete
117
- </schmancy-menu-item>
118
- </schmancy-menu>
119
- </schmancy-dropdown>
120
-
121
- // Multi-select menu
122
- <schmancy-menu
123
- multiple
124
- .value=${selectedOptions}
125
- @change=${(e) => selectedOptions = e.detail.value}>
126
-
127
- <schmancy-menu-item value="wifi" checkable>
128
- <schmancy-icon slot="prefix" icon="wifi"></schmancy-icon>
129
- Wi-Fi
130
- </schmancy-menu-item>
131
-
132
- <schmancy-menu-item value="bluetooth" checkable>
133
- <schmancy-icon slot="prefix" icon="bluetooth"></schmancy-icon>
134
- Bluetooth
135
- </schmancy-menu-item>
136
-
137
- <schmancy-menu-item value="airplane" checkable>
138
- <schmancy-icon slot="prefix" icon="airplane"></schmancy-icon>
139
- Airplane Mode
47
+ <schmancy-menu-item @click=${() => console.log('Edit')}>
48
+ Edit
140
49
  </schmancy-menu-item>
141
-
142
- <schmancy-menu-item value="location" checkable>
143
- <schmancy-icon slot="prefix" icon="map-pin"></schmancy-icon>
144
- Location
50
+ <schmancy-menu-item @click=${() => console.log('Delete')}>
51
+ Delete
145
52
  </schmancy-menu-item>
146
53
  </schmancy-menu>
147
54
 
148
- // Menu with keyboard shortcuts
55
+ // Default icon button trigger (no button slot provided)
149
56
  <schmancy-menu>
150
- <schmancy-menu-item value="new">
151
- <schmancy-icon slot="prefix" icon="file"></schmancy-icon>
152
- New File
153
- <span slot="suffix">Ctrl+N</span>
154
- </schmancy-menu-item>
155
-
156
- <schmancy-menu-item value="open">
157
- <schmancy-icon slot="prefix" icon="folder-open"></schmancy-icon>
158
- Open...
159
- <span slot="suffix">Ctrl+O</span>
160
- </schmancy-menu-item>
161
-
162
- <schmancy-menu-item value="save">
163
- <schmancy-icon slot="prefix" icon="save"></schmancy-icon>
164
- Save
165
- <span slot="suffix">Ctrl+S</span>
166
- </schmancy-menu-item>
167
-
168
- <schmancy-menu-item value="saveAs">
169
- <schmancy-icon slot="prefix" icon="save"></schmancy-icon>
170
- Save As...
171
- <span slot="suffix">Ctrl+Shift+S</span>
172
- </schmancy-menu-item>
173
-
174
- <schmancy-divider></schmancy-divider>
175
-
176
- <schmancy-menu-item value="exit">
177
- <schmancy-icon slot="prefix" icon="x"></schmancy-icon>
178
- Exit
179
- <span slot="suffix">Alt+F4</span>
180
- </schmancy-menu-item>
57
+ <schmancy-menu-item @click=${handleAction1}>Action 1</schmancy-menu-item>
58
+ <schmancy-menu-item @click=${handleAction2}>Action 2</schmancy-menu-item>
181
59
  </schmancy-menu>
60
+ ```
61
+
62
+ ## API Reference
63
+
64
+ ### Menu Component
65
+
66
+ **Slots:**
67
+ - `button` - Custom trigger button (defaults to icon button with more_vert if not provided)
68
+ - `default` - Menu items (use schmancy-menu-item components)
182
69
 
183
- // Menu with nested items (using dropdown)
70
+ **Positioning:**
71
+ - Automatically positioned using $dialog service
72
+ - Fixed to viewport (doesn't scroll with content)
73
+ - Portaled to document.body for proper stacking
74
+ - Works in complex layouts (tables, virtualizers, etc.)
75
+
76
+ ### Menu Item Component
77
+
78
+ **Slots:**
79
+ - `leading` - Icon or content before the text
80
+ - `trailing` - Icon or content after the text
81
+ - `default` - Main content
82
+
83
+ **Events:**
84
+ - `schmancy-menu-item-click` - Fired when clicked (bubbles up, auto-closes menu)
85
+
86
+ ## Real-World Examples
87
+
88
+ ### Menu in Table Header (sorting)
89
+ ```js
184
90
  <schmancy-menu>
185
- <schmancy-menu-item value="file">File</schmancy-menu-item>
186
- <schmancy-menu-item value="edit">Edit</schmancy-menu-item>
187
- <schmancy-menu-item value="view">View</schmancy-menu-item>
188
-
189
- <schmancy-dropdown position="right-start">
190
- <schmancy-menu-item slot="trigger" value="insert">
191
- Insert
192
- <schmancy-icon slot="suffix" icon="chevron-right"></schmancy-icon>
91
+ <schmancy-icon-button slot="button" size="sm">
92
+ ${sortDirection === 'asc' ? 'arrow_upward' : 'arrow_downward'}
93
+ </schmancy-icon-button>
94
+ ${sortOptions.map(opt => html`
95
+ <schmancy-menu-item @click=${() => handleSort(opt.value)}>
96
+ ${opt.active ? html`<schmancy-icon slot="start">check</schmancy-icon>` : ''}
97
+ ${opt.label}
98
+ ${opt.active ? html`<schmancy-icon slot="end">${direction}</schmancy-icon>` : ''}
193
99
  </schmancy-menu-item>
194
-
195
- <schmancy-menu slot="content">
196
- <schmancy-menu-item value="insert-image">
197
- <schmancy-icon slot="prefix" icon="image"></schmancy-icon>
198
- Image
100
+ `)}
101
+ </schmancy-menu>
102
+ ```
103
+
104
+ ### Menu in Virtualized List/Table
105
+ Works correctly in lit-virtualizer, overflow containers, and complex layouts:
106
+ ```js
107
+ <lit-virtualizer .items=${items} .renderItem=${item => html`
108
+ <div class="table-row">
109
+ <span>${item.name}</span>
110
+ <schmancy-menu>
111
+ <schmancy-menu-item @click=${() => edit(item)}>Edit</schmancy-menu-item>
112
+ <schmancy-menu-item @click=${() => delete(item)}>Delete</schmancy-menu-item>
113
+ </schmancy-menu>
114
+ </div>
115
+ `}></lit-virtualizer>
116
+ ```
117
+
118
+ ### Menu in Cards
119
+ ```js
120
+ <schmancy-surface type="container" class="p-6">
121
+ <div class="flex justify-between items-start">
122
+ <h3>Card Title</h3>
123
+ <schmancy-menu>
124
+ <schmancy-menu-item @click=${handleShare}>
125
+ <schmancy-icon slot="leading">share</schmancy-icon>
126
+ Share
199
127
  </schmancy-menu-item>
200
-
201
- <schmancy-menu-item value="insert-table">
202
- <schmancy-icon slot="prefix" icon="grid"></schmancy-icon>
203
- Table
128
+ <schmancy-menu-item @click=${handleEdit}>
129
+ <schmancy-icon slot="leading">edit</schmancy-icon>
130
+ Edit
204
131
  </schmancy-menu-item>
205
-
206
- <schmancy-menu-item value="insert-chart">
207
- <schmancy-icon slot="prefix" icon="bar-chart"></schmancy-icon>
208
- Chart
132
+ <schmancy-menu-item @click=${handleDelete}>
133
+ <schmancy-icon slot="leading">delete</schmancy-icon>
134
+ Delete
209
135
  </schmancy-menu-item>
210
136
  </schmancy-menu>
211
- </schmancy-dropdown>
212
-
213
- <schmancy-menu-item value="format">Format</schmancy-menu-item>
214
- <schmancy-menu-item value="tools">Tools</schmancy-menu-item>
215
- <schmancy-menu-item value="help">Help</schmancy-menu-item>
216
- </schmancy-menu>
137
+ </div>
138
+ </schmancy-surface>
139
+ ```
140
+
141
+ ## Implementation Notes
142
+
143
+ - Menu items are temporarily moved to dialog container when opened
144
+ - Items are moved back to original location when menu closes
145
+ - All event handlers remain functional during the move
146
+ - Menu positioning is handled by $dialog service using floating-ui
147
+ - No need to manage z-index or positioning manually
217
148
  ```
package/dist/ai/menu.md CHANGED
@@ -1,217 +1,148 @@
1
1
  # Schmancy Menu - AI Reference
2
2
 
3
+ ## Overview
4
+
5
+ The menu component provides context menus and dropdown menus using the `$dialog` service for positioning. Menus are portaled to `document.body` for proper z-index handling and work correctly in complex layouts (tables, virtualizers, overflow containers).
6
+
7
+ ## Architecture
8
+
9
+ - **Positioning**: Uses `$dialog.component()` with mouse event position
10
+ - **Portal Pattern**: Menu items are temporarily moved to dialog at `document.body` level
11
+ - **Fixed Positioning**: Menus stay fixed to viewport and don't scroll with content
12
+ - **Auto-close**: Menus close on item click or when clicking outside
13
+
14
+ ## Basic Usage
15
+
3
16
  ```js
4
17
  // Basic Menu
5
- <schmancy-menu @select=${handleSelect}>
6
- <schmancy-menu-item value="item1">Item 1</schmancy-menu-item>
7
- <schmancy-menu-item value="item2">Item 2</schmancy-menu-item>
8
- <schmancy-menu-item value="item3" disabled>Item 3</schmancy-menu-item>
9
- <schmancy-divider></schmancy-divider>
10
- <schmancy-menu-item value="item4">Item 4</schmancy-menu-item>
18
+ <schmancy-menu>
19
+ <schmancy-menu-item @click=${() => console.log('Item 1')}>Item 1</schmancy-menu-item>
20
+ <schmancy-menu-item @click=${() => console.log('Item 2')}>Item 2</schmancy-menu-item>
21
+ <schmancy-menu-item @click=${() => console.log('Item 3')}>Item 3</schmancy-menu-item>
11
22
  </schmancy-menu>
12
23
 
13
24
  // Menu with icons
14
25
  <schmancy-menu>
15
- <schmancy-menu-item value="copy">
16
- <schmancy-icon slot="prefix" icon="copy"></schmancy-icon>
26
+ <schmancy-menu-item @click=${handleCopy}>
27
+ <schmancy-icon slot="leading">content_copy</schmancy-icon>
17
28
  Copy
18
29
  </schmancy-menu-item>
19
-
20
- <schmancy-menu-item value="cut">
21
- <schmancy-icon slot="prefix" icon="scissors"></schmancy-icon>
30
+
31
+ <schmancy-menu-item @click=${handleCut}>
32
+ <schmancy-icon slot="leading">content_cut</schmancy-icon>
22
33
  Cut
23
34
  </schmancy-menu-item>
24
-
25
- <schmancy-menu-item value="paste">
26
- <schmancy-icon slot="prefix" icon="clipboard"></schmancy-icon>
27
- Paste
28
- </schmancy-menu-item>
29
- </schmancy-menu>
30
35
 
31
- // Menu with checkable items
32
- <schmancy-menu multiple>
33
- <schmancy-menu-item value="bold" checkable>
34
- <schmancy-icon slot="prefix" icon="bold"></schmancy-icon>
35
- Bold
36
- </schmancy-menu-item>
37
-
38
- <schmancy-menu-item value="italic" checkable>
39
- <schmancy-icon slot="prefix" icon="italic"></schmancy-icon>
40
- Italic
41
- </schmancy-menu-item>
42
-
43
- <schmancy-menu-item value="underline" checkable>
44
- <schmancy-icon slot="prefix" icon="underline"></schmancy-icon>
45
- Underline
36
+ <schmancy-menu-item @click=${handlePaste}>
37
+ <schmancy-icon slot="leading">content_paste</schmancy-icon>
38
+ Paste
46
39
  </schmancy-menu-item>
47
40
  </schmancy-menu>
48
41
 
49
- // Menu in a dropdown
50
- <schmancy-dropdown>
51
- <schmancy-button slot="trigger">
52
- Options
42
+ // Menu with custom trigger button
43
+ <schmancy-menu>
44
+ <schmancy-button slot="button" variant="filled">
45
+ Actions
53
46
  </schmancy-button>
54
-
55
- <schmancy-menu slot="content" @select=${handleMenuSelect}>
56
- <schmancy-menu-item value="edit">Edit</schmancy-menu-item>
57
- <schmancy-menu-item value="duplicate">Duplicate</schmancy-menu-item>
58
- <schmancy-menu-item value="archive">Archive</schmancy-menu-item>
59
- <schmancy-divider></schmancy-divider>
60
- <schmancy-menu-item value="delete" variant="danger">Delete</schmancy-menu-item>
61
- </schmancy-menu>
62
- </schmancy-dropdown>
63
-
64
- // Menu Properties
65
- multiple: boolean // Allow selecting multiple items
66
- value: string|string[] // Selected item value(s)
67
- size: string // Size: "small", "medium", "large"
68
- dense: boolean // More compact appearance
69
-
70
- // Menu Item Properties
71
- value: string // Value for selection
72
- disabled: boolean // Disable the item
73
- selected: boolean // Whether the item is selected
74
- checkable: boolean // Show checkbox/radio indicator
75
- checked: boolean // Checked state for checkable items
76
- variant: string // Variant: "default", "primary", "danger", etc.
77
-
78
- // Menu Events
79
- @select // Fires when item is selected, with { detail: { value, item } }
80
- @change // Fires when selection changes, with { detail: { value } }
81
-
82
- // Examples
83
- // Context menu
84
- <schmancy-dropdown>
85
- <div
86
- slot="trigger"
87
- @contextmenu=${(e) => {
88
- e.preventDefault();
89
- dropdown.open({ x: e.clientX, y: e.clientY });
90
- }}
91
- style="width: 300px; height: 200px; border: 1px dashed #ccc; display: flex; align-items: center; justify-content: center;">
92
- Right-click me
93
- </div>
94
-
95
- <schmancy-menu slot="content" @select=${handleContextMenuSelect}>
96
- <schmancy-menu-item value="view">
97
- <schmancy-icon slot="prefix" icon="eye"></schmancy-icon>
98
- View
99
- </schmancy-menu-item>
100
-
101
- <schmancy-menu-item value="edit">
102
- <schmancy-icon slot="prefix" icon="edit"></schmancy-icon>
103
- Edit
104
- </schmancy-menu-item>
105
-
106
- <schmancy-menu-item value="share">
107
- <schmancy-icon slot="prefix" icon="share"></schmancy-icon>
108
- Share
109
- <schmancy-icon slot="suffix" icon="external-link"></schmancy-icon>
110
- </schmancy-menu-item>
111
-
112
- <schmancy-divider></schmancy-divider>
113
-
114
- <schmancy-menu-item value="delete" variant="danger">
115
- <schmancy-icon slot="prefix" icon="trash"></schmancy-icon>
116
- Delete
117
- </schmancy-menu-item>
118
- </schmancy-menu>
119
- </schmancy-dropdown>
120
-
121
- // Multi-select menu
122
- <schmancy-menu
123
- multiple
124
- .value=${selectedOptions}
125
- @change=${(e) => selectedOptions = e.detail.value}>
126
-
127
- <schmancy-menu-item value="wifi" checkable>
128
- <schmancy-icon slot="prefix" icon="wifi"></schmancy-icon>
129
- Wi-Fi
130
- </schmancy-menu-item>
131
-
132
- <schmancy-menu-item value="bluetooth" checkable>
133
- <schmancy-icon slot="prefix" icon="bluetooth"></schmancy-icon>
134
- Bluetooth
135
- </schmancy-menu-item>
136
-
137
- <schmancy-menu-item value="airplane" checkable>
138
- <schmancy-icon slot="prefix" icon="airplane"></schmancy-icon>
139
- Airplane Mode
47
+ <schmancy-menu-item @click=${() => console.log('Edit')}>
48
+ Edit
140
49
  </schmancy-menu-item>
141
-
142
- <schmancy-menu-item value="location" checkable>
143
- <schmancy-icon slot="prefix" icon="map-pin"></schmancy-icon>
144
- Location
50
+ <schmancy-menu-item @click=${() => console.log('Delete')}>
51
+ Delete
145
52
  </schmancy-menu-item>
146
53
  </schmancy-menu>
147
54
 
148
- // Menu with keyboard shortcuts
55
+ // Default icon button trigger (no button slot provided)
149
56
  <schmancy-menu>
150
- <schmancy-menu-item value="new">
151
- <schmancy-icon slot="prefix" icon="file"></schmancy-icon>
152
- New File
153
- <span slot="suffix">Ctrl+N</span>
154
- </schmancy-menu-item>
155
-
156
- <schmancy-menu-item value="open">
157
- <schmancy-icon slot="prefix" icon="folder-open"></schmancy-icon>
158
- Open...
159
- <span slot="suffix">Ctrl+O</span>
160
- </schmancy-menu-item>
161
-
162
- <schmancy-menu-item value="save">
163
- <schmancy-icon slot="prefix" icon="save"></schmancy-icon>
164
- Save
165
- <span slot="suffix">Ctrl+S</span>
166
- </schmancy-menu-item>
167
-
168
- <schmancy-menu-item value="saveAs">
169
- <schmancy-icon slot="prefix" icon="save"></schmancy-icon>
170
- Save As...
171
- <span slot="suffix">Ctrl+Shift+S</span>
172
- </schmancy-menu-item>
173
-
174
- <schmancy-divider></schmancy-divider>
175
-
176
- <schmancy-menu-item value="exit">
177
- <schmancy-icon slot="prefix" icon="x"></schmancy-icon>
178
- Exit
179
- <span slot="suffix">Alt+F4</span>
180
- </schmancy-menu-item>
57
+ <schmancy-menu-item @click=${handleAction1}>Action 1</schmancy-menu-item>
58
+ <schmancy-menu-item @click=${handleAction2}>Action 2</schmancy-menu-item>
181
59
  </schmancy-menu>
60
+ ```
61
+
62
+ ## API Reference
63
+
64
+ ### Menu Component
65
+
66
+ **Slots:**
67
+ - `button` - Custom trigger button (defaults to icon button with more_vert if not provided)
68
+ - `default` - Menu items (use schmancy-menu-item components)
182
69
 
183
- // Menu with nested items (using dropdown)
70
+ **Positioning:**
71
+ - Automatically positioned using $dialog service
72
+ - Fixed to viewport (doesn't scroll with content)
73
+ - Portaled to document.body for proper stacking
74
+ - Works in complex layouts (tables, virtualizers, etc.)
75
+
76
+ ### Menu Item Component
77
+
78
+ **Slots:**
79
+ - `leading` - Icon or content before the text
80
+ - `trailing` - Icon or content after the text
81
+ - `default` - Main content
82
+
83
+ **Events:**
84
+ - `schmancy-menu-item-click` - Fired when clicked (bubbles up, auto-closes menu)
85
+
86
+ ## Real-World Examples
87
+
88
+ ### Menu in Table Header (sorting)
89
+ ```js
184
90
  <schmancy-menu>
185
- <schmancy-menu-item value="file">File</schmancy-menu-item>
186
- <schmancy-menu-item value="edit">Edit</schmancy-menu-item>
187
- <schmancy-menu-item value="view">View</schmancy-menu-item>
188
-
189
- <schmancy-dropdown position="right-start">
190
- <schmancy-menu-item slot="trigger" value="insert">
191
- Insert
192
- <schmancy-icon slot="suffix" icon="chevron-right"></schmancy-icon>
91
+ <schmancy-icon-button slot="button" size="sm">
92
+ ${sortDirection === 'asc' ? 'arrow_upward' : 'arrow_downward'}
93
+ </schmancy-icon-button>
94
+ ${sortOptions.map(opt => html`
95
+ <schmancy-menu-item @click=${() => handleSort(opt.value)}>
96
+ ${opt.active ? html`<schmancy-icon slot="start">check</schmancy-icon>` : ''}
97
+ ${opt.label}
98
+ ${opt.active ? html`<schmancy-icon slot="end">${direction}</schmancy-icon>` : ''}
193
99
  </schmancy-menu-item>
194
-
195
- <schmancy-menu slot="content">
196
- <schmancy-menu-item value="insert-image">
197
- <schmancy-icon slot="prefix" icon="image"></schmancy-icon>
198
- Image
100
+ `)}
101
+ </schmancy-menu>
102
+ ```
103
+
104
+ ### Menu in Virtualized List/Table
105
+ Works correctly in lit-virtualizer, overflow containers, and complex layouts:
106
+ ```js
107
+ <lit-virtualizer .items=${items} .renderItem=${item => html`
108
+ <div class="table-row">
109
+ <span>${item.name}</span>
110
+ <schmancy-menu>
111
+ <schmancy-menu-item @click=${() => edit(item)}>Edit</schmancy-menu-item>
112
+ <schmancy-menu-item @click=${() => delete(item)}>Delete</schmancy-menu-item>
113
+ </schmancy-menu>
114
+ </div>
115
+ `}></lit-virtualizer>
116
+ ```
117
+
118
+ ### Menu in Cards
119
+ ```js
120
+ <schmancy-surface type="container" class="p-6">
121
+ <div class="flex justify-between items-start">
122
+ <h3>Card Title</h3>
123
+ <schmancy-menu>
124
+ <schmancy-menu-item @click=${handleShare}>
125
+ <schmancy-icon slot="leading">share</schmancy-icon>
126
+ Share
199
127
  </schmancy-menu-item>
200
-
201
- <schmancy-menu-item value="insert-table">
202
- <schmancy-icon slot="prefix" icon="grid"></schmancy-icon>
203
- Table
128
+ <schmancy-menu-item @click=${handleEdit}>
129
+ <schmancy-icon slot="leading">edit</schmancy-icon>
130
+ Edit
204
131
  </schmancy-menu-item>
205
-
206
- <schmancy-menu-item value="insert-chart">
207
- <schmancy-icon slot="prefix" icon="bar-chart"></schmancy-icon>
208
- Chart
132
+ <schmancy-menu-item @click=${handleDelete}>
133
+ <schmancy-icon slot="leading">delete</schmancy-icon>
134
+ Delete
209
135
  </schmancy-menu-item>
210
136
  </schmancy-menu>
211
- </schmancy-dropdown>
212
-
213
- <schmancy-menu-item value="format">Format</schmancy-menu-item>
214
- <schmancy-menu-item value="tools">Tools</schmancy-menu-item>
215
- <schmancy-menu-item value="help">Help</schmancy-menu-item>
216
- </schmancy-menu>
137
+ </div>
138
+ </schmancy-surface>
139
+ ```
140
+
141
+ ## Implementation Notes
142
+
143
+ - Menu items are temporarily moved to dialog container when opened
144
+ - Items are moved back to original location when menu closes
145
+ - All event handlers remain functional during the move
146
+ - Menu positioning is handled by $dialog service using floating-ui
147
+ - No need to manage z-index or positioning manually
217
148
  ```