@mhmo91/schmancy 0.5.18 → 0.5.19

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 (330) hide show
  1. package/ai/navigation-bar-item.md +247 -0
  2. package/ai/navigation-bar.md +163 -0
  3. package/dist/ai/navigation-bar-item.md +247 -0
  4. package/dist/ai/navigation-bar.md +163 -0
  5. package/dist/{animated-text-Bu95OxOB.js → animated-text-DbBKOAWI.js} +3 -3
  6. package/dist/{animated-text-Bu95OxOB.js.map → animated-text-DbBKOAWI.js.map} +1 -1
  7. package/dist/{animated-text-B3ShIBX3.cjs → animated-text-L4rVnRqB.cjs} +2 -2
  8. package/dist/{animated-text-B3ShIBX3.cjs.map → animated-text-L4rVnRqB.cjs.map} +1 -1
  9. package/dist/animated-text.cjs +1 -1
  10. package/dist/animated-text.js +1 -1
  11. package/dist/area.cjs +1 -1
  12. package/dist/{area.component-De95XHvt.cjs → area.component-DsBt1CIM.cjs} +2 -2
  13. package/dist/{area.component-De95XHvt.cjs.map → area.component-DsBt1CIM.cjs.map} +1 -1
  14. package/dist/{area.component-Uj8eYomX.js → area.component-eV-v6J5C.js} +3 -3
  15. package/dist/{area.component-Uj8eYomX.js.map → area.component-eV-v6J5C.js.map} +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{autocomplete-CfICiUej.js → autocomplete-CTQ6eqYl.js} +4 -4
  18. package/dist/{autocomplete-CfICiUej.js.map → autocomplete-CTQ6eqYl.js.map} +1 -1
  19. package/dist/{autocomplete-S3tqpsfx.cjs → autocomplete-DnX6sEMg.cjs} +2 -2
  20. package/dist/{autocomplete-S3tqpsfx.cjs.map → autocomplete-DnX6sEMg.cjs.map} +1 -1
  21. package/dist/autocomplete.cjs +1 -1
  22. package/dist/autocomplete.js +1 -1
  23. package/dist/avatar-BAaUCxc-.js +895 -0
  24. package/dist/avatar-BAaUCxc-.js.map +1 -0
  25. package/dist/avatar-DwqCiKOy.cjs +303 -0
  26. package/dist/avatar-DwqCiKOy.cjs.map +1 -0
  27. package/dist/badge.cjs +1 -1
  28. package/dist/badge.js +1 -1
  29. package/dist/{boat-COig4aPk.cjs → boat-BbF0BpAl.cjs} +2 -2
  30. package/dist/{boat-COig4aPk.cjs.map → boat-BbF0BpAl.cjs.map} +1 -1
  31. package/dist/{boat-X1OG5F2J.js → boat-CQyUVpLW.js} +2 -2
  32. package/dist/{boat-X1OG5F2J.js.map → boat-CQyUVpLW.js.map} +1 -1
  33. package/dist/boat.cjs +1 -1
  34. package/dist/boat.js +1 -1
  35. package/dist/busy.cjs +1 -1
  36. package/dist/busy.js +1 -1
  37. package/dist/button.cjs +1 -1
  38. package/dist/button.js +1 -1
  39. package/dist/card.cjs +1 -1
  40. package/dist/card.js +1 -1
  41. package/dist/{checkbox-CQ_N8nVx.js → checkbox-7annHqhF.js} +2 -2
  42. package/dist/{checkbox-CQ_N8nVx.js.map → checkbox-7annHqhF.js.map} +1 -1
  43. package/dist/{checkbox-BKyJeBzr.cjs → checkbox-CI4CDpoS.cjs} +2 -2
  44. package/dist/{checkbox-BKyJeBzr.cjs.map → checkbox-CI4CDpoS.cjs.map} +1 -1
  45. package/dist/checkbox.cjs +1 -1
  46. package/dist/checkbox.js +1 -1
  47. package/dist/chips.cjs +1 -1
  48. package/dist/chips.js +2 -2
  49. package/dist/code-highlight.cjs +1 -1
  50. package/dist/code-highlight.js +1 -1
  51. package/dist/{code-preview-DRt2qNK4.js → code-preview-Y783aZ7J.js} +133 -123
  52. package/dist/{code-preview-DRt2qNK4.js.map → code-preview-Y783aZ7J.js.map} +1 -1
  53. package/dist/{code-preview-DdWQ9Huu.cjs → code-preview-zE_SbNNO.cjs} +67 -57
  54. package/dist/{code-preview-DdWQ9Huu.cjs.map → code-preview-zE_SbNNO.cjs.map} +1 -1
  55. package/dist/components.cjs +1 -1
  56. package/dist/components.js +1 -1
  57. package/dist/content-drawer.cjs +1 -1
  58. package/dist/content-drawer.js +1 -1
  59. package/dist/{date-range-_0PfGLTG.cjs → date-range-Bh2x7nlc.cjs} +2 -2
  60. package/dist/{date-range-_0PfGLTG.cjs.map → date-range-Bh2x7nlc.cjs.map} +1 -1
  61. package/dist/{date-range-W2AtcWsE.js → date-range-BtFn7iGs.js} +3 -3
  62. package/dist/{date-range-W2AtcWsE.js.map → date-range-BtFn7iGs.js.map} +1 -1
  63. package/dist/{date-range-inline-Cqu7nIGM.js → date-range-inline-BnGPY5ZY.js} +3 -3
  64. package/dist/{date-range-inline-Cqu7nIGM.js.map → date-range-inline-BnGPY5ZY.js.map} +1 -1
  65. package/dist/{date-range-inline-tDA37KYD.cjs → date-range-inline-C_6N7yca.cjs} +2 -2
  66. package/dist/{date-range-inline-tDA37KYD.cjs.map → date-range-inline-C_6N7yca.cjs.map} +1 -1
  67. package/dist/date-range-inline.cjs +1 -1
  68. package/dist/date-range-inline.js +1 -1
  69. package/dist/date-range.cjs +1 -1
  70. package/dist/date-range.js +1 -1
  71. package/dist/{delay-CXAQP1GR.js → delay-DafLdRaR.js} +2 -2
  72. package/dist/{delay-CXAQP1GR.js.map → delay-DafLdRaR.js.map} +1 -1
  73. package/dist/{delay-B_M7fPe5.cjs → delay-DgBkfK3a.cjs} +2 -2
  74. package/dist/{delay-B_M7fPe5.cjs.map → delay-DgBkfK3a.cjs.map} +1 -1
  75. package/dist/delay.cjs +1 -1
  76. package/dist/delay.js +1 -1
  77. package/dist/{details-CphTZvhk.js → details-89R5QI1S.js} +2 -2
  78. package/dist/{details-CphTZvhk.js.map → details-89R5QI1S.js.map} +1 -1
  79. package/dist/{details-Chfs-oHV.cjs → details-DpodqE31.cjs} +2 -2
  80. package/dist/{details-Chfs-oHV.cjs.map → details-DpodqE31.cjs.map} +1 -1
  81. package/dist/details.cjs +1 -1
  82. package/dist/details.js +1 -1
  83. package/dist/{dialog-content-h_Oz2PDz.js → dialog-content-CGt4hZZn.js} +3 -3
  84. package/dist/{dialog-content-h_Oz2PDz.js.map → dialog-content-CGt4hZZn.js.map} +1 -1
  85. package/dist/{dialog-content-Cm8VekL4.cjs → dialog-content-S6k16Le_.cjs} +2 -2
  86. package/dist/{dialog-content-Cm8VekL4.cjs.map → dialog-content-S6k16Le_.cjs.map} +1 -1
  87. package/dist/dialog.cjs +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/{divider-CrP3muaP.cjs → divider-CUFy4oEY.cjs} +2 -2
  90. package/dist/{divider-CrP3muaP.cjs.map → divider-CUFy4oEY.cjs.map} +1 -1
  91. package/dist/{divider-DZZPRjp6.js → divider-dTggJNS0.js} +3 -3
  92. package/dist/{divider-DZZPRjp6.js.map → divider-dTggJNS0.js.map} +1 -1
  93. package/dist/divider.cjs +1 -1
  94. package/dist/divider.js +1 -1
  95. package/dist/{dropdown-content-CB1GBHlI.js → dropdown-content-Bty4mF1A.js} +3 -3
  96. package/dist/{dropdown-content-CB1GBHlI.js.map → dropdown-content-Bty4mF1A.js.map} +1 -1
  97. package/dist/{dropdown-content-A6ZdJyZz.cjs → dropdown-content-D7dvNRRR.cjs} +2 -2
  98. package/dist/{dropdown-content-A6ZdJyZz.cjs.map → dropdown-content-D7dvNRRR.cjs.map} +1 -1
  99. package/dist/dropdown.cjs +1 -1
  100. package/dist/dropdown.js +1 -1
  101. package/dist/{email-recipients-DbovFfyf.cjs → email-recipients-DKDl1Qlt.cjs} +2 -2
  102. package/dist/{email-recipients-DbovFfyf.cjs.map → email-recipients-DKDl1Qlt.cjs.map} +1 -1
  103. package/dist/{email-recipients-Wk64dWuZ.js → email-recipients-Tb0UBtjf.js} +5 -5
  104. package/dist/{email-recipients-Wk64dWuZ.js.map → email-recipients-Tb0UBtjf.js.map} +1 -1
  105. package/dist/extra.cjs +1 -1
  106. package/dist/extra.js +1 -1
  107. package/dist/{flex-BjEfo9Y7.js → flex-CYF9ejQL.js} +2 -2
  108. package/dist/{flex-BjEfo9Y7.js.map → flex-CYF9ejQL.js.map} +1 -1
  109. package/dist/{flex-B20VU8L_.cjs → flex-zkXsvBw6.cjs} +2 -2
  110. package/dist/{flex-B20VU8L_.cjs.map → flex-zkXsvBw6.cjs.map} +1 -1
  111. package/dist/{form-C02xoiR8.cjs → form-D-CgyzE3.cjs} +2 -2
  112. package/dist/{form-C02xoiR8.cjs.map → form-D-CgyzE3.cjs.map} +1 -1
  113. package/dist/{form-C1PF3LFP.js → form-DdQgacXw.js} +2 -2
  114. package/dist/{form-C1PF3LFP.js.map → form-DdQgacXw.js.map} +1 -1
  115. package/dist/form.cjs +1 -1
  116. package/dist/form.js +1 -1
  117. package/dist/{formField.mixin-pLRVCeUD.cjs → formField.mixin-C7xna5S7.cjs} +2 -2
  118. package/dist/{formField.mixin-pLRVCeUD.cjs.map → formField.mixin-C7xna5S7.cjs.map} +1 -1
  119. package/dist/{formField.mixin-Butk4H3G.js → formField.mixin-Cc6iv6e6.js} +2 -2
  120. package/dist/{formField.mixin-Butk4H3G.js.map → formField.mixin-Cc6iv6e6.js.map} +1 -1
  121. package/dist/{icon-CcNT1vvG.cjs → icon-CFM5r0Fm.cjs} +2 -2
  122. package/dist/{icon-CcNT1vvG.cjs.map → icon-CFM5r0Fm.cjs.map} +1 -1
  123. package/dist/{icon-BZUpikxQ.js → icon-CYqOQBoE.js} +2 -2
  124. package/dist/{icon-BZUpikxQ.js.map → icon-CYqOQBoE.js.map} +1 -1
  125. package/dist/{icon-button-7b5uVTan.js → icon-button-BSCcuC7U.js} +3 -3
  126. package/dist/{icon-button-7b5uVTan.js.map → icon-button-BSCcuC7U.js.map} +1 -1
  127. package/dist/{icon-button-C5YpXRdC.cjs → icon-button-Bf_dCRHx.cjs} +2 -2
  128. package/dist/{icon-button-C5YpXRdC.cjs.map → icon-button-Bf_dCRHx.cjs.map} +1 -1
  129. package/dist/icons.cjs +1 -1
  130. package/dist/icons.js +1 -1
  131. package/dist/index.cjs +1 -1
  132. package/dist/index.js +212 -210
  133. package/dist/{input-DC8Sf6IC.js → input-CNs7L8A9.js} +3 -3
  134. package/dist/{input-DC8Sf6IC.js.map → input-CNs7L8A9.js.map} +1 -1
  135. package/dist/{input-DhdHemYN.cjs → input-D9B5aydv.cjs} +2 -2
  136. package/dist/{input-DhdHemYN.cjs.map → input-D9B5aydv.cjs.map} +1 -1
  137. package/dist/{input-chip-BVeKi5rc.cjs → input-chip-Bu8DLVMh.cjs} +2 -2
  138. package/dist/{input-chip-BVeKi5rc.cjs.map → input-chip-Bu8DLVMh.cjs.map} +1 -1
  139. package/dist/{input-chip-CIk926sc.js → input-chip-CPNF4szF.js} +2 -2
  140. package/dist/{input-chip-CIk926sc.js.map → input-chip-CPNF4szF.js.map} +1 -1
  141. package/dist/input.cjs +1 -1
  142. package/dist/input.js +1 -1
  143. package/dist/layout.cjs +1 -1
  144. package/dist/layout.js +1 -1
  145. package/dist/{list-CGNZvRGe.js → list-Cp-TE18p.js} +2 -2
  146. package/dist/{list-CGNZvRGe.js.map → list-Cp-TE18p.js.map} +1 -1
  147. package/dist/{list-t7vG7o_O.cjs → list-Ds8oKtEs.cjs} +2 -2
  148. package/dist/{list-t7vG7o_O.cjs.map → list-Ds8oKtEs.cjs.map} +1 -1
  149. package/dist/list.cjs +1 -1
  150. package/dist/list.js +1 -1
  151. package/dist/{litElement.mixin-C_TdCsfa.js → litElement.mixin-7HEBIRUp.js} +2 -2
  152. package/dist/{litElement.mixin-C_TdCsfa.js.map → litElement.mixin-7HEBIRUp.js.map} +1 -1
  153. package/dist/{litElement.mixin-BJ_Q1yRD.cjs → litElement.mixin-DIoywlzp.cjs} +2 -2
  154. package/dist/{litElement.mixin-BJ_Q1yRD.cjs.map → litElement.mixin-DIoywlzp.cjs.map} +1 -1
  155. package/dist/mailbox.cjs +1 -1
  156. package/dist/mailbox.js +1 -1
  157. package/dist/{map-BiTqxS1F.js → map-CaTzsyI7.js} +2 -2
  158. package/dist/{map-BiTqxS1F.js.map → map-CaTzsyI7.js.map} +1 -1
  159. package/dist/{map-Bm3uVhWx.cjs → map-DRCyozDz.cjs} +2 -2
  160. package/dist/{map-Bm3uVhWx.cjs.map → map-DRCyozDz.cjs.map} +1 -1
  161. package/dist/map.cjs +1 -1
  162. package/dist/map.js +1 -1
  163. package/dist/{media-D1kp7fjX.cjs → media-DdzYh2k5.cjs} +2 -2
  164. package/dist/{media-D1kp7fjX.cjs.map → media-DdzYh2k5.cjs.map} +1 -1
  165. package/dist/{media-BKviPW_h.js → media-Xr5pO0WU.js} +2 -2
  166. package/dist/{media-BKviPW_h.js.map → media-Xr5pO0WU.js.map} +1 -1
  167. package/dist/{menu-BZzL9ILt.js → menu-C-Lvh3cn.js} +3 -3
  168. package/dist/{menu-BZzL9ILt.js.map → menu-C-Lvh3cn.js.map} +1 -1
  169. package/dist/{menu-Cjz7s37L.cjs → menu-S_OxKAxt.cjs} +2 -2
  170. package/dist/{menu-Cjz7s37L.cjs.map → menu-S_OxKAxt.cjs.map} +1 -1
  171. package/dist/menu.cjs +1 -1
  172. package/dist/menu.js +1 -1
  173. package/dist/nav-drawer.cjs +1 -1
  174. package/dist/nav-drawer.js +1 -1
  175. package/dist/navigation-bar.cjs +2 -0
  176. package/dist/navigation-bar.cjs.map +1 -0
  177. package/dist/navigation-bar.js +6 -0
  178. package/dist/navigation-bar.js.map +1 -0
  179. package/dist/{navigation-rail-item-B4IK1tid.cjs → navigation-rail-item-CCuC37Dx.cjs} +2 -2
  180. package/dist/{navigation-rail-item-B4IK1tid.cjs.map → navigation-rail-item-CCuC37Dx.cjs.map} +1 -1
  181. package/dist/{navigation-rail-item-D3uE3_58.js → navigation-rail-item-CZKWN1Ki.js} +2 -2
  182. package/dist/{navigation-rail-item-D3uE3_58.js.map → navigation-rail-item-CZKWN1Ki.js.map} +1 -1
  183. package/dist/navigation-rail.cjs +1 -1
  184. package/dist/navigation-rail.js +1 -1
  185. package/dist/{notification-service-CLOPRsR_.js → notification-service-36m9Setj.js} +4 -4
  186. package/dist/{notification-service-CLOPRsR_.js.map → notification-service-36m9Setj.js.map} +1 -1
  187. package/dist/{notification-service-ECIE9gmi.cjs → notification-service-Bi9hRE33.cjs} +2 -2
  188. package/dist/{notification-service-ECIE9gmi.cjs.map → notification-service-Bi9hRE33.cjs.map} +1 -1
  189. package/dist/notification.cjs +1 -1
  190. package/dist/notification.js +2 -2
  191. package/dist/{notify-nO72O0p5.cjs → notify-BLdA7aAa.cjs} +2 -2
  192. package/dist/{notify-nO72O0p5.cjs.map → notify-BLdA7aAa.cjs.map} +1 -1
  193. package/dist/{notify-Ujep-Wva.js → notify-BcimHn85.js} +2 -2
  194. package/dist/{notify-Ujep-Wva.js.map → notify-BcimHn85.js.map} +1 -1
  195. package/dist/{option-r8dBm4ca.cjs → option-C9QLuFcY.cjs} +2 -2
  196. package/dist/{option-r8dBm4ca.cjs.map → option-C9QLuFcY.cjs.map} +1 -1
  197. package/dist/{option-CRjbCpf-.js → option-DwEBerwR.js} +2 -2
  198. package/dist/{option-CRjbCpf-.js.map → option-DwEBerwR.js.map} +1 -1
  199. package/dist/option.cjs +1 -1
  200. package/dist/option.js +1 -1
  201. package/dist/{payment-card-form-BkWQ6H8v.js → payment-card-form-B1uZ9JUa.js} +3 -3
  202. package/dist/{payment-card-form-BkWQ6H8v.js.map → payment-card-form-B1uZ9JUa.js.map} +1 -1
  203. package/dist/{payment-card-form-C3rs3GJg.cjs → payment-card-form-DGdRK0yK.cjs} +2 -2
  204. package/dist/{payment-card-form-C3rs3GJg.cjs.map → payment-card-form-DGdRK0yK.cjs.map} +1 -1
  205. package/dist/{progress-T5BaCgVz.js → progress-B3hQmGMa.js} +2 -2
  206. package/dist/{progress-T5BaCgVz.js.map → progress-B3hQmGMa.js.map} +1 -1
  207. package/dist/{progress-C6sY_Q2O.cjs → progress-DQwzTPYM.cjs} +2 -2
  208. package/dist/{progress-C6sY_Q2O.cjs.map → progress-DQwzTPYM.cjs.map} +1 -1
  209. package/dist/progress.cjs +1 -1
  210. package/dist/progress.js +1 -1
  211. package/dist/{radio-button-C85DWct1.cjs → radio-button-CJhEZw8n.cjs} +2 -2
  212. package/dist/{radio-button-C85DWct1.cjs.map → radio-button-CJhEZw8n.cjs.map} +1 -1
  213. package/dist/{radio-button-BXZsXmyT.js → radio-button-DDE3kwPV.js} +3 -3
  214. package/dist/{radio-button-BXZsXmyT.js.map → radio-button-DDE3kwPV.js.map} +1 -1
  215. package/dist/radio-group.cjs +1 -1
  216. package/dist/radio-group.js +1 -1
  217. package/dist/{schmancy-steps-container-C18l7ZUJ.js → schmancy-steps-container-Bk6YDDXz.js} +2 -2
  218. package/dist/{schmancy-steps-container-C18l7ZUJ.js.map → schmancy-steps-container-Bk6YDDXz.js.map} +1 -1
  219. package/dist/{schmancy-steps-container-YzlY4UDL.cjs → schmancy-steps-container-COzUZD-d.cjs} +2 -2
  220. package/dist/{schmancy-steps-container-YzlY4UDL.cjs.map → schmancy-steps-container-COzUZD-d.cjs.map} +1 -1
  221. package/dist/{select-BgxZupg_.js → select-BKkGETee.js} +3 -3
  222. package/dist/{select-BgxZupg_.js.map → select-BKkGETee.js.map} +1 -1
  223. package/dist/{select-Dve8bW-v.cjs → select-Cc96IjOA.cjs} +2 -2
  224. package/dist/{select-Dve8bW-v.cjs.map → select-Cc96IjOA.cjs.map} +1 -1
  225. package/dist/select.cjs +1 -1
  226. package/dist/select.js +1 -1
  227. package/dist/{sheet-y9Uo1NQy.cjs → sheet-_3iJjzla.cjs} +2 -2
  228. package/dist/{sheet-y9Uo1NQy.cjs.map → sheet-_3iJjzla.cjs.map} +1 -1
  229. package/dist/{sheet-Dn2OyNPH.js → sheet-_Nwjk8tC.js} +3 -3
  230. package/dist/{sheet-Dn2OyNPH.js.map → sheet-_Nwjk8tC.js.map} +1 -1
  231. package/dist/sheet.cjs +1 -1
  232. package/dist/sheet.js +1 -1
  233. package/dist/{slider-HrSdi1w5.js → slider-BawxkW-m.js} +3 -3
  234. package/dist/{slider-HrSdi1w5.js.map → slider-BawxkW-m.js.map} +1 -1
  235. package/dist/{slider-CTsC1POO.cjs → slider-CvoNTGfb.cjs} +2 -2
  236. package/dist/{slider-CTsC1POO.cjs.map → slider-CvoNTGfb.cjs.map} +1 -1
  237. package/dist/slider.cjs +1 -1
  238. package/dist/slider.js +1 -1
  239. package/dist/{spinner-CwsNWGqj.js → spinner-BSaeqgVi.js} +2 -2
  240. package/dist/{spinner-CwsNWGqj.js.map → spinner-BSaeqgVi.js.map} +1 -1
  241. package/dist/{spinner-DguvYTr2.cjs → spinner-CreHceHO.cjs} +2 -2
  242. package/dist/{spinner-DguvYTr2.cjs.map → spinner-CreHceHO.cjs.map} +1 -1
  243. package/dist/steps.cjs +1 -1
  244. package/dist/steps.js +1 -1
  245. package/dist/{suggestion-chip-BcfuYhVu.js → suggestion-chip-Ca9HEISE.js} +3 -3
  246. package/dist/{suggestion-chip-BcfuYhVu.js.map → suggestion-chip-Ca9HEISE.js.map} +1 -1
  247. package/dist/{suggestion-chip-CocgJQgD.cjs → suggestion-chip-DgR-hY9P.cjs} +2 -2
  248. package/dist/{suggestion-chip-CocgJQgD.cjs.map → suggestion-chip-DgR-hY9P.cjs.map} +1 -1
  249. package/dist/{surface-BU2twRfK.js → surface-DssJvvqY.js} +2 -2
  250. package/dist/{surface-BU2twRfK.js.map → surface-DssJvvqY.js.map} +1 -1
  251. package/dist/{surface-14-wbhaX.cjs → surface-FlpARbmi.cjs} +2 -2
  252. package/dist/{surface-14-wbhaX.cjs.map → surface-FlpARbmi.cjs.map} +1 -1
  253. package/dist/surface.cjs +1 -1
  254. package/dist/surface.js +1 -1
  255. package/dist/{table-CUWzQ4jl.cjs → table-DbGq1vlq.cjs} +2 -2
  256. package/dist/{table-CUWzQ4jl.cjs.map → table-DbGq1vlq.cjs.map} +1 -1
  257. package/dist/{table-d_te1RgD.js → table-DcgdSj1D.js} +2 -2
  258. package/dist/{table-d_te1RgD.js.map → table-DcgdSj1D.js.map} +1 -1
  259. package/dist/table.cjs +1 -1
  260. package/dist/table.js +1 -1
  261. package/dist/{tabs-compatibility-DyZLNr4f.cjs → tabs-compatibility-Lffxgw0G.cjs} +2 -2
  262. package/dist/{tabs-compatibility-DyZLNr4f.cjs.map → tabs-compatibility-Lffxgw0G.cjs.map} +1 -1
  263. package/dist/{tabs-compatibility-Boc5CUVW.js → tabs-compatibility-yIZW7NeR.js} +2 -2
  264. package/dist/{tabs-compatibility-Boc5CUVW.js.map → tabs-compatibility-yIZW7NeR.js.map} +1 -1
  265. package/dist/tabs.cjs +1 -1
  266. package/dist/tabs.js +1 -1
  267. package/dist/tailwind.mixin-Dj-xh5c5.js +43 -0
  268. package/dist/{tailwind.mixin-nZk3QUQy.js.map → tailwind.mixin-Dj-xh5c5.js.map} +1 -1
  269. package/dist/tailwind.mixin-Dwm4EWu8.cjs +2 -0
  270. package/dist/{tailwind.mixin-D2o72t31.cjs.map → tailwind.mixin-Dwm4EWu8.cjs.map} +1 -1
  271. package/dist/teleport.cjs +1 -1
  272. package/dist/teleport.js +1 -1
  273. package/dist/{textarea-B0sYfSz6.js → textarea-BQ94zdoX.js} +2 -2
  274. package/dist/{textarea-B0sYfSz6.js.map → textarea-BQ94zdoX.js.map} +1 -1
  275. package/dist/{textarea-mrIBP74N.cjs → textarea-CwYuTsPD.cjs} +2 -2
  276. package/dist/{textarea-mrIBP74N.cjs.map → textarea-CwYuTsPD.cjs.map} +1 -1
  277. package/dist/textarea.cjs +1 -1
  278. package/dist/textarea.js +1 -1
  279. package/dist/{theme-button-CNJVyopz.js → theme-button-CKt6f6kw.js} +2 -2
  280. package/dist/{theme-button-CNJVyopz.js.map → theme-button-CKt6f6kw.js.map} +1 -1
  281. package/dist/{theme-button-DGb5LDjM.cjs → theme-button-CvJH2BwY.cjs} +2 -2
  282. package/dist/{theme-button-DGb5LDjM.cjs.map → theme-button-CvJH2BwY.cjs.map} +1 -1
  283. package/dist/theme-button.cjs +1 -1
  284. package/dist/theme-button.js +1 -1
  285. package/dist/theme.cjs +1 -1
  286. package/dist/{theme.component-X5en4kgs.js → theme.component-DcPhAbxK.js} +2 -2
  287. package/dist/{theme.component-X5en4kgs.js.map → theme.component-DcPhAbxK.js.map} +1 -1
  288. package/dist/{theme.component-BIrl0bms.cjs → theme.component-DhaisaKD.cjs} +2 -2
  289. package/dist/{theme.component-BIrl0bms.cjs.map → theme.component-DhaisaKD.cjs.map} +1 -1
  290. package/dist/theme.js +1 -1
  291. package/dist/{timezone-Bt3qA38o.cjs → timezone-D7Ufhjog.cjs} +2 -2
  292. package/dist/{timezone-Bt3qA38o.cjs.map → timezone-D7Ufhjog.cjs.map} +1 -1
  293. package/dist/{timezone-CjMKVlle.js → timezone-ikqEpkrq.js} +3 -3
  294. package/dist/{timezone-CjMKVlle.js.map → timezone-ikqEpkrq.js.map} +1 -1
  295. package/dist/{tooltip-B8YU69FO.cjs → tooltip-Cod-ciP6.cjs} +2 -2
  296. package/dist/{tooltip-B8YU69FO.cjs.map → tooltip-Cod-ciP6.cjs.map} +1 -1
  297. package/dist/{tooltip-BorRixOk.js → tooltip-DQeBYmkT.js} +2 -2
  298. package/dist/{tooltip-BorRixOk.js.map → tooltip-DQeBYmkT.js.map} +1 -1
  299. package/dist/tooltip.cjs +1 -1
  300. package/dist/tooltip.js +1 -1
  301. package/dist/{tree-DQi0dyBy.js → tree-BL71j34m.js} +2 -2
  302. package/dist/{tree-DQi0dyBy.js.map → tree-BL71j34m.js.map} +1 -1
  303. package/dist/{tree-jWKUZns-.cjs → tree-DNJ-QNmK.cjs} +2 -2
  304. package/dist/{tree-jWKUZns-.cjs.map → tree-DNJ-QNmK.cjs.map} +1 -1
  305. package/dist/tree.cjs +1 -1
  306. package/dist/tree.js +1 -1
  307. package/dist/{typewriter-BCVmjF7y.cjs → typewriter-HY8FFj0-.cjs} +2 -2
  308. package/dist/{typewriter-BCVmjF7y.cjs.map → typewriter-HY8FFj0-.cjs.map} +1 -1
  309. package/dist/{typewriter-GHGwLOWk.js → typewriter-KPl30p8k.js} +4 -4
  310. package/dist/{typewriter-GHGwLOWk.js.map → typewriter-KPl30p8k.js.map} +1 -1
  311. package/dist/typewriter.cjs +1 -1
  312. package/dist/typewriter.js +1 -1
  313. package/dist/{typography-DsKadWmR.js → typography-D5Mf_MlW.js} +2 -2
  314. package/dist/{typography-DsKadWmR.js.map → typography-D5Mf_MlW.js.map} +1 -1
  315. package/dist/{typography-BIHYyI6-.cjs → typography-eyw2Cqu6.cjs} +2 -2
  316. package/dist/{typography-BIHYyI6-.cjs.map → typography-eyw2Cqu6.cjs.map} +1 -1
  317. package/dist/typography.cjs +1 -1
  318. package/dist/typography.js +1 -1
  319. package/package.json +1 -1
  320. package/types/src/code-highlight/code-highlight.d.ts +1 -1
  321. package/types/src/index.d.ts +1 -0
  322. package/types/src/navigation-bar/index.d.ts +2 -0
  323. package/types/src/navigation-bar/navigation-bar-item.d.ts +94 -0
  324. package/types/src/navigation-bar/navigation-bar.d.ts +93 -0
  325. package/dist/avatar-3C1rkJ1T.cjs +0 -157
  326. package/dist/avatar-3C1rkJ1T.cjs.map +0 -1
  327. package/dist/avatar-CxDF7O9q.js +0 -609
  328. package/dist/avatar-CxDF7O9q.js.map +0 -1
  329. package/dist/tailwind.mixin-D2o72t31.cjs +0 -2
  330. package/dist/tailwind.mixin-nZk3QUQy.js +0 -43
@@ -0,0 +1,247 @@
1
+ # Navigation Bar Item Component
2
+
3
+ ## Overview
4
+ The `<schmancy-navigation-bar-item>` component represents an individual navigation destination within a navigation bar. It follows Material Design 3 specifications with proper touch targets, ripple effects, and state management using RxJS observables.
5
+
6
+ ## Usage
7
+
8
+ ### Basic Example
9
+ ```html
10
+ <schmancy-navigation-bar-item
11
+ icon="home"
12
+ label="Home"
13
+ active
14
+ ></schmancy-navigation-bar-item>
15
+ ```
16
+
17
+ ### With Badge
18
+ ```html
19
+ <schmancy-navigation-bar-item
20
+ icon="notifications"
21
+ label="Alerts"
22
+ badge="5"
23
+ ></schmancy-navigation-bar-item>
24
+ ```
25
+
26
+ ### Custom Icon Slot
27
+ ```html
28
+ <schmancy-navigation-bar-item label="Custom">
29
+ <span slot="icon">🏠</span>
30
+ </schmancy-navigation-bar-item>
31
+ ```
32
+
33
+ ### With Custom Content
34
+ ```html
35
+ <schmancy-navigation-bar-item>
36
+ <schmancy-icon slot="icon" size="24">favorite</schmancy-icon>
37
+ Custom Content
38
+ </schmancy-navigation-bar-item>
39
+ ```
40
+
41
+ ## Properties
42
+
43
+ | Property | Type | Default | Description |
44
+ |----------|------|---------|-------------|
45
+ | `icon` | `string` | `''` | Material Symbols Outlined icon name |
46
+ | `label` | `string` | `''` | Label text for the navigation item |
47
+ | `badge` | `string` | `''` | Badge content (number or short text) |
48
+ | `active` | `boolean` | `false` | Whether this item is currently active/selected |
49
+ | `disabled` | `boolean` | `false` | Whether this item is disabled |
50
+ | `hideLabels` | `boolean` | `false` | Hide labels (controlled by parent navigation bar) |
51
+
52
+ ## Events
53
+
54
+ ### bar-item-click
55
+ Fired when the item is clicked (with 300ms debounce to prevent accidental double-clicks).
56
+
57
+ ```javascript
58
+ item.addEventListener('bar-item-click', (event) => {
59
+ console.log('Icon:', event.detail.icon);
60
+ console.log('Label:', event.detail.label);
61
+ console.log('Active:', event.detail.active);
62
+ });
63
+ ```
64
+
65
+ ### focus / blur
66
+ Standard focus and blur events for accessibility.
67
+
68
+ ## Features
69
+
70
+ ### RxJS-Powered Interactions
71
+ - **Click handling**: Uses RxJS observables with 300ms debounce for navigation events
72
+ - **Ripple effects**: Immediate visual feedback without debounce
73
+ - **Keyboard support**: Enter and Space keys properly handled with same debounce
74
+ - **State management**: BehaviorSubject for reactive active state updates
75
+
76
+ ### Full Clickable Area
77
+ The entire navigation item is clickable, not just the icon area:
78
+ - Better touch targets on mobile devices
79
+ - Improved accessibility
80
+ - More intuitive user experience
81
+ - 48x48dp minimum touch target as per Material Design
82
+
83
+ ### Badge System
84
+ Intelligent badge handling:
85
+ - Numbers > 99 display as "99+"
86
+ - Text badges limited to 3 characters
87
+ - Zero values hide the badge
88
+ - Proper ARIA labels for screen readers
89
+
90
+ ### Ripple Animation
91
+ Material Design ripple effect:
92
+ - Originates from click position
93
+ - 600ms animation duration
94
+ - GPU-accelerated CSS animations
95
+ - Multiple concurrent ripples supported
96
+
97
+ ## Slots
98
+
99
+ | Slot | Description |
100
+ |------|-------------|
101
+ | `icon` | Custom icon content to replace the default icon |
102
+ | default | Custom content for the item |
103
+
104
+ ## Styling
105
+
106
+ ### State-based Styling
107
+ The component automatically applies different styles based on state:
108
+
109
+ ```css
110
+ /* Active state */
111
+ schmancy-navigation-bar-item[active] {
112
+ /* Icon indicator background: secondary-container */
113
+ /* Text color: secondary-onContainer */
114
+ }
115
+
116
+ /* Inactive state */
117
+ schmancy-navigation-bar-item:not([active]) {
118
+ /* Text color: surface-onVariant */
119
+ /* Hover background: surface-container-highest */
120
+ }
121
+
122
+ /* Disabled state */
123
+ schmancy-navigation-bar-item[disabled] {
124
+ /* Opacity: 0.38 */
125
+ /* Pointer events disabled */
126
+ }
127
+ ```
128
+
129
+ ### CSS Parts
130
+ ```css
131
+ /* Style the button element */
132
+ schmancy-navigation-bar-item::part(button) {
133
+ /* Custom button styles */
134
+ }
135
+ ```
136
+
137
+ ## Methods
138
+
139
+ ### setActive(isActive: boolean)
140
+ Programmatically set the active state of the item.
141
+
142
+ ```javascript
143
+ const item = document.querySelector('schmancy-navigation-bar-item');
144
+ item.setActive(true); // Activate the item
145
+ ```
146
+
147
+ ## Integration Example
148
+
149
+ ### Complete Navigation Setup
150
+ ```typescript
151
+ @customElement('app-navigation')
152
+ class AppNavigation extends LitElement {
153
+ @state() activeIndex = 0;
154
+
155
+ private navigationItems = [
156
+ { icon: 'home', label: 'Home', route: 'home' },
157
+ { icon: 'search', label: 'Search', route: 'search' },
158
+ { icon: 'favorite', label: 'Favorites', route: 'favorites', badge: '3' },
159
+ { icon: 'person', label: 'Profile', route: 'profile' }
160
+ ];
161
+
162
+ private handleItemClick = (e: CustomEvent, index: number) => {
163
+ this.activeIndex = index;
164
+ const route = this.navigationItems[index].route;
165
+
166
+ // Navigate to route
167
+ area.push({
168
+ component: route,
169
+ area: 'main'
170
+ });
171
+ }
172
+
173
+ render() {
174
+ return html`
175
+ ${this.navigationItems.map((item, index) => html`
176
+ <schmancy-navigation-bar-item
177
+ icon=${item.icon}
178
+ label=${item.label}
179
+ ?active=${this.activeIndex === index}
180
+ badge=${item.badge || ''}
181
+ @bar-item-click=${(e: CustomEvent) => this.handleItemClick(e, index)}
182
+ ></schmancy-navigation-bar-item>
183
+ `)}
184
+ `;
185
+ }
186
+ }
187
+ ```
188
+
189
+ ## Accessibility
190
+
191
+ ### Keyboard Support
192
+ - `Enter` / `Space` - Activate the item (with 300ms debounce)
193
+ - Full focus management with visual indicators
194
+ - `aria-pressed` attribute reflects active state
195
+ - `aria-label` for badge notifications
196
+
197
+ ### Screen Reader Support
198
+ - Proper ARIA attributes
199
+ - Semantic HTML structure
200
+ - Badge announcements ("3 notifications")
201
+
202
+ ## Performance Optimization
203
+
204
+ ### RxJS Observables
205
+ - Efficient event handling with proper cleanup
206
+ - Debounced navigation events (300ms) prevent double-clicks
207
+ - Immediate ripple feedback for better UX
208
+ - Memory-safe with `takeUntil(this.disconnecting)`
209
+
210
+ ### Rendering Optimization
211
+ - Conditional rendering based on props
212
+ - Efficient class mapping with TailwindElement
213
+ - Shadow DOM for style encapsulation
214
+
215
+ ## Best Practices
216
+
217
+ 1. **Icons**: Always use Material Symbols Outlined for consistency
218
+ 2. **Labels**: Keep labels concise (1-2 words maximum)
219
+ 3. **Badges**: Use for important notifications only
220
+ 4. **Active State**: Let parent navigation bar manage active states
221
+ 5. **Disabled State**: Use sparingly, consider hiding instead
222
+ 6. **Custom Icons**: Use the icon slot for custom SVGs or emojis
223
+
224
+ ## Common Patterns
225
+
226
+ ### Dynamic Badges
227
+ ```javascript
228
+ // Update badge based on notification count
229
+ const updateBadge = (count) => {
230
+ const item = document.querySelector('#notifications-item');
231
+ item.badge = count > 0 ? String(count) : '';
232
+ };
233
+ ```
234
+
235
+ ### Conditional Rendering
236
+ ```javascript
237
+ // Show/hide items based on user role
238
+ const items = user.isAdmin
239
+ ? ['dashboard', 'users', 'settings']
240
+ : ['dashboard', 'settings'];
241
+ ```
242
+
243
+ ### Icon Switching
244
+ ```javascript
245
+ // Change icon based on state
246
+ const icon = isPlaying ? 'pause' : 'play_arrow';
247
+ ```
@@ -0,0 +1,163 @@
1
+ # Navigation Bar Component
2
+
3
+ ## Overview
4
+ The `<schmancy-navigation-bar>` component is a Material Design 3 compliant horizontal navigation component that provides access to 3-7 primary destinations in your application. It's typically fixed at the bottom of the viewport and follows M3 specifications with proper elevation, touch targets, and responsive behavior.
5
+
6
+ ## Usage
7
+
8
+ ### Basic Example
9
+ ```html
10
+ <schmancy-navigation-bar activeIndex="0">
11
+ <schmancy-navigation-bar-item icon="home" label="Home"></schmancy-navigation-bar-item>
12
+ <schmancy-navigation-bar-item icon="search" label="Search"></schmancy-navigation-bar-item>
13
+ <schmancy-navigation-bar-item icon="favorite" label="Favorites"></schmancy-navigation-bar-item>
14
+ <schmancy-navigation-bar-item icon="settings" label="Settings"></schmancy-navigation-bar-item>
15
+ </schmancy-navigation-bar>
16
+ ```
17
+
18
+ ### With Hide on Scroll
19
+ ```html
20
+ <schmancy-navigation-bar activeIndex="0" hideOnScroll>
21
+ <schmancy-navigation-bar-item icon="dashboard" label="Dashboard"></schmancy-navigation-bar-item>
22
+ <schmancy-navigation-bar-item icon="shopping_cart" label="Orders"></schmancy-navigation-bar-item>
23
+ <schmancy-navigation-bar-item icon="inventory" label="Products"></schmancy-navigation-bar-item>
24
+ </schmancy-navigation-bar>
25
+ ```
26
+
27
+ ### With Badges
28
+ ```html
29
+ <schmancy-navigation-bar>
30
+ <schmancy-navigation-bar-item icon="home" label="Home"></schmancy-navigation-bar-item>
31
+ <schmancy-navigation-bar-item icon="notifications" label="Alerts" badge="3"></schmancy-navigation-bar-item>
32
+ <schmancy-navigation-bar-item icon="mail" label="Messages" badge="99+"></schmancy-navigation-bar-item>
33
+ </schmancy-navigation-bar>
34
+ ```
35
+
36
+ ## Properties
37
+
38
+ | Property | Type | Default | Description |
39
+ |----------|------|---------|-------------|
40
+ | `activeIndex` | `number` | `-1` | Currently active item index (zero-based) |
41
+ | `hideLabels` | `boolean` | `false` | Hide labels and show only icons |
42
+ | `elevation` | `number` | `2` | Elevation level for the navigation bar (0-5) |
43
+ | `hideOnScroll` | `boolean` | `false` | Automatically hide bar when scrolling down, show when scrolling up |
44
+
45
+ ## Events
46
+
47
+ ### navigation-change
48
+ Fired when an item is selected.
49
+
50
+ ```javascript
51
+ navigationBar.addEventListener('navigation-change', (event) => {
52
+ console.log('Old index:', event.detail.oldIndex);
53
+ console.log('New index:', event.detail.newIndex);
54
+ console.log('Selected item:', event.detail.item);
55
+ });
56
+ ```
57
+
58
+ ## Features
59
+
60
+ ### Reactive State Management
61
+ The component uses RxJS BehaviorSubjects for reactive state management, ensuring smooth and predictable state updates across all navigation items.
62
+
63
+ ### Hide on Scroll Behavior
64
+ When `hideOnScroll` is enabled:
65
+ - Navigation bar hides when scrolling down to maximize content space
66
+ - Shows automatically when scrolling up for quick access
67
+ - Uses smooth CSS transforms for GPU-accelerated animations
68
+ - Implements a 10px scroll threshold to prevent jittery behavior
69
+ - Always visible when near the top of the page
70
+
71
+ ### Keyboard Navigation
72
+ Full keyboard support for accessibility:
73
+ - `ArrowLeft` / `ArrowRight` - Navigate between items
74
+ - `Home` / `End` - Jump to first/last item
75
+ - `Enter` / `Space` - Activate focused item
76
+ - Proper focus management with `tabindex`
77
+
78
+ ### Material Design 3 Compliance
79
+ - Fixed 80px height as per M3 specifications
80
+ - 48x48dp minimum touch targets
81
+ - Proper elevation and shadow system
82
+ - Responsive item distribution (3-7 items)
83
+ - Surface container background color
84
+
85
+ ## Styling
86
+
87
+ ### CSS Variables
88
+ The component respects the Schmancy theme system:
89
+ - Background: `SchmancyTheme.sys.color.surface.container`
90
+ - Text: `SchmancyTheme.sys.color.surface.on`
91
+
92
+ ### Custom Styling
93
+ ```css
94
+ schmancy-navigation-bar {
95
+ /* Custom z-index if needed */
96
+ --navigation-bar-z-index: 20;
97
+ }
98
+ ```
99
+
100
+ ## Integration with schmancy-area
101
+
102
+ ### Route-based Navigation
103
+ ```typescript
104
+ @customElement('my-app')
105
+ class MyApp extends LitElement {
106
+ private handleNavigation = (e: CustomEvent) => {
107
+ const routes = ['dashboard', 'orders', 'products', 'settings'];
108
+ const route = routes[e.detail.newIndex];
109
+
110
+ // Navigate using schmancy-area
111
+ area.push({
112
+ component: route,
113
+ area: 'main'
114
+ });
115
+ }
116
+
117
+ render() {
118
+ return html`
119
+ <schmancy-navigation-bar
120
+ @navigation-change=${this.handleNavigation}
121
+ activeIndex="0"
122
+ >
123
+ <schmancy-navigation-bar-item icon="dashboard" label="Dashboard"></schmancy-navigation-bar-item>
124
+ <schmancy-navigation-bar-item icon="shopping_cart" label="Orders"></schmancy-navigation-bar-item>
125
+ <schmancy-navigation-bar-item icon="inventory" label="Products"></schmancy-navigation-bar-item>
126
+ <schmancy-navigation-bar-item icon="settings" label="Settings"></schmancy-navigation-bar-item>
127
+ </schmancy-navigation-bar>
128
+
129
+ <schmancy-area name="main" default="dashboard">
130
+ <schmancy-route when="dashboard" component="app-dashboard"></schmancy-route>
131
+ <schmancy-route when="orders" component="app-orders"></schmancy-route>
132
+ <schmancy-route when="products" component="app-products"></schmancy-route>
133
+ <schmancy-route when="settings" component="app-settings"></schmancy-route>
134
+ </schmancy-area>
135
+ `;
136
+ }
137
+ }
138
+ ```
139
+
140
+ ## Best Practices
141
+
142
+ 1. **Item Count**: Use between 3-7 items for optimal usability
143
+ 2. **Labels**: Keep labels short (1-2 words) for better readability
144
+ 3. **Icons**: Use Material Symbols Outlined icons for consistency
145
+ 4. **Active State**: Always maintain an active state for user orientation
146
+ 5. **Scroll Behavior**: Enable `hideOnScroll` for content-heavy pages
147
+ 6. **Badges**: Use sparingly for important notifications only
148
+
149
+ ## Accessibility
150
+
151
+ - ARIA roles and labels properly set
152
+ - Keyboard navigation fully supported
153
+ - Focus indicators for keyboard users
154
+ - `aria-pressed` attribute on active items
155
+ - `aria-hidden` when navigation is hidden on scroll
156
+
157
+ ## Performance Notes
158
+
159
+ - Uses RxJS for efficient event handling
160
+ - Scroll events are throttled at 100ms intervals
161
+ - CSS transforms for smooth GPU-accelerated animations
162
+ - Debounced navigation events (300ms) prevent accidental double-clicks
163
+ - Lazy subscription setup for scroll listeners
@@ -0,0 +1,247 @@
1
+ # Navigation Bar Item Component
2
+
3
+ ## Overview
4
+ The `<schmancy-navigation-bar-item>` component represents an individual navigation destination within a navigation bar. It follows Material Design 3 specifications with proper touch targets, ripple effects, and state management using RxJS observables.
5
+
6
+ ## Usage
7
+
8
+ ### Basic Example
9
+ ```html
10
+ <schmancy-navigation-bar-item
11
+ icon="home"
12
+ label="Home"
13
+ active
14
+ ></schmancy-navigation-bar-item>
15
+ ```
16
+
17
+ ### With Badge
18
+ ```html
19
+ <schmancy-navigation-bar-item
20
+ icon="notifications"
21
+ label="Alerts"
22
+ badge="5"
23
+ ></schmancy-navigation-bar-item>
24
+ ```
25
+
26
+ ### Custom Icon Slot
27
+ ```html
28
+ <schmancy-navigation-bar-item label="Custom">
29
+ <span slot="icon">🏠</span>
30
+ </schmancy-navigation-bar-item>
31
+ ```
32
+
33
+ ### With Custom Content
34
+ ```html
35
+ <schmancy-navigation-bar-item>
36
+ <schmancy-icon slot="icon" size="24">favorite</schmancy-icon>
37
+ Custom Content
38
+ </schmancy-navigation-bar-item>
39
+ ```
40
+
41
+ ## Properties
42
+
43
+ | Property | Type | Default | Description |
44
+ |----------|------|---------|-------------|
45
+ | `icon` | `string` | `''` | Material Symbols Outlined icon name |
46
+ | `label` | `string` | `''` | Label text for the navigation item |
47
+ | `badge` | `string` | `''` | Badge content (number or short text) |
48
+ | `active` | `boolean` | `false` | Whether this item is currently active/selected |
49
+ | `disabled` | `boolean` | `false` | Whether this item is disabled |
50
+ | `hideLabels` | `boolean` | `false` | Hide labels (controlled by parent navigation bar) |
51
+
52
+ ## Events
53
+
54
+ ### bar-item-click
55
+ Fired when the item is clicked (with 300ms debounce to prevent accidental double-clicks).
56
+
57
+ ```javascript
58
+ item.addEventListener('bar-item-click', (event) => {
59
+ console.log('Icon:', event.detail.icon);
60
+ console.log('Label:', event.detail.label);
61
+ console.log('Active:', event.detail.active);
62
+ });
63
+ ```
64
+
65
+ ### focus / blur
66
+ Standard focus and blur events for accessibility.
67
+
68
+ ## Features
69
+
70
+ ### RxJS-Powered Interactions
71
+ - **Click handling**: Uses RxJS observables with 300ms debounce for navigation events
72
+ - **Ripple effects**: Immediate visual feedback without debounce
73
+ - **Keyboard support**: Enter and Space keys properly handled with same debounce
74
+ - **State management**: BehaviorSubject for reactive active state updates
75
+
76
+ ### Full Clickable Area
77
+ The entire navigation item is clickable, not just the icon area:
78
+ - Better touch targets on mobile devices
79
+ - Improved accessibility
80
+ - More intuitive user experience
81
+ - 48x48dp minimum touch target as per Material Design
82
+
83
+ ### Badge System
84
+ Intelligent badge handling:
85
+ - Numbers > 99 display as "99+"
86
+ - Text badges limited to 3 characters
87
+ - Zero values hide the badge
88
+ - Proper ARIA labels for screen readers
89
+
90
+ ### Ripple Animation
91
+ Material Design ripple effect:
92
+ - Originates from click position
93
+ - 600ms animation duration
94
+ - GPU-accelerated CSS animations
95
+ - Multiple concurrent ripples supported
96
+
97
+ ## Slots
98
+
99
+ | Slot | Description |
100
+ |------|-------------|
101
+ | `icon` | Custom icon content to replace the default icon |
102
+ | default | Custom content for the item |
103
+
104
+ ## Styling
105
+
106
+ ### State-based Styling
107
+ The component automatically applies different styles based on state:
108
+
109
+ ```css
110
+ /* Active state */
111
+ schmancy-navigation-bar-item[active] {
112
+ /* Icon indicator background: secondary-container */
113
+ /* Text color: secondary-onContainer */
114
+ }
115
+
116
+ /* Inactive state */
117
+ schmancy-navigation-bar-item:not([active]) {
118
+ /* Text color: surface-onVariant */
119
+ /* Hover background: surface-container-highest */
120
+ }
121
+
122
+ /* Disabled state */
123
+ schmancy-navigation-bar-item[disabled] {
124
+ /* Opacity: 0.38 */
125
+ /* Pointer events disabled */
126
+ }
127
+ ```
128
+
129
+ ### CSS Parts
130
+ ```css
131
+ /* Style the button element */
132
+ schmancy-navigation-bar-item::part(button) {
133
+ /* Custom button styles */
134
+ }
135
+ ```
136
+
137
+ ## Methods
138
+
139
+ ### setActive(isActive: boolean)
140
+ Programmatically set the active state of the item.
141
+
142
+ ```javascript
143
+ const item = document.querySelector('schmancy-navigation-bar-item');
144
+ item.setActive(true); // Activate the item
145
+ ```
146
+
147
+ ## Integration Example
148
+
149
+ ### Complete Navigation Setup
150
+ ```typescript
151
+ @customElement('app-navigation')
152
+ class AppNavigation extends LitElement {
153
+ @state() activeIndex = 0;
154
+
155
+ private navigationItems = [
156
+ { icon: 'home', label: 'Home', route: 'home' },
157
+ { icon: 'search', label: 'Search', route: 'search' },
158
+ { icon: 'favorite', label: 'Favorites', route: 'favorites', badge: '3' },
159
+ { icon: 'person', label: 'Profile', route: 'profile' }
160
+ ];
161
+
162
+ private handleItemClick = (e: CustomEvent, index: number) => {
163
+ this.activeIndex = index;
164
+ const route = this.navigationItems[index].route;
165
+
166
+ // Navigate to route
167
+ area.push({
168
+ component: route,
169
+ area: 'main'
170
+ });
171
+ }
172
+
173
+ render() {
174
+ return html`
175
+ ${this.navigationItems.map((item, index) => html`
176
+ <schmancy-navigation-bar-item
177
+ icon=${item.icon}
178
+ label=${item.label}
179
+ ?active=${this.activeIndex === index}
180
+ badge=${item.badge || ''}
181
+ @bar-item-click=${(e: CustomEvent) => this.handleItemClick(e, index)}
182
+ ></schmancy-navigation-bar-item>
183
+ `)}
184
+ `;
185
+ }
186
+ }
187
+ ```
188
+
189
+ ## Accessibility
190
+
191
+ ### Keyboard Support
192
+ - `Enter` / `Space` - Activate the item (with 300ms debounce)
193
+ - Full focus management with visual indicators
194
+ - `aria-pressed` attribute reflects active state
195
+ - `aria-label` for badge notifications
196
+
197
+ ### Screen Reader Support
198
+ - Proper ARIA attributes
199
+ - Semantic HTML structure
200
+ - Badge announcements ("3 notifications")
201
+
202
+ ## Performance Optimization
203
+
204
+ ### RxJS Observables
205
+ - Efficient event handling with proper cleanup
206
+ - Debounced navigation events (300ms) prevent double-clicks
207
+ - Immediate ripple feedback for better UX
208
+ - Memory-safe with `takeUntil(this.disconnecting)`
209
+
210
+ ### Rendering Optimization
211
+ - Conditional rendering based on props
212
+ - Efficient class mapping with TailwindElement
213
+ - Shadow DOM for style encapsulation
214
+
215
+ ## Best Practices
216
+
217
+ 1. **Icons**: Always use Material Symbols Outlined for consistency
218
+ 2. **Labels**: Keep labels concise (1-2 words maximum)
219
+ 3. **Badges**: Use for important notifications only
220
+ 4. **Active State**: Let parent navigation bar manage active states
221
+ 5. **Disabled State**: Use sparingly, consider hiding instead
222
+ 6. **Custom Icons**: Use the icon slot for custom SVGs or emojis
223
+
224
+ ## Common Patterns
225
+
226
+ ### Dynamic Badges
227
+ ```javascript
228
+ // Update badge based on notification count
229
+ const updateBadge = (count) => {
230
+ const item = document.querySelector('#notifications-item');
231
+ item.badge = count > 0 ? String(count) : '';
232
+ };
233
+ ```
234
+
235
+ ### Conditional Rendering
236
+ ```javascript
237
+ // Show/hide items based on user role
238
+ const items = user.isAdmin
239
+ ? ['dashboard', 'users', 'settings']
240
+ : ['dashboard', 'settings'];
241
+ ```
242
+
243
+ ### Icon Switching
244
+ ```javascript
245
+ // Change icon based on state
246
+ const icon = isPlaying ? 'pause' : 'play_arrow';
247
+ ```